@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.
- package/.pbai4devs/INSTRUCTIONS.md +1 -1
- package/.pbai4devs/README.md +1 -1
- package/.pbai4devs/commands/sincronizar/COMMAND.md +6 -4
- package/.pbai4devs/scripts/inspecionar-projeto/SCRIPT.mjs +3 -2
- package/.pbai4devs/scripts/inspecionar-projeto/tests/TEST.mjs +18 -4
- package/.pbai4devs/scripts/lib/README.md +3 -0
- package/.pbai4devs/scripts/lib/gitignore.mjs +46 -9
- package/.pbai4devs/scripts/lib/state-path.mjs +20 -0
- package/.pbai4devs/scripts/sincronizar-agentes/README.md +8 -1
- package/.pbai4devs/scripts/sincronizar-agentes/SCRIPT.mjs +75 -34
- package/.pbai4devs/scripts/sincronizar-agentes/tests/COEXISTENCE.mjs +5 -5
- package/.pbai4devs/scripts/sincronizar-agentes/tests/HUMAN_OWNERSHIP.mjs +1 -1
- package/.pbai4devs/scripts/sincronizar-agentes/tests/MANAGED_CONTENT.mjs +9 -9
- package/.pbai4devs/scripts/sincronizar-agentes/tests/PRESERVATION.mjs +306 -0
- package/.pbai4devs/scripts/sincronizar-agentes/tests/TEST.mjs +41 -8
- package/.pbai4devs/scripts/testar-maturidade/SCRIPT.mjs +6 -4
- package/.pbai4devs/scripts/testar-maturidade/tests/TEST.mjs +4 -3
- package/.pbai4devs/scripts/verificar-recursos/SCRIPT.mjs +5 -3
- package/.pbai4devs/scripts/verificar-recursos/tests/TEST.mjs +15 -7
- package/.pbai4devs/skills/produto/criar-design-doc/SKILL.md +1 -1
- package/.pbai4devs/skills/produto/criar-prd/SKILL.md +1 -1
- package/.pbai4devs/skills/produto/criar-ux-ui/SKILL.md +1 -1
- package/.pbai4devs/skills/projeto/configurar-projeto/SKILL.md +1 -1
- package/.pbai4devs/skills/projeto/proximos-passos/SKILL.md +1 -1
- package/.pbai4devs/skills/projeto/sincronizar-agentes/SKILL.md +1 -1
- package/.pbai4devs/skills/specs/criar-spec/SKILL.md +1 -1
- package/.pbai4devs/skills/specs/implementar-spec/SKILL.md +1 -1
- package/.pbai4devs/templates/entrypoints/AGENTS.md +1 -1
- package/.pbai4devs/templates/gitignore/local.ignore +2 -0
- package/.pbai4devs/templates/gitignore/shared.ignore +2 -0
- package/CHANGELOG.md +11 -0
- package/docs/guides/cli.md +46 -15
- package/docs/guides/installation.md +20 -8
- package/docs/guides/troubleshooting.md +9 -1
- package/docs/guides/workflow.md +1 -1
- package/docs/specs/README.md +2 -0
- package/docs/specs/safe-synchronization/SPEC.md +21 -0
- package/docs/specs/state-directory/SPEC.md +22 -0
- package/package.json +1 -1
- package/src/cli.mjs +2 -2
- package/src/config.mjs +2 -1
- package/src/i18n.mjs +25 -0
- package/src/install.mjs +373 -27
- /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 `
|
|
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/
|
|
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/
|
|
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/
|
|
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.
|
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.
|
package/docs/guides/cli.md
CHANGED
|
@@ -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
|
|
26
|
-
| `update` |
|
|
27
|
-
| `sync` |
|
|
28
|
-
| `sync --check` | Confere
|
|
29
|
-
| `doctor` | Diagnostica
|
|
30
|
-
| `next` |
|
|
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` |
|
|
33
|
-
| `agents codex,claude` | Altera a seleção
|
|
34
|
-
| `agents all` |
|
|
35
|
-
| `tools <ação>` |
|
|
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` |
|
|
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`
|
|
59
|
-
|
|
60
|
-
|
|
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
|
|
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
|
|
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
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
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
|
-
|
|
142
|
-
|
|
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.
|
|
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/
|
|
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`.
|
package/docs/guides/workflow.md
CHANGED
|
@@ -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/
|
|
59
|
+
O registro é `.pbai4devs/state/configuracao/ESTADO.md`.
|
|
60
60
|
|
|
61
61
|
## 3. Definir produto e experiência
|
|
62
62
|
|
package/docs/specs/README.md
CHANGED
|
@@ -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
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,
|
|
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/
|
|
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.' },
|