oxe-cc 1.4.1 → 1.5.0

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 (36) hide show
  1. package/.cursor/commands/oxe-verify-audit.md +46 -0
  2. package/.cursor/commands/oxe-workflow-authoring.md +47 -0
  3. package/.github/prompts/oxe-compact.prompt.md +1 -1
  4. package/.github/prompts/oxe-plan-agent.prompt.md +1 -0
  5. package/.github/prompts/oxe-verify-audit.prompt.md +46 -0
  6. package/.github/prompts/oxe-workflow-authoring.prompt.md +47 -0
  7. package/.github/workflows/ci.yml +1 -0
  8. package/.github/workflows/release.yml +1 -0
  9. package/AGENTS.md +3 -1
  10. package/CHANGELOG.md +25 -0
  11. package/QUICKSTART.md +99 -0
  12. package/README.md +19 -10
  13. package/bin/lib/oxe-install-resolve.cjs +10 -0
  14. package/bin/lib/oxe-operational.cjs +34 -28
  15. package/bin/lib/oxe-project-health.cjs +38 -6
  16. package/bin/lib/oxe-release.cjs +423 -0
  17. package/bin/oxe-cc.js +389 -294
  18. package/commands/oxe/verify-audit.md +50 -0
  19. package/commands/oxe/workflow-authoring.md +50 -0
  20. package/docs/INCIDENT-PLAYBOOK.md +181 -0
  21. package/docs/RELEASE-READINESS.md +46 -0
  22. package/docs/ROLES.md +129 -0
  23. package/docs/RUNTIME-SMOKE-MATRIX.md +128 -0
  24. package/docs/TEAM-ADOPTION.md +153 -0
  25. package/docs/WALKTHROUGH.md +241 -0
  26. package/lib/runtime/scheduler/multi-agent-coordinator.d.ts +28 -0
  27. package/lib/runtime/scheduler/multi-agent-coordinator.js +152 -26
  28. package/lib/sdk/README.md +2 -0
  29. package/lib/sdk/index.cjs +22 -8
  30. package/lib/sdk/index.d.ts +60 -16
  31. package/oxe/templates/config.template.json +1 -0
  32. package/package.json +28 -20
  33. package/packages/runtime/package.json +1 -1
  34. package/packages/runtime/src/scheduler/multi-agent-coordinator.ts +357 -193
  35. package/vscode-extension/oxe-agents-1.5.0.vsix +0 -0
  36. package/vscode-extension/package.json +1 -1
@@ -0,0 +1,153 @@
1
+ # OXE — Adoção em Times
2
+
3
+ > Para times de 2–20 devs usando OXE em projetos compartilhados.
4
+
5
+ ---
6
+
7
+ ## Fluxo branch/PR recomendado
8
+
9
+ Cada feature ou fix percorre este caminho:
10
+
11
+ ```
12
+ git checkout -b feature/minha-feature
13
+ /oxe-spec → define critérios de aceite em .oxe/SPEC.md
14
+ /oxe-plan → gera .oxe/PLAN.md com ondas e tarefas
15
+ /oxe-execute → implementa onda a onda
16
+ /oxe-verify → valida critérios do SPEC com evidências
17
+ npx oxe-cc runtime promote --dir . --target pr_draft → abre PR draft
18
+ ```
19
+
20
+ O PR draft já vem com `.oxe/VERIFY.md` como evidência de qualidade. O reviewer usa `/oxe-verify --audit` para validação adversarial antes de aprovar.
21
+
22
+ **Regra de ouro:** nunca mergear sem `VERIFY.md` existente e fase `verify_complete` no STATE.md.
23
+
24
+ ---
25
+
26
+ ## Ship local vs. promote remoto
27
+
28
+ | Situação | Comando | Quando usar |
29
+ |----------|---------|-------------|
30
+ | Tarefa solo, ciclo completo local | `/oxe-quick` | Tasks S/M sem necessidade de review formal |
31
+ | Feature com review de time | `/oxe-verify` + `runtime promote --target pr_draft` | Qualquer feature que vai para revisão |
32
+ | Hotfix urgente | `/oxe-execute --task T1` + `/oxe-verify` + `runtime promote --target pr_draft` | Correções urgentes com rastreabilidade |
33
+ | Experimento / POC | `/oxe-spec` + `/oxe-plan` + `/oxe-execute` sem promote | Validações rápidas, sem PR |
34
+
35
+ `/oxe-ship` (comando legado) equivale a `/oxe-verify` + `git add/commit/push` sem passar pelo gate de promoção formal. Prefira `runtime promote` quando rastreabilidade importa.
36
+
37
+ ---
38
+
39
+ ## Sessões e workstreams sem poluir `.oxe/`
40
+
41
+ ### Sessões
42
+
43
+ Cada sessão de trabalho tem um ID único. Para manter o diretório `.oxe/` limpo:
44
+
45
+ ```bash
46
+ # Nomear sessão explicitamente
47
+ npx oxe-cc runtime session start --name "feat-auth-2fa"
48
+
49
+ # Ver sessão ativa
50
+ npx oxe-cc runtime session status
51
+
52
+ # Fechar sessão ao final do dia / feature
53
+ npx oxe-cc runtime session close
54
+ ```
55
+
56
+ **Não deixar sessões abertas.** Sessões esquecidas acumulam gates `stale` e bloqueiam relatórios de status do time.
57
+
58
+ ### Workstreams paralelos
59
+
60
+ Para times trabalhando em features paralelas no mesmo repo:
61
+
62
+ ```bash
63
+ # Workstream A (feature de autenticação)
64
+ npx oxe-cc runtime workstream create --name auth --branch feature/auth-2fa
65
+
66
+ # Workstream B (feature de dashboard)
67
+ npx oxe-cc runtime workstream create --name dashboard --branch feature/dashboard-v2
68
+ ```
69
+
70
+ Cada workstream mantém STATE.md e gates separados. Use `npx oxe-cc status --workstream auth` para ver o estado de um workstream específico sem poluir a view padrão.
71
+
72
+ **Regra:** um workstream por feature branch. Nunca compartilhar um workstream entre duas features não relacionadas.
73
+
74
+ ---
75
+
76
+ ## Governança mínima
77
+
78
+ ### Quando exigir `discuss_before_plan`
79
+
80
+ Ative quando a feature afeta:
81
+ - Contratos de API públicos ou schemas compartilhados
82
+ - Decisões de arquitetura que impactam outros times
83
+ - Mudanças em infraestrutura ou pipelines de CI/CD
84
+
85
+ ```json
86
+ // .oxe/config.json
87
+ {
88
+ "governance": {
89
+ "discuss_before_plan": ["contracts/**", "infra/**", "*.schema.json"]
90
+ }
91
+ }
92
+ ```
93
+
94
+ Sem esse gate, o planner vai direto para PLAN.md sem esperar alinhamento.
95
+
96
+ ### Quando ativar `strict`
97
+
98
+ Modo `strict` exige evidências formais para cada critério A* do SPEC antes de autorizar promoção. Use em:
99
+ - Releases com SLA de qualidade (produção, clientes enterprise)
100
+ - Features de segurança ou compliance
101
+ - Qualquer ciclo onde um reviewer externo vai auditar
102
+
103
+ ```json
104
+ {
105
+ "verification": {
106
+ "strict": true
107
+ }
108
+ }
109
+ ```
110
+
111
+ Em modo `strict`, `runtime promote` falha se qualquer critério A* não tiver evidência verificada.
112
+
113
+ ### Quando usar multi-agent
114
+
115
+ Use orquestração multi-agent (`/oxe-plan --multi-agent`) quando:
116
+ - A feature tem ondas independentes que podem ser paralelizadas
117
+ - Time tem múltiplos devs disponíveis para executar simultaneamente
118
+ - Tarefa de refactor em múltiplos módulos sem dependência entre eles
119
+
120
+ Não use multi-agent para:
121
+ - Features com dependências sequenciais fortes entre tarefas
122
+ - Mudanças em arquivos compartilhados (conflitos de merge)
123
+ - Ciclos onde um único dev vai executar tudo
124
+
125
+ ### Quando não usar OXE
126
+
127
+ - Scripts one-off que não vão para produção
128
+ - Experimentos de < 30 minutos sem necessidade de rastreabilidade
129
+ - Mudanças em documentação pura (typos, formatação)
130
+
131
+ Para esses casos, trabalhe direto sem o ciclo spec→plan→execute→verify.
132
+
133
+ ---
134
+
135
+ ## Checklist de integração para times novos
136
+
137
+ ```
138
+ [ ] oxe-cc doctor retorna ✓ para todos os checks
139
+ [ ] .oxe/config.json criado com profile do time
140
+ [ ] Todos os devs têm o wrapper da IDE configurado (/oxe no Cursor, etc.)
141
+ [ ] Branch protection rule exige VERIFY.md antes de merge
142
+ [ ] Primeiro ciclo completo feito em pair programming
143
+ [ ] Operador de gate designado (quem aprova runtime gates)
144
+ ```
145
+
146
+ ---
147
+
148
+ ## Referências
149
+
150
+ - **Primeiros 15 minutos** → [`QUICKSTART.md`](../QUICKSTART.md)
151
+ - **Por papel** → [`docs/ROLES.md`](ROLES.md)
152
+ - **Exemplo completo** → [`docs/WALKTHROUGH.md`](WALKTHROUGH.md)
153
+ - **Incidentes e gates** → [`docs/INCIDENT-PLAYBOOK.md`](INCIDENT-PLAYBOOK.md)
@@ -0,0 +1,241 @@
1
+ # OXE — Walkthrough Reproduzível
2
+
3
+ > Feature: "Adicionar endpoint REST `GET /api/items` de listagem paginada"
4
+ >
5
+ > Tempo estimado: 20 minutos. Todos os comandos são reproduzíveis — copie e execute.
6
+
7
+ ---
8
+
9
+ ## Pré-requisitos
10
+
11
+ ```bash
12
+ npx oxe-cc doctor
13
+ # ✓ Node 18+
14
+ # ✓ Workflows presentes
15
+ # ✓ Estrutura base .oxe/
16
+ ```
17
+
18
+ Se algum item falhar, siga o conselho exibido antes de continuar.
19
+
20
+ ---
21
+
22
+ ## Passo 1 — Descobrir onde você está
23
+
24
+ ```
25
+ /oxe
26
+ ```
27
+
28
+ **Output esperado (projeto novo):**
29
+ ```
30
+ Estado atual: init
31
+ Próximo passo recomendado: /oxe-scan
32
+ Motivo: nenhum mapeamento de codebase encontrado em .oxe/codebase/
33
+ ```
34
+
35
+ **Artefato gerado:** nenhum (apenas diagnóstico)
36
+
37
+ ---
38
+
39
+ ## Passo 2 — Mapear o codebase
40
+
41
+ ```
42
+ /oxe-scan
43
+ ```
44
+
45
+ **Output esperado:**
46
+ ```
47
+ Scan completo.
48
+ Arquivos mapeados: 47
49
+ Módulos detectados: routes/, controllers/, services/, tests/
50
+ Artefato: .oxe/codebase/map.json
51
+ ```
52
+
53
+ **Artefato gerado:** `.oxe/codebase/map.json`
54
+
55
+ ---
56
+
57
+ ## Passo 3 — Gerar critérios de aceite
58
+
59
+ ```
60
+ /oxe-spec
61
+
62
+ > Adicionar endpoint GET /api/items com paginação (page, limit). Retornar lista de items e metadados de paginação.
63
+ ```
64
+
65
+ **Output esperado:**
66
+ ```
67
+ SPEC.md gerado.
68
+ Critérios A* (bloqueantes):
69
+ A1. GET /api/items retorna 200 com lista de items
70
+ A2. Parâmetros page e limit são aceitos e validados
71
+ A3. Resposta inclui { items: [...], total, page, limit }
72
+ A4. Testes de integração cobrem os 3 critérios acima
73
+
74
+ Critérios B (desejáveis):
75
+ B1. Cursor inválido retorna 400 com mensagem clara
76
+ B2. Documentação OpenAPI atualizada
77
+ ```
78
+
79
+ **Artefato gerado:** `.oxe/SPEC.md`
80
+
81
+ Revise os critérios. Se estiverem corretos, avance.
82
+
83
+ ---
84
+
85
+ ## Passo 4 — Planejar a implementação
86
+
87
+ ```
88
+ /oxe-plan
89
+ ```
90
+
91
+ **Output esperado:**
92
+ ```
93
+ PLAN.md gerado.
94
+ Onda 1 (obrigatória):
95
+ T1. Criar route GET /api/items em routes/items.js
96
+ T2. Implementar ItemsController.list() com paginação
97
+ T3. Implementar ItemsService.findPaginated(page, limit)
98
+ T4. Escrever testes de integração para os 3 critérios A*
99
+
100
+ Hipótese crítica: ItemsService tem acesso ao repositório de dados correto
101
+ Arquivos-alvo: routes/items.js, controllers/items.js, services/items.js, tests/items.test.js
102
+ ```
103
+
104
+ **Artefato gerado:** `.oxe/PLAN.md`
105
+
106
+ ---
107
+
108
+ ## Passo 5 — Implementar
109
+
110
+ ```
111
+ /oxe-execute
112
+ ```
113
+
114
+ O executor vai implementar T1→T4 em sequência, marcando cada tarefa concluída.
115
+
116
+ **Output esperado ao final:**
117
+ ```
118
+ Onda 1 completa.
119
+ T1 ✓ routes/items.js — route criada
120
+ T2 ✓ controllers/items.js — ItemsController.list() implementado
121
+ T3 ✓ services/items.js — ItemsService.findPaginated() implementado
122
+ T4 ✓ tests/items.test.js — 4 testes de integração passando
123
+
124
+ Estado: execute_complete
125
+ ```
126
+
127
+ **Para executar uma tarefa específica:**
128
+ ```
129
+ /oxe-execute --task T3
130
+ ```
131
+
132
+ ---
133
+
134
+ ## Passo 6 — Verificar
135
+
136
+ ```
137
+ /oxe-verify
138
+ ```
139
+
140
+ **Output esperado:**
141
+ ```
142
+ Verificação completa.
143
+
144
+ A1 ✓ GET /api/items retorna 200 — evidência: tests/items.test.js:12
145
+ A2 ✓ Parâmetros page e limit validados — evidência: controllers/items.js:34
146
+ A3 ✓ Resposta inclui {items, total, page, limit} — evidência: controllers/items.js:41
147
+ A4 ✓ Testes cobrem A1–A3 — evidência: tests/items.test.js (4 testes)
148
+
149
+ Riscos residuais: nenhum
150
+ Estado: verify_complete
151
+ ```
152
+
153
+ **Artefato gerado:** `.oxe/VERIFY.md`
154
+
155
+ ---
156
+
157
+ ## Passo 7 — Gate de aprovação (opcional, runtime-first)
158
+
159
+ Se o projeto usa runtime gates:
160
+
161
+ ```bash
162
+ npx oxe-cc runtime gates list --dir .
163
+ ```
164
+
165
+ **Output esperado:**
166
+ ```
167
+ Gates pendentes: 1
168
+ ⏳ gate-001 tipo: verify_complete estado: pending
169
+ ação sugerida: approve
170
+ impacto: bloqueia promoção para pr_draft
171
+ ```
172
+
173
+ Para aprovar:
174
+ ```bash
175
+ npx oxe-cc runtime gates resolve --dir . --gate gate-001 --decision approve --actor "seu-nome"
176
+ ```
177
+
178
+ **Output esperado:**
179
+ ```
180
+ ✓ Gate gate-001 aprovado.
181
+ Run pode avançar para promoção — nenhum gate restante.
182
+ ```
183
+
184
+ ---
185
+
186
+ ## Passo 8 — Promover para PR draft
187
+
188
+ ```bash
189
+ npx oxe-cc runtime promote --dir . --target pr_draft
190
+ ```
191
+
192
+ **Output esperado:**
193
+ ```
194
+ Promoção para pr_draft iniciada.
195
+ Branch: feature/items-endpoint
196
+ VERIFY.md incluído como evidência
197
+ PR draft criado: https://github.com/seu-org/repo/pull/42
198
+ ```
199
+
200
+ ---
201
+
202
+ ## Estado final dos artefatos
203
+
204
+ ```
205
+ .oxe/
206
+ ├── STATE.md # fase: verify_complete (ou pr_draft após promote)
207
+ ├── SPEC.md # critérios A1–A4 + B1–B2
208
+ ├── PLAN.md # ondas e tarefas T1–T4
209
+ ├── VERIFY.md # evidências para cada critério A*
210
+ └── codebase/
211
+ └── map.json # mapa do projeto
212
+ ```
213
+
214
+ ---
215
+
216
+ ## Validação rápida
217
+
218
+ ```bash
219
+ npx oxe-cc status
220
+ ```
221
+
222
+ **Output esperado:**
223
+ ```
224
+ Estado: verify_complete
225
+ Próximo passo: runtime promote --target pr_draft (ou abrir PR manualmente)
226
+ SPEC: 4 critérios A* — todos verificados
227
+ VERIFY.md: presente
228
+ Gates pendentes: 0
229
+ ```
230
+
231
+ ---
232
+
233
+ ## Se algo der errado
234
+
235
+ | Sintoma | Comando |
236
+ |---------|---------|
237
+ | Travado em uma tarefa | `/oxe-debug` |
238
+ | Critério A* não verificado | `/oxe-verify` + revisar implementação |
239
+ | Gate stale (>24h) | Ver [`docs/INCIDENT-PLAYBOOK.md`](INCIDENT-PLAYBOOK.md) |
240
+ | Plano desatualizado | `/oxe-plan` novamente (sobrescreve PLAN.md) |
241
+ | Estado incoerente | `npx oxe-cc status --full` + `/oxe` para rediagnóstico |
@@ -17,6 +17,7 @@ export interface CoordinationOptions {
17
17
  sessionId: string | null;
18
18
  runId: string;
19
19
  onEvent?: SchedulerContext['onEvent'];
20
+ heartbeatTimeoutMs?: number;
20
21
  }
21
22
  export interface ArbitrationRecord {
22
23
  work_item_id: string;
@@ -48,12 +49,36 @@ export interface MultiAgentStatusSnapshot {
48
49
  assigned_task_ids: string[];
49
50
  completed: string[];
50
51
  failed: string[];
52
+ timed_out: boolean;
53
+ reassigned_task_ids: string[];
51
54
  }>;
52
55
  orphan_reassignments: Array<{
53
56
  from_agent_id: string;
54
57
  to_agent_id: string;
55
58
  work_item_ids: string[];
56
59
  }>;
60
+ timed_out_agents: Array<{
61
+ agent_id: string;
62
+ work_item_ids: string[];
63
+ detected_at: string;
64
+ }>;
65
+ updated_at: string;
66
+ }
67
+ export interface MultiAgentOperationalSummary {
68
+ run_id: string;
69
+ mode: CoordinationMode;
70
+ workspace_isolation_enforced: boolean;
71
+ agent_count: number;
72
+ completed_count: number;
73
+ failed_count: number;
74
+ blocked_count: number;
75
+ ownership_count: number;
76
+ handoff_count: number;
77
+ arbitration_count: number;
78
+ orphan_reassignment_count: number;
79
+ timeout_count: number;
80
+ participating_agents: string[];
81
+ health: 'healthy' | 'degraded';
57
82
  updated_at: string;
58
83
  }
59
84
  export interface CoordinationResult {
@@ -70,9 +95,12 @@ export interface CoordinationResult {
70
95
  handoffs?: CooperativeHandoff[];
71
96
  arbitration_results?: ArbitrationRecord[];
72
97
  state?: MultiAgentStatusSnapshot;
98
+ summary?: MultiAgentOperationalSummary;
73
99
  }
74
100
  export declare class MultiAgentCoordinator {
75
101
  run(graph: ExecutionGraph, opts: CoordinationOptions): Promise<CoordinationResult>;
76
102
  }
77
103
  export declare function multiAgentStatePath(projectRoot: string, runId: string): string;
104
+ export declare function multiAgentSummaryPath(projectRoot: string, runId: string): string;
78
105
  export declare function loadMultiAgentState(projectRoot: string, runId: string): MultiAgentStatusSnapshot | null;
106
+ export declare function loadMultiAgentSummary(projectRoot: string, runId: string): MultiAgentOperationalSummary | null;