@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,199 @@
1
+ "use strict";
2
+ /** RM-061 F3d: moldura humana do ciclo de auditoria; ids, caminhos e JSON nao mudam. */
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.AUDIT_EN = exports.AUDIT_PT_BR = void 0;
5
+ /** O uso do subcomando pedido, so quando ele e chave propria do mapa (nunca um membro do prototipo do objeto). */
6
+ function usoDe(usos, sub) {
7
+ return Object.hasOwn(usos, sub) ? usos[sub] : undefined;
8
+ }
9
+ exports.AUDIT_PT_BR = {
10
+ packs: {
11
+ titulo: (estagio) => `Packs de auditoria periodica${estagio ? ` (estagio declarado do projeto: ${estagio})` : ''}`,
12
+ ativo: (packs) => `Ativos aqui e agora: ${packs}`,
13
+ postura: (postura) => `Postura: ${postura}`,
14
+ cabecalho: ['PACK', 'ATIVO A PARTIR DE', 'ATIVO AQUI', 'FONTE', 'REGRAS', 'POSTURA', 'TITULO'],
15
+ hardening: 'Hardening por estagio (visao, secao 5.2):',
16
+ posturaLinha: (descricao) => `postura: ${descricao}`,
17
+ sim: 'sim', nao: 'nao',
18
+ detalhe: {
19
+ titulo: (id, titulo) => `Pack ${id}: ${titulo}`,
20
+ ativoDesde: (estagio) => ` ativo a partir do estagio: ${estagio}`,
21
+ fonte: (fonte) => ` fonte de evidencia: ${fonte}`,
22
+ fonteLedger: 'ledger e MASTER logs', fonteCodigo: 'arvore de codigo',
23
+ nesteProjeto: (estagio, ativo, postura) => ` neste projeto (stage ${estagio}): ${ativo ? 'ATIVO' : 'inativo'}${ativo ? `, postura ${postura}` : ''}`,
24
+ regras: ' Regras auditadas:', evidencia: (texto) => ` evidencia: ${texto}`,
25
+ },
26
+ },
27
+ rodadas: {
28
+ vazia: 'Nenhuma rodada de auditoria em .orkastery/audits. Rode: ork audit run <pack>',
29
+ cabecalho: ['RODADA', 'PACK', 'PERFIL', 'ESTAGIO', 'STATUS', 'MOTIVO', 'ACHADOS', 'CLAIMS', 'ESCOPO'],
30
+ sustentado: 'sustentado', reprovado: 'REPROVADO', naoVerificado: 'nao verificado',
31
+ titulo: (id) => `Rodada de auditoria ${id}`,
32
+ campo: (nome, valor) => ` ${nome.padEnd(11)} ${valor}`,
33
+ campos: { pack: 'pack', produto: 'produto', estagio: 'estagio', escopo: 'escopo', graphify: 'graphify', custo: 'custo', janela: 'janela', autorizada: 'autorizada', runtime: 'runtime', prompt: 'prompt', status: 'status', superficie: 'superficie', detalhe: 'detalhe' },
34
+ perfil: (p) => `(perfil ${p})`, postura: (p) => `postura ${p}`,
35
+ custo: (effort, model) => `effort ${effort}, model ${model}`,
36
+ autorizada: (por) => `fora da janela por ${por}`,
37
+ sessaoAusente: '(nao despachada)', promptAusente: '(nao montado)', motivo: (m) => `(motivo tipado: ${m})`,
38
+ superficieResumo: (registrados, confirmar, frameworks) => `registrados ${registrados}, a confirmar ${confirmar}, frameworks: ${frameworks}`,
39
+ nenhumFramework: '(nenhum reconhecido)', achados: (n) => ` Achados (${n}):`,
40
+ nenhumAchado: ' (nenhum achado registrado nesta rodada ainda)',
41
+ claims: (ok, motivos, head) => ` Claims do auditor: ${ok ? 'SUSTENTADAS' : 'REPROVADAS'} (motivos: ${motivos || 'nenhum'}) no HEAD ${head}`,
42
+ claimsPendentes: (id) => ` Claims do auditor: NAO verificadas. Rode: ork audit verify ${id}`,
43
+ relatorio: (id) => ` Relatorio com o bloco de propostas: ork audit report ${id}`,
44
+ ledgerVazio: (id) => `Ledger vazio para a rodada ${id}.`,
45
+ ledgerCabecalho: ['QUANDO', 'EVENTO', 'DETALHE'],
46
+ detalhes: { achado: (v) => `achado ${v}`, motivo: (v) => `motivo ${v}`, sessao: (v) => `sessao ${v}`, veredito: (v) => `veredito: ${v}`, destino: (v) => `destino ${v}`, thread: (v) => `thread ${v}` },
47
+ boardVazio: 'board de divida vazio', board: (total, abertos) => `${total} achado(s) no board de divida, ${abertos} aberto(s)`,
48
+ },
49
+ divida: {
50
+ vazia: (pack) => `Board de divida vazio${pack ? ` para o pack ${pack}` : ''}.\nRode uma auditoria: ork audit run <pack>`,
51
+ cabecalho: ['ID', 'PACK', 'REGRA', 'SEVERIDADE', 'CLAIM', 'ESTADO', 'ESTIMATIVA', 'IRREVERSIVEL', 'EVIDENCIA', 'TITULO'],
52
+ sim: 'SIM', nao: 'nao', titulo: (caminho) => `Board de divida do projeto (${caminho})`,
53
+ recorrencia: 'Recorrencia (2 propoem controle, 3 propoem bloqueante; o `ork` nunca promove sozinho):',
54
+ nenhuma: ' (nenhuma regra recorrente ainda)',
55
+ item: (pack, regra, n, promocao, ids) => ` ${pack} ${regra}: ${n}x -> promocao proposta: ${promocao} (${ids})`,
56
+ resumo: (abertos, total) => `abertos: ${abertos} | total listado: ${total}`,
57
+ thread: 'Achado vira thread com: ork thread new "<nome>" --from-finding <ID>',
58
+ },
59
+ superficie: {
60
+ vazia: (detalhe) => `Nenhum achado de superficie de ataque. ${detalhe}`,
61
+ cabecalho: ['REGRA', 'SEVERIDADE', 'CONFIANCA', 'FRAMEWORK', 'ROTA', 'EVIDENCIA', 'TITULO'],
62
+ titulo: 'Varredura deterministica da superficie de ataque de rede (pack security-privacy, SP8..SP12)',
63
+ campo: (nome, valor) => ` ${nome.padEnd(13)} ${valor}`,
64
+ campos: { raiz: 'raiz', escopo: 'escopo', frameworks: 'frameworks', teto: 'teto' },
65
+ nenhumFramework: '(nenhum reconhecido)', teto: (n) => `${n} achado(s) por regra`,
66
+ truncado: (n, regra) => ` ATENCAO: ${n} achado(s) de ${regra} ficaram fora do teto desta varredura.`,
67
+ baixa: (n, descricao) => ` ${n} achado(s) sairam com confianca baixa: ${descricao}`,
68
+ claims: 'Cada achado carrega o comando que o reexecuta no HEAD real (o auditor nao tem self-report).',
69
+ registrar: 'Para registrar no board de divida de uma rodada: ork audit surface --registrar <rodada>',
70
+ },
71
+ cli: {
72
+ packs: (lista) => ` packs: ${lista}`,
73
+ lintTitulo: (raiz) => `Lint dos templates de auditoria${raiz ? ` (projeto ${raiz})` : ' (somente embutidos)'}`,
74
+ lintItem: (gravidade, template, regra) => ` [${gravidade}] ${template} :: ${regra}`,
75
+ lintDetalhe: (detalhe) => ` ${detalhe}`,
76
+ lintOk: (n) => ` nenhum problema em ${n} template(s)`,
77
+ lintResumo: (templates, erros, avisos) => `templates: ${templates} | erros: ${erros} | avisos: ${avisos}`,
78
+ bloqueada: (id) => `Rodada de auditoria ${id} BLOQUEADA.`,
79
+ motivo: (v) => ` motivo tipado: ${v}`, detalhe: (v) => ` detalhe: ${v}`,
80
+ estado: (id) => ` estado da rodada: .orkastery/audits/${id}/run.json`,
81
+ ensaio: (id) => `Simulacao (--dry-run) da rodada ${id}: nada foi despachado.`,
82
+ despachada: (id, runtime) => `Rodada de auditoria ${id} despachada pelo runtime adapter ${runtime}.`,
83
+ verificada: (ok) => ` verificada no runtime: ${ok ? 'sim' : 'NAO (confira `ork sessions`)'}`,
84
+ superficieDry: (id) => ` nada registrado no board (--dry-run). Para gravar: ork audit surface --registrar ${id}`,
85
+ superficieBoard: (n, confirmar) => ` ${n} achado(s) de superficie ja no board de divida${confirmar > 0 ? `, ${confirmar} com confianca baixa (pedem confirmacao humana)` : ''}`,
86
+ proposta: 'A rodada termina em PROPOSTA para o roadmap, nunca em correcao aplicada.',
87
+ depois: (id) => `Depois dos achados: ork audit verify ${id} && ork audit report ${id}`,
88
+ board: (resumo) => `Board de divida: ${resumo}`,
89
+ ingestao: (id, n) => `Ingestao da rodada ${id}: ${n} achado(s) no board de divida.`,
90
+ memoriaMuitas: (detalhe) => `Memoria (orkmind): propostas na colecao roadmap, ${detalhe}.`,
91
+ memoriaUma: (detalhe) => `Memoria (orkmind): proposta na colecao roadmap, ${detalhe}.`,
92
+ duplicados: (ids) => `Ja registrados nesta rodada, ignorados (a ingestao e idempotente): ${ids}`,
93
+ recusados: (n) => `RECUSADOS (${n}):`, recusado: (n, erro) => ` achado #${n}: ${erro}`,
94
+ prove: (id) => `Prove os achados antes de qualquer thread: ork audit verify ${id}`,
95
+ achadoRegistrado: (achado, rodada) => `Achado ${achado} registrado no board de divida da rodada ${rodada}.`,
96
+ estadoReservado: 'o estado `virou-thread` e carimbado pelo proprio `ork thread new --from-finding`.',
97
+ achadoEstado: (id, estado) => `Achado ${id} agora esta ${estado}.`,
98
+ findingDesconhecido: (acao) => `subcomando desconhecido: audit finding ${acao}`,
99
+ verifyTitulo: (id) => `Claims dos achados da rodada ${id}, reexecutadas no HEAD real.`,
100
+ verifyHead: (head) => ` HEAD real ${head}`, verifyDir: (cwd) => ` diretorio ${cwd}`,
101
+ verifyVazio: ' (nenhum achado aberto nesta rodada)',
102
+ verifyClaim: (id, ok, alegacao) => ` ${id} verificado: ${ok ? 'sim' : 'NAO'} ${alegacao}`,
103
+ arquivo: (v) => ` arquivo: ${v}`, comandos: (v) => ` comando(s): ${v}`,
104
+ semComando: ' sem comando de verificacao', motivoDetalhe: (m, d) => ` motivo tipado: ${m} (${d})`,
105
+ vereditoOk: 'Veredito: ACHADOS SUSTENTADOS (o auditor provou o que alegou).',
106
+ vereditoRuim: (m) => `Veredito: REPROVADO. Motivos tipados: ${m}`,
107
+ unverifiable: ' aviso: achado sem comando de verificacao avisa e nao bloqueia (regra do gate do B1).',
108
+ relatorio: (caminho) => `(relatorio gravado em ${caminho})`, publicado: (caminho) => `(publicado em ${caminho})`,
109
+ rodadaRegistrada: (id, n) => `Rodada ${id}: ${n} achado(s) registrado(s) no board de divida.`,
110
+ jaRegistrados: (ids) => ` ja registrados nesta rodada: ${ids}`,
111
+ recusadoSuperficie: (regra, arquivo, linha, erro) => ` RECUSADO ${regra} ${arquivo}:${linha}: ${erro}`,
112
+ },
113
+ // GO-FIX 3: so a propria chave do mapa conta; `constructor` ou `toString` do prototipo eram impressos no lugar da recusa.
114
+ uso: (sub) => usoDe({ run: 'uso: ork audit run <pack> [--profile P] [--since Nd]', show: 'uso: ork audit show <rodada> [--ledger]', prompt: 'uso: ork audit prompt <pack> [--since Nd]', ingest: 'uso: ork audit ingest <rodada> --arquivo <achados.json>', verify: 'uso: ork audit verify <rodada>', report: 'uso: ork audit report <rodada> [--publicar]' }, sub) ?? `subcomando desconhecido: audit ${sub}`,
115
+ erro: { estagio: (v) => `estagio invalido: "${v}". Use: nascente | crescendo | maduro`, pack: (v, lista) => `pack desconhecido: "${v}". Use um de: ${lista}`, regra: (v, lista) => `regra desconhecida: "${v}". Use uma de: ${lista}`, limite: (v) => `--limite invalido: "${v}". Use um inteiro >= 1.` },
116
+ };
117
+ exports.AUDIT_EN = {
118
+ packs: {
119
+ titulo: (stage) => `Periodic audit packs${stage ? ` (declared project stage: ${stage})` : ''}`,
120
+ ativo: (packs) => `Active here and now: ${packs}`, postura: (posture) => `Posture: ${posture}`,
121
+ cabecalho: ['PACK', 'ACTIVE FROM', 'ACTIVE HERE', 'SOURCE', 'RULES', 'POSTURE', 'TITLE'],
122
+ hardening: 'Hardening by stage (vision, section 5.2):', posturaLinha: (description) => `posture: ${description}`,
123
+ sim: 'yes', nao: 'no',
124
+ detalhe: {
125
+ titulo: (id, title) => `Pack ${id}: ${title}`, ativoDesde: (stage) => ` active from stage: ${stage}`,
126
+ fonte: (source) => ` evidence source: ${source}`, fonteLedger: 'ledger and MASTER logs', fonteCodigo: 'code tree',
127
+ nesteProjeto: (stage, active, posture) => ` in this project (stage ${stage}): ${active ? 'ACTIVE' : 'inactive'}${active ? `, posture ${posture}` : ''}`,
128
+ regras: ' Audited rules:', evidencia: (value) => ` evidence: ${value}`,
129
+ },
130
+ },
131
+ rodadas: {
132
+ vazia: 'No audit run in .orkastery/audits. Run: ork audit run <pack>',
133
+ cabecalho: ['RUN', 'PACK', 'PROFILE', 'STAGE', 'STATUS', 'REASON', 'FINDINGS', 'CLAIMS', 'SCOPE'],
134
+ sustentado: 'sustained', reprovado: 'FAILED', naoVerificado: 'not verified', titulo: (id) => `Audit run ${id}`,
135
+ campo: (name, value) => ` ${name.padEnd(11)} ${value}`,
136
+ campos: { pack: 'pack', produto: 'product', estagio: 'stage', escopo: 'scope', graphify: 'graphify', custo: 'cost', janela: 'window', autorizada: 'authorized', runtime: 'runtime', prompt: 'prompt', status: 'status', superficie: 'surface', detalhe: 'detail' },
137
+ perfil: (p) => `(profile ${p})`, postura: (p) => `posture ${p}`, custo: (effort, model) => `effort ${effort}, model ${model}`,
138
+ autorizada: (by) => `outside the window by ${by}`, sessaoAusente: '(not dispatched)', promptAusente: '(not assembled)', motivo: (m) => `(typed reason: ${m})`,
139
+ superficieResumo: (registered, confirm, frameworks) => `registered ${registered}, to confirm ${confirm}, frameworks: ${frameworks}`,
140
+ nenhumFramework: '(none recognized)', achados: (n) => ` Findings (${n}):`, nenhumAchado: ' (no finding recorded in this run yet)',
141
+ claims: (ok, reasons, head) => ` Auditor claims: ${ok ? 'SUSTAINED' : 'FAILED'} (reasons: ${reasons || 'none'}) at HEAD ${head}`,
142
+ claimsPendentes: (id) => ` Auditor claims: NOT verified. Run: ork audit verify ${id}`,
143
+ relatorio: (id) => ` Report with the proposals block: ork audit report ${id}`,
144
+ ledgerVazio: (id) => `Empty ledger for run ${id}.`, ledgerCabecalho: ['WHEN', 'EVENT', 'DETAIL'],
145
+ detalhes: { achado: (v) => `finding ${v}`, motivo: (v) => `reason ${v}`, sessao: (v) => `session ${v}`, veredito: (v) => `verdict: ${v}`, destino: (v) => `destination ${v}`, thread: (v) => `thread ${v}` },
146
+ boardVazio: 'empty debt board', board: (total, open) => `${total} finding(s) in the debt board, ${open} open`,
147
+ },
148
+ divida: {
149
+ vazia: (pack) => `Empty debt board${pack ? ` for pack ${pack}` : ''}.\nRun an audit: ork audit run <pack>`,
150
+ cabecalho: ['ID', 'PACK', 'RULE', 'SEVERITY', 'CLAIM', 'STATUS', 'ESTIMATE', 'IRREVERSIBLE', 'EVIDENCE', 'TITLE'],
151
+ sim: 'YES', nao: 'no', titulo: (path) => `Project debt board (${path})`,
152
+ recorrencia: 'Recurrence (2 propose a control, 3 propose a blocker; `ork` never promotes on its own):',
153
+ nenhuma: ' (no recurring rule yet)', item: (pack, rule, n, promotion, ids) => ` ${pack} ${rule}: ${n}x -> proposed promotion: ${promotion} (${ids})`,
154
+ resumo: (open, total) => `open: ${open} | total listed: ${total}`,
155
+ thread: 'Turn a finding into a thread with: ork thread new "<name>" --from-finding <ID>',
156
+ },
157
+ superficie: {
158
+ vazia: (detail) => `No attack-surface finding. ${detail}`,
159
+ cabecalho: ['RULE', 'SEVERITY', 'CONFIDENCE', 'FRAMEWORK', 'ROUTE', 'EVIDENCE', 'TITLE'],
160
+ titulo: 'Deterministic network attack-surface scan (security-privacy pack, SP8..SP12)',
161
+ campo: (name, value) => ` ${name.padEnd(13)} ${value}`,
162
+ campos: { raiz: 'root', escopo: 'scope', frameworks: 'frameworks', teto: 'limit' },
163
+ nenhumFramework: '(none recognized)', teto: (n) => `${n} finding(s) per rule`,
164
+ truncado: (n, rule) => ` WARNING: ${n} finding(s) for ${rule} exceeded this scan's limit.`,
165
+ baixa: (n, description) => ` ${n} finding(s) have low confidence: ${description}`,
166
+ claims: 'Each finding carries the command that reruns it at the real HEAD (the auditor cannot self-report).',
167
+ registrar: 'To record findings in a run debt board: ork audit surface --registrar <run>',
168
+ },
169
+ cli: {
170
+ packs: (list) => ` packs: ${list}`,
171
+ lintTitulo: (root) => `Audit template lint${root ? ` (project ${root})` : ' (embedded only)'}`,
172
+ lintItem: (severity, template, rule) => ` [${severity}] ${template} :: ${rule}`, lintDetalhe: (detail) => ` ${detail}`,
173
+ lintOk: (n) => ` no problem in ${n} template(s)`, lintResumo: (templates, errors, warnings) => `templates: ${templates} | errors: ${errors} | warnings: ${warnings}`,
174
+ bloqueada: (id) => `Audit run ${id} BLOCKED.`, motivo: (v) => ` typed reason: ${v}`, detalhe: (v) => ` detail: ${v}`,
175
+ estado: (id) => ` run state: .orkastery/audits/${id}/run.json`, ensaio: (id) => `Simulation (--dry-run) of run ${id}: nothing was dispatched.`,
176
+ despachada: (id, runtime) => `Audit run ${id} dispatched by runtime adapter ${runtime}.`,
177
+ verificada: (ok) => ` verified in runtime: ${ok ? 'yes' : 'NO (check `ork sessions`)'}`,
178
+ superficieDry: (id) => ` nothing recorded in the board (--dry-run). To write: ork audit surface --registrar ${id}`,
179
+ superficieBoard: (n, confirm) => ` ${n} surface finding(s) already in the debt board${confirm > 0 ? `, ${confirm} with low confidence (require human confirmation)` : ''}`,
180
+ proposta: 'The run ends in a PROPOSAL for the roadmap, never in an applied fix.', depois: (id) => `After the findings: ork audit verify ${id} && ork audit report ${id}`,
181
+ board: (summary) => `Debt board: ${summary}`, ingestao: (id, n) => `Run ${id} ingestion: ${n} finding(s) in the debt board.`,
182
+ memoriaMuitas: (detail) => `Memory (orkmind): proposals in the roadmap collection, ${detail}.`, memoriaUma: (detail) => `Memory (orkmind): proposal in the roadmap collection, ${detail}.`,
183
+ duplicados: (ids) => `Already recorded in this run and ignored (ingestion is idempotent): ${ids}`,
184
+ recusados: (n) => `REJECTED (${n}):`, recusado: (n, error) => ` finding #${n}: ${error}`, prove: (id) => `Prove the findings before any thread: ork audit verify ${id}`,
185
+ achadoRegistrado: (finding, run) => `Finding ${finding} recorded in the debt board for run ${run}.`,
186
+ estadoReservado: 'status `virou-thread` is stamped by `ork thread new --from-finding` itself.', achadoEstado: (id, status) => `Finding ${id} is now ${status}.`,
187
+ findingDesconhecido: (action) => `unknown subcommand: audit finding ${action}`,
188
+ verifyTitulo: (id) => `Claims for findings in run ${id}, rerun at the real HEAD.`, verifyHead: (head) => ` real HEAD ${head}`, verifyDir: (cwd) => ` directory ${cwd}`,
189
+ verifyVazio: ' (no open finding in this run)', verifyClaim: (id, ok, claim) => ` ${id} verified: ${ok ? 'yes' : 'NO'} ${claim}`,
190
+ arquivo: (v) => ` file: ${v}`, comandos: (v) => ` command(s): ${v}`, semComando: ' no verification command', motivoDetalhe: (m, d) => ` typed reason: ${m} (${d})`,
191
+ vereditoOk: 'Verdict: FINDINGS SUSTAINED (the auditor proved its claims).', vereditoRuim: (m) => `Verdict: FAILED. Typed reasons: ${m}`,
192
+ unverifiable: ' warning: a finding without a verification command warns and does not block (B1 gate rule).',
193
+ relatorio: (path) => `(report written to ${path})`, publicado: (path) => `(published to ${path})`,
194
+ rodadaRegistrada: (id, n) => `Run ${id}: ${n} finding(s) recorded in the debt board.`, jaRegistrados: (ids) => ` already recorded in this run: ${ids}`,
195
+ recusadoSuperficie: (rule, file, line, error) => ` REJECTED ${rule} ${file}:${line}: ${error}`,
196
+ },
197
+ uso: (sub) => usoDe({ run: 'usage: ork audit run <pack> [--profile P] [--since Nd]', show: 'usage: ork audit show <run> [--ledger]', prompt: 'usage: ork audit prompt <pack> [--since Nd]', ingest: 'usage: ork audit ingest <run> --arquivo <findings.json>', verify: 'usage: ork audit verify <run>', report: 'usage: ork audit report <run> [--publicar]' }, sub) ?? `unknown subcommand: audit ${sub}`,
198
+ erro: { estagio: (v) => `invalid stage: "${v}". Use: nascente | crescendo | maduro`, pack: (v, list) => `unknown pack: "${v}". Use one of: ${list}`, regra: (v, list) => `unknown rule: "${v}". Use one of: ${list}`, limite: (v) => `invalid --limite: "${v}". Use an integer >= 1.` },
199
+ };
@@ -0,0 +1,213 @@
1
+ "use strict";
2
+ /**
3
+ * RM-061, fatia F3b: a familia `claims` do catalogo de mensagens (`ork claims add|conferir|verificar|retirar|ausente|
4
+ * list`), a tabela das claims, o lint do comando de claim, as recusas da conferencia pontual e as da prova minima. O
5
+ * pt-BR e a fonte; o ingles e tipado por ele. Sem import do nucleo.
6
+ *
7
+ * A alegacao, o arquivo, o comando e o motivo digitado pelo dono sao dado e saem como vieram; o estado de uma claim
8
+ * (dado do `claims.jsonl`) e a regra do lint so se traduzem na impressao, pelo id. A correcao do lint que vai ao
9
+ * `claims.jsonl` sai sempre do pt-BR (`claim-lint.ts`). As recusas da conferencia saem no `--json` como nasceram (em
10
+ * pt-BR, porque o `--json` nunca ativa o locale) e o texto as remonta no locale do comando.
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.CLAIMS_EN = exports.CLAIMS_PT_BR = void 0;
14
+ /** O erro do executor do sandbox (`verify-sandbox.ts`), pela frase exata: o que nao casa sai como veio. */
15
+ const ERROS_DO_SANDBOX_EN = [
16
+ [/^executor VERIFY sandbox disponível somente em Linux$/, () => 'the VERIFY sandbox executor is only available on Linux'],
17
+ [/^worktree deve ser absoluta$/, () => 'the worktree must be an absolute path'],
18
+ [/^worktree inválida$/, () => 'invalid worktree'],
19
+ [/^timeout sandbox fora do limite$/, () => 'sandbox timeout out of bounds'],
20
+ [/^executor sandbox fechado$/, () => 'sandbox executor closed'],
21
+ [/^escopo\/binário do executor sandbox mudou$/, () => 'the sandbox executor scope or binary changed'],
22
+ [/^scratch VERIFY deve ficar fora da worktree$/, () => 'the VERIFY scratch must stay outside the worktree'],
23
+ [/^cleanup incompleto: consumidores não comprovadamente encerrados; isolamento preservado: (.+)$/,
24
+ (dir) => `incomplete cleanup: consumers not proven closed; isolation kept: ${dir}`],
25
+ [/^cleanup incompleto: isolamento substituído; preservado$/, () => 'incomplete cleanup: isolation replaced; kept'],
26
+ [/^isolamento sandbox mudou$/, () => 'the sandbox isolation changed'],
27
+ [/^metadado protegido inesperado; objeto preservado: (.+)$/, (nome) => `unexpected protected metadata; object kept: ${nome}`],
28
+ [/^metadado temporário mudou antes do lançamento$/, () => 'temporary metadata changed before the launch'],
29
+ [/^identidade mudou$/, () => 'the identity changed'],
30
+ [/^scratch mudou$/, () => 'the scratch changed'],
31
+ [/^supervisor saiu (.+)$/, (status) => `supervisor exited ${status}`],
32
+ [/^resposta inválida$/, () => 'invalid answer'],
33
+ ];
34
+ const ESTADOS_EN = {
35
+ pendente: 'pending', verificado: 'verified', reprovado: 'failed', 'nao-verificavel': 'unverifiable', retirada: 'withdrawn',
36
+ };
37
+ exports.CLAIMS_PT_BR = {
38
+ // ork claims add
39
+ usoAdd: 'uso: ork claims add <thread-id> <arquivo> --claim "<alegacao>" [--verificar "<comando>"]',
40
+ registrada: (id, thread) => `Claim ${id} registrada na thread ${thread}.`,
41
+ campoArquivo: (arquivo) => ` arquivo ${arquivo}`,
42
+ campoAlegacao: (alegacao) => ` alegacao ${alegacao}`,
43
+ campoNegativa: (negativa) => ` negativa ${negativa ? 'sim (exige comando de verificacao)' : 'nao'}`,
44
+ campoVerificar: (verificar) => ` verificar ${verificar || '(nenhum comando declarado)'}`,
45
+ campoEstado: (estado) => ` estado ${estado}`,
46
+ campoMotivo: (motivo) => ` motivo ${motivo}`,
47
+ /** O estado gravado no `claims.jsonl`, como o texto o mostra. */
48
+ estado: (estado) => estado,
49
+ avisoNegativa: 'AVISO: alegacao negativa sem comando de verificacao reprova em `ork verify`.',
50
+ /** A linha do lint no `claims add` (no `ci prepare` o lint sai em pt-BR, como antes). */
51
+ avisoDoLint: (linha, suiteInteira) => `AVISO: ${linha}${suiteInteira ? '. O `ci prepare` recusa esta claim.' : ''}`,
52
+ linhaDoLint: (claim, nome, trecho, correcao) => `${claim} ${nome} (${trecho}); ${correcao}`,
53
+ nomesDoLint: { 'suite-inteira': 'roda a suite inteira', 'sha-intermediario': 'fixa um SHA intermediario',
54
+ 'contagem-de-commits': 'compara contagem de commits' },
55
+ correcoesDoLint: {
56
+ 'suite-inteira': 'rode só o teste da claim (`node --test` no arquivo do teste, ou o comando do projeto que roda um arquivo) ' +
57
+ 'ou um script hermético do projeto',
58
+ 'sha-intermediario': 'ancore na base (`git diff "$(git merge-base origin/main HEAD)" HEAD`) ou prove ancestralidade com `git merge-base --is-ancestor <sha> HEAD`',
59
+ 'contagem-de-commits': 'use `git merge-base --is-ancestor <commit> HEAD`: contagem de commits quebra com rebase e merge',
60
+ },
61
+ // ork claims conferir
62
+ usoConferir: 'uso: ork claims conferir <thread-id> --claims C1,C2 | --tarefa T1 [--prazo S] [--json]',
63
+ conferencia: (thread) => `Conferencia pontual da thread ${thread} (sem recibo: o ork verify continua sendo quem verifica)`,
64
+ headReal: (commit) => ` HEAD real ${commit}`,
65
+ executor: (executor, segundos) => ` executor ${executor}, prazo total ${segundos} s`,
66
+ alvoClaims: (ids) => ` alvo claims ${ids}`,
67
+ alvoTarefa: (tarefa, sha, comando) => ` alvo verify da tarefa ${tarefa} (plano sha256 ${sha}): ${comando}`,
68
+ item: (id, verificado, motivo, alegacao) => ` ${id} ${verificado ? 'passou' : `NAO PASSOU (${motivo})`} ${alegacao}`,
69
+ tudoPassou: 'Resultado: tudo passou.',
70
+ naoPassou: (motivos) => `Resultado: nao passou. Motivos: ${motivos}`,
71
+ prazoEsgotado: 'nao executado: prazo total da conferencia esgotado',
72
+ /** As recusas tipadas da conferencia: `claims.conferir.<motivo>: <detalhe>`. */
73
+ recusa: (motivo, detalhe) => `claims.conferir.${motivo}: ${detalhe}`,
74
+ semClaims: 'informe ao menos uma claim em --claims (ex.: C3,C7)',
75
+ idInvalido: (id) => `id de claim invalido: ${id}`,
76
+ repetida: (id) => `${id} pedida duas vezes`,
77
+ tarefaInvalida: (tarefa) => `tarefa invalida: ${tarefa} (ex.: T2.1)`,
78
+ tarefaAusente: (tarefa) => `o plano nao tem a tarefa ${tarefa}`,
79
+ tarefaRepetida: (n, tarefa) => `o plano tem ${n} cabecalhos da tarefa ${tarefa}`,
80
+ tarefaSemVerify: (tarefa) => `a tarefa ${tarefa} nao tem linha de verify`,
81
+ tarefaAmbigua: (tarefa, n) => `a tarefa ${tarefa} tem ${n} linhas de verify`,
82
+ tarefaSemComando: (tarefa, resto) => `o verify da tarefa ${tarefa} nao tem comando entre crases: ${resto}`,
83
+ tarefaVariosTrechos: (tarefa, n, resto) => `o verify da tarefa ${tarefa} tem ${n} trecho(s) entre ` +
84
+ `crases e texto alem de um comando so (${resto}); a conferencia nao escolhe qual pedaco rodar`,
85
+ planoNaoAbre: 'docs/plan.md da thread nao abre como arquivo comum',
86
+ planoGrande: 'docs/plan.md da thread nao e arquivo comum de ate 128 KiB',
87
+ semWorktree: (thread) => `a thread ${thread} nao tem worktree propria; a conferencia so roda nela`,
88
+ worktreeAusente: (thread) => `a worktree da thread ${thread} nao existe no disco`,
89
+ worktreeFora: (thread) => `a worktree da thread ${thread} fica fora do projeto`,
90
+ worktreeNaoRegistrada: (thread, branch) => `a worktree da thread ${thread} nao esta registrada no git do projeto na branch ${branch}`,
91
+ sandboxIndisponivel: (erro) => `${erro}; a conferencia so roda confinada, sem fallback`,
92
+ /** O erro do executor do sandbox, que o `verify-sandbox.ts` escreve em pt-BR, como a recusa o mostra. */
93
+ erroDoSandbox: (erro) => erro,
94
+ /** A alegacao que a conferencia por tarefa monta para o `verify` do plano (vai ao `--json` em pt-BR). */
95
+ verifyDaTarefa: (tarefa) => `verify da tarefa ${tarefa} do plano`,
96
+ claimsOuTarefa: 'informe --claims C1,C2 ou --tarefa T1, um dos dois',
97
+ prazo: (minimo, maximo) => `--prazo vai de ${minimo} a ${maximo} segundos`,
98
+ threadAusente: (thread) => `a thread ${thread} nao existe neste projeto`,
99
+ threadFechada: (thread) => `a thread ${thread} esta fechada`,
100
+ desconhecida: (id, thread) => `${id} nao existe na thread ${thread}`,
101
+ retiradaNaConferencia: (id, motivo) => `${id} foi retirada (${motivo ?? 'sem motivo'})`,
102
+ planoAusente: (thread) => `a thread ${thread} nao tem docs/plan.md`,
103
+ // ork claims verificar, retirar, ausente e list
104
+ usoVerificar: 'uso: ork claims verificar <thread-id> <claim-id> --comando "<comando>"',
105
+ comandoAnexado: (id) => `Claim ${id} agora tem comando de verificacao.`,
106
+ proveAgora: (thread) => `Prove agora: ork verify ${thread}`,
107
+ usoRetirar: 'uso: ork claims retirar <thread-id> <claim-id> --motivo "<motivo>"',
108
+ retirada: (id, thread) => `Claim ${id} retirada da thread ${thread}.`,
109
+ historicoContinua: ' o historico da alegacao continua no claims.jsonl e no ledger.',
110
+ usoAusente: 'uso: ork claims ausente <thread-id> --paths A,B --motivo "<motivo>" [--commit SHA]',
111
+ ausenciaRegistrada: (thread, paths) => `Ausencia de prova registrada na thread ${thread}: ${paths}.`,
112
+ usoList: 'uso: ork claims list <thread-id>',
113
+ // claims.ts
114
+ naoExiste: (id, thread) => `claim "${id}" nao existe na thread ${thread}`,
115
+ listaVazia: (thread) => `Nenhuma claim na thread ${thread}.\n` +
116
+ `Registre uma com: ork claims add ${thread} <arquivo> --claim "<alegacao>" --verificar "<comando>"`,
117
+ colunas: ['ID', 'FASE', 'ESTADO', 'NEGATIVA', 'ARQUIVO', 'VERIFICAR', 'ALEGACAO'],
118
+ sim: 'sim',
119
+ nao: 'nao',
120
+ semComando: '(sem comando)',
121
+ // prova-minima.ts
122
+ custoDeComandos: (limite, recebidos) => `claims.custo: ciclo sem CHECK aceita ate ${limite} comandos por claim ` +
123
+ `(recebidos ${recebidos}); use o teste focado ou declare a ausencia com ork claims ausente`,
124
+ custoDaSuite: (suite) => `claims.custo: ciclo sem CHECK nao roda a suite inteira ("${suite}"); ` +
125
+ 'use o teste focado do arquivo que mudou',
126
+ ausenteSemMotivo: 'prova.ausente: o motivo e obrigatorio (uma linha)',
127
+ ausenteSemCaminhos: 'prova.ausente: informe os caminhos que ficaram sem prova',
128
+ };
129
+ exports.CLAIMS_EN = {
130
+ usoAdd: 'usage: ork claims add <thread-id> <file> --claim "<statement>" [--verificar "<command>"]',
131
+ registrada: (id, thread) => `Claim ${id} recorded in thread ${thread}.`,
132
+ campoArquivo: (arquivo) => ` file ${arquivo}`,
133
+ campoAlegacao: (alegacao) => ` statement ${alegacao}`,
134
+ campoNegativa: (negativa) => ` negative ${negativa ? 'yes (needs a verification command)' : 'no'}`,
135
+ campoVerificar: (verificar) => ` verify ${verificar || '(no command declared)'}`,
136
+ campoEstado: (estado) => ` state ${estado}`,
137
+ campoMotivo: (motivo) => ` reason ${motivo}`,
138
+ estado: (estado) => ESTADOS_EN[estado] ?? estado,
139
+ avisoNegativa: 'WARNING: a negative statement without a verification command fails in `ork verify`.',
140
+ avisoDoLint: (linha, suiteInteira) => `WARNING: ${linha}${suiteInteira ? '. `ci prepare` refuses this claim.' : ''}`,
141
+ linhaDoLint: (claim, nome, trecho, correcao) => `${claim} ${nome} (${trecho}); ${correcao}`,
142
+ nomesDoLint: { 'suite-inteira': 'runs the whole suite', 'sha-intermediario': 'pins an intermediate SHA',
143
+ 'contagem-de-commits': 'compares a commit count' },
144
+ correcoesDoLint: {
145
+ 'suite-inteira': 'run only the claim test (`node --test` on the test file, or the project command that runs one file) ' +
146
+ 'or a hermetic project script',
147
+ 'sha-intermediario': 'anchor on the base (`git diff "$(git merge-base origin/main HEAD)" HEAD`) or prove ancestry with `git merge-base --is-ancestor <sha> HEAD`',
148
+ 'contagem-de-commits': 'use `git merge-base --is-ancestor <commit> HEAD`: a commit count breaks with rebase and merge',
149
+ },
150
+ usoConferir: 'usage: ork claims conferir <thread-id> --claims C1,C2 | --tarefa T1 [--prazo S] [--json]',
151
+ conferencia: (thread) => `Spot check of thread ${thread} (no receipt: \`ork verify\` is still what verifies)`,
152
+ headReal: (commit) => ` real HEAD ${commit}`,
153
+ executor: (executor, segundos) => ` executor ${executor}, total deadline ${segundos} s`,
154
+ alvoClaims: (ids) => ` target claims ${ids}`,
155
+ alvoTarefa: (tarefa, sha, comando) => ` target verify of task ${tarefa} (plan sha256 ${sha}): ${comando}`,
156
+ item: (id, verificado, motivo, alegacao) => ` ${id} ${verificado ? 'passed' : `FAILED (${motivo})`} ${alegacao}`,
157
+ tudoPassou: 'Result: everything passed.',
158
+ naoPassou: (motivos) => `Result: did not pass. Reasons: ${motivos}`,
159
+ prazoEsgotado: 'not run: the total deadline of the spot check ran out',
160
+ recusa: (motivo, detalhe) => `claims.conferir.${motivo}: ${detalhe}`,
161
+ semClaims: 'pass at least one claim in `--claims` (e.g. C3,C7)',
162
+ idInvalido: (id) => `invalid claim id: ${id}`,
163
+ repetida: (id) => `${id} requested twice`,
164
+ tarefaInvalida: (tarefa) => `invalid task: ${tarefa} (e.g. T2.1)`,
165
+ tarefaAusente: (tarefa) => `the plan has no task ${tarefa}`,
166
+ tarefaRepetida: (n, tarefa) => `the plan has ${n} headings for task ${tarefa}`,
167
+ tarefaSemVerify: (tarefa) => `task ${tarefa} has no verify line`,
168
+ tarefaAmbigua: (tarefa, n) => `task ${tarefa} has ${n} verify lines`,
169
+ tarefaSemComando: (tarefa, resto) => `the verify of task ${tarefa} has no command in backticks: ${resto}`,
170
+ tarefaVariosTrechos: (tarefa, n, resto) => `the verify of task ${tarefa} has ${n} backtick span(s) and text beyond a single ` +
171
+ `command (${resto}); the spot check does not pick which piece to run`,
172
+ planoNaoAbre: 'the thread `docs/plan.md` does not open as a regular file',
173
+ planoGrande: 'the thread `docs/plan.md` is not a regular file of up to 128 KiB',
174
+ semWorktree: (thread) => `thread ${thread} has no worktree of its own; the spot check only runs in it`,
175
+ worktreeAusente: (thread) => `the worktree of thread ${thread} does not exist on disk`,
176
+ worktreeFora: (thread) => `the worktree of thread ${thread} is outside the project`,
177
+ worktreeNaoRegistrada: (thread, branch) => `the worktree of thread ${thread} is not registered in the project git on branch ${branch}`,
178
+ sandboxIndisponivel: (erro) => `${erro}; the spot check only runs confined, with no fallback`,
179
+ erroDoSandbox: (erro) => {
180
+ const regra = ERROS_DO_SANDBOX_EN.find(([re]) => re.test(erro));
181
+ return regra ? regra[1](...(regra[0].exec(erro) ?? []).slice(1)) : erro;
182
+ },
183
+ verifyDaTarefa: (tarefa) => `the plan verify of task ${tarefa}`,
184
+ claimsOuTarefa: 'pass `--claims C1,C2` or `--tarefa T1`, one of the two',
185
+ prazo: (minimo, maximo) => `\`--prazo\` goes from ${minimo} to ${maximo} seconds`,
186
+ threadAusente: (thread) => `thread ${thread} does not exist in this project`,
187
+ threadFechada: (thread) => `thread ${thread} is closed`,
188
+ desconhecida: (id, thread) => `${id} does not exist in thread ${thread}`,
189
+ retiradaNaConferencia: (id, motivo) => `${id} was withdrawn (${motivo ?? 'no reason'})`,
190
+ planoAusente: (thread) => `thread ${thread} has no \`docs/plan.md\``,
191
+ usoVerificar: 'usage: ork claims verificar <thread-id> <claim-id> --comando "<command>"',
192
+ comandoAnexado: (id) => `Claim ${id} now has a verification command.`,
193
+ proveAgora: (thread) => `Prove it now: \`ork verify ${thread}\``,
194
+ usoRetirar: 'usage: ork claims retirar <thread-id> <claim-id> --motivo "<reason>"',
195
+ retirada: (id, thread) => `Claim ${id} withdrawn from thread ${thread}.`,
196
+ historicoContinua: ' the history of the statement stays in claims.jsonl and in the ledger.',
197
+ usoAusente: 'usage: ork claims ausente <thread-id> --paths A,B --motivo "<reason>" [--commit SHA]',
198
+ ausenciaRegistrada: (thread, paths) => `Missing proof recorded in thread ${thread}: ${paths}.`,
199
+ usoList: 'usage: ork claims list <thread-id>',
200
+ naoExiste: (id, thread) => `claim "${id}" does not exist in thread ${thread}`,
201
+ listaVazia: (thread) => `No claim in thread ${thread}.\n` +
202
+ `Record one with: ork claims add ${thread} <file> --claim "<statement>" --verificar "<command>"`,
203
+ colunas: ['ID', 'PHASE', 'STATE', 'NEGATIVE', 'FILE', 'VERIFY', 'STATEMENT'],
204
+ sim: 'yes',
205
+ nao: 'no',
206
+ semComando: '(no command)',
207
+ custoDeComandos: (limite, recebidos) => `claims.custo: a cycle without CHECK accepts up to ${limite} commands per claim ` +
208
+ `(got ${recebidos}); use the focused test or declare the gap with \`ork claims ausente\``,
209
+ custoDaSuite: (suite) => `claims.custo: a cycle without CHECK does not run the whole suite ("${suite}"); ` +
210
+ 'use the focused test of the file that changed',
211
+ ausenteSemMotivo: 'prova.ausente: the reason is required (one line)',
212
+ ausenteSemCaminhos: 'prova.ausente: pass the paths that were left without proof',
213
+ };
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CONDUCAO_EN = exports.CONDUCAO_PT_BR = void 0;
4
+ /** RM-061 F3d: texto humano de `ork conducao`; contratos e dados continuam inalterados. */
5
+ exports.CONDUCAO_PT_BR = {
6
+ status: {
7
+ livre: (thread) => `Thread ${thread}: ninguem conduz agora. Qualquer canal pode despachar ou verificar.`,
8
+ titulo: (thread, linha) => `Thread ${thread}: ${linha}`,
9
+ prompt: (sha) => ` prompt sha256 ${sha}`,
10
+ prazo: (data) => ` prazo do lease (metadado, nao prova): ${data}`,
11
+ acompanhar: (sessao) => ` acompanhar: ork sessions logs ${sessao}`,
12
+ assumir: (thread) => ` assumir: ork conducao assumir ${thread} --por <voce> --motivo "<por que>"`,
13
+ },
14
+ recusa: {
15
+ esperar: 'Esperar a vez: repete este pedido e segue sozinho quando a conducao atual terminar (ate 30 min).',
16
+ acompanhar: 'Acompanhar quem conduz, sem mexer em nada.',
17
+ assumir: 'Assumir a conducao: encerra a atual pelo proprio runtime e registra no ledger quem assumiu, de qual canal e por que.',
18
+ titulo: (thread) => `Pedido nao executado: a thread ${thread} ja esta sendo conduzida agora, e duas execucoes na mesma worktree se corrompem (foi o que aconteceu em 19/09/2026).`,
19
+ quem: (canal, dono, fase, desde) => ` Quem conduz: canal ${canal}, ${dono}, fase ${fase}, desde ${desde}.`,
20
+ prompt: (sha) => ` Pedido em curso: prompt sha256 ${sha}.`,
21
+ entrando: ' Outra operacao esta tomando a conducao neste instante; o registro dela ainda nao apareceu.',
22
+ pedido: (operacao, fase, canal) => ` Pedido recusado: ${operacao}${fase ? ` da fase ${fase}` : ''}, pelo canal ${canal}.`,
23
+ opcoes: 'O que voce pode fazer:', passo: (n, explicacao) => ` ${n}. ${explicacao}`,
24
+ comandoAssumir: (thread) => `ork conducao assumir ${thread} --por <voce> --motivo "<por que>"`,
25
+ },
26
+ sentinela: {
27
+ desligada: (maquina) => `Sentinela: desligada na maquina ${maquina}; o condutor externo conduz.`,
28
+ ligada: (maquina, canal, sessao) => `Sentinela: ligada na maquina ${maquina}, canal ${canal}, sessao ${sessao}; o condutor externo cede o despacho e o retry, menos a retomada por cota.`,
29
+ vencida: (sessao) => `Sentinela: a presenca da sessao ${sessao} venceu; o condutor externo conduz.`,
30
+ nenhuma: ' nenhuma thread aberta neste checkout', despachar: (fase) => `despachar ${fase}`,
31
+ },
32
+ autorizacao: {
33
+ sem: (motivo, detalhe) => `Sem autorização durável válida nesta máquina (${motivo}): ${detalhe}.`,
34
+ semEfeito: ' A batida da condução não age sozinha: cada ação vira item da fila do pulse, com o comando pronto.',
35
+ autorizar: ' Para autorizar: ork conducao autorizar --ate <data> --pode merge,registrar,master,despachar [--por <seu nome>]',
36
+ valida: (por, ate, pode) => `Autorização durável de ${por} até ${ate}: a condução pode ${pode}.`,
37
+ concedida: (em, maquina, projeto, nota) => ` concedida em ${em} na máquina ${maquina}, projeto ${projeto}${nota ? `; nota: ${nota}` : ''}`,
38
+ arquivo: (arquivo, sha) => ` arquivo ${arquivo} (sha256 ${sha})`,
39
+ limite: ' Tag e publicação nunca entram. O prazo é do dono: depois dele, nada é feito sozinho.',
40
+ linhaValida: (por, ate, pode) => `autorização durável de ${por} até ${ate}: a varredura pode ${pode}`,
41
+ linhaAusente: 'sem autorização durável: as ações da varredura viram itens da fila do pulse, com o comando pronto',
42
+ linhaInvalida: (motivo, detalhe) => `autorização durável sem valor (${motivo}: ${detalhe}); as ações da varredura viram itens da fila do pulse`,
43
+ },
44
+ batida: {
45
+ ocupada: (detalhe) => `Outra batida da condução está agindo nesta máquina agora (${detalhe}); o resultado dela sai no próximo resumo.`,
46
+ autorizada: (por, ate, pode) => `Autorização durável de ${por} até ${ate}: a condução pode ${pode}.`,
47
+ semAutorizacao: (motivo) => `Sem autorização durável válida (${motivo}): nada foi feito sozinho; o que andaria ficou com você.`,
48
+ sentinela: 'A Sentinela conduz as fases nesta máquina agora; a batida manteve apenas a reação a cota.',
49
+ prs: (detalhe) => `PRs não lidos: ${detalhe}.`, base: (detalhe) => `Base não trazida: ${detalhe}.`,
50
+ voltou: (n) => `Voltou a andar: ${n}`, nada: 'Nada voltou a andar nesta batida.',
51
+ espera: (n) => `Espera a próxima batida: ${n}`, comVoce: (n) => `Com você: ${n}`,
52
+ item: (thread, acao, pr, detalhe) => ` ${thread}: ${acao}${pr ? ` do PR #${pr}` : ''}; ${detalhe}`,
53
+ itemDono: (thread, acao, pr, motivo, detalhe, comando) => ` ${thread}: ${acao}${pr ? ` do PR #${pr}` : ''} (${motivo}); ${detalhe}. Responder: ${comando}`,
54
+ },
55
+ atualizacao: {
56
+ atualizada: (branch, base, enviada) => `${branch} já contém ${base}: nada a mesclar${enviada ? '; a branch foi empurrada e conferida no remoto' : ''}.`,
57
+ mesclada: (base, branch, sha, devolvidos, enviada) => `${base} mesclada na ${branch} (${sha})${devolvidos ? `; ${devolvidos} item(ns) da thread de volta a "## Não publicado" do CHANGELOG` : ''}${enviada ? '; branch empurrada e conferida no remoto' : ''}.`,
58
+ conflito: (base, branch, arquivos) => `o merge de ${base} na ${branch} conflita em código (${arquivos}): abortado, e a resolução fica com o dono.`,
59
+ recusada: (branch, motivo, detalhe) => `atualização da ${branch} recusada (${motivo}): ${detalhe}.`,
60
+ },
61
+ cli: {
62
+ sentinelaUso: 'uso: ork conducao sentinela status|bater|desligar [--sessao <id>] [--json]', sentinelaSessao: (acao) => `uso: ork conducao sentinela ${acao} --sessao <id> [--json]`,
63
+ sentinelaLigada: (ligou, maquina, sessao) => `Sentinela ${ligou ? 'ligada' : 'renovada'} na maquina ${maquina} pela sessao ${sessao}; vale 3 min sem batida.`,
64
+ sentinelaOutra: (sessao, maquina) => `Outra sessao (${sessao}) conduz pela Sentinela na maquina ${maquina}; esta fica so olhando.`,
65
+ sentinelaOff: 'Sentinela desligada nesta maquina; o condutor externo volta a conduzir.', sentinelaNada: 'Nada a desligar: a presenca nesta maquina nao e desta sessao.',
66
+ autorizacaoUso: 'uso: ork conducao autorizacao [--json]', autorizarUso: 'uso: ork conducao autorizar --ate <data> --pode merge,registrar,master,despachar [--por Q] [--nota N] [--json]',
67
+ autorizacaoRecusada: (motivo, detalhe) => `Autorização recusada (${motivo}): ${detalhe}`, autorizacaoGravada: (linha) => `Autorização gravada. ${linha}.`,
68
+ substitui: (por, ate, pode) => ` substitui a de ${por} até ${ate} (${pode})`, arquivo: (arquivo) => ` arquivo ${arquivo}, fora do git; para revogar, apague o arquivo.`,
69
+ batidaUso: 'uso: ork conducao batida [--entregar] [--json]', pulseAviso: 'aviso: o transporte do pulse não confirmou a retomada (veja ork doctor)', pulseFalha: (erro) => `aviso: retomada sem transporte do pulse (${erro})`,
70
+ atualizarUso: 'uso: ork conducao atualizar <thread-id> [--enviar] [--esperar [min]] [--json]', statusUso: 'uso: ork conducao status <thread-id> [--json]',
71
+ assumirUso: 'uso: ork conducao assumir <thread-id> --por <quem> --motivo "<por que>" [--canal C]', assumida: (ok, detalhe) => `${ok ? 'Conducao assumida.' : 'Handoff recusado.'} ${detalhe}`,
72
+ detalheAssumida: (por, canal, ate) => `conducao assumida por ${por} pelo canal ${canal}; a proxima operacao desse canal usa a reserva ate ${ate}`,
73
+ uso: 'uso: ork conducao status|assumir|atualizar <thread-id> | ork conducao autorizar|autorizacao|batida | ork conducao sentinela status|bater|desligar',
74
+ },
75
+ };
76
+ exports.CONDUCAO_EN = {
77
+ status: {
78
+ livre: (thread) => `Thread ${thread}: nobody is conducting it now. Any channel may dispatch or verify.`, titulo: (thread, line) => `Thread ${thread}: ${line}`,
79
+ prompt: (sha) => ` prompt sha256 ${sha}`, prazo: (date) => ` lease deadline (metadata, not proof): ${date}`, acompanhar: (session) => ` follow: ork sessions logs ${session}`,
80
+ assumir: (thread) => ` take over: ork conducao assumir ${thread} --por <you> --motivo "<why>"`,
81
+ },
82
+ recusa: {
83
+ esperar: 'Wait your turn: the command below repeats this request and proceeds on its own once the current conduction ends (waiting up to 30 min).',
84
+ acompanhar: 'Follow who is conducting, without changing anything.',
85
+ assumir: 'Take over conduction: ends the current one through its own runtime and records in the ledger who took over, from which channel, and why.',
86
+ titulo: (thread) => `Request not executed: thread ${thread} is already being conducted, and two executions in the same worktree corrupt each other (as happened on 2026-09-19).`,
87
+ quem: (channel, owner, phase, since) => ` Conducted by: channel ${channel}, ${owner}, phase ${phase}, since ${since}.`,
88
+ prompt: (sha) => ` Request in progress: prompt sha256 ${sha}.`,
89
+ entrando: ' Another operation is taking conduction at this moment; its record has not appeared yet.',
90
+ pedido: (operation, phase, channel) => ` Rejected request: ${operation}${phase ? ` for phase ${phase}` : ''}, through channel ${channel}.`,
91
+ opcoes: 'What you can do:', passo: (n, explanation) => ` ${n}. ${explanation}`,
92
+ comandoAssumir: (thread) => `ork conducao assumir ${thread} --por <you> --motivo "<why>"`,
93
+ },
94
+ sentinela: {
95
+ desligada: (machine) => `Sentinel: off on machine ${machine}; the external conductor is active.`,
96
+ ligada: (machine, channel, session) => `Sentinel: on at machine ${machine}, channel ${channel}, session ${session}; the external conductor yields dispatch and retry, except quota recovery.`,
97
+ vencida: (session) => `Sentinel: the presence of session ${session} expired; the external conductor is active.`, nenhuma: ' no open thread in this checkout', despachar: (phase) => `dispatch ${phase}`,
98
+ },
99
+ autorizacao: {
100
+ sem: (reason, detail) => `No valid durable authorization on this machine (${reason}): ${detail}.`,
101
+ semEfeito: ' The conduction heartbeat does not act on its own: each action becomes a pulse queue item with a ready command.',
102
+ autorizar: ' To authorize: ork conducao autorizar --ate <date> --pode merge,registrar,master,despachar [--por <your name>]',
103
+ valida: (by, until, allowed) => `Durable authorization by ${by} until ${until}: conduction may ${allowed}.`,
104
+ concedida: (at, machine, project, note) => ` granted at ${at} on machine ${machine}, project ${project}${note ? `; note: ${note}` : ''}`,
105
+ arquivo: (file, sha) => ` file ${file} (sha256 ${sha})`, limite: ' Tags and publication are never included. The deadline belongs to the owner: after it, nothing is done automatically.',
106
+ linhaValida: (by, until, allowed) => `durable authorization by ${by} until ${until}: the sweep may ${allowed}`,
107
+ linhaAusente: 'no durable authorization: sweep actions become pulse queue items with a ready command',
108
+ linhaInvalida: (reason, detail) => `invalid durable authorization (${reason}: ${detail}); sweep actions become pulse queue items`,
109
+ },
110
+ batida: {
111
+ ocupada: (detail) => `Another conduction heartbeat is acting on this machine now (${detail}); its result will appear in the next summary.`,
112
+ autorizada: (by, until, allowed) => `Durable authorization by ${by} until ${until}: conduction may ${allowed}.`,
113
+ semAutorizacao: (reason) => `No valid durable authorization (${reason}): nothing was done automatically; work that could advance stayed with you.`,
114
+ sentinela: 'The Sentinel is conducting phases on this machine now; the heartbeat kept only quota reaction.', prs: (detail) => `PRs not read: ${detail}.`, base: (detail) => `Base not brought in: ${detail}.`,
115
+ voltou: (n) => `Advanced again: ${n}`, nada: 'Nothing advanced again in this heartbeat.', espera: (n) => `Waits for the next heartbeat: ${n}`, comVoce: (n) => `With you: ${n}`,
116
+ item: (thread, action, pr, detail) => ` ${thread}: ${action}${pr ? ` from PR #${pr}` : ''}; ${detail}`,
117
+ itemDono: (thread, action, pr, reason, detail, command) => ` ${thread}: ${action}${pr ? ` from PR #${pr}` : ''} (${reason}); ${detail}. Reply: ${command}`,
118
+ },
119
+ atualizacao: {
120
+ atualizada: (branch, base, pushed) => `${branch} already contains ${base}: nothing to merge${pushed ? '; the branch was pushed and verified on the remote' : ''}.`,
121
+ mesclada: (base, branch, sha, returned, pushed) => `${base} merged into ${branch} (${sha})${returned ? `; ${returned} thread item(s) returned to "## Não publicado" in CHANGELOG` : ''}${pushed ? '; branch pushed and verified on the remote' : ''}.`,
122
+ conflito: (base, branch, files) => `the merge of ${base} into ${branch} conflicts in code (${files}): aborted; resolution stays with the owner.`, recusada: (branch, reason, detail) => `update of ${branch} rejected (${reason}): ${detail}.`,
123
+ },
124
+ cli: {
125
+ sentinelaUso: 'usage: ork conducao sentinela status|bater|desligar [--sessao <id>] [--json]', sentinelaSessao: (action) => `usage: ork conducao sentinela ${action} --sessao <id> [--json]`,
126
+ sentinelaLigada: (started, machine, session) => `Sentinel ${started ? 'started' : 'renewed'} on machine ${machine} by session ${session}; valid for 3 min without a heartbeat.`,
127
+ sentinelaOutra: (session, machine) => `Another session (${session}) conducts through the Sentinel on machine ${machine}; this one only observes.`,
128
+ sentinelaOff: 'Sentinel turned off on this machine; the external conductor resumes.', sentinelaNada: 'Nothing to turn off: the presence on this machine does not belong to this session.',
129
+ autorizacaoUso: 'usage: ork conducao autorizacao [--json]', autorizarUso: 'usage: ork conducao autorizar --ate <date> --pode merge,registrar,master,despachar [--por Q] [--nota N] [--json]',
130
+ autorizacaoRecusada: (reason, detail) => `Authorization rejected (${reason}): ${detail}`, autorizacaoGravada: (line) => `Authorization stored. ${line}.`,
131
+ substitui: (by, until, allowed) => ` replaces the one from ${by} until ${until} (${allowed})`, arquivo: (file) => ` file ${file}, outside git; delete the file to revoke it.`,
132
+ batidaUso: 'usage: ork conducao batida [--entregar] [--json]', pulseAviso: 'warning: the pulse transport did not confirm recovery (see ork doctor)', pulseFalha: (error) => `warning: recovery without pulse transport (${error})`,
133
+ atualizarUso: 'usage: ork conducao atualizar <thread-id> [--enviar] [--esperar [min]] [--json]', statusUso: 'usage: ork conducao status <thread-id> [--json]',
134
+ assumirUso: 'usage: ork conducao assumir <thread-id> --por <who> --motivo "<why>" [--canal C]', assumida: (ok, detail) => `${ok ? 'Conduction taken over.' : 'Handoff rejected.'} ${detail}`,
135
+ detalheAssumida: (by, channel, until) => `conduction taken over by ${by} through channel ${channel}; the next operation from that channel uses the reservation until ${until}`,
136
+ uso: 'usage: ork conducao status|assumir|atualizar <thread-id> | ork conducao autorizar|autorizacao|batida | ork conducao sentinela status|bater|desligar',
137
+ },
138
+ };