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.
Files changed (281) hide show
  1. package/.cursor/commands/oxe-ask.md +2 -2
  2. package/.cursor/commands/oxe-capabilities.md +2 -2
  3. package/.cursor/commands/oxe-checkpoint.md +2 -2
  4. package/.cursor/commands/oxe-compact.md +2 -2
  5. package/.cursor/commands/oxe-dashboard.md +2 -2
  6. package/.cursor/commands/oxe-debug.md +2 -2
  7. package/.cursor/commands/oxe-discuss.md +2 -2
  8. package/.cursor/commands/oxe-execute.md +5 -2
  9. package/.cursor/commands/oxe-forensics.md +2 -2
  10. package/.cursor/commands/oxe-help.md +2 -2
  11. package/.cursor/commands/oxe-loop.md +2 -2
  12. package/.cursor/commands/oxe-milestone.md +2 -2
  13. package/.cursor/commands/oxe-next.md +2 -2
  14. package/.cursor/commands/oxe-obs.md +2 -2
  15. package/.cursor/commands/oxe-plan-agent.md +2 -2
  16. package/.cursor/commands/oxe-plan.md +2 -2
  17. package/.cursor/commands/oxe-project.md +2 -2
  18. package/.cursor/commands/oxe-quick.md +2 -2
  19. package/.cursor/commands/oxe-research.md +2 -2
  20. package/.cursor/commands/oxe-retro.md +2 -2
  21. package/.cursor/commands/oxe-review-pr.md +2 -2
  22. package/.cursor/commands/oxe-route.md +2 -2
  23. package/.cursor/commands/oxe-scan.md +2 -2
  24. package/.cursor/commands/oxe-security.md +2 -2
  25. package/.cursor/commands/oxe-session.md +2 -2
  26. package/.cursor/commands/oxe-ship.md +2 -2
  27. package/.cursor/commands/oxe-skill.md +2 -2
  28. package/.cursor/commands/oxe-spec.md +2 -2
  29. package/.cursor/commands/oxe-ui-review.md +2 -2
  30. package/.cursor/commands/oxe-ui-spec.md +2 -2
  31. package/.cursor/commands/oxe-update.md +2 -2
  32. package/.cursor/commands/oxe-validate-gaps.md +2 -2
  33. package/.cursor/commands/oxe-verify.md +5 -2
  34. package/.cursor/commands/oxe-workstream.md +2 -2
  35. package/.cursor/commands/oxe.md +2 -2
  36. package/.github/copilot-instructions.md +13 -13
  37. package/.github/prompts/oxe-ask.prompt.md +2 -2
  38. package/.github/prompts/oxe-capabilities.prompt.md +2 -2
  39. package/.github/prompts/oxe-checkpoint.prompt.md +2 -2
  40. package/.github/prompts/oxe-compact.prompt.md +2 -2
  41. package/.github/prompts/oxe-dashboard.prompt.md +2 -2
  42. package/.github/prompts/oxe-debug.prompt.md +2 -2
  43. package/.github/prompts/oxe-discuss.prompt.md +2 -2
  44. package/.github/prompts/oxe-execute.prompt.md +5 -2
  45. package/.github/prompts/oxe-forensics.prompt.md +2 -2
  46. package/.github/prompts/oxe-help.prompt.md +2 -2
  47. package/.github/prompts/oxe-loop.prompt.md +2 -2
  48. package/.github/prompts/oxe-milestone.prompt.md +2 -2
  49. package/.github/prompts/oxe-next.prompt.md +2 -2
  50. package/.github/prompts/oxe-obs.prompt.md +2 -2
  51. package/.github/prompts/oxe-plan-agent.prompt.md +2 -2
  52. package/.github/prompts/oxe-plan.prompt.md +2 -2
  53. package/.github/prompts/oxe-project.prompt.md +2 -2
  54. package/.github/prompts/oxe-quick.prompt.md +2 -2
  55. package/.github/prompts/oxe-research.prompt.md +2 -2
  56. package/.github/prompts/oxe-retro.prompt.md +2 -2
  57. package/.github/prompts/oxe-review-pr.prompt.md +2 -2
  58. package/.github/prompts/oxe-route.prompt.md +2 -2
  59. package/.github/prompts/oxe-scan.prompt.md +2 -2
  60. package/.github/prompts/oxe-security.prompt.md +2 -2
  61. package/.github/prompts/oxe-session.prompt.md +2 -2
  62. package/.github/prompts/oxe-ship.prompt.md +2 -2
  63. package/.github/prompts/oxe-skill.prompt.md +2 -2
  64. package/.github/prompts/oxe-spec.prompt.md +2 -2
  65. package/.github/prompts/oxe-ui-review.prompt.md +2 -2
  66. package/.github/prompts/oxe-ui-spec.prompt.md +2 -2
  67. package/.github/prompts/oxe-update.prompt.md +2 -2
  68. package/.github/prompts/oxe-validate-gaps.prompt.md +2 -2
  69. package/.github/prompts/oxe-verify.prompt.md +5 -2
  70. package/.github/prompts/oxe-workstream.prompt.md +2 -2
  71. package/.github/prompts/oxe.prompt.md +2 -2
  72. package/AGENTS.md +5 -3
  73. package/CHANGELOG.md +72 -10
  74. package/LICENSE +21 -674
  75. package/README.md +631 -535
  76. package/bin/banner.txt +6 -6
  77. package/bin/lib/oxe-agent-install.cjs +69 -69
  78. package/bin/lib/oxe-azure.cjs +1445 -1445
  79. package/bin/lib/oxe-context-engine.cjs +867 -867
  80. package/bin/lib/oxe-dashboard.cjs +76 -28
  81. package/bin/lib/oxe-operational.cjs +2144 -1340
  82. package/bin/lib/oxe-project-health.cjs +483 -1
  83. package/bin/lib/oxe-runtime-semantics.cjs +12 -0
  84. package/bin/oxe-cc.js +554 -152
  85. package/commands/oxe/ask.md +2 -2
  86. package/commands/oxe/capabilities.md +2 -2
  87. package/commands/oxe/checkpoint.md +2 -2
  88. package/commands/oxe/compact.md +2 -2
  89. package/commands/oxe/dashboard.md +2 -2
  90. package/commands/oxe/debug.md +2 -2
  91. package/commands/oxe/discuss.md +2 -2
  92. package/commands/oxe/execute.md +5 -2
  93. package/commands/oxe/forensics.md +2 -2
  94. package/commands/oxe/help.md +2 -2
  95. package/commands/oxe/loop.md +2 -2
  96. package/commands/oxe/milestone.md +2 -2
  97. package/commands/oxe/next.md +2 -2
  98. package/commands/oxe/obs.md +2 -2
  99. package/commands/oxe/oxe.md +2 -2
  100. package/commands/oxe/plan-agent.md +2 -2
  101. package/commands/oxe/plan.md +2 -2
  102. package/commands/oxe/project.md +2 -2
  103. package/commands/oxe/quick.md +2 -2
  104. package/commands/oxe/research.md +2 -2
  105. package/commands/oxe/retro.md +2 -2
  106. package/commands/oxe/review-pr.md +2 -2
  107. package/commands/oxe/route.md +2 -2
  108. package/commands/oxe/scan.md +2 -2
  109. package/commands/oxe/security.md +2 -2
  110. package/commands/oxe/session.md +2 -2
  111. package/commands/oxe/ship.md +2 -2
  112. package/commands/oxe/skill.md +2 -2
  113. package/commands/oxe/spec.md +2 -2
  114. package/commands/oxe/ui-review.md +2 -2
  115. package/commands/oxe/ui-spec.md +2 -2
  116. package/commands/oxe/update.md +2 -2
  117. package/commands/oxe/validate-gaps.md +2 -2
  118. package/commands/oxe/verify.md +5 -2
  119. package/commands/oxe/workstream.md +2 -2
  120. package/lib/runtime/delivery/branch-manager.d.ts +1 -0
  121. package/lib/runtime/delivery/branch-manager.js +7 -0
  122. package/lib/runtime/delivery/ci-checks.js +34 -1
  123. package/lib/runtime/delivery/delivery-records.d.ts +34 -0
  124. package/lib/runtime/delivery/delivery-records.js +48 -0
  125. package/lib/runtime/delivery/index.d.ts +1 -0
  126. package/lib/runtime/delivery/index.js +1 -0
  127. package/lib/runtime/delivery/promotion-pipeline.d.ts +26 -2
  128. package/lib/runtime/delivery/promotion-pipeline.js +111 -14
  129. package/lib/runtime/gate/gate-manager.d.ts +41 -0
  130. package/lib/runtime/gate/gate-manager.js +108 -1
  131. package/lib/runtime/index.d.ts +2 -2
  132. package/lib/runtime/index.js +3 -1
  133. package/lib/runtime/models/gate-decision.d.ts +4 -1
  134. package/lib/runtime/models/workspace.d.ts +3 -0
  135. package/lib/runtime/plugins/capability-adapter.d.ts +12 -0
  136. package/lib/runtime/plugins/capability-adapter.js +204 -0
  137. package/lib/runtime/plugins/capability-matrix.d.ts +5 -0
  138. package/lib/runtime/plugins/capability-matrix.js +48 -17
  139. package/lib/runtime/plugins/index.d.ts +1 -0
  140. package/lib/runtime/plugins/index.js +1 -0
  141. package/lib/runtime/plugins/plugin-abi.d.ts +2 -0
  142. package/lib/runtime/plugins/plugin-manifest.d.ts +1 -1
  143. package/lib/runtime/plugins/plugin-manifest.js +6 -2
  144. package/lib/runtime/plugins/plugin-registry.d.ts +46 -0
  145. package/lib/runtime/plugins/plugin-registry.js +79 -2
  146. package/lib/runtime/policy/policy-engine.d.ts +19 -0
  147. package/lib/runtime/policy/policy-engine.js +76 -4
  148. package/lib/runtime/projection/projection-engine.d.ts +9 -1
  149. package/lib/runtime/projection/projection-engine.js +73 -3
  150. package/lib/runtime/scheduler/multi-agent-coordinator.d.ts +43 -1
  151. package/lib/runtime/scheduler/multi-agent-coordinator.js +151 -39
  152. package/lib/runtime/scheduler/run-journal.d.ts +1 -1
  153. package/lib/runtime/scheduler/scheduler.d.ts +19 -1
  154. package/lib/runtime/scheduler/scheduler.js +258 -13
  155. package/lib/runtime/verification/verification-compiler.d.ts +43 -0
  156. package/lib/runtime/verification/verification-compiler.js +137 -0
  157. package/lib/runtime/verification/verification-manifest.d.ts +9 -0
  158. package/lib/runtime/verification/verification-manifest.js +56 -6
  159. package/lib/runtime/workspace/strategies/ephemeral-container.d.ts +1 -0
  160. package/lib/runtime/workspace/strategies/ephemeral-container.js +4 -0
  161. package/lib/runtime/workspace/strategies/git-worktree.d.ts +1 -0
  162. package/lib/runtime/workspace/strategies/git-worktree.js +2 -0
  163. package/lib/runtime/workspace/strategies/inplace.d.ts +1 -0
  164. package/lib/runtime/workspace/strategies/inplace.js +2 -0
  165. package/lib/runtime/workspace/workspace-manager.d.ts +2 -1
  166. package/lib/sdk/README.md +20 -8
  167. package/lib/sdk/index.cjs +33 -24
  168. package/lib/sdk/index.d.ts +149 -14
  169. package/oxe/templates/ACTIVE-RUN.template.json +32 -32
  170. package/oxe/templates/CAPABILITIES.template.md +7 -7
  171. package/oxe/templates/CAPABILITY.template.md +45 -45
  172. package/oxe/templates/CHECKPOINTS.template.md +7 -7
  173. package/oxe/templates/EXECUTION-RUNTIME.template.md +68 -68
  174. package/oxe/templates/HYPOTHESES.template.md +33 -33
  175. package/oxe/templates/LESSONS-METRICS.template.json +13 -13
  176. package/oxe/templates/NOTES.template.md +16 -16
  177. package/oxe/templates/PLAN-REVIEW.template.md +31 -31
  178. package/oxe/templates/SESSION.template.md +34 -34
  179. package/oxe/templates/SKILL.template.md +26 -26
  180. package/oxe/templates/STATE.md +55 -55
  181. package/oxe/templates/WORKFLOW_AUTHORING.md +18 -18
  182. package/oxe/workflows/ask.md +96 -96
  183. package/oxe/workflows/capabilities.md +25 -25
  184. package/oxe/workflows/dashboard.md +33 -33
  185. package/oxe/workflows/discuss.md +12 -12
  186. package/oxe/workflows/execute.md +14 -0
  187. package/oxe/workflows/help.md +352 -352
  188. package/oxe/workflows/next.md +22 -22
  189. package/oxe/workflows/oxe.md +6 -6
  190. package/oxe/workflows/plan-agent.md +9 -9
  191. package/oxe/workflows/plan.md +51 -20
  192. package/oxe/workflows/quick.md +10 -10
  193. package/oxe/workflows/references/reasoning-discovery.md +28 -28
  194. package/oxe/workflows/references/reasoning-execution.md +29 -29
  195. package/oxe/workflows/references/reasoning-planning.md +32 -32
  196. package/oxe/workflows/references/reasoning-review.md +29 -29
  197. package/oxe/workflows/references/reasoning-status.md +24 -24
  198. package/oxe/workflows/references/robustness-elevation.md +295 -295
  199. package/oxe/workflows/references/workflow-runtime-contracts.json +952 -930
  200. package/oxe/workflows/route.md +16 -16
  201. package/oxe/workflows/session.md +213 -213
  202. package/oxe/workflows/ship.md +142 -142
  203. package/oxe/workflows/skill.md +44 -44
  204. package/oxe/workflows/ui-review.md +36 -36
  205. package/oxe/workflows/verify-audit.md +73 -73
  206. package/oxe/workflows/verify.md +10 -0
  207. package/package.json +92 -92
  208. package/packages/runtime/package.json +16 -15
  209. package/packages/runtime/src/audit/audit-trail.ts +243 -243
  210. package/packages/runtime/src/audit/index.ts +2 -2
  211. package/packages/runtime/src/audit/policy-pack.ts +62 -62
  212. package/packages/runtime/src/compiler/graph-compiler.ts +245 -245
  213. package/packages/runtime/src/compiler/index.ts +1 -1
  214. package/packages/runtime/src/context/context-pack-builder.ts +259 -259
  215. package/packages/runtime/src/context/context-pack-store.ts +197 -197
  216. package/packages/runtime/src/context/context-profiles.ts +60 -60
  217. package/packages/runtime/src/context/index.ts +3 -3
  218. package/packages/runtime/src/decision/decision-engine.ts +174 -174
  219. package/packages/runtime/src/decision/decision-memo.ts +211 -211
  220. package/packages/runtime/src/decision/index.ts +2 -2
  221. package/packages/runtime/src/delivery/branch-manager.ts +91 -84
  222. package/packages/runtime/src/delivery/ci-checks.ts +285 -252
  223. package/packages/runtime/src/delivery/delivery-records.ts +75 -0
  224. package/packages/runtime/src/delivery/index.ts +5 -4
  225. package/packages/runtime/src/delivery/pr-manager.ts +112 -112
  226. package/packages/runtime/src/delivery/promotion-pipeline.ts +334 -180
  227. package/packages/runtime/src/events/bus.ts +92 -92
  228. package/packages/runtime/src/events/catalog.ts +29 -29
  229. package/packages/runtime/src/events/envelope.ts +14 -14
  230. package/packages/runtime/src/events/index.ts +3 -3
  231. package/packages/runtime/src/evidence/evidence-store.ts +130 -130
  232. package/packages/runtime/src/evidence/index.ts +1 -1
  233. package/packages/runtime/src/gate/gate-manager.ts +289 -137
  234. package/packages/runtime/src/gate/index.ts +1 -1
  235. package/packages/runtime/src/index.ts +41 -37
  236. package/packages/runtime/src/models/attempt.ts +19 -19
  237. package/packages/runtime/src/models/evidence.ts +21 -21
  238. package/packages/runtime/src/models/gate-decision.ts +25 -21
  239. package/packages/runtime/src/models/index.ts +8 -8
  240. package/packages/runtime/src/models/run.ts +24 -24
  241. package/packages/runtime/src/models/session.ts +11 -11
  242. package/packages/runtime/src/models/verification-result.ts +10 -10
  243. package/packages/runtime/src/models/work-item.ts +25 -25
  244. package/packages/runtime/src/models/workspace.ts +31 -28
  245. package/packages/runtime/src/plugins/capability-adapter.ts +206 -0
  246. package/packages/runtime/src/plugins/capability-matrix.ts +126 -83
  247. package/packages/runtime/src/plugins/index.ts +5 -4
  248. package/packages/runtime/src/plugins/plugin-abi.ts +97 -95
  249. package/packages/runtime/src/plugins/plugin-manifest.ts +118 -113
  250. package/packages/runtime/src/plugins/plugin-registry.ts +232 -124
  251. package/packages/runtime/src/policy/index.ts +1 -1
  252. package/packages/runtime/src/policy/policy-engine.ts +330 -244
  253. package/packages/runtime/src/projection/index.ts +1 -1
  254. package/packages/runtime/src/projection/projection-engine.ts +328 -249
  255. package/packages/runtime/src/reducers/debug-reducer.ts +36 -36
  256. package/packages/runtime/src/reducers/index.ts +2 -2
  257. package/packages/runtime/src/reducers/run-state-reducer.ts +269 -269
  258. package/packages/runtime/src/scheduler/agent-registry.ts +132 -132
  259. package/packages/runtime/src/scheduler/agent-roles.ts +109 -109
  260. package/packages/runtime/src/scheduler/index.ts +4 -4
  261. package/packages/runtime/src/scheduler/multi-agent-coordinator.ts +521 -333
  262. package/packages/runtime/src/scheduler/run-journal.ts +62 -62
  263. package/packages/runtime/src/scheduler/scheduler.ts +722 -441
  264. package/packages/runtime/src/verification/index.ts +2 -2
  265. package/packages/runtime/src/verification/verification-compiler.ts +436 -225
  266. package/packages/runtime/src/verification/verification-manifest.ts +252 -192
  267. package/packages/runtime/src/workspace/index.ts +5 -5
  268. package/packages/runtime/src/workspace/strategies/ephemeral-container.ts +126 -121
  269. package/packages/runtime/src/workspace/strategies/git-worktree.ts +79 -77
  270. package/packages/runtime/src/workspace/strategies/inplace.ts +38 -35
  271. package/packages/runtime/src/workspace/workspace-manager.ts +16 -15
  272. package/packages/runtime/tsconfig.json +17 -17
  273. package/vscode-extension/.vscodeignore +7 -7
  274. package/vscode-extension/LICENSE +21 -0
  275. package/vscode-extension/oxe-agents-1.0.0.vsix +0 -0
  276. package/vscode-extension/oxe-agents-1.4.0.vsix +0 -0
  277. package/vscode-extension/package.json +184 -184
  278. package/vscode-extension/src/extension.js +310 -310
  279. package/vscode-extension/src/shared/contextLoader.js +137 -137
  280. package/vscode-extension/src/shared/contractBuilder.js +159 -159
  281. package/vscode-extension/src/shared/stateReader.js +101 -101
@@ -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>
@@ -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>