@orkastery/cli 0.2.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (257) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +86 -65
  3. package/adapters/README.md +30 -15
  4. package/adapters/claude-code/.claude-plugin/plugin.json +11 -5
  5. package/adapters/claude-code/README.md +110 -8
  6. package/adapters/claude-code/commands/check.md +4 -3
  7. package/adapters/claude-code/commands/goal.md +3 -2
  8. package/adapters/claude-code/commands/master.md +3 -2
  9. package/adapters/claude-code/commands/onboarding.md +21 -0
  10. package/adapters/claude-code/commands/ork.md +99 -27
  11. package/adapters/claude-code/hooks/hooks.json +6 -1
  12. package/adapters/claude-code/hooks/ork-guard.js +1 -1
  13. package/adapters/claude-code/hooks/ork-sensor.js +66 -0
  14. package/adapters/codex/skills/ork/SKILL.md +57 -0
  15. package/adapters/hermes/README.md +161 -0
  16. package/adapters/hermes/bin/ork-abrir-thread.sh +2 -0
  17. package/adapters/hermes/bin/ork-brain.sh +4 -0
  18. package/adapters/hermes/bin/ork-hitl-answer.py +82 -0
  19. package/adapters/hermes/bin/ork-maestro.sh +6 -0
  20. package/adapters/hermes/bin/ork-master-enviar.py +84 -0
  21. package/adapters/hermes/bin/ork-pulse-enviar.py +47 -0
  22. package/adapters/hermes/hermes.plugin.json +24 -4
  23. package/adapters/hermes/hitl-ingress/__init__.py +356 -0
  24. package/adapters/hermes/hitl-ingress/plugin.yaml +4 -0
  25. package/adapters/hermes/skills/orkastery-devmaster/SKILL.md +75 -22
  26. package/adapters/openclaw/README.md +136 -27
  27. package/adapters/openclaw/bin/ork-brain.sh +4 -0
  28. package/adapters/openclaw/construir.sh +19 -0
  29. package/adapters/openclaw/dist/hitl-ingress.js +199 -0
  30. package/adapters/openclaw/dist/index.js +437 -0
  31. package/adapters/openclaw/openclaw.plugin.json +39 -134
  32. package/adapters/openclaw/package.json +26 -0
  33. package/adapters/openclaw/src/hitl-ingress.ts +180 -0
  34. package/adapters/openclaw/src/index.ts +460 -0
  35. package/adapters/openclaw/src/tipos-openclaw.d.ts +58 -0
  36. package/adapters/openclaw/tsconfig.json +15 -0
  37. package/assets/docs/markdownlint-cli2.jsonc +22 -0
  38. package/assets/docs/padroes/documentacao-de-produto.md +133 -0
  39. package/assets/docs/padroes/roadmap-de-produto.md +98 -0
  40. package/assets/docs/produto/README.md +14 -0
  41. package/assets/docs/produto/_modelo-feature.md +59 -0
  42. package/assets/docs/roadmap/README.md +14 -0
  43. package/assets/docs/roadmap/_modelo-item.md +73 -0
  44. package/assets/orkmind-native-schema.json +32 -0
  45. package/assets/orkmind_bridge.py +357 -0
  46. package/assets/orkmind_fixture.py +67 -0
  47. package/assets/orkmind_prospective.py +138 -0
  48. package/assets/reference-tariffs-i07.json +23 -0
  49. package/dist/adapters/claude-bg.js +488 -39
  50. package/dist/adapters/codex-controller-sensor.js +449 -0
  51. package/dist/adapters/codex-controller-worker.js +361 -0
  52. package/dist/adapters/codex-controller.js +252 -0
  53. package/dist/adapters/codex-events.js +205 -0
  54. package/dist/adapters/codex-question.js +26 -0
  55. package/dist/adapters/codex-runner.js +133 -0
  56. package/dist/adapters/codex.js +394 -0
  57. package/dist/agents-md.js +84 -0
  58. package/dist/auditoria.js +12 -9
  59. package/dist/auditrun.js +5 -4
  60. package/dist/board.js +174 -23
  61. package/dist/branch-de-estado.js +136 -0
  62. package/dist/canarios-hitl.js +177 -0
  63. package/dist/canarios-i43.js +543 -0
  64. package/dist/canarios-pulse.js +147 -0
  65. package/dist/canarios-sensores.js +129 -0
  66. package/dist/canarios.js +111 -2
  67. package/dist/catalogo.js +9 -0
  68. package/dist/ci.js +223 -0
  69. package/dist/ciclos.js +2 -1
  70. package/dist/claim-lint.js +64 -0
  71. package/dist/claims.js +60 -0
  72. package/dist/company-brain-capture.js +195 -0
  73. package/dist/company-brain-cli.js +123 -0
  74. package/dist/company-brain-client.js +61 -0
  75. package/dist/company-brain-contract.js +166 -0
  76. package/dist/company-brain-journal.js +192 -0
  77. package/dist/company-brain-mcp.js +33 -0
  78. package/dist/company-brain-migration.js +60 -0
  79. package/dist/company-brain-source.js +177 -0
  80. package/dist/company-brain-worker.js +18 -0
  81. package/dist/conducao-texto.js +61 -0
  82. package/dist/conducao.js +876 -0
  83. package/dist/contrato-publico.js +39 -0
  84. package/dist/creation-operation-store.js +251 -0
  85. package/dist/creation-operation.js +148 -0
  86. package/dist/decisao-autonoma.js +183 -0
  87. package/dist/delegation.js +79 -0
  88. package/dist/demo.js +120 -0
  89. package/dist/docs.js +828 -0
  90. package/dist/doctor.js +184 -25
  91. package/dist/entrega-pr.js +117 -0
  92. package/dist/escopo-escrita.js +71 -0
  93. package/dist/estado-thread.js +222 -0
  94. package/dist/evalrunner.js +12 -0
  95. package/dist/fabrica-estado.js +329 -0
  96. package/dist/fabrica-publicar.js +76 -0
  97. package/dist/fix.js +22 -1
  98. package/dist/gates.js +59 -11
  99. package/dist/handoff.js +39 -23
  100. package/dist/hitl-canais.js +333 -0
  101. package/dist/hitl-classificacao.js +131 -0
  102. package/dist/hitl-contract.js +465 -0
  103. package/dist/hitl-estado.js +136 -0
  104. package/dist/hitl-gates.js +554 -0
  105. package/dist/hitl-ingress-receipt.js +382 -0
  106. package/dist/hitl-local-atestado.js +57 -0
  107. package/dist/hitl-local-receipt.js +328 -0
  108. package/dist/hitl-local.js +143 -0
  109. package/dist/hitl-lock.js +139 -0
  110. package/dist/hitl-lote.js +223 -0
  111. package/dist/hitl-native-offer.js +97 -0
  112. package/dist/hitl-native.js +65 -0
  113. package/dist/hitl-presentation.js +209 -0
  114. package/dist/hitl-public-receipt.js +176 -0
  115. package/dist/hitl-resumo.js +209 -0
  116. package/dist/hitl-sessions.js +475 -0
  117. package/dist/hitl.js +711 -0
  118. package/dist/horario.js +269 -0
  119. package/dist/hosts.js +198 -22
  120. package/dist/index.js +1741 -94
  121. package/dist/indice.js +99 -0
  122. package/dist/init.js +28 -3
  123. package/dist/integracoes-locais.js +17 -0
  124. package/dist/leases.js +65 -21
  125. package/dist/ledger-stats.js +272 -0
  126. package/dist/ledger.js +109 -2
  127. package/dist/licoes.js +221 -0
  128. package/dist/liveness.js +218 -0
  129. package/dist/maestro-actions.js +51 -0
  130. package/dist/maestro-authority.js +152 -0
  131. package/dist/maestro-cli.js +97 -0
  132. package/dist/maestro-contract.js +55 -0
  133. package/dist/maestro-discovery.js +132 -0
  134. package/dist/maestro-runtime.js +268 -0
  135. package/dist/maestro-snapshot.js +86 -0
  136. package/dist/maestro-sources.js +224 -0
  137. package/dist/manifest.js +165 -6
  138. package/dist/maquina.js +102 -0
  139. package/dist/master-audit.js +101 -0
  140. package/dist/master-batch.js +43 -0
  141. package/dist/master-digest.js +149 -0
  142. package/dist/master-migracao.js +155 -0
  143. package/dist/master.js +361 -77
  144. package/dist/mcp-artifacts.js +234 -0
  145. package/dist/mcp-git.js +433 -0
  146. package/dist/mcp-install.js +310 -0
  147. package/dist/mcp-maestro.js +25 -0
  148. package/dist/mcp-server.js +469 -0
  149. package/dist/mcp-ship.js +436 -0
  150. package/dist/mcp-verify.js +173 -0
  151. package/dist/memoria-humana.js +207 -0
  152. package/dist/memoria.js +314 -78
  153. package/dist/memory-migration.js +279 -0
  154. package/dist/memory-prospective.js +148 -0
  155. package/dist/modos-migracao.js +191 -0
  156. package/dist/modos.js +151 -15
  157. package/dist/monitor-lock.js +110 -0
  158. package/dist/objective.js +449 -0
  159. package/dist/ocupacao.js +267 -0
  160. package/dist/onboarding.js +303 -0
  161. package/dist/orkmind.js +389 -90
  162. package/dist/orquestracao.js +96 -69
  163. package/dist/phase.js +612 -151
  164. package/dist/playbook-capabilities.js +150 -0
  165. package/dist/playbook-contracts.js +188 -0
  166. package/dist/policies.js +72 -0
  167. package/dist/portfolio-context.js +61 -0
  168. package/dist/portfolio.js +180 -0
  169. package/dist/preflight.js +207 -0
  170. package/dist/process-audit.js +112 -0
  171. package/dist/project-state.js +93 -0
  172. package/dist/prompts.js +25 -5
  173. package/dist/prova-minima.js +112 -0
  174. package/dist/pulse-cadencia.js +163 -0
  175. package/dist/pulse-consentimento.js +260 -0
  176. package/dist/pulse-delivery.js +323 -0
  177. package/dist/pulse-resposta.js +542 -0
  178. package/dist/pulse.js +262 -0
  179. package/dist/ratelimit.js +35 -2
  180. package/dist/recall.js +80 -3
  181. package/dist/redacao-saida.js +45 -0
  182. package/dist/redacao-url.js +66 -0
  183. package/dist/retry.js +640 -118
  184. package/dist/roadmap-reservas.js +243 -0
  185. package/dist/runtime-ambiente.js +38 -0
  186. package/dist/runtime-context.js +215 -0
  187. package/dist/runtime-profiles.js +869 -0
  188. package/dist/runtimes.js +103 -0
  189. package/dist/sandbox.js +9 -0
  190. package/dist/session-events.js +203 -0
  191. package/dist/session-watcher-claude.js +637 -0
  192. package/dist/session-watcher.js +700 -0
  193. package/dist/sessoes-adopt.js +154 -0
  194. package/dist/sessoes-inventario.js +159 -0
  195. package/dist/sessoes.js +16 -35
  196. package/dist/setup.js +691 -0
  197. package/dist/ship.js +168 -19
  198. package/dist/slug.js +1 -1
  199. package/dist/thread-close.js +115 -0
  200. package/dist/thread.js +142 -28
  201. package/dist/tokens.js +1 -1
  202. package/dist/util.js +4 -2
  203. package/dist/verify-sandbox.js +265 -0
  204. package/dist/verify.js +270 -25
  205. package/dist/versao.js +60 -0
  206. package/dist/worktree.js +31 -2
  207. package/dist/write-activation.js +291 -0
  208. package/dist/yaml.js +5 -1
  209. package/eval/casos/master-metrics.json +1 -1
  210. package/eval/casos/onboarding.json +102 -0
  211. package/eval/casos/orkastery-bootstrap.json +37 -3
  212. package/eval/casos/scope-check-capability-map.json +45 -7
  213. package/eval/casos/ship-release.json +3 -3
  214. package/eval/fixtures/b0-slug-e-modos/caso.json +35 -22
  215. package/eval/fixtures/b2-master-log/caso.json +1 -1
  216. package/eval/fixtures/fx-adapter-editado-detectado/caso.json +19 -0
  217. package/eval/fixtures/fx-auto-quiet/caso.json +11 -0
  218. package/eval/fixtures/fx-blanket-approve/caso.json +10 -0
  219. package/eval/fixtures/fx-check-runtime-cruzado/caso.json +20 -0
  220. package/eval/fixtures/fx-codex-dry/caso.json +18 -0
  221. package/eval/fixtures/fx-donewhen-executavel/caso.json +15 -0
  222. package/eval/fixtures/fx-estado-dividido/caso.json +15 -0
  223. package/eval/fixtures/fx-fase-orfa/caso.json +116 -0
  224. package/eval/fixtures/fx-happy/caso.json +6 -4
  225. package/eval/fixtures/fx-hitl-latency/caso.json +20 -0
  226. package/eval/fixtures/fx-indice-reversao/caso.json +25 -0
  227. package/eval/fixtures/fx-listagem-abertas/caso.json +16 -0
  228. package/eval/fixtures/fx-maestro-bootstrap/caso.json +21 -0
  229. package/eval/fixtures/fx-modo-aposentado-escritor/caso.json +21 -0
  230. package/eval/fixtures/fx-modo-aposentado-leitor/caso.json +16 -0
  231. package/eval/fixtures/fx-objective-oscillation/caso.json +14 -0
  232. package/eval/fixtures/fx-omnicanal/caso.json +17 -0
  233. package/eval/fixtures/fx-sensores-runtime/caso.json +17 -0
  234. package/monitor/company-brain.cjs +17 -0
  235. package/monitor/pulse-scope.cjs +45 -0
  236. package/monitor/pulse.cron +18 -0
  237. package/monitor/varredura-pulse.sh +27 -0
  238. package/package.json +28 -7
  239. package/references/definition-of-done.md +2 -2
  240. package/schemas/claims.schema.json +25 -0
  241. package/schemas/company-brain.schema.json +1158 -0
  242. package/schemas/creation-operation.schema.json +365 -0
  243. package/schemas/maestro-snapshot.schema.json +2716 -0
  244. package/skills/README.md +3 -3
  245. package/skills/core/onboarding/SKILL.md +50 -0
  246. package/skills/core/orkastery-bootstrap/SKILL.md +95 -65
  247. package/skills/core/thread-state/SKILL.md +3 -1
  248. package/skills/governance/decision-triage/SKILL.md +4 -4
  249. package/skills/governance/narrative-guardian/SKILL.md +1 -1
  250. package/skills/governance/roadmap-keeper/SKILL.md +1 -1
  251. package/skills/governance/scope-check-capability-map/SKILL.md +17 -7
  252. package/skills/observability/thread-tracing/SKILL.md +1 -1
  253. package/skills/phases/check-quality/SKILL.md +2 -2
  254. package/skills/phases/goal-definition/SKILL.md +1 -1
  255. package/skills/phases/master-metrics/SKILL.md +9 -7
  256. package/skills/phases/plan-specification/SKILL.md +1 -1
  257. package/skills/phases/ship-release/SKILL.md +1 -1
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2026 Orkastery
3
+ Copyright (c) 2026 Julio Pessoa
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -1,87 +1,108 @@
1
- # core/, o núcleo `ork`
1
+ # @orkastery/cli, the `ork` core
2
2
 
3
- Núcleo CLI determinístico do Orkastery (Camada 2, o Looping Threads Maestro).
4
- **Sem LLM embutido**: o `ork` monta prompt, despacha pelo runtime adapter, verifica no
5
- mundo real e registra no ledger. Quem escreve código e a orquestra (Camada 3); quem
6
- decide e o humano.
3
+ **A software factory of AI agents that proves its work: parallel threads, verified results, and short decisions only when they matter.**
7
4
 
8
- ## Instalar
5
+ `ork` conducts coding agents (Claude Code, Codex) through six-phase threads, verifies every
6
+ claim by re-running the command that proves it, and only delivers with the push proven on the
7
+ remote. It has no embedded LLM: it assembles the prompt, dispatches through the CLI of the
8
+ runtime you already use, checks the result in the real world and records everything in an
9
+ append-only ledger.
9
10
 
10
- Publicado no npm como **`@orkastery/cli`**. O nome curto `ork` no registry pertence a outro
11
- projeto, mas o binario instalado continua sendo `ork`:
11
+ - **Truth, not a report.** Every statement becomes a claim with the command that judges it.
12
+ `ork verify` re-runs it on the thread's real HEAD and, with `ci.required_for_ship`, CI re-runs
13
+ it again on an independent runner before the merge.
14
+ - **You choose how often you are called.** One mode per #TAG, in the request itself, decides
15
+ where the cycle pauses. Verification is the same in all of them.
16
+ - **Subscription, never pay-per-token.** Dispatch uses the runtime CLI's own login. `ork` never
17
+ reads credentials, and the `subscription-only` policy blocks paid providers.
18
+
19
+ The CLI and the docs are in Brazilian Portuguese today.
20
+
21
+ ## Install
22
+
23
+ Requires Node.js 20 or newer, git and at least one runtime logged in to your subscription
24
+ (`claude` or `codex`).
12
25
 
13
26
  ```bash
14
27
  npm install -g @orkastery/cli
15
- ork doctor
28
+ ork demo # 30 seconds: a false claim rejected, the fixed one accepted; no account, no model
29
+ ork doctor # what holds on this machine right now (exits != 0 when something blocks)
16
30
  ```
17
31
 
18
- O tarball leva junto o catalogo do produto (`skills/`, `references/`, `eval/` e `adapters/`),
19
- entao `ork eval` e `ork adapter install` funcionam a partir da instalacao global.
32
+ The package ships the product catalog too (skills, references, eval and host adapters), so
33
+ `ork eval` and `ork adapter install` work from the global install.
20
34
 
21
- ## Compilar deste repositorio
35
+ ## First steps
22
36
 
23
37
  ```bash
24
- cd core
25
- npm install
26
- npm run build # gera dist/index.js (bin `ork`)
27
- npm test # compila e roda a suite (node --test)
28
- npm link # opcional: poe o `ork` desta arvore no PATH
38
+ cd your-repository
39
+ ork init # writes the orkastery.yaml
40
+ ork thread new "fix the date filter" --modo classic --worktree auto
41
+ ork phase run <thread> GOAL --prompt "the filter ignores the user's time zone"
42
+ ork claims add <thread> src/filter.ts --claim "respects the time zone" --verificar "npm test -- filter"
43
+ ork verify <thread> # re-runs the claims on the real HEAD
44
+ ork ship <thread> --para main # serialized merge and proven push
29
45
  ```
30
46
 
31
- O `prepack` roda o build e copia o catalogo da raiz do repositorio para dentro de `core/`; o
32
- `postpack` remove as copias. E por isso que `npm pack` e `npm publish` levam o produto inteiro
33
- sem que essas pastas existam na arvore versionada de `core/`.
47
+ `ork board` shows every thread, and `ork pulse` gathers what needs you right now.
48
+
49
+ ## The four modes
34
50
 
35
- ## Comandos
51
+ The #TAG goes in the request itself. The mode changes **where** the cycle waits for you:
52
+
53
+ | #TAG | Pauses | Cycle | What it is for |
54
+ | --- | --- | --- | --- |
55
+ | `#Classic` | 3 | `GOAL* / PLAN* / GO-CHECK* / SHIP-MASTER` | The default: delicate premises |
56
+ | `#Maestro` | 1 | `GOAL-PLAN* / GO-CHECK-SHIP / MASTER` | A clear solution, moving fast |
57
+ | `#Auto` | 0 | `GOAL-PLAN-GO-CHECK-SHIP-MASTER` | Docs, studies, configuration, audits |
58
+ | `#Fast` | 0 | `GO` | A small, clear request that takes minutes |
59
+
60
+ `*` marks the block that pauses. `#Fast` runs only the GO, with minimal proof (a focused test, a
61
+ cheap claim, or an absence declared in the ledger). It does not authorize a push on its own and
62
+ does not touch public contract files. `ork modos` is the source of truth.
63
+
64
+ ```text
65
+ The mode relaxes the PAUSE. The mode NEVER relaxes VERIFICATION.
66
+ ```
67
+
68
+ ## Hosts
69
+
70
+ `ork` talks to the host through thin adapters. Every rule lives in the core:
36
71
 
37
72
  ```bash
38
- node dist/index.js doctor # o que vale nesta maquina agora
39
- node dist/index.js init # gera o orkastery.yaml do repo
40
- node dist/index.js modos # tabela dos 5 modos de conducao
41
- node dist/index.js thread new "<nome>" --modo default
42
- node dist/index.js thread list
43
- node dist/index.js thread status <thread-id>
44
- node dist/index.js phase run <thread-id> GOAL --prompt "<pedido>"
45
- node dist/index.js phase list <thread-id>
46
- node dist/index.js sessions [--all]
47
- node dist/index.js sessions logs|stop|attach <sessao>
73
+ ork adapter list
74
+ ork adapter install claude-code # also: codex, hermes, openclaw
48
75
  ```
49
76
 
50
- Bloco B1 (verdade, gate de tokens, handoff e entrega):
77
+ ## Most used commands
78
+
79
+ | Command | What it does |
80
+ | --- | --- |
81
+ | `ork doctor` | Checks runtime, manifest, cost policy and sessions |
82
+ | `ork thread new <name> --modo <mode>` | Creates the thread, the slug and the ledger |
83
+ | `ork phase run <thread> <PHASE> --prompt "..."` | Dispatches the phase on the block's runtime |
84
+ | `ork claims add` / `ork verify` | Records claims and re-runs them |
85
+ | `ork ci prepare` / `ork ci run` | Takes the claims to the independent CHECK in CI |
86
+ | `ork ship <thread> --para main` | Merge serialized by lease, with the push proven by `ls-remote` |
87
+ | `ork board` / `ork pulse` | View of the threads and of the human attention queue |
88
+ | `ork setup <mode>` | Runtime, model and effort per block of each mode |
89
+
90
+ The full list comes from `ork help`.
91
+
92
+ ## Build from this repository
51
93
 
52
94
  ```bash
53
- node dist/index.js claims add <thread-id> <arquivo> --claim "<alegacao>" --verificar "<comando>"
54
- node dist/index.js claims list|verificar|retirar <thread-id> [...]
55
- node dist/index.js verify <thread-id> [--baseline] [--so-claims]
56
- node dist/index.js gate next <thread-id> [--proximo FASE] [--ocupacao 0..1] [--transcript ARQ]
57
- node dist/index.js gate approve <thread-id> push --por <quem>
58
- node dist/index.js handoff export <thread-id> [--proxima-fase FASE]
59
- node dist/index.js handoff recall <thread-id> "<path#ancora>"
60
- node dist/index.js ship <thread-id> --para main [--autorizar-push <quem>] [--dry-run]
61
- node dist/index.js lease list|release <nome>
95
+ cd core
96
+ npm ci
97
+ npm run build # writes dist/index.js (the `ork` bin)
98
+ npm test # builds and runs the suite (node --test)
99
+ npm link # optional: puts this tree's `ork` on the PATH
62
100
  ```
63
101
 
64
- ## Mapa dos módulos
65
-
66
- | Arquivo | Papel |
67
- |---|---|
68
- | `src/index.ts` | CLI: parse de argumentos e roteamento dos subcomandos |
69
- | `src/doctor.ts` | Checks de ambiente, manifesto, abbrev, custo/provider e sessões |
70
- | `src/init.ts` | Detecção do repo e geração do `orkastery.yaml` |
71
- | `src/thread.ts` | Estado da thread em disco, slug, base carimbada, listagem |
72
- | `src/phase.ts` | Montagem do prompt da fase, despacho e leitura do ledger |
73
- | `src/modos.ts` | Matriz dos 5 modos de condução e parse da #TAG |
74
- | `src/slug.ts` | Slug de 3 partes, regex canonica e rotação de sessão |
75
- | `src/ledger.ts` | Ledger JSONL append-only por thread |
76
- | `src/manifest.ts` | Leitura e validação do manifesto (com fallback `devmaster.yaml`) |
77
- | `src/yaml.ts` | Leitor do subconjunto de YAML usado pelo manifesto (sem dependência) |
78
- | `src/adapters/claude-bg.ts` | Runtime adapter: `claude --bg`, `claude agents`, logs e stop |
79
- | `src/sessoes.ts` | Observabilidade: cruza o runtime real com o registrado nas threads |
80
- | `src/claims.ts` | Alegações verificaveis por thread (`claims.jsonl`) e a regra da alegação negativa |
81
- | `src/verify.ts` | Reexecucao no HEAD real, baseline e classificação regressão vs pré-existente |
82
- | `src/gates.ts` | Catálogo de motivos tipados de gate e registro de aprovação humana |
83
- | `src/policies.ts` | Policies do manifesto executaveis, por gate e por severidade |
84
- | `src/leases.ts` | Leases com aquisição atômica e TTL (o `main-tree` serializa o ship) |
85
- | `src/ship.ts` | Merge --no-ff serializado, verificado, e push provado por `ls-remote` |
86
- | `src/tokens.ts` | Gate de tokens: medida honesta da janela e veredito de rotação |
87
- | `src/handoff.ts` | Handoff triado em 3 níveis com proveniência, e o recall dos ponteiros |
102
+ `prepack` builds and copies the catalog from the repository root into `core/`, and `postpack`
103
+ removes the copies. That is why `npm pack` and `npm publish` ship the whole product without
104
+ those folders existing in the versioned tree of `core/`.
105
+
106
+ ## License
107
+
108
+ MIT. Full documentation, roadmap and changelog in the Orkastery repository.
@@ -1,22 +1,37 @@
1
1
  # adapters/
2
2
 
3
- Adaptadores de host (Camada 1: Hermes, OpenClaw, plugin do Claude Code, CI e cron).
3
+ Adaptadores de host (Camada 1): Claude Code, Codex, Hermes e OpenClaw.
4
4
 
5
- Eles traduzem intencao em chamada de `ork`, apresentam gates ao humano e registram decisoes.
6
- **Zero regra de negocio.** O parse da #TAG de modo de conducao acontece aqui e vira `--mode` no
7
- `ork thread new`, mas nem o parse e reimplementado: o host chama `ork modos --do-pedido`, que usa a
8
- `extrairTagDoPedido` do nucleo. A validacao contra `conduction.allowed_modes` e do nucleo.
5
+ Eles traduzem intenção em chamada de `ork`, apresentam gates ao humano e registram decisões.
6
+ **Zero regra de negócio.** Nem o parse da #TAG de modo é reimplementado aqui: o host chama
7
+ `ork modos --do-pedido`, que usa a `extrairTagDoPedido` do núcleo, e a validação contra
8
+ `conduction.allowed_modes` também é do núcleo.
9
9
 
10
- | Host | O que entra | Instalacao |
11
- |---|---|---|
12
- | [claude-code](claude-code/README.md) | Plugin com as 17 skills, 6 subagentes de fase, `/goal` ... `/master` e guard `PreToolUse` | `ork adapter install claude-code` |
13
- | [hermes](hermes/README.md) | Skill roteadora fina, plugin e script de abertura de thread | `ork adapter install hermes` |
14
- | [openclaw](openclaw/README.md) | `openclaw.plugin.json` com 16 tools `ork_*` | `ork adapter install openclaw` |
10
+ | Host | O que entra | Instalação |
11
+ | --- | --- | --- |
12
+ | [claude-code](claude-code/README.md) | Plugin com as skills do catálogo, subagentes de fase, `/goal` ... `/master` e o guard `PreToolUse` | `ork adapter install claude-code` |
13
+ | codex | Entrada `$ork` e o catálogo de condução em skills locais do projeto | `ork adapter install codex` |
14
+ | [hermes](hermes/README.md) | Skill roteadora fina, plugin de ingresso HITL e scripts de abertura de thread | `ork adapter install hermes` |
15
+ | [openclaw](openclaw/README.md) | Extensão (`package.json`, `dist/index.js` e manifesto) com as tools `ork_*`, instalada em `extensions/orkastery` | `ork adapter install openclaw` |
15
16
 
16
- Cada README traz os **3 pitfalls de instalacao** do seu host: os tres jeitos conhecidos de a
17
- instalacao "dar certo" e nao funcionar. O instalador cita os mesmos tres ao terminar, e o
17
+ Cada README traz os **3 pitfalls de instalação** do seu host: os três jeitos conhecidos de a
18
+ instalação "dar certo" e não funcionar. O instalador cita os mesmos três ao terminar, e o
18
19
  `--dry-run` mostra o que ele faria sem escrever nada.
19
20
 
20
- Os adaptadores de RUNTIME (Camada 3) sao outra coisa e ficam em `core/src/adapters/`, porque quem
21
- os chama e o nucleo: hoje `claude-bg`. O Claude Code aparece nas duas camadas, com papeis
22
- diferentes; confundir as duas e como o Orkastery original acabou prometendo um motor que nunca teve.
21
+ Os adaptadores de RUNTIME (Camada 3) são outra coisa e ficam em `core/src/adapters/`, porque quem
22
+ os chama é o núcleo: `claude-bg` e `codex`. O Claude Code aparece nas duas camadas, com papéis
23
+ diferentes, e confundir as duas é o jeito mais rápido de prometer um motor que não existe.
24
+
25
+ ## Paridade Maestro
26
+
27
+ A frase `orkastery maestro` consulta o mesmo contrato do núcleo nas quatro
28
+ instalações: MCP no Codex e no Claude, wrapper argv no Hermes e tool argv no OpenClaw.
29
+ O instalador inclui entrada, callback e recibo de arquivos; instalação não prova
30
+ ativação em sessão nova. `maestro-parity.test.ts` compara o contrato canônico e
31
+ instalações temporárias. Os testes específicos de cada adaptador exercitam o
32
+ transporte fixture; os recibos live são uma etapa posterior e separada.
33
+
34
+ Usabilidade HITL é prioridade máxima: recomendação, opções claras e canal disponível
35
+ associado ao pedido. MCP local conserva elicitation; Telegram segue disponível
36
+ quando configurado. Ingresso nativo Hermes/Discord e OpenClaw depende de callback
37
+ autenticado e binding privado; terminal Hermes/ACP não está homologado.
@@ -3,7 +3,9 @@
3
3
  "displayName": "Orkastery",
4
4
  "description": "Conducao de looping threads em 6 fases com gates humanos, estado em disco e MASTER log com score de 0 a 5. As skills sao roteadores finos: quem executa e o nucleo `ork`.",
5
5
  "version": "{{versao}}",
6
- "author": { "name": "Julio Pessoa e contribuidores do Orkastery" },
6
+ "author": {
7
+ "name": "Julio Pessoa e contribuidores do Orkastery"
8
+ },
7
9
  "license": "MIT",
8
10
  "skills": [
9
11
  "./skills/core/orkastery-bootstrap",
@@ -22,10 +24,14 @@
22
24
  "./skills/reviewers/code-reviewer",
23
25
  "./skills/reviewers/security-auditor",
24
26
  "./skills/reviewers/test-engineer",
25
- "./skills/reviewers/web-performance-auditor"
27
+ "./skills/reviewers/web-performance-auditor",
28
+ "./skills/core/onboarding"
26
29
  ],
27
30
  "commands": "./commands",
28
- "agents": "./agents",
29
- "hooks": "./hooks/hooks.json",
30
- "keywords": ["orquestracao", "metodologia", "governanca", "telemetria"]
31
+ "keywords": [
32
+ "orquestracao",
33
+ "metodologia",
34
+ "governanca",
35
+ "telemetria"
36
+ ]
31
37
  }
@@ -1,14 +1,17 @@
1
1
  # Adaptador Claude Code
2
2
 
3
- O Orkastery chega ao Claude Code como **plugin**: as 17 skills finas do catalogo, seis subagentes
3
+ O Orkastery chega ao Claude Code como **plugin**: as 18 skills finas do catalogo, seis subagentes
4
4
  de fase, os slash commands `/goal` ... `/master` e um guard `PreToolUse`.
5
5
 
6
6
  ## Instalacao
7
7
 
8
8
  ```bash
9
- ork adapter install claude-code # instala em <projeto>/.claude
10
- ork adapter install claude-code --dir ~/.claude # instala para todos os projetos da maquina
11
- ork adapter install claude-code --dry-run # lista o que seria escrito, sem escrever
9
+ ork adapter install claude-code --dry-run
10
+ ork adapter install claude-code # prepara <projeto>/.claude/plugins/orkastery
11
+ claude plugin validate .claude/plugins/orkastery
12
+ claude plugin marketplace add "$PWD/.claude/plugins/orkastery" --scope project
13
+ claude plugin install orkastery@orkastery --scope project
14
+ claude plugin details orkastery
12
15
  ```
13
16
 
14
17
  O instalador copia o catalogo unico de `skills/` e `references/`, renderiza o manifesto do plugin
@@ -16,6 +19,37 @@ com os caminhos declarados um a um, e grava `INSTALADO.json` com a origem e o sh
16
19
  arquivo. E esse arquivo que permite detectar depois que alguem editou a copia instalada em vez do
17
20
  catalogo.
18
21
 
22
+ Copiar o adaptador não habilita o plugin no Claude. Os comandos nativos acima registram
23
+ o marketplace e habilitam o plugin no projeto atual. Confirme primeiro que o nome
24
+ `orkastery` não pertence a outro marketplace e preserve as configurações existentes.
25
+ O manifesto usa a descoberta padrão de `agents/` e `hooks/hooks.json`: declarar o
26
+ diretório como `agents` é inválido no Claude 2.1.263; declarar novamente o arquivo
27
+ padrão em `hooks` provoca erro de carregamento por duplicação.
28
+
29
+ O escopo precisa ser provado em cada worktree. Nos ensaios do Claude 2.1.263,
30
+ `--scope project` habilitou os diretórios configurados explicitamente, enquanto
31
+ `--scope local` na main também alcançou uma worktree não configurada. Não use esse
32
+ último mecanismo para excluir threads. O [plano de ativação](ACTIVATION.md) descreve
33
+ preservação, exclusões, prova de despacho e rollback antes de uso operacional.
34
+
35
+ Validação, instalação e startup nativos sem modelo:
36
+
37
+ ```bash
38
+ npm --prefix core run build
39
+ npm --prefix core run build:test
40
+ node adapters/claude-code/test/native-plugin.cjs
41
+ ```
42
+
43
+ O teste cria projeto e worktrees pela API do `ork`, isola cache/configuração com
44
+ `CLAUDE_CONFIG_DIR` e verifica o startup do CLI, além do inventário. Uma worktree
45
+ não habilitada e outro projeto devem carregar zero hooks. O teste explícito
46
+ `node adapters/claude-code/test/native-plugin.cjs --smoke` também abre duas sessões
47
+ reais e exige `PermissionRequest` no ledger canônico, sem aprovar Bash. Esse smoke
48
+ exige Linux, Python 3/pexpect e OAuth de assinatura em `ANTHROPIC_TOKEN` no arquivo
49
+ `~/.hermes/.env`; não usa chave API nem fallback. A configuração global
50
+ permanece fora da fixture. As sessões e os ledgers temporários são descartados;
51
+ guarde a saída JSON como recibo antes de declarar a prova concluída.
52
+
19
53
  ## O que voce ganha
20
54
 
21
55
  | Voce digita | Voce recebe |
@@ -50,6 +84,64 @@ verifica. Comando que comeca com `ork` passa direto, porque quem prova o push e
50
84
  o nucleo. E se o proprio guard quebrar, ele **libera**: um hook que derruba a sessao por bug proprio
51
85
  e pior que nenhum hook.
52
86
 
87
+ ## Sensores de sessão
88
+
89
+ `PermissionRequest`, `Notification`, `Stop`, `SubagentStop` e `PostToolUse` chamam
90
+ `ork sessions event` com a sessão e o diretório fornecidos pelo Claude. A sessão deve
91
+ estar registrada em uma thread do projeto. `ORK_SENSOR_CLI` pode apontar para o executável
92
+ do ork instalado; o padrão é `ork` no PATH. Cada chamada tem timeout de três segundos.
93
+
94
+ O sensor deixa stdout vazio e sai com código zero, inclusive em falha. Ele observa o
95
+ bloqueio, sem decidir a permissão. `PermissionRequest` captura a solicitação imediata;
96
+ `Notification` com `permission_prompt` só ocorre após cerca de seis segundos, conforme a
97
+ [referência de hooks](https://code.claude.com/docs/en/hooks#permissionrequest).
98
+
99
+ O ledger recebe carimbos e identificadores, sem prompts, comandos ou transcrições.
100
+ `PostToolUse` registra progresso; para Bash, um recibo de commit só é emitido quando o
101
+ resultado contém o SHA do HEAD confirmado no Git. O comando recebido nunca é executado.
102
+ `Stop` e `SubagentStop` são observações distintas e não aprovam uma fase.
103
+
104
+ Teste de integração isolado: `npm --prefix core run build && npm --prefix core run build:test && node --test core/dist-test/test/claude-sensors.test.js`.
105
+
106
+ O canário `node core/dist/index.js eval --so-canarios --canario fx-sensores-runtime`
107
+ integra hook, CLI, supervisor e watcher em um repositório temporário. Seus eventos Codex
108
+ são sintéticos; a saída identifica esse limite e mede ingestão, morte e duplicatas.
109
+
110
+ Para homologação com as assinaturas autenticadas, execute explicitamente:
111
+
112
+ ```bash
113
+ node core/scripts/smoke-sensores.cjs --runtime claude
114
+ node core/scripts/smoke-sensores.cjs --runtime codex
115
+ ```
116
+
117
+ O harness exige usuário comum; Claude exige Python 3 com `pexpect`. Ele cria um projeto
118
+ temporário e aceita a confiança somente nesse projeto que acabou de criar. Claude roda
119
+ em PTY com permissão de Bash obrigatória: o teste observa o diálogo real, o instante do
120
+ hook e a ingestão no ledger, e encerra a sessão sem aprovar a ferramenta. A saída inclui
121
+ o código/sinal desse encerramento controlado, sem alegar resposta ou aprovação humana.
122
+ Codex executa um comando curto e o harness confere o arquivo produzido, tokens, rollout
123
+ e recibo supervisionado. A descoberta do rollout é refeita no término porque sua criação
124
+ pode ocorrer após `thread.started`. O sandbox vem de `runtime.sandbox` do manifesto
125
+ do diretório de execução, sem override do harness. A prova de escrita em `read-only`
126
+ falha, preservando o modo configurado.
127
+
128
+ Cada comando emite JSON e retorna código 1 quando falta a prova. Variáveis de credenciais
129
+ e redirecionamento de API paga são removidas; não há fallback. HOME, CODEX_HOME,
130
+ CLAUDE_CONFIG_DIR, XDG e temporários ficam dentro da tentativa, junto dos ledgers.
131
+ O recibo lista os arquivos nativos e confirma a limpeza apenas desses recursos.
132
+ Claude usa OAuth de assinatura somente no ambiente. Codex lê seu cache nativo por
133
+ `memfd` Linux selado, sem cópia persistente de credenciais ou escrita na origem.
134
+ Refresh que precise escrever no cache torna a prova indisponível. Veja os limites
135
+ e o tratamento do rollout legado de T9 no [plano de ativação](ACTIVATION.md).
136
+ Guarde o JSON no diretório de evidências da thread
137
+ condutora. O teste de contrato do harness não dispara runtimes nem substitui esses smokes.
138
+ O prompt de permissão de rede do sandbox tem um fluxo distinto, descrito na
139
+ [referência de PermissionRequest](https://code.claude.com/docs/en/hooks#permissionrequest).
140
+
141
+ Sem `tool_use_id`, cada invocação do hook recebe uma identidade de ocorrência. O tamanho
142
+ do transcript não identifica uma ocorrência; eventos de um novo episódio de permissão
143
+ podem chegar sem alteração do arquivo. Replays com `tool_use_id` continuam idempotentes.
144
+
53
145
  ## A #TAG de conducao
54
146
 
55
147
  O comando `/goal` extrai o modo do proprio pedido, sem reimplementar nada:
@@ -71,9 +163,11 @@ tres e o `--dry-run` mostra o que ele vai fazer sobre cada um.
71
163
  1. **Manifesto sem os caminhos das skills instala limpo e nao expoe nada.** Um plugin do Claude
72
164
  Code auto-descobre `skills/<nome>/SKILL.md` e para ai: ele nao desce nos diretorios de bucket
73
165
  (`core/`, `phases/`, `reviewers/`, ...) que este catalogo usa. Por isso `plugin.json` declara os
74
- 17 caminhos um a um. Depois de instalar, confira a contagem em vez de confiar no manifesto:
75
- `claude plugin details orkastery` precisa reportar 17, o mesmo numero de `SKILL.md` em disco.
76
- Quando divergir, quem esta errado e o manifesto.
166
+ caminhos um a um. O teste compara esses caminhos com o catálogo fonte e exige
167
+ `onboarding`, acrescentada por I15. Neste catálogo, `claude plugin details orkastery`
168
+ deve reportar 26 entradas: 18 skills mais oito comandos. O startup registra
169
+ separadamente skills e comandos. A prova anterior de T10, com 17 skills, é histórica.
170
+ Confira também os seis agentes e seis eventos de hooks, sem erros de carregamento.
77
171
 
78
172
  2. **Duas copias do catalogo divergem, e a divergencia so aparece quando ja custou uma entrega.**
79
173
  A fonte unica e `skills/` na raiz do produto. O instalador copia de la e grava a origem e o
@@ -84,7 +178,7 @@ tres e o `--dry-run` mostra o que ele vai fazer sobre cada um.
84
178
  3. **Hook com caminho relativo silenciosamente nao roda, e o guard vira decoracao.** O
85
179
  `hooks.json` chama `node "${CLAUDE_PLUGIN_ROOT}/hooks/ork-guard.js"`, nunca um caminho relativo
86
180
  ao diretorio de trabalho, que muda a cada worktree de thread. Depois de instalar, prove que o
87
- guard esta vivo em vez de supor:
181
+ script do guard funciona isoladamente:
88
182
 
89
183
  ```bash
90
184
  echo '{"tool_name":"Bash","tool_input":{"command":"git add -A"}}' \
@@ -100,3 +194,11 @@ host onde o builder conversa e de onde as chamadas de `ork` saem. Ele tambem e *
100
194
  orquestra, quando o `ork` despacha `claude --bg` para escrever codigo, e esse adaptador de runtime
101
195
  mora em `core/src/adapters/claude-bg.ts`, chamado pelo nucleo. Sao papeis diferentes no mesmo
102
196
  programa, e misturar os dois e como o Orkastery original acabou prometendo um motor que nunca teve.
197
+ # Entrada Maestro
198
+
199
+ Em sessão nova com o plugin ativado, diga `orkastery maestro`. A entrada consulta
200
+ `mcp__orkastery__ork_maestro` e apresenta fontes, lacunas e ações disponíveis.
201
+ A instalação em fixture prova os arquivos/roteamento; ativação e conversa real
202
+ dependem do recibo pós-SHIP. HITL prioriza recomendação, opções claras e pergunta
203
+ nativa na condutora. Telegram é opcional. Falha de autenticação não autoriza trocar
204
+ provider, runtime ou permissões.
@@ -27,11 +27,12 @@ ork worktree audit <thread>
27
27
  ork phase list <thread>
28
28
  ```
29
29
 
30
- 4. Consolida UM veredito (PASSOU, PRECISA DE MUDANCA, BLOQUEADO) e, se o modo pausa, apresenta ao
31
- builder e espera:
30
+ 4. Consolida UM veredito (PASSOU, PRECISA DE MUDANCA, BLOQUEADO) e, se o modo pausa, abre o pedido
31
+ e espera. O builder responde pelo canal autenticado (dialogo nativo do host, ou
32
+ `/ork gate <thread> <pedido> <resposta>` no Telegram); o agente nunca responde por ele:
32
33
 
33
34
  ```bash
34
- ork gate approve <thread> evidencias --por "<quem>"
35
+ ork gate request <thread>
35
36
  ```
36
37
 
37
38
  ## Regras do adaptador
@@ -37,10 +37,11 @@ ork claims add <thread> <arquivo> --claim "<alegacao>" --verificar "<comando>" -
37
37
  ork verify <thread> --so-claims
38
38
  ```
39
39
 
40
- 5. Se o modo pausa neste bloco, apresenta a evidencia ao builder e para. A liberacao e registrada:
40
+ 5. Se o modo pausa neste bloco, apresenta a evidencia ao builder e para. O pedido sai do nucleo, e a
41
+ liberacao so e registrada quando o builder responde pelo canal autenticado:
41
42
 
42
43
  ```bash
43
- ork gate approve <thread> objetivo --por "<quem>"
44
+ ork gate request <thread>
44
45
  ```
45
46
 
46
47
  ## Regras do adaptador
@@ -25,10 +25,11 @@ ork master classes
25
25
  ork master <thread> --score <0-5> --justificativa "<texto>" --classe <classe> --por "<quem>"
26
26
  ```
27
27
 
28
- 4. Nos modos sem pausa de MASTER, mostra a fila que ainda espera humano:
28
+ 4. Nos modos sem pausa de MASTER, a entrega e aceita a menos que o builder diga o contrario. Mostra
29
+ as entregas com o indice derivado do ledger, inclusive as ja pontuadas:
29
30
 
30
31
  ```bash
31
- ork master --batch
32
+ ork master --todas
32
33
  ```
33
34
 
34
35
  ## Regras do adaptador
@@ -0,0 +1,21 @@
1
+ ---
2
+ description: Conduz ou retoma a entrevista do projeto pela pauta do núcleo ork.
3
+ argument-hint: "<pedido de onboarding>"
4
+ allowed-tools: Bash(ork:*)
5
+ ---
6
+
7
+ # /onboarding
8
+
9
+ Execute `ork onboarding` para obter a pauta e `ork onboarding show --json` para consultar
10
+ as respostas atuais. Conduza as pendências pela pauta devolvida pelo núcleo. Não duplique
11
+ etapas ou validação neste host e não invente respostas em nome do builder.
12
+
13
+ Grave a resposta pública solicitada com `ork onboarding set <etapa> --conteudo <JSON> --por <quem>`.
14
+ Transporte o JSON como argumento, com escaping de shell adequado; nunca execute o texto recebido.
15
+ Peça somente nomes de variáveis para credenciais. Valores secretos ficam em `~/.hermes/.env`;
16
+ não leia esse arquivo nem transporte valores para a conversa, onboarding ou ledger.
17
+
18
+ Reset solicitado usa `ork onboarding reset [etapa]`. Publicação opcional usa
19
+ `ork onboarding sync --json`; apresente o motivo tipado de degradação sem bloquear a entrevista.
20
+ A escolha da memória orienta o manifesto, sem editá-lo automaticamente.
21
+ Conclua com o estado de `ork onboarding show --json`. Não crie thread para apenas entrevistar.