@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,349 @@
1
+ "use strict";
2
+ /**
3
+ * RM-061, fatia F2b: a familia `pulse` do catalogo de mensagens (`ork pulse` em texto; o `--json` nao muda).
4
+ * O pt-BR e a fonte; o ingles e tipado por ele. Sem import do nucleo.
5
+ *
6
+ * O pulse junta dado de muitas fontes. Sai como veio: a pergunta e as opcoes de um pedido HITL, a tela de
7
+ * uma sessao, o detalhe e a correcao que outro processo gravou num gate do ledger, o codigo e o erro de um
8
+ * diagnostico, e o proximo passo de uma thread parada no condutor (G5 da F2b). O que o proprio processo monta
9
+ * (a pergunta de fase sem heartbeat, as paradas do monitor, o estado da sessao no radar, o detalhe da consulta
10
+ * do runtime e a descricao de reserva do motivo) nasce em pt-BR (o `--json` o guarda) e sai remontado (G2).
11
+ * A descricao por motivo tipado tem a fonte aqui: `DESCRICAO_DO_MOTIVO` (gates.ts) le o pt-BR.
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.PULSE_EN = exports.PULSE_PT_BR = void 0;
15
+ /** A classe da sessao no radar (`ClasseDeSessao`) e a da fase orfa, pelo id; `hitl` e `thread` sao iguais. */
16
+ const CLASSES_EN = {
17
+ abandonada: 'abandoned', falha: 'failed', trabalhando: 'working', concluida: 'done', interrompida: 'stopped',
18
+ interativa: 'interactive', desconhecida: 'unknown', fase_orfa: 'orphan phase', score_pendente: 'pending score',
19
+ // RM-063 (F5): o item de uma acao da varredura.
20
+ varredura: 'sweep',
21
+ };
22
+ /** As alternativas do pedido curto do impedimento do despacho (`impedimento.ts`), pelo texto que ele grava. */
23
+ const ALTERNATIVAS_DO_IMPEDIMENTO_EN = {
24
+ 'Rodei o comando': 'I ran the command', 'Trocar o runtime do bloco': 'Switch the block runtime', 'Deixar parada': 'Leave it stopped',
25
+ // RM-063 (F4): a alternativa recomendada da escada de recuperacao que acabou.
26
+ 'Conferir o runtime e despachar de novo com o mesmo pedido': 'Check the runtime and dispatch again with the same request',
27
+ };
28
+ exports.PULSE_PT_BR = {
29
+ cabecalho: (contrato, quando) => `Pulse (${contrato}) ${quando}`,
30
+ precisaDeHumano: (n) => `Precisa de humano agora: ${n}`,
31
+ semNota: (n) => `${n} entrega(s) sem nota, aceitas por padrão com registro`,
32
+ diagnostico: (detalhe) => `[diagnostico] ${detalhe}`,
33
+ // A forja sem leitura de pedidos (parado-no-condutor): o estado dela, dito uma vez por remoto e host.
34
+ forjaSemLogin: (cli, host, remoto) => `o ${cli} não está autenticado em ${host}, a forja de ${remoto}`,
35
+ /** Nem o `gh` nem o `glab` tem login no host proprio: a frase do gh de sempre, e o glab junto. */
36
+ forjaSemLoginNasDuas: (host, remoto) => `o gh não está autenticado em ${host}, a forja de ${remoto}, e o glab também não`,
37
+ forjaSemPedidos: (tipo, host, remoto) => `a forja de ${remoto} (${host}, ${tipo}) não tem a leitura de pedidos abertos no ork`,
38
+ forjaNaoResolvida: (remoto, motivo) => `a forja de ${remoto} não se resolveu: ${motivo}`,
39
+ consultaIncompleta: (detalhe) => `[consulta incompleta] ${detalhe}`,
40
+ item: (quem, classe, minutos) => `${quem} [${classe}] ${minutos} min`,
41
+ /** A classe do item (`ItemPulse.classe`), dado do `--json`: o ingles a traduz pelo id na impressao (D4). */
42
+ classe: (classe) => classe,
43
+ desconhecido: 'desconhecido',
44
+ menosDeUm: 'menos de 1',
45
+ opcao: (opcao) => ` opção: ${opcao}`,
46
+ recomendacao: (texto) => `Recomendação: ${texto}`,
47
+ responder: (comando) => `Responder: ${comando}`,
48
+ log: (linha) => ` log: ${linha}`,
49
+ conduzidas: (n) => `Conduzidas agora: ${n}`,
50
+ conducao: (thread, linha) => `${thread}: ${linha}`,
51
+ paradoNoCondutor: (n) => `Parado no condutor: ${n}`,
52
+ /** A linha do condutor (hitl-resumo.ts): a mesma frase no pulse, no resumo e no status do roadmap. */
53
+ linhaDoCondutor: (thread, desde, proximoPasso) => `${thread} parado no condutor desde ${desde}: ${proximoPasso}`,
54
+ hitlDeConducao: (abertas, mediana) => `HITL de condução: ${abertas} aberta(s); ${mediana}`,
55
+ /** hitl-tempo-parado.ts: a mediana dos 7 dias e a pergunta de conducao parada. */
56
+ medianaSemResposta: 'mediana de 7 dias sem resposta medida',
57
+ mediana: (minutos, dentro, respondidos) => `mediana de 7 dias ${minutos} (${dentro ? 'dentro' : 'acima'} da meta de 5 min, ${respondidos} resposta(s))`,
58
+ perguntaParada: (thread, fase, ha, desde) => `${thread} (${fase}) parada há ${ha}, desde ${desde}`,
59
+ automaticas: (n) => `Ações automáticas pendentes: ${n}`,
60
+ automatica: (thread, motivo, comando) => `${thread}: ${motivo}; ${comando}`,
61
+ // pulse.ts: o que o proprio pulse monta (vai ao --json)
62
+ semHeartbeat: (fase, desde) => `Fase ${fase} sem heartbeat desde ${desde}.`,
63
+ semRuntime: 'runtime não consultado por --sem-runtime',
64
+ telasAdiadas: (n) => `radar.orcamento: ${n} tela(s) de sessão ficaram para a próxima varredura`,
65
+ // orquestracao.ts: as paradas que o monitor monta (pergunta e correcao do item do pulse)
66
+ pausaTrabalhando: (sessao) => `a sessao ${sessao} do bloco ainda esta trabalhando no runtime: a pausa chega quando ela terminar`,
67
+ pausaBloqueada: (sessao) => `a sessao ${sessao} do bloco esta BLOQUEADA no runtime esperando acao humana (prompt, permissao ou credencial): veja \`ork sessions hitl\``,
68
+ blocoFechado: (fase, sobre) => `bloco fechado em ${fase}: espera o veredito humano sobre ${sobre}`,
69
+ aPausaDoBloco: 'a pausa do bloco',
70
+ responderSessao: (curta, sessao) => `ork sessions logs ${curta} para ver o que a sessao pede, e claude attach ${sessao} para responder`,
71
+ threadPausada: (fase) => `thread carimbada como pausada na fase ${fase}`,
72
+ naFilaDoLease: (nome, atras, colide) => `na fila de ${nome}, atras da thread ${atras} (colide com ${colide})`,
73
+ espereOLease: (atras, regiao, dono) => `espere a thread ${atras} liberar (ork lease release ${regiao} --thread ${dono}), ou reduza a regiao pedida`,
74
+ /** `quando` e o ISO de `liberaEm`: o JSON do monitor o guarda cru e `linhaDaParada` o localiza. */
75
+ naFilaDeRateLimit: (id, falta, quando, estimada) => `pedido ${id} na fila de rate limit, libera ${falta} (${quando}, ${estimada ? 'janela estimada' : 'hora dita pelo runtime'})`,
76
+ // hitl.ts: o estado da sessao no radar (vira a pergunta do item quando a sessao nao pergunta nada)
77
+ sessao: { blocked: 'sessao parada esperando acao humana (prompt, permissao ou credencial)',
78
+ failed: 'sessao terminou em erro: alguem decide entre retomar, corrigir ou abandonar',
79
+ working: 'sessao em execucao', done: 'sessao concluiu', stopped: 'sessao parada por decisao humana (`claude stop`)',
80
+ idle: 'sessao interativa ociosa, conduzida por um humano no terminal',
81
+ // RM-063 (fatia 3, achado a): `busy` e `running` sao a sessao trabalhando num turno, como o observador ja os le.
82
+ busy: 'sessao ocupada, executando um turno', running: 'sessao em execucao' },
83
+ sessaoSemEstado: 'runtime nao informou estado desta sessao: tratada como possivel parada',
84
+ sessaoEstadoForaDoCatalogo: (estado) => `estado "${estado}" nao esta no catalogo do ork: tratado como possivel parada`,
85
+ // a consulta do runtime (claude-bg.ts e hitl.ts): o detalhe do pulse quando ela falha
86
+ adapterIndisponivel: 'runtime adapter indisponivel nesta maquina (`claude` fora do PATH)',
87
+ claudeForaDoPath: 'binário `claude` fora do PATH',
88
+ claudeAgentsFalhou: (codigo) => `claude agents falhou (código ${codigo})`,
89
+ // hitl.ts (`recomendarPara`): a recomendacao unica que o radar monta para cada tipo de parada
90
+ recomendacaoDoRadar: {
91
+ abandonada: 'nao responda: o job ja saiu. Confira o que ficou na worktree da sessao e redespache so o resto do trabalho.',
92
+ falha: (id) => `leia \`ork sessions logs ${id}\` e decida entre retomar, corrigir a causa ou abandonar a sessao.`,
93
+ desconhecida: (id) => `estado fora do catalogo: confirme no \`ork sessions logs ${id}\` se a sessao esta mesmo parada.`,
94
+ credencial: (id) => `entregue o segredo agora (\`claude attach ${id}\`) para nao segurar a entrega; ` +
95
+ 'se este mesmo bloqueio ja se repetiu, troque por credencial de automacao e ele nao volta.',
96
+ permissao: (id) => `responda o prompt (\`claude attach ${id}\`); se o comando e rotineiro nesse projeto, ` +
97
+ 'coloque-o na allowlist de permissoes para nao parar de novo pelo mesmo motivo.',
98
+ pergunta: (id) => `abra a sessao (\`claude attach ${id}\`) e escolha entre as opcoes que ela listou.`,
99
+ outra: (id) => `veja o que a sessao pede com \`ork sessions logs ${id}\` antes de responder.`,
100
+ },
101
+ /** O texto da alternativa do impedimento do despacho (RM-055), como `impedimento.ts` o grava; o ingles traduz. */
102
+ alternativaDoImpedimento: (texto) => texto,
103
+ // board.ts: a correcao das vagas que o escalonador devolve e o pulse mostra nas acoes automaticas
104
+ vagaStaleCorrecao: (thread, fase) => `redespache com ork phase run ${thread} --fase ${fase}, ou feche com ork master ${thread}`,
105
+ limiteCorrecao: 'espere uma thread liberar, ou suba concurrency.max_parallel_threads no orkastery.yaml',
106
+ /**
107
+ * RM-063 (F5): as acoes da varredura que age (`varredura-acoes.ts`) e a autorizacao duravel. O que vai ao `--json` nasce
108
+ * em pt-BR; a impressao remonta no locale.
109
+ */
110
+ varredura: {
111
+ oQue: {
112
+ limpar: (sessao) => `soltar a sessão ${sessao}, que não tem mais processo (fantasma) e ainda segura a condução ` +
113
+ 'e a vaga da thread; o runtime não é tocado',
114
+ registrar: (merge, branch, base) => `registrar a entrega: o merge ${merge} da branch ${branch} já ` +
115
+ `está em ${base}, e o ledger não tem o ship_done`,
116
+ master: 'fechar a thread pelo MASTER por omissão: a entrega está registrada, ninguém deu nota e nada anda nela; o índice ' +
117
+ 'do ledger vira a nota, e a sua nota, quando vier, vale',
118
+ // RM-063 (F7): a batida da conducao (`conducao-batida.ts`).
119
+ merge: (pr, branch, base) => `mesclar o PR #${pr} (${branch}) em ${base}, com os checks obrigatórios ` +
120
+ 'verdes e o PR limpo',
121
+ atualizar: (pr, branch, base) => `trazer ${base} para a branch ${branch} do PR #${pr}, que ficou para trás ` +
122
+ 'ou em conflito só no CHANGELOG',
123
+ despachar: (fase) => `despachar a fase ${fase} com o pedido guardado na criação da thread`,
124
+ retomar: (fase) => `retomar a fase ${fase} pelo retry, com o mesmo prompt gravado`,
125
+ },
126
+ bloqueios: {
127
+ 'conduzida': 'alguém conduz a thread agora',
128
+ 'sessao-viva': 'há sessão viva trabalhando na worktree da thread',
129
+ 'sessoes-sem-leitura': 'sem a leitura das sessões vivas do runtime agora, não dá para provar a worktree parada',
130
+ 'worktree-suja': 'a worktree da thread tem alteração não commitada',
131
+ 'branch-com-commits': 'a branch tem commits depois do head do PR mesclado',
132
+ 'trabalho-novo': 'a thread recebeu trabalho novo depois do PR, e a ação mudaria a fase dela',
133
+ 'git-sem-resposta': 'o git não respondeu sobre a branch',
134
+ 'pr-rascunho': 'o PR está em rascunho',
135
+ 'checks-vermelhos': 'um check obrigatório do PR falhou',
136
+ 'sem-checks-obrigatorios': 'a base não exige check nenhum, e merge sem check obrigatório verde fica com você',
137
+ 'pr-bloqueado': 'o GitHub bloqueia o merge mesmo com os checks obrigatórios verdes (revisão ou regra da base)',
138
+ 'pr-instavel': 'há check não obrigatório vermelho, e o PR não está limpo',
139
+ 'conflito-em-codigo': 'o merge da base na branch conflita em código, e conflito em código nunca é resolvido sozinho',
140
+ 'branch-nao-publicada': 'a branch local tem commits que o PR ainda não tem',
141
+ 'sem-prompt-gravado': 'a thread não tem o pedido guardado na criação (ork thread new --pedido), e sem ele não há prompt',
142
+ 'check-pendente': 'o CHECK da thread não passou (veredito PASSOU) depois do último commit de produto do PR',
143
+ 'pendencia-do-dono': 'a thread espera você (pausada, pausa prevista, pergunta ou escalação aberta)',
144
+ 'espera-longa': 'a batida espera há mais de 2 h (check obrigatório pendente ou o GitHub sem o estado do merge)',
145
+ 'thread-do-arco': 'a thread é trabalho de um arco #Noctum: a entrega e o MASTER dela são do passo da entrega do arco',
146
+ },
147
+ comBloqueio: (oQue, bloqueio) => `${oQue}. A varredura não faz isso sozinha agora: ${bloqueio}`,
148
+ comBloqueioRecomendacao: (thread, comando) => `veja a thread antes (ork thread status ${thread}); quando o trabalho nela parar, o comando é ${comando}`,
149
+ comRecusa: (oQue, detalhe) => `${oQue}. A varredura tentou e não fez: ${detalhe}`,
150
+ daVarredura: (por, ate) => `a varredura faz isso na próxima batida, pela autorização durável de ${por} até ${ate}`,
151
+ doDono: (acao) => `rode o comando; para a varredura fazer isso sozinha, autorize a ação ${acao} na autorização ` +
152
+ 'durável desta máquina (ork.autorizacao-duravel/v1)',
153
+ autorizacaoValida: (por, ate, pode) => `Varredura: autorização durável de ${por} até ${ate} (pode: ${pode})`,
154
+ autorizacaoAusente: 'Varredura: sem autorização durável; as ações dela ficam na fila do dono, com o comando pronto',
155
+ autorizacaoInvalida: (motivo, detalhe) => `Varredura: autorização durável sem valor (${motivo}: ${detalhe}); as ações dela ficam na fila do dono`,
156
+ feitas: (n) => `A varredura fez sozinha nos últimos 7 dias: ${n}`,
157
+ feita: (thread, acao, detalhe) => ` ${thread}: ${acao}; ${detalhe}`,
158
+ },
159
+ /** RM-063 (F6): a maquina ociosa (`maquina-ociosa.ts`): o passo de cada sugestao e as linhas do pulse. */
160
+ ociosa: {
161
+ despachar: (fase) => `despachar a fase ${fase} com o pedido guardado da thread`,
162
+ retomar: 'retomar a fase pelo retry, com o mesmo prompt',
163
+ verAThread: (fase) => `ver por que a thread parou na fase ${fase}`,
164
+ abrir: 'abrir a thread do item, que ainda não tem uma',
165
+ linha: (maquina, livres, limite, reservados) => `Máquina ociosa: ${maquina} com ${livres} de ` +
166
+ `${limite} vagas livres e ${reservados} item(ns) do roadmap reservado(s) para ela sem ninguém trabalhando`,
167
+ sugerida: (item, onde, passo, comando) => ` ${item} (${onde}): ${passo}; ${comando}`,
168
+ semThread: 'sem thread',
169
+ },
170
+ /** A descricao de cada motivo tipado: a fonte de `DESCRICAO_DO_MOTIVO` (reserva do detalhe da parada). */
171
+ motivos: {
172
+ 'artifact.missing': 'artefato exigido pela fase nao existe no disco',
173
+ 'claims.failed': 'alegacao verificavel reprovou na reexecucao no HEAD real',
174
+ 'claims.unverifiable': 'alegacao sem comando de verificacao declarado',
175
+ 'policy.violation': 'policy do manifesto com severidade block foi violada',
176
+ 'runtime.autoconferencia': 'o CHECK foi despachado no mesmo runtime que fez o GO, e a thread exige validacao cruzada',
177
+ 'verify.regression': 'comando que passava na baseline falha agora',
178
+ 'verify.failed': 'comando de verificacao falhou (sem baseline para separar divida pre-existente)',
179
+ 'verify.timeout': 'comando de verificacao estourou o prazo antes de terminar: nao ha veredito sobre ele',
180
+ 'verify.sem-veredito': 'a rodada nao produziu veredito valido: comando que nao chegou a rodar, ou produto alterado entre o preparo e o fim',
181
+ 'ci.failed': 'CHECK independente ausente, pendente ou reprovado no commit candidato',
182
+ 'runtime.unavailable': 'runtime adapter indisponivel para o despacho',
183
+ 'runtime.silencio': 'fase despachada sem heartbeat dentro do limite de liveness',
184
+ 'runtime.rate-limited': 'o runtime bateu o limite de uso da assinatura e a fase morreu antes de terminar (bloco B3: entra na fila duravel e e retomada na janela seguinte)',
185
+ 'runtime.quota-exhausted': 'a cota ou os creditos da conta do runtime acabaram (I-33: o perfil sai do rodizio e a fase segue em outro perfil, outro runtime ou na fila)',
186
+ 'runtime.auth-missing': 'a conta do runtime nao esta autenticada (I-33: o perfil nunca recebe despacho ate o login ser refeito pelo proprio CLI)',
187
+ 'runtime.model-unavailable': 'o modelo pedido nao existe ou a conta nao tem acesso a ele (RM-037: o perfil segue no rodizio e a fase vai a outro perfil com o mesmo modelo ou ao fallback do bloco)',
188
+ 'runtime.profile-invalid': 'o perfil pedido no despacho (--perfil) nao existe no store ou e de outro runtime (RM-056: o despacho nunca troca de perfil sozinho)',
189
+ 'runtime.workspace-untrusted': 'o runtime nao confia no diretorio da worktree e recusou o despacho (RM-055: so o dono aceita a confianca no terminal; depois o ork re-despacha o mesmo prompt)',
190
+ 'runtime.consent-pending': 'o runtime espera o dono aceitar termos novos e recusou o despacho (RM-055: so o dono aceita no terminal; depois o ork re-despacha o mesmo prompt)',
191
+ 'cost.violation': 'o despacho seria redirecionado para provider pago (violacao de custo: e o unico motivo que NUNCA recebe retry automatico)',
192
+ 'tree.blocked': 'a arvore de destino nao esta disponivel para o merge (branch em check-out com alteracao nao commitada, ou worktree que nao pode ser montada)',
193
+ 'lease.busy': 'lease ocupado por outra thread',
194
+ 'lease.resume-unavailable': 'retomada indisponivel; libere o lease explicitamente com --forcar',
195
+ 'conducao.em-andamento': 'outra conducao ja executa na worktree da thread (I-36): o pedido foi recusado com quem conduz e as tres acoes (esperar, acompanhar, assumir)',
196
+ 'hitl.formato': 'o pedido HITL saiu fora do formato obrigatorio (pergunta em uma frase, de 3 a 5 alternativas rotuladas com consequencia, exatamente uma com o selo Recomendacao e o porque, corpo em lista; texto livre so com dependencia tecnica tipada)',
197
+ 'human.pending': 'gate humano do modo de conducao ainda nao autorizou',
198
+ },
199
+ };
200
+ exports.PULSE_EN = {
201
+ cabecalho: (contrato, quando) => `Pulse (${contrato}) ${quando}`,
202
+ precisaDeHumano: (n) => `Needs a human now: ${n}`,
203
+ semNota: (n) => `${n} delivery(ies) without a score, accepted by default with a record`,
204
+ diagnostico: (detalhe) => `[diagnostic] ${detalhe}`,
205
+ forjaSemLogin: (cli, host, remoto) => `${cli} is not logged in to ${host}, the forge of ${remoto}`,
206
+ forjaSemLoginNasDuas: (host, remoto) => `gh is not logged in to ${host}, the forge of ${remoto}, and neither is glab`,
207
+ forjaSemPedidos: (tipo, host, remoto) => `the forge of ${remoto} (${host}, ${tipo}) has no open-request reading in ork`,
208
+ forjaNaoResolvida: (remoto, motivo) => `the forge of ${remoto} did not resolve: ${motivo}`,
209
+ consultaIncompleta: (detalhe) => `[incomplete query] ${detalhe}`,
210
+ item: (quem, classe, minutos) => `${quem} [${classe}] ${minutos} min`,
211
+ classe: (classe) => CLASSES_EN[classe] ?? classe,
212
+ desconhecido: 'unknown',
213
+ menosDeUm: 'less than 1',
214
+ opcao: (opcao) => ` option: ${opcao}`,
215
+ recomendacao: (texto) => `Recommendation: ${texto}`,
216
+ responder: (comando) => `Reply: ${comando}`,
217
+ log: (linha) => ` log: ${linha}`,
218
+ conduzidas: (n) => `Conducted now: ${n}`,
219
+ conducao: (thread, linha) => `${thread}: ${linha}`,
220
+ paradoNoCondutor: (n) => `Waiting on the conductor: ${n}`,
221
+ linhaDoCondutor: (thread, desde, proximoPasso) => `${thread} waiting on the conductor since ${desde}: ${proximoPasso}`,
222
+ hitlDeConducao: (abertas, mediana) => `Conduction HITL: ${abertas} open; ${mediana}`,
223
+ medianaSemResposta: '7-day median with no measured answer',
224
+ mediana: (minutos, dentro, respondidos) => `7-day median ${minutos} (${dentro ? 'within' : 'above'} the 5 min target, ${respondidos} answer(s))`,
225
+ perguntaParada: (thread, fase, ha, desde) => `${thread} (${fase}) stopped for ${ha}, since ${desde}`,
226
+ automaticas: (n) => `Pending automatic actions: ${n}`,
227
+ automatica: (thread, motivo, comando) => `${thread}: ${motivo}; ${comando}`,
228
+ semHeartbeat: (fase, desde) => `Phase ${fase} with no heartbeat since ${desde}.`,
229
+ semRuntime: 'runtime not queried because of `--sem-runtime`',
230
+ telasAdiadas: (n) => `radar.orcamento: ${n} session screen(s) left for the next scan`,
231
+ pausaTrabalhando: (sessao) => `session ${sessao} of the block is still working in the runtime: the pause comes when it finishes`,
232
+ pausaBloqueada: (sessao) => `session ${sessao} of the block is BLOCKED in the runtime waiting for human action (prompt, permission or credential): see \`ork sessions hitl\``,
233
+ blocoFechado: (fase, sobre) => `block closed at ${fase}: waiting for the human verdict on ${sobre}`,
234
+ aPausaDoBloco: 'the block pause',
235
+ responderSessao: (curta, sessao) => `\`ork sessions logs ${curta}\` to see what the session asks, and \`claude attach ${sessao}\` to answer`,
236
+ threadPausada: (fase) => `thread marked as paused in phase ${fase}`,
237
+ naFilaDoLease: (nome, atras, colide) => `in the ${nome} queue, behind thread ${atras} (collides with ${colide})`,
238
+ espereOLease: (atras, regiao, dono) => `wait for thread ${atras} to release it (\`ork lease release ${regiao} --thread ${dono}\`), or narrow the requested region`,
239
+ naFilaDeRateLimit: (id, falta, quando, estimada) => `request ${id} in the rate limit queue, released ${falta} (${quando}, ${estimada ? 'estimated window' : 'time given by the runtime'})`,
240
+ sessao: { blocked: 'session stopped waiting for human action (prompt, permission or credential)',
241
+ failed: 'session ended in an error: someone decides whether to resume, fix or drop it',
242
+ working: 'session running', done: 'session finished', stopped: 'session stopped by a human decision (`claude stop`)',
243
+ idle: 'idle interactive session, driven by a human in the terminal',
244
+ busy: 'session busy, running a turn', running: 'session running' },
245
+ sessaoSemEstado: 'the runtime did not report a state for this session: treated as possibly stopped',
246
+ sessaoEstadoForaDoCatalogo: (estado) => `state "${estado}" is not in the ork catalog: treated as possibly stopped`,
247
+ adapterIndisponivel: 'runtime adapter unavailable on this machine (`claude` not on PATH)',
248
+ claudeForaDoPath: '`claude` binary not on PATH',
249
+ claudeAgentsFalhou: (codigo) => `\`claude agents\` failed (exit ${codigo})`,
250
+ recomendacaoDoRadar: {
251
+ abandonada: 'do not answer: the job has already exited. Check what was left in the session worktree and re-dispatch only the rest of the work.',
252
+ falha: (id) => `read \`ork sessions logs ${id}\` and decide whether to resume, fix the cause or drop the session.`,
253
+ desconhecida: (id) => `state not in the catalog: confirm in \`ork sessions logs ${id}\` that the session is really stopped.`,
254
+ credencial: (id) => `hand over the secret now (\`claude attach ${id}\`) so the delivery is not held up; ` +
255
+ 'if this same block has happened before, switch to an automation credential and it will not come back.',
256
+ permissao: (id) => `answer the prompt (\`claude attach ${id}\`); if the command is routine in this project, ` +
257
+ 'add it to the permissions allowlist so it does not stop again for the same reason.',
258
+ pergunta: (id) => `open the session (\`claude attach ${id}\`) and choose among the options it listed.`,
259
+ outra: (id) => `see what the session asks with \`ork sessions logs ${id}\` before answering.`,
260
+ },
261
+ alternativaDoImpedimento: (texto) => ALTERNATIVAS_DO_IMPEDIMENTO_EN[texto] ?? texto,
262
+ vagaStaleCorrecao: (thread, fase) => `re-dispatch with \`ork phase run ${thread} --fase ${fase}\`, or close it with \`ork master ${thread}\``,
263
+ limiteCorrecao: 'wait for a thread to free its slot, or raise `concurrency.max_parallel_threads` in `orkastery.yaml`',
264
+ varredura: {
265
+ oQue: {
266
+ limpar: (sessao) => `release session ${sessao}, which has no process anymore (a ghost) and still holds the thread ` +
267
+ 'conduction and slot; the runtime is not touched',
268
+ registrar: (merge, branch, base) => `record the delivery: merge ${merge} of branch ${branch} is already in ${base}, and the ` +
269
+ 'ledger has no ship_done',
270
+ master: 'close the thread through MASTER by default: the delivery is recorded, nobody scored it and nothing runs on it; the ' +
271
+ 'ledger index becomes the score, and your score, when it comes, wins',
272
+ merge: (pr, branch, base) => `merge PR #${pr} (${branch}) into ${base}, with the required checks green and the PR clean`,
273
+ atualizar: (pr, branch, base) => `bring ${base} into branch ${branch} of PR #${pr}, which fell behind or conflicts only in ` +
274
+ 'the CHANGELOG',
275
+ despachar: (fase) => `dispatch phase ${fase} with the request stored when the thread was created`,
276
+ retomar: (fase) => `resume phase ${fase} through the retry, with the same recorded prompt`,
277
+ },
278
+ bloqueios: {
279
+ 'conduzida': 'someone conducts the thread now',
280
+ 'sessao-viva': 'a live session works in the thread worktree',
281
+ 'sessoes-sem-leitura': 'without a reading of the runtime live sessions now, the worktree cannot be proven idle',
282
+ 'worktree-suja': 'the thread worktree has uncommitted changes',
283
+ 'branch-com-commits': 'the branch has commits after the head of the merged PR',
284
+ 'trabalho-novo': 'the thread got new work after the PR, and the action would change its phase',
285
+ 'git-sem-resposta': 'git did not answer about the branch',
286
+ 'pr-rascunho': 'the PR is a draft',
287
+ 'checks-vermelhos': 'a required check of the PR failed',
288
+ 'sem-checks-obrigatorios': 'the base requires no check at all, and a merge without a green required check stays with you',
289
+ 'pr-bloqueado': 'GitHub blocks the merge even with the required checks green (review or base rule)',
290
+ 'pr-instavel': 'a non-required check is red, and the PR is not clean',
291
+ 'conflito-em-codigo': 'merging the base into the branch conflicts in code, and a code conflict is never resolved on its own',
292
+ 'branch-nao-publicada': 'the local branch has commits the PR does not have yet',
293
+ 'sem-prompt-gravado': 'the thread has no request stored at creation (ork thread new --pedido), and without it there is no prompt',
294
+ 'check-pendente': 'the thread CHECK did not pass (verdict PASSOU) after the last product commit of the PR',
295
+ 'pendencia-do-dono': 'the thread waits for you (paused, planned pause, open question or escalation)',
296
+ 'espera-longa': 'the beat has been waiting for more than 2 h (a required check pending, or GitHub without the merge state)',
297
+ 'thread-do-arco': 'the thread is work of a #Noctum arc: its delivery and MASTER belong to the arc delivery step',
298
+ },
299
+ comBloqueio: (oQue, bloqueio) => `${oQue}. The sweep does not do this on its own now: ${bloqueio}`,
300
+ comBloqueioRecomendacao: (thread, comando) => `look at the thread first (ork thread status ${thread}); once the work in it stops, the command is ${comando}`,
301
+ comRecusa: (oQue, detalhe) => `${oQue}. The sweep tried and did not do it: ${detalhe}`,
302
+ daVarredura: (por, ate) => `the sweep does this at the next beat, under the durable authorization of ${por} until ${ate}`,
303
+ doDono: (acao) => `run the command; for the sweep to do this on its own, authorize the action ${acao} in this machine's ` +
304
+ 'durable authorization (ork.autorizacao-duravel/v1)',
305
+ autorizacaoValida: (por, ate, pode) => `Sweep: durable authorization of ${por} until ${ate} (may: ${pode})`,
306
+ autorizacaoAusente: 'Sweep: no durable authorization; its actions stay in the owner queue, with the command ready',
307
+ autorizacaoInvalida: (motivo, detalhe) => `Sweep: durable authorization without effect (${motivo}: ${detalhe}); its actions stay in the owner queue`,
308
+ feitas: (n) => `The sweep did on its own in the last 7 days: ${n}`,
309
+ feita: (thread, acao, detalhe) => ` ${thread}: ${acao}; ${detalhe}`,
310
+ },
311
+ ociosa: {
312
+ despachar: (fase) => `dispatch phase ${fase} with the thread's stored request`,
313
+ retomar: 'resume the phase through the retry, with the same prompt',
314
+ verAThread: (fase) => `see why the thread stopped in phase ${fase}`,
315
+ abrir: 'open the thread of the item, which has none yet',
316
+ linha: (maquina, livres, limite, reservados) => `Idle machine: ${maquina} with ${livres} of ${limite} free slots and ` +
317
+ `${reservados} roadmap item(s) reserved for it with nobody working`,
318
+ sugerida: (item, onde, passo, comando) => ` ${item} (${onde}): ${passo}; ${comando}`,
319
+ semThread: 'no thread',
320
+ },
321
+ motivos: {
322
+ 'artifact.missing': 'an artifact the phase requires does not exist on disk',
323
+ 'claims.failed': 'a verifiable claim failed when rerun on the real HEAD',
324
+ 'claims.unverifiable': 'a claim with no verification command declared',
325
+ 'policy.violation': 'a manifest policy with block severity was violated',
326
+ 'runtime.autoconferencia': 'CHECK was dispatched on the same runtime that did GO, and the thread requires cross-validation',
327
+ 'verify.regression': 'a command that passed in the baseline fails now',
328
+ 'verify.failed': 'a verification command failed (no baseline to tell existing debt apart)',
329
+ 'verify.timeout': 'a verification command ran past its deadline before finishing: there is no verdict on it',
330
+ 'verify.sem-veredito': 'the run produced no valid verdict: a command that never ran, or a product changed between prepare and the end',
331
+ 'ci.failed': 'independent CHECK missing, pending or failed on the candidate commit',
332
+ 'runtime.unavailable': 'runtime adapter unavailable for the dispatch',
333
+ 'runtime.silencio': 'phase dispatched with no heartbeat within the liveness limit',
334
+ 'runtime.rate-limited': 'the runtime hit the subscription usage limit and the phase died before finishing (block B3: it enters the durable queue and resumes in the next window)',
335
+ 'runtime.quota-exhausted': 'the quota or credits of the runtime account ran out (I-33: the profile leaves the rotation and the phase goes on in another profile, another runtime or the queue)',
336
+ 'runtime.auth-missing': 'the runtime account is not authenticated (I-33: the profile gets no dispatch until the login is redone through the CLI itself)',
337
+ 'runtime.model-unavailable': 'the requested model does not exist or the account has no access to it (RM-037: the profile stays in the rotation and the phase goes to another profile with the same model or to the block fallback)',
338
+ 'runtime.profile-invalid': 'the profile requested in the dispatch (`--perfil`) does not exist in the store or belongs to another runtime (RM-056: the dispatch never switches profiles on its own)',
339
+ 'runtime.workspace-untrusted': 'the runtime does not trust the worktree directory and refused the dispatch (RM-055: only the owner accepts trust in the terminal; then ork dispatches the same prompt again)',
340
+ 'runtime.consent-pending': 'the runtime waits for the owner to accept new terms and refused the dispatch (RM-055: only the owner accepts in the terminal; then ork dispatches the same prompt again)',
341
+ 'cost.violation': 'the dispatch would be redirected to a paid provider (a cost violation: the only reason that NEVER gets an automatic retry)',
342
+ 'tree.blocked': 'the target tree is not available for the merge (branch checked out with uncommitted changes, or a worktree that cannot be set up)',
343
+ 'lease.busy': 'lease held by another thread',
344
+ 'lease.resume-unavailable': 'resume unavailable; release the lease explicitly with `--forcar`',
345
+ 'conducao.em-andamento': 'another conduction already runs on the thread worktree (I-36): the request was refused with who conducts and the three actions (wait, follow, take over)',
346
+ 'hitl.formato': 'the HITL request came out of the required format (question in one sentence, 3 to 5 labeled alternatives with a consequence each, exactly one with the Recommendation seal and the reason, body as a list; free text only with a typed technical dependency)',
347
+ 'human.pending': 'the human gate of the conduction mode has not authorized yet',
348
+ },
349
+ };
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ /**
3
+ * RM-061, fatia F3b: a familia `reservas` do catalogo de mensagens (`ork roadmap reservas|pegar|soltar|feat`), o painel
4
+ * das reservas no terminal e as recusas de `roadmap-reservas.ts`. O pt-BR e a fonte; o ingles e tipado por ele. Sem
5
+ * import do nucleo.
6
+ *
7
+ * O item, quem reservou, a maquina, a thread e a nota sao dado e saem iguais. O detalhe da soltura de uma reserva orfa
8
+ * vai ao ledger e ao `--json` em pt-BR e so a impressao o remonta. O painel em Markdown da branch de reservas e a
9
+ * mensagem de commit nao mudam com a lingua; o bloco `Projeto consultado:` e `Não lido:` do RM-052 sai igual nas duas.
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.RESERVAS_EN = exports.RESERVAS_PT_BR = void 0;
13
+ exports.RESERVAS_PT_BR = {
14
+ // O painel no terminal
15
+ semRemoto: (projeto, remoto, branch) => `Reservas do roadmap: ${projeto ? `o projeto ${projeto}` : 'o projeto'} não tem o remoto ${remoto}; nada foi lido de ${branch}.`,
16
+ semCopia: (remoto, branch) => `Reservas do roadmap: o remoto ${remoto} não respondeu e esta máquina não tem cópia de ${branch}; nada foi lido.`,
17
+ copiaLocal: 'AVISO: sem acesso ao remoto; esta e a ultima copia lida nesta maquina.',
18
+ nenhuma: 'Nenhum item do roadmap reservado.',
19
+ numerosDeFeat: (n, ultimos) => `Números de FEAT reservados (${n}), os últimos: ${ultimos}. O próximo sai de: ork roadmap feat`,
20
+ cabecalho: 'ITEM COM QUEM MAQUINA THREAD DESDE',
21
+ orfa: (sucessora) => ` ÓRFÃ: thread fechada${sucessora ? `, passa para ${sucessora}` : ''}`,
22
+ orfas: (n) => `${n} reserva(s) órfã(s) desta máquina. Para soltar: ork roadmap reservas --soltar-orfas`,
23
+ // ork roadmap reservas --soltar-orfas
24
+ nenhumaOrfa: 'Nenhuma reserva órfã desta máquina.',
25
+ soltura: (item, detalhe, thread) => `${item}: ${detalhe} (thread fechada ${thread})`,
26
+ mudouDeDono: (item) => `${item} mudou de dono entre a leitura e a gravacao; ficou como estava`,
27
+ passouPara: (item, sucessora) => `${item} passou para a thread ${sucessora}, aberta no mesmo item`,
28
+ devolvido: (item) => `${item} devolvido`,
29
+ semLeituraPendente: (branch, remoto) => `sem leitura de ${branch} em ${remoto}; a reserva fica para depois`,
30
+ soQuemPegou: (descricao) => `${descricao}; so quem pegou solta, ou --forcar --motivo`,
31
+ // ork roadmap feat
32
+ feat: (feat, thread) => `${feat}: reservado para esta maquina${thread ? `, thread ${thread}` : ''}.`,
33
+ crieAPagina: (feat) => ` crie docs/produto/${feat}-<assunto>.md; o numero nao volta, mesmo que a feature nao saia`,
34
+ branch: (commit) => ` branch ork/roadmap-reservas em ${commit}`,
35
+ // ork roadmap pegar e soltar
36
+ acao: (acao) => ({ pegou: 'reservado para esta maquina', renovou: 'reserva renovada', tomou: 'reserva TOMADA de outra maquina',
37
+ soltou: 'devolvido', nada: 'ja estava livre' }[acao] ?? acao),
38
+ itemAcao: (item, acao) => `${item}: ${acao}.`,
39
+ com: (por, maquina, thread) => ` com ${por} em ${maquina}${thread ? `, thread ${thread}` : ''}`,
40
+ uso: 'uso: ork roadmap status [--json] | reservas [--soltar-orfas] | pegar <RM-NNN> [--thread T] [--nota N] | ' +
41
+ 'soltar <RM-NNN> [--forcar --motivo M] | feat [--thread T] [--nota N]',
42
+ // As recusas (roadmap-reservas.ts)
43
+ descricao: (item, por, maquina, desde, thread) => `${item} esta com ${por} em ${maquina} desde ${desde}${thread ? ` (thread ${thread})` : ''}`,
44
+ semRemotoParaReservar: (branch, remoto) => `roadmap.sem-remoto: nao consegui ler ${branch} em ${remoto}; reservar exige rede`,
45
+ semRemotoParaSoltar: (branch, remoto) => `roadmap.sem-remoto: nao consegui ler ${branch} em ${remoto}; soltar exige rede`,
46
+ semRemotoParaOrfas: (branch) => `roadmap.sem-remoto: nao consegui ler ${branch}; soltar exige rede`,
47
+ featsAcabaram: 'roadmap.feat: os numeros de FEAT de tres digitos acabaram',
48
+ concorrencia: (n) => `roadmap.concorrencia: ${n} pushes recusados seguidos; tente de novo em instantes`,
49
+ forcarSemMotivo: 'roadmap.forcar: --forcar exige --motivo (tomar a reserva de outra maquina e decisao registrada)',
50
+ reservadoAoPegar: (descricao) => `roadmap.reservado: ${descricao}. Escolha outro item ou combine com quem esta nele`,
51
+ reservadoAoSoltar: (descricao) => `roadmap.reservado: ${descricao}; so quem pegou solta, ou --forcar --motivo`,
52
+ };
53
+ exports.RESERVAS_EN = {
54
+ semRemoto: (projeto, remoto, branch) => `Roadmap reservations: ${projeto ? `project ${projeto}` : 'the project'} has no remote ${remoto}; nothing was read from ${branch}.`,
55
+ semCopia: (remoto, branch) => `Roadmap reservations: remote ${remoto} did not answer and this machine has no copy of ${branch}; nothing was read.`,
56
+ copiaLocal: 'WARNING: no access to the remote; this is the last copy read on this machine.',
57
+ nenhuma: 'No roadmap item reserved.',
58
+ numerosDeFeat: (n, ultimos) => `FEAT numbers reserved (${n}), the latest: ${ultimos}. The next one comes from: ork roadmap feat`,
59
+ cabecalho: 'ITEM WITH MACHINE THREAD SINCE',
60
+ orfa: (sucessora) => ` ORPHAN: closed thread${sucessora ? `, goes to ${sucessora}` : ''}`,
61
+ orfas: (n) => `${n} orphan reservation(s) on this machine. To release them: ork roadmap reservas --soltar-orfas`,
62
+ nenhumaOrfa: 'No orphan reservation on this machine.',
63
+ soltura: (item, detalhe, thread) => `${item}: ${detalhe} (closed thread ${thread})`,
64
+ mudouDeDono: (item) => `${item} changed owner between the read and the write; it was left as it was`,
65
+ passouPara: (item, sucessora) => `${item} went to thread ${sucessora}, open on the same item`,
66
+ devolvido: (item) => `${item} released`,
67
+ semLeituraPendente: (branch, remoto) => `no read of ${branch} in ${remoto}; the reservation is left for later`,
68
+ soQuemPegou: (descricao) => `${descricao}; only whoever took it releases it, or \`--forcar --motivo\``,
69
+ feat: (feat, thread) => `${feat}: reserved for this machine${thread ? `, thread ${thread}` : ''}.`,
70
+ crieAPagina: (feat) => ` create \`docs/produto/${feat}-<subject>.md\`; the number does not come back, even if the feature never ships`,
71
+ branch: (commit) => ` branch ork/roadmap-reservas at ${commit}`,
72
+ acao: (acao) => ({ pegou: 'reserved for this machine', renovou: 'reservation renewed', tomou: 'reservation TAKEN from another machine',
73
+ soltou: 'released', nada: 'was already free' }[acao] ?? acao),
74
+ itemAcao: (item, acao) => `${item}: ${acao}.`,
75
+ com: (por, maquina, thread) => ` with ${por} on ${maquina}${thread ? `, thread ${thread}` : ''}`,
76
+ uso: 'usage: ork roadmap status [--json] | reservas [--soltar-orfas] | pegar <RM-NNN> [--thread T] [--nota N] | ' +
77
+ 'soltar <RM-NNN> [--forcar --motivo M] | feat [--thread T] [--nota N]',
78
+ descricao: (item, por, maquina, desde, thread) => `${item} has been with ${por} on ${maquina} since ${desde}${thread ? ` (thread ${thread})` : ''}`,
79
+ semRemotoParaReservar: (branch, remoto) => `roadmap.sem-remoto: could not read ${branch} in ${remoto}; reserving needs the network`,
80
+ semRemotoParaSoltar: (branch, remoto) => `roadmap.sem-remoto: could not read ${branch} in ${remoto}; releasing needs the network`,
81
+ semRemotoParaOrfas: (branch) => `roadmap.sem-remoto: could not read ${branch}; releasing needs the network`,
82
+ featsAcabaram: 'roadmap.feat: the three-digit FEAT numbers ran out',
83
+ concorrencia: (n) => `roadmap.concorrencia: ${n} pushes refused in a row; try again in a moment`,
84
+ forcarSemMotivo: 'roadmap.forcar: `--forcar` needs `--motivo` (taking another machine\'s reservation is a recorded decision)',
85
+ reservadoAoPegar: (descricao) => `roadmap.reservado: ${descricao}. Pick another item or talk to whoever is on it`,
86
+ reservadoAoSoltar: (descricao) => `roadmap.reservado: ${descricao}; only whoever took it releases it, or \`--forcar --motivo\``,
87
+ };