oxe-cc 1.2.1 → 1.4.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.
- package/.cursor/commands/oxe-ask.md +2 -2
- package/.cursor/commands/oxe-capabilities.md +2 -2
- package/.cursor/commands/oxe-checkpoint.md +2 -2
- package/.cursor/commands/oxe-compact.md +2 -2
- package/.cursor/commands/oxe-dashboard.md +2 -2
- package/.cursor/commands/oxe-debug.md +2 -2
- package/.cursor/commands/oxe-discuss.md +2 -2
- package/.cursor/commands/oxe-execute.md +5 -2
- package/.cursor/commands/oxe-forensics.md +2 -2
- package/.cursor/commands/oxe-help.md +2 -2
- package/.cursor/commands/oxe-loop.md +2 -2
- package/.cursor/commands/oxe-milestone.md +2 -2
- package/.cursor/commands/oxe-next.md +2 -2
- package/.cursor/commands/oxe-obs.md +2 -2
- package/.cursor/commands/oxe-plan-agent.md +2 -2
- package/.cursor/commands/oxe-plan.md +2 -2
- package/.cursor/commands/oxe-project.md +2 -2
- package/.cursor/commands/oxe-quick.md +2 -2
- package/.cursor/commands/oxe-research.md +2 -2
- package/.cursor/commands/oxe-retro.md +2 -2
- package/.cursor/commands/oxe-review-pr.md +2 -2
- package/.cursor/commands/oxe-route.md +2 -2
- package/.cursor/commands/oxe-scan.md +2 -2
- package/.cursor/commands/oxe-security.md +2 -2
- package/.cursor/commands/oxe-session.md +2 -2
- package/.cursor/commands/oxe-ship.md +2 -2
- package/.cursor/commands/oxe-skill.md +2 -2
- package/.cursor/commands/oxe-spec.md +2 -2
- package/.cursor/commands/oxe-ui-review.md +2 -2
- package/.cursor/commands/oxe-ui-spec.md +2 -2
- package/.cursor/commands/oxe-update.md +2 -2
- package/.cursor/commands/oxe-validate-gaps.md +2 -2
- package/.cursor/commands/oxe-verify.md +5 -2
- package/.cursor/commands/oxe-workstream.md +2 -2
- package/.cursor/commands/oxe.md +2 -2
- package/.github/copilot-instructions.md +13 -13
- package/.github/prompts/oxe-ask.prompt.md +2 -2
- package/.github/prompts/oxe-capabilities.prompt.md +2 -2
- package/.github/prompts/oxe-checkpoint.prompt.md +2 -2
- package/.github/prompts/oxe-compact.prompt.md +2 -2
- package/.github/prompts/oxe-dashboard.prompt.md +2 -2
- package/.github/prompts/oxe-debug.prompt.md +2 -2
- package/.github/prompts/oxe-discuss.prompt.md +2 -2
- package/.github/prompts/oxe-execute.prompt.md +5 -2
- package/.github/prompts/oxe-forensics.prompt.md +2 -2
- package/.github/prompts/oxe-help.prompt.md +2 -2
- package/.github/prompts/oxe-loop.prompt.md +2 -2
- package/.github/prompts/oxe-milestone.prompt.md +2 -2
- package/.github/prompts/oxe-next.prompt.md +2 -2
- package/.github/prompts/oxe-obs.prompt.md +2 -2
- package/.github/prompts/oxe-plan-agent.prompt.md +2 -2
- package/.github/prompts/oxe-plan.prompt.md +2 -2
- package/.github/prompts/oxe-project.prompt.md +2 -2
- package/.github/prompts/oxe-quick.prompt.md +2 -2
- package/.github/prompts/oxe-research.prompt.md +2 -2
- package/.github/prompts/oxe-retro.prompt.md +2 -2
- package/.github/prompts/oxe-review-pr.prompt.md +2 -2
- package/.github/prompts/oxe-route.prompt.md +2 -2
- package/.github/prompts/oxe-scan.prompt.md +2 -2
- package/.github/prompts/oxe-security.prompt.md +2 -2
- package/.github/prompts/oxe-session.prompt.md +2 -2
- package/.github/prompts/oxe-ship.prompt.md +2 -2
- package/.github/prompts/oxe-skill.prompt.md +2 -2
- package/.github/prompts/oxe-spec.prompt.md +2 -2
- package/.github/prompts/oxe-ui-review.prompt.md +2 -2
- package/.github/prompts/oxe-ui-spec.prompt.md +2 -2
- package/.github/prompts/oxe-update.prompt.md +2 -2
- package/.github/prompts/oxe-validate-gaps.prompt.md +2 -2
- package/.github/prompts/oxe-verify.prompt.md +5 -2
- package/.github/prompts/oxe-workstream.prompt.md +2 -2
- package/.github/prompts/oxe.prompt.md +2 -2
- package/AGENTS.md +5 -3
- package/CHANGELOG.md +72 -10
- package/LICENSE +21 -674
- package/README.md +631 -535
- package/bin/banner.txt +6 -6
- package/bin/lib/oxe-agent-install.cjs +69 -69
- package/bin/lib/oxe-azure.cjs +1445 -1445
- package/bin/lib/oxe-context-engine.cjs +867 -867
- package/bin/lib/oxe-dashboard.cjs +76 -28
- package/bin/lib/oxe-operational.cjs +2144 -1340
- package/bin/lib/oxe-project-health.cjs +483 -1
- package/bin/lib/oxe-runtime-semantics.cjs +12 -0
- package/bin/oxe-cc.js +554 -152
- package/commands/oxe/ask.md +2 -2
- package/commands/oxe/capabilities.md +2 -2
- package/commands/oxe/checkpoint.md +2 -2
- package/commands/oxe/compact.md +2 -2
- package/commands/oxe/dashboard.md +2 -2
- package/commands/oxe/debug.md +2 -2
- package/commands/oxe/discuss.md +2 -2
- package/commands/oxe/execute.md +5 -2
- package/commands/oxe/forensics.md +2 -2
- package/commands/oxe/help.md +2 -2
- package/commands/oxe/loop.md +2 -2
- package/commands/oxe/milestone.md +2 -2
- package/commands/oxe/next.md +2 -2
- package/commands/oxe/obs.md +2 -2
- package/commands/oxe/oxe.md +2 -2
- package/commands/oxe/plan-agent.md +2 -2
- package/commands/oxe/plan.md +2 -2
- package/commands/oxe/project.md +2 -2
- package/commands/oxe/quick.md +2 -2
- package/commands/oxe/research.md +2 -2
- package/commands/oxe/retro.md +2 -2
- package/commands/oxe/review-pr.md +2 -2
- package/commands/oxe/route.md +2 -2
- package/commands/oxe/scan.md +2 -2
- package/commands/oxe/security.md +2 -2
- package/commands/oxe/session.md +2 -2
- package/commands/oxe/ship.md +2 -2
- package/commands/oxe/skill.md +2 -2
- package/commands/oxe/spec.md +2 -2
- package/commands/oxe/ui-review.md +2 -2
- package/commands/oxe/ui-spec.md +2 -2
- package/commands/oxe/update.md +2 -2
- package/commands/oxe/validate-gaps.md +2 -2
- package/commands/oxe/verify.md +5 -2
- package/commands/oxe/workstream.md +2 -2
- package/lib/runtime/delivery/branch-manager.d.ts +1 -0
- package/lib/runtime/delivery/branch-manager.js +7 -0
- package/lib/runtime/delivery/ci-checks.js +34 -1
- package/lib/runtime/delivery/delivery-records.d.ts +34 -0
- package/lib/runtime/delivery/delivery-records.js +48 -0
- package/lib/runtime/delivery/index.d.ts +1 -0
- package/lib/runtime/delivery/index.js +1 -0
- package/lib/runtime/delivery/promotion-pipeline.d.ts +26 -2
- package/lib/runtime/delivery/promotion-pipeline.js +111 -14
- package/lib/runtime/gate/gate-manager.d.ts +41 -0
- package/lib/runtime/gate/gate-manager.js +108 -1
- package/lib/runtime/index.d.ts +2 -2
- package/lib/runtime/index.js +3 -1
- package/lib/runtime/models/gate-decision.d.ts +4 -1
- package/lib/runtime/models/workspace.d.ts +3 -0
- package/lib/runtime/plugins/capability-adapter.d.ts +12 -0
- package/lib/runtime/plugins/capability-adapter.js +204 -0
- package/lib/runtime/plugins/capability-matrix.d.ts +5 -0
- package/lib/runtime/plugins/capability-matrix.js +48 -17
- package/lib/runtime/plugins/index.d.ts +1 -0
- package/lib/runtime/plugins/index.js +1 -0
- package/lib/runtime/plugins/plugin-abi.d.ts +2 -0
- package/lib/runtime/plugins/plugin-manifest.d.ts +1 -1
- package/lib/runtime/plugins/plugin-manifest.js +6 -2
- package/lib/runtime/plugins/plugin-registry.d.ts +46 -0
- package/lib/runtime/plugins/plugin-registry.js +79 -2
- package/lib/runtime/policy/policy-engine.d.ts +19 -0
- package/lib/runtime/policy/policy-engine.js +76 -4
- package/lib/runtime/projection/projection-engine.d.ts +9 -1
- package/lib/runtime/projection/projection-engine.js +73 -3
- package/lib/runtime/scheduler/multi-agent-coordinator.d.ts +43 -1
- package/lib/runtime/scheduler/multi-agent-coordinator.js +151 -39
- package/lib/runtime/scheduler/run-journal.d.ts +1 -1
- package/lib/runtime/scheduler/scheduler.d.ts +19 -1
- package/lib/runtime/scheduler/scheduler.js +258 -13
- package/lib/runtime/verification/verification-compiler.d.ts +43 -0
- package/lib/runtime/verification/verification-compiler.js +137 -0
- package/lib/runtime/verification/verification-manifest.d.ts +9 -0
- package/lib/runtime/verification/verification-manifest.js +56 -6
- package/lib/runtime/workspace/strategies/ephemeral-container.d.ts +1 -0
- package/lib/runtime/workspace/strategies/ephemeral-container.js +4 -0
- package/lib/runtime/workspace/strategies/git-worktree.d.ts +1 -0
- package/lib/runtime/workspace/strategies/git-worktree.js +2 -0
- package/lib/runtime/workspace/strategies/inplace.d.ts +1 -0
- package/lib/runtime/workspace/strategies/inplace.js +2 -0
- package/lib/runtime/workspace/workspace-manager.d.ts +2 -1
- package/lib/sdk/README.md +20 -8
- package/lib/sdk/index.cjs +33 -24
- package/lib/sdk/index.d.ts +149 -14
- package/oxe/templates/ACTIVE-RUN.template.json +32 -32
- package/oxe/templates/CAPABILITIES.template.md +7 -7
- package/oxe/templates/CAPABILITY.template.md +45 -45
- package/oxe/templates/CHECKPOINTS.template.md +7 -7
- package/oxe/templates/EXECUTION-RUNTIME.template.md +68 -68
- package/oxe/templates/HYPOTHESES.template.md +33 -33
- package/oxe/templates/LESSONS-METRICS.template.json +13 -13
- package/oxe/templates/NOTES.template.md +16 -16
- package/oxe/templates/PLAN-REVIEW.template.md +31 -31
- package/oxe/templates/SESSION.template.md +34 -34
- package/oxe/templates/SKILL.template.md +26 -26
- package/oxe/templates/STATE.md +55 -55
- package/oxe/templates/WORKFLOW_AUTHORING.md +18 -18
- package/oxe/workflows/ask.md +96 -96
- package/oxe/workflows/capabilities.md +25 -25
- package/oxe/workflows/dashboard.md +33 -33
- package/oxe/workflows/discuss.md +12 -12
- package/oxe/workflows/execute.md +14 -0
- package/oxe/workflows/help.md +352 -352
- package/oxe/workflows/next.md +22 -22
- package/oxe/workflows/oxe.md +6 -6
- package/oxe/workflows/plan-agent.md +9 -9
- package/oxe/workflows/plan.md +51 -20
- package/oxe/workflows/quick.md +10 -10
- package/oxe/workflows/references/reasoning-discovery.md +28 -28
- package/oxe/workflows/references/reasoning-execution.md +29 -29
- package/oxe/workflows/references/reasoning-planning.md +32 -32
- package/oxe/workflows/references/reasoning-review.md +29 -29
- package/oxe/workflows/references/reasoning-status.md +24 -24
- package/oxe/workflows/references/robustness-elevation.md +295 -295
- package/oxe/workflows/references/workflow-runtime-contracts.json +952 -930
- package/oxe/workflows/route.md +16 -16
- package/oxe/workflows/session.md +213 -213
- package/oxe/workflows/ship.md +142 -142
- package/oxe/workflows/skill.md +44 -44
- package/oxe/workflows/ui-review.md +36 -36
- package/oxe/workflows/verify-audit.md +73 -73
- package/oxe/workflows/verify.md +10 -0
- package/package.json +92 -92
- package/packages/runtime/package.json +16 -15
- package/packages/runtime/src/audit/audit-trail.ts +243 -243
- package/packages/runtime/src/audit/index.ts +2 -2
- package/packages/runtime/src/audit/policy-pack.ts +62 -62
- package/packages/runtime/src/compiler/graph-compiler.ts +245 -245
- package/packages/runtime/src/compiler/index.ts +1 -1
- package/packages/runtime/src/context/context-pack-builder.ts +259 -259
- package/packages/runtime/src/context/context-pack-store.ts +197 -197
- package/packages/runtime/src/context/context-profiles.ts +60 -60
- package/packages/runtime/src/context/index.ts +3 -3
- package/packages/runtime/src/decision/decision-engine.ts +174 -174
- package/packages/runtime/src/decision/decision-memo.ts +211 -211
- package/packages/runtime/src/decision/index.ts +2 -2
- package/packages/runtime/src/delivery/branch-manager.ts +91 -84
- package/packages/runtime/src/delivery/ci-checks.ts +285 -252
- package/packages/runtime/src/delivery/delivery-records.ts +75 -0
- package/packages/runtime/src/delivery/index.ts +5 -4
- package/packages/runtime/src/delivery/pr-manager.ts +112 -112
- package/packages/runtime/src/delivery/promotion-pipeline.ts +334 -180
- package/packages/runtime/src/events/bus.ts +92 -92
- package/packages/runtime/src/events/catalog.ts +29 -29
- package/packages/runtime/src/events/envelope.ts +14 -14
- package/packages/runtime/src/events/index.ts +3 -3
- package/packages/runtime/src/evidence/evidence-store.ts +130 -130
- package/packages/runtime/src/evidence/index.ts +1 -1
- package/packages/runtime/src/gate/gate-manager.ts +289 -137
- package/packages/runtime/src/gate/index.ts +1 -1
- package/packages/runtime/src/index.ts +41 -37
- package/packages/runtime/src/models/attempt.ts +19 -19
- package/packages/runtime/src/models/evidence.ts +21 -21
- package/packages/runtime/src/models/gate-decision.ts +25 -21
- package/packages/runtime/src/models/index.ts +8 -8
- package/packages/runtime/src/models/run.ts +24 -24
- package/packages/runtime/src/models/session.ts +11 -11
- package/packages/runtime/src/models/verification-result.ts +10 -10
- package/packages/runtime/src/models/work-item.ts +25 -25
- package/packages/runtime/src/models/workspace.ts +31 -28
- package/packages/runtime/src/plugins/capability-adapter.ts +206 -0
- package/packages/runtime/src/plugins/capability-matrix.ts +126 -83
- package/packages/runtime/src/plugins/index.ts +5 -4
- package/packages/runtime/src/plugins/plugin-abi.ts +97 -95
- package/packages/runtime/src/plugins/plugin-manifest.ts +118 -113
- package/packages/runtime/src/plugins/plugin-registry.ts +232 -124
- package/packages/runtime/src/policy/index.ts +1 -1
- package/packages/runtime/src/policy/policy-engine.ts +330 -244
- package/packages/runtime/src/projection/index.ts +1 -1
- package/packages/runtime/src/projection/projection-engine.ts +328 -249
- package/packages/runtime/src/reducers/debug-reducer.ts +36 -36
- package/packages/runtime/src/reducers/index.ts +2 -2
- package/packages/runtime/src/reducers/run-state-reducer.ts +269 -269
- package/packages/runtime/src/scheduler/agent-registry.ts +132 -132
- package/packages/runtime/src/scheduler/agent-roles.ts +109 -109
- package/packages/runtime/src/scheduler/index.ts +4 -4
- package/packages/runtime/src/scheduler/multi-agent-coordinator.ts +521 -333
- package/packages/runtime/src/scheduler/run-journal.ts +62 -62
- package/packages/runtime/src/scheduler/scheduler.ts +722 -441
- package/packages/runtime/src/verification/index.ts +2 -2
- package/packages/runtime/src/verification/verification-compiler.ts +436 -225
- package/packages/runtime/src/verification/verification-manifest.ts +252 -192
- package/packages/runtime/src/workspace/index.ts +5 -5
- package/packages/runtime/src/workspace/strategies/ephemeral-container.ts +126 -121
- package/packages/runtime/src/workspace/strategies/git-worktree.ts +79 -77
- package/packages/runtime/src/workspace/strategies/inplace.ts +38 -35
- package/packages/runtime/src/workspace/workspace-manager.ts +16 -15
- package/packages/runtime/tsconfig.json +17 -17
- package/vscode-extension/.vscodeignore +7 -7
- package/vscode-extension/LICENSE +21 -0
- package/vscode-extension/oxe-agents-1.0.0.vsix +0 -0
- package/vscode-extension/oxe-agents-1.4.0.vsix +0 -0
- package/vscode-extension/package.json +184 -184
- package/vscode-extension/src/extension.js +310 -310
- package/vscode-extension/src/shared/contextLoader.js +137 -137
- package/vscode-extension/src/shared/contractBuilder.js +159 -159
- package/vscode-extension/src/shared/stateReader.js +101 -101
package/oxe/workflows/route.md
CHANGED
|
@@ -6,22 +6,22 @@ Desambiguar pedidos em **linguagem natural** e devolver **exatamente um** destin
|
|
|
6
6
|
Este passo é **meta**: só orientação. A execução real pertence ao workflow apontado.
|
|
7
7
|
</objective>
|
|
8
8
|
|
|
9
|
-
<context>
|
|
10
|
-
- Aplicar `oxe/workflows/references/reasoning-status.md`. A saída deve ser curta, orientada a decisão e com confiança explícita quando houver ambiguidade real.
|
|
11
|
-
- A tabela canónica de mapeamento vive em **`oxe/workflows/help.md`** na secção **Router (linguagem natural)**.
|
|
12
|
-
- Saída no chat: **um** comando (`/oxe-*` ou `npx oxe-cc …`) e **uma** frase de justificativa — alinhado a `next.md` (sem alternativas equiparáveis).
|
|
13
|
-
</context>
|
|
14
|
-
|
|
15
|
-
<process>
|
|
16
|
-
1. Ler a secção **Router** em `oxe/workflows/help.md` (ou `.oxe/workflows/help.md` no projeto).
|
|
17
|
-
2. Classificar a intenção do utilizador e escolher **uma** linha da tabela.
|
|
18
|
-
3. Se a classificação não for claramente dominante, ainda devolver um único destino, mas explicitar a confiança da escolha e a lacuna que poderia mudar o roteamento.
|
|
19
|
-
4. Responder apenas:
|
|
20
|
-
- **Comando:** …
|
|
21
|
-
- **Workflow:** `oxe/workflows/<nome>.md`
|
|
22
|
-
- **Por quê:** (uma frase)
|
|
23
|
-
- **Confiança:** alta | média | baixa (só quando houver ambiguidade real)
|
|
24
|
-
5. Não criar ficheiros em `.oxe/` salvo o utilizador pedir explícito registo; se o utilizador pedir rastreio: acrescentar uma linha em **`.oxe/STATE.md`** (ex.: `last_route: /oxe-scan — YYYY-MM-DD`).
|
|
9
|
+
<context>
|
|
10
|
+
- Aplicar `oxe/workflows/references/reasoning-status.md`. A saída deve ser curta, orientada a decisão e com confiança explícita quando houver ambiguidade real.
|
|
11
|
+
- A tabela canónica de mapeamento vive em **`oxe/workflows/help.md`** na secção **Router (linguagem natural)**.
|
|
12
|
+
- Saída no chat: **um** comando (`/oxe-*` ou `npx oxe-cc …`) e **uma** frase de justificativa — alinhado a `next.md` (sem alternativas equiparáveis).
|
|
13
|
+
</context>
|
|
14
|
+
|
|
15
|
+
<process>
|
|
16
|
+
1. Ler a secção **Router** em `oxe/workflows/help.md` (ou `.oxe/workflows/help.md` no projeto).
|
|
17
|
+
2. Classificar a intenção do utilizador e escolher **uma** linha da tabela.
|
|
18
|
+
3. Se a classificação não for claramente dominante, ainda devolver um único destino, mas explicitar a confiança da escolha e a lacuna que poderia mudar o roteamento.
|
|
19
|
+
4. Responder apenas:
|
|
20
|
+
- **Comando:** …
|
|
21
|
+
- **Workflow:** `oxe/workflows/<nome>.md`
|
|
22
|
+
- **Por quê:** (uma frase)
|
|
23
|
+
- **Confiança:** alta | média | baixa (só quando houver ambiguidade real)
|
|
24
|
+
5. Não criar ficheiros em `.oxe/` salvo o utilizador pedir explícito registo; se o utilizador pedir rastreio: acrescentar uma linha em **`.oxe/STATE.md`** (ex.: `last_route: /oxe-scan — YYYY-MM-DD`).
|
|
25
25
|
</process>
|
|
26
26
|
|
|
27
27
|
<success_criteria>
|
package/oxe/workflows/session.md
CHANGED
|
@@ -1,213 +1,213 @@
|
|
|
1
|
-
# OXE — Workflow: session
|
|
2
|
-
|
|
3
|
-
<objective>
|
|
4
|
-
Gerenciar **sessões OXE** em `.oxe/sessions/` para isolar artefatos por ciclo de trabalho, mantendo **`.oxe/STATE.md`** como índice global e preservando o **modo legado** quando não houver sessão ativa.
|
|
5
|
-
|
|
6
|
-
Subcomandos de sessão:
|
|
7
|
-
- `new <nome>`
|
|
8
|
-
- `list`
|
|
9
|
-
- `switch <id-ou-nome>`
|
|
10
|
-
- `resume <id-ou-nome>`
|
|
11
|
-
- `status`
|
|
12
|
-
- `close`
|
|
13
|
-
- `migrate <nome>`
|
|
14
|
-
- `fork [nome-opcional]`
|
|
15
|
-
- `revert <checkpoint-slug>`
|
|
16
|
-
|
|
17
|
-
Subcomandos de milestone (absorvidos de `/oxe-project` e `/oxe-milestone`):
|
|
18
|
-
- `milestone new [nome]` — iniciar marco de entrega (M-01, M-02, …)
|
|
19
|
-
- `milestone complete` — fechar milestone ativo, arquivar em `.oxe/milestones/M-NN/`
|
|
20
|
-
- `milestone status` — progresso do milestone ativo
|
|
21
|
-
- `milestone audit` — Definition of Done do milestone
|
|
22
|
-
|
|
23
|
-
Subcomandos de workstream (absorvidos de `/oxe-project` e `/oxe-workstream`):
|
|
24
|
-
- `workstream new <nome>` — trilha paralela em `.oxe/workstreams/<nome>/`
|
|
25
|
-
- `workstream switch <nome>` — definir workstream ativo
|
|
26
|
-
- `workstream list` — listar trilhas
|
|
27
|
-
- `workstream close <nome>` — fechar trilha
|
|
28
|
-
|
|
29
|
-
Sem argumento: mostrar status atual (sessão ativa, milestone, workstream ativo).
|
|
30
|
-
|
|
31
|
-
**Nota de compatibilidade v1.1.0:** `/oxe-project`, `/oxe-milestone` e `/oxe-workstream` foram incorporados por este comando. Esses comandos legados continuam funcionando mas exibem aviso de migração.
|
|
32
|
-
</objective>
|
|
33
|
-
|
|
34
|
-
<context>
|
|
35
|
-
- Fonte de regra de path: `oxe/workflows/references/session-path-resolution.md`
|
|
36
|
-
- Template da sessão: `oxe/templates/SESSION.template.md`
|
|
37
|
-
- Índice global: `.oxe/SESSIONS.md`
|
|
38
|
-
- Sessão ativa fica sempre em `.oxe/STATE.md`, campo `active_session`, com path relativo completo: `sessions/sNNN-slug`
|
|
39
|
-
- Sem sessão ativa, os workflows continuam a operar na raiz `.oxe/`
|
|
40
|
-
- Esta entrega é **workflows only**: `oxe-cc status` / `doctor` continuam legados e isso deve ser assumido nesta versão
|
|
41
|
-
</context>
|
|
42
|
-
|
|
43
|
-
<index_format>
|
|
44
|
-
## Formato fixo de `.oxe/SESSIONS.md`
|
|
45
|
-
|
|
46
|
-
```markdown
|
|
47
|
-
# OXE — Índice de sessões
|
|
48
|
-
|
|
49
|
-
| ID | Nome | Status | Criada | Última atividade | Resumo | Path |
|
|
50
|
-
|----|------|--------|--------|------------------|--------|------|
|
|
51
|
-
| s001 | auth-redesign | active | 2026-04-07 | 2026-04-07 | Sessão criada por migrate | `sessions/s001-auth-redesign` |
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
- Linha mais recente no topo
|
|
55
|
-
- `switch` e `resume` atualizam **Última atividade**
|
|
56
|
-
- `close` atualiza **Status** para `archived`
|
|
57
|
-
</index_format>
|
|
58
|
-
|
|
59
|
-
<process_new>
|
|
60
|
-
## `new <nome>`
|
|
61
|
-
|
|
62
|
-
1. Garantir `.oxe/`, `.oxe/sessions/` e `.oxe/global/`.
|
|
63
|
-
2. Normalizar o nome para slug ASCII em kebab-case.
|
|
64
|
-
3. Ler `.oxe/SESSIONS.md` se existir; calcular o próximo ID `sNNN`.
|
|
65
|
-
4. Criar `.oxe/sessions/sNNN-slug/` com:
|
|
66
|
-
- `spec/`
|
|
67
|
-
- `plan/`
|
|
68
|
-
- `execution/`
|
|
69
|
-
- `verification/`
|
|
70
|
-
- `checkpoints/`
|
|
71
|
-
- `research/`
|
|
72
|
-
- `artifacts/`
|
|
73
|
-
- `workstreams/`
|
|
74
|
-
5. Criar `SESSION.md` a partir de `SESSION.template.md`.
|
|
75
|
-
6. Criar ou atualizar `.oxe/SESSIONS.md` com a nova linha no topo.
|
|
76
|
-
7. Atualizar `.oxe/STATE.md`:
|
|
77
|
-
- `active_session: sessions/sNNN-slug`
|
|
78
|
-
- `session_id: sNNN`
|
|
79
|
-
- fase resumida e próximo passo coerentes com a sessão nova
|
|
80
|
-
8. Responder no chat com ID, path da sessão e próximo passo sugerido.
|
|
81
|
-
</process_new>
|
|
82
|
-
|
|
83
|
-
<process_list>
|
|
84
|
-
## `list`
|
|
85
|
-
|
|
86
|
-
1. Ler `.oxe/SESSIONS.md`.
|
|
87
|
-
2. Se o ficheiro não existir, responder que não há sessões registadas.
|
|
88
|
-
3. Exibir a tabela do índice; se o utilizador pedir filtro, aceitar `--status active|archived`.
|
|
89
|
-
</process_list>
|
|
90
|
-
|
|
91
|
-
<process_switch>
|
|
92
|
-
## `switch <id-ou-nome>`
|
|
93
|
-
|
|
94
|
-
1. Ler `.oxe/SESSIONS.md`.
|
|
95
|
-
2. Resolver a sessão por `sNNN`, slug ou nome exibido na tabela.
|
|
96
|
-
3. Atualizar `.oxe/STATE.md` global:
|
|
97
|
-
- `active_session`
|
|
98
|
-
- `session_id`
|
|
99
|
-
- `Última atividade` dessa sessão em `.oxe/SESSIONS.md`
|
|
100
|
-
4. Não mover artefatos; apenas mudar o contexto ativo.
|
|
101
|
-
</process_switch>
|
|
102
|
-
|
|
103
|
-
<process_resume>
|
|
104
|
-
## `resume <id-ou-nome>`
|
|
105
|
-
|
|
106
|
-
- Mesmo comportamento de `switch`
|
|
107
|
-
- Usar wording de retomada no chat, mas sem lógica diferente
|
|
108
|
-
</process_resume>
|
|
109
|
-
|
|
110
|
-
<process_status>
|
|
111
|
-
## `status`
|
|
112
|
-
|
|
113
|
-
1. Ler `.oxe/STATE.md` global.
|
|
114
|
-
2. Se houver `active_session`, abrir `SESSION.md` da sessão ativa e resumir:
|
|
115
|
-
- metadados
|
|
116
|
-
- índice de artefatos
|
|
117
|
-
- tags
|
|
118
|
-
- último evento do histórico
|
|
119
|
-
3. Se não houver sessão ativa, responder com a tabela de `.oxe/SESSIONS.md` (equivalente funcional a `list`).
|
|
120
|
-
</process_status>
|
|
121
|
-
|
|
122
|
-
<process_close>
|
|
123
|
-
## `close`
|
|
124
|
-
|
|
125
|
-
1. Ler `.oxe/STATE.md`; se não houver sessão ativa, pausar e informar.
|
|
126
|
-
2. Abrir `SESSION.md` da sessão ativa e marcar `Status: archived`.
|
|
127
|
-
3. Atualizar `.oxe/SESSIONS.md` com `Status = archived` e `Última atividade = hoje`.
|
|
128
|
-
4. Limpar de `.oxe/STATE.md`:
|
|
129
|
-
- `active_session`
|
|
130
|
-
- `session_id`
|
|
131
|
-
5. Responder com a sessão encerrada e lembrar que sessões arquivadas continuam legíveis.
|
|
132
|
-
</process_close>
|
|
133
|
-
|
|
134
|
-
<process_migrate>
|
|
135
|
-
## `migrate <nome>`
|
|
136
|
-
|
|
137
|
-
1. Executar logicamente `new <nome>` para abrir uma nova sessão.
|
|
138
|
-
2. Mover apenas artefatos session-scoped existentes da raiz `.oxe/`:
|
|
139
|
-
- `SPEC.md`, `ROADMAP.md`, `DISCUSS.md`, `UI-SPEC.md` → `spec/`
|
|
140
|
-
- `PLAN.md`, `QUICK.md`, `plan-agents.json`, `quick-agents.json`, `plan-agent-messages/` → `plan/`
|
|
141
|
-
- `OBSERVATIONS.md`, `DEBUG.md`, `FORENSICS.md`, `SUMMARY.md` → `execution/`
|
|
142
|
-
- `VERIFY.md`, `VALIDATION-GAPS.md`, `SECURITY.md`, `UI-REVIEW.md` → `verification/`
|
|
143
|
-
- `checkpoints/`, `CHECKPOINTS.md` → `checkpoints/`
|
|
144
|
-
- `research/`, `RESEARCH.md` → `research/`
|
|
145
|
-
- `workstreams/` → `workstreams/`
|
|
146
|
-
3. Não mover:
|
|
147
|
-
- `.oxe/STATE.md`
|
|
148
|
-
- `.oxe/config.json`
|
|
149
|
-
- `.oxe/codebase/`
|
|
150
|
-
- `.oxe/SESSIONS.md`
|
|
151
|
-
- `.oxe/global/`
|
|
152
|
-
4. No chat, listar:
|
|
153
|
-
- movidos
|
|
154
|
-
- mantidos globais
|
|
155
|
-
- ignorados por inexistência
|
|
156
|
-
</process_migrate>
|
|
157
|
-
|
|
158
|
-
<process_fork>
|
|
159
|
-
## `fork [nome-opcional]`
|
|
160
|
-
|
|
161
|
-
1. Verificar que existe `active_session` em `.oxe/STATE.md`. Se não houver, informar e sair.
|
|
162
|
-
2. Ler `SESSION.md` da sessão ativa; anotar ID de origem (`sNNN`).
|
|
163
|
-
3. Calcular próximo ID `sMMM` a partir de `.oxe/SESSIONS.md`.
|
|
164
|
-
4. Se nome não fornecido, usar `fork-<slug-original>`.
|
|
165
|
-
5. Criar `.oxe/sessions/sMMM-<slug>/` com as mesmas subpastas: `spec/`, `plan/`, `execution/`, `verification/`, `checkpoints/`, `research/`, `artifacts/`, `workstreams/`.
|
|
166
|
-
6. **Copiar** (não mover) todos os arquivos da sessão ativa para a nova sessão, preservando estrutura de diretórios. Não copiar diretórios vazios.
|
|
167
|
-
7. Criar `SESSION.md` na nova sessão a partir de `SESSION.template.md`, com:
|
|
168
|
-
- `forked_from: sNNN`
|
|
169
|
-
- `forked_at: YYYY-MM-DD`
|
|
170
|
-
- `Status: active`
|
|
171
|
-
- `Resumo: Fork de sNNN — <slug-original>`
|
|
172
|
-
8. Atualizar `.oxe/SESSIONS.md`:
|
|
173
|
-
- Adicionar linha da nova sessão (topo, status `active`)
|
|
174
|
-
- **Não** alterar status da sessão original
|
|
175
|
-
9. Atualizar `.oxe/STATE.md`:
|
|
176
|
-
- `active_session: sessions/sMMM-<slug>`
|
|
177
|
-
- `session_id: sMMM`
|
|
178
|
-
10. Registar evento no Histórico da SESSION.md original: `YYYY-MM-DD | Forked → sMMM`
|
|
179
|
-
11. Responder no chat: ID novo, path, contagem de artefatos copiados, e lembrar que a sessão original permanece intacta.
|
|
180
|
-
</process_fork>
|
|
181
|
-
|
|
182
|
-
<process_revert>
|
|
183
|
-
## `revert <checkpoint-slug>`
|
|
184
|
-
|
|
185
|
-
1. Verificar que existe sessão ativa ou operar na raiz `.oxe/`.
|
|
186
|
-
2. Resolver o checkpoint: procurar em `checkpoints/` (do escopo resolvido) arquivo cujo slug corresponda ao argumento. Se não encontrar, listar checkpoints disponíveis e pedir escolha.
|
|
187
|
-
3. Ler o conteúdo do checkpoint (seção `## Snapshot`):
|
|
188
|
-
- Extrair campos de STATE: `phase`, `next_step` (campo `Comando:`), `execute_mode`, `Última onda executada`, `Tarefas concluídas`
|
|
189
|
-
4. Atualizar `.oxe/STATE.md` com os valores do snapshot:
|
|
190
|
-
- Sobrescrever os campos extraídos do snapshot
|
|
191
|
-
- **Não apagar** campos ausentes no snapshot (preservar `active_session`, `session_id`, config refs, etc.)
|
|
192
|
-
5. Registar no Histórico da SESSION.md (se sessão ativa): `YYYY-MM-DD | Revertido para checkpoint <slug>`
|
|
193
|
-
6. Registar evento em `EXECUTION-RUNTIME.md` se existir: `Revert to checkpoint <slug>`
|
|
194
|
-
7. Responder no chat: quais campos foram restaurados, quais permaneceram intactos, e próximo passo sugerido baseado no STATE restaurado.
|
|
195
|
-
</process_revert>
|
|
196
|
-
|
|
197
|
-
<process_default>
|
|
198
|
-
## Sem subcomando
|
|
199
|
-
|
|
200
|
-
- Se houver sessão ativa: executar `status`
|
|
201
|
-
- Se não houver sessão ativa: executar `list`
|
|
202
|
-
</process_default>
|
|
203
|
-
|
|
204
|
-
<success_criteria>
|
|
205
|
-
- [ ] `.oxe/sessions/sNNN-slug/` é o path da sessão criado/consultado.
|
|
206
|
-
- [ ] `active_session` guarda o path relativo completo no `STATE.md` global.
|
|
207
|
-
- [ ] `.oxe/SESSIONS.md` usa as colunas mínimas `ID | Nome | Status | Criada | Última atividade | Resumo | Path`.
|
|
208
|
-
- [ ] `close` arquiva sem apagar artefatos.
|
|
209
|
-
- [ ] `migrate` move só artefatos session-scoped e preserva os globais.
|
|
210
|
-
- [ ] `fork` cria sessão nova com cópia dos artefatos sem modificar a sessão de origem.
|
|
211
|
-
- [ ] `fork` registra `forked_from` na SESSION.md da sessão derivada.
|
|
212
|
-
- [ ] `revert` restaura STATE.md a partir do snapshot do checkpoint, sem apagar campos ausentes.
|
|
213
|
-
</success_criteria>
|
|
1
|
+
# OXE — Workflow: session
|
|
2
|
+
|
|
3
|
+
<objective>
|
|
4
|
+
Gerenciar **sessões OXE** em `.oxe/sessions/` para isolar artefatos por ciclo de trabalho, mantendo **`.oxe/STATE.md`** como índice global e preservando o **modo legado** quando não houver sessão ativa.
|
|
5
|
+
|
|
6
|
+
Subcomandos de sessão:
|
|
7
|
+
- `new <nome>`
|
|
8
|
+
- `list`
|
|
9
|
+
- `switch <id-ou-nome>`
|
|
10
|
+
- `resume <id-ou-nome>`
|
|
11
|
+
- `status`
|
|
12
|
+
- `close`
|
|
13
|
+
- `migrate <nome>`
|
|
14
|
+
- `fork [nome-opcional]`
|
|
15
|
+
- `revert <checkpoint-slug>`
|
|
16
|
+
|
|
17
|
+
Subcomandos de milestone (absorvidos de `/oxe-project` e `/oxe-milestone`):
|
|
18
|
+
- `milestone new [nome]` — iniciar marco de entrega (M-01, M-02, …)
|
|
19
|
+
- `milestone complete` — fechar milestone ativo, arquivar em `.oxe/milestones/M-NN/`
|
|
20
|
+
- `milestone status` — progresso do milestone ativo
|
|
21
|
+
- `milestone audit` — Definition of Done do milestone
|
|
22
|
+
|
|
23
|
+
Subcomandos de workstream (absorvidos de `/oxe-project` e `/oxe-workstream`):
|
|
24
|
+
- `workstream new <nome>` — trilha paralela em `.oxe/workstreams/<nome>/`
|
|
25
|
+
- `workstream switch <nome>` — definir workstream ativo
|
|
26
|
+
- `workstream list` — listar trilhas
|
|
27
|
+
- `workstream close <nome>` — fechar trilha
|
|
28
|
+
|
|
29
|
+
Sem argumento: mostrar status atual (sessão ativa, milestone, workstream ativo).
|
|
30
|
+
|
|
31
|
+
**Nota de compatibilidade v1.1.0:** `/oxe-project`, `/oxe-milestone` e `/oxe-workstream` foram incorporados por este comando. Esses comandos legados continuam funcionando mas exibem aviso de migração.
|
|
32
|
+
</objective>
|
|
33
|
+
|
|
34
|
+
<context>
|
|
35
|
+
- Fonte de regra de path: `oxe/workflows/references/session-path-resolution.md`
|
|
36
|
+
- Template da sessão: `oxe/templates/SESSION.template.md`
|
|
37
|
+
- Índice global: `.oxe/SESSIONS.md`
|
|
38
|
+
- Sessão ativa fica sempre em `.oxe/STATE.md`, campo `active_session`, com path relativo completo: `sessions/sNNN-slug`
|
|
39
|
+
- Sem sessão ativa, os workflows continuam a operar na raiz `.oxe/`
|
|
40
|
+
- Esta entrega é **workflows only**: `oxe-cc status` / `doctor` continuam legados e isso deve ser assumido nesta versão
|
|
41
|
+
</context>
|
|
42
|
+
|
|
43
|
+
<index_format>
|
|
44
|
+
## Formato fixo de `.oxe/SESSIONS.md`
|
|
45
|
+
|
|
46
|
+
```markdown
|
|
47
|
+
# OXE — Índice de sessões
|
|
48
|
+
|
|
49
|
+
| ID | Nome | Status | Criada | Última atividade | Resumo | Path |
|
|
50
|
+
|----|------|--------|--------|------------------|--------|------|
|
|
51
|
+
| s001 | auth-redesign | active | 2026-04-07 | 2026-04-07 | Sessão criada por migrate | `sessions/s001-auth-redesign` |
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
- Linha mais recente no topo
|
|
55
|
+
- `switch` e `resume` atualizam **Última atividade**
|
|
56
|
+
- `close` atualiza **Status** para `archived`
|
|
57
|
+
</index_format>
|
|
58
|
+
|
|
59
|
+
<process_new>
|
|
60
|
+
## `new <nome>`
|
|
61
|
+
|
|
62
|
+
1. Garantir `.oxe/`, `.oxe/sessions/` e `.oxe/global/`.
|
|
63
|
+
2. Normalizar o nome para slug ASCII em kebab-case.
|
|
64
|
+
3. Ler `.oxe/SESSIONS.md` se existir; calcular o próximo ID `sNNN`.
|
|
65
|
+
4. Criar `.oxe/sessions/sNNN-slug/` com:
|
|
66
|
+
- `spec/`
|
|
67
|
+
- `plan/`
|
|
68
|
+
- `execution/`
|
|
69
|
+
- `verification/`
|
|
70
|
+
- `checkpoints/`
|
|
71
|
+
- `research/`
|
|
72
|
+
- `artifacts/`
|
|
73
|
+
- `workstreams/`
|
|
74
|
+
5. Criar `SESSION.md` a partir de `SESSION.template.md`.
|
|
75
|
+
6. Criar ou atualizar `.oxe/SESSIONS.md` com a nova linha no topo.
|
|
76
|
+
7. Atualizar `.oxe/STATE.md`:
|
|
77
|
+
- `active_session: sessions/sNNN-slug`
|
|
78
|
+
- `session_id: sNNN`
|
|
79
|
+
- fase resumida e próximo passo coerentes com a sessão nova
|
|
80
|
+
8. Responder no chat com ID, path da sessão e próximo passo sugerido.
|
|
81
|
+
</process_new>
|
|
82
|
+
|
|
83
|
+
<process_list>
|
|
84
|
+
## `list`
|
|
85
|
+
|
|
86
|
+
1. Ler `.oxe/SESSIONS.md`.
|
|
87
|
+
2. Se o ficheiro não existir, responder que não há sessões registadas.
|
|
88
|
+
3. Exibir a tabela do índice; se o utilizador pedir filtro, aceitar `--status active|archived`.
|
|
89
|
+
</process_list>
|
|
90
|
+
|
|
91
|
+
<process_switch>
|
|
92
|
+
## `switch <id-ou-nome>`
|
|
93
|
+
|
|
94
|
+
1. Ler `.oxe/SESSIONS.md`.
|
|
95
|
+
2. Resolver a sessão por `sNNN`, slug ou nome exibido na tabela.
|
|
96
|
+
3. Atualizar `.oxe/STATE.md` global:
|
|
97
|
+
- `active_session`
|
|
98
|
+
- `session_id`
|
|
99
|
+
- `Última atividade` dessa sessão em `.oxe/SESSIONS.md`
|
|
100
|
+
4. Não mover artefatos; apenas mudar o contexto ativo.
|
|
101
|
+
</process_switch>
|
|
102
|
+
|
|
103
|
+
<process_resume>
|
|
104
|
+
## `resume <id-ou-nome>`
|
|
105
|
+
|
|
106
|
+
- Mesmo comportamento de `switch`
|
|
107
|
+
- Usar wording de retomada no chat, mas sem lógica diferente
|
|
108
|
+
</process_resume>
|
|
109
|
+
|
|
110
|
+
<process_status>
|
|
111
|
+
## `status`
|
|
112
|
+
|
|
113
|
+
1. Ler `.oxe/STATE.md` global.
|
|
114
|
+
2. Se houver `active_session`, abrir `SESSION.md` da sessão ativa e resumir:
|
|
115
|
+
- metadados
|
|
116
|
+
- índice de artefatos
|
|
117
|
+
- tags
|
|
118
|
+
- último evento do histórico
|
|
119
|
+
3. Se não houver sessão ativa, responder com a tabela de `.oxe/SESSIONS.md` (equivalente funcional a `list`).
|
|
120
|
+
</process_status>
|
|
121
|
+
|
|
122
|
+
<process_close>
|
|
123
|
+
## `close`
|
|
124
|
+
|
|
125
|
+
1. Ler `.oxe/STATE.md`; se não houver sessão ativa, pausar e informar.
|
|
126
|
+
2. Abrir `SESSION.md` da sessão ativa e marcar `Status: archived`.
|
|
127
|
+
3. Atualizar `.oxe/SESSIONS.md` com `Status = archived` e `Última atividade = hoje`.
|
|
128
|
+
4. Limpar de `.oxe/STATE.md`:
|
|
129
|
+
- `active_session`
|
|
130
|
+
- `session_id`
|
|
131
|
+
5. Responder com a sessão encerrada e lembrar que sessões arquivadas continuam legíveis.
|
|
132
|
+
</process_close>
|
|
133
|
+
|
|
134
|
+
<process_migrate>
|
|
135
|
+
## `migrate <nome>`
|
|
136
|
+
|
|
137
|
+
1. Executar logicamente `new <nome>` para abrir uma nova sessão.
|
|
138
|
+
2. Mover apenas artefatos session-scoped existentes da raiz `.oxe/`:
|
|
139
|
+
- `SPEC.md`, `ROADMAP.md`, `DISCUSS.md`, `UI-SPEC.md` → `spec/`
|
|
140
|
+
- `PLAN.md`, `QUICK.md`, `plan-agents.json`, `quick-agents.json`, `plan-agent-messages/` → `plan/`
|
|
141
|
+
- `OBSERVATIONS.md`, `DEBUG.md`, `FORENSICS.md`, `SUMMARY.md` → `execution/`
|
|
142
|
+
- `VERIFY.md`, `VALIDATION-GAPS.md`, `SECURITY.md`, `UI-REVIEW.md` → `verification/`
|
|
143
|
+
- `checkpoints/`, `CHECKPOINTS.md` → `checkpoints/`
|
|
144
|
+
- `research/`, `RESEARCH.md` → `research/`
|
|
145
|
+
- `workstreams/` → `workstreams/`
|
|
146
|
+
3. Não mover:
|
|
147
|
+
- `.oxe/STATE.md`
|
|
148
|
+
- `.oxe/config.json`
|
|
149
|
+
- `.oxe/codebase/`
|
|
150
|
+
- `.oxe/SESSIONS.md`
|
|
151
|
+
- `.oxe/global/`
|
|
152
|
+
4. No chat, listar:
|
|
153
|
+
- movidos
|
|
154
|
+
- mantidos globais
|
|
155
|
+
- ignorados por inexistência
|
|
156
|
+
</process_migrate>
|
|
157
|
+
|
|
158
|
+
<process_fork>
|
|
159
|
+
## `fork [nome-opcional]`
|
|
160
|
+
|
|
161
|
+
1. Verificar que existe `active_session` em `.oxe/STATE.md`. Se não houver, informar e sair.
|
|
162
|
+
2. Ler `SESSION.md` da sessão ativa; anotar ID de origem (`sNNN`).
|
|
163
|
+
3. Calcular próximo ID `sMMM` a partir de `.oxe/SESSIONS.md`.
|
|
164
|
+
4. Se nome não fornecido, usar `fork-<slug-original>`.
|
|
165
|
+
5. Criar `.oxe/sessions/sMMM-<slug>/` com as mesmas subpastas: `spec/`, `plan/`, `execution/`, `verification/`, `checkpoints/`, `research/`, `artifacts/`, `workstreams/`.
|
|
166
|
+
6. **Copiar** (não mover) todos os arquivos da sessão ativa para a nova sessão, preservando estrutura de diretórios. Não copiar diretórios vazios.
|
|
167
|
+
7. Criar `SESSION.md` na nova sessão a partir de `SESSION.template.md`, com:
|
|
168
|
+
- `forked_from: sNNN`
|
|
169
|
+
- `forked_at: YYYY-MM-DD`
|
|
170
|
+
- `Status: active`
|
|
171
|
+
- `Resumo: Fork de sNNN — <slug-original>`
|
|
172
|
+
8. Atualizar `.oxe/SESSIONS.md`:
|
|
173
|
+
- Adicionar linha da nova sessão (topo, status `active`)
|
|
174
|
+
- **Não** alterar status da sessão original
|
|
175
|
+
9. Atualizar `.oxe/STATE.md`:
|
|
176
|
+
- `active_session: sessions/sMMM-<slug>`
|
|
177
|
+
- `session_id: sMMM`
|
|
178
|
+
10. Registar evento no Histórico da SESSION.md original: `YYYY-MM-DD | Forked → sMMM`
|
|
179
|
+
11. Responder no chat: ID novo, path, contagem de artefatos copiados, e lembrar que a sessão original permanece intacta.
|
|
180
|
+
</process_fork>
|
|
181
|
+
|
|
182
|
+
<process_revert>
|
|
183
|
+
## `revert <checkpoint-slug>`
|
|
184
|
+
|
|
185
|
+
1. Verificar que existe sessão ativa ou operar na raiz `.oxe/`.
|
|
186
|
+
2. Resolver o checkpoint: procurar em `checkpoints/` (do escopo resolvido) arquivo cujo slug corresponda ao argumento. Se não encontrar, listar checkpoints disponíveis e pedir escolha.
|
|
187
|
+
3. Ler o conteúdo do checkpoint (seção `## Snapshot`):
|
|
188
|
+
- Extrair campos de STATE: `phase`, `next_step` (campo `Comando:`), `execute_mode`, `Última onda executada`, `Tarefas concluídas`
|
|
189
|
+
4. Atualizar `.oxe/STATE.md` com os valores do snapshot:
|
|
190
|
+
- Sobrescrever os campos extraídos do snapshot
|
|
191
|
+
- **Não apagar** campos ausentes no snapshot (preservar `active_session`, `session_id`, config refs, etc.)
|
|
192
|
+
5. Registar no Histórico da SESSION.md (se sessão ativa): `YYYY-MM-DD | Revertido para checkpoint <slug>`
|
|
193
|
+
6. Registar evento em `EXECUTION-RUNTIME.md` se existir: `Revert to checkpoint <slug>`
|
|
194
|
+
7. Responder no chat: quais campos foram restaurados, quais permaneceram intactos, e próximo passo sugerido baseado no STATE restaurado.
|
|
195
|
+
</process_revert>
|
|
196
|
+
|
|
197
|
+
<process_default>
|
|
198
|
+
## Sem subcomando
|
|
199
|
+
|
|
200
|
+
- Se houver sessão ativa: executar `status`
|
|
201
|
+
- Se não houver sessão ativa: executar `list`
|
|
202
|
+
</process_default>
|
|
203
|
+
|
|
204
|
+
<success_criteria>
|
|
205
|
+
- [ ] `.oxe/sessions/sNNN-slug/` é o path da sessão criado/consultado.
|
|
206
|
+
- [ ] `active_session` guarda o path relativo completo no `STATE.md` global.
|
|
207
|
+
- [ ] `.oxe/SESSIONS.md` usa as colunas mínimas `ID | Nome | Status | Criada | Última atividade | Resumo | Path`.
|
|
208
|
+
- [ ] `close` arquiva sem apagar artefatos.
|
|
209
|
+
- [ ] `migrate` move só artefatos session-scoped e preserva os globais.
|
|
210
|
+
- [ ] `fork` cria sessão nova com cópia dos artefatos sem modificar a sessão de origem.
|
|
211
|
+
- [ ] `fork` registra `forked_from` na SESSION.md da sessão derivada.
|
|
212
|
+
- [ ] `revert` restaura STATE.md a partir do snapshot do checkpoint, sem apagar campos ausentes.
|
|
213
|
+
</success_criteria>
|