@orkastery/cli 0.5.3 → 0.6.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 (502) hide show
  1. package/adapters/README.md +18 -0
  2. package/adapters/claude-code/.claude-plugin/plugin.json +1 -0
  3. package/adapters/claude-code/README.md +195 -5
  4. package/adapters/claude-code/agents/ork-check.md +1 -0
  5. package/adapters/claude-code/agents/ork-go.md +1 -0
  6. package/adapters/claude-code/agents/ork-goal.md +1 -0
  7. package/adapters/claude-code/agents/ork-master.md +1 -0
  8. package/adapters/claude-code/agents/ork-plan.md +1 -0
  9. package/adapters/claude-code/agents/ork-ship.md +1 -0
  10. package/adapters/claude-code/hooks/hooks.json +2 -1
  11. package/adapters/claude-code/hooks/ork-guard.js +15 -1
  12. package/adapters/claude-code/hooks/ork-resposta.js +91 -0
  13. package/adapters/claude-code/hooks/ork-sensor.js +18 -2
  14. package/adapters/claude-code/hooks/quota-signal.js +14 -0
  15. package/adapters/claude-code/mods/autoridade.json +56 -0
  16. package/adapters/claude-code/mods/ork-clima/.claude-plugin/plugin.json +14 -0
  17. package/adapters/claude-code/mods/ork-clima/hooks/contas.ts +283 -0
  18. package/adapters/claude-code/mods/ork-clima/hooks/hooks.json +3 -0
  19. package/adapters/claude-code/mods/ork-clima/hooks/previsao.ts +393 -0
  20. package/adapters/claude-code/mods/ork-clima/hooks/register.ts +205 -0
  21. package/adapters/claude-code/mods/ork-clima/orkastery-mod.json +5 -0
  22. package/adapters/claude-code/mods/ork-clima/types/index.d.ts +80 -0
  23. package/adapters/claude-code/mods/ork-freio/.claude-plugin/plugin.json +14 -0
  24. package/adapters/claude-code/mods/ork-freio/hooks/carga.ts +160 -0
  25. package/adapters/claude-code/mods/ork-freio/hooks/conferencia.ts +309 -0
  26. package/adapters/claude-code/mods/ork-freio/hooks/hooks.json +3 -0
  27. package/adapters/claude-code/mods/ork-freio/hooks/lote.ts +270 -0
  28. package/adapters/claude-code/mods/ork-freio/hooks/register.ts +285 -0
  29. package/adapters/claude-code/mods/ork-freio/orkastery-mod.json +5 -0
  30. package/adapters/claude-code/mods/ork-freio/types/index.d.ts +127 -0
  31. package/adapters/claude-code/mods/ork-mensageiro/.claude-plugin/plugin.json +14 -0
  32. package/adapters/claude-code/mods/ork-mensageiro/hooks/caixa.ts +215 -0
  33. package/adapters/claude-code/mods/ork-mensageiro/hooks/hooks.json +3 -0
  34. package/adapters/claude-code/mods/ork-mensageiro/hooks/painel.tsx +165 -0
  35. package/adapters/claude-code/mods/ork-mensageiro/hooks/recepcao.ts +256 -0
  36. package/adapters/claude-code/mods/ork-mensageiro/hooks/register.tsx +481 -0
  37. package/adapters/claude-code/mods/ork-mensageiro/orkastery-mod.json +5 -0
  38. package/adapters/claude-code/mods/ork-mensageiro/types/index.d.ts +85 -0
  39. package/adapters/claude-code/mods/ork-mesa/.claude-plugin/plugin.json +14 -0
  40. package/adapters/claude-code/mods/ork-mesa/hooks/cartoes.tsx +246 -0
  41. package/adapters/claude-code/mods/ork-mesa/hooks/decidir.ts +110 -0
  42. package/adapters/claude-code/mods/ork-mesa/hooks/fila.ts +253 -0
  43. package/adapters/claude-code/mods/ork-mesa/hooks/hooks.json +3 -0
  44. package/adapters/claude-code/mods/ork-mesa/hooks/obvia.ts +98 -0
  45. package/adapters/claude-code/mods/ork-mesa/hooks/register.tsx +493 -0
  46. package/adapters/claude-code/mods/ork-mesa/orkastery-mod.json +5 -0
  47. package/adapters/claude-code/mods/ork-mesa/types/index.d.ts +131 -0
  48. package/adapters/claude-code/mods/ork-pista/.claude-plugin/plugin.json +14 -0
  49. package/adapters/claude-code/mods/ork-pista/hooks/acoes.ts +71 -0
  50. package/adapters/claude-code/mods/ork-pista/hooks/ci.ts +121 -0
  51. package/adapters/claude-code/mods/ork-pista/hooks/hooks.json +3 -0
  52. package/adapters/claude-code/mods/ork-pista/hooks/pista.tsx +356 -0
  53. package/adapters/claude-code/mods/ork-pista/hooks/register.tsx +439 -0
  54. package/adapters/claude-code/mods/ork-pista/orkastery-mod.json +5 -0
  55. package/adapters/claude-code/mods/ork-pista/types/index.d.ts +85 -0
  56. package/adapters/claude-code/mods/ork-ponte/.claude-plugin/plugin.json +13 -0
  57. package/adapters/claude-code/mods/ork-ponte/hooks/faixa.tsx +57 -0
  58. package/adapters/claude-code/mods/ork-ponte/hooks/guarda.ts +410 -0
  59. package/adapters/claude-code/mods/ork-ponte/hooks/hooks.json +3 -0
  60. package/adapters/claude-code/mods/ork-ponte/hooks/mostrado.ts +55 -0
  61. package/adapters/claude-code/mods/ork-ponte/hooks/nucleo.ts +157 -0
  62. package/adapters/claude-code/mods/ork-ponte/hooks/papel.ts +42 -0
  63. package/adapters/claude-code/mods/ork-ponte/hooks/register.ts +331 -0
  64. package/adapters/claude-code/mods/ork-ponte/hooks/vigia.ts +76 -0
  65. package/adapters/claude-code/mods/ork-ponte/orkastery-mod.json +5 -0
  66. package/adapters/claude-code/mods/ork-ponte/types/index.d.ts +178 -0
  67. package/adapters/claude-code/mods/ork-portao/.claude-plugin/plugin.json +14 -0
  68. package/adapters/claude-code/mods/ork-portao/hooks/hooks.json +3 -0
  69. package/adapters/claude-code/mods/ork-portao/hooks/lease.ts +201 -0
  70. package/adapters/claude-code/mods/ork-portao/hooks/plano.ts +304 -0
  71. package/adapters/claude-code/mods/ork-portao/hooks/register.ts +339 -0
  72. package/adapters/claude-code/mods/ork-portao/hooks/verify.ts +152 -0
  73. package/adapters/claude-code/mods/ork-portao/orkastery-mod.json +5 -0
  74. package/adapters/claude-code/mods/ork-portao/types/index.d.ts +60 -0
  75. package/adapters/claude-code/mods/ork-radar/.claude-plugin/plugin.json +14 -0
  76. package/adapters/claude-code/mods/ork-radar/hooks/colisao.ts +420 -0
  77. package/adapters/claude-code/mods/ork-radar/hooks/hooks.json +3 -0
  78. package/adapters/claude-code/mods/ork-radar/hooks/mapa.tsx +322 -0
  79. package/adapters/claude-code/mods/ork-radar/hooks/register.tsx +470 -0
  80. package/adapters/claude-code/mods/ork-radar/orkastery-mod.json +5 -0
  81. package/adapters/claude-code/mods/ork-radar/types/index.d.ts +72 -0
  82. package/adapters/claude-code/mods/ork-ritual/.claude-plugin/plugin.json +14 -0
  83. package/adapters/claude-code/mods/ork-ritual/hooks/hooks.json +3 -0
  84. package/adapters/claude-code/mods/ork-ritual/hooks/nota.ts +88 -0
  85. package/adapters/claude-code/mods/ork-ritual/hooks/register.tsx +494 -0
  86. package/adapters/claude-code/mods/ork-ritual/hooks/replay.tsx +271 -0
  87. package/adapters/claude-code/mods/ork-ritual/hooks/ritual.ts +218 -0
  88. package/adapters/claude-code/mods/ork-ritual/orkastery-mod.json +5 -0
  89. package/adapters/claude-code/mods/ork-ritual/types/index.d.ts +106 -0
  90. package/adapters/claude-code/mods/ork-sentinela/.claude-plugin/plugin.json +14 -0
  91. package/adapters/claude-code/mods/ork-sentinela/hooks/alertas.ts +85 -0
  92. package/adapters/claude-code/mods/ork-sentinela/hooks/despacho.ts +156 -0
  93. package/adapters/claude-code/mods/ork-sentinela/hooks/hooks.json +3 -0
  94. package/adapters/claude-code/mods/ork-sentinela/hooks/register.ts +511 -0
  95. package/adapters/claude-code/mods/ork-sentinela/hooks/vigia.ts +186 -0
  96. package/adapters/claude-code/mods/ork-sentinela/orkastery-mod.json +5 -0
  97. package/adapters/claude-code/mods/ork-sentinela/types/index.d.ts +65 -0
  98. package/adapters/claude-code/mods/ork-torre/.claude-plugin/plugin.json +14 -0
  99. package/adapters/claude-code/mods/ork-torre/hooks/agenda.ts +60 -0
  100. package/adapters/claude-code/mods/ork-torre/hooks/detalhe.tsx +236 -0
  101. package/adapters/claude-code/mods/ork-torre/hooks/frases.ts +42 -0
  102. package/adapters/claude-code/mods/ork-torre/hooks/hooks.json +3 -0
  103. package/adapters/claude-code/mods/ork-torre/hooks/painel.tsx +344 -0
  104. package/adapters/claude-code/mods/ork-torre/hooks/rede.ts +97 -0
  105. package/adapters/claude-code/mods/ork-torre/hooks/register.tsx +437 -0
  106. package/adapters/claude-code/mods/ork-torre/orkastery-mod.json +5 -0
  107. package/adapters/claude-code/mods/ork-torre/types/index.d.ts +108 -0
  108. package/adapters/codex/skills/ork/SKILL.md +2 -0
  109. package/adapters/hermes/README.md +64 -1
  110. package/adapters/hermes/bin/ork-conhecimento-colecoes.sh +14 -0
  111. package/adapters/hermes/bin/ork-conhecimento-listar.sh +15 -0
  112. package/adapters/hermes/bin/ork-conhecimento-mostrar.sh +16 -0
  113. package/adapters/hermes/bin/ork-conhecimento-verificar.sh +15 -0
  114. package/adapters/hermes/bin/ork-vigia-batida.py +127 -0
  115. package/adapters/hermes/hermes.plugin.json +4 -0
  116. package/adapters/hermes/hitl-ingress/__init__.py +101 -8
  117. package/adapters/hermes/skills/orkastery-devmaster/SKILL.md +3 -3
  118. package/adapters/openclaw/README.md +83 -10
  119. package/adapters/openclaw/bin/ork-vigia-batida.js +86 -0
  120. package/adapters/openclaw/dist/hitl-ingress.js +106 -9
  121. package/adapters/openclaw/dist/index.js +86 -0
  122. package/adapters/openclaw/openclaw.plugin.json +34 -4
  123. package/adapters/openclaw/package.json +2 -2
  124. package/adapters/openclaw/src/hitl-ingress.ts +103 -9
  125. package/adapters/openclaw/src/index.ts +94 -0
  126. package/assets/adapters-en/claude-code/README.md +403 -0
  127. package/assets/adapters-en/claude-code/agents/ork-check.md +33 -0
  128. package/assets/adapters-en/claude-code/agents/ork-go.md +33 -0
  129. package/assets/adapters-en/claude-code/agents/ork-goal.md +34 -0
  130. package/assets/adapters-en/claude-code/agents/ork-master.md +35 -0
  131. package/assets/adapters-en/claude-code/agents/ork-plan.md +33 -0
  132. package/assets/adapters-en/claude-code/agents/ork-ship.md +33 -0
  133. package/assets/adapters-en/claude-code/commands/check.md +46 -0
  134. package/assets/adapters-en/claude-code/commands/go.md +46 -0
  135. package/assets/adapters-en/claude-code/commands/goal.md +55 -0
  136. package/assets/adapters-en/claude-code/commands/master.md +54 -0
  137. package/assets/adapters-en/claude-code/commands/onboarding.md +22 -0
  138. package/assets/adapters-en/claude-code/commands/ork.md +126 -0
  139. package/assets/adapters-en/claude-code/commands/plan.md +47 -0
  140. package/assets/adapters-en/claude-code/commands/ship.md +45 -0
  141. package/assets/adapters-en/codex/skills/ork/SKILL.md +85 -0
  142. package/assets/adapters-en/hermes/README.md +273 -0
  143. package/assets/adapters-en/hermes/skills/orkastery-devmaster/SKILL.md +169 -0
  144. package/assets/docs-en/markdownlint-cli2.jsonc +22 -0
  145. package/assets/docs-en/padroes/documentacao-de-produto.md +135 -0
  146. package/assets/docs-en/padroes/roadmap-de-produto.md +100 -0
  147. package/assets/docs-en/produto/README.md +14 -0
  148. package/assets/docs-en/produto/_modelo-feature.md +62 -0
  149. package/assets/docs-en/roadmap/README.md +14 -0
  150. package/assets/docs-en/roadmap/_modelo-item.md +75 -0
  151. package/assets/references-en/README.md +25 -0
  152. package/assets/references-en/code-review-axes.md +82 -0
  153. package/assets/references-en/definition-of-done.md +74 -0
  154. package/assets/references-en/performance-checklist.md +53 -0
  155. package/assets/references-en/security-checklist.md +101 -0
  156. package/assets/references-en/testing-patterns.md +51 -0
  157. package/assets/security-scan/defaults/.golangci.yml +2 -0
  158. package/assets/security-scan/defaults/eslint.config.mjs +11 -0
  159. package/assets/security-scan/defaults/gitleaks.toml +3 -0
  160. package/assets/security-scan/defaults/ruff.toml +1 -0
  161. package/assets/security-scan/tools-agil.json +87 -0
  162. package/assets/security-scan/tools.json +625 -0
  163. package/assets/skills-en/core/onboarding/SKILL.md +58 -0
  164. package/assets/skills-en/core/orkastery-bootstrap/SKILL.md +119 -0
  165. package/assets/skills-en/core/thread-state/SKILL.md +88 -0
  166. package/assets/skills-en/governance/decision-triage/SKILL.md +65 -0
  167. package/assets/skills-en/governance/narrative-guardian/SKILL.md +66 -0
  168. package/assets/skills-en/governance/roadmap-keeper/SKILL.md +60 -0
  169. package/assets/skills-en/governance/scope-check-capability-map/SKILL.md +71 -0
  170. package/assets/skills-en/observability/thread-tracing/SKILL.md +63 -0
  171. package/assets/skills-en/phases/check-quality/SKILL.md +103 -0
  172. package/assets/skills-en/phases/go-implementation/SKILL.md +78 -0
  173. package/assets/skills-en/phases/goal-definition/SKILL.md +69 -0
  174. package/assets/skills-en/phases/master-metrics/SKILL.md +72 -0
  175. package/assets/skills-en/phases/plan-specification/SKILL.md +67 -0
  176. package/assets/skills-en/phases/security-remediation/SKILL.md +70 -0
  177. package/assets/skills-en/phases/ship-release/SKILL.md +71 -0
  178. package/assets/skills-en/reviewers/code-reviewer/SKILL.md +61 -0
  179. package/assets/skills-en/reviewers/security-auditor/SKILL.md +93 -0
  180. package/assets/skills-en/reviewers/test-engineer/SKILL.md +66 -0
  181. package/assets/skills-en/reviewers/web-performance-auditor/SKILL.md +63 -0
  182. package/dist/adapters/claude-bg.js +193 -15
  183. package/dist/adapters/codex-controller-worker.js +12 -5
  184. package/dist/adapters/codex-events.js +16 -4
  185. package/dist/adapters/codex.js +13 -2
  186. package/dist/agents-md.js +24 -15
  187. package/dist/atualizar-branch.js +245 -0
  188. package/dist/auditoria.js +13 -11
  189. package/dist/auditrun.js +68 -48
  190. package/dist/autorizacao-duravel.js +327 -0
  191. package/dist/board.js +98 -43
  192. package/dist/branch-de-estado.js +39 -9
  193. package/dist/busca-semantica.js +7 -5
  194. package/dist/catalogo.js +35 -1
  195. package/dist/changelog-reconciliacao.js +290 -0
  196. package/dist/check-agil.js +500 -0
  197. package/dist/check-modo.js +41 -0
  198. package/dist/check-paralelo.js +183 -0
  199. package/dist/ci.js +255 -46
  200. package/dist/ciclos.js +8 -6
  201. package/dist/claim-lint.js +12 -8
  202. package/dist/claims-conferir.js +350 -0
  203. package/dist/claims.js +13 -10
  204. package/dist/company-brain-client.js +45 -3
  205. package/dist/company-brain-journal.js +2 -1
  206. package/dist/company-brain-migration.js +47 -6
  207. package/dist/conducao-batida.js +759 -0
  208. package/dist/conducao-sentinela.js +405 -0
  209. package/dist/conducao-texto.js +12 -18
  210. package/dist/conducao.js +206 -59
  211. package/dist/conhecimento-consulta.js +270 -0
  212. package/dist/conhecimento.js +514 -0
  213. package/dist/conta-esgotada.js +127 -0
  214. package/dist/dado-privado.js +816 -0
  215. package/dist/decisao-autonoma.js +5 -4
  216. package/dist/demo.js +14 -12
  217. package/dist/dependencias-da-worktree.js +25 -0
  218. package/dist/divida.js +38 -36
  219. package/dist/docs.js +103 -82
  220. package/dist/doctor-forja.js +345 -0
  221. package/dist/doctor-pulse-cron.js +294 -27
  222. package/dist/doctor-rede.js +18 -17
  223. package/dist/doctor.js +278 -116
  224. package/dist/dsn-da-memoria.js +417 -0
  225. package/dist/entrega-por-mod.js +503 -0
  226. package/dist/entrega-pr.js +158 -57
  227. package/dist/escopo-escrita.js +10 -1
  228. package/dist/esgotamentos.js +13 -11
  229. package/dist/estado-thread.js +42 -17
  230. package/dist/evalrunner.js +35 -32
  231. package/dist/experiencia-instalacao.js +45 -25
  232. package/dist/fabrica-batida.js +323 -0
  233. package/dist/fabrica-estado.js +49 -16
  234. package/dist/fabrica-publicar.js +3 -1
  235. package/dist/fila-pesada.js +444 -0
  236. package/dist/fix.js +24 -21
  237. package/dist/forja/adaptador.js +6 -0
  238. package/dist/forja/ambiente-de-ci.js +27 -0
  239. package/dist/forja/api.js +256 -0
  240. package/dist/forja/cache.js +89 -0
  241. package/dist/forja/cli.js +60 -0
  242. package/dist/forja/contrato.js +9 -0
  243. package/dist/forja/endereco.js +43 -0
  244. package/dist/forja/estado.js +22 -0
  245. package/dist/forja/executor.js +73 -0
  246. package/dist/forja/github/ci.js +95 -0
  247. package/dist/forja/github/dono-da-rede.js +18 -0
  248. package/dist/forja/github/metadados.js +15 -0
  249. package/dist/forja/github/pedidos.js +200 -0
  250. package/dist/forja/gitlab/ci.js +141 -0
  251. package/dist/forja/gitlab/consultas.js +59 -0
  252. package/dist/forja/gitlab/dono-da-rede.js +43 -0
  253. package/dist/forja/gitlab/metadados.js +15 -0
  254. package/dist/forja/gitlab/pedidos-abertos.js +158 -0
  255. package/dist/forja/gitlab/pedidos.js +141 -0
  256. package/dist/forja/produtor.js +32 -0
  257. package/dist/forja/registro.js +31 -0
  258. package/dist/forja/resolver.js +121 -0
  259. package/dist/forja/texto.js +13 -0
  260. package/dist/forja/versao.js +71 -0
  261. package/dist/forja.js +124 -81
  262. package/dist/gates.js +3 -28
  263. package/dist/handoff.js +33 -19
  264. package/dist/hitl-contract.js +46 -43
  265. package/dist/hitl-curto.js +37 -25
  266. package/dist/hitl-gates.js +13 -11
  267. package/dist/hitl-local-receipt.js +53 -0
  268. package/dist/hitl-local.js +11 -2
  269. package/dist/hitl-lock.js +5 -11
  270. package/dist/hitl-public-receipt.js +11 -0
  271. package/dist/hitl-resumo.js +72 -3
  272. package/dist/hitl-sessions.js +62 -9
  273. package/dist/hitl-tempo-parado.js +4 -4
  274. package/dist/hitl-texto-livre.js +7 -4
  275. package/dist/hitl.js +63 -64
  276. package/dist/horario.js +30 -7
  277. package/dist/hosts.js +155 -134
  278. package/dist/impedimento.js +108 -14
  279. package/dist/index.js +1421 -1019
  280. package/dist/indice-vetorial.js +14 -12
  281. package/dist/indice.js +7 -1
  282. package/dist/init.js +54 -49
  283. package/dist/instabilidade.js +144 -0
  284. package/dist/integracoes-locais.js +4 -0
  285. package/dist/intelligence-graph-cli.js +213 -88
  286. package/dist/intelligence-graph-contexto.js +56 -17
  287. package/dist/intelligence-graph-contract.js +2 -1
  288. package/dist/intelligence-graph-extract-md.js +56 -4
  289. package/dist/intelligence-graph-extract-ts.js +71 -3
  290. package/dist/intelligence-graph-query.js +96 -34
  291. package/dist/leases.js +19 -18
  292. package/dist/ledger-stats.js +17 -16
  293. package/dist/ledger.js +46 -2
  294. package/dist/licoes.js +12 -11
  295. package/dist/liveness.js +6 -3
  296. package/dist/locale-accounts.js +220 -0
  297. package/dist/locale-adapter.js +291 -0
  298. package/dist/locale-ajuda.js +833 -0
  299. package/dist/locale-audit.js +199 -0
  300. package/dist/locale-claims.js +213 -0
  301. package/dist/locale-conducao.js +138 -0
  302. package/dist/locale-conhecimento.js +181 -0
  303. package/dist/locale-decisao.js +205 -0
  304. package/dist/locale-docs.js +230 -0
  305. package/dist/locale-estado.js +101 -0
  306. package/dist/locale-forja.js +290 -0
  307. package/dist/locale-gerados.js +165 -0
  308. package/dist/locale-grafo.js +129 -0
  309. package/dist/locale-master.js +182 -0
  310. package/dist/locale-network.js +524 -0
  311. package/dist/locale-onboarding.js +92 -0
  312. package/dist/locale-operacao-restante.js +931 -0
  313. package/dist/locale-phase.js +151 -0
  314. package/dist/locale-projetos.js +100 -0
  315. package/dist/locale-prompts.js +194 -0
  316. package/dist/locale-pulse.js +349 -0
  317. package/dist/locale-reservas.js +87 -0
  318. package/dist/locale-retry.js +524 -0
  319. package/dist/locale-roadmap.js +102 -0
  320. package/dist/locale-security-scan.js +69 -0
  321. package/dist/locale-setup.js +192 -0
  322. package/dist/locale-ship.js +597 -0
  323. package/dist/locale-thread.js +421 -0
  324. package/dist/locale-verify.js +201 -0
  325. package/dist/locale-worktree.js +246 -0
  326. package/dist/locale.js +1258 -0
  327. package/dist/maestro-runtime.js +22 -3
  328. package/dist/manifest.js +415 -13
  329. package/dist/maquina-ociosa.js +211 -0
  330. package/dist/maquina.js +31 -7
  331. package/dist/master-digest.js +6 -1
  332. package/dist/master-nota-local.js +200 -0
  333. package/dist/master-nota.js +14 -8
  334. package/dist/master.js +139 -65
  335. package/dist/mcp-artifacts.js +11 -2
  336. package/dist/mcp-conhecimento.js +52 -0
  337. package/dist/mcp-experiencia.js +26 -5
  338. package/dist/mcp-git.js +23 -6
  339. package/dist/mcp-grafo.js +7 -4
  340. package/dist/mcp-install.js +73 -8
  341. package/dist/mcp-noctum.js +101 -0
  342. package/dist/mcp-server.js +90 -16
  343. package/dist/mcp-ship-transporte.js +977 -0
  344. package/dist/mcp-ship.js +71 -25
  345. package/dist/mcp-transportes.js +17 -0
  346. package/dist/mcp-verify.js +6 -1
  347. package/dist/memoria.js +63 -58
  348. package/dist/modos-migracao.js +8 -6
  349. package/dist/modos.js +20 -24
  350. package/dist/network-roadmap.js +90 -51
  351. package/dist/noctum-aceite.js +789 -0
  352. package/dist/noctum-arco.js +1418 -0
  353. package/dist/noctum-capacidade.js +141 -0
  354. package/dist/noctum-changelog.js +399 -0
  355. package/dist/noctum-cli.js +482 -0
  356. package/dist/noctum-coordenacao.js +1225 -0
  357. package/dist/noctum-entrega.js +1169 -0
  358. package/dist/noctum-envelope.js +1046 -0
  359. package/dist/noctum-execucao.js +376 -0
  360. package/dist/noctum-fechamento.js +405 -0
  361. package/dist/noctum-fila.js +314 -0
  362. package/dist/noctum-guarda.js +256 -0
  363. package/dist/noctum-integracao.js +507 -0
  364. package/dist/noctum-maquinas.js +383 -0
  365. package/dist/noctum-medicao.js +450 -0
  366. package/dist/noctum-modo.js +362 -0
  367. package/dist/noctum-pergunta-canal.js +96 -0
  368. package/dist/noctum-pergunta.js +115 -0
  369. package/dist/noctum-provas.js +838 -0
  370. package/dist/noctum-reconciliacao.js +591 -0
  371. package/dist/noctum-registro.js +215 -0
  372. package/dist/noctum-relatorio.js +827 -0
  373. package/dist/noctum-resposta.js +207 -0
  374. package/dist/noctum-sessoes-em-voo.js +93 -0
  375. package/dist/noctum-supervisao.js +649 -0
  376. package/dist/noctum-terminal.js +459 -0
  377. package/dist/noctum-transporte.js +655 -0
  378. package/dist/noctum-vigia.js +639 -0
  379. package/dist/ocupacao.js +32 -3
  380. package/dist/onboarding.js +56 -26
  381. package/dist/orkmind.js +48 -25
  382. package/dist/orquestracao.js +44 -47
  383. package/dist/parado-no-condutor.js +174 -127
  384. package/dist/phase.js +144 -63
  385. package/dist/policies.js +37 -4
  386. package/dist/portfolio.js +4 -2
  387. package/dist/postura-local.js +235 -0
  388. package/dist/preflight.js +11 -10
  389. package/dist/procedencia.js +220 -0
  390. package/dist/projeto-alvo.js +186 -24
  391. package/dist/prompts.js +140 -42
  392. package/dist/prova-minima.js +5 -6
  393. package/dist/pulse-cadencia.js +5 -4
  394. package/dist/pulse-consentimento.js +53 -1
  395. package/dist/pulse-delivery.js +151 -24
  396. package/dist/pulse-resposta.js +368 -4
  397. package/dist/pulse.js +188 -22
  398. package/dist/ratelimit.js +16 -6
  399. package/dist/recall.js +14 -13
  400. package/dist/redacao-saida.js +63 -0
  401. package/dist/rede-adesao.js +13 -8
  402. package/dist/rede-forja.js +108 -24
  403. package/dist/rede-status.js +66 -47
  404. package/dist/rede.js +86 -46
  405. package/dist/retomada-checkpoint.js +101 -0
  406. package/dist/retry.js +451 -212
  407. package/dist/roadmap-reservas.js +45 -28
  408. package/dist/roadmap-status.js +129 -33
  409. package/dist/runtime-ambiente.js +5 -0
  410. package/dist/runtime-context.js +284 -32
  411. package/dist/runtime-escada.js +423 -0
  412. package/dist/runtime-profiles.js +103 -46
  413. package/dist/runtimes.js +2 -1
  414. package/dist/saida-segura.js +3 -2
  415. package/dist/security-scan/agil.js +355 -0
  416. package/dist/security-scan/cli.js +76 -0
  417. package/dist/security-scan/compare.js +149 -0
  418. package/dist/security-scan/config.js +93 -0
  419. package/dist/security-scan/detect.js +97 -0
  420. package/dist/security-scan/executor.js +188 -0
  421. package/dist/security-scan/guard.js +180 -0
  422. package/dist/security-scan/imagem-de-lint.js +96 -0
  423. package/dist/security-scan/normalize/actionlint.js +12 -0
  424. package/dist/security-scan/normalize/eslint.js +12 -0
  425. package/dist/security-scan/normalize/gitleaks.js +13 -0
  426. package/dist/security-scan/normalize/golangci-lint.js +13 -0
  427. package/dist/security-scan/normalize/govulncheck.js +36 -0
  428. package/dist/security-scan/normalize/index.js +25 -0
  429. package/dist/security-scan/normalize/npm-audit.js +30 -0
  430. package/dist/security-scan/normalize/osv-scanner.js +32 -0
  431. package/dist/security-scan/normalize/oxlint.js +51 -0
  432. package/dist/security-scan/normalize/pip-audit.js +16 -0
  433. package/dist/security-scan/normalize/ruff.js +12 -0
  434. package/dist/security-scan/normalize/semgrep.js +20 -0
  435. package/dist/security-scan/normalize/trivy.js +33 -0
  436. package/dist/security-scan/normalize/util.js +204 -0
  437. package/dist/security-scan/normalize/zizmor.js +19 -0
  438. package/dist/security-scan/report.js +156 -0
  439. package/dist/security-scan/run.js +448 -0
  440. package/dist/security-scan/tools.js +62 -0
  441. package/dist/security-scan/trabalhador.js +74 -0
  442. package/dist/security-scan/types.js +15 -0
  443. package/dist/session-events.js +26 -5
  444. package/dist/session-watcher-claude.js +81 -20
  445. package/dist/session-watcher.js +340 -42
  446. package/dist/sessoes-contas.js +10 -1
  447. package/dist/sessoes-inventario.js +1 -1
  448. package/dist/sessoes.js +25 -23
  449. package/dist/setup.js +59 -58
  450. package/dist/ship-publicar.js +971 -0
  451. package/dist/ship.js +243 -97
  452. package/dist/steal.js +77 -0
  453. package/dist/superficie.js +14 -11
  454. package/dist/thread-close.js +12 -11
  455. package/dist/thread.js +274 -100
  456. package/dist/tokens.js +15 -11
  457. package/dist/trabalho-thread.js +297 -0
  458. package/dist/transporte-do-canal.js +189 -0
  459. package/dist/types.js +12 -1
  460. package/dist/util.js +13 -3
  461. package/dist/varredura-acoes.js +507 -0
  462. package/dist/verify.js +608 -76
  463. package/dist/vida-da-thread.js +254 -0
  464. package/dist/worktree-local.js +167 -0
  465. package/dist/worktree.js +99 -83
  466. package/dist/yaml.js +27 -8
  467. package/eval/casos/check-quality.json +77 -0
  468. package/eval/casos/security-auditor.json +148 -0
  469. package/eval/casos/security-remediation.json +161 -0
  470. package/eval/fixtures/security-scan/README.md +8 -0
  471. package/eval/fixtures/security-scan/go/.github/workflows/ci.yml +12 -0
  472. package/eval/fixtures/security-scan/go/Dockerfile +4 -0
  473. package/eval/fixtures/security-scan/go/README.md +4 -0
  474. package/eval/fixtures/security-scan/go/config.go +4 -0
  475. package/eval/fixtures/security-scan/go/go.mod +5 -0
  476. package/eval/fixtures/security-scan/go/go.sum +2 -0
  477. package/eval/fixtures/security-scan/go/main.go +31 -0
  478. package/eval/fixtures/security-scan/js/.github/workflows/ci.yml +12 -0
  479. package/eval/fixtures/security-scan/js/Dockerfile +3 -0
  480. package/eval/fixtures/security-scan/js/README.md +4 -0
  481. package/eval/fixtures/security-scan/js/package-lock.json +844 -0
  482. package/eval/fixtures/security-scan/js/package.json +10 -0
  483. package/eval/fixtures/security-scan/js/src/config.js +4 -0
  484. package/eval/fixtures/security-scan/js/src/server.js +17 -0
  485. package/eval/fixtures/security-scan/js/src/util.ts +4 -0
  486. package/eval/fixtures/security-scan/js/tsconfig.json +4 -0
  487. package/eval/fixtures/security-scan/python/.github/workflows/ci.yml +12 -0
  488. package/eval/fixtures/security-scan/python/Dockerfile +3 -0
  489. package/eval/fixtures/security-scan/python/README.md +4 -0
  490. package/eval/fixtures/security-scan/python/app/__init__.py +0 -0
  491. package/eval/fixtures/security-scan/python/app/config.py +2 -0
  492. package/eval/fixtures/security-scan/python/app/main.py +19 -0
  493. package/eval/fixtures/security-scan/python/requirements.txt +1 -0
  494. package/package.json +9 -4
  495. package/references/security-checklist.md +3 -3
  496. package/schemas/code-artifact-graph.v1.schema.json +2 -1
  497. package/skills/README.md +1 -0
  498. package/skills/core/orkastery-bootstrap/SKILL.md +2 -2
  499. package/skills/phases/check-quality/SKILL.md +16 -0
  500. package/skills/phases/go-implementation/SKILL.md +6 -0
  501. package/skills/phases/security-remediation/SKILL.md +70 -0
  502. package/skills/reviewers/security-auditor/SKILL.md +25 -0
@@ -0,0 +1,220 @@
1
+ "use strict";
2
+ /**
3
+ * RM-061, fatia F3b: a familia `accounts` do catalogo de mensagens (`ork accounts list|add|remove|check|esgotamentos`),
4
+ * a tabela dos perfis, o relatorio dos esgotamentos e as recusas do registro de perfis (`runtime-profiles.ts`). O pt-BR e
5
+ * a fonte; o ingles e tipado por ele. Sem import do nucleo.
6
+ *
7
+ * O id, o runtime, o diretorio e o motivo tipado sao dado e saem iguais; o estado de um perfil (dado do store e do
8
+ * `--json`) so se traduz na impressao, pelo id. O que o store grava (`ultimaFalha.detalhe`) e o limite que o `--json`
9
+ * dos esgotamentos leva saem sempre do pt-BR. As recusas `runtime.profiles.*` nascem por `ErroDoCatalogo`, com o codigo
10
+ * tipado igual nas duas linguas.
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.ACCOUNTS_EN = exports.ACCOUNTS_PT_BR = void 0;
14
+ /**
15
+ * O detalhe da conferencia de login que o proprio ork escreve (`conferirAuth` do claude e do codex) e dado: vai ao store
16
+ * em pt-BR e so a impressao o traduz, pela frase exata. A saida do CLI que vem dentro dele (o trecho do `codex`) segue
17
+ * como veio.
18
+ */
19
+ const DETALHES_DO_LOGIN_EN = [
20
+ [/^claude auth status sem resposta \(timeout, sinal ou binario ausente\)$/, () => 'claude auth status gave no answer (timeout, signal or missing binary)'],
21
+ [/^claude auth status sem JSON legivel \(codigo (.+)\)$/, (codigo) => `claude auth status gave no readable JSON (exit code ${codigo})`],
22
+ [/^claude auth status sem JSON legivel$/, () => 'claude auth status gave no readable JSON'],
23
+ [/^claude auth status respondeu por outro diretorio de configuracao; perfil nao aplicado$/,
24
+ () => 'claude auth status answered for another configuration directory; profile not applied'],
25
+ [/^claude auth status: provider pago \((.+)\); so a assinatura claude\.ai despacha$/,
26
+ (partes) => `claude auth status: paid provider (${partes}); only the claude.ai subscription dispatches`],
27
+ [/^codex login status sem resposta \(timeout, sinal ou binario ausente\)$/, () => 'codex login status gave no answer (timeout, signal or missing binary)'],
28
+ [/^codex login status saiu (-?\d+)(: [\s\S]*)?$/, (codigo, resto) => `codex login status exited ${codigo}${resto ?? ''}`],
29
+ [/^codex login status: login por API key \(provider pago\)$/, () => 'codex login status: API key login (paid provider)'],
30
+ [/^codex login status: login sem assinatura ChatGPT comprovada \(tratado como provider pago\)$/,
31
+ () => 'codex login status: login without a proven ChatGPT subscription (treated as a paid provider)'],
32
+ ];
33
+ const ESTADOS_EN = {
34
+ ativo: 'active', esgotado: 'exhausted', 'sem-auth': 'no-auth', 'provider-pago': 'paid-provider', desativado: 'disabled',
35
+ };
36
+ exports.ACCOUNTS_PT_BR = {
37
+ semPerfis: 'Nenhum perfil configurado: cada runtime despacha pelo ambiente do processo.',
38
+ colunas: ['PERFIL', 'RUNTIME', 'DIRETORIO', 'ESTADO', 'ESGOTADO ATE', 'ULTIMO USO', 'ULTIMA FALHA'],
39
+ /** O estado gravado no store, como o texto o mostra. */
40
+ estado: (estado) => estado,
41
+ falhaEm: (motivo, quando) => `${motivo} em ${quando}`,
42
+ usoAdd: 'uso: ork accounts add <id> --runtime claude-bg|codex --dir <diretorio> [--sem-login]',
43
+ reativado: (id) => `Perfil ${id} reativado: mesmo id, runtime e diretorio do perfil desativado.`,
44
+ recusado: (erro) => `perfil recusado: ${erro}`,
45
+ loginPendente: (variavel, dir, comando, id) => `Login pendente: rode ${variavel}=${dir} ${comando} e depois ork accounts check ${id}`,
46
+ resultadoAdd: (id, runtime, dir, situacao) => `Perfil ${id} (${runtime}) em ${dir}: ${situacao}`,
47
+ conferido: 'login de assinatura conferido',
48
+ /** O detalhe da conferencia de login (dado do store), como a impressao o mostra. */
49
+ detalheDoLogin: (detalhe) => detalhe,
50
+ inconclusivaAdd: (detalhe) => `conferencia de login inconclusiva (${detalhe}); o proximo despacho confere de novo`,
51
+ pagoAdd: (detalhe) => `provider pago (${detalhe}); nunca recebe despacho`,
52
+ semLoginAdd: (detalhe) => `sem login (${detalhe}); fora do rodizio`,
53
+ usoRemove: 'uso: ork accounts remove <id>',
54
+ desativado: (id) => `Perfil ${id} desativado: o diretorio e o login do CLI ficam onde estao.`,
55
+ perfilAtivoNaoExiste: (alvo) => `perfil ativo "${alvo}" nao existe (veja: ork accounts list)`,
56
+ resultadoCheck: (id, runtime, situacao) => `${id} (${runtime}): ${situacao}`,
57
+ inconclusivaCheck: (detalhe) => `conferencia de login inconclusiva, estado mantido (${detalhe})`,
58
+ pagoCheck: (detalhe) => `provider pago, nunca despacha (${detalhe})`,
59
+ semLoginCheck: (detalhe) => `sem login (${detalhe})`,
60
+ tipoDeLimite: (tipo) => ({ sessao: 'sessao', semanal: 'semanal', 'gasto-admin': 'gasto definido pelo admin',
61
+ outro: 'outro limite', nenhum: 'nenhum limite observado' }[tipo] ?? tipo),
62
+ limiteDaConta: (limite) => `limite: ${limite}`,
63
+ cotaMedida: (usada, limite, unidade) => `${usada}/${limite}${unidade === '%' ? '%' : ` ${unidade ?? 'unidades'}`} (medida pelo runtime)`,
64
+ cotaIndisponivel: 'nao exposta pelo runtime',
65
+ cotaDaConta: (cota) => `cota: ${cota}`,
66
+ sessaoSemVinculo: (sessao) => `sessao:${sessao}`,
67
+ cargaDaConta: (carga) => `roda agora: ${carga}`,
68
+ cargaVazia: 'roda agora: nada',
69
+ cargaInconclusiva: 'roda agora: inventario inconclusivo',
70
+ voltaEm: (quando) => `volta: ${quando}`,
71
+ voltaSemMedida: 'volta: sem prazo medido',
72
+ marcaExpirada: 'marca vencida expirada nesta conferencia',
73
+ periodoInvalido: (erro) => `${erro} (use --desde 7d, 24h, 30m ou uma data ISO)`,
74
+ desconhecido: (sub) => `subcomando desconhecido: accounts ${sub} (use list, add, remove, check ou esgotamentos)`,
75
+ // ork accounts esgotamentos
76
+ esgotamentosTitulo: (desde, ate, intervalo) => `Esgotamentos de conta ${desde} ate ${ate} ${intervalo}`,
77
+ marcasVivas: (n) => ` marcas vivas no registro: ${n}`,
78
+ marca: (conta, runtime, estado, desde, ate, projeto, motivo) => ` conta ${conta} ${runtime} ${estado} desde ${desde}, ${ate === null ? 'sem prazo' : `ate ${ate}`} visto em ${projeto} (${motivo})`,
79
+ projetosLidos: (lista) => ` projetos lidos: ${lista ?? 'nenhum registrado'}`,
80
+ projetoLido: (nome, despachos) => `${nome} (${despachos === null ? 'fora do disco' : `${despachos} despacho(s) com perfil`})`,
81
+ despachosMarcados: (n) => ` despachos em conta marcada por outro projeto: ${n}`,
82
+ colunasDosDespachos: ['QUANDO', 'PROJETO', 'THREAD', 'FASE', 'PERFIL', 'CONTA', 'MARCADA POR'],
83
+ limite: (limite) => ` limite: ${limite}`,
84
+ /** O limite que o `--json` dos esgotamentos leva (dado, sempre em pt-BR); a impressao o mostra no locale do comando. */
85
+ limiteDoRelatorio: 'o registro guarda so as marcas vivas (uso bem sucedido, login reconferido e prazo vencido ' +
86
+ 'apagam a marca): o total e um piso, valido enquanto a marca existe',
87
+ // O que o store grava (sempre em pt-BR).
88
+ inconclusiva: (detalhe) => `conferencia de login inconclusiva: ${detalhe}`,
89
+ vistoEmOutroProjeto: (detalhe) => `visto em outro projeto: ${detalhe}`,
90
+ // As recusas do registro de perfis (runtime-profiles.ts).
91
+ uidIndisponivel: 'runtime.profiles.invalid: uid do processo indisponivel',
92
+ diretorioNaoNormalizado: 'runtime.profiles.invalid: diretorio do perfil precisa ser caminho absoluto normalizado',
93
+ idInvalido: 'runtime.profiles.invalid: id do perfil aceita letras, digitos, ponto, hifen e sublinhado (ate 63)',
94
+ despachoAusente: 'runtime.profiles.invalid: perfil de despacho ausente',
95
+ runtimeDesconhecido: 'runtime.profiles.invalid: runtime do perfil desconhecido',
96
+ despachoComCampo: 'runtime.profiles.invalid: perfil de despacho com campo inesperado',
97
+ perfilDeOutroRuntime: 'runtime.profiles.invalid: perfil de outro runtime',
98
+ sensorDiverge: 'runtime.profiles.invalid: perfil do sensor diverge do despacho',
99
+ pastaPrivada: 'runtime.profiles.invalid: pasta privada precisa ser 0700 do proprio usuario',
100
+ diretorioDeEstado: 'runtime.profiles.invalid: diretorio de estado invalido',
101
+ dataInvalida: (campo) => `runtime.profiles.invalid: ${campo} invalido`,
102
+ perfilInvalido: 'runtime.profiles.invalid: perfil invalido',
103
+ campoInesperado: 'runtime.profiles.invalid: campo inesperado no perfil',
104
+ estadoDesconhecido: 'runtime.profiles.invalid: estado do perfil desconhecido',
105
+ ultimaFalhaInvalida: 'runtime.profiles.invalid: ultimaFalha invalida',
106
+ storeInvalido: 'runtime.profiles.invalid: store invalido',
107
+ contratoEsperado: (contrato) => `runtime.profiles.invalid: contrato ${contrato} esperado`,
108
+ idRepetido: 'runtime.profiles.invalid: id de perfil repetido',
109
+ mesmoDiretorio: 'runtime.profiles.invalid: dois perfis do mesmo runtime no mesmo diretorio',
110
+ arquivoIlegivel: 'runtime.profiles.invalid: arquivo de perfis ilegivel ou link simbolico',
111
+ arquivoSemPermissao: 'runtime.profiles.invalid: arquivo de perfis precisa ser 0600 do proprio usuario',
112
+ arquivoJson: 'runtime.profiles.invalid: arquivo de perfis com JSON invalido',
113
+ pastaTrocada: 'runtime.profiles.invalid: pasta privada trocada durante a gravacao',
114
+ storeOcupado: 'runtime.profiles.busy: store de perfis ocupado; tente novamente',
115
+ perfilNaoExiste: (id) => `runtime.profiles.unknown: perfil "${id}" nao existe (veja: ork accounts list)`,
116
+ diretorioInacessivel: (codigo) => `runtime.profiles.invalid: diretorio do perfil inacessivel (${codigo})`,
117
+ naoEDiretorio: 'runtime.profiles.invalid: o caminho do perfil nao e diretorio',
118
+ outroUsuario: 'runtime.profiles.invalid: diretorio do perfil pertence a outro usuario',
119
+ semLeituraEscrita: 'runtime.profiles.invalid: diretorio do perfil sem leitura e escrita para este usuario',
120
+ runtimeSemPerfil: (runtime) => `runtime.profiles.invalid: runtime "${runtime}" nao aceita perfil`,
121
+ jaExiste: (id, desativadoEm) => `runtime.profiles.invalid: perfil "${id}" ja existe` +
122
+ (desativadoEm !== null ? ` (desativado em ${desativadoEm}; reative com o mesmo --runtime e --dir)` : ''),
123
+ jaHaPerfil: (runtime, dir) => `runtime.profiles.invalid: ja ha perfil ${runtime} em ${dir}`,
124
+ mesmoDiretorioDoPerfil: (dir, id, real) => `runtime.profiles.invalid: ${dir} e o mesmo diretorio do perfil "${id}" (${real})`,
125
+ estaDesativado: (id) => `runtime.profiles.invalid: perfil "${id}" esta desativado`,
126
+ cotaExigePrazo: 'runtime.profiles.invalid: cota esgotada exige esgotadoAte',
127
+ registroInvalido: 'runtime.profiles.invalid: registro de contas invalido',
128
+ contaInvalida: 'runtime.profiles.invalid: conta compartilhada invalida',
129
+ };
130
+ exports.ACCOUNTS_EN = {
131
+ semPerfis: 'No profile configured: each runtime dispatches with the process environment.',
132
+ colunas: ['PROFILE', 'RUNTIME', 'DIRECTORY', 'STATE', 'EXHAUSTED UNTIL', 'LAST USE', 'LAST FAILURE'],
133
+ estado: (estado) => ESTADOS_EN[estado] ?? estado,
134
+ falhaEm: (motivo, quando) => `${motivo} at ${quando}`,
135
+ usoAdd: 'usage: ork accounts add <id> --runtime claude-bg|codex --dir <directory> [--sem-login]',
136
+ reativado: (id) => `Profile ${id} reactivated: same id, runtime and directory as the disabled profile.`,
137
+ recusado: (erro) => `profile refused: ${erro}`,
138
+ loginPendente: (variavel, dir, comando, id) => `Login pending: run \`${variavel}=${dir} ${comando}\`, then \`ork accounts check ${id}\``,
139
+ resultadoAdd: (id, runtime, dir, situacao) => `Profile ${id} (${runtime}) in ${dir}: ${situacao}`,
140
+ conferido: 'subscription login checked',
141
+ detalheDoLogin: (detalhe) => {
142
+ const regra = DETALHES_DO_LOGIN_EN.find(([re]) => re.test(detalhe));
143
+ return regra ? regra[1](...(regra[0].exec(detalhe) ?? []).slice(1)) : detalhe;
144
+ },
145
+ inconclusivaAdd: (detalhe) => `login check inconclusive (${detalhe}); the next dispatch checks again`,
146
+ pagoAdd: (detalhe) => `paid provider (${detalhe}); never receives a dispatch`,
147
+ semLoginAdd: (detalhe) => `no login (${detalhe}); out of the rotation`,
148
+ usoRemove: 'usage: ork accounts remove <id>',
149
+ desativado: (id) => `Profile ${id} disabled: the directory and the CLI login stay where they are.`,
150
+ perfilAtivoNaoExiste: (alvo) => `active profile "${alvo}" does not exist (see: \`ork accounts list\`)`,
151
+ resultadoCheck: (id, runtime, situacao) => `${id} (${runtime}): ${situacao}`,
152
+ inconclusivaCheck: (detalhe) => `login check inconclusive, state kept (${detalhe})`,
153
+ pagoCheck: (detalhe) => `paid provider, never dispatches (${detalhe})`,
154
+ semLoginCheck: (detalhe) => `no login (${detalhe})`,
155
+ tipoDeLimite: (tipo) => ({ sessao: 'session', semanal: 'weekly', 'gasto-admin': 'admin-defined spend',
156
+ outro: 'other limit', nenhum: 'no observed limit' }[tipo] ?? tipo),
157
+ limiteDaConta: (limite) => `limit: ${limite}`,
158
+ cotaMedida: (usada, limite, unidade) => `${usada}/${limite}${unidade === '%' ? '%' : ` ${unidade ?? 'units'}`} (measured by the runtime)`,
159
+ cotaIndisponivel: 'not exposed by the runtime',
160
+ cotaDaConta: (cota) => `quota: ${cota}`,
161
+ sessaoSemVinculo: (sessao) => `session:${sessao}`,
162
+ cargaDaConta: (carga) => `running now: ${carga}`,
163
+ cargaVazia: 'running now: nothing',
164
+ cargaInconclusiva: 'running now: inconclusive inventory',
165
+ voltaEm: (quando) => `returns: ${quando}`,
166
+ voltaSemMedida: 'returns: no measured deadline',
167
+ marcaExpirada: 'expired mark cleared in this check',
168
+ periodoInvalido: (erro) => `${erro} (use \`--desde\` 7d, 24h, 30m or an ISO date)`,
169
+ desconhecido: (sub) => `unknown subcommand: accounts ${sub} (use list, add, remove, check or esgotamentos)`,
170
+ esgotamentosTitulo: (desde, ate, intervalo) => `Account exhaustions ${desde} to ${ate} ${intervalo}`,
171
+ marcasVivas: (n) => ` live marks in the registry: ${n}`,
172
+ marca: (conta, runtime, estado, desde, ate, projeto, motivo) => ` account ${conta} ${runtime} ${estado} since ${desde}, ${ate === null ? 'no deadline' : `until ${ate}`} seen in ${projeto} (${motivo})`,
173
+ projetosLidos: (lista) => ` projects read: ${lista ?? 'none registered'}`,
174
+ projetoLido: (nome, despachos) => `${nome} (${despachos === null ? 'off disk' : `${despachos} dispatch(es) with a profile`})`,
175
+ despachosMarcados: (n) => ` dispatches on an account marked by another project: ${n}`,
176
+ colunasDosDespachos: ['WHEN', 'PROJECT', 'THREAD', 'PHASE', 'PROFILE', 'ACCOUNT', 'MARKED BY'],
177
+ limite: (limite) => ` limit: ${limite}`,
178
+ limiteDoRelatorio: 'the registry only keeps live marks (a successful use, a rechecked login and an expired deadline clear the ' +
179
+ 'mark): the total is a floor, valid while the mark exists',
180
+ inconclusiva: (detalhe) => `login check inconclusive: ${detalhe}`,
181
+ vistoEmOutroProjeto: (detalhe) => `seen in another project: ${detalhe}`,
182
+ uidIndisponivel: 'runtime.profiles.invalid: process uid unavailable',
183
+ diretorioNaoNormalizado: 'runtime.profiles.invalid: the profile directory must be a normalized absolute path',
184
+ idInvalido: 'runtime.profiles.invalid: a profile id takes letters, digits, dot, hyphen and underscore (up to 63)',
185
+ despachoAusente: 'runtime.profiles.invalid: dispatch profile missing',
186
+ runtimeDesconhecido: 'runtime.profiles.invalid: unknown profile runtime',
187
+ despachoComCampo: 'runtime.profiles.invalid: dispatch profile with an unexpected field',
188
+ perfilDeOutroRuntime: 'runtime.profiles.invalid: profile of another runtime',
189
+ sensorDiverge: 'runtime.profiles.invalid: the sensor profile differs from the dispatch',
190
+ pastaPrivada: 'runtime.profiles.invalid: the private folder must be 0700 and owned by this user',
191
+ diretorioDeEstado: 'runtime.profiles.invalid: invalid state directory',
192
+ dataInvalida: (campo) => `runtime.profiles.invalid: invalid ${campo}`,
193
+ perfilInvalido: 'runtime.profiles.invalid: invalid profile',
194
+ campoInesperado: 'runtime.profiles.invalid: unexpected field in the profile',
195
+ estadoDesconhecido: 'runtime.profiles.invalid: unknown profile state',
196
+ ultimaFalhaInvalida: 'runtime.profiles.invalid: invalid `ultimaFalha`',
197
+ storeInvalido: 'runtime.profiles.invalid: invalid store',
198
+ contratoEsperado: (contrato) => `runtime.profiles.invalid: contract ${contrato} expected`,
199
+ idRepetido: 'runtime.profiles.invalid: repeated profile id',
200
+ mesmoDiretorio: 'runtime.profiles.invalid: two profiles of the same runtime in the same directory',
201
+ arquivoIlegivel: 'runtime.profiles.invalid: profiles file unreadable or a symbolic link',
202
+ arquivoSemPermissao: 'runtime.profiles.invalid: the profiles file must be 0600 and owned by this user',
203
+ arquivoJson: 'runtime.profiles.invalid: profiles file with invalid JSON',
204
+ pastaTrocada: 'runtime.profiles.invalid: private folder swapped during the write',
205
+ storeOcupado: 'runtime.profiles.busy: profile store busy; try again',
206
+ perfilNaoExiste: (id) => `runtime.profiles.unknown: profile "${id}" does not exist (see: \`ork accounts list\`)`,
207
+ diretorioInacessivel: (codigo) => `runtime.profiles.invalid: profile directory not accessible (${codigo})`,
208
+ naoEDiretorio: 'runtime.profiles.invalid: the profile path is not a directory',
209
+ outroUsuario: 'runtime.profiles.invalid: the profile directory belongs to another user',
210
+ semLeituraEscrita: 'runtime.profiles.invalid: the profile directory lacks read and write access for this user',
211
+ runtimeSemPerfil: (runtime) => `runtime.profiles.invalid: runtime "${runtime}" does not take a profile`,
212
+ jaExiste: (id, desativadoEm) => `runtime.profiles.invalid: profile "${id}" already exists` +
213
+ (desativadoEm !== null ? ` (disabled on ${desativadoEm}; reactivate it with the same \`--runtime\` and \`--dir\`)` : ''),
214
+ jaHaPerfil: (runtime, dir) => `runtime.profiles.invalid: there is already a ${runtime} profile in ${dir}`,
215
+ mesmoDiretorioDoPerfil: (dir, id, real) => `runtime.profiles.invalid: ${dir} is the same directory as profile "${id}" (${real})`,
216
+ estaDesativado: (id) => `runtime.profiles.invalid: profile "${id}" is disabled`,
217
+ cotaExigePrazo: 'runtime.profiles.invalid: an exhausted quota needs `esgotadoAte`',
218
+ registroInvalido: 'runtime.profiles.invalid: invalid account registry',
219
+ contaInvalida: 'runtime.profiles.invalid: invalid shared account',
220
+ };
@@ -0,0 +1,291 @@
1
+ "use strict";
2
+ /**
3
+ * RM-061, fatia F3b: a familia `adapter` do catalogo de mensagens (`ork adapter list|show|install`): a tabela dos hosts,
4
+ * a descricao e os pitfalls de cada um, o texto da instalacao, os avisos do pacote de experiencia e as recusas. O pt-BR
5
+ * e a fonte (o `HOSTS` de `hosts.ts` le a descricao e os pitfalls daqui); o ingles e tipado por ele. Sem import do nucleo.
6
+ *
7
+ * O host, o caminho, o comando de ativacao, o motivo da divergencia (`catalogo-andou`) e o recibo `INSTALADO.json` sao
8
+ * dado e saem iguais nas duas linguas. A prova de cada pitfall e um comando: so o comentario depois do `#` muda.
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.ADAPTER_EN = exports.ADAPTER_PT_BR = void 0;
12
+ const HOSTS_PT_BR = {
13
+ 'claude-code': {
14
+ descricao: 'Plugin com as skills do catalogo, subagentes de fase, entrada /orkastery:ork e hooks do Orkastery',
15
+ pitfalls: [
16
+ {
17
+ titulo: 'manifesto sem os caminhos das skills instala limpo e nao expoe nada',
18
+ detalhe: 'o plugin auto-descobre skills/<nome>/SKILL.md e para ai: ele nao desce nos buckets (core/, phases/, reviewers/, ...) que este catalogo usa, entao o plugin.json declara cada caminho de skill, um a um',
19
+ prova: 'claude plugin details orkastery # Skills (N) soma as skills do plugin.json e os comandos de commands/',
20
+ },
21
+ {
22
+ titulo: 'duas copias do catalogo divergem',
23
+ detalhe: 'a fonte unica e skills/ na raiz do produto; o INSTALADO.json guarda a origem e o sha256 de cada arquivo, e reinstalar CLASSIFICA cada divergencia por ele: o que so mudou no catalogo ressincroniza sozinho, o que voce editou barra e pede decisao por arquivo (--aceitar-catalogo ou --manter-copia). Editar a copia instalada e bandeira vermelha',
24
+ prova: 'ork adapter install claude-code --dry-run # mostra o que divergiu do catalogo',
25
+ },
26
+ {
27
+ titulo: 'hook com caminho relativo nao roda, e o guard vira decoracao',
28
+ detalhe: 'o hooks.json chama node "${CLAUDE_PLUGIN_ROOT}/hooks/ork-guard.js", nunca um caminho relativo ao diretorio de trabalho, que muda a cada worktree de thread',
29
+ prova: `echo '{"tool_name":"Bash","tool_input":{"command":"git add -A"}}' | node <destino>/hooks/ork-guard.js ; echo "codigo: $?" # 2 = guard vivo`,
30
+ },
31
+ ],
32
+ },
33
+ codex: {
34
+ descricao: 'Entrada $ork e catalogo de conducao em skills locais do projeto, sem configuracao global',
35
+ pitfalls: [
36
+ {
37
+ titulo: 'skills instaladas fora do projeto da sessao',
38
+ detalhe: 'Codex descobre .agents/skills a partir do diretorio da sessao ate a raiz do repositorio; outra worktree precisa da sua propria instalacao e comprovacao de descoberta',
39
+ prova: 'No Codex aberto no projeto instalado: $ork',
40
+ },
41
+ {
42
+ titulo: 'copia instalada diferente do catalogo',
43
+ detalhe: 'o recibo INSTALADO.json registra os arquivos e hashes dentro da pasta propria orkastery; uma edicao divergente barra a reinstalacao sem substituir arquivos de outras skills',
44
+ prova: 'ork adapter install codex --dry-run',
45
+ },
46
+ {
47
+ titulo: 'skill confundida com autorizacao de runtime',
48
+ detalhe: 'instalar instrucoes nao habilita permissoes, hooks ou sandbox; em projeto configurado, AGENTS.md recebe apenas o bloco reversível da experiência. Gates e preflight continuam no nucleo, e descoberta nao prova a jornada conversacional',
49
+ prova: 'ork doctor',
50
+ },
51
+ ],
52
+ },
53
+ hermes: {
54
+ descricao: 'Skill roteadora fina, plugin que a declara e script de abertura de thread',
55
+ pitfalls: [
56
+ {
57
+ titulo: 'ork fora do PATH do host',
58
+ detalhe: 'o host roda com ambiente mais enxuto que o terminal do builder e ~/.local/bin pode nao estar la; o plugin grava o caminho absoluto e o script honra ORK_BIN',
59
+ prova: 'ORK_BIN=$(command -v ork) ; "$ORK_BIN" doctor',
60
+ },
61
+ {
62
+ titulo: 'reimplementar o parse da #TAG no host',
63
+ detalhe: 'duas implementacoes divergem na primeira tag nova, e a divergencia aparece como thread aberta no modo errado, o que ninguem percebe ate a pausa que nao veio',
64
+ prova: 'ork modos --do-pedido "teste #Maestro" # a unica fonte do modo',
65
+ },
66
+ {
67
+ titulo: 'validar allowed_modes no host',
68
+ detalhe: 'um host que recusa o modo antes de chamar o ork recusa com a regra que ele tem em cache, nao com a do manifesto do projeto; deixe o ork thread new recusar, com erro tipado',
69
+ prova: 'ork thread new "teste" --mode look --dry-run',
70
+ },
71
+ ],
72
+ },
73
+ openclaw: {
74
+ descricao: 'extensao do OpenClaw 2026.7.1 (package.json + dist/index.js) com as tools ork_*, cada uma uma chamada de CLI',
75
+ pitfalls: [
76
+ {
77
+ titulo: 'placeholder {{ork_bin}} que fica no arquivo',
78
+ detalhe: 'o entry executa o binario como ele esta: um placeholder nao renderizado cai no fallback (ORK_BIN ou o ork do PATH), e sem o fallback vira "comando nao encontrado" em toda tool, que a sessao so descobre depois de ja ter aberto thread na cabeca do agente',
79
+ prova: 'grep -c "{{" <destino>/extensions/orkastery/dist/index.js # precisa devolver 0',
80
+ },
81
+ {
82
+ titulo: 'argumento com espaco quebrado em varios argumentos',
83
+ detalhe: 'cada tool monta o comando como VETOR de argv, nunca como string de shell, para o pedido do builder chegar inteiro em --prompt; string de shell aqui vira injecao de comando com o texto do builder dentro',
84
+ prova: 'ork_phase_run com um prompt de varias linhas, conferido em ork phase list <thread>',
85
+ },
86
+ {
87
+ titulo: 'tool que reimplementa regra do nucleo',
88
+ detalhe: 'toda tool deste plugin e uma chamada de CLI e nada mais; tool nova que precisa de logica e sinal de que a logica pertence ao ork, com teste',
89
+ prova: 'ork eval # o corpus reprova host com regra de negocio duplicada',
90
+ },
91
+ ],
92
+ },
93
+ };
94
+ const HOSTS_EN = {
95
+ 'claude-code': {
96
+ descricao: 'Plugin with the catalog skills, phase subagents, the /orkastery:ork entry and the Orkastery hooks',
97
+ pitfalls: [
98
+ {
99
+ titulo: 'a manifest without the skill paths installs cleanly and exposes nothing',
100
+ detalhe: 'the plugin auto-discovers `skills/<name>/SKILL.md` and stops there: it does not go down into the buckets (`core/`, `phases/`, `reviewers/`, ...) this catalog uses, so `plugin.json` declares each skill path, one by one',
101
+ prova: 'claude plugin details orkastery # Skills (N) adds up the skills in plugin.json and the commands in commands/',
102
+ },
103
+ {
104
+ titulo: 'two copies of the catalog drift apart',
105
+ detalhe: 'the single source is `skills/` at the product root; `INSTALADO.json` keeps the origin and the sha256 of each file, and a reinstall CLASSIFIES each divergence by it: what only changed in the catalog resyncs by itself, what you edited blocks the install and asks for a decision per file (`--aceitar-catalogo` or `--manter-copia`). Editing the installed copy is a red flag',
106
+ prova: 'ork adapter install claude-code --dry-run # shows what drifted from the catalog',
107
+ },
108
+ {
109
+ titulo: 'a hook with a relative path does not run, and the guard becomes decoration',
110
+ detalhe: '`hooks.json` calls `node "${CLAUDE_PLUGIN_ROOT}/hooks/ork-guard.js"`, never a path relative to the working directory, which changes with each thread worktree',
111
+ prova: `echo '{"tool_name":"Bash","tool_input":{"command":"git add -A"}}' | node <target>/hooks/ork-guard.js ; echo "code: $?" # 2 = guard alive`,
112
+ },
113
+ ],
114
+ },
115
+ codex: {
116
+ descricao: 'The $ork entry and the conduction catalog as project-local skills, with no global configuration',
117
+ pitfalls: [
118
+ {
119
+ titulo: 'skills installed outside the session project',
120
+ detalhe: 'Codex discovers `.agents/skills` from the session directory up to the repository root; another worktree needs its own install and its own proof of discovery',
121
+ prova: 'In Codex opened on the installed project: $ork',
122
+ },
123
+ {
124
+ titulo: 'installed copy differs from the catalog',
125
+ detalhe: 'the `INSTALADO.json` receipt records the files and hashes inside its own `orkastery` folder; a divergent edit blocks the reinstall without replacing files of other skills',
126
+ prova: 'ork adapter install codex --dry-run',
127
+ },
128
+ {
129
+ titulo: 'a skill mistaken for runtime authorization',
130
+ detalhe: 'installing instructions does not enable permissions, hooks or a sandbox; in a configured project, `AGENTS.md` only gets the reversible experience block. Gates and preflight stay in the core, and discovery does not prove the conversational journey',
131
+ prova: 'ork doctor',
132
+ },
133
+ ],
134
+ },
135
+ hermes: {
136
+ descricao: 'A thin router skill, the plugin that declares it and the thread opening script',
137
+ pitfalls: [
138
+ {
139
+ titulo: 'ork outside the host PATH',
140
+ detalhe: 'the host runs with a leaner environment than the builder terminal, and `~/.local/bin` may not be there; the plugin writes the absolute path and the script honors `ORK_BIN`',
141
+ prova: 'ORK_BIN=$(command -v ork) ; "$ORK_BIN" doctor',
142
+ },
143
+ {
144
+ titulo: 'reimplementing the #TAG parse in the host',
145
+ detalhe: 'two implementations drift apart on the first new tag, and the drift shows up as a thread opened in the wrong mode, which nobody notices until the pause that never came',
146
+ prova: 'ork modos --do-pedido "test #Maestro" # the only source of the mode',
147
+ },
148
+ {
149
+ titulo: 'validating allowed_modes in the host',
150
+ detalhe: 'a host that refuses the mode before calling ork refuses with the rule it has cached, not the one in the project manifest; let `ork thread new` refuse, with a typed error',
151
+ prova: 'ork thread new "test" --mode look --dry-run',
152
+ },
153
+ ],
154
+ },
155
+ openclaw: {
156
+ descricao: 'OpenClaw 2026.7.1 extension (package.json + dist/index.js) with the ork_* tools, each one a CLI call',
157
+ pitfalls: [
158
+ {
159
+ titulo: 'a {{ork_bin}} placeholder left in the file',
160
+ detalhe: 'the entry runs the binary as it is: an unrendered placeholder falls back (`ORK_BIN` or the ork in PATH), and without the fallback it becomes "command not found" in every tool, which the session only finds out after the agent already believes the thread is open',
161
+ prova: 'grep -c "{{" <target>/extensions/orkastery/dist/index.js # must return 0',
162
+ },
163
+ {
164
+ titulo: 'an argument with spaces split into several arguments',
165
+ detalhe: 'each tool builds the command as an argv VECTOR, never as a shell string, so the builder request reaches `--prompt` whole; a shell string here becomes command injection with the builder text inside',
166
+ prova: 'ork_phase_run with a multi-line prompt, checked in ork phase list <thread>',
167
+ },
168
+ {
169
+ titulo: 'a tool that reimplements a core rule',
170
+ detalhe: 'every tool in this plugin is a CLI call and nothing more; a new tool that needs logic is a sign that the logic belongs in ork, with a test',
171
+ prova: 'ork eval # the corpus fails a host with a duplicated business rule',
172
+ },
173
+ ],
174
+ },
175
+ };
176
+ exports.ADAPTER_PT_BR = {
177
+ hosts: HOSTS_PT_BR,
178
+ // ork adapter list
179
+ titulo: 'Adaptadores de host (Camada 1, o podio)',
180
+ destinoPadrao: (destino) => `destino padrao: <projeto>/${destino}`,
181
+ catalogoJunto: (leva) => `catalogo de skills junto: ${leva ? 'sim' : 'nao'}`,
182
+ instaleCom: 'Instale com: ork adapter install <host> [--dir DIR] [--dry-run] [--force]',
183
+ zeroRegra: 'Zero regra de negocio no host: a #TAG vira `--mode` e a validacao e do nucleo.',
184
+ // ork adapter show e os erros de uso
185
+ adaptador: (host) => `Adaptador ${host}`,
186
+ hostDesconhecido: (bruto, hosts) => `host desconhecido: "${bruto}". Use: ${hosts}`,
187
+ subcomandoDesconhecido: (sub) => `subcomando desconhecido: adapter ${sub}`,
188
+ tituloDosPitfalls: (host) => `Os 3 pitfalls de instalacao do ${host} (confira, nao suponha):`,
189
+ prova: (prova) => `prova: ${prova}`,
190
+ // ork adapter install
191
+ experiencia: (estado, skill) => `Experiência: ${{ ativa: 'ativação preparada',
192
+ pulada: 'pacote pulado nesta instalação, veja o aviso abaixo', desativada: 'desativada ou sem integração de skills' }[estado]}` +
193
+ `${skill ? ` (${skill})` : ''}.`,
194
+ aviso: (aviso) => `Aviso: ${aviso}`,
195
+ simulacao: (host) => `Simulacao (--dry-run) da instalacao do adaptador ${host}: nada foi escrito.`,
196
+ preparados: (host) => `Arquivos do adaptador ${host} preparados.`,
197
+ barrada: (host) => `Instalacao do adaptador ${host} BARRADA: ha arquivo diferente no destino.`,
198
+ claudeNaoVerificado: 'Uso no Claude Code ainda nao verificado por esta copia.',
199
+ claudeValide: 'No diretorio deste projeto, valide e ative o plugin:',
200
+ claudeDepois: 'Depois, na sessao deste projeto: /orkastery:ork',
201
+ codexAbra: 'Abra o Codex neste projeto e use $ork.',
202
+ codexNaoVerificado: 'Descoberta e uso nativo ainda nao verificados por esta copia.',
203
+ prepareMcp: (projeto, host) => `Prepare tambem as ferramentas do projeto: ork mcp install --project ${projeto} --host ${host}`,
204
+ consentimento: 'A configuracao MCP exige descoberta e consentimento no cliente; a copia nao concede aprovacoes.',
205
+ catalogo: (catalogo) => ` catalogo: ${catalogo}`,
206
+ destino: (destino) => ` destino: ${destino}`,
207
+ ork: (ork) => ` ork: ${ork}`,
208
+ avisoOrk: (aviso) => ` Aviso: ${aviso}`,
209
+ arquivos: (total, novos, iguais, divergentes) => ` arquivos: ${total} (${novos} novo(s), ${iguais} ja identico(s), ${divergentes} divergente(s))`,
210
+ removido: (relativo, simulacao) => ` - ${relativo} (saiu do catalogo${simulacao ? ', seria removido' : ', removido'})`,
211
+ reciboVizinho: (destino, vizinho) => [` ATENCAO: nao ha recibo em ${destino}, mas ha um em`, ` ${vizinho}`,
212
+ ' `--dir` e o destino COMPLETO, nao a raiz do projeto. Do jeito que esta, esta',
213
+ ' instalacao criaria uma copia nova ao lado da que ja existe, e a que existe', ' ficaria sem conferencia nenhuma.'],
214
+ catalogoAndou: (n) => [` ${n} divergente(s) sao "catalogo-andou": a copia esta como foi instalada`,
215
+ ' e quem mudou foi o catalogo. Sobrescrever nao perde trabalho de ninguem.'],
216
+ precisamDeDecisao: (n) => ` ${n} arquivo(s) precisam de uma decisao sua:`,
217
+ resolva: ' Resolva em UM comando, por arquivo:',
218
+ proximoPassoClaude: 'Proximo passo, no diretorio deste projeto (o mesmo do comeco):',
219
+ proximoPasso: 'Proximo passo (o mesmo do comeco):',
220
+ // Os avisos do pacote de experiencia e do ork do PATH (`instalarAdaptador`)
221
+ segue: 'O restante da instalação do adaptador segue normalmente.',
222
+ puladoManifesto: (erro, segue) => `Pacote de experiência pulado: o manifesto tem erros (${erro}). ${segue}`,
223
+ puladoInvalida: (aviso, segue) => `Pacote de experiência pulado: ${aviso}. ${segue}`,
224
+ puladoSemSkill: (skill, segue) => `Pacote de experiência pulado: a skill ${skill} não está no catálogo. ${segue}`,
225
+ puladoForaDoProjeto: (segue) => `Pacote de experiência pulado: o adaptador fica fora do projeto e o bloco de instruções só aponta caminhos do projeto. ${segue}`,
226
+ puladoCaminho: (segue) => `Pacote de experiência pulado: o caminho das skills contém quebra de linha ou crase, incompatível com o bloco de instruções. ${segue}`,
227
+ puladoBloco: (link, host, segue) => `Pacote de experiência pulado: ${link ? 'o arquivo de instruções é link ou não é arquivo comum'
228
+ : `o bloco de instruções ou o recibo .orkastery/experiencia/${host}.json foi editado ou está duplicado`}; nada foi escrito. Revise os dois à mão. ${segue}`,
229
+ versaoDesconhecida: 'versão desconhecida',
230
+ orkNoPath: (doPath, outra, emExecucao, versao) => `o ork do PATH (${doPath}, ${outra}) não é o que roda este install (${emExecucao}, ${versao}). ` +
231
+ `A extensão chama ${emExecucao}; para outro binário, passe --ork <caminho>.`,
232
+ // As recusas
233
+ adaptadorNaoExiste: (host, dir) => `adaptador do host ${host} nao existe em ${dir}`,
234
+ destinoInseguro: 'experiencia.path.unsafe: destino do adaptador',
235
+ catalogoNaoEncontrado: 'catalogo do Orkastery nao encontrado (esperado um diretorio com skills/, references/ e eval/)',
236
+ };
237
+ exports.ADAPTER_EN = {
238
+ hosts: HOSTS_EN,
239
+ titulo: 'Host adapters (Layer 1, the podium)',
240
+ destinoPadrao: (destino) => `default target: <project>/${destino}`,
241
+ catalogoJunto: (leva) => `skill catalog included: ${leva ? 'yes' : 'no'}`,
242
+ instaleCom: 'Install with: ork adapter install <host> [--dir DIR] [--dry-run] [--force]',
243
+ zeroRegra: 'Zero business rules in the host: the #TAG becomes `--mode` and validation belongs to the core.',
244
+ adaptador: (host) => `Adapter ${host}`,
245
+ hostDesconhecido: (bruto, hosts) => `unknown host: "${bruto}". Use: ${hosts}`,
246
+ subcomandoDesconhecido: (sub) => `unknown subcommand: adapter ${sub}`,
247
+ tituloDosPitfalls: (host) => `The 3 install pitfalls of ${host} (check them, do not assume):`,
248
+ prova: (prova) => `proof: ${prova}`,
249
+ experiencia: (estado, skill) => `Experience: ${{ ativa: 'activation prepared', pulada: 'package skipped in this install, see the warning below',
250
+ desativada: 'disabled or without skill integration' }[estado]}${skill ? ` (${skill})` : ''}.`,
251
+ aviso: (aviso) => `Warning: ${aviso}`,
252
+ simulacao: (host) => `Dry run (\`--dry-run\`) of the ${host} adapter install: nothing was written.`,
253
+ preparados: (host) => `${host} adapter files prepared.`,
254
+ barrada: (host) => `${host} adapter install BLOCKED: there is a different file at the target.`,
255
+ claudeNaoVerificado: 'Use in Claude Code not verified by this copy yet.',
256
+ claudeValide: 'In this project directory, validate and enable the plugin:',
257
+ claudeDepois: 'Then, in this project session: /orkastery:ork',
258
+ codexAbra: 'Open Codex in this project and use $ork.',
259
+ codexNaoVerificado: 'Discovery and native use not verified by this copy yet.',
260
+ prepareMcp: (projeto, host) => `Also prepare the project tools: ork mcp install --project ${projeto} --host ${host}`,
261
+ consentimento: 'MCP configuration needs discovery and consent in the client; the copy grants no approvals.',
262
+ catalogo: (catalogo) => ` catalog: ${catalogo}`,
263
+ destino: (destino) => ` target: ${destino}`,
264
+ ork: (ork) => ` ork: ${ork}`,
265
+ avisoOrk: (aviso) => ` Warning: ${aviso}`,
266
+ arquivos: (total, novos, iguais, divergentes) => ` files: ${total} (${novos} new, ${iguais} already identical, ${divergentes} divergent)`,
267
+ removido: (relativo, simulacao) => ` - ${relativo} (left the catalog${simulacao ? ', would be removed' : ', removed'})`,
268
+ reciboVizinho: (destino, vizinho) => [` WARNING: there is no receipt in ${destino}, but there is one in`, ` ${vizinho}`,
269
+ ' `--dir` is the FULL target, not the project root. As it is, this install',
270
+ ' would create a new copy next to the existing one, and the existing one', ' would be left without any check.'],
271
+ catalogoAndou: (n) => [` ${n} divergent file(s) are "catalogo-andou": the copy is as it was installed`,
272
+ ' and what changed was the catalog. Overwriting loses nobody\'s work.'],
273
+ precisamDeDecisao: (n) => ` ${n} file(s) need a decision from you:`,
274
+ resolva: ' Resolve it in ONE command, per file:',
275
+ proximoPassoClaude: 'Next step, in this project directory (the same as at the start):',
276
+ proximoPasso: 'Next step (the same as at the start):',
277
+ segue: 'The rest of the adapter install goes on as usual.',
278
+ puladoManifesto: (erro, segue) => `Experience package skipped: the manifest has errors (${erro}). ${segue}`,
279
+ puladoInvalida: (aviso, segue) => `Experience package skipped: ${aviso}. ${segue}`,
280
+ puladoSemSkill: (skill, segue) => `Experience package skipped: skill ${skill} is not in the catalog. ${segue}`,
281
+ puladoForaDoProjeto: (segue) => `Experience package skipped: the adapter lives outside the project and the instructions block only points to project paths. ${segue}`,
282
+ puladoCaminho: (segue) => `Experience package skipped: the skills path has a line break or a backtick, which the instructions block cannot hold. ${segue}`,
283
+ puladoBloco: (link, host, segue) => `Experience package skipped: ${link ? 'the instructions file is a link or not a regular file'
284
+ : `the instructions block or the \`.orkastery/experiencia/${host}.json\` receipt was edited or is duplicated`}; nothing was written. Review both by hand. ${segue}`,
285
+ versaoDesconhecida: 'unknown version',
286
+ orkNoPath: (doPath, outra, emExecucao, versao) => `the ork in PATH (${doPath}, ${outra}) is not the one running this install (${emExecucao}, ${versao}). ` +
287
+ `The extension calls ${emExecucao}; for another binary, pass \`--ork <path>\`.`,
288
+ adaptadorNaoExiste: (host, dir) => `the ${host} host adapter does not exist in ${dir}`,
289
+ destinoInseguro: 'experiencia.path.unsafe: adapter target',
290
+ catalogoNaoEncontrado: 'Orkastery catalog not found (expected a directory with skills/, references/ and eval/)',
291
+ };