@orkastery/cli 0.5.6 → 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 (385) 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 +118 -4
  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/atualizar-branch.js +245 -0
  105. package/dist/auditoria.js +13 -11
  106. package/dist/auditrun.js +51 -46
  107. package/dist/autorizacao-duravel.js +327 -0
  108. package/dist/board.js +94 -40
  109. package/dist/branch-de-estado.js +16 -8
  110. package/dist/busca-semantica.js +7 -5
  111. package/dist/catalogo.js +2 -1
  112. package/dist/changelog-reconciliacao.js +290 -0
  113. package/dist/check-agil.js +500 -0
  114. package/dist/check-modo.js +41 -0
  115. package/dist/check-paralelo.js +183 -0
  116. package/dist/ci.js +248 -45
  117. package/dist/ciclos.js +8 -6
  118. package/dist/claim-lint.js +12 -8
  119. package/dist/claims-conferir.js +47 -39
  120. package/dist/claims.js +10 -9
  121. package/dist/company-brain-client.js +10 -3
  122. package/dist/company-brain-migration.js +11 -5
  123. package/dist/conducao-batida.js +759 -0
  124. package/dist/conducao-sentinela.js +25 -8
  125. package/dist/conducao.js +84 -29
  126. package/dist/conhecimento-consulta.js +270 -0
  127. package/dist/conhecimento.js +111 -87
  128. package/dist/conta-esgotada.js +127 -0
  129. package/dist/dado-privado.js +816 -0
  130. package/dist/decisao-autonoma.js +5 -4
  131. package/dist/demo.js +14 -12
  132. package/dist/dependencias-da-worktree.js +25 -0
  133. package/dist/divida.js +38 -36
  134. package/dist/docs.js +81 -74
  135. package/dist/doctor-forja.js +345 -0
  136. package/dist/doctor-pulse-cron.js +113 -1
  137. package/dist/doctor.js +164 -6
  138. package/dist/dsn-da-memoria.js +417 -0
  139. package/dist/entrega-por-mod.js +503 -0
  140. package/dist/entrega-pr.js +143 -43
  141. package/dist/esgotamentos.js +13 -11
  142. package/dist/estado-thread.js +21 -18
  143. package/dist/evalrunner.js +35 -32
  144. package/dist/fabrica-batida.js +34 -21
  145. package/dist/fabrica-estado.js +13 -10
  146. package/dist/fix.js +21 -19
  147. package/dist/forja/adaptador.js +6 -0
  148. package/dist/forja/ambiente-de-ci.js +27 -0
  149. package/dist/forja/api.js +256 -0
  150. package/dist/forja/cache.js +89 -0
  151. package/dist/forja/cli.js +60 -0
  152. package/dist/forja/contrato.js +9 -0
  153. package/dist/forja/endereco.js +43 -0
  154. package/dist/forja/estado.js +22 -0
  155. package/dist/forja/executor.js +73 -0
  156. package/dist/forja/github/ci.js +95 -0
  157. package/dist/forja/github/dono-da-rede.js +18 -0
  158. package/dist/forja/github/metadados.js +15 -0
  159. package/dist/forja/github/pedidos.js +200 -0
  160. package/dist/forja/gitlab/ci.js +141 -0
  161. package/dist/forja/gitlab/consultas.js +59 -0
  162. package/dist/forja/gitlab/dono-da-rede.js +43 -0
  163. package/dist/forja/gitlab/metadados.js +15 -0
  164. package/dist/forja/gitlab/pedidos-abertos.js +158 -0
  165. package/dist/forja/gitlab/pedidos.js +141 -0
  166. package/dist/forja/produtor.js +32 -0
  167. package/dist/forja/registro.js +31 -0
  168. package/dist/forja/resolver.js +121 -0
  169. package/dist/forja/texto.js +13 -0
  170. package/dist/forja/versao.js +71 -0
  171. package/dist/forja.js +123 -80
  172. package/dist/handoff.js +23 -13
  173. package/dist/hitl-contract.js +46 -43
  174. package/dist/hitl-curto.js +37 -25
  175. package/dist/hitl-gates.js +13 -11
  176. package/dist/hitl-local-receipt.js +51 -0
  177. package/dist/hitl-local.js +11 -2
  178. package/dist/hitl-lock.js +5 -11
  179. package/dist/hitl-public-receipt.js +11 -0
  180. package/dist/hitl-resumo.js +44 -1
  181. package/dist/hitl-sessions.js +62 -9
  182. package/dist/hitl-texto-livre.js +7 -4
  183. package/dist/hitl.js +34 -31
  184. package/dist/horario.js +16 -0
  185. package/dist/hosts.js +104 -134
  186. package/dist/index.js +848 -548
  187. package/dist/indice-vetorial.js +14 -12
  188. package/dist/init.js +11 -2
  189. package/dist/integracoes-locais.js +2 -0
  190. package/dist/intelligence-graph-cli.js +123 -69
  191. package/dist/intelligence-graph-query.js +37 -22
  192. package/dist/leases.js +19 -18
  193. package/dist/ledger-stats.js +17 -16
  194. package/dist/ledger.js +31 -1
  195. package/dist/licoes.js +12 -11
  196. package/dist/locale-accounts.js +220 -0
  197. package/dist/locale-adapter.js +291 -0
  198. package/dist/locale-ajuda.js +76 -4
  199. package/dist/locale-audit.js +199 -0
  200. package/dist/locale-claims.js +213 -0
  201. package/dist/locale-conducao.js +138 -0
  202. package/dist/locale-conhecimento.js +181 -0
  203. package/dist/locale-decisao.js +205 -0
  204. package/dist/locale-docs.js +230 -0
  205. package/dist/locale-estado.js +101 -0
  206. package/dist/locale-forja.js +290 -0
  207. package/dist/locale-gerados.js +5 -0
  208. package/dist/locale-grafo.js +129 -0
  209. package/dist/locale-master.js +83 -0
  210. package/dist/locale-network.js +524 -0
  211. package/dist/locale-operacao-restante.js +931 -0
  212. package/dist/locale-projetos.js +100 -0
  213. package/dist/locale-prompts.js +194 -0
  214. package/dist/locale-pulse.js +140 -2
  215. package/dist/locale-reservas.js +87 -0
  216. package/dist/locale-retry.js +145 -6
  217. package/dist/locale-security-scan.js +69 -0
  218. package/dist/locale-setup.js +192 -0
  219. package/dist/locale-ship.js +169 -66
  220. package/dist/locale-thread.js +149 -5
  221. package/dist/locale-verify.js +80 -4
  222. package/dist/locale-worktree.js +246 -0
  223. package/dist/locale.js +553 -9
  224. package/dist/maestro-runtime.js +22 -3
  225. package/dist/manifest.js +287 -11
  226. package/dist/maquina-ociosa.js +211 -0
  227. package/dist/maquina.js +10 -5
  228. package/dist/master-nota-local.js +200 -0
  229. package/dist/master-nota.js +10 -2
  230. package/dist/master.js +118 -41
  231. package/dist/mcp-conhecimento.js +52 -0
  232. package/dist/mcp-experiencia.js +26 -5
  233. package/dist/mcp-install.js +73 -8
  234. package/dist/mcp-noctum.js +101 -0
  235. package/dist/mcp-server.js +82 -14
  236. package/dist/mcp-ship-transporte.js +977 -0
  237. package/dist/mcp-ship.js +68 -24
  238. package/dist/mcp-transportes.js +17 -0
  239. package/dist/memoria.js +63 -58
  240. package/dist/modos-migracao.js +8 -6
  241. package/dist/modos.js +17 -18
  242. package/dist/network-roadmap.js +85 -49
  243. package/dist/noctum-aceite.js +789 -0
  244. package/dist/noctum-arco.js +540 -33
  245. package/dist/noctum-capacidade.js +3 -3
  246. package/dist/noctum-changelog.js +399 -0
  247. package/dist/noctum-cli.js +482 -0
  248. package/dist/noctum-coordenacao.js +1225 -0
  249. package/dist/noctum-entrega.js +1169 -0
  250. package/dist/noctum-envelope.js +252 -16
  251. package/dist/noctum-execucao.js +95 -23
  252. package/dist/noctum-fechamento.js +405 -0
  253. package/dist/noctum-fila.js +43 -9
  254. package/dist/noctum-guarda.js +256 -0
  255. package/dist/noctum-integracao.js +507 -0
  256. package/dist/noctum-maquinas.js +383 -0
  257. package/dist/noctum-medicao.js +450 -0
  258. package/dist/noctum-modo.js +362 -0
  259. package/dist/noctum-pergunta-canal.js +96 -0
  260. package/dist/noctum-pergunta.js +115 -0
  261. package/dist/noctum-provas.js +838 -0
  262. package/dist/noctum-reconciliacao.js +591 -0
  263. package/dist/noctum-registro.js +215 -0
  264. package/dist/noctum-relatorio.js +827 -0
  265. package/dist/noctum-resposta.js +207 -0
  266. package/dist/noctum-sessoes-em-voo.js +93 -0
  267. package/dist/noctum-supervisao.js +649 -0
  268. package/dist/noctum-terminal.js +459 -0
  269. package/dist/noctum-transporte.js +655 -0
  270. package/dist/noctum-vigia.js +639 -0
  271. package/dist/ocupacao.js +3 -1
  272. package/dist/onboarding.js +16 -5
  273. package/dist/orkmind.js +39 -23
  274. package/dist/orquestracao.js +31 -35
  275. package/dist/parado-no-condutor.js +146 -124
  276. package/dist/phase.js +53 -27
  277. package/dist/policies.js +33 -0
  278. package/dist/postura-local.js +4 -3
  279. package/dist/procedencia.js +9 -14
  280. package/dist/projeto-alvo.js +59 -20
  281. package/dist/prompts.js +136 -42
  282. package/dist/prova-minima.js +5 -6
  283. package/dist/pulse-cadencia.js +5 -4
  284. package/dist/pulse-consentimento.js +53 -1
  285. package/dist/pulse-delivery.js +143 -27
  286. package/dist/pulse-resposta.js +368 -4
  287. package/dist/pulse.js +136 -3
  288. package/dist/ratelimit.js +12 -4
  289. package/dist/recall.js +14 -13
  290. package/dist/rede-adesao.js +13 -8
  291. package/dist/rede-forja.js +108 -24
  292. package/dist/rede-status.js +63 -45
  293. package/dist/rede.js +86 -46
  294. package/dist/retomada-checkpoint.js +101 -0
  295. package/dist/retry.js +228 -73
  296. package/dist/roadmap-reservas.js +32 -32
  297. package/dist/runtime-ambiente.js +5 -0
  298. package/dist/runtime-context.js +117 -43
  299. package/dist/runtime-escada.js +423 -0
  300. package/dist/runtime-profiles.js +103 -46
  301. package/dist/saida-segura.js +3 -2
  302. package/dist/security-scan/agil.js +355 -0
  303. package/dist/security-scan/cli.js +76 -0
  304. package/dist/security-scan/compare.js +149 -0
  305. package/dist/security-scan/config.js +93 -0
  306. package/dist/security-scan/detect.js +97 -0
  307. package/dist/security-scan/executor.js +188 -0
  308. package/dist/security-scan/guard.js +180 -0
  309. package/dist/security-scan/imagem-de-lint.js +96 -0
  310. package/dist/security-scan/normalize/actionlint.js +12 -0
  311. package/dist/security-scan/normalize/eslint.js +12 -0
  312. package/dist/security-scan/normalize/gitleaks.js +13 -0
  313. package/dist/security-scan/normalize/golangci-lint.js +13 -0
  314. package/dist/security-scan/normalize/govulncheck.js +36 -0
  315. package/dist/security-scan/normalize/index.js +25 -0
  316. package/dist/security-scan/normalize/npm-audit.js +30 -0
  317. package/dist/security-scan/normalize/osv-scanner.js +32 -0
  318. package/dist/security-scan/normalize/oxlint.js +51 -0
  319. package/dist/security-scan/normalize/pip-audit.js +16 -0
  320. package/dist/security-scan/normalize/ruff.js +12 -0
  321. package/dist/security-scan/normalize/semgrep.js +20 -0
  322. package/dist/security-scan/normalize/trivy.js +33 -0
  323. package/dist/security-scan/normalize/util.js +204 -0
  324. package/dist/security-scan/normalize/zizmor.js +19 -0
  325. package/dist/security-scan/report.js +156 -0
  326. package/dist/security-scan/run.js +448 -0
  327. package/dist/security-scan/tools.js +62 -0
  328. package/dist/security-scan/trabalhador.js +74 -0
  329. package/dist/security-scan/types.js +15 -0
  330. package/dist/session-events.js +19 -2
  331. package/dist/session-watcher-claude.js +74 -19
  332. package/dist/session-watcher.js +156 -10
  333. package/dist/sessoes-contas.js +9 -0
  334. package/dist/sessoes-inventario.js +1 -1
  335. package/dist/sessoes.js +25 -23
  336. package/dist/setup.js +59 -58
  337. package/dist/ship-publicar.js +263 -92
  338. package/dist/ship.js +160 -17
  339. package/dist/superficie.js +14 -11
  340. package/dist/thread-close.js +9 -9
  341. package/dist/thread.js +121 -18
  342. package/dist/tokens.js +15 -11
  343. package/dist/trabalho-thread.js +297 -0
  344. package/dist/transporte-do-canal.js +189 -0
  345. package/dist/types.js +12 -1
  346. package/dist/util.js +5 -2
  347. package/dist/varredura-acoes.js +507 -0
  348. package/dist/verify.js +472 -29
  349. package/dist/worktree-local.js +12 -10
  350. package/dist/worktree.js +81 -85
  351. package/eval/casos/check-quality.json +77 -0
  352. package/eval/casos/security-auditor.json +148 -0
  353. package/eval/casos/security-remediation.json +161 -0
  354. package/eval/fixtures/security-scan/README.md +8 -0
  355. package/eval/fixtures/security-scan/go/.github/workflows/ci.yml +12 -0
  356. package/eval/fixtures/security-scan/go/Dockerfile +4 -0
  357. package/eval/fixtures/security-scan/go/README.md +4 -0
  358. package/eval/fixtures/security-scan/go/config.go +4 -0
  359. package/eval/fixtures/security-scan/go/go.mod +5 -0
  360. package/eval/fixtures/security-scan/go/go.sum +2 -0
  361. package/eval/fixtures/security-scan/go/main.go +31 -0
  362. package/eval/fixtures/security-scan/js/.github/workflows/ci.yml +12 -0
  363. package/eval/fixtures/security-scan/js/Dockerfile +3 -0
  364. package/eval/fixtures/security-scan/js/README.md +4 -0
  365. package/eval/fixtures/security-scan/js/package-lock.json +844 -0
  366. package/eval/fixtures/security-scan/js/package.json +10 -0
  367. package/eval/fixtures/security-scan/js/src/config.js +4 -0
  368. package/eval/fixtures/security-scan/js/src/server.js +17 -0
  369. package/eval/fixtures/security-scan/js/src/util.ts +4 -0
  370. package/eval/fixtures/security-scan/js/tsconfig.json +4 -0
  371. package/eval/fixtures/security-scan/python/.github/workflows/ci.yml +12 -0
  372. package/eval/fixtures/security-scan/python/Dockerfile +3 -0
  373. package/eval/fixtures/security-scan/python/README.md +4 -0
  374. package/eval/fixtures/security-scan/python/app/__init__.py +0 -0
  375. package/eval/fixtures/security-scan/python/app/config.py +2 -0
  376. package/eval/fixtures/security-scan/python/app/main.py +19 -0
  377. package/eval/fixtures/security-scan/python/requirements.txt +1 -0
  378. package/package.json +9 -4
  379. package/references/security-checklist.md +3 -3
  380. package/skills/README.md +1 -0
  381. package/skills/core/orkastery-bootstrap/SKILL.md +2 -2
  382. package/skills/phases/check-quality/SKILL.md +16 -0
  383. package/skills/phases/go-implementation/SKILL.md +6 -0
  384. package/skills/phases/security-remediation/SKILL.md +70 -0
  385. package/skills/reviewers/security-auditor/SKILL.md +25 -0
@@ -22,6 +22,7 @@ exports.fundirRrf = fundirRrf;
22
22
  exports.buscarPorSignificado = buscarPorSignificado;
23
23
  exports.textoDaBuscaPorSignificado = textoDaBuscaPorSignificado;
24
24
  const indice_vetorial_1 = require("./indice-vetorial");
25
+ const locale_1 = require("./locale");
25
26
  exports.MODOS_DE_BUSCA = ['hibrido', 'vetor', 'fts'];
26
27
  /** D9: constante da fusao RRF. */
27
28
  exports.RRF_K = 60;
@@ -185,17 +186,18 @@ function buscarPorSignificado(o) {
185
186
  * id do FTS fora do universo e o aviso de cobertura vivem nele, e o texto os perdia na busca que deu certo.
186
187
  */
187
188
  function textoDaBuscaPorSignificado(r) {
188
- const linhas = [`Busca por significado (NAO deterministica; modo ${r.modo}, origem ${r.origem}${r.modeloUsado ? ` ${r.modeloUsado}` : ''})`];
189
+ const m = (0, locale_1.msg)().operacao.restante.memory.busca;
190
+ const linhas = [m.titulo(r.modo, r.origem, r.modeloUsado ?? '')];
189
191
  if (r.motivo)
190
- linhas.push(` motivo: ${r.motivo}${r.detalhe ? `; ${r.detalhe}` : ''}`);
192
+ linhas.push(m.motivo(r.motivo, r.detalhe));
191
193
  else if (r.detalhe)
192
- linhas.push(` detalhe: ${r.detalhe}`);
194
+ linhas.push(m.detalhe(r.detalhe));
193
195
  linhas.push('');
194
196
  r.resultados.forEach((e, i) => {
195
- const sim = e.similaridade === null ? '' : ` similaridade ${e.similaridade}`;
197
+ const sim = e.similaridade === null ? '' : m.similaridade(e.similaridade);
196
198
  linhas.push(` ${i + 1}. [${e.collection}] ${e.id} score ${e.score} ${e.fontes.join('+')}${sim}`);
197
199
  linhas.push(` ${e.resumo}`);
198
200
  });
199
- linhas.push('', ` ${r.resultados.length} resultado(s); busca por tag continua em ork memory search --tags`);
201
+ linhas.push('', m.resumo(r.resultados.length));
200
202
  return linhas.join('\n');
201
203
  }
package/dist/catalogo.js CHANGED
@@ -52,6 +52,7 @@ exports.skillsDoCatalogo = skillsDoCatalogo;
52
52
  exports.referenciasDoCatalogo = referenciasDoCatalogo;
53
53
  const fs = __importStar(require("node:fs"));
54
54
  const path = __importStar(require("node:path"));
55
+ const locale_1 = require("./locale");
55
56
  /** O que precisa existir para um diretorio ser a raiz do catalogo. */
56
57
  const MARCAS = ['skills', 'references', 'eval'];
57
58
  function ehRaizDoCatalogo(dir) {
@@ -81,7 +82,7 @@ function raizDoCatalogo(inicial) {
81
82
  function exigirCatalogo(inicial) {
82
83
  const raiz = raizDoCatalogo(inicial);
83
84
  if (!raiz) {
84
- throw new Error('catalogo do Orkastery nao encontrado (esperado um diretorio com skills/, references/ e eval/)');
85
+ throw new locale_1.ErroDoCatalogo((m) => m.adapter.catalogoNaoEncontrado);
85
86
  }
86
87
  return raiz;
87
88
  }
@@ -0,0 +1,290 @@
1
+ "use strict";
2
+ /**
3
+ * RM-063 (F7): a reconciliacao deterministica do CHANGELOG no merge da base na branch da thread.
4
+ *
5
+ * Incidente de 12 e 13/10/2026: os PRs #153 e #154 ficaram prontos e esperaram de 5 a 6 horas pelo condutor, e cada
6
+ * merge da outra maquina na `main` reabria o conflito no CHANGELOG. Duas formas do mesmo defeito:
7
+ *
8
+ * - o PR de versao troca `## Não publicado` pela secao da versao (`## [0.5.6] - ...`), e o merge da `main` na branch
9
+ * poe os itens da thread DENTRO da versao publicada, sem conflito nenhum; o `checar-changelog` do CI acusa
10
+ * `changelog.linha-ausente`;
11
+ * - duas threads acrescentam item no topo do mesmo grupo de `## Não publicado`, e o merge conflita so no CHANGELOG.
12
+ *
13
+ * O condutor resolvia a mao, com um script. Aqui a mesma regra, num lugar so e sem adivinhar: os itens que a thread
14
+ * acrescentou a `## Não publicado` (os que nem a base comum nem a `main` tem) voltam para la, no mesmo grupo
15
+ * (`### Adicionado`, `### Corrigido`...), no fim dele e na ordem da thread. O resto do arquivo e o da `main` (no conflito)
16
+ * ou o do merge (sem conflito): as secoes publicadas nunca recebem nem perdem item da thread por esta funcao. Item que a
17
+ * thread tirou de `## Não publicado` (a linha reescrita, por exemplo) sai tambem de la, e so de la.
18
+ *
19
+ * Funcao pura: recebe os tres textos (base comum, o da thread e o da `main`) e, quando houve, o resultado do merge sem
20
+ * conflito. Quem roda o git e decide se o conflito e so no CHANGELOG e `conducao-batida.ts`.
21
+ */
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ exports.SECAO_NAO_PUBLICADA = exports.ARQUIVO_DO_CHANGELOG = void 0;
24
+ exports.temMarcadorDeConflito = temMarcadorDeConflito;
25
+ exports.reconciliarChangelog = reconciliarChangelog;
26
+ exports.ARQUIVO_DO_CHANGELOG = 'CHANGELOG.md';
27
+ exports.SECAO_NAO_PUBLICADA = '## Não publicado';
28
+ /** A ordem dos grupos que o CHANGELOG ja usa; grupo fora dela vai para o fim da secao. */
29
+ const ORDEM_DOS_GRUPOS = ['Adicionado', 'Alterado', 'Mudado', 'Corrigido', 'Removido', 'Segurança'];
30
+ /** As pontas do conflito do git; o `=======` sozinho tambem e o sublinhado de um titulo setext, e nao conta. */
31
+ const INICIO_DO_CONFLITO = /^<{7}( |$)/m;
32
+ const FIM_DO_CONFLITO = /^>{7}( |$)/m;
33
+ const ehTitulo = (l) => /^#{1,6} /.test(l);
34
+ const ehSecao = (l) => /^## /.test(l);
35
+ const ehGrupo = (l) => /^### /.test(l);
36
+ const ehItem = (l) => /^[-*] /.test(l);
37
+ const emBranco = (l) => l.trim() === '';
38
+ const recuada = (l) => /^\s+\S/.test(l);
39
+ const chaveDe = (linhas) => linhas.map((l) => l.trimEnd()).join('\n');
40
+ /** As linhas do texto, sem o `\r` do Windows. */
41
+ function linhasDe(texto) {
42
+ return texto.replace(/\r\n/g, '\n').split('\n');
43
+ }
44
+ /**
45
+ * Os itens de lista de primeiro nivel do CHANGELOG, com a secao e o grupo de cada um. O item vai da linha `- ` ate a
46
+ * proxima linha que nao e continuacao dele: continuacao e a linha recuada, e a linha em branco so continua o item
47
+ * quando a seguinte nao vazia e recuada.
48
+ */
49
+ function itensDe(linhas) {
50
+ const itens = [];
51
+ let secao = null, grupo = null;
52
+ for (let i = 0; i < linhas.length; i++) {
53
+ const l = linhas[i];
54
+ if (ehSecao(l)) {
55
+ secao = l.trim();
56
+ grupo = null;
57
+ continue;
58
+ }
59
+ if (ehGrupo(l)) {
60
+ grupo = l.replace(/^###\s+/, '').trim();
61
+ continue;
62
+ }
63
+ if (ehTitulo(l) || !ehItem(l))
64
+ continue;
65
+ let fim = i + 1;
66
+ while (fim < linhas.length) {
67
+ const c = linhas[fim];
68
+ if (recuada(c)) {
69
+ fim++;
70
+ continue;
71
+ }
72
+ if (emBranco(c)) {
73
+ let k = fim;
74
+ while (k < linhas.length && emBranco(linhas[k]))
75
+ k++;
76
+ if (k < linhas.length && recuada(linhas[k])) {
77
+ fim = k;
78
+ continue;
79
+ }
80
+ }
81
+ break;
82
+ }
83
+ itens.push({ secao, grupo, inicio: i, fim, chave: chaveDe(linhas.slice(i, fim)) });
84
+ i = fim - 1;
85
+ }
86
+ return itens;
87
+ }
88
+ /** As linhas [inicio, fim) da secao `## Não publicado`, sem o titulo; `null` sem ela. */
89
+ function faixaDaSecao(linhas) {
90
+ const titulo = linhas.findIndex((l) => l.trim() === exports.SECAO_NAO_PUBLICADA);
91
+ if (titulo < 0)
92
+ return null;
93
+ let fim = titulo + 1;
94
+ while (fim < linhas.length && !ehSecao(linhas[fim]))
95
+ fim++;
96
+ return { titulo, inicio: titulo + 1, fim };
97
+ }
98
+ /** Junta as linhas em branco seguidas numa so (MD012), fora dos blocos de codigo cercados, que ficam como estao. */
99
+ function semBrancosRepetidos(linhas) {
100
+ const saida = [];
101
+ let cerca = null;
102
+ for (const l of linhas) {
103
+ const marca = /^\s*(`{3,}|~{3,})/.exec(l)?.[1] ?? null;
104
+ if (marca && (cerca === null || marca[0] === cerca[0]))
105
+ cerca = cerca === null ? marca : null;
106
+ if (cerca === null && !marca && emBranco(l) && saida.length > 0 && emBranco(saida[saida.length - 1]))
107
+ continue;
108
+ saida.push(cerca === null && emBranco(l) ? '' : l);
109
+ }
110
+ return saida;
111
+ }
112
+ /** Quantas vezes cada linha nao vazia aparece (sem o espaco do fim). */
113
+ function contagem(linhas) {
114
+ const m = new Map();
115
+ for (const l of linhas) {
116
+ const k = l.trimEnd();
117
+ if (k.trim())
118
+ m.set(k, (m.get(k) ?? 0) + 1);
119
+ }
120
+ return m;
121
+ }
122
+ /** As linhas que a thread acrescentou (do lado dela, alem das da base) e que o resultado nao tem tantas vezes. */
123
+ function linhasPerdidas(base, nosso, resultado) {
124
+ const daBase = contagem(base), doResultado = contagem(resultado);
125
+ const perdidas = [];
126
+ for (const [linha, vezes] of contagem(nosso)) {
127
+ const acrescentadas = vezes - (daBase.get(linha) ?? 0);
128
+ if (acrescentadas > 0 && (doResultado.get(linha) ?? 0) < acrescentadas)
129
+ perdidas.push(linha);
130
+ }
131
+ return perdidas;
132
+ }
133
+ /** Tira os grupos `### ...` que ficaram sem item nenhum por causa da remocao (os que ja eram vazios ficam). */
134
+ function semGruposEsvaziados(linhas, esvaziados) {
135
+ const tirar = new Set();
136
+ for (const g of esvaziados) {
137
+ let k = g + 1;
138
+ while (k < linhas.length && emBranco(linhas[k]))
139
+ k++;
140
+ if (k >= linhas.length || ehTitulo(linhas[k]))
141
+ tirar.add(g);
142
+ }
143
+ return linhas.filter((_, i) => !tirar.has(i));
144
+ }
145
+ /** O indice do titulo do grupo dentro da faixa, ou -1. */
146
+ function grupoNaFaixa(linhas, faixa, grupo) {
147
+ for (let i = faixa.inicio; i < faixa.fim; i++) {
148
+ if (ehGrupo(linhas[i]) && linhas[i].replace(/^###\s+/, '').trim() === grupo)
149
+ return i;
150
+ }
151
+ return -1;
152
+ }
153
+ /** Onde o item entra no grupo: depois da ultima linha nao vazia antes do proximo titulo. */
154
+ function fimDoGrupo(linhas, titulo, limite) {
155
+ let fim = titulo + 1;
156
+ while (fim < limite && !ehTitulo(linhas[fim]))
157
+ fim++;
158
+ while (fim > titulo + 1 && emBranco(linhas[fim - 1]))
159
+ fim--;
160
+ return fim;
161
+ }
162
+ /** Garante a secao `## Não publicado` antes da primeira versao e devolve as linhas com ela. */
163
+ function comSecao(linhas) {
164
+ if (faixaDaSecao(linhas))
165
+ return linhas;
166
+ const primeira = linhas.findIndex((l) => ehSecao(l));
167
+ const em = primeira < 0 ? linhas.length : primeira;
168
+ return [...linhas.slice(0, em), exports.SECAO_NAO_PUBLICADA, '', ...linhas.slice(em)];
169
+ }
170
+ /** Insere o item no grupo dele em `## Não publicado`, criando o grupo na ordem do CHANGELOG quando falta. */
171
+ function inserirNoGrupo(linhas, grupo, item) {
172
+ const faixa = faixaDaSecao(linhas);
173
+ if (grupo === null) {
174
+ // Item solto na secao (sem `###`): entra antes do primeiro grupo, depois dos soltos que ja estao la.
175
+ let em = faixa.inicio;
176
+ while (em < faixa.fim && !ehGrupo(linhas[em]))
177
+ em++;
178
+ while (em > faixa.inicio && emBranco(linhas[em - 1]))
179
+ em--;
180
+ return [...linhas.slice(0, em), ...(em === faixa.inicio ? [''] : []), ...item, '', ...linhas.slice(em)];
181
+ }
182
+ const titulo = grupoNaFaixa(linhas, faixa, grupo);
183
+ if (titulo >= 0) {
184
+ const em = fimDoGrupo(linhas, titulo, faixa.fim);
185
+ const vazio = em === titulo + 1;
186
+ return [...linhas.slice(0, em), ...(vazio ? [''] : []), ...item, ...linhas.slice(em)];
187
+ }
188
+ // O grupo ainda nao existe na secao: entra antes do primeiro grupo que vem depois dele na ordem conhecida.
189
+ const ordem = (g) => { const i = ORDEM_DOS_GRUPOS.indexOf(g); return i < 0 ? ORDEM_DOS_GRUPOS.length : i; };
190
+ let em = faixa.fim;
191
+ for (let i = faixa.inicio; i < faixa.fim; i++) {
192
+ if (ehGrupo(linhas[i]) && ordem(linhas[i].replace(/^###\s+/, '').trim()) > ordem(grupo)) {
193
+ em = i;
194
+ break;
195
+ }
196
+ }
197
+ return [...linhas.slice(0, em), '', `### ${grupo}`, '', ...item, '', ...linhas.slice(em)];
198
+ }
199
+ /** O texto tem as duas pontas de um conflito do git? */
200
+ function temMarcadorDeConflito(texto) {
201
+ return INICIO_DO_CONFLITO.test(texto) && FIM_DO_CONFLITO.test(texto);
202
+ }
203
+ /**
204
+ * Reconcilia o CHANGELOG depois do merge da base na branch da thread. Os itens da thread em `## Não publicado`
205
+ * voltam para la, no mesmo grupo; o que a thread tirou de la sai de la; o resto e o da `main` ou o do merge.
206
+ */
207
+ function reconciliarChangelog(e) {
208
+ const base = linhasDe(e.base), nosso = linhasDe(e.nosso), deles = linhasDe(e.deles);
209
+ const daBase = itensDe(base), dosNossos = itensDe(nosso), dosDeles = itensDe(deles);
210
+ const chavesDaBase = new Set(daBase.map((i) => i.chave));
211
+ const chavesDosDeles = new Set(dosDeles.map((i) => i.chave));
212
+ // Os itens da thread: em `## Não publicado` do lado dela, e em nenhum lugar da base comum nem da `main`.
213
+ const vistos = new Set();
214
+ const daThread = dosNossos.filter((i) => i.secao === exports.SECAO_NAO_PUBLICADA && !chavesDaBase.has(i.chave) &&
215
+ !chavesDosDeles.has(i.chave) && !vistos.has(i.chave) && (vistos.add(i.chave), true));
216
+ // O que a thread tirou de `## Não publicado`: estava la na base comum e nao esta mais em lugar nenhum do lado dela.
217
+ const chavesDosNossos = new Set(dosNossos.map((i) => i.chave));
218
+ const tiradas = new Set(daBase.filter((i) => i.secao === exports.SECAO_NAO_PUBLICADA && !chavesDosNossos.has(i.chave)).map((i) => i.chave));
219
+ const textoInicial = e.mesclado && !temMarcadorDeConflito(e.mesclado) ? e.mesclado : e.deles;
220
+ const crlf = textoInicial.includes('\r\n');
221
+ const fimDeLinha = textoInicial.endsWith('\n');
222
+ let linhas = linhasDe(textoInicial);
223
+ if (fimDeLinha)
224
+ linhas.pop();
225
+ const original = chaveDe(linhas);
226
+ // A thread que nao acrescentou nem tirou item de "Não publicado" nao muda nada: o arquivo fica como o merge (ou a main)
227
+ // o deixou, sem normalizar o que nao e dela.
228
+ if (!daThread.length && !tiradas.size) {
229
+ return { texto: textoInicial, perdidas: linhasPerdidas(base, nosso, linhas), itens: [], devolvidos: 0, mudou: false };
230
+ }
231
+ // 1. Tira os itens da thread de onde o merge os pos, e os tirados pela thread de `## Não publicado`. O item da thread
232
+ // que o merge deixou em `## Não publicado`, no grupo dele, fica onde esta (a primeira vez); as outras copias saem.
233
+ const grupoDaThread = new Map(daThread.map((i) => [i.chave, i.grupo]));
234
+ const noLugar = new Set();
235
+ const remover = itensDe(linhas).filter((i) => {
236
+ if (i.secao === exports.SECAO_NAO_PUBLICADA && tiradas.has(i.chave))
237
+ return true;
238
+ if (!grupoDaThread.has(i.chave))
239
+ return false;
240
+ if (i.secao === exports.SECAO_NAO_PUBLICADA && i.grupo === grupoDaThread.get(i.chave) && !noLugar.has(i.chave)) {
241
+ noLugar.add(i.chave);
242
+ return false;
243
+ }
244
+ return true;
245
+ });
246
+ const gruposTocados = new Set();
247
+ for (const i of remover) {
248
+ for (let g = i.inicio - 1; g >= 0; g--) {
249
+ if (ehGrupo(linhas[g])) {
250
+ gruposTocados.add(g);
251
+ break;
252
+ }
253
+ if (ehSecao(linhas[g]))
254
+ break;
255
+ }
256
+ }
257
+ const linhasRemovidas = new Set();
258
+ for (const i of remover)
259
+ for (let k = i.inicio; k < i.fim; k++)
260
+ linhasRemovidas.add(k);
261
+ // Os titulos de grupo que ficaram vazios saem, com o indice ajustado pela remocao.
262
+ const novoIndice = new Map();
263
+ let n = 0;
264
+ const filtradas = [];
265
+ for (let k = 0; k < linhas.length; k++) {
266
+ if (linhasRemovidas.has(k))
267
+ continue;
268
+ novoIndice.set(k, n++);
269
+ filtradas.push(linhas[k]);
270
+ }
271
+ linhas = semGruposEsvaziados(filtradas, new Set([...gruposTocados].map((g) => novoIndice.get(g)).filter((g) => g !== undefined)));
272
+ // 2. Os itens da thread que nao ficaram no lugar entram em `## Não publicado`, no grupo de cada um, na ordem da thread.
273
+ const aDevolver = daThread.filter((i) => !noLugar.has(i.chave));
274
+ if (aDevolver.length)
275
+ linhas = comSecao(linhas);
276
+ for (const i of aDevolver)
277
+ linhas = inserirNoGrupo(linhas, i.grupo, nosso.slice(i.inicio, i.fim).map((l) => l.trimEnd()));
278
+ linhas = semBrancosRepetidos(linhas);
279
+ while (linhas.length && emBranco(linhas[linhas.length - 1]))
280
+ linhas.pop();
281
+ const quebra = crlf ? '\r\n' : '\n';
282
+ const texto = linhas.join(quebra) + (fimDeLinha ? quebra : '');
283
+ return {
284
+ texto,
285
+ perdidas: linhasPerdidas(base, nosso, linhas),
286
+ itens: daThread.map((i) => ({ grupo: i.grupo, titulo: nosso[i.inicio].trim().slice(0, 200) })),
287
+ devolvidos: aDevolver.length,
288
+ mudou: chaveDe(linhas) !== original,
289
+ };
290
+ }