agim-orchestrator 1.1.2 → 1.1.3

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/CHANGELOG.md CHANGED
@@ -14,6 +14,23 @@ e este projeto adere ao [Versionamento Semântico](https://semver.org/lang/pt-BR
14
14
 
15
15
  ---
16
16
 
17
+ ## [1.1.3] - 2026-10-29
18
+
19
+ ### Adicionado
20
+ - **`agim doctor`**: mensagens RAG melhoradas — mostra chunks/arquivos do índice do projeto, menciona economia de tokens, não menciona "global/core".
21
+ - **`agim init`**: tentativa de RAG por padrão — avisa se dependência `@xenova/transformers` não está instalada e orienta como ativar economia de tokens.
22
+ - **`agim audit --json`**: output estruturado para CI/CD (já funcionava, agora documentado).
23
+
24
+ ### Corrigido
25
+ - **`agim doctor` RAG**: remove menção confusa a "índice RAG global" — agora diz "nenhum índice deste projeto" e orienta `agim rag:rebuild`.
26
+ - **`agim init` RAG**: não pula mais silenciosamente — informa se dependência `@xenova/transformers` falta e como instalar.
27
+
28
+ ### Alterado
29
+ - `agim init` não pula mais RAG silenciosamente (era `--skip-rag` por padrão implícito).
30
+ - Mensagens de `doctor` e `init` padronizadas para focar em "economia de tokens".
31
+
32
+ ---
33
+
17
34
  ## [1.1.2] - 2026-10-29
18
35
 
19
36
  ### Corrigido (P0 — bloqueadores de release)
package/CONTRIBUTING.md CHANGED
@@ -8,6 +8,10 @@ Obrigado por considerar contribuir para a **Bíblia Universal de IA**! Este docu
8
8
 
9
9
  Este projeto está licenciado sob a **Licença MIT** — veja o arquivo [LICENSE](LICENSE) para detalhes.
10
10
 
11
+ ## 📚 Documentação
12
+
13
+ Manual do usuário: [github.com/Brendontailor/agim-docs](https://github.com/Brendontailor/agim-docs)
14
+
11
15
  ## 📋 Índice
12
16
 
13
17
  - [Código de Conduta](#código-de-conduta)
package/README.en.md CHANGED
@@ -4,6 +4,7 @@
4
4
  [![npm version](https://img.shields.io/npm/v/agim-orchestrator.svg)](https://www.npmjs.com/package/agim-orchestrator)
5
5
  [![npm downloads](https://img.shields.io/npm/dm/agim-orchestrator.svg)](https://www.npmjs.com/package/agim-orchestrator)
6
6
  [![Node Version](https://img.shields.io/node/v/agim-orchestrator.svg)](https://www.npmjs.com/package/agim-orchestrator)
7
+ [![Documentation](https://img.shields.io/badge/docs-agim--docs-blue.svg)](https://github.com/Brendontailor/agim-docs)
7
8
 
8
9
  > **AGIM (Agent Grimoire)** is an orchestration engine for AI agents.
9
10
  > It installs what an agent needs to work with discipline: clear rules, persistent memory, skills, checklists, templates and automatic validation.
@@ -12,6 +13,8 @@
12
13
 
13
14
  It works with any agent that reads `AGENTS.md` (OpenCode, Claude Code, Cursor, Copilot, Codex and similar).
14
15
 
16
+ > **Full documentation**: [github.com/Brendontailor/agim-docs](https://github.com/Brendontailor/agim-docs)
17
+
15
18
  ---
16
19
 
17
20
  ## Table of contents
package/README.md CHANGED
@@ -4,6 +4,7 @@
4
4
  [![npm version](https://img.shields.io/npm/v/agim-orchestrator.svg)](https://www.npmjs.com/package/agim-orchestrator)
5
5
  [![npm downloads](https://img.shields.io/npm/dm/agim-orchestrator.svg)](https://www.npmjs.com/package/agim-orchestrator)
6
6
  [![Node Version](https://img.shields.io/node/v/agim-orchestrator.svg)](https://www.npmjs.com/package/agim-orchestrator)
7
+ [![Documentation](https://img.shields.io/badge/docs-agim--docs-blue.svg)](https://github.com/Brendontailor/agim-docs)
7
8
 
8
9
  > **AGIM (Agent Grimoire)** é um motor de orquestração para agentes de IA.
9
10
  > Ele instala, no seu projeto, o que um agente precisa para trabalhar com disciplina: regras claras, memória persistente, skills, checklists, templates e validação automática.
@@ -12,6 +13,8 @@
12
13
 
13
14
  Funciona com qualquer agente que leia `AGENTS.md` (OpenCode, Claude Code, Cursor, Copilot, Codex e similares).
14
15
 
16
+ > **Documentação completa**: [github.com/Brendontailor/agim-docs](https://github.com/Brendontailor/agim-docs)
17
+
15
18
  ---
16
19
 
17
20
  ## Índice
@@ -2,6 +2,8 @@
2
2
 
3
3
  > Cada entrada segue o formato **mensagem → causa → solução**.
4
4
  > Comece sempre por `agim doctor`: ele aponta o que falta e qual comando resolve.
5
+ >
6
+ > **Documentação completa**: [github.com/Brendontailor/agim-docs](https://github.com/Brendontailor/agim-docs)
5
7
 
6
8
  ---
7
9
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agim-orchestrator",
3
- "version": "1.1.2",
3
+ "version": "1.1.3",
4
4
  "description": "AGIM (Agent Grimoire): motor de orquestração para agentes de IA com skills, sub-agentes, memória persistente, checklists e validação.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -50,10 +50,11 @@
50
50
  "type": "git",
51
51
  "url": "git+https://github.com/Brendontailor/AGIM.git"
52
52
  },
53
- "homepage": "https://github.com/Brendontailor/AGIM#readme",
53
+ "homepage": "https://github.com/Brendontailor/agim-docs#readme",
54
54
  "bugs": {
55
55
  "url": "https://github.com/Brendontailor/AGIM/issues"
56
56
  },
57
+ "documentation": "https://github.com/Brendontailor/agim-docs",
57
58
  "engines": {
58
59
  "node": ">=18.0.0"
59
60
  },
@@ -285,16 +285,33 @@ agim interview "Definir objetivo do projeto"
285
285
 
286
286
  function initRAG(cwd, skipRag = false) {
287
287
  if (skipRag) return { skipped: true, reason: 'flag --skip-rag' };
288
- const indexFile = path.join(
288
+
289
+ const projectIndex = path.join(cwd, '.agim', 'rag', 'bible-index.json');
290
+ if (fs.existsSync(projectIndex)) {
291
+ return { skipped: true, reason: 'índice do projeto já existe', indexFile: projectIndex };
292
+ }
293
+
294
+ const globalIndex = path.join(
289
295
  process.env.USERPROFILE || process.env.HOME || '',
290
296
  '.agent-bible',
291
297
  'rag_index',
292
298
  'bible-index.json'
293
299
  );
294
- if (fs.existsSync(indexFile)) {
295
- return { skipped: true, reason: 'índice global já existe', indexFile };
300
+ if (fs.existsSync(globalIndex)) {
301
+ return { skipped: true, reason: 'índice global existe (use `agim rag:rebuild` para criar do projeto)', indexFile: globalIndex };
302
+ }
303
+
304
+ // Tentar criar índice do projeto se @xenova/transformers estiver disponível
305
+ try {
306
+ require.resolve('@xenova/transformers');
307
+ // Dep disponível - poderia criar, mas deixamos para rag:rebuild explícito
308
+ return { skipped: true, reason: 'dependência disponível — rode `agim rag:rebuild` para criar índice do projeto' };
309
+ } catch {
310
+ return {
311
+ skipped: true,
312
+ reason: 'dependência @xenova/transformers não instalada — rode `npm i -g @xenova/transformers` e depois `agim rag:rebuild` para ativar economia de tokens'
313
+ };
296
314
  }
297
- return { skipped: true, reason: 'índice global ainda não construído (rode `agim rag:rebuild`)', indexFile };
298
315
  }
299
316
 
300
317
  function initGraphify(cwd, skipGraphify = false) {
@@ -119,10 +119,34 @@ function checkRag(cwd) {
119
119
  path.join(cwd, '.agim', 'rag_index', 'bible-index.json'),
120
120
  path.join(cwd, 'rag_index', 'bible-index.json')
121
121
  ];
122
- if (projectIndexes.some((file) => fs.existsSync(file))) {
123
- return { ok: true, level: 'optional', message: 'índice RAG do projeto presente' };
122
+
123
+ let indexFile = null;
124
+ for (const file of projectIndexes) {
125
+ if (fs.existsSync(file)) {
126
+ indexFile = file;
127
+ break;
128
+ }
124
129
  }
125
-
130
+
131
+ if (indexFile) {
132
+ // Tentar ler chunks/arquivos do índice
133
+ let chunks = 0, files = 0;
134
+ try {
135
+ const content = fs.readFileSync(indexFile, 'utf8');
136
+ const index = JSON.parse(content);
137
+ chunks = index.chunks?.length || index.totalChunks || Object.keys(index).length;
138
+ files = index.files?.length || index.totalFiles || 0;
139
+ } catch {
140
+ // índice corrompido ou formato diferente
141
+ }
142
+ return {
143
+ ok: true,
144
+ level: 'optional',
145
+ message: `RAG: índice ativo (${chunks} chunks, ${files} arquivos) — economia de tokens ativa`
146
+ };
147
+ }
148
+
149
+ // Verificar global (não mencionar "global" explicitamente, só dizer que não há do projeto)
126
150
  const globalIndex = path.join(
127
151
  process.env.USERPROFILE || process.env.HOME || '',
128
152
  '.agent-bible',
@@ -133,10 +157,15 @@ function checkRag(cwd) {
133
157
  return {
134
158
  ok: false,
135
159
  level: 'optional',
136
- message: 'índice RAG global existe, mas não há índice deste projeto (opcional: `agim rag:rebuild`)'
160
+ message: 'RAG: nenhum índice deste projeto — rode `agim rag:rebuild` para ativar economia de tokens'
137
161
  };
138
162
  }
139
- return { ok: false, level: 'optional', message: 'índice RAG ausente (opcional: `agim rag:rebuild`)' };
163
+
164
+ return {
165
+ ok: false,
166
+ level: 'optional',
167
+ message: 'RAG: ausente — rode `agim rag:rebuild` para ativar economia de tokens (contexto não reenviado a cada turno)'
168
+ };
140
169
  }
141
170
 
142
171
  function checkGraphify(cwd) {