fix: merge corrected TF files instead of replacing all

- fmTf now merges new code blocks with existing S.tfFiles: updated files
  are replaced by name, untouched files are preserved, new files are added
- System prompt changed: model generates ONLY the files that need fixing
  instead of all 25 files, drastically reducing output size
- Prevents model from discarding existing work when correcting errors
This commit is contained in:
nogueiraguh
2026-03-08 01:41:18 -03:00
parent bb25c3dc29
commit fe4eb95c46
2 changed files with 35 additions and 15 deletions

View File

@@ -2042,16 +2042,20 @@ Abaixo estão os nomes corretos de resource types do provider oracle/oci. O mode
### REGRA CRÍTICA: Correção de Arquivos Existentes
Quando a mensagem do usuário incluir a seção "ARQUIVOS TERRAFORM ATUAIS NO WORKSPACE", significa que JÁ EXISTEM arquivos gerados anteriormente. Neste caso:
1. **NUNCA descarte os arquivos existentes**. Eles são o trabalho atual do usuário.
2. **Gere TODOS os arquivos completos** — mesmo os que não precisaram de alteração. O sistema substitui todos os arquivos do workspace pelo que você gerar.
3. **Corrija APENAS o que está errado**: se o erro é em `networking.tf`, mantenha `variables.tf`, `compute.tf`, `outputs.tf` etc. EXATAMENTE como estão e corrija apenas `networking.tf`.
4. **Analise o output do terraform plan/apply** se incluído na mensagem — ele mostra exatamente qual recurso, atributo ou argumento causou o erro.
5. **Mantenha a mesma estrutura de arquivos**: use os mesmos nomes de arquivo (`// filename: xxx.tf`) que já existem. NÃO renomeie, NÃO reorganize, NÃO mescle arquivos.
6. **Preserve nomes de recursos**: NÃO renomeie recursos existentes (ex: `oci_core_vcn.hub` não deve virar `oci_core_vcn.main`), pois isso causaria destroy+recreate desnecessário.
7. Se o erro for um resource type inválido, consulte a referência de recursos OCI neste prompt para encontrar o nome correto.
8. Se o erro for um argumento inválido (Unsupported argument), remova-o ou substitua pela sintaxe correta.
1. **Gere SOMENTE os arquivos que precisam de correção**. O sistema automaticamente mescla — arquivos não mencionados permanecem intactos.
2. **Use os MESMOS nomes de arquivo** (`// filename: xxx.tf`) dos arquivos originais. NÃO renomeie, NÃO reorganize, NÃO mescle arquivos.
3. **Preserve nomes de recursos**: NÃO renomeie recursos existentes (ex: `oci_core_vcn.hub` não deve virar `oci_core_vcn.main`), pois isso causaria destroy+recreate.
4. **Analise o output do terraform plan/apply** se incluído — ele mostra exatamente qual recurso/atributo causou o erro.
5. Se o erro for um resource type inválido, consulte a referência de recursos OCI neste prompt.
6. Se o erro for um argumento inválido (Unsupported argument), remova-o ou use a sintaxe correta.
7. Gere o arquivo corrigido **COMPLETO** (não apenas a parte alterada) — o sistema substitui o arquivo inteiro pelo novo conteúdo.
**RESUMO**: Ao corrigir, regenere todos os arquivos mantendo conteúdo intacto nos que não têm erro, e corrija cirurgicamente os que têm problema. O resultado deve funcionar no `terraform plan` sem erros na primeira tentativa.
**Exemplo**: Se o workspace tem 10 arquivos e o erro está apenas em `networking.tf`, gere APENAS:
```hcl
// filename: networking.tf
<conteúdo completo corrigido de networking.tf>
```
Os outros 9 arquivos permanecem intactos automaticamente.
"""
# ── Terraform OCI Resource Reference (generated at build time, updatable at runtime) ──