@orkastery/cli 0.5.6 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (396) 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 +37 -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/ork-mensageiro/.claude-plugin/plugin.json +14 -0
  16. package/adapters/claude-code/mods/ork-mensageiro/hooks/caixa.ts +215 -0
  17. package/adapters/claude-code/mods/ork-mensageiro/hooks/hooks.json +3 -0
  18. package/adapters/claude-code/mods/ork-mensageiro/hooks/painel.tsx +165 -0
  19. package/adapters/claude-code/mods/ork-mensageiro/hooks/recepcao.ts +256 -0
  20. package/adapters/claude-code/mods/ork-mensageiro/hooks/register.tsx +481 -0
  21. package/adapters/claude-code/mods/ork-mensageiro/orkastery-mod.json +5 -0
  22. package/adapters/claude-code/mods/ork-mensageiro/types/index.d.ts +85 -0
  23. package/adapters/claude-code/mods/ork-pista/hooks/ci.ts +9 -5
  24. package/adapters/claude-code/mods/ork-ritual/.claude-plugin/plugin.json +14 -0
  25. package/adapters/claude-code/mods/ork-ritual/hooks/hooks.json +3 -0
  26. package/adapters/claude-code/mods/ork-ritual/hooks/nota.ts +88 -0
  27. package/adapters/claude-code/mods/ork-ritual/hooks/register.tsx +494 -0
  28. package/adapters/claude-code/mods/ork-ritual/hooks/replay.tsx +271 -0
  29. package/adapters/claude-code/mods/ork-ritual/hooks/ritual.ts +218 -0
  30. package/adapters/claude-code/mods/ork-ritual/orkastery-mod.json +5 -0
  31. package/adapters/claude-code/mods/ork-ritual/types/index.d.ts +106 -0
  32. package/adapters/claude-code/mods/ork-sentinela/hooks/vigia.ts +1 -1
  33. package/adapters/codex/skills/ork/SKILL.md +2 -0
  34. package/adapters/hermes/README.md +64 -1
  35. package/adapters/hermes/bin/ork-conhecimento-colecoes.sh +14 -0
  36. package/adapters/hermes/bin/ork-conhecimento-listar.sh +15 -0
  37. package/adapters/hermes/bin/ork-conhecimento-mostrar.sh +16 -0
  38. package/adapters/hermes/bin/ork-conhecimento-verificar.sh +15 -0
  39. package/adapters/hermes/bin/ork-vigia-batida.py +127 -0
  40. package/adapters/hermes/hermes.plugin.json +4 -0
  41. package/adapters/hermes/hitl-ingress/__init__.py +101 -8
  42. package/adapters/hermes/skills/orkastery-devmaster/SKILL.md +2 -2
  43. package/adapters/openclaw/README.md +81 -9
  44. package/adapters/openclaw/bin/ork-vigia-batida.js +86 -0
  45. package/adapters/openclaw/dist/hitl-ingress.js +106 -9
  46. package/adapters/openclaw/dist/index.js +86 -0
  47. package/adapters/openclaw/openclaw.plugin.json +34 -4
  48. package/adapters/openclaw/package.json +2 -2
  49. package/adapters/openclaw/src/hitl-ingress.ts +103 -9
  50. package/adapters/openclaw/src/index.ts +94 -0
  51. package/assets/adapters-en/claude-code/README.md +403 -0
  52. package/assets/adapters-en/claude-code/agents/ork-check.md +33 -0
  53. package/assets/adapters-en/claude-code/agents/ork-go.md +33 -0
  54. package/assets/adapters-en/claude-code/agents/ork-goal.md +34 -0
  55. package/assets/adapters-en/claude-code/agents/ork-master.md +35 -0
  56. package/assets/adapters-en/claude-code/agents/ork-plan.md +33 -0
  57. package/assets/adapters-en/claude-code/agents/ork-ship.md +33 -0
  58. package/assets/adapters-en/claude-code/commands/check.md +46 -0
  59. package/assets/adapters-en/claude-code/commands/go.md +46 -0
  60. package/assets/adapters-en/claude-code/commands/goal.md +55 -0
  61. package/assets/adapters-en/claude-code/commands/master.md +54 -0
  62. package/assets/adapters-en/claude-code/commands/onboarding.md +22 -0
  63. package/assets/adapters-en/claude-code/commands/ork.md +126 -0
  64. package/assets/adapters-en/claude-code/commands/plan.md +47 -0
  65. package/assets/adapters-en/claude-code/commands/ship.md +45 -0
  66. package/assets/adapters-en/codex/skills/ork/SKILL.md +85 -0
  67. package/assets/adapters-en/hermes/README.md +273 -0
  68. package/assets/adapters-en/hermes/skills/orkastery-devmaster/SKILL.md +169 -0
  69. package/assets/references-en/README.md +25 -0
  70. package/assets/references-en/code-review-axes.md +82 -0
  71. package/assets/references-en/definition-of-done.md +74 -0
  72. package/assets/references-en/performance-checklist.md +53 -0
  73. package/assets/references-en/security-checklist.md +101 -0
  74. package/assets/references-en/testing-patterns.md +51 -0
  75. package/assets/security-scan/defaults/.golangci.yml +2 -0
  76. package/assets/security-scan/defaults/eslint.config.mjs +11 -0
  77. package/assets/security-scan/defaults/gitleaks.toml +3 -0
  78. package/assets/security-scan/defaults/ruff.toml +1 -0
  79. package/assets/security-scan/tools-agil.json +87 -0
  80. package/assets/security-scan/tools.json +625 -0
  81. package/assets/skills-en/core/onboarding/SKILL.md +58 -0
  82. package/assets/skills-en/core/orkastery-bootstrap/SKILL.md +119 -0
  83. package/assets/skills-en/core/thread-state/SKILL.md +88 -0
  84. package/assets/skills-en/governance/decision-triage/SKILL.md +65 -0
  85. package/assets/skills-en/governance/narrative-guardian/SKILL.md +66 -0
  86. package/assets/skills-en/governance/roadmap-keeper/SKILL.md +60 -0
  87. package/assets/skills-en/governance/scope-check-capability-map/SKILL.md +71 -0
  88. package/assets/skills-en/observability/thread-tracing/SKILL.md +63 -0
  89. package/assets/skills-en/phases/check-quality/SKILL.md +103 -0
  90. package/assets/skills-en/phases/go-implementation/SKILL.md +78 -0
  91. package/assets/skills-en/phases/goal-definition/SKILL.md +69 -0
  92. package/assets/skills-en/phases/master-metrics/SKILL.md +72 -0
  93. package/assets/skills-en/phases/plan-specification/SKILL.md +67 -0
  94. package/assets/skills-en/phases/security-remediation/SKILL.md +70 -0
  95. package/assets/skills-en/phases/ship-release/SKILL.md +71 -0
  96. package/assets/skills-en/reviewers/code-reviewer/SKILL.md +61 -0
  97. package/assets/skills-en/reviewers/security-auditor/SKILL.md +93 -0
  98. package/assets/skills-en/reviewers/test-engineer/SKILL.md +66 -0
  99. package/assets/skills-en/reviewers/web-performance-auditor/SKILL.md +63 -0
  100. package/dist/adapters/claude-bg.js +123 -9
  101. package/dist/adapters/codex-controller-worker.js +12 -5
  102. package/dist/adapters/codex-events.js +16 -4
  103. package/dist/adapters/codex.js +3 -1
  104. package/dist/adapters/grok-events.js +227 -0
  105. package/dist/adapters/grok-mcp-servidor.js +612 -0
  106. package/dist/adapters/grok-mcp.js +178 -0
  107. package/dist/adapters/grok.js +686 -0
  108. package/dist/agendador-cpu.js +92 -0
  109. package/dist/atualizar-branch.js +245 -0
  110. package/dist/auditoria.js +13 -11
  111. package/dist/auditrun.js +51 -46
  112. package/dist/autorizacao-duravel.js +327 -0
  113. package/dist/board.js +94 -40
  114. package/dist/branch-de-estado.js +23 -10
  115. package/dist/busca-semantica.js +7 -5
  116. package/dist/catalogo.js +2 -1
  117. package/dist/changelog-reconciliacao.js +290 -0
  118. package/dist/check-agil.js +528 -0
  119. package/dist/check-modo.js +41 -0
  120. package/dist/check-paralelo.js +238 -0
  121. package/dist/ci.js +248 -45
  122. package/dist/ciclos.js +8 -6
  123. package/dist/claim-lint.js +12 -8
  124. package/dist/claims-conferir.js +47 -39
  125. package/dist/claims.js +10 -9
  126. package/dist/company-brain-client.js +10 -3
  127. package/dist/company-brain-migration.js +11 -5
  128. package/dist/conducao-batida.js +759 -0
  129. package/dist/conducao-sentinela.js +25 -8
  130. package/dist/conducao.js +89 -29
  131. package/dist/conhecimento-consulta.js +270 -0
  132. package/dist/conhecimento.js +111 -87
  133. package/dist/conta-esgotada.js +127 -0
  134. package/dist/dado-privado.js +816 -0
  135. package/dist/decisao-autonoma.js +5 -4
  136. package/dist/demo.js +14 -12
  137. package/dist/dependencias-da-worktree.js +25 -0
  138. package/dist/divida.js +38 -36
  139. package/dist/docs.js +89 -89
  140. package/dist/doctor-forja.js +343 -0
  141. package/dist/doctor-pulse-cron.js +113 -1
  142. package/dist/doctor.js +164 -6
  143. package/dist/dsn-da-memoria.js +417 -0
  144. package/dist/entrega-por-mod.js +503 -0
  145. package/dist/entrega-pr.js +154 -54
  146. package/dist/esgotamentos.js +13 -11
  147. package/dist/estado-thread.js +21 -18
  148. package/dist/evalrunner.js +35 -32
  149. package/dist/fabrica-batida.js +34 -21
  150. package/dist/fabrica-estado.js +33 -21
  151. package/dist/fix.js +21 -19
  152. package/dist/forja/adaptador.js +6 -0
  153. package/dist/forja/ambiente-de-ci.js +27 -0
  154. package/dist/forja/api.js +256 -0
  155. package/dist/forja/cache.js +89 -0
  156. package/dist/forja/cli.js +60 -0
  157. package/dist/forja/contrato.js +9 -0
  158. package/dist/forja/endereco.js +43 -0
  159. package/dist/forja/estado.js +22 -0
  160. package/dist/forja/executor.js +73 -0
  161. package/dist/forja/github/ci.js +95 -0
  162. package/dist/forja/github/dono-da-rede.js +18 -0
  163. package/dist/forja/github/metadados.js +15 -0
  164. package/dist/forja/github/pedidos.js +200 -0
  165. package/dist/forja/gitlab/ci.js +141 -0
  166. package/dist/forja/gitlab/consultas.js +59 -0
  167. package/dist/forja/gitlab/dono-da-rede.js +43 -0
  168. package/dist/forja/gitlab/metadados.js +15 -0
  169. package/dist/forja/gitlab/pedidos-abertos.js +158 -0
  170. package/dist/forja/gitlab/pedidos.js +141 -0
  171. package/dist/forja/produtor.js +32 -0
  172. package/dist/forja/registro.js +31 -0
  173. package/dist/forja/resolver.js +121 -0
  174. package/dist/forja/texto.js +13 -0
  175. package/dist/forja/versao.js +71 -0
  176. package/dist/forja.js +123 -80
  177. package/dist/handoff.js +23 -13
  178. package/dist/hitl-contract.js +46 -43
  179. package/dist/hitl-curto.js +37 -25
  180. package/dist/hitl-gates.js +13 -11
  181. package/dist/hitl-local-receipt.js +51 -0
  182. package/dist/hitl-local.js +11 -2
  183. package/dist/hitl-lock.js +5 -11
  184. package/dist/hitl-public-receipt.js +11 -0
  185. package/dist/hitl-resumo.js +44 -1
  186. package/dist/hitl-sessions.js +62 -9
  187. package/dist/hitl-texto-livre.js +7 -4
  188. package/dist/hitl.js +34 -31
  189. package/dist/horario.js +20 -1
  190. package/dist/hosts.js +104 -134
  191. package/dist/index.js +864 -554
  192. package/dist/indice-vetorial.js +14 -12
  193. package/dist/init.js +11 -2
  194. package/dist/integracoes-locais.js +4 -0
  195. package/dist/intelligence-graph-cli.js +123 -69
  196. package/dist/intelligence-graph-query.js +37 -22
  197. package/dist/leases.js +19 -18
  198. package/dist/ledger-stats.js +17 -16
  199. package/dist/ledger.js +31 -1
  200. package/dist/licoes.js +12 -11
  201. package/dist/locale-accounts.js +228 -0
  202. package/dist/locale-adapter.js +291 -0
  203. package/dist/locale-ajuda.js +86 -10
  204. package/dist/locale-audit.js +199 -0
  205. package/dist/locale-claims.js +213 -0
  206. package/dist/locale-conducao.js +138 -0
  207. package/dist/locale-conhecimento.js +181 -0
  208. package/dist/locale-decisao.js +205 -0
  209. package/dist/locale-docs.js +230 -0
  210. package/dist/locale-estado.js +101 -0
  211. package/dist/locale-forja.js +288 -0
  212. package/dist/locale-gerados.js +5 -0
  213. package/dist/locale-grafo.js +129 -0
  214. package/dist/locale-master.js +83 -0
  215. package/dist/locale-network.js +524 -0
  216. package/dist/locale-operacao-restante.js +931 -0
  217. package/dist/locale-projetos.js +100 -0
  218. package/dist/locale-prompts.js +194 -0
  219. package/dist/locale-pulse.js +140 -2
  220. package/dist/locale-reservas.js +87 -0
  221. package/dist/locale-retry.js +183 -6
  222. package/dist/locale-security-scan.js +69 -0
  223. package/dist/locale-setup.js +192 -0
  224. package/dist/locale-ship.js +177 -66
  225. package/dist/locale-thread.js +149 -5
  226. package/dist/locale-verify.js +80 -4
  227. package/dist/locale-worktree.js +246 -0
  228. package/dist/locale.js +553 -9
  229. package/dist/maestro-runtime.js +22 -3
  230. package/dist/manifest.js +293 -12
  231. package/dist/maquina-ociosa.js +211 -0
  232. package/dist/maquina.js +10 -5
  233. package/dist/master-nota-local.js +200 -0
  234. package/dist/master-nota.js +10 -2
  235. package/dist/master.js +118 -41
  236. package/dist/mcp-conhecimento.js +52 -0
  237. package/dist/mcp-experiencia.js +26 -5
  238. package/dist/mcp-install.js +90 -15
  239. package/dist/mcp-noctum.js +101 -0
  240. package/dist/mcp-server.js +116 -22
  241. package/dist/mcp-ship-transporte.js +977 -0
  242. package/dist/mcp-ship.js +68 -24
  243. package/dist/mcp-transportes.js +17 -0
  244. package/dist/memoria.js +63 -58
  245. package/dist/merge-da-entrega.js +85 -0
  246. package/dist/modos-migracao.js +8 -6
  247. package/dist/modos.js +17 -18
  248. package/dist/network-roadmap.js +94 -54
  249. package/dist/noctum-aceite.js +929 -0
  250. package/dist/noctum-arco.js +540 -33
  251. package/dist/noctum-capacidade.js +3 -3
  252. package/dist/noctum-changelog.js +399 -0
  253. package/dist/noctum-cli.js +539 -0
  254. package/dist/noctum-coordenacao.js +1225 -0
  255. package/dist/noctum-entrega.js +1217 -0
  256. package/dist/noctum-envelope.js +253 -17
  257. package/dist/noctum-execucao.js +100 -24
  258. package/dist/noctum-fechamento.js +416 -0
  259. package/dist/noctum-fila.js +49 -10
  260. package/dist/noctum-guarda.js +333 -0
  261. package/dist/noctum-integracao.js +507 -0
  262. package/dist/noctum-maquinas.js +387 -0
  263. package/dist/noctum-medicao.js +450 -0
  264. package/dist/noctum-modo.js +390 -0
  265. package/dist/noctum-pergunta-canal.js +96 -0
  266. package/dist/noctum-pergunta.js +115 -0
  267. package/dist/noctum-provas.js +838 -0
  268. package/dist/noctum-reconciliacao.js +594 -0
  269. package/dist/noctum-rede.js +102 -0
  270. package/dist/noctum-registro.js +215 -0
  271. package/dist/noctum-relatorio.js +861 -0
  272. package/dist/noctum-resposta.js +207 -0
  273. package/dist/noctum-retomada-rede.js +71 -0
  274. package/dist/noctum-sessoes-em-voo.js +93 -0
  275. package/dist/noctum-supervisao.js +649 -0
  276. package/dist/noctum-terminal.js +459 -0
  277. package/dist/noctum-transporte.js +655 -0
  278. package/dist/noctum-vigia.js +679 -0
  279. package/dist/ocupacao.js +3 -1
  280. package/dist/onboarding.js +16 -5
  281. package/dist/orkmind.js +39 -23
  282. package/dist/orquestracao.js +31 -35
  283. package/dist/parado-no-condutor.js +160 -139
  284. package/dist/phase.js +96 -42
  285. package/dist/policies.js +33 -0
  286. package/dist/postura-local.js +11 -6
  287. package/dist/preflight.js +2 -1
  288. package/dist/procedencia.js +9 -14
  289. package/dist/projeto-alvo.js +59 -20
  290. package/dist/prompts.js +136 -42
  291. package/dist/prova-minima.js +5 -6
  292. package/dist/pulse-cadencia.js +5 -4
  293. package/dist/pulse-consentimento.js +53 -1
  294. package/dist/pulse-delivery.js +143 -27
  295. package/dist/pulse-resposta.js +368 -4
  296. package/dist/pulse.js +136 -3
  297. package/dist/ratelimit.js +13 -4
  298. package/dist/recall.js +14 -13
  299. package/dist/rede-adesao.js +13 -8
  300. package/dist/rede-forja.js +108 -24
  301. package/dist/rede-status.js +63 -45
  302. package/dist/rede.js +86 -46
  303. package/dist/retomada-checkpoint.js +101 -0
  304. package/dist/retry.js +326 -78
  305. package/dist/roadmap-reservas.js +32 -32
  306. package/dist/runtime-ambiente.js +5 -0
  307. package/dist/runtime-context.js +279 -85
  308. package/dist/runtime-escada.js +429 -0
  309. package/dist/runtime-profiles.js +130 -63
  310. package/dist/runtimes.js +42 -5
  311. package/dist/saida-segura.js +3 -2
  312. package/dist/security-scan/agil.js +366 -0
  313. package/dist/security-scan/cli.js +76 -0
  314. package/dist/security-scan/compare.js +149 -0
  315. package/dist/security-scan/config.js +93 -0
  316. package/dist/security-scan/detect.js +97 -0
  317. package/dist/security-scan/executor.js +196 -0
  318. package/dist/security-scan/guard.js +180 -0
  319. package/dist/security-scan/imagem-de-lint.js +96 -0
  320. package/dist/security-scan/normalize/actionlint.js +12 -0
  321. package/dist/security-scan/normalize/eslint.js +12 -0
  322. package/dist/security-scan/normalize/gitleaks.js +13 -0
  323. package/dist/security-scan/normalize/golangci-lint.js +13 -0
  324. package/dist/security-scan/normalize/govulncheck.js +36 -0
  325. package/dist/security-scan/normalize/index.js +25 -0
  326. package/dist/security-scan/normalize/npm-audit.js +30 -0
  327. package/dist/security-scan/normalize/osv-scanner.js +32 -0
  328. package/dist/security-scan/normalize/oxlint.js +51 -0
  329. package/dist/security-scan/normalize/pip-audit.js +16 -0
  330. package/dist/security-scan/normalize/ruff.js +12 -0
  331. package/dist/security-scan/normalize/semgrep.js +20 -0
  332. package/dist/security-scan/normalize/trivy.js +33 -0
  333. package/dist/security-scan/normalize/util.js +204 -0
  334. package/dist/security-scan/normalize/zizmor.js +19 -0
  335. package/dist/security-scan/report.js +156 -0
  336. package/dist/security-scan/run.js +448 -0
  337. package/dist/security-scan/tools.js +62 -0
  338. package/dist/security-scan/trabalhador.js +74 -0
  339. package/dist/security-scan/types.js +15 -0
  340. package/dist/session-events.js +19 -2
  341. package/dist/session-watcher-claude.js +74 -19
  342. package/dist/session-watcher-grok.js +425 -0
  343. package/dist/session-watcher.js +174 -13
  344. package/dist/sessoes-contas.js +42 -5
  345. package/dist/sessoes-inventario.js +1 -1
  346. package/dist/sessoes.js +25 -23
  347. package/dist/setup.js +67 -66
  348. package/dist/ship-publicar.js +263 -92
  349. package/dist/ship.js +160 -17
  350. package/dist/superficie.js +14 -11
  351. package/dist/thread-close.js +9 -9
  352. package/dist/thread.js +121 -18
  353. package/dist/tokens.js +15 -11
  354. package/dist/trabalho-thread.js +297 -0
  355. package/dist/transporte-do-canal.js +189 -0
  356. package/dist/types.js +12 -1
  357. package/dist/util.js +5 -2
  358. package/dist/varredura-acoes.js +500 -0
  359. package/dist/verify.js +491 -32
  360. package/dist/worktree-local.js +12 -10
  361. package/dist/worktree.js +81 -85
  362. package/eval/casos/check-quality.json +77 -0
  363. package/eval/casos/security-auditor.json +148 -0
  364. package/eval/casos/security-remediation.json +161 -0
  365. package/eval/fixtures/security-scan/README.md +8 -0
  366. package/eval/fixtures/security-scan/go/.github/workflows/ci.yml +12 -0
  367. package/eval/fixtures/security-scan/go/Dockerfile +4 -0
  368. package/eval/fixtures/security-scan/go/README.md +4 -0
  369. package/eval/fixtures/security-scan/go/config.go +4 -0
  370. package/eval/fixtures/security-scan/go/go.mod +5 -0
  371. package/eval/fixtures/security-scan/go/go.sum +2 -0
  372. package/eval/fixtures/security-scan/go/main.go +31 -0
  373. package/eval/fixtures/security-scan/js/.github/workflows/ci.yml +12 -0
  374. package/eval/fixtures/security-scan/js/Dockerfile +3 -0
  375. package/eval/fixtures/security-scan/js/README.md +4 -0
  376. package/eval/fixtures/security-scan/js/package-lock.json +844 -0
  377. package/eval/fixtures/security-scan/js/package.json +10 -0
  378. package/eval/fixtures/security-scan/js/src/config.js +4 -0
  379. package/eval/fixtures/security-scan/js/src/server.js +17 -0
  380. package/eval/fixtures/security-scan/js/src/util.ts +4 -0
  381. package/eval/fixtures/security-scan/js/tsconfig.json +4 -0
  382. package/eval/fixtures/security-scan/python/.github/workflows/ci.yml +12 -0
  383. package/eval/fixtures/security-scan/python/Dockerfile +3 -0
  384. package/eval/fixtures/security-scan/python/README.md +4 -0
  385. package/eval/fixtures/security-scan/python/app/__init__.py +0 -0
  386. package/eval/fixtures/security-scan/python/app/config.py +2 -0
  387. package/eval/fixtures/security-scan/python/app/main.py +19 -0
  388. package/eval/fixtures/security-scan/python/requirements.txt +1 -0
  389. package/package.json +10 -5
  390. package/references/security-checklist.md +3 -3
  391. package/skills/README.md +1 -0
  392. package/skills/core/orkastery-bootstrap/SKILL.md +2 -2
  393. package/skills/phases/check-quality/SKILL.md +16 -0
  394. package/skills/phases/go-implementation/SKILL.md +6 -0
  395. package/skills/phases/security-remediation/SKILL.md +70 -0
  396. package/skills/reviewers/security-auditor/SKILL.md +25 -0
@@ -195,11 +195,11 @@ function reservarFeat(raiz, opcoes = {}) {
195
195
  for (let tentativa = 1; tentativa <= TENTATIVAS; tentativa++) {
196
196
  const { ponta, atualizado } = buscar(raiz, remoto);
197
197
  if (!atualizado)
198
- throw new Error(`roadmap.sem-remoto: nao consegui ler ${exports.BRANCH_DE_RESERVAS} em ${remoto}; reservar exige rede`);
198
+ throw new locale_1.ErroDoCatalogo((m) => m.reservas.semRemotoParaReservar(exports.BRANCH_DE_RESERVAS, remoto));
199
199
  const feats = featsDaPonta(raiz, ponta);
200
200
  const proximo = Math.max(maiorFeatConhecida(raiz, remoto), ...feats.map((r) => numeroDaFeat(r.feat))) + 1;
201
201
  if (proximo > 999)
202
- throw new Error('roadmap.feat: os numeros de FEAT de tres digitos acabaram');
202
+ throw new locale_1.ErroDoCatalogo((m) => m.reservas.featsAcabaram);
203
203
  const feat = `FEAT-${String(proximo).padStart(3, '0')}`;
204
204
  const reserva = { contrato: exports.CONTRATO_FEAT, feat, por: eu.por, maquina: eu.maquina,
205
205
  thread: opcoes.thread ?? null, nota: opcoes.nota ?? null, em: opcoes.agora ?? (0, util_1.agora)() };
@@ -210,7 +210,7 @@ function reservarFeat(raiz, opcoes = {}) {
210
210
  if (commit)
211
211
  return { feat, reserva, commit, tentativas: tentativa };
212
212
  }
213
- throw new Error(`roadmap.concorrencia: ${TENTATIVAS} pushes recusados seguidos; tente de novo em instantes`);
213
+ throw new locale_1.ErroDoCatalogo((m) => m.reservas.concorrencia(TENTATIVAS));
214
214
  }
215
215
  /** O `RESERVAS.md` da branch: a mesma lista, para quem abre o GitHub. */
216
216
  function painelEmMarkdown(reservas, feats = []) {
@@ -243,14 +243,14 @@ function gravar(raiz, remoto, ponta, mudanca, todas, mensagem, rede = {}) {
243
243
  function ehMinha(r, eu) {
244
244
  return r.por === eu.por && r.maquina === eu.maquina;
245
245
  }
246
- function descrever(r) {
247
- return `${r.item} esta com ${r.por} em ${r.maquina} desde ${(0, horario_1.formatarDataHora)(r.desdeEm)}` +
248
- (r.thread ? ` (thread ${r.thread})` : '');
246
+ /** RM-061 (F3b): a descricao no locale de quem a monta; o erro e o ledger a montam pelo catalogo. */
247
+ function descrever(r, m = (0, locale_1.msg)().reservas) {
248
+ return m.descricao(r.item, r.por, r.maquina, (0, horario_1.formatarDataHora)(r.desdeEm), r.thread ?? null);
249
249
  }
250
250
  function exigirMotivo(opcoes) {
251
251
  const motivo = (opcoes.motivo ?? '').trim();
252
252
  if (!motivo)
253
- throw new Error('roadmap.forcar: --forcar exige --motivo (tomar a reserva de outra maquina e decisao registrada)');
253
+ throw new locale_1.ErroDoCatalogo((m) => m.reservas.forcarSemMotivo);
254
254
  return motivo;
255
255
  }
256
256
  /**
@@ -264,7 +264,7 @@ function pegarItem(raiz, item, opcoes = {}) {
264
264
  for (let tentativa = 1; tentativa <= TENTATIVAS; tentativa++) {
265
265
  const { ponta, atualizado } = buscar(raiz, remoto, opcoes.rede);
266
266
  if (!atualizado)
267
- throw new Error(`roadmap.sem-remoto: nao consegui ler ${exports.BRANCH_DE_RESERVAS} em ${remoto}; reservar exige rede`);
267
+ throw new locale_1.ErroDoCatalogo((m) => m.reservas.semRemotoParaReservar(exports.BRANCH_DE_RESERVAS, remoto));
268
268
  const todas = lerDaPonta(raiz, ponta);
269
269
  const atual = todas.find((r) => r.item === id) ?? null;
270
270
  if (opcoes.threadEsperada !== undefined && (atual?.thread ?? null) !== opcoes.threadEsperada) {
@@ -277,7 +277,7 @@ function pegarItem(raiz, item, opcoes = {}) {
277
277
  acao = 'renovou';
278
278
  else if (atual) {
279
279
  if (!opcoes.forcar)
280
- throw new Error(`roadmap.reservado: ${descrever(atual)}. Escolha outro item ou combine com quem esta nele`);
280
+ throw new locale_1.ErroDoCatalogo((m) => m.reservas.reservadoAoPegar(descrever(atual, m.reservas)));
281
281
  tomadaDe = { por: atual.por, maquina: atual.maquina, motivo: exigirMotivo(opcoes) };
282
282
  acao = 'tomou';
283
283
  }
@@ -297,7 +297,7 @@ function pegarItem(raiz, item, opcoes = {}) {
297
297
  if (commit)
298
298
  return { acao, item: id, reserva, commit, tentativas: tentativa };
299
299
  }
300
- throw new Error(`roadmap.concorrencia: ${TENTATIVAS} pushes recusados seguidos; tente de novo em instantes`);
300
+ throw new locale_1.ErroDoCatalogo((m) => m.reservas.concorrencia(TENTATIVAS));
301
301
  }
302
302
  /** `ork roadmap soltar`: devolve o item. Soltar a reserva de outra maquina exige `--forcar --motivo`. */
303
303
  function soltarItem(raiz, item, opcoes = {}) {
@@ -307,7 +307,7 @@ function soltarItem(raiz, item, opcoes = {}) {
307
307
  for (let tentativa = 1; tentativa <= TENTATIVAS; tentativa++) {
308
308
  const { ponta, atualizado } = buscar(raiz, remoto, opcoes.rede);
309
309
  if (!atualizado)
310
- throw new Error(`roadmap.sem-remoto: nao consegui ler ${exports.BRANCH_DE_RESERVAS} em ${remoto}; soltar exige rede`);
310
+ throw new locale_1.ErroDoCatalogo((m) => m.reservas.semRemotoParaSoltar(exports.BRANCH_DE_RESERVAS, remoto));
311
311
  const todas = lerDaPonta(raiz, ponta);
312
312
  const atual = todas.find((r) => r.item === id);
313
313
  if (!atual)
@@ -318,7 +318,7 @@ function soltarItem(raiz, item, opcoes = {}) {
318
318
  let motivo = '';
319
319
  if (!ehMinha(atual, eu)) {
320
320
  if (!opcoes.forcar)
321
- throw new Error(`roadmap.reservado: ${descrever(atual)}; so quem pegou solta, ou --forcar --motivo`);
321
+ throw new locale_1.ErroDoCatalogo((m) => m.reservas.reservadoAoSoltar(descrever(atual, m.reservas)));
322
322
  motivo = `: ${exigirMotivo(opcoes)}`;
323
323
  }
324
324
  const restantes = todas.filter((r) => r.item !== id);
@@ -327,7 +327,7 @@ function soltarItem(raiz, item, opcoes = {}) {
327
327
  if (commit)
328
328
  return { acao: 'soltou', item: id, reserva: atual, commit, tentativas: tentativa };
329
329
  }
330
- throw new Error(`roadmap.concorrencia: ${TENTATIVAS} pushes recusados seguidos; tente de novo em instantes`);
330
+ throw new locale_1.ErroDoCatalogo((m) => m.reservas.concorrencia(TENTATIVAS));
331
331
  }
332
332
  function threadsLocais(raiz) {
333
333
  const threads = [];
@@ -367,10 +367,12 @@ function soltarOrfa(raiz, orfa, origem, opcoes) {
367
367
  // A reserva mudou de dono no meio (ou ja tinha saido): nada foi gravado e nada vai ao ledger como soltura.
368
368
  if (r.acao === 'nada') {
369
369
  return { item, thread, acao: 'intocada', para: null, commit: null,
370
- detalhe: `${item} mudou de dono entre a leitura e a gravacao; ficou como estava` };
370
+ detalhe: (0, locale_1.textoDoCatalogo)((m) => m.reservas.mudouDeDono(item)) };
371
371
  }
372
372
  const acao = orfa.sucessora ? 'reapontada' : 'solta';
373
- const detalhe = orfa.sucessora ? `${item} passou para a thread ${orfa.sucessora}, aberta no mesmo item` : `${item} devolvido`;
373
+ // RM-061 (F3b, G4): o detalhe vai ao ledger e ao --json em pt-BR; a impressao o remonta.
374
+ const sucessora = orfa.sucessora;
375
+ const detalhe = (0, locale_1.textoDoCatalogo)((m) => sucessora ? m.reservas.passouPara(item, sucessora) : m.reservas.devolvido(item));
374
376
  // Sugestao 3 do CHECK 2: a soltura ja foi ao remoto; erro so no registro nao a transforma em pendencia.
375
377
  try {
376
378
  (0, ledger_1.registrarSeExiste)((0, thread_1.dirThread)(raiz, thread), thread, ledger_1.TIPOS_DE_EVENTO.reservaLiberada, { item, acao, para: orfa.sucessora, commit: r.commit, origem, detalhe });
@@ -418,7 +420,7 @@ function soltarReservaDaThread(raiz, threadId, opcoes = {}) {
418
420
  return [pendenteDaThread(raiz, threadId, oItem, primeiraLinha(e))];
419
421
  }
420
422
  if (!painel.atualizado) {
421
- return [pendenteDaThread(raiz, threadId, oItem, `sem leitura de ${exports.BRANCH_DE_RESERVAS} em ${remoto}; a reserva fica para depois`)];
423
+ return [pendenteDaThread(raiz, threadId, oItem, (0, locale_1.textoDoCatalogo)((m) => m.reservas.semLeituraPendente(exports.BRANCH_DE_RESERVAS, remoto)))];
422
424
  }
423
425
  const dela = painel.reservas.filter((r) => r.thread === threadId);
424
426
  let orfas;
@@ -432,7 +434,7 @@ function soltarReservaDaThread(raiz, threadId, opcoes = {}) {
432
434
  const saida = [];
433
435
  // Sugestao 1 do CHECK 1: toda reserva da thread, nao so a primeira; a de outra maquina fica pendente.
434
436
  for (const r of dela.filter((x) => !orfas.some((o) => o.reserva.item === x.item))) {
435
- saida.push(pendenteDaThread(raiz, threadId, r.item, `${descrever(r)}; so quem pegou solta, ou --forcar --motivo`));
437
+ saida.push(pendenteDaThread(raiz, threadId, r.item, (0, locale_1.textoDoCatalogo)((m) => m.reservas.soQuemPegou(descrever(r, m.reservas)))));
436
438
  }
437
439
  for (const orfa of orfas) {
438
440
  try {
@@ -451,7 +453,7 @@ function soltarReservaDaThread(raiz, threadId, opcoes = {}) {
451
453
  function soltarReservasOrfas(raiz, opcoes = {}) {
452
454
  const painel = listarReservas(raiz, { remoto: opcoes.remoto, rede: opcoes.rede });
453
455
  if (!painel.atualizado)
454
- throw new Error(`roadmap.sem-remoto: nao consegui ler ${exports.BRANCH_DE_RESERVAS}; soltar exige rede`);
456
+ throw new locale_1.ErroDoCatalogo((m) => m.reservas.semRemotoParaOrfas(exports.BRANCH_DE_RESERVAS));
455
457
  return reservasOrfas(raiz, painel.reservas, opcoes).map((orfa) => {
456
458
  try {
457
459
  return soltarOrfa(raiz, orfa, 'orfas', opcoes);
@@ -470,33 +472,31 @@ function leituraDasReservas(p, temRemoto) {
470
472
  function textoDasReservas(p, orfas = [], lida = {}) {
471
473
  const remoto = lida.remoto ?? exports.REMOTO_PADRAO;
472
474
  const leitura = leituraDasReservas(p, lida.temRemoto !== false);
473
- if (leitura === 'sem-remoto') {
474
- const projeto = lida.projeto ? `o projeto ${lida.projeto}` : 'o projeto';
475
- return `Reservas do roadmap: ${projeto} não tem o remoto ${remoto}; nada foi lido de ${exports.BRANCH_DE_RESERVAS}.`;
476
- }
477
- if (leitura === 'sem-copia') {
478
- return `Reservas do roadmap: o remoto ${remoto} não respondeu e esta máquina não tem cópia de ${exports.BRANCH_DE_RESERVAS}; nada foi lido.`;
479
- }
475
+ // RM-061 (F3b): o painel no terminal pelo catalogo; item, pessoa, maquina, thread e nota sao dado.
476
+ const m = (0, locale_1.msg)().reservas;
477
+ if (leitura === 'sem-remoto')
478
+ return m.semRemoto(lida.projeto ?? null, remoto, exports.BRANCH_DE_RESERVAS);
479
+ if (leitura === 'sem-copia')
480
+ return m.semCopia(remoto, exports.BRANCH_DE_RESERVAS);
480
481
  const linhas = [];
481
482
  if (!p.atualizado)
482
- linhas.push('AVISO: sem acesso ao remoto; esta e a ultima copia lida nesta maquina.', '');
483
+ linhas.push(m.copiaLocal, '');
483
484
  const feats = p.feats ?? [];
484
- const numeros = feats.length === 0 ? [] : ['', `Números de FEAT reservados (${feats.length}), os últimos: ` +
485
- feats.slice(-5).map((f) => `${f.feat} (${f.thread ?? f.maquina})`).join(', ') + '. O próximo sai de: ork roadmap feat'];
485
+ const numeros = feats.length === 0 ? [] : ['', m.numerosDeFeat(feats.length, feats.slice(-5).map((f) => `${f.feat} (${f.thread ?? f.maquina})`).join(', '))];
486
486
  if (p.reservas.length === 0) {
487
- linhas.push('Nenhum item do roadmap reservado.', ...numeros);
487
+ linhas.push(m.nenhuma, ...numeros);
488
488
  return linhas.join('\n');
489
489
  }
490
- linhas.push('ITEM COM QUEM MAQUINA THREAD DESDE');
490
+ linhas.push(m.cabecalho);
491
491
  const orfaDoItem = new Map(orfas.map((o) => [o.reserva.item, o]));
492
492
  for (const r of p.reservas) {
493
493
  const orfa = orfaDoItem.get(r.item);
494
- const marca = orfa ? ` ÓRFÃ: thread fechada${orfa.sucessora ? `, passa para ${orfa.sucessora}` : ''}` : '';
494
+ const marca = orfa ? m.orfa(orfa.sucessora) : '';
495
495
  linhas.push(`${r.item.padEnd(8)} ${r.por.slice(0, 19).padEnd(19)} ${r.maquina.slice(0, 15).padEnd(15)} ` +
496
496
  `${(r.thread ?? '-').slice(0, 18).padEnd(18)} ${(0, horario_1.formatarDataHora)(r.desdeEm)}` + (r.nota ? ` ${r.nota}` : '') + marca);
497
497
  }
498
498
  if (orfas.length > 0)
499
- linhas.push('', `${orfas.length} reserva(s) órfã(s) desta máquina. Para soltar: ork roadmap reservas --soltar-orfas`);
499
+ linhas.push('', m.orfas(orfas.length));
500
500
  linhas.push(...numeros, '', (0, horario_1.legendaDoFuso)());
501
501
  return linhas.join('\n');
502
502
  }
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ENV_THREAD_DO_DESPACHO = exports.ENV_IDENTIDADE_DE_DESPACHO = exports.ENVS_DE_PROVIDER_PAGO = void 0;
4
4
  exports.nomesDeProviderAtivos = nomesDeProviderAtivos;
5
+ exports.sessaoDespachada = sessaoDespachada;
5
6
  exports.ambienteDeAssinatura = ambienteDeAssinatura;
6
7
  const hitl_public_receipt_1 = require("./hitl-public-receipt");
7
8
  /**
@@ -27,6 +28,10 @@ function nomesDeProviderAtivos(base = process.env) {
27
28
  */
28
29
  exports.ENV_IDENTIDADE_DE_DESPACHO = 'ORK_DISPATCH_ID';
29
30
  exports.ENV_THREAD_DO_DESPACHO = 'ORK_DISPATCH_THREAD';
31
+ /** O processo roda numa sessao despachada pelo `ork`: a identidade ou a thread do despacho estao no ambiente. */
32
+ function sessaoDespachada(env = process.env) {
33
+ return (env[exports.ENV_IDENTIDADE_DE_DESPACHO] ?? '').trim() !== '' || (env[exports.ENV_THREAD_DO_DESPACHO] ?? '').trim() !== '';
34
+ }
30
35
  /** Copia, sem alterar o ambiente em que as policies ainda precisam ser avaliadas. */
31
36
  function ambienteDeAssinatura(base = process.env) {
32
37
  const env = { ...base };