@pathbit/agentdevkit 0.0.16 → 0.0.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/.pbai4devs/INSTRUCTIONS.md +1 -1
  2. package/.pbai4devs/README.md +1 -1
  3. package/.pbai4devs/commands/sincronizar/COMMAND.md +6 -4
  4. package/.pbai4devs/scripts/inspecionar-projeto/SCRIPT.mjs +3 -2
  5. package/.pbai4devs/scripts/inspecionar-projeto/tests/TEST.mjs +18 -4
  6. package/.pbai4devs/scripts/lib/README.md +3 -0
  7. package/.pbai4devs/scripts/lib/gitignore.mjs +46 -9
  8. package/.pbai4devs/scripts/lib/state-path.mjs +20 -0
  9. package/.pbai4devs/scripts/sincronizar-agentes/README.md +8 -1
  10. package/.pbai4devs/scripts/sincronizar-agentes/SCRIPT.mjs +75 -34
  11. package/.pbai4devs/scripts/sincronizar-agentes/tests/COEXISTENCE.mjs +5 -5
  12. package/.pbai4devs/scripts/sincronizar-agentes/tests/HUMAN_OWNERSHIP.mjs +1 -1
  13. package/.pbai4devs/scripts/sincronizar-agentes/tests/MANAGED_CONTENT.mjs +9 -9
  14. package/.pbai4devs/scripts/sincronizar-agentes/tests/PRESERVATION.mjs +306 -0
  15. package/.pbai4devs/scripts/sincronizar-agentes/tests/TEST.mjs +41 -8
  16. package/.pbai4devs/scripts/testar-maturidade/SCRIPT.mjs +6 -4
  17. package/.pbai4devs/scripts/testar-maturidade/tests/TEST.mjs +4 -3
  18. package/.pbai4devs/scripts/verificar-recursos/SCRIPT.mjs +5 -3
  19. package/.pbai4devs/scripts/verificar-recursos/tests/TEST.mjs +15 -7
  20. package/.pbai4devs/skills/produto/criar-design-doc/SKILL.md +1 -1
  21. package/.pbai4devs/skills/produto/criar-prd/SKILL.md +1 -1
  22. package/.pbai4devs/skills/produto/criar-ux-ui/SKILL.md +1 -1
  23. package/.pbai4devs/skills/projeto/configurar-projeto/SKILL.md +1 -1
  24. package/.pbai4devs/skills/projeto/proximos-passos/SKILL.md +1 -1
  25. package/.pbai4devs/skills/projeto/sincronizar-agentes/SKILL.md +1 -1
  26. package/.pbai4devs/skills/specs/criar-spec/SKILL.md +1 -1
  27. package/.pbai4devs/skills/specs/implementar-spec/SKILL.md +1 -1
  28. package/.pbai4devs/templates/entrypoints/AGENTS.md +1 -1
  29. package/.pbai4devs/templates/gitignore/local.ignore +2 -0
  30. package/.pbai4devs/templates/gitignore/shared.ignore +2 -0
  31. package/CHANGELOG.md +11 -0
  32. package/docs/guides/cli.md +46 -15
  33. package/docs/guides/installation.md +20 -8
  34. package/docs/guides/troubleshooting.md +9 -1
  35. package/docs/guides/workflow.md +1 -1
  36. package/docs/specs/README.md +2 -0
  37. package/docs/specs/safe-synchronization/SPEC.md +21 -0
  38. package/docs/specs/state-directory/SPEC.md +22 -0
  39. package/package.json +1 -1
  40. package/src/cli.mjs +2 -2
  41. package/src/config.mjs +2 -1
  42. package/src/i18n.mjs +25 -0
  43. package/src/install.mjs +373 -27
  44. /package/.pbai4devs/{estado → state}/README.md +0 -0
@@ -28,7 +28,7 @@ Não apague raízes inteiras: workflows, configurações nativas e a origem fica
28
28
  fora da limpeza. `--check` só confere, sem corrigir nem criar backups.
29
29
 
30
30
  O manifesto `.pbai4devs/espelhos.conf` registra clientes e formatos nativos.
31
- Respeite a seleção salva em `estado/agentdevkit.json`; não reative clientes para
31
+ Respeite a seleção salva em `state/agentdevkit.json`; não reative clientes para
32
32
  reparar apontamentos. Para alterá-la, use `agents` na CLI. Pastas compartilhadas
33
33
  continuam quando necessárias; arquivos próprios dos clientes são preservados
34
34
  pela CLI, inclusive ao reduzir a seleção.
@@ -6,7 +6,7 @@ description: Cria uma spec de incremento, esclarecendo requisitos e dúvidas com
6
6
  # Criar spec
7
7
 
8
8
  Antes de escrever, aplique o inventário e plano de `atualizar-documentacao`.
9
- Leia os caminhos em `.pbai4devs/estado/configuracao/ESTADO.md`. Exija PRD/design
9
+ Leia os caminhos em `.pbai4devs/state/configuracao/ESTADO.md`. Exija PRD/design
10
10
  aprovados e UX/UI aprovado ou não aplicável com justificativa aprovada.
11
11
  Confira evidências, atualidade e decisões essenciais ao incremento; se faltar
12
12
  algo, encaminhe à etapa correspondente antes de escrever a spec.
@@ -5,7 +5,7 @@ description: Planeja e implementa uma spec aprovada, acompanhando tarefas e crit
5
5
 
6
6
  # Implementar spec
7
7
 
8
- Leia `.pbai4devs/estado/configuracao/ESTADO.md`. Exija spec, PRD e design aprovados;
8
+ Leia `.pbai4devs/state/configuracao/ESTADO.md`. Exija spec, PRD e design aprovados;
9
9
  UX/UI aprovado ou não aplicável com justificativa aprovada. Confira evidências,
10
10
  atualidade, decisões essenciais e vínculos com o roadmap; resolva pendências
11
11
  antes de implementar.
@@ -15,5 +15,5 @@ cliente em `.pbai4devs/COMPATIBILIDADE.md`.
15
15
 
16
16
  Use o `README.md` do projeto para seu contexto. Os clientes escolhidos têm
17
17
  apontamentos; scripts, ferramentas e modelos permanecem na origem compartilhada.
18
- Respeite a seleção em `.pbai4devs/estado/agentdevkit.json`. Para alterá-la, use
18
+ Respeite a seleção em `.pbai4devs/state/agentdevkit.json`. Para alterá-la, use
19
19
  `agents` na CLI; não deduza o agente ativo pelo aplicativo ou pelas pastas.
@@ -6,5 +6,7 @@
6
6
  /.pbai4devs/espelhos.conf
7
7
  /.pbai4devs/estado/agentdevkit.json
8
8
  /.pbai4devs/estado/derived.json
9
+ /.pbai4devs/state/agentdevkit.json
10
+ /.pbai4devs/state/derived.json
9
11
  {{ROOTS}}
10
12
  {{OUTPUTS}}
@@ -6,6 +6,8 @@
6
6
  /espelhos.conf
7
7
  /estado/agentdevkit.json
8
8
  /estado/derived.json
9
+ /state/agentdevkit.json
10
+ /state/derived.json
9
11
 
10
12
  # Downloads e launchers de ferramentas
11
13
  /tools/bin/
package/CHANGELOG.md CHANGED
@@ -4,6 +4,17 @@ description: Alterações verificáveis por versão do AgentDevKit.
4
4
 
5
5
  # Changelog
6
6
 
7
+ ## 0.0.18 — 2026-11-13
8
+
9
+ - Sincronização preserva recursos próprios, colisões e alterações humanas.
10
+ - Limpeza de recursos obsoletos exige comprovação de propriedade.
11
+ - Comandos e efeitos sobre arquivos, índice e backups documentados.
12
+
13
+ ## 0.0.17 — 2026-11-13
14
+
15
+ - A pasta compartilhada de estado passa a se chamar `.pbai4devs/state`.
16
+ - Instalações existentes migram os dados sem alterar o índice ou o ignore.
17
+
7
18
  ## 0.0.16 — 2026-11-13
8
19
 
9
20
  - Testes portáteis distribuídos entre jobs para Windows e macOS.
@@ -22,17 +22,17 @@ atendido; lá os comandos de manutenção usam o pacote por `npx`.
22
22
 
23
23
  | Comando | Resultado |
24
24
  | --- | --- |
25
- | `init [pasta]` | Instala ou reaplica os recursos. |
26
- | `update` | Usa os recursos da versão do pacote executado. |
27
- | `sync` | Reconstrói as derivações da fonte do projeto. |
28
- | `sync --check` | Confere as derivações sem escrever. |
29
- | `doctor` | Diagnostica a instalação. |
30
- | `next` | Orienta a próxima etapa do projeto. |
25
+ | `init [pasta]` | Instala o kit no projeto ou reaplica a instalação. |
26
+ | `update` | Atualiza a fonte usando a versão do pacote executado. |
27
+ | `sync` | Atualiza catálogos e apontamentos a partir da fonte local. |
28
+ | `sync --check` | Confere sincronização sem alterar o projeto. |
29
+ | `doctor` | Diagnostica o kit e indica divergências. |
30
+ | `next` | Mostra a próxima etapa, sem iniciá-la. |
31
31
  | `lang [idioma]` | Consulta ou altera o idioma: pt, en ou es. |
32
- | `agents` | Consulta clientes disponíveis e seleção local. |
33
- | `agents codex,claude` | Altera a seleção local. |
34
- | `agents all` | Habilita todos os clientes. |
35
- | `tools <ação>` | Executa o gerenciador de ferramentas. |
32
+ | `agents` | Mostra os clientes disponíveis e a seleção salva. |
33
+ | `agents codex,claude` | Altera a seleção e os apontamentos necessários. |
34
+ | `agents all` | Seleciona todos os clientes compatíveis. |
35
+ | `tools <ação>` | Consulta, instala, atualiza ou executa ferramentas. |
36
36
  | `--help`, `--version` | Ajuda ou versão do pacote. |
37
37
 
38
38
  Sem comando, a CLI executa `init`, que pode criar arquivos. `language` é alias
@@ -48,16 +48,47 @@ de `lang`; `clients`, de `agents`. O idioma não traduz documentos existentes.
48
48
  | `--clients <lista>` | Alias de `--agents`. |
49
49
  | `--yes`, `-y` | Evita perguntas iniciais; não força conflitos. |
50
50
  | `--dry-run` | Exibe o plano sem aplicar alterações. |
51
- | `--force` | Substitui conflitos gerenciados, com backup. |
51
+ | `--force` | Solicita reparos gerenciados permitidos, com backup. |
52
52
  | `--json` | Produz uma resposta JSON para automação. |
53
53
 
54
54
  O primeiro uso interativo reúne idioma e clientes. Sem interação, valem as
55
55
  opções explícitas, a escolha local salva e, por último, `all`. Confira os
56
56
  [IDs e dependências](../../.pbai4devs/COMPATIBILIDADE.md).
57
57
 
58
- `update` não procura automaticamente a próxima versão: execute o pacote
59
- da versão desejada. `sync` não atualiza a fonte distribuída.
60
- A seleção e os derivados são locais; o source compartilhado permanece no Git.
58
+ `update` usa a versão executada; para escolher outra, fixe-a no nome do
59
+ pacote. `sync` usa o que já está em `.pbai4devs`: ele não baixa outra versão.
60
+ Ambos conciliam recursos e removem apontamentos obsoletos quando a propriedade
61
+ do kit é comprovada. Recursos e configurações próprios permanecem no projeto.
62
+ Diretórios antigos sem comprovação de propriedade podem permanecer vazios.
63
+ Ao mudar a seleção, pastas compartilhadas continuam quando outro cliente
64
+ precisa delas; arquivos adicionais da equipe devem ser preservados.
65
+
66
+ Antes de aplicar em projeto existente, confira o plano e depois o diagnóstico:
67
+
68
+ ```console
69
+ npx @pathbit/agentdevkit update --dry-run --json
70
+ npx @pathbit/agentdevkit update
71
+ npx @pathbit/agentdevkit doctor
72
+ npx @pathbit/agentdevkit sync --check
73
+ ```
74
+
75
+ Use `init --dry-run --json`, `sync --dry-run --json` ou
76
+ `agents codex,claude --dry-run --json` para as outras operações. Examine
77
+ `plan`, `conflicts`, `preserved`, `untrackedPaths` e `localIgnore` antes de
78
+ aplicar. Conflitos sem solução interrompem a operação; não presuma que uma
79
+ colisão de nomes torna um arquivo propriedade do kit.
80
+
81
+ O sincronizador independente também pode ser executado pelo
82
+ [script local](../../.pbai4devs/scripts/sincronizar-agentes/README.md). Seu
83
+ `--check` apenas confere e `--force` é explícito na linha de comando. O
84
+ comando agêntico [sincronizar](../../.pbai4devs/commands/sincronizar/COMMAND.md)
85
+ orienta executar o script com `--force`; ele não é o mesmo que `sync` da CLI.
86
+
87
+ No Git, o kit preserva o `.gitignore` da raiz e pode atualizar
88
+ `.git/info/exclude`. Se o plano indicar `untrackedPaths`, a operação pode
89
+ retirar do índice saídas comprovadamente geradas, mantendo seus arquivos no
90
+ disco. Confira a lista: `--dry-run` e `sync --check` não alteram o índice.
91
+ Backups locais ficam em `.agent-tests/` e não substituem o histórico Git.
61
92
 
62
93
  ## Ferramentas
63
94
 
@@ -80,7 +111,7 @@ do separador. `--help` e `--version` do kit não exigem um projeto instalado.
80
111
  As respostas incluem `ok`, `command`, `version`, `language`, `target` e
81
112
  `next`. Conforme a operação, há seleção, plano, conflitos, backup e erros.
82
113
  Leia os campos estruturados, não dependa da tradução da mensagem.
83
- `preserved` lista caminhos nativos humanos mantidos pelo projeto, com o motivo.
114
+ `preserved` lista caminhos mantidos pelo projeto e o motivo.
84
115
  Um complemento pode ser gerenciado por bloco sem tornar o arquivo propriedade
85
116
  do kit. Conteúdo humano não é substituído por `--force`.
86
117
 
@@ -111,7 +111,7 @@ usar `git add`. No GitHub Packages, use o prefixo de registry da instalação.
111
111
 
112
112
  O bloco local também protege `.agent-tests`, `tmp`, `temp`, `.playwright*`
113
113
  e relatórios de testes, inclusive com letras maiúsculas e em subpastas.
114
- O conteúdo do `.gitignore` existente e os arquivos rastreados são preservados.
114
+ O conteúdo do `.gitignore` existente na raiz é preservado.
115
115
  Uma exceção que reabra arquivo privado ou artefato é informada como conflito;
116
116
  o projeto decide como ajustar suas próprias regras.
117
117
  Negativas com curingas também podem ser recusadas preventivamente, mesmo antes
@@ -121,6 +121,9 @@ a validação fica restrita ao projeto e aos ignores de seus ancestrais.
121
121
 
122
122
  Arquivos já rastreados exigem migração do índice: apenas saídas identificadas
123
123
  do kit podem deixar de ser rastreadas, preservando seus bytes no disco.
124
+ O plano informa esses caminhos em `untrackedPaths` antes de aplicar; examine-os
125
+ e preserve alterações preparadas da equipe. `--dry-run` e `sync --check` não
126
+ alteram o índice.
124
127
  Artefatos já rastreados são informados por `doctor` e `sync --check` para
125
128
  revisão; não são removidos automaticamente do índice.
126
129
  Revise o plano e os conflitos em um projeto existente; use `--dry-run` antes
@@ -133,13 +136,20 @@ continua válida; `agents` consulta e `agents codex,claude` altera a seleção.
133
136
  `agents all` habilita todos. As pastas compartilhadas permanecem quando
134
137
  necessárias para outro cliente, como `.agents` para Codex e Antigravity.
135
138
 
136
- Confira a simulação antes de atualizar um projeto existente. Arquivos
137
- gerenciados alterados geram conflito; use `--force` somente após revisar o
138
- backup e o conteúdo que será substituído. Preserve os dados locais, as
139
- configurações próprias e os commits do projeto.
139
+ Confira `update --dry-run --json` antes de atualizar um projeto existente.
140
+ Revise arquivos criados, atualizados e removidos, conflitos, `preserved` e
141
+ eventuais alterações do índice. `sync` usa as fontes já instaladas e não baixa
142
+ uma nova versão. Consulte a [referência da CLI](cli.md) para todos os comandos.
140
143
 
141
- Entradas como `AGENTS.md`, `claude.md` e `GEMINI.md`, além de skills, agentes,
142
- comandos e regras existentes, recebem apenas um complemento do kit:
144
+ Skills e outros recursos próprios podem coexistir com os do kit. Um nome
145
+ igual não comprova propriedade: conteúdo humano e arquivos adicionais não
146
+ devem ser descartados para reconstruir apontamentos. Remoções automáticas
147
+ ficam restritas a arquivos obsoletos cuja propriedade possa ser comprovada.
148
+ `--force` não autoriza substituir conteúdo próprio; backups ficam em
149
+ `.agent-tests/` e devem ser revisados quando houver reparo gerenciado.
150
+
151
+ Em entradas como `AGENTS.md`, `claude.md` e `GEMINI.md`, e em recursos nativos
152
+ compatíveis, o kit pode acrescentar apenas uma referência delimitada:
143
153
 
144
154
  ```markdown
145
155
  <!-- BEGIN AGENTDEVKIT -->
@@ -148,7 +158,9 @@ Leia e siga [origem](caminho/para/.pbai4devs/recurso.md).
148
158
  ```
149
159
 
150
160
  O texto e o frontmatter humanos permanecem; a referência usa o caminho real
151
- do recurso. Repetir a operação não duplica o bloco. Edite suas instruções fora
161
+ do recurso. Um arquivo que não possa receber o bloco é preservado e informado,
162
+ sem prometer a adição do apontamento. Repetir a operação não duplica o bloco.
163
+ Edite suas instruções fora
152
164
  dele: atualizações alteram somente a contribuição do kit. Nomes de entradas
153
165
  com caixa diferente são reaproveitados quando há uma única opção.
154
166
  Comandos Gemini mantêm a referência dentro do valor `prompt` em TOML válido.
@@ -73,11 +73,19 @@ Os backups são locais e ignorados; não substituem o controle de versão.
73
73
 
74
74
  ## Estado ou apontamentos inconsistentes
75
75
 
76
+ Se a instalação ainda usa `.pbai4devs/estado`, execute `agentdevkit update`
77
+ para migrar os dados e atualizar os scripts juntos. Se `estado` e `state`
78
+ coexistirem, compare e preserve as duas pastas antes de resolver o conflito;
79
+ o kit não escolhe nem sobrescreve uma delas automaticamente.
80
+ Se a configuração apontar para caminhos dentro da pasta antiga, atualize
81
+ esses caminhos para `.pbai4devs/state` antes de tentar novamente. O kit não
82
+ reescreve as decisões do projeto.
83
+
76
84
  `missing`, `modified` e `outdated` em `issues` indicam arquivo ausente,
77
85
  conteúdo alterado ou derivação pendente. Use `sync --check` para inspecionar;
78
86
  se as alterações da origem forem intencionais, execute `sync` e confira de novo.
79
87
 
80
- Se `.pbai4devs/estado/agentdevkit.json` estiver inválido, recupere um backup
88
+ Se `.pbai4devs/state/agentdevkit.json` estiver inválido, recupere um backup
81
89
  local coerente com os arquivos correspondentes. O estado pessoal não é
82
90
  versionado. Não invente hashes nem apague o estado para ocultar conflitos;
83
91
  peça ao agente para comparar as fontes e planejar o reparo com `init`/`sync`.
@@ -56,7 +56,7 @@ Neste momento quero apenas preparar os agentes; não crie produto ou aplicação
56
56
 
57
57
  Quando o produto começar, combine os caminhos dos documentos no estado de
58
58
  configuração. Não presuma que todo projeto usa as mesmas pastas de documentos.
59
- O registro é `.pbai4devs/estado/configuracao/ESTADO.md`.
59
+ O registro é `.pbai4devs/state/configuracao/ESTADO.md`.
60
60
 
61
61
  ## 3. Definir produto e experiência
62
62
 
@@ -20,6 +20,8 @@ description: Incrementos verificáveis do AgentDevKit.
20
20
  - [Ecossistema de desenvolvimento](development-ecosystem/SPEC.md):
21
21
  especialistas, colaboração e provas.
22
22
  - [Confiabilidade da pipeline](ci-resilience/SPEC.md): testes e releases.
23
+ - [Pasta de estado](state-directory/SPEC.md): migração segura para `state`.
24
+ - [Sincronização segura](safe-synchronization/SPEC.md): preservar recursos próprios.
23
25
  - [Integração sem substituição][additive]: acréscimos em arquivos existentes.
24
26
  - [Compatibilidade com projetos reais][oss]: projetos públicos e exemplos reproduzíveis.
25
27
  - [Ignore do projeto](project-ignore/SPEC.md): preservar o arquivo da raiz.
@@ -0,0 +1,21 @@
1
+ ---
2
+ description: Sincronização segura com recursos e alterações próprios do projeto.
3
+ ---
4
+
5
+ # Sincronização segura
6
+
7
+ Projetos podem ter arquivos próprios e recursos adicionais aos do pacote.
8
+ Os comandos devem preservar esse conteúdo ao instalar, atualizar e sincronizar.
9
+
10
+ ## Critérios de aceite
11
+
12
+ - AC-001: Recursos humanos ou modificados no hub e nos clientes são
13
+ preservados, inclusive em colisões e com `--force`.
14
+ - AC-002: A limpeza remove somente saídas obsoletas com propriedade comprovada;
15
+ pastas e arquivos adicionais da equipe não são removidos.
16
+ - AC-003: Um conteúdo divergente preparado no índice não é descartado pela
17
+ sincronização; `.gitignore` da raiz e dados humanos são preservados.
18
+ - AC-004: `init`, `update`, `sync`, consultas e opções estão documentados com
19
+ seus efeitos sobre arquivos, backups, seleção de clientes e Git.
20
+ - AC-005: Testes exercitam instalações existentes, obsolescência, colisões,
21
+ execução repetida, Git e falhas; a CI contempla Linux, Windows e macOS.
@@ -0,0 +1,22 @@
1
+ ---
2
+ description: Nome em inglês para a pasta de estado compartilhado.
3
+ ---
4
+
5
+ # Pasta de estado
6
+
7
+ A pasta de primeiro nível passa de `.pbai4devs/estado` para
8
+ `.pbai4devs/state`. Ela contém estado de instalação e configuração, não
9
+ memória de conversas. Os nomes internos permanecem iguais.
10
+
11
+ ## Critérios de aceite
12
+
13
+ - AC-001: Instalações novas usam `state` e recursos, documentação, exclusões
14
+ e pacote apontam para ela, sem expor estado local no pacote ou no Git.
15
+ - AC-002: A atualização de instalações antigas preserva seleção, idioma,
16
+ decisões, conteúdo humano e permissões; conflitos e links inseguros não
17
+ causam perda ou sobrescrita silenciosa.
18
+ - AC-003: Simulação, repetição, falhas e recuperação preservam arquivos,
19
+ índice Git e `.gitignore` do projeto. Scripts independentes identificam
20
+ instalações antigas e novas de forma coerente.
21
+ - AC-004: Testes locais, CI em Linux, Windows e macOS e revisão independente
22
+ verificam o comportamento e os limites da migração.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pathbit/agentdevkit",
3
- "version": "0.0.16",
3
+ "version": "0.0.18",
4
4
  "description": "Shared skills, specifications and workflows for AI coding agents.",
5
5
  "type": "module",
6
6
  "license": "MIT",
package/src/cli.mjs CHANGED
@@ -2,7 +2,7 @@ import { existsSync } from 'node:fs';
2
2
  import { resolve, join } from 'node:path';
3
3
  import { createInterface } from 'node:readline/promises';
4
4
  import { spawnSync } from 'node:child_process';
5
- import { packageInfo } from './config.mjs';
5
+ import { packageInfo, statePath, legacyStatePath } from './config.mjs';
6
6
  import { text, normalizeLanguage, explainError } from './i18n.mjs';
7
7
  import { resolveTarget, loadState, planInstallation, applyPlan, inspect } from './install.mjs';
8
8
  import { getNextSteps } from './next.mjs';
@@ -169,7 +169,7 @@ export async function main(argv = process.argv.slice(2), context = {}) {
169
169
  }
170
170
  print(result, options, output); return exitCode;
171
171
  } catch (error) {
172
- const result = { ok: false, command: options.command || 'help', version: packageInfo.version, language, clients, target, message: explainError(language, error.code), error: { code: error.code || 'E_OPERATION', detail: error.message }, next: getNextSteps({ command: 'error', language, target, installed: existsSync(join(target, '.pbai4devs/estado/agentdevkit.json')) }) };
172
+ const result = { ok: false, command: options.command || 'help', version: packageInfo.version, language, clients, target, message: explainError(language, error.code), error: { code: error.code || 'E_OPERATION', detail: error.message }, next: getNextSteps({ command: 'error', language, target, installed: existsSync(join(target, statePath)) || existsSync(join(target, legacyStatePath)) }) };
173
173
  if (!options.json) result.message += ` (${error.code || 'E_OPERATION'})`;
174
174
  print(result, options, output); return error.exitCode || 1;
175
175
  }
package/src/config.mjs CHANGED
@@ -5,7 +5,8 @@ import { fileURLToPath } from 'node:url';
5
5
  export const packageRoot = resolve(dirname(fileURLToPath(import.meta.url)), '..');
6
6
  export const frameworkRoot = resolve(packageRoot, '.pbai4devs');
7
7
  export const packageInfo = JSON.parse(readFileSync(resolve(packageRoot, 'package.json'), 'utf8'));
8
- export const statePath = '.pbai4devs/estado/agentdevkit.json';
8
+ export const statePath = '.pbai4devs/state/agentdevkit.json';
9
+ export const legacyStatePath = '.pbai4devs/estado/agentdevkit.json';
9
10
  export const entryNames = ['AGENTS.md', 'CLAUDE.md', 'GEMINI.md'];
10
11
  export const begin = '<!-- BEGIN AGENTDEVKIT -->';
11
12
  export const end = '<!-- END AGENTDEVKIT -->';
package/src/i18n.mjs CHANGED
@@ -42,6 +42,31 @@ const messages = {
42
42
  };
43
43
  export const text = (language, key) => messages[language || 'pt'][key] || key;
44
44
  export function explainError(language, code) {
45
+ if (code === 'E_STAGED') return {
46
+ pt: 'Há alterações preparadas diferentes dos arquivos locais; revise-as antes de atualizar.',
47
+ en: 'Staged changes differ from the working files; review them before updating.',
48
+ es: 'Hay cambios preparados distintos de los archivos locales; revíselos antes de actualizar.',
49
+ }[language || 'pt'];
50
+ if (code === 'E_GIT') return {
51
+ pt: 'Não foi possível verificar o índice Git com segurança; nenhum arquivo foi alterado.',
52
+ en: 'The Git index could not be checked safely; no files were changed.',
53
+ es: 'No se pudo verificar el índice Git de forma segura; no se modificaron archivos.',
54
+ }[language || 'pt'];
55
+ if (code === 'E_CONFIG_PARSE') return {
56
+ pt: 'Não foi possível analisar a configuração legada com segurança; revise o frontmatter e as aspas antes de executar update.',
57
+ en: 'The legacy configuration could not be safely parsed; review its frontmatter and quoted values before running update.',
58
+ es: 'No se pudo analizar la configuración anterior de forma segura; revise el frontmatter y las comillas antes de ejecutar update.',
59
+ }[language || 'pt'];
60
+ if (code === 'E_LEGACY_PATH') return {
61
+ pt: 'Ajuste os caminhos .pbai4devs/estado para .pbai4devs/state na configuração antes de executar update.',
62
+ en: 'Change .pbai4devs/estado paths to .pbai4devs/state in the configuration before running update.',
63
+ es: 'Cambie las rutas .pbai4devs/estado por .pbai4devs/state en la configuración antes de ejecutar update.',
64
+ }[language || 'pt'];
65
+ if (code === 'E_UPGRADE') return {
66
+ pt: 'Execute agentdevkit update antes de sincronizar ou alterar a configuração legada.',
67
+ en: 'Run agentdevkit update before syncing or changing the legacy configuration.',
68
+ es: 'Ejecute agentdevkit update antes de sincronizar o cambiar la configuración anterior.',
69
+ }[language || 'pt'];
45
70
  const value = {
46
71
  pt: { E_ARGS: 'Argumentos inválidos; consulte --help.', E_STATE: 'O estado do AgentDevKit está inválido.', E_SYMLINK: 'Um link simbólico impede a operação segura.', E_TARGET: 'Escolha uma pasta real e segura como destino.', E_PATH: 'Um caminho gerenciado é inválido.', E_BLOCK: 'Os marcadores do bloco gerenciado estão inválidos.', E_CHANGED: 'Um arquivo mudou depois do planejamento; execute novamente.', E_TEMPLATE: 'Um template necessário está inválido.' },
47
72
  en: { E_ARGS: 'Invalid arguments; see --help.', E_STATE: 'AgentDevKit state is invalid.', E_SYMLINK: 'A symbolic link prevents this operation.', E_TARGET: 'Choose a real, safe target directory.', E_PATH: 'A managed path is invalid.', E_BLOCK: 'Managed block markers are invalid.', E_CHANGED: 'A file changed after planning; try again.', E_TEMPLATE: 'A required template is invalid.' },