@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
@@ -40,6 +40,7 @@ const ledger_1 = require("./ledger");
40
40
  const thread_1 = require("./thread");
41
41
  const modos_1 = require("./modos");
42
42
  const conducao_1 = require("./conducao");
43
+ const locale_1 = require("./locale");
43
44
  exports.CONTRATO_DECISAO_AUTONOMA = 'ork.decisao-autonoma/v1';
44
45
  /**
45
46
  * A sessao de OUTRA thread que registra aqui tambem deixa rastro (S-3 do CHECK 3). So o par que o ledger
@@ -116,7 +117,7 @@ function rastroDaDecisao(e) {
116
117
  function registrarDecisao(raiz, threadId, entrada) {
117
118
  const t = (0, thread_1.lerThread)(raiz, threadId);
118
119
  if (t.status === 'fechada')
119
- throw new Error('decisão informada: thread fechada não decide mais nada');
120
+ throw new locale_1.ErroDoCatalogo((m) => m.decisao.threadFechada);
120
121
  const quando = entrada.quando ?? new Date().toISOString();
121
122
  // I-43: thread em modo aposentado e lida para sempre, mas nao escreve pedido novo.
122
123
  const modo = (0, modos_1.exigirModoVivo)(t.modo);
@@ -131,17 +132,17 @@ function registrarDecisao(raiz, threadId, entrada) {
131
132
  // R1, camada 1: criterio que aponta para nada vale o mesmo que criterio ausente.
132
133
  const { resolve, detalhe } = (0, hitl_gates_1.resolverCriterio)(raiz, pedido);
133
134
  if (!resolve)
134
- throw new Error(`decisão informada: critério não resolve (${detalhe})`);
135
+ throw new locale_1.ErroDoCatalogo((m) => m.decisao.criterioNaoResolve(detalhe));
135
136
  const rastro = { quemDecidiu: entrada.quemDecidiu, evidencia: entrada.evidencia, razao: entrada.razao ?? entrada.porque };
136
137
  // O registro confere os tres de novo; conferir aqui evita tomar o lock para recusar.
137
138
  (0, ledger_1.exigirRastroDeDecisaoAutonoma)(rastro);
138
139
  return (0, hitl_gates_1.comLockHitl)(raiz, t.id, () => {
139
140
  const agora = (0, thread_1.lerThread)(raiz, t.id), dir = (0, thread_1.dirThread)(raiz, t.id);
140
141
  if (agora.status === 'fechada' || agora.faseAtual !== pedido.fase)
141
- throw new Error('decisão informada: a fase mudou enquanto ela era registrada');
142
+ throw new locale_1.ErroDoCatalogo((m) => m.decisao.faseMudou);
142
143
  if (entrada.reverte && !(0, ledger_1.lerLedger)(dir).some(e => e.tipo === ledger_1.TIPOS_DE_EVENTO.decisaoAutonoma &&
143
144
  e.pedido?.id === entrada.reverte)) {
144
- throw new Error('decisão informada: a decisão revertida não existe nesta thread');
145
+ throw new locale_1.ErroDoCatalogo((m) => m.decisao.revertidaNaoExiste);
145
146
  }
146
147
  const evento = (0, ledger_1.registrar)(dir, t.id, ledger_1.TIPOS_DE_EVENTO.decisaoAutonoma, {
147
148
  contratoDecisao: exports.CONTRATO_DECISAO_AUTONOMA, fase: pedido.fase, decisao: pedido.decidido, ...rastro,
package/dist/demo.js CHANGED
@@ -51,11 +51,12 @@ const manifest_1 = require("./manifest");
51
51
  const thread_1 = require("./thread");
52
52
  const util_1 = require("./util");
53
53
  const verify_1 = require("./verify");
54
+ const locale_1 = require("./locale");
54
55
  const PROVA = "node -e \"process.exit(require('./soma').soma(2, 2) === 4 ? 0 : 1)\"";
55
56
  function git(dir, args) {
56
57
  const r = (0, util_1.exec)('git', args, dir);
57
58
  if (!r.ok)
58
- throw new Error(`demo: git ${args[0]} falhou: ${r.stderr.trim().split('\n').pop() ?? ''}`);
59
+ throw new Error((0, locale_1.msg)().operacao.restante.demo.gitFalhou(args[0], r.stderr.trim().split('\n').pop() ?? ''));
59
60
  }
60
61
  function commit(dir, arquivo, conteudo, mensagem) {
61
62
  fs.writeFileSync(path.join(dir, arquivo), conteudo, 'utf8');
@@ -70,7 +71,7 @@ function executarDemo(opcoes = {}) {
70
71
  const diga = opcoes.escrever ?? (() => undefined);
71
72
  // Diretorio dado por quem roda: so vazio ou inexistente, e nunca e apagado no fim.
72
73
  if (opcoes.dir && fs.existsSync(opcoes.dir) && fs.readdirSync(opcoes.dir).length > 0) {
73
- throw new Error(`demo: ${opcoes.dir} nao esta vazio; a demo cria o proprio repositorio`);
74
+ throw new Error((0, locale_1.msg)().operacao.restante.demo.dirNaoVazio(opcoes.dir));
74
75
  }
75
76
  const temporario = !opcoes.dir;
76
77
  const dir = opcoes.dir ? path.resolve(opcoes.dir) : fs.mkdtempSync(path.join(os.tmpdir(), 'ork-demo-'));
@@ -79,6 +80,7 @@ function executarDemo(opcoes = {}) {
79
80
  const publicarAntes = process.env.ORK_FABRICA_PUBLICAR;
80
81
  process.env.ORK_FABRICA_PUBLICAR = '0';
81
82
  try {
83
+ const m = (0, locale_1.msg)().operacao.restante.demo;
82
84
  git(dir, ['init', '-q', '-b', 'main']);
83
85
  git(dir, ['config', 'user.name', 'ork demo']);
84
86
  git(dir, ['config', 'user.email', 'demo@orkastery.local']);
@@ -87,26 +89,26 @@ function executarDemo(opcoes = {}) {
87
89
  (0, init_1.init)(dir, { nome: 'demo', abbrev: 'dmo' });
88
90
  const carregado = (0, manifest_1.exigirManifesto)(dir);
89
91
  const { thread } = (0, thread_1.novaThread)(carregado, { nome: 'demo', modo: 'auto' });
90
- diga('ork demo: a afirmacao do agente contra a prova');
92
+ diga(m.titulo);
91
93
  diga('');
92
- diga(' 1. O agente entrega soma.js e diz: "soma(2, 2) devolve 4. Pronto."');
94
+ diga(m.passo1);
93
95
  (0, claims_1.adicionarClaim)(dir, thread.id, { arquivo: 'soma.js', alegacao: 'soma(2, 2) devolve 4', verificar: [PROVA] });
94
- diga(' 2. O ork nao aceita relato: reexecuta a prova no commit real.');
96
+ diga(m.passo2);
95
97
  diga(` ${PROVA}`);
96
98
  const antes = (0, verify_1.verificar)(carregado, thread.id, { soClaims: true });
97
- diga(` Veredito: ${antes.ok ? 'VERDADE SUSTENTADA' : `REPROVADO (${antes.motivos.join(', ')})`}. A funcao faz a - b.`);
98
- diga(' 3. O agente corrige soma.js e faz commit.');
99
+ diga(m.vereditoAntes(antes.ok, antes.motivos.join(', ')));
100
+ diga(m.passo3);
99
101
  commit(dir, 'soma.js', '// Soma dois numeros.\nexports.soma = (a, b) => a + b;\n', 'corrige a soma');
100
- diga(' 4. O ork reexecuta a MESMA prova no commit novo.');
102
+ diga(m.passo4);
101
103
  const depois = (0, verify_1.verificar)(carregado, thread.id, { soClaims: true });
102
- diga(` Veredito: ${depois.ok ? 'VERDADE SUSTENTADA' : `REPROVADO (${depois.motivos.join(', ')})`}.`);
104
+ diga(m.vereditoDepois(depois.ok, depois.motivos.join(', ')));
103
105
  diga('');
104
- diga('Nenhuma afirmacao vale sem o comando que a julga, reexecutado no commit real.');
105
- diga('No seu projeto: ork init, depois ork thread new "<pedido>" --modo auto.');
106
+ diga(m.principio);
107
+ diga(m.proximo);
106
108
  const ok = !antes.ok && antes.motivos.includes('claims.failed') && depois.ok;
107
109
  const mantido = !temporario || opcoes.manter === true;
108
110
  if (mantido)
109
- diga(`(o repositorio da demo ficou em ${dir})`);
111
+ diga(m.mantido(dir));
110
112
  return { dir, antes, depois, ok, mantido };
111
113
  }
112
114
  finally {
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PRAZO_DAS_DEPENDENCIAS_MS = void 0;
4
+ exports.prepararDependencias = prepararDependencias;
5
+ exports.eventoDoPreparo = eventoDoPreparo;
6
+ exports.ultimaLinhaDoPreparo = ultimaLinhaDoPreparo;
7
+ /** O preparo que passa disto (a rede lenta, o cache vazio) estoura, e a worktree fica como o git a deixou. */
8
+ exports.PRAZO_DAS_DEPENDENCIAS_MS = 10 * 60 * 1000;
9
+ /** Roda `comando` dentro de `dir`, a worktree que acabou de nascer. */
10
+ function prepararDependencias(dir, comando, prazoMs = exports.PRAZO_DAS_DEPENDENCIAS_MS, executor) {
11
+ // Carregado na hora: o verify importa o modulo das threads, que importa este.
12
+ const { executar } = require('./verify');
13
+ const r = executor ? executor('dependencias', comando, dir) : executar('dependencias', comando, dir, prazoMs);
14
+ return { comando, ok: r.ok, code: r.code, causa: r.causa ?? null, prazoMs, duracaoMs: r.duracaoMs ?? 0,
15
+ trecho: r.ok ? '' : (r.trecho ?? r.resumo) };
16
+ }
17
+ /** O evento `worktree_dependencias` do ledger da thread. */
18
+ function eventoDoPreparo(dir, p) {
19
+ return { dir, comando: p.comando, ok: p.ok, code: p.code, causa: p.causa, prazoMs: p.prazoMs, duracaoMs: p.duracaoMs,
20
+ ...(p.ok ? {} : { trecho: p.trecho }), fonte: 'worktree.dependencias do manifesto' };
21
+ }
22
+ /** A ultima linha util da saida de quem falhou, para caber na linha do aviso. */
23
+ function ultimaLinhaDoPreparo(p) {
24
+ return p.trecho.split('\n').map((l) => l.trim()).filter(Boolean).at(-1)?.slice(0, 240) ?? '';
25
+ }
package/dist/divida.js CHANGED
@@ -73,6 +73,7 @@ const claims_1 = require("./claims");
73
73
  const manifest_1 = require("./manifest");
74
74
  const auditoria_1 = require("./auditoria");
75
75
  const util_1 = require("./util");
76
+ const locale_1 = require("./locale");
76
77
  /** Diretorio do board de divida do projeto. */
77
78
  function dirDivida(raiz) {
78
79
  return path.join((0, manifest_1.dirEstado)(raiz), 'divida');
@@ -97,7 +98,7 @@ function gravarAchado(raiz, achado) {
97
98
  function exigirAchado(raiz, id) {
98
99
  const achado = lerBoard(raiz).find((a) => a.id === id.toUpperCase());
99
100
  if (!achado) {
100
- throw new Error(`achado "${id}" nao existe no board de divida (${caminhoBoard(raiz)}). Veja: ork audit divida`);
101
+ throw new Error((0, locale_1.msg)().thread.fromFinding.achadoNaoExiste(id, caminhoBoard(raiz)));
101
102
  }
102
103
  return achado;
103
104
  }
@@ -289,14 +290,13 @@ function parseEstadoDeAchado(bruto) {
289
290
  }
290
291
  /** Tabela de `ork audit divida`. */
291
292
  function tabelaDaDivida(raiz, filtro = {}) {
293
+ const m = (0, locale_1.msg)().audit.divida;
292
294
  const board = lerBoard(raiz);
293
295
  const alvo = board
294
296
  .filter((a) => (filtro.pack ? a.pack === filtro.pack : true))
295
297
  .filter((a) => (filtro.todos ? true : a.estado !== 'descartado' && a.estado !== 'resolvido'));
296
298
  if (alvo.length === 0) {
297
- return ('Board de divida vazio' +
298
- (filtro.pack ? ` para o pack ${filtro.pack}` : '') +
299
- `.\nRode uma auditoria: ork audit run <pack>`);
299
+ return m.vazia(filtro.pack);
300
300
  }
301
301
  const linhas = alvo.map((a) => [
302
302
  a.id,
@@ -306,42 +306,43 @@ function tabelaDaDivida(raiz, filtro = {}) {
306
306
  a.claim.estado,
307
307
  a.estado,
308
308
  a.proposta.estimativa,
309
- a.proposta.passoIrreversivel.toLowerCase() === 'nenhum' ? 'nao' : 'SIM',
309
+ a.proposta.passoIrreversivel.toLowerCase() === 'nenhum' ? m.nao : m.sim,
310
310
  `${a.arquivo}${a.linha !== null ? ':' + a.linha : ''}`,
311
311
  a.titulo,
312
312
  ]);
313
- const corpo = (0, util_1.tabela)(['ID', 'PACK', 'REGRA', 'SEVERIDADE', 'CLAIM', 'ESTADO', 'ESTIMATIVA', 'IRREVERSIVEL', 'EVIDENCIA', 'TITULO'], linhas);
313
+ const corpo = (0, util_1.tabela)([...m.cabecalho], linhas);
314
314
  const rec = recorrencias(alvo).filter((r) => r.ocorrencias > 1);
315
315
  const linhasRec = rec.length === 0
316
- ? [' (nenhuma regra recorrente ainda)']
317
- : rec.map((r) => ` ${r.pack} ${r.regra}: ${r.ocorrencias}x -> promocao proposta: ${r.promocaoProposta} (${r.achados.join(', ')})`);
316
+ ? [m.nenhuma]
317
+ : rec.map((r) => m.item(r.pack, r.regra, r.ocorrencias, r.promocaoProposta, r.achados.join(', ')));
318
318
  return [
319
- `Board de divida do projeto (${caminhoBoard(raiz)})`,
319
+ m.titulo(caminhoBoard(raiz)),
320
320
  '',
321
321
  corpo,
322
322
  '',
323
- 'Recorrencia (2 propoem controle, 3 propoem bloqueante; o `ork` nunca promove sozinho):',
323
+ m.recorrencia,
324
324
  ...linhasRec,
325
325
  '',
326
- `abertos: ${abertos(alvo).length} | total listado: ${alvo.length}`,
327
- 'Achado vira thread com: ork thread new "<nome>" --from-finding <ID>',
326
+ m.resumo(abertos(alvo).length, alvo.length),
327
+ m.thread,
328
328
  ].join('\n');
329
329
  }
330
330
  /** Detalhe de um achado, usado pelo `--from-finding` e por `ork audit show`. */
331
331
  function textoDoAchado(a) {
332
+ const m = (0, locale_1.msg)().thread.fromFinding;
332
333
  const linhas = [];
333
- linhas.push(` ${a.id} [${a.severidade}] ${a.pack}/${a.regra} ${a.titulo}`);
334
- linhas.push(` evidencia ${a.arquivo}${a.linha !== null ? ':' + a.linha : ''}`);
334
+ linhas.push(m.achadoCabecalho(a.id, a.severidade, a.pack, a.regra, a.titulo));
335
+ linhas.push(m.evidencia(`${a.arquivo}${a.linha !== null ? ':' + a.linha : ''}`));
335
336
  if (a.descricao)
336
- linhas.push(` descricao ${a.descricao}`);
337
- linhas.push(` claim ${a.claim.id} [${a.claim.estado}] ${a.claim.alegacao}`);
338
- linhas.push(` verificar ${a.claim.verificar.join(' && ') || '(sem comando: o auditor nao comprovou o achado)'}`);
339
- linhas.push(` impacto ${a.proposta.impacto}`);
340
- linhas.push(` fix ${a.proposta.fix}`);
341
- linhas.push(` irreversivel ${a.proposta.passoIrreversivel}`);
342
- linhas.push(` estimativa ${a.proposta.estimativa}`);
343
- linhas.push(` destino ${a.proposta.destino} (regime ${a.proposta.regime})`);
344
- linhas.push(` estado ${a.estado}${a.thread ? ` (thread ${a.thread})` : ''}`);
337
+ linhas.push(m.descricao(a.descricao));
338
+ linhas.push(m.claim(a.claim.id, a.claim.estado, a.claim.alegacao));
339
+ linhas.push(m.verificar(a.claim.verificar.join(' && ') || m.semComando));
340
+ linhas.push(m.impacto(a.proposta.impacto));
341
+ linhas.push(m.fix(a.proposta.fix));
342
+ linhas.push(m.irreversivel(a.proposta.passoIrreversivel));
343
+ linhas.push(m.estimativa(a.proposta.estimativa));
344
+ linhas.push(m.destino(a.proposta.destino, a.proposta.regime));
345
+ linhas.push(m.estado(a.estado, a.thread ?? null));
345
346
  return linhas.join('\n');
346
347
  }
347
348
  /**
@@ -351,23 +352,24 @@ function textoDoAchado(a) {
351
352
  * fix proposto, o passo irreversivel e a estimativa que o auditor levantou.
352
353
  */
353
354
  function pedidoDoAchado(a) {
355
+ const m = (0, locale_1.msg)().thread.fromFinding;
354
356
  return [
355
- `Achado de auditoria ${a.id} (pack ${a.pack}, regra ${a.regra}, severidade ${a.severidade}).`,
357
+ m.pedidoCabecalho(a.id, a.pack, a.regra, a.severidade),
356
358
  '',
357
- `Titulo: ${a.titulo}`,
358
- `Evidencia: ${a.arquivo}${a.linha !== null ? ':' + a.linha : ''}`,
359
- a.descricao ? `Descricao: ${a.descricao}` : '',
360
- `Alegacao do auditor (claim ${a.claim.id}, estado ${a.claim.estado}): ${a.claim.alegacao}`,
361
- `Como reexecutar a evidencia: ${a.claim.verificar.join(' && ') || '(nao declarado pelo auditor)'}`,
359
+ m.pedidoTitulo(a.titulo),
360
+ m.pedidoEvidencia(`${a.arquivo}${a.linha !== null ? ':' + a.linha : ''}`),
361
+ a.descricao ? m.pedidoDescricao(a.descricao) : '',
362
+ m.pedidoClaim(a.claim.id, a.claim.estado, a.claim.alegacao),
363
+ m.pedidoVerificar(a.claim.verificar.join(' && ') || m.naoDeclarado),
362
364
  '',
363
- 'Proposta de ajuste levantada pela rodada:',
364
- ` impacto ${a.proposta.impacto}`,
365
- ` fix sugerido ${a.proposta.fix}`,
366
- ` irreversivel ${a.proposta.passoIrreversivel}`,
367
- ` estimativa ${a.proposta.estimativa}`,
365
+ m.proposta,
366
+ m.propostaImpacto(a.proposta.impacto),
367
+ m.propostaFix(a.proposta.fix),
368
+ m.propostaIrreversivel(a.proposta.passoIrreversivel),
369
+ m.propostaEstimativa(a.proposta.estimativa),
368
370
  '',
369
- `Origem: rodada ${a.rodada}, produto ${a.produto}, estagio ${a.estagio}, postura ${a.postura}.`,
370
- 'O fix acima e proposta do auditor, nao decisao: valide no GOAL antes de implementar.',
371
+ m.origem(a.rodada, a.produto, a.estagio, a.postura),
372
+ m.propostaNaoDecisao,
371
373
  ]
372
374
  .filter((l) => l !== '')
373
375
  .join('\n');