@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
@@ -78,6 +78,8 @@ const docs_1 = require("./docs");
78
78
  const fabrica_estado_1 = require("./fabrica-estado");
79
79
  Object.defineProperty(exports, "LIMIAR_SEM_BATIDA_MS", { enumerable: true, get: function () { return fabrica_estado_1.LIMIAR_SEM_BATIDA_MS; } });
80
80
  const forja_1 = require("./forja");
81
+ const endereco_1 = require("./forja/endereco");
82
+ const resolver_1 = require("./forja/resolver");
81
83
  const horario_1 = require("./horario");
82
84
  const estado_thread_1 = require("./estado-thread");
83
85
  const manifest_1 = require("./manifest");
@@ -93,6 +95,7 @@ const vida_da_thread_1 = require("./vida-da-thread");
93
95
  const thread_1 = require("./thread");
94
96
  const versao_1 = require("./versao");
95
97
  const yaml_1 = require("./yaml");
98
+ const locale_1 = require("./locale");
96
99
  exports.CONTRATO_PANORAMA_DA_REDE = 'ork.network-roadmap/v1';
97
100
  /** O registro de projetos da RM-052, lido como ela o grava. */
98
101
  exports.CONTRATO_REGISTRO_DE_PROJETOS = 'ork.projetos/v1';
@@ -116,8 +119,10 @@ class ErroDoPedidoDeProjeto extends Error {
116
119
  return { erro: this.codigo, detalhe: this.detalhe, candidatos: this.candidatos, correcao: this.correcao };
117
120
  }
118
121
  get texto() {
119
- return [`${this.codigo}: ${this.detalhe}`, ...(this.candidatos.length ? ['Candidatos:', ...this.candidatos.map((c) => ` • ${c}`)] : []),
120
- this.correcao].join('\n');
122
+ const m = (0, locale_1.msg)().network.roadmap;
123
+ return [`${this.codigo}: ${m.recusaDetalhe(this.codigo, this.detalhe)}`,
124
+ ...(this.candidatos.length ? [m.candidatos, ...this.candidatos.map((c) => ` • ${c}`)] : []),
125
+ m.recusaCorrecao(this.codigo, this.correcao)].join('\n');
121
126
  }
122
127
  }
123
128
  exports.ErroDoPedidoDeProjeto = ErroDoPedidoDeProjeto;
@@ -138,9 +143,23 @@ const baseValida = (base) => typeof base === 'string' && /^[A-Za-z0-9][A-Za-z0-9
138
143
  function projetoDoClone(c, origem) {
139
144
  const remoto = c.manifesto.fabrica.remoto;
140
145
  const url = (0, branch_de_estado_1.remotoValido)(remoto) ? (0, branch_de_estado_1.git)(c.raiz, ['remote', 'get-url', '--', remoto]) : null;
141
- return { nome: c.manifesto.project.name, forja: url?.ok ? (0, forja_1.identidadeDaForja)(url.stdout.trim()) : null, raiz: c.raiz,
146
+ return { nome: c.manifesto.project.name, forja: url?.ok ? forjaDoClone(c, url.stdout.trim()) : null, raiz: c.raiz,
142
147
  base: c.manifesto.worktree.base_branch, remoto, origem };
143
148
  }
149
+ /**
150
+ * A forja do clone, com o manifesto: o bloco `forja:` e o host conhecido decidem, sem rede (como o pulse). So quando
151
+ * nenhum dos dois diz o tipo (`forja.desconhecida`) vale o nome do host, como para os remotos sem clone; o manifesto
152
+ * que contradiz o remoto deixa o projeto sem forja, e a leitura cai no clone.
153
+ */
154
+ function forjaDoClone(c, url) {
155
+ const endereco = (0, endereco_1.lerEnderecoDoRemoto)(url);
156
+ if (!endereco)
157
+ return null;
158
+ const r = (0, resolver_1.resolverForja)({ endereco, manifesto: c.manifesto.forja, sondas: {} });
159
+ if (r.ok)
160
+ return (0, forja_1.identidadeDaForjaResolvida)(r.valor);
161
+ return r.erro.codigo === 'forja.desconhecida' ? (0, forja_1.identidadeDaForja)(url) : null;
162
+ }
144
163
  function mesmoProjeto(a, b) {
145
164
  if ((0, forja_1.mesmaForja)(a.forja, b.forja))
146
165
  return true;
@@ -683,10 +702,20 @@ function lerProjetoDoClone(p, geral) {
683
702
  const CORRECAO_DA_FORJA = {
684
703
  'forja.ausente': (cli) => `instale ${cli} e faça login (${cli} auth login); gateway e cron têm PATH curto`,
685
704
  'forja.sem-login': (cli) => `rode ${cli} auth login nesta máquina; o ork nunca lê nem copia token`,
686
- 'forja.nao-encontrado': () => 'confira o nome (github:dono/repo) e se o login da forja enxerga o repositório',
687
- 'forja.tempo-esgotado': () => 'tente de novo: a forja não respondeu a tempo',
688
- 'forja.inacessivel': () => 'confira a rede e o status da forja',
689
705
  'forja.resposta-invalida': () => 'a forja respondeu fora do formato esperado: registre o caso no RM-054',
706
+ 'forja.sem-permissao': () => 'o login da forja não tem permissão para isso: confira o escopo do token',
707
+ 'forja.nao-achei': () => 'confira o nome (github:dono/repo ou gitlab:grupo/sub/repo) e se o login da forja enxerga o repositório; ' +
708
+ 'no GitLab, projeto privado sem acesso também responde assim',
709
+ 'forja.limite': () => 'a forja limitou as chamadas: tente de novo mais tarde',
710
+ 'forja.conflito': () => 'a forja recusou por conflito: atualize e tente de novo',
711
+ 'forja.indisponivel': () => 'tente de novo e confira a rede e o status da forja',
712
+ 'forja.pedido-recusado': () => 'a forja recusou o pedido: confira os dados enviados',
713
+ 'forja.incompleto': () => 'a forja devolveu uma lista incompleta: tente de novo',
714
+ 'forja.desconhecida': () => 'o ork não reconheceu a forja: declare o bloco forja: no manifesto',
715
+ 'forja.ambigua': () => 'a forja é ambígua: declare o bloco forja: no manifesto',
716
+ 'forja.remoto-divergente': () => 'o remoto do clone não bate com a forja declarada: confira o manifesto',
717
+ 'forja.sem-capacidade': () => 'esta forja não oferece o recurso necessário',
718
+ 'forja.versao-abaixo-do-piso': () => 'o servidor da forja está abaixo do GitLab 17.0, o piso do ork',
690
719
  };
691
720
  function lerProjetoDaForja(p, geral) {
692
721
  const forja = p.forja, rotulo = (0, forja_1.rotuloDaForja)(forja), cli = forja.tipo === 'github' ? 'gh' : 'glab';
@@ -699,9 +728,10 @@ function lerProjetoDaForja(p, geral) {
699
728
  return semLeitura();
700
729
  }
701
730
  const desde = inicioDoDia(geral.quando, geral.fuso);
731
+ const api = forja.tipo === 'gitlab' && geral.rodarDaForja ? (0, forja_1.apiDoGitlab)(forja, { rodar: geral.rodarDaForja }) : undefined;
702
732
  const ler = (base) => (0, forja_1.lerDaForja)(forja, { base, desde, dirRoadmap: docs_1.DIR_ROADMAP, manifesto: manifest_1.NOME_MANIFESTO,
703
733
  reservas: { branch: roadmap_reservas_1.BRANCH_DE_RESERVAS, dir: roadmap_reservas_1.DIR_DE_RESERVAS }, fabrica: { branch: fabrica_estado_1.BRANCH_DA_FABRICA, dir: fabrica_estado_1.DIR_DA_FABRICA },
704
- lidoEm: geral.quando }, geral.executor);
734
+ lidoEm: geral.quando }, geral.executor, api);
705
735
  let baseUsada = p.base;
706
736
  let r = ler(p.base);
707
737
  // Sem clone, a base e a do manifesto lido: se ele aponta outra branch, a leitura e refeita por ela.
@@ -725,7 +755,7 @@ function lerProjetoDaForja(p, geral) {
725
755
  let commits = l.base?.commits ?? [], commitsParciais = l.base?.commitsParciais ?? false;
726
756
  const inicioNoProjeto = inicioDoDia(ctx.quando, ctx.fuso);
727
757
  if (l.base && Date.parse(inicioNoProjeto) < Date.parse(desde)) {
728
- const h = (0, forja_1.lerCommitsDaForja)(forja, { commit: l.base.commit, desde: inicioNoProjeto }, geral.executor);
758
+ const h = (0, forja_1.lerCommitsDaForja)(forja, { commit: l.base.commit, desde: inicioNoProjeto }, geral.executor, api);
729
759
  if (h.ok) {
730
760
  commits = h.commits;
731
761
  commitsParciais = h.parciais;
@@ -931,6 +961,7 @@ function montarPanoramaDaRede(opcoes = {}) {
931
961
  const quando = opcoes.quando ?? new Date().toISOString();
932
962
  const cwd = opcoes.cwd ?? process.cwd();
933
963
  const ctx = { quando, maquina: (0, maquina_1.nomeDaMaquina)(opcoes.maquina), semRemoto: opcoes.semRemoto === true, executor: opcoes.executor,
964
+ rodarDaForja: opcoes.rodarDaForja,
934
965
  fuso: (0, horario_1.fusoDoDono)().fuso };
935
966
  const naoConsultado = [];
936
967
  const lacunas = [];
@@ -1000,86 +1031,91 @@ function descreverProjeto(x) {
1000
1031
  return `${x.nome} (${[x.forja, x.clone ? `clone em ${x.clone}` : 'sem clone nesta máquina'].filter(Boolean).join(', ')})`;
1001
1032
  }
1002
1033
  function linhaDaFonte(f, quando, fuso) {
1003
- const parte = { roadmap: 'roadmap', reservas: 'reservas', fabrica: 'fábrica', 'estado-local': 'esta máquina' }[f.parte];
1004
- const lido = f.lidoEm === quando ? 'lido agora' : `lido ${(0, horario_1.formatarDataHora)(f.lidoEm, { fuso })}`;
1034
+ const m = (0, locale_1.msg)().network.roadmap;
1035
+ const parte = m.fonteParte(f.parte);
1036
+ const lido = f.lidoEm === quando ? m.lidoAgora : m.lidoEm((0, horario_1.formatarDataHora)(f.lidoEm, { fuso }));
1005
1037
  if (f.origem === 'estado-local')
1006
- return `• ${parte}: estado local em ${f.onde}, ${lido}`;
1038
+ return m.fonteLocal(parte, f.onde, lido);
1007
1039
  if (!f.existe)
1008
- return `• ${parte}: ${f.onde} não existe, ${lido}`;
1009
- const alvo = f.parte === 'roadmap' ? `${docs_1.DIR_ROADMAP} em ${f.onde}` : f.onde;
1010
- return `• ${parte}: ${alvo} @ ${(f.commit ?? '').slice(0, 7)} (commit de ${(0, horario_1.formatarDataHora)(f.dataDoCommit, { fuso })}), ` +
1011
- (f.atualizado ? lido : 'última cópia desta máquina, sem leitura nova');
1040
+ return m.fonteInexistente(parte, f.onde, lido);
1041
+ const alvo = f.parte === 'roadmap' ? m.alvoDoRoadmap(f.onde) : f.onde;
1042
+ return m.fonteCommit(parte, alvo, (f.commit ?? '').slice(0, 7), (0, horario_1.formatarDataHora)(f.dataDoCommit, { fuso }), f.atualizado ? lido : m.ultimaCopia);
1012
1043
  }
1013
1044
  function linhasDasMaquinas(x, fuso) {
1045
+ const m = (0, locale_1.msg)().network.roadmap;
1014
1046
  if (x.maquinas === null)
1015
- return ['• não lidas: veja as lacunas'];
1047
+ return [m.maquinasNaoLidas];
1016
1048
  if (x.maquinas.length === 0)
1017
- return ['• nenhuma máquina publicou em ork/fabrica-estado'];
1049
+ return [m.nenhumaMaquinaNaFabrica];
1018
1050
  return x.maquinas.flatMap((m) => {
1019
- const quem = `${m.maquina}${m.estaMaquina ? ' (esta máquina)' : ''}`;
1051
+ const quem = `${m.maquina}${m.estaMaquina ? (0, locale_1.msg)().network.roadmap.estaMaquina : ''}`;
1020
1052
  // Fatia 3: a maquina so da rede por pessoa; as threads dela neste projeto nao foram lidas.
1021
1053
  if (m.origem === 'rede') {
1022
- return [`• ${quem}: threads não lidas, na rede por pessoa (retrato de ${(0, horario_1.formatarDataHora)(m.publicadoEm, { fuso })}, ` +
1023
- `há ${(0, horario_1.duracaoCurta)(m.idadeMin)}${m.semBatida ? ', SEM BATIDA' : ''}) e sem retrato em ${fabrica_estado_1.BRANCH_DA_FABRICA}`];
1054
+ return [(0, locale_1.msg)().network.roadmap.maquinaSoNaRede(quem, (0, horario_1.formatarDataHora)(m.publicadoEm, { fuso }), (0, horario_1.duracaoCurta)(m.idadeMin), m.semBatida, fabrica_estado_1.BRANCH_DA_FABRICA)];
1024
1055
  }
1025
- const batida = m.origem === 'estado-local' ? 'estado local lido agora'
1026
- : `retrato de ${(0, horario_1.formatarDataHora)(m.publicadoEm, { fuso })} (há ${(0, horario_1.duracaoCurta)(m.idadeMin)})${m.semBatida ? ', SEM BATIDA' : ''}`;
1027
- const cabeca = `• ${quem}: ${m.ativas.length} ativa(s)${m.entreguesSemMaster ? `, ${m.entreguesSemMaster} entregue(s) sem MASTER` : ''}, ${batida}`;
1056
+ const rm = (0, locale_1.msg)().network.roadmap;
1057
+ const batida = m.origem === 'estado-local' ? rm.estadoLocalAgora
1058
+ : rm.retrato((0, horario_1.formatarDataHora)(m.publicadoEm, { fuso }), (0, horario_1.duracaoCurta)(m.idadeMin), m.semBatida);
1059
+ const cabeca = rm.resumoMaquina(quem, m.ativas.length, m.entreguesSemMaster, batida);
1028
1060
  // RM-037 (rm037noite, defeito 4): o runtime e o modelo de cada thread, quando o retrato os traz.
1029
- return [cabeca, ...m.ativas.map((t) => ` ${t.id} · ${t.modo} · ${t.fase} · ${t.roadmap ?? 'sem item'}` +
1061
+ return [cabeca, ...m.ativas.map((t) => ` ${t.id} · ${t.modo} · ${t.fase} · ${t.roadmap ?? rm.semItem}` +
1030
1062
  (t.runtime || t.modelo ? ` · ${(0, fabrica_estado_1.runtimeDaThread)(t)}` : '') +
1031
- (t.esperaVoce ? ` · espera você: ${t.pergunta ?? 'veredito'}` : ''))];
1063
+ (t.esperaVoce ? rm.esperaVoce(t.pergunta ?? rm.veredito) : ''))];
1032
1064
  });
1033
1065
  }
1034
1066
  function linhasDasReservas(x, fuso) {
1067
+ const m = (0, locale_1.msg)().network.roadmap;
1035
1068
  if (x.reservas === null)
1036
- return ['• não lidas: veja as lacunas'];
1069
+ return [m.reservasNaoLidas];
1037
1070
  if (x.reservas.length === 0)
1038
- return ['• nenhuma reserva em ork/roadmap-reservas'];
1039
- return x.reservas.map((r) => ` ${r.item} · ${r.maquina} · ${r.thread ?? 'sem thread'} · desde ${(0, horario_1.formatarDataHora)(r.desdeEm, { fuso })}`);
1071
+ return [m.nenhumaReserva];
1072
+ return x.reservas.map((r) => m.reserva(r.item, r.maquina, r.thread ?? m.semThread, (0, horario_1.formatarDataHora)(r.desdeEm, { fuso })));
1040
1073
  }
1041
1074
  /** Fatia 3: a casa da rede por pessoa e as maquinas dela, com a batida e os projetos que declaram. */
1042
1075
  function linhasDaRede(r, quando, fuso) {
1043
- const lido = r.lidoEm === quando ? 'lida agora' : `lida ${(0, horario_1.formatarDataHora)(r.lidoEm, { fuso })}`;
1044
- const casa = !r.casa ? '• casa: nenhuma achada (veja as lacunas)'
1045
- : r.atualizado === null ? `• casa: ${r.casa}, não lida (veja as lacunas)`
1046
- : `• casa: ${r.casa} @ ${r.ponta ? r.ponta.slice(0, 7) : 'sem commit'}, ${r.atualizado ? lido : 'última cópia desta máquina, sem leitura nova'}`;
1076
+ const x = (0, locale_1.msg)().network.roadmap;
1077
+ const lido = r.lidoEm === quando ? x.redeLidaAgora : x.redeLidaEm((0, horario_1.formatarDataHora)(r.lidoEm, { fuso }));
1078
+ const casa = !r.casa ? x.casaAusente
1079
+ : r.atualizado === null ? x.casaNaoLida(r.casa)
1080
+ : x.casaLida(r.casa, r.ponta ? r.ponta.slice(0, 7) : x.semCommit, r.atualizado ? lido : x.casaUltimaCopia);
1047
1081
  if (r.membros.length === 0)
1048
- return [casa, '• nenhum retrato lido na casa; isso não quer dizer que não há máquinas: veja as lacunas'];
1049
- return [casa, ...r.membros.map((m) => `• ${m.maquina}${m.estaMaquina ? ' (esta máquina)' : ''}: retrato de ` +
1050
- `${(0, horario_1.formatarDataHora)(m.publicadoEm, { fuso })}${m.idadeMin === null ? ' (batida ilegível)' : ` (há ${(0, horario_1.duracaoCurta)(m.idadeMin)})`}` +
1051
- `${m.semBatida ? ', SEM BATIDA' : ''}${m.versaoOrk ? `, ork ${m.versaoOrk}` : ''}, ` +
1052
- (m.projetos.length ? `projetos: ${m.projetos.join(', ')}` : 'nenhum projeto declarado aqui'))];
1082
+ return [casa, x.nenhumRetrato];
1083
+ return [casa, ...r.membros.map((m) => x.membro(m.maquina, m.estaMaquina ? x.estaMaquina : '', (0, horario_1.formatarDataHora)(m.publicadoEm, { fuso }), m.idadeMin === null ? x.batidaIlegivel : x.idade((0, horario_1.duracaoCurta)(m.idadeMin)), m.semBatida, m.versaoOrk ? x.versao(m.versaoOrk) : '', m.projetos.length ? x.projetos(m.projetos.join(', ')) : x.nenhumProjeto))];
1053
1084
  }
1054
- const linhaDaLacuna = (l) => `• ${l.tipo}${l.alvo ? ` (${l.alvo})` : ''}: ${l.detalhe}. O que fazer: ${l.correcao}.`;
1085
+ const linhaDaLacuna = (l) => {
1086
+ const m = (0, locale_1.msg)().network.roadmap;
1087
+ return m.lacuna(l.tipo, l.alvo ? ` (${l.alvo})` : '', m.lacunaDetalhe(l.tipo, l.parte, l.alvo, l.detalhe), m.lacunaCorrecao(l.tipo, l.correcao));
1088
+ };
1055
1089
  /** O texto de `ork network roadmap`: o consultado e o nao consultado no alto, e cada parte com a fonte e a hora. */
1056
1090
  function textoDoPanoramaDaRede(p) {
1091
+ const m = (0, locale_1.msg)().network.roadmap;
1057
1092
  if (p.contrato !== exports.CONTRATO_PANORAMA_DA_REDE)
1058
- throw new Error('panorama da rede: contrato inválido');
1093
+ throw new Error(m.contratoInvalido);
1059
1094
  const h = (0, horario_1.partesLocais)(p.consultadoEm, p.fuso);
1060
1095
  const linhas = [
1061
1096
  `Panorama da rede lido de ${p.maquina} (${h.dia}/${h.mes}, ${h.hora}:${h.minuto})`,
1062
1097
  p.projetos.length ? `Consultado: ${p.projetos.map((x) => descreverProjeto(x.projeto)).join('; ')}` : 'Consultado: nenhum projeto.',
1063
- 'Não consultado:', ...(p.naoConsultado.length ? p.naoConsultado.map((n) => `• ${n}`) : ['• nada fora do pedido']),
1098
+ 'Não consultado:', ...(p.naoConsultado.length ? p.naoConsultado.map(m.naoConsultado) : [m.nadaForaDoPedido]),
1064
1099
  ];
1065
1100
  if (p.rede)
1066
- linhas.push('', 'Rede por pessoa (RM-053)', ...linhasDaRede(p.rede, p.consultadoEm, p.fuso));
1101
+ linhas.push('', m.redePorPessoa, ...linhasDaRede(p.rede, p.consultadoEm, p.fuso));
1067
1102
  if (p.lacunas.length)
1068
- linhas.push('', 'Lacunas da consulta', ...p.lacunas.map(linhaDaLacuna));
1103
+ linhas.push('', m.lacunasDaConsulta, ...p.lacunas.map(linhaDaLacuna));
1069
1104
  for (const x of p.projetos) {
1070
1105
  // Cada projeto no fuso do dono dele (achado 5 da rodada 2): a legenda do bloco diz quando difere.
1071
1106
  const fuso = x.projeto.fuso;
1072
1107
  linhas.push('', '────────', '');
1073
1108
  // Fatia 2 do ensaio (P7): o fuso ja sai no fim do panorama (e no bloco, quando difere): sem a legenda do status.
1074
1109
  linhas.push(x.roadmap ? (0, roadmap_status_1.textoDoStatusDoRoadmap)(x.roadmap, fuso, { legenda: false })
1075
- : `Roadmap do ${x.projeto.nome}: não lido (${x.lacunas.map((l) => l.tipo).filter((t) => t !== 'projeto.sem-clone').join(', ') || 'sem fonte'}).`);
1076
- linhas.push('', 'Threads por máquina', ...linhasDasMaquinas(x, fuso));
1077
- linhas.push('', 'Reservas', ...linhasDasReservas(x, fuso));
1078
- linhas.push('', 'Fontes', ...(x.fontes.length ? x.fontes.map((f) => linhaDaFonte(f, p.consultadoEm, fuso)) : ['• nenhuma fonte lida']));
1079
- linhas.push('', 'Lacunas', ...(x.lacunas.length ? x.lacunas.map(linhaDaLacuna) : ['• nenhuma: todas as fontes foram lidas agora']));
1110
+ : m.roadmapNaoLido(x.projeto.nome, x.lacunas.map((l) => l.tipo).filter((t) => t !== 'projeto.sem-clone').join(', ') || m.semFonte));
1111
+ linhas.push('', m.threadsPorMaquina, ...linhasDasMaquinas(x, fuso));
1112
+ linhas.push('', m.reservas, ...linhasDasReservas(x, fuso));
1113
+ linhas.push('', m.fontes, ...(x.fontes.length ? x.fontes.map((f) => linhaDaFonte(f, p.consultadoEm, fuso)) : [m.nenhumaFonte]));
1114
+ linhas.push('', m.lacunas, ...(x.lacunas.length ? x.lacunas.map(linhaDaLacuna) : [m.nenhumaLacuna]));
1115
+ // A legenda e a da hora da leitura, como os horarios do panorama: com a de agora, o horario de verao mudava o texto.
1080
1116
  if (fuso !== p.fuso)
1081
- linhas.push('', `Neste projeto: ${(0, horario_1.legendaDoFuso)(fuso)}`);
1117
+ linhas.push('', m.nesteProjeto((0, horario_1.legendaDoFuso)(fuso, p.consultadoEm)));
1082
1118
  }
1083
- linhas.push('', (0, horario_1.legendaDoFuso)(p.fuso));
1119
+ linhas.push('', (0, horario_1.legendaDoFuso)(p.fuso, p.consultadoEm));
1084
1120
  return linhas.join('\n');
1085
1121
  }