oxe-cc 1.8.0 → 1.9.1

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 (52) hide show
  1. package/AGENTS.md +1 -1
  2. package/CHANGELOG.md +94 -0
  3. package/README.md +15 -12
  4. package/bin/lib/oxe-manifest.cjs +20 -13
  5. package/bin/lib/oxe-operational.cjs +305 -79
  6. package/bin/lib/oxe-project-health.cjs +79 -18
  7. package/bin/lib/oxe-rationality.cjs +9 -7
  8. package/bin/lib/oxe-release.cjs +26 -0
  9. package/bin/oxe-cc.js +224 -52
  10. package/docs/RELEASE-READINESS.md +6 -1
  11. package/lib/runtime/compiler/graph-compiler.js +1 -1
  12. package/lib/runtime/executor/action-tool-map.js +4 -0
  13. package/lib/runtime/executor/built-in-tools.js +27 -0
  14. package/lib/runtime/executor/llm-task-executor.d.ts +4 -1
  15. package/lib/runtime/executor/llm-task-executor.js +41 -5
  16. package/lib/runtime/executor/node-prompt-builder.d.ts +4 -1
  17. package/lib/runtime/executor/node-prompt-builder.js +13 -2
  18. package/lib/runtime/models/failure.d.ts +1 -1
  19. package/lib/runtime/scheduler/multi-agent-coordinator.d.ts +39 -0
  20. package/lib/runtime/scheduler/multi-agent-coordinator.js +222 -13
  21. package/lib/runtime/scheduler/scheduler.d.ts +5 -1
  22. package/lib/runtime/scheduler/scheduler.js +82 -14
  23. package/lib/runtime/verification/verification-compiler.js +7 -5
  24. package/lib/runtime/workspace/strategies/git-worktree.js +18 -9
  25. package/lib/sdk/index.cjs +48 -44
  26. package/oxe/templates/PLAN.template.md +23 -9
  27. package/oxe/templates/SPEC.template.md +55 -22
  28. package/oxe/workflows/plan.md +18 -6
  29. package/oxe/workflows/spec.md +31 -9
  30. package/package.json +106 -100
  31. package/packages/runtime/package.json +18 -18
  32. package/packages/runtime/src/compiler/graph-compiler.ts +1 -1
  33. package/packages/runtime/src/evidence/evidence-store.ts +2 -2
  34. package/packages/runtime/src/executor/action-tool-map.ts +4 -0
  35. package/packages/runtime/src/executor/built-in-tools.ts +29 -0
  36. package/packages/runtime/src/executor/llm-task-executor.ts +46 -4
  37. package/packages/runtime/src/executor/node-prompt-builder.ts +18 -1
  38. package/packages/runtime/src/models/failure.ts +2 -0
  39. package/packages/runtime/src/scheduler/multi-agent-coordinator.ts +320 -46
  40. package/packages/runtime/src/scheduler/scheduler.ts +93 -15
  41. package/packages/runtime/src/verification/verification-compiler.ts +7 -5
  42. package/packages/runtime/src/workspace/strategies/git-worktree.ts +24 -16
  43. package/vscode-extension/package.json +185 -185
  44. package/vscode-extension/oxe-agents-0.9.1.vsix +0 -0
  45. package/vscode-extension/oxe-agents-0.9.2.vsix +0 -0
  46. package/vscode-extension/oxe-agents-1.0.0.vsix +0 -0
  47. package/vscode-extension/oxe-agents-1.4.0.vsix +0 -0
  48. package/vscode-extension/oxe-agents-1.5.0.vsix +0 -0
  49. package/vscode-extension/oxe-agents-1.5.1.vsix +0 -0
  50. package/vscode-extension/oxe-agents-1.6.0.vsix +0 -0
  51. package/vscode-extension/oxe-agents-1.7.0.vsix +0 -0
  52. package/vscode-extension/oxe-agents-1.8.0.vsix +0 -0
package/AGENTS.md CHANGED
@@ -99,4 +99,4 @@ Os wrappers por runtime podem carregar metadata cognitiva (`oxe_reasoning_mode`,
99
99
 
100
100
  Para `execute` e `verify`, o comportamento atual esperado é **runtime-first**: se `oxe-cc runtime` estiver disponível, preferir `runtime compile/project/verify/gates` e tratar markdown como projeção derivada; se o runtime não puder ser executado, declarar `fallback legado` explicitamente.
101
101
 
102
- Para publicação, o gate local esperado passa por `oxe-cc doctor --release --write-manifest`. Essa verificação deve falhar se houver drift de versão, topo inválido no `CHANGELOG`, ausência da árvore canónica `oxe/`, `workflow-runtime-contracts.json` inválido, wrapper dirty após sync, runtime não compilado ou ausência dos relatórios `.oxe/release/*.json` exigidos pela release.
102
+ Para publicação, o gate local esperado passa por `npm test`, `npm run release:pack-check` e `oxe-cc doctor --release --write-manifest`. Essa verificação deve falhar se houver drift de versão, topo inválido no `CHANGELOG`, ausência da árvore canónica `oxe/`, `workflow-runtime-contracts.json` inválido, wrapper dirty após sync, runtime não compilado, pacote npm com artefatos indevidos ou ausência dos relatórios `.oxe/release/*.json` exigidos pela release, incluindo `runtime-real-report.json` e, a partir da `1.9.1`, `multi-agent-real-report.json`.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,100 @@ Todas as versões seguem [Semantic Versioning](https://semver.org/). As mudança
4
4
 
5
5
  ---
6
6
 
7
+ ## [1.9.1] — 2026-05-04
8
+
9
+ ### Multi-Agent Real
10
+
11
+ Esta release endurece a coordenação multi-agent sobre workspaces reais, sem abrir novos comandos públicos.
12
+
13
+ - multi-agent real passa a exigir workspaces isolados `git_worktree` para modos `parallel`, `competitive` e `cooperative`
14
+ - `runtime execute` valida `plan-agents.json` antes de iniciar agentes e usa `GitWorktreeManager` por padrão no caminho multi-agent
15
+ - novo artefato por run `.oxe/runs/<run_id>/workspace-merge-report.json` com worktrees, ownership, merge blockers e readiness
16
+ - `runtime agents status --json`, `status --json` e recovery passam a expor merge readiness, blockers, arbitration e worktrees órfãos
17
+ - novo `npm run test:multi-agent-real` gera `.oxe/release/multi-agent-real-report.json` usando repositório git temporário com worktrees reais
18
+ - `doctor --release` passa a exigir `multi-agent-real-report.json` em versões `>=1.9.1`
19
+
20
+ ## [1.9.0] — 2026-05-04
21
+
22
+ ### Runtime Real Maturity
23
+
24
+ Esta release eleva a maturidade prática do OXE com foco em prova determinística do ciclo real `spec -> plan -> execute -> verify -> status/doctor`, sem abrir novos comandos públicos.
25
+
26
+ #### Runtime real
27
+
28
+ - nova suíte `test:runtime-real` valida projetos representativos com executor mockado e sem chamada a LLM/API externa
29
+ - `runtime execute` passa a bloquear antes da mutação quando confiança, rationality packs ou gates não estão prontos
30
+ - `runtime verify` continua evidence-first e passa a ser validado dentro do fluxo real de execução
31
+
32
+ #### Release proof
33
+
34
+ - novo relatório obrigatório `.oxe/release/runtime-real-report.json`
35
+ - `doctor --release` passa a bloquear publicação quando a prova de runtime real estiver ausente ou falha
36
+ - novo `release:pack-check` valida o tarball npm em dry-run contra artefatos indevidos
37
+
38
+ ## [1.8.3] — 2026-05-04
39
+
40
+ ### Release readiness e higiene de publicação
41
+
42
+ Esta release consolida a linha `1.8.3` para publicação no npm com foco em consistência de versão, alinhamento documental e pacote distribuído mais limpo.
43
+
44
+ #### Publicação
45
+
46
+ - alinhamento da versão `1.8.3` entre manifesto raiz, runtime, extensão VS Code, README e changelog
47
+ - fechamento do gate oficial `doctor --release` para a linha atual
48
+ - preparação do pacote npm para sair sem drift entre versão publicada e documentação principal
49
+
50
+ #### Higiene do pacote
51
+
52
+ - exclusão dos arquivos `.vsix` históricos da extensão VS Code do tarball npm
53
+ - manutenção apenas do código-fonte da extensão dentro do pacote, evitando distribuir binários legados desnecessários
54
+
55
+ ## [1.8.2] — 2026-04-30
56
+
57
+ ### Fluxo inicial mais coerente e geração de `spec`/`plan` mais forte
58
+
59
+ Esta release fecha a linha de robustez do ciclo `install -> status/doctor -> /oxe -> spec -> plan -> execute -> verify` sem abrir nova superfície pública. O foco foi remover ruído operacional em projetos novos e aumentar a densidade executável dos artefatos que o OXE induz.
60
+
61
+ #### Fluxo operacional
62
+
63
+ - `install`, `status` e `doctor` passam a convergir em `/oxe` como próximo passo canônico para projetos recém-inicializados
64
+ - `doctor` e `status` deixam de tratar `IMPLEMENTATION-PACK`, `REFERENCE-ANCHORS` e `FIXTURE-PACK` como blocker primário antes de existir `PLAN.md`
65
+ - o relatório racional agora marca o estado sem plano como `não aplicável ainda`, sem contaminar o próximo passo
66
+ - instalações e desinstalações locais por runtime continuam simétricas, com inferência de artefatos locais preservada
67
+
68
+ #### Indução mais forte de SPEC e PLAN
69
+
70
+ - `SPEC.template.md` passou a exigir outcome observável, público-alvo, restrições técnicas, setup externo, conteúdo/fluxos obrigatórios e contratos esperados para o plano
71
+ - `PLAN.template.md` ganhou contrato operacional da solução, densidade operacional mínima, `symbols alvo`, `estado/fluxo coberto` e `fixture/anchor obrigatório` por tarefa
72
+ - `oxe/workflows/spec.md` agora força extração explícita de blocos de interface, conteúdo mínimo, interações, responsividade e acessibilidade em demandas de produto/app/UI
73
+ - `oxe/workflows/plan.md` agora endurece o gate de confiança `>90%` para tarefas mutáveis vagas e exige fechamento mais forte de interface, conteúdo, estado persistido, anchors e fixtures em apps/UI estáticos
74
+
75
+ #### Testes
76
+
77
+ - novo teste cobrindo o estado racional não bloqueante antes da existência de `PLAN.md`
78
+ - suíte focada de CLI/health atualizada para manter o comportamento novo estável
79
+
80
+ ## [1.8.1] — 2026-04-30
81
+
82
+ ### Hotfix — Gaps implementados no fonte TypeScript (não em arquivos compilados)
83
+
84
+ A v1.8.0 aplicou as 5 correções críticas diretamente nos arquivos `.js` compilados (`lib/runtime/`), que são sobrescritos a cada `npm run build:runtime`. Esta release porta todas as correções para o fonte TypeScript em `packages/runtime/src/`, tornando-as permanentes.
85
+
86
+ #### Correções portadas para TypeScript
87
+
88
+ - **`models/failure.ts`**: `FailureClass` agora inclui `'verify'` e `'llm'` como classes canônicas
89
+ - **`scheduler/scheduler.ts`**: `TaskResult` com campo opcional `completed_by`; `TaskExecutor.execute()` aceita `options?: { previousError? }`; `verifyNode()` importa e chama `verifyRun` da fonte TS; `executeNode()` repassa `options`; `requestGateForNode()` com warning quando manager ausente
90
+ - **`executor/built-in-tools.ts`**: `finishTask` handler + registro em `BUILT_IN_TOOLS`
91
+ - **`executor/action-tool-map.ts`**: `finish_task` injetado universalmente em `selectToolsForActions()`
92
+ - **`executor/node-prompt-builder.ts`**: parâmetro `options`, seção de retry context, instrução `finish_task`
93
+ - **`executor/llm-task-executor.ts`**: detecção de `finish_task`, `completed_by` no retorno, `turn_limit_exhausted` retorna `success: false`
94
+
95
+ #### Testes
96
+ - 542 testes passando (era 542 na v1.8.0, nenhuma regressão)
97
+ - 36 testes de gaps (gap1–gap5) todos passando contra o código compilado
98
+
99
+ ---
100
+
7
101
  ## [1.8.0] — 2026-04-29
8
102
 
9
103
  ### Autonomous Execution — 5 Critical Gaps Resolved
package/README.md CHANGED
@@ -7,7 +7,7 @@
7
7
  [![npm](https://img.shields.io/npm/v/oxe-cc.svg?style=flat-square)](https://www.npmjs.com/package/oxe-cc)
8
8
  [![license](https://img.shields.io/npm/l/oxe-cc.svg?style=flat-square)](LICENSE)
9
9
 
10
- **Versão:** `1.8.0` · [package.json](package.json)
10
+ **Versão:** `1.9.1` · [package.json](package.json)
11
11
 
12
12
  **Framework OXE — Orchestrated eXperience Engineering**
13
13
 
@@ -459,20 +459,23 @@ O `status --full` mostra em ANSI: readiness do ciclo, autoavaliação do plano,
459
459
 
460
460
  O pacote está pronto para uma publicação robusta quando estes sinais estiverem verdes no repositório da release:
461
461
 
462
- - `npm test`
463
- - `npm run scan:assets`
464
- - `npm run build:vscode-ext`
465
- - `node bin/oxe-cc.js doctor --release --write-manifest`
466
- - `node bin/oxe-cc.js status --full`
462
+ - `npm test`
463
+ - `npm run scan:assets`
464
+ - `npm run build:vscode-ext`
465
+ - `node bin/oxe-cc.js doctor --release --write-manifest`
466
+ - `npm run release:pack-check`
467
+ - `node bin/oxe-cc.js status --full`
467
468
 
468
469
  Artefatos obrigatórios desta fase:
469
470
 
470
- - `.oxe/release/release-manifest.json`
471
- - `.oxe/release/runtime-smoke-report.json`
472
- - `.oxe/release/recovery-fixture-report.json`
473
- - `.oxe/release/multi-agent-soak-report.json`
474
-
475
- Não há outro bloqueador funcional do plano runtime core para esta publicação. O que sobra depois dela é evolução de ergonomia e expansão de targets, não correção estrutural do contrato atual.
471
+ - `.oxe/release/release-manifest.json`
472
+ - `.oxe/release/runtime-smoke-report.json`
473
+ - `.oxe/release/runtime-real-report.json`
474
+ - `.oxe/release/recovery-fixture-report.json`
475
+ - `.oxe/release/multi-agent-soak-report.json`
476
+ - `.oxe/release/multi-agent-real-report.json`
477
+
478
+ Na linha `1.9.1`, `runtime-real-report.json` prova o ciclo real `compile -> execute mockado -> verify -> project -> status --json`, e `multi-agent-real-report.json` prova coordenação com `git_worktree`, ownership, arbitragem e merge readiness antes da publicação.
476
479
 
477
480
  ### `/oxe-retro` — loop de aprendizado
478
481
 
@@ -51,19 +51,26 @@ function writeFileManifest(home, files, version) {
51
51
  * Before overwriting with --force, backup files that diverged from last manifest.
52
52
  * @param {string} home
53
53
  * @param {Record<string, string>} prevManifest
54
- * @param {{ dryRun: boolean, force: boolean }} opts
55
- * @param {{ yellow: string, cyan: string, dim: string, reset: string }} colors
56
- * @returns {string[]} modified paths
57
- */
58
- function backupModifiedFromManifest(home, prevManifest, opts, colors) {
59
- const { yellow, cyan, dim, reset } = colors;
60
- if (!opts.force || opts.dryRun) return [];
61
- const modified = [];
62
- for (const [absPath, oldHash] of Object.entries(prevManifest)) {
63
- if (!fs.existsSync(absPath)) continue;
64
- let now;
65
- try {
66
- now = sha256File(absPath);
54
+ * @param {{ dryRun: boolean, force: boolean }} opts
55
+ * @param {{ yellow: string, cyan: string, dim: string, reset: string }} colors
56
+ * @param {{ scopeRoots?: string[] }} [scope]
57
+ * @returns {string[]} modified paths
58
+ */
59
+ function backupModifiedFromManifest(home, prevManifest, opts, colors, scope = {}) {
60
+ const { yellow, cyan, dim, reset } = colors;
61
+ if (!opts.force || opts.dryRun) return [];
62
+ const normalizedRoots = Array.isArray(scope.scopeRoots)
63
+ ? scope.scopeRoots.map((root) => path.resolve(root))
64
+ : [];
65
+ const modified = [];
66
+ for (const [absPath, oldHash] of Object.entries(prevManifest)) {
67
+ if (normalizedRoots.length > 0 && !normalizedRoots.some((root) => absPath === root || absPath.startsWith(`${root}${path.sep}`))) {
68
+ continue;
69
+ }
70
+ if (!fs.existsSync(absPath)) continue;
71
+ let now;
72
+ try {
73
+ now = sha256File(absPath);
67
74
  } catch {
68
75
  continue;
69
76
  }