@orkastery/cli 0.5.3 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/adapters/README.md +18 -0
- package/adapters/claude-code/.claude-plugin/plugin.json +1 -0
- package/adapters/claude-code/README.md +195 -5
- package/adapters/claude-code/agents/ork-check.md +1 -0
- package/adapters/claude-code/agents/ork-go.md +1 -0
- package/adapters/claude-code/agents/ork-goal.md +1 -0
- package/adapters/claude-code/agents/ork-master.md +1 -0
- package/adapters/claude-code/agents/ork-plan.md +1 -0
- package/adapters/claude-code/agents/ork-ship.md +1 -0
- package/adapters/claude-code/hooks/hooks.json +2 -1
- package/adapters/claude-code/hooks/ork-guard.js +15 -1
- package/adapters/claude-code/hooks/ork-resposta.js +91 -0
- package/adapters/claude-code/hooks/ork-sensor.js +18 -2
- package/adapters/claude-code/hooks/quota-signal.js +14 -0
- package/adapters/claude-code/mods/autoridade.json +56 -0
- package/adapters/claude-code/mods/ork-clima/.claude-plugin/plugin.json +14 -0
- package/adapters/claude-code/mods/ork-clima/hooks/contas.ts +283 -0
- package/adapters/claude-code/mods/ork-clima/hooks/hooks.json +3 -0
- package/adapters/claude-code/mods/ork-clima/hooks/previsao.ts +393 -0
- package/adapters/claude-code/mods/ork-clima/hooks/register.ts +205 -0
- package/adapters/claude-code/mods/ork-clima/orkastery-mod.json +5 -0
- package/adapters/claude-code/mods/ork-clima/types/index.d.ts +80 -0
- package/adapters/claude-code/mods/ork-freio/.claude-plugin/plugin.json +14 -0
- package/adapters/claude-code/mods/ork-freio/hooks/carga.ts +160 -0
- package/adapters/claude-code/mods/ork-freio/hooks/conferencia.ts +309 -0
- package/adapters/claude-code/mods/ork-freio/hooks/hooks.json +3 -0
- package/adapters/claude-code/mods/ork-freio/hooks/lote.ts +270 -0
- package/adapters/claude-code/mods/ork-freio/hooks/register.ts +285 -0
- package/adapters/claude-code/mods/ork-freio/orkastery-mod.json +5 -0
- package/adapters/claude-code/mods/ork-freio/types/index.d.ts +127 -0
- package/adapters/claude-code/mods/ork-mensageiro/.claude-plugin/plugin.json +14 -0
- package/adapters/claude-code/mods/ork-mensageiro/hooks/caixa.ts +215 -0
- package/adapters/claude-code/mods/ork-mensageiro/hooks/hooks.json +3 -0
- package/adapters/claude-code/mods/ork-mensageiro/hooks/painel.tsx +165 -0
- package/adapters/claude-code/mods/ork-mensageiro/hooks/recepcao.ts +256 -0
- package/adapters/claude-code/mods/ork-mensageiro/hooks/register.tsx +481 -0
- package/adapters/claude-code/mods/ork-mensageiro/orkastery-mod.json +5 -0
- package/adapters/claude-code/mods/ork-mensageiro/types/index.d.ts +85 -0
- package/adapters/claude-code/mods/ork-mesa/.claude-plugin/plugin.json +14 -0
- package/adapters/claude-code/mods/ork-mesa/hooks/cartoes.tsx +246 -0
- package/adapters/claude-code/mods/ork-mesa/hooks/decidir.ts +110 -0
- package/adapters/claude-code/mods/ork-mesa/hooks/fila.ts +253 -0
- package/adapters/claude-code/mods/ork-mesa/hooks/hooks.json +3 -0
- package/adapters/claude-code/mods/ork-mesa/hooks/obvia.ts +98 -0
- package/adapters/claude-code/mods/ork-mesa/hooks/register.tsx +493 -0
- package/adapters/claude-code/mods/ork-mesa/orkastery-mod.json +5 -0
- package/adapters/claude-code/mods/ork-mesa/types/index.d.ts +131 -0
- package/adapters/claude-code/mods/ork-pista/.claude-plugin/plugin.json +14 -0
- package/adapters/claude-code/mods/ork-pista/hooks/acoes.ts +71 -0
- package/adapters/claude-code/mods/ork-pista/hooks/ci.ts +121 -0
- package/adapters/claude-code/mods/ork-pista/hooks/hooks.json +3 -0
- package/adapters/claude-code/mods/ork-pista/hooks/pista.tsx +356 -0
- package/adapters/claude-code/mods/ork-pista/hooks/register.tsx +439 -0
- package/adapters/claude-code/mods/ork-pista/orkastery-mod.json +5 -0
- package/adapters/claude-code/mods/ork-pista/types/index.d.ts +85 -0
- package/adapters/claude-code/mods/ork-ponte/.claude-plugin/plugin.json +13 -0
- package/adapters/claude-code/mods/ork-ponte/hooks/faixa.tsx +57 -0
- package/adapters/claude-code/mods/ork-ponte/hooks/guarda.ts +410 -0
- package/adapters/claude-code/mods/ork-ponte/hooks/hooks.json +3 -0
- package/adapters/claude-code/mods/ork-ponte/hooks/mostrado.ts +55 -0
- package/adapters/claude-code/mods/ork-ponte/hooks/nucleo.ts +157 -0
- package/adapters/claude-code/mods/ork-ponte/hooks/papel.ts +42 -0
- package/adapters/claude-code/mods/ork-ponte/hooks/register.ts +331 -0
- package/adapters/claude-code/mods/ork-ponte/hooks/vigia.ts +76 -0
- package/adapters/claude-code/mods/ork-ponte/orkastery-mod.json +5 -0
- package/adapters/claude-code/mods/ork-ponte/types/index.d.ts +178 -0
- package/adapters/claude-code/mods/ork-portao/.claude-plugin/plugin.json +14 -0
- package/adapters/claude-code/mods/ork-portao/hooks/hooks.json +3 -0
- package/adapters/claude-code/mods/ork-portao/hooks/lease.ts +201 -0
- package/adapters/claude-code/mods/ork-portao/hooks/plano.ts +304 -0
- package/adapters/claude-code/mods/ork-portao/hooks/register.ts +339 -0
- package/adapters/claude-code/mods/ork-portao/hooks/verify.ts +152 -0
- package/adapters/claude-code/mods/ork-portao/orkastery-mod.json +5 -0
- package/adapters/claude-code/mods/ork-portao/types/index.d.ts +60 -0
- package/adapters/claude-code/mods/ork-radar/.claude-plugin/plugin.json +14 -0
- package/adapters/claude-code/mods/ork-radar/hooks/colisao.ts +420 -0
- package/adapters/claude-code/mods/ork-radar/hooks/hooks.json +3 -0
- package/adapters/claude-code/mods/ork-radar/hooks/mapa.tsx +322 -0
- package/adapters/claude-code/mods/ork-radar/hooks/register.tsx +470 -0
- package/adapters/claude-code/mods/ork-radar/orkastery-mod.json +5 -0
- package/adapters/claude-code/mods/ork-radar/types/index.d.ts +72 -0
- package/adapters/claude-code/mods/ork-ritual/.claude-plugin/plugin.json +14 -0
- package/adapters/claude-code/mods/ork-ritual/hooks/hooks.json +3 -0
- package/adapters/claude-code/mods/ork-ritual/hooks/nota.ts +88 -0
- package/adapters/claude-code/mods/ork-ritual/hooks/register.tsx +494 -0
- package/adapters/claude-code/mods/ork-ritual/hooks/replay.tsx +271 -0
- package/adapters/claude-code/mods/ork-ritual/hooks/ritual.ts +218 -0
- package/adapters/claude-code/mods/ork-ritual/orkastery-mod.json +5 -0
- package/adapters/claude-code/mods/ork-ritual/types/index.d.ts +106 -0
- package/adapters/claude-code/mods/ork-sentinela/.claude-plugin/plugin.json +14 -0
- package/adapters/claude-code/mods/ork-sentinela/hooks/alertas.ts +85 -0
- package/adapters/claude-code/mods/ork-sentinela/hooks/despacho.ts +156 -0
- package/adapters/claude-code/mods/ork-sentinela/hooks/hooks.json +3 -0
- package/adapters/claude-code/mods/ork-sentinela/hooks/register.ts +511 -0
- package/adapters/claude-code/mods/ork-sentinela/hooks/vigia.ts +186 -0
- package/adapters/claude-code/mods/ork-sentinela/orkastery-mod.json +5 -0
- package/adapters/claude-code/mods/ork-sentinela/types/index.d.ts +65 -0
- package/adapters/claude-code/mods/ork-torre/.claude-plugin/plugin.json +14 -0
- package/adapters/claude-code/mods/ork-torre/hooks/agenda.ts +60 -0
- package/adapters/claude-code/mods/ork-torre/hooks/detalhe.tsx +236 -0
- package/adapters/claude-code/mods/ork-torre/hooks/frases.ts +42 -0
- package/adapters/claude-code/mods/ork-torre/hooks/hooks.json +3 -0
- package/adapters/claude-code/mods/ork-torre/hooks/painel.tsx +344 -0
- package/adapters/claude-code/mods/ork-torre/hooks/rede.ts +97 -0
- package/adapters/claude-code/mods/ork-torre/hooks/register.tsx +437 -0
- package/adapters/claude-code/mods/ork-torre/orkastery-mod.json +5 -0
- package/adapters/claude-code/mods/ork-torre/types/index.d.ts +108 -0
- package/adapters/codex/skills/ork/SKILL.md +2 -0
- package/adapters/hermes/README.md +64 -1
- package/adapters/hermes/bin/ork-conhecimento-colecoes.sh +14 -0
- package/adapters/hermes/bin/ork-conhecimento-listar.sh +15 -0
- package/adapters/hermes/bin/ork-conhecimento-mostrar.sh +16 -0
- package/adapters/hermes/bin/ork-conhecimento-verificar.sh +15 -0
- package/adapters/hermes/bin/ork-vigia-batida.py +127 -0
- package/adapters/hermes/hermes.plugin.json +4 -0
- package/adapters/hermes/hitl-ingress/__init__.py +101 -8
- package/adapters/hermes/skills/orkastery-devmaster/SKILL.md +3 -3
- package/adapters/openclaw/README.md +83 -10
- package/adapters/openclaw/bin/ork-vigia-batida.js +86 -0
- package/adapters/openclaw/dist/hitl-ingress.js +106 -9
- package/adapters/openclaw/dist/index.js +86 -0
- package/adapters/openclaw/openclaw.plugin.json +34 -4
- package/adapters/openclaw/package.json +2 -2
- package/adapters/openclaw/src/hitl-ingress.ts +103 -9
- package/adapters/openclaw/src/index.ts +94 -0
- package/assets/adapters-en/claude-code/README.md +403 -0
- package/assets/adapters-en/claude-code/agents/ork-check.md +33 -0
- package/assets/adapters-en/claude-code/agents/ork-go.md +33 -0
- package/assets/adapters-en/claude-code/agents/ork-goal.md +34 -0
- package/assets/adapters-en/claude-code/agents/ork-master.md +35 -0
- package/assets/adapters-en/claude-code/agents/ork-plan.md +33 -0
- package/assets/adapters-en/claude-code/agents/ork-ship.md +33 -0
- package/assets/adapters-en/claude-code/commands/check.md +46 -0
- package/assets/adapters-en/claude-code/commands/go.md +46 -0
- package/assets/adapters-en/claude-code/commands/goal.md +55 -0
- package/assets/adapters-en/claude-code/commands/master.md +54 -0
- package/assets/adapters-en/claude-code/commands/onboarding.md +22 -0
- package/assets/adapters-en/claude-code/commands/ork.md +126 -0
- package/assets/adapters-en/claude-code/commands/plan.md +47 -0
- package/assets/adapters-en/claude-code/commands/ship.md +45 -0
- package/assets/adapters-en/codex/skills/ork/SKILL.md +85 -0
- package/assets/adapters-en/hermes/README.md +273 -0
- package/assets/adapters-en/hermes/skills/orkastery-devmaster/SKILL.md +169 -0
- package/assets/docs-en/markdownlint-cli2.jsonc +22 -0
- package/assets/docs-en/padroes/documentacao-de-produto.md +135 -0
- package/assets/docs-en/padroes/roadmap-de-produto.md +100 -0
- package/assets/docs-en/produto/README.md +14 -0
- package/assets/docs-en/produto/_modelo-feature.md +62 -0
- package/assets/docs-en/roadmap/README.md +14 -0
- package/assets/docs-en/roadmap/_modelo-item.md +75 -0
- package/assets/references-en/README.md +25 -0
- package/assets/references-en/code-review-axes.md +82 -0
- package/assets/references-en/definition-of-done.md +74 -0
- package/assets/references-en/performance-checklist.md +53 -0
- package/assets/references-en/security-checklist.md +101 -0
- package/assets/references-en/testing-patterns.md +51 -0
- package/assets/security-scan/defaults/.golangci.yml +2 -0
- package/assets/security-scan/defaults/eslint.config.mjs +11 -0
- package/assets/security-scan/defaults/gitleaks.toml +3 -0
- package/assets/security-scan/defaults/ruff.toml +1 -0
- package/assets/security-scan/tools-agil.json +87 -0
- package/assets/security-scan/tools.json +625 -0
- package/assets/skills-en/core/onboarding/SKILL.md +58 -0
- package/assets/skills-en/core/orkastery-bootstrap/SKILL.md +119 -0
- package/assets/skills-en/core/thread-state/SKILL.md +88 -0
- package/assets/skills-en/governance/decision-triage/SKILL.md +65 -0
- package/assets/skills-en/governance/narrative-guardian/SKILL.md +66 -0
- package/assets/skills-en/governance/roadmap-keeper/SKILL.md +60 -0
- package/assets/skills-en/governance/scope-check-capability-map/SKILL.md +71 -0
- package/assets/skills-en/observability/thread-tracing/SKILL.md +63 -0
- package/assets/skills-en/phases/check-quality/SKILL.md +103 -0
- package/assets/skills-en/phases/go-implementation/SKILL.md +78 -0
- package/assets/skills-en/phases/goal-definition/SKILL.md +69 -0
- package/assets/skills-en/phases/master-metrics/SKILL.md +72 -0
- package/assets/skills-en/phases/plan-specification/SKILL.md +67 -0
- package/assets/skills-en/phases/security-remediation/SKILL.md +70 -0
- package/assets/skills-en/phases/ship-release/SKILL.md +71 -0
- package/assets/skills-en/reviewers/code-reviewer/SKILL.md +61 -0
- package/assets/skills-en/reviewers/security-auditor/SKILL.md +93 -0
- package/assets/skills-en/reviewers/test-engineer/SKILL.md +66 -0
- package/assets/skills-en/reviewers/web-performance-auditor/SKILL.md +63 -0
- package/dist/adapters/claude-bg.js +193 -15
- package/dist/adapters/codex-controller-worker.js +12 -5
- package/dist/adapters/codex-events.js +16 -4
- package/dist/adapters/codex.js +13 -2
- package/dist/agents-md.js +24 -15
- package/dist/atualizar-branch.js +245 -0
- package/dist/auditoria.js +13 -11
- package/dist/auditrun.js +68 -48
- package/dist/autorizacao-duravel.js +327 -0
- package/dist/board.js +98 -43
- package/dist/branch-de-estado.js +39 -9
- package/dist/busca-semantica.js +7 -5
- package/dist/catalogo.js +35 -1
- package/dist/changelog-reconciliacao.js +290 -0
- package/dist/check-agil.js +500 -0
- package/dist/check-modo.js +41 -0
- package/dist/check-paralelo.js +183 -0
- package/dist/ci.js +255 -46
- package/dist/ciclos.js +8 -6
- package/dist/claim-lint.js +12 -8
- package/dist/claims-conferir.js +350 -0
- package/dist/claims.js +13 -10
- package/dist/company-brain-client.js +45 -3
- package/dist/company-brain-journal.js +2 -1
- package/dist/company-brain-migration.js +47 -6
- package/dist/conducao-batida.js +759 -0
- package/dist/conducao-sentinela.js +405 -0
- package/dist/conducao-texto.js +12 -18
- package/dist/conducao.js +206 -59
- package/dist/conhecimento-consulta.js +270 -0
- package/dist/conhecimento.js +514 -0
- package/dist/conta-esgotada.js +127 -0
- package/dist/dado-privado.js +816 -0
- package/dist/decisao-autonoma.js +5 -4
- package/dist/demo.js +14 -12
- package/dist/dependencias-da-worktree.js +25 -0
- package/dist/divida.js +38 -36
- package/dist/docs.js +103 -82
- package/dist/doctor-forja.js +345 -0
- package/dist/doctor-pulse-cron.js +294 -27
- package/dist/doctor-rede.js +18 -17
- package/dist/doctor.js +278 -116
- package/dist/dsn-da-memoria.js +417 -0
- package/dist/entrega-por-mod.js +503 -0
- package/dist/entrega-pr.js +158 -57
- package/dist/escopo-escrita.js +10 -1
- package/dist/esgotamentos.js +13 -11
- package/dist/estado-thread.js +42 -17
- package/dist/evalrunner.js +35 -32
- package/dist/experiencia-instalacao.js +45 -25
- package/dist/fabrica-batida.js +323 -0
- package/dist/fabrica-estado.js +49 -16
- package/dist/fabrica-publicar.js +3 -1
- package/dist/fila-pesada.js +444 -0
- package/dist/fix.js +24 -21
- package/dist/forja/adaptador.js +6 -0
- package/dist/forja/ambiente-de-ci.js +27 -0
- package/dist/forja/api.js +256 -0
- package/dist/forja/cache.js +89 -0
- package/dist/forja/cli.js +60 -0
- package/dist/forja/contrato.js +9 -0
- package/dist/forja/endereco.js +43 -0
- package/dist/forja/estado.js +22 -0
- package/dist/forja/executor.js +73 -0
- package/dist/forja/github/ci.js +95 -0
- package/dist/forja/github/dono-da-rede.js +18 -0
- package/dist/forja/github/metadados.js +15 -0
- package/dist/forja/github/pedidos.js +200 -0
- package/dist/forja/gitlab/ci.js +141 -0
- package/dist/forja/gitlab/consultas.js +59 -0
- package/dist/forja/gitlab/dono-da-rede.js +43 -0
- package/dist/forja/gitlab/metadados.js +15 -0
- package/dist/forja/gitlab/pedidos-abertos.js +158 -0
- package/dist/forja/gitlab/pedidos.js +141 -0
- package/dist/forja/produtor.js +32 -0
- package/dist/forja/registro.js +31 -0
- package/dist/forja/resolver.js +121 -0
- package/dist/forja/texto.js +13 -0
- package/dist/forja/versao.js +71 -0
- package/dist/forja.js +124 -81
- package/dist/gates.js +3 -28
- package/dist/handoff.js +33 -19
- package/dist/hitl-contract.js +46 -43
- package/dist/hitl-curto.js +37 -25
- package/dist/hitl-gates.js +13 -11
- package/dist/hitl-local-receipt.js +53 -0
- package/dist/hitl-local.js +11 -2
- package/dist/hitl-lock.js +5 -11
- package/dist/hitl-public-receipt.js +11 -0
- package/dist/hitl-resumo.js +72 -3
- package/dist/hitl-sessions.js +62 -9
- package/dist/hitl-tempo-parado.js +4 -4
- package/dist/hitl-texto-livre.js +7 -4
- package/dist/hitl.js +63 -64
- package/dist/horario.js +30 -7
- package/dist/hosts.js +155 -134
- package/dist/impedimento.js +108 -14
- package/dist/index.js +1421 -1019
- package/dist/indice-vetorial.js +14 -12
- package/dist/indice.js +7 -1
- package/dist/init.js +54 -49
- package/dist/instabilidade.js +144 -0
- package/dist/integracoes-locais.js +4 -0
- package/dist/intelligence-graph-cli.js +213 -88
- package/dist/intelligence-graph-contexto.js +56 -17
- package/dist/intelligence-graph-contract.js +2 -1
- package/dist/intelligence-graph-extract-md.js +56 -4
- package/dist/intelligence-graph-extract-ts.js +71 -3
- package/dist/intelligence-graph-query.js +96 -34
- package/dist/leases.js +19 -18
- package/dist/ledger-stats.js +17 -16
- package/dist/ledger.js +46 -2
- package/dist/licoes.js +12 -11
- package/dist/liveness.js +6 -3
- package/dist/locale-accounts.js +220 -0
- package/dist/locale-adapter.js +291 -0
- package/dist/locale-ajuda.js +833 -0
- package/dist/locale-audit.js +199 -0
- package/dist/locale-claims.js +213 -0
- package/dist/locale-conducao.js +138 -0
- package/dist/locale-conhecimento.js +181 -0
- package/dist/locale-decisao.js +205 -0
- package/dist/locale-docs.js +230 -0
- package/dist/locale-estado.js +101 -0
- package/dist/locale-forja.js +290 -0
- package/dist/locale-gerados.js +165 -0
- package/dist/locale-grafo.js +129 -0
- package/dist/locale-master.js +182 -0
- package/dist/locale-network.js +524 -0
- package/dist/locale-onboarding.js +92 -0
- package/dist/locale-operacao-restante.js +931 -0
- package/dist/locale-phase.js +151 -0
- package/dist/locale-projetos.js +100 -0
- package/dist/locale-prompts.js +194 -0
- package/dist/locale-pulse.js +349 -0
- package/dist/locale-reservas.js +87 -0
- package/dist/locale-retry.js +524 -0
- package/dist/locale-roadmap.js +102 -0
- package/dist/locale-security-scan.js +69 -0
- package/dist/locale-setup.js +192 -0
- package/dist/locale-ship.js +597 -0
- package/dist/locale-thread.js +421 -0
- package/dist/locale-verify.js +201 -0
- package/dist/locale-worktree.js +246 -0
- package/dist/locale.js +1258 -0
- package/dist/maestro-runtime.js +22 -3
- package/dist/manifest.js +415 -13
- package/dist/maquina-ociosa.js +211 -0
- package/dist/maquina.js +31 -7
- package/dist/master-digest.js +6 -1
- package/dist/master-nota-local.js +200 -0
- package/dist/master-nota.js +14 -8
- package/dist/master.js +139 -65
- package/dist/mcp-artifacts.js +11 -2
- package/dist/mcp-conhecimento.js +52 -0
- package/dist/mcp-experiencia.js +26 -5
- package/dist/mcp-git.js +23 -6
- package/dist/mcp-grafo.js +7 -4
- package/dist/mcp-install.js +73 -8
- package/dist/mcp-noctum.js +101 -0
- package/dist/mcp-server.js +90 -16
- package/dist/mcp-ship-transporte.js +977 -0
- package/dist/mcp-ship.js +71 -25
- package/dist/mcp-transportes.js +17 -0
- package/dist/mcp-verify.js +6 -1
- package/dist/memoria.js +63 -58
- package/dist/modos-migracao.js +8 -6
- package/dist/modos.js +20 -24
- package/dist/network-roadmap.js +90 -51
- package/dist/noctum-aceite.js +789 -0
- package/dist/noctum-arco.js +1418 -0
- package/dist/noctum-capacidade.js +141 -0
- package/dist/noctum-changelog.js +399 -0
- package/dist/noctum-cli.js +482 -0
- package/dist/noctum-coordenacao.js +1225 -0
- package/dist/noctum-entrega.js +1169 -0
- package/dist/noctum-envelope.js +1046 -0
- package/dist/noctum-execucao.js +376 -0
- package/dist/noctum-fechamento.js +405 -0
- package/dist/noctum-fila.js +314 -0
- package/dist/noctum-guarda.js +256 -0
- package/dist/noctum-integracao.js +507 -0
- package/dist/noctum-maquinas.js +383 -0
- package/dist/noctum-medicao.js +450 -0
- package/dist/noctum-modo.js +362 -0
- package/dist/noctum-pergunta-canal.js +96 -0
- package/dist/noctum-pergunta.js +115 -0
- package/dist/noctum-provas.js +838 -0
- package/dist/noctum-reconciliacao.js +591 -0
- package/dist/noctum-registro.js +215 -0
- package/dist/noctum-relatorio.js +827 -0
- package/dist/noctum-resposta.js +207 -0
- package/dist/noctum-sessoes-em-voo.js +93 -0
- package/dist/noctum-supervisao.js +649 -0
- package/dist/noctum-terminal.js +459 -0
- package/dist/noctum-transporte.js +655 -0
- package/dist/noctum-vigia.js +639 -0
- package/dist/ocupacao.js +32 -3
- package/dist/onboarding.js +56 -26
- package/dist/orkmind.js +48 -25
- package/dist/orquestracao.js +44 -47
- package/dist/parado-no-condutor.js +174 -127
- package/dist/phase.js +144 -63
- package/dist/policies.js +37 -4
- package/dist/portfolio.js +4 -2
- package/dist/postura-local.js +235 -0
- package/dist/preflight.js +11 -10
- package/dist/procedencia.js +220 -0
- package/dist/projeto-alvo.js +186 -24
- package/dist/prompts.js +140 -42
- package/dist/prova-minima.js +5 -6
- package/dist/pulse-cadencia.js +5 -4
- package/dist/pulse-consentimento.js +53 -1
- package/dist/pulse-delivery.js +151 -24
- package/dist/pulse-resposta.js +368 -4
- package/dist/pulse.js +188 -22
- package/dist/ratelimit.js +16 -6
- package/dist/recall.js +14 -13
- package/dist/redacao-saida.js +63 -0
- package/dist/rede-adesao.js +13 -8
- package/dist/rede-forja.js +108 -24
- package/dist/rede-status.js +66 -47
- package/dist/rede.js +86 -46
- package/dist/retomada-checkpoint.js +101 -0
- package/dist/retry.js +451 -212
- package/dist/roadmap-reservas.js +45 -28
- package/dist/roadmap-status.js +129 -33
- package/dist/runtime-ambiente.js +5 -0
- package/dist/runtime-context.js +284 -32
- package/dist/runtime-escada.js +423 -0
- package/dist/runtime-profiles.js +103 -46
- package/dist/runtimes.js +2 -1
- package/dist/saida-segura.js +3 -2
- package/dist/security-scan/agil.js +355 -0
- package/dist/security-scan/cli.js +76 -0
- package/dist/security-scan/compare.js +149 -0
- package/dist/security-scan/config.js +93 -0
- package/dist/security-scan/detect.js +97 -0
- package/dist/security-scan/executor.js +188 -0
- package/dist/security-scan/guard.js +180 -0
- package/dist/security-scan/imagem-de-lint.js +96 -0
- package/dist/security-scan/normalize/actionlint.js +12 -0
- package/dist/security-scan/normalize/eslint.js +12 -0
- package/dist/security-scan/normalize/gitleaks.js +13 -0
- package/dist/security-scan/normalize/golangci-lint.js +13 -0
- package/dist/security-scan/normalize/govulncheck.js +36 -0
- package/dist/security-scan/normalize/index.js +25 -0
- package/dist/security-scan/normalize/npm-audit.js +30 -0
- package/dist/security-scan/normalize/osv-scanner.js +32 -0
- package/dist/security-scan/normalize/oxlint.js +51 -0
- package/dist/security-scan/normalize/pip-audit.js +16 -0
- package/dist/security-scan/normalize/ruff.js +12 -0
- package/dist/security-scan/normalize/semgrep.js +20 -0
- package/dist/security-scan/normalize/trivy.js +33 -0
- package/dist/security-scan/normalize/util.js +204 -0
- package/dist/security-scan/normalize/zizmor.js +19 -0
- package/dist/security-scan/report.js +156 -0
- package/dist/security-scan/run.js +448 -0
- package/dist/security-scan/tools.js +62 -0
- package/dist/security-scan/trabalhador.js +74 -0
- package/dist/security-scan/types.js +15 -0
- package/dist/session-events.js +26 -5
- package/dist/session-watcher-claude.js +81 -20
- package/dist/session-watcher.js +340 -42
- package/dist/sessoes-contas.js +10 -1
- package/dist/sessoes-inventario.js +1 -1
- package/dist/sessoes.js +25 -23
- package/dist/setup.js +59 -58
- package/dist/ship-publicar.js +971 -0
- package/dist/ship.js +243 -97
- package/dist/steal.js +77 -0
- package/dist/superficie.js +14 -11
- package/dist/thread-close.js +12 -11
- package/dist/thread.js +274 -100
- package/dist/tokens.js +15 -11
- package/dist/trabalho-thread.js +297 -0
- package/dist/transporte-do-canal.js +189 -0
- package/dist/types.js +12 -1
- package/dist/util.js +13 -3
- package/dist/varredura-acoes.js +507 -0
- package/dist/verify.js +608 -76
- package/dist/vida-da-thread.js +254 -0
- package/dist/worktree-local.js +167 -0
- package/dist/worktree.js +99 -83
- package/dist/yaml.js +27 -8
- package/eval/casos/check-quality.json +77 -0
- package/eval/casos/security-auditor.json +148 -0
- package/eval/casos/security-remediation.json +161 -0
- package/eval/fixtures/security-scan/README.md +8 -0
- package/eval/fixtures/security-scan/go/.github/workflows/ci.yml +12 -0
- package/eval/fixtures/security-scan/go/Dockerfile +4 -0
- package/eval/fixtures/security-scan/go/README.md +4 -0
- package/eval/fixtures/security-scan/go/config.go +4 -0
- package/eval/fixtures/security-scan/go/go.mod +5 -0
- package/eval/fixtures/security-scan/go/go.sum +2 -0
- package/eval/fixtures/security-scan/go/main.go +31 -0
- package/eval/fixtures/security-scan/js/.github/workflows/ci.yml +12 -0
- package/eval/fixtures/security-scan/js/Dockerfile +3 -0
- package/eval/fixtures/security-scan/js/README.md +4 -0
- package/eval/fixtures/security-scan/js/package-lock.json +844 -0
- package/eval/fixtures/security-scan/js/package.json +10 -0
- package/eval/fixtures/security-scan/js/src/config.js +4 -0
- package/eval/fixtures/security-scan/js/src/server.js +17 -0
- package/eval/fixtures/security-scan/js/src/util.ts +4 -0
- package/eval/fixtures/security-scan/js/tsconfig.json +4 -0
- package/eval/fixtures/security-scan/python/.github/workflows/ci.yml +12 -0
- package/eval/fixtures/security-scan/python/Dockerfile +3 -0
- package/eval/fixtures/security-scan/python/README.md +4 -0
- package/eval/fixtures/security-scan/python/app/__init__.py +0 -0
- package/eval/fixtures/security-scan/python/app/config.py +2 -0
- package/eval/fixtures/security-scan/python/app/main.py +19 -0
- package/eval/fixtures/security-scan/python/requirements.txt +1 -0
- package/package.json +9 -4
- package/references/security-checklist.md +3 -3
- package/schemas/code-artifact-graph.v1.schema.json +2 -1
- package/skills/README.md +1 -0
- package/skills/core/orkastery-bootstrap/SKILL.md +2 -2
- package/skills/phases/check-quality/SKILL.md +16 -0
- package/skills/phases/go-implementation/SKILL.md +6 -0
- package/skills/phases/security-remediation/SKILL.md +70 -0
- package/skills/reviewers/security-auditor/SKILL.md +25 -0
package/dist/mcp-ship.js
CHANGED
|
@@ -33,7 +33,10 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.ambienteDoWorkerDoTransporte = exports.ambienteDoWorkerShip = void 0;
|
|
37
|
+
exports.conferenciaDepoisDoPush = conferenciaDepoisDoPush;
|
|
36
38
|
exports.criarPerfilShipMcp = criarPerfilShipMcp;
|
|
39
|
+
exports.configDeRedeDoPerfil = configDeRedeDoPerfil;
|
|
37
40
|
exports.shipMcp = shipMcp;
|
|
38
41
|
/** SHIP instalado: o cliente escolhe identidade/HEADs, nunca transporte ou autorização.
|
|
39
42
|
* SSH do dono é infraestrutura confiável explícita; não é uma promessa de SSH sem helpers.
|
|
@@ -47,6 +50,10 @@ const thread_1 = require("./thread");
|
|
|
47
50
|
const worktree_1 = require("./worktree");
|
|
48
51
|
const mcp_artifacts_1 = require("./mcp-artifacts");
|
|
49
52
|
const mcp_git_1 = require("./mcp-git");
|
|
53
|
+
const mcp_ship_transporte_1 = require("./mcp-ship-transporte");
|
|
54
|
+
Object.defineProperty(exports, "ambienteDoWorkerShip", { enumerable: true, get: function () { return mcp_ship_transporte_1.ambienteDoWorkerShip; } });
|
|
55
|
+
Object.defineProperty(exports, "ambienteDoWorkerDoTransporte", { enumerable: true, get: function () { return mcp_ship_transporte_1.ambienteDoWorkerDoTransporte; } });
|
|
56
|
+
const mcp_transportes_1 = require("./mcp-transportes");
|
|
50
57
|
const leases_1 = require("./leases");
|
|
51
58
|
const ship_1 = require("./ship");
|
|
52
59
|
const verify_1 = require("./verify");
|
|
@@ -110,7 +117,7 @@ const PRAZO = 240000, RESERVA = 15000, LIMITE = 1048576;
|
|
|
110
117
|
const perfis = new WeakMap();
|
|
111
118
|
function erro(m) { throw Error('mcp.ship.' + m); }
|
|
112
119
|
function digest(s) { return (0, node_crypto_1.createHash)('sha256').update(s).digest('hex'); }
|
|
113
|
-
/**
|
|
120
|
+
/** SSH (do GitHub ou fixado) e bare fisico nunca usam helper HTTP; o HTTPS fixado zera os helpers da config no push. */
|
|
114
121
|
function config(raiz) {
|
|
115
122
|
const raw = (0, mcp_git_1.gitPassivoMcp)(raiz, ['config', '--null', '--list']);
|
|
116
123
|
for (const item of raw.split('\0').filter(Boolean)) {
|
|
@@ -120,22 +127,7 @@ function config(raiz) {
|
|
|
120
127
|
}
|
|
121
128
|
return digest(raw);
|
|
122
129
|
}
|
|
123
|
-
|
|
124
|
-
function originUnico(raiz) {
|
|
125
|
-
const ler = (push) => {
|
|
126
|
-
const raw = (0, mcp_git_1.gitPassivoMcp)(raiz, ['remote', 'get-url', ...(push ? ['--push'] : []), '--all', 'origin']);
|
|
127
|
-
const urls = raw.split('\n');
|
|
128
|
-
if (urls[urls.length - 1] === '')
|
|
129
|
-
urls.pop();
|
|
130
|
-
if (urls.length !== 1 || !urls[0] || /[\x00-\x1f\x7f]/.test(urls[0]))
|
|
131
|
-
erro('transport.urls: origin exige uma URL efetiva');
|
|
132
|
-
return urls[0];
|
|
133
|
-
};
|
|
134
|
-
const fetch = ler(false), push = ler(true);
|
|
135
|
-
if (fetch !== push)
|
|
136
|
-
erro('transport.pushurl');
|
|
137
|
-
return fetch;
|
|
138
|
-
}
|
|
130
|
+
const originUnico = mcp_ship_transporte_1.originUnicoMcp;
|
|
139
131
|
function guardarBare(url) {
|
|
140
132
|
if (!path.isAbsolute(url))
|
|
141
133
|
erro('transport.bare.invalid');
|
|
@@ -169,6 +161,42 @@ function guardarBare(url) {
|
|
|
169
161
|
erro('transport.bare.invalid');
|
|
170
162
|
return { dev: st.dev, ino: st.ino };
|
|
171
163
|
}
|
|
164
|
+
/**
|
|
165
|
+
* A fixacao de agora tem de ser a do startup, byte a byte no que importa: a mesma pasta, o mesmo `transporte.json`
|
|
166
|
+
* (modo, origin, chaves, CLI, hash da CA) e os mesmos arquivos fixados (`lerFixacao` confere pasta, known_hosts, CLI
|
|
167
|
+
* e CA). O `-c` do push nao e recalculado: e o do startup.
|
|
168
|
+
*/
|
|
169
|
+
function guardarPino(f, url) {
|
|
170
|
+
const p = f.pino, atual = (0, mcp_ship_transporte_1.lerFixacao)(f.raiz, p.fixacao.transporte, url, f.env);
|
|
171
|
+
if (atual.dir !== p.dir || JSON.stringify(atual.fixacao) !== JSON.stringify(p.fixacao))
|
|
172
|
+
(0, mcp_ship_transporte_1.recusar)('fixacao-divergente', 'transporte.json');
|
|
173
|
+
(0, mcp_ship_transporte_1.conferirFixacao)(p.fixacao, p.dir);
|
|
174
|
+
(0, mcp_ship_transporte_1.conferirConfigDaCli)(p.fixacao, f.env);
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Depois do push e da prova, o origin e a config tem de ser os do startup, e a fixacao a mesma: o git releu os dois a
|
|
178
|
+
* cada comando de rede, e uma troca no meio levaria o push a outro lugar que a prova tambem leria.
|
|
179
|
+
*/
|
|
180
|
+
function depoisDoPush(f) {
|
|
181
|
+
return () => {
|
|
182
|
+
let url, cfg;
|
|
183
|
+
try {
|
|
184
|
+
url = originUnico(f.raiz);
|
|
185
|
+
cfg = config(f.raiz);
|
|
186
|
+
}
|
|
187
|
+
catch { /* origin ou config ilegivel tambem e troca */ }
|
|
188
|
+
if (url !== f.url || cfg !== f.config)
|
|
189
|
+
(0, mcp_ship_transporte_1.recusar)('mudou-no-push', 'origin');
|
|
190
|
+
guardarPino(f, url);
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
/** A conferencia de depois do push do perfil; so os transportes fixados a tem. */
|
|
194
|
+
function conferenciaDepoisDoPush(perfil) {
|
|
195
|
+
const f = perfis.get(perfil);
|
|
196
|
+
if (!f)
|
|
197
|
+
erro('profile.invalid');
|
|
198
|
+
return f.pino ? depoisDoPush(f) : undefined;
|
|
199
|
+
}
|
|
172
200
|
/** Somente instalação/startup confiável chama esta factory. O objeto é uma capacidade privada. */
|
|
173
201
|
function criarPerfilShipMcp(raiz, transporte = 'github-ssh') {
|
|
174
202
|
if (process.platform !== 'linux' || !path.isAbsolute(raiz))
|
|
@@ -181,21 +209,34 @@ function criarPerfilShipMcp(raiz, transporte = 'github-ssh') {
|
|
|
181
209
|
if (!/^[A-Za-z0-9][A-Za-z0-9._/-]*$/.test(destino) || destino.includes('..') || destino.endsWith('/'))
|
|
182
210
|
erro('destination.invalid');
|
|
183
211
|
const cfg = config(raiz), url = originUnico(raiz);
|
|
184
|
-
let bare;
|
|
212
|
+
let bare, pino;
|
|
185
213
|
if (transporte === 'github-ssh') {
|
|
186
|
-
if (
|
|
214
|
+
if (!mcp_ship_transporte_1.URL_GITHUB_SSH.test(url))
|
|
187
215
|
erro('transport.unsupported: GitHub SSH exigido; HTTPS requer autenticacao instalada auditada');
|
|
188
216
|
}
|
|
189
217
|
else if (transporte === 'bare-local')
|
|
190
218
|
bare = guardarBare(url);
|
|
219
|
+
else if ((0, mcp_transportes_1.ehTransporteFixado)(transporte))
|
|
220
|
+
pino = (0, mcp_ship_transporte_1.lerFixacao)(raiz, transporte, url);
|
|
191
221
|
else
|
|
192
222
|
erro('transport.invalid');
|
|
223
|
+
const rede = pino ? (0, mcp_ship_transporte_1.configDeRede)(pino.fixacao, pino.dir) : [];
|
|
224
|
+
if ((0, mcp_ship_transporte_1.chaveRecusadaDaConfigDeRede)(rede) !== null)
|
|
225
|
+
erro('transport.invalid');
|
|
193
226
|
const perfil = Object.freeze({ transporte, destino }), st = fs.statSync(raiz);
|
|
194
|
-
const env =
|
|
195
|
-
|
|
196
|
-
|
|
227
|
+
const env = (0, mcp_ship_transporte_1.ambienteDoWorkerDoTransporte)(transporte, process.env, pino?.fixacao.transporte === 'forja-https' ? pino.fixacao.cli : undefined);
|
|
228
|
+
if (pino)
|
|
229
|
+
(0, mcp_ship_transporte_1.conferirConfigDaCli)(pino.fixacao, env);
|
|
230
|
+
perfis.set(perfil, { raiz, dev: st.dev, ino: st.ino, url, config: cfg, perfil, env, rede, ...(bare ? { bare } : {}), ...(pino ? { pino } : {}) });
|
|
197
231
|
return perfil;
|
|
198
232
|
}
|
|
233
|
+
/** O `-c` que o push e o `ls-remote` do perfil levam; vazio no `github-ssh` e no `bare-local`. */
|
|
234
|
+
function configDeRedeDoPerfil(perfil) {
|
|
235
|
+
const f = perfis.get(perfil);
|
|
236
|
+
if (!f)
|
|
237
|
+
erro('profile.invalid');
|
|
238
|
+
return [...f.rede];
|
|
239
|
+
}
|
|
199
240
|
function validar(p) {
|
|
200
241
|
if (!p || Object.keys(p).sort().join(',') !== 'expectedDestination,expectedSource,threadId' ||
|
|
201
242
|
typeof p.threadId !== 'string' || !/^[A-Za-z0-9][A-Za-z0-9._-]{0,79}$/.test(p.threadId) ||
|
|
@@ -299,8 +340,11 @@ function executar(f, p) {
|
|
|
299
340
|
guardEstado();
|
|
300
341
|
if (Date.now() > deadline - RESERVA)
|
|
301
342
|
erro('deadline');
|
|
302
|
-
|
|
343
|
+
const url = originUnico(raiz);
|
|
344
|
+
if (url !== f.url || config(raiz) !== f.config)
|
|
303
345
|
erro('transport.changed');
|
|
346
|
+
if (f.pino)
|
|
347
|
+
guardarPino(f, url);
|
|
304
348
|
if (f.bare) {
|
|
305
349
|
const b = guardarBare(f.url);
|
|
306
350
|
if (b.dev !== f.bare.dev || b.ino !== f.bare.ino)
|
|
@@ -353,7 +397,9 @@ function executar(f, p) {
|
|
|
353
397
|
sandbox.fechar();
|
|
354
398
|
}
|
|
355
399
|
};
|
|
356
|
-
|
|
400
|
+
// RM-058 N2 (B1 do CHECK): a fila pesada espera so o que cabe no prazo do worker, para o finally soltar as leases.
|
|
401
|
+
return (0, ship_1.ship)(c, t.id, { de, para, remoto: 'origin', configDoRemoto: f.rede, ...(f.pino ? { conferirDepoisDoPush: depoisDoPush(f), urlFixada: f.pino.fixacao.url } : {}), executorVerify: executor, ttlLeaseMs: PRAZO + RESERVA, retomarLeaseVencido: false,
|
|
402
|
+
esperarFilaPesadaMs: Math.max(0, Math.min(20000, deadline - Date.now() - RESERVA)),
|
|
357
403
|
revalidarGit: (etapa, dir) => { if (!leasesIntactas())
|
|
358
404
|
erro('lease.changed'); guard(etapa, dir); } });
|
|
359
405
|
}
|
|
@@ -433,6 +479,6 @@ if (require.main === module && process.argv[2] === '--worker') {
|
|
|
433
479
|
}
|
|
434
480
|
catch (e) {
|
|
435
481
|
const m = e.message;
|
|
436
|
-
process.stdout.write(JSON.stringify({ ok: false, erro: m.startsWith('mcp.') ? m : 'mcp.ship.operation.failed: conferir estado antes de repetir' }));
|
|
482
|
+
process.stdout.write(JSON.stringify({ ok: false, erro: m.startsWith('mcp.') || m.startsWith('fila-pesada.') ? m : 'mcp.ship.operation.failed: conferir estado antes de repetir' }));
|
|
437
483
|
}
|
|
438
484
|
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TRANSPORTES_SHIP_MCP = void 0;
|
|
4
|
+
exports.ehTransporteShipMcp = ehTransporteShipMcp;
|
|
5
|
+
exports.ehTransporteFixado = ehTransporteFixado;
|
|
6
|
+
/**
|
|
7
|
+
* Os transportes do `ork_ship` do MCP. `github-ssh` e o SSH do GitHub de sempre; `bare-local`, um repositorio bare
|
|
8
|
+
* fisico; `forja-ssh` e `forja-https` sao fixados na instalacao (`mcp-ship-transporte.ts`). Sem dependencia: o CLI
|
|
9
|
+
* valida o argumento sem carregar o MCP.
|
|
10
|
+
*/
|
|
11
|
+
exports.TRANSPORTES_SHIP_MCP = ['github-ssh', 'forja-ssh', 'forja-https', 'bare-local'];
|
|
12
|
+
function ehTransporteShipMcp(v) {
|
|
13
|
+
return typeof v === 'string' && exports.TRANSPORTES_SHIP_MCP.includes(v);
|
|
14
|
+
}
|
|
15
|
+
function ehTransporteFixado(v) {
|
|
16
|
+
return v === 'forja-ssh' || v === 'forja-https';
|
|
17
|
+
}
|
package/dist/mcp-verify.js
CHANGED
|
@@ -33,6 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.ESPERA_DA_FILA_PESADA_MCP_MS = void 0;
|
|
36
37
|
exports.verificarMcp = verificarMcp;
|
|
37
38
|
/** Operação estruturada: argumentos só identificam a thread; execução sempre confinada. */
|
|
38
39
|
const fs = __importStar(require("node:fs"));
|
|
@@ -46,6 +47,8 @@ const mcp_artifacts_1 = require("./mcp-artifacts");
|
|
|
46
47
|
const verify_1 = require("./verify");
|
|
47
48
|
const verify_sandbox_1 = require("./verify-sandbox");
|
|
48
49
|
const worktree_1 = require("./worktree");
|
|
50
|
+
/** RM-058 N2 (D10 da ork-rm058n2): a espera maxima do MCP pela fila de recursos pesados, dentro do prazo total. */
|
|
51
|
+
exports.ESPERA_DA_FILA_PESADA_MCP_MS = 20_000;
|
|
49
52
|
const PRAZO_TOTAL_MS = 180_000;
|
|
50
53
|
const RESERVA_MS = 10_000;
|
|
51
54
|
// I-37 (D4): o teto por comando cabe o `test:ci` medido (196 s); quem limita e o prazo total.
|
|
@@ -154,7 +157,9 @@ function verificarMcp(raizEntrada, threadId, conducao = {}) {
|
|
|
154
157
|
}
|
|
155
158
|
};
|
|
156
159
|
// I-36 (T8): o MESMO lease de execucao do CLI; a sessao filha reentra pela identidade do despacho.
|
|
157
|
-
|
|
160
|
+
// RM-058 N2 (D10): o MCP tem prazo total curto; espera a fila pesada no maximo ESPERA_DA_FILA_PESADA_MCP_MS.
|
|
161
|
+
const r = (0, verify_1.verificar)(carregado, threadId, { executor, operacao: 'mcp.verify',
|
|
162
|
+
conducao: { ...conducao, filaPesada: { esperarMs: Math.min(exports.ESPERA_DA_FILA_PESADA_MCP_MS, conducao.filaPesada?.esperarMs ?? exports.ESPERA_DA_FILA_PESADA_MCP_MS) } } });
|
|
158
163
|
const execucoes = r.claims.flatMap(c => c.execucoes).concat(r.comandos);
|
|
159
164
|
return {
|
|
160
165
|
threadId, ok: r.ok, commit: r.commit, motivos: r.motivos,
|
package/dist/memoria.js
CHANGED
|
@@ -97,6 +97,8 @@ const onboarding_1 = require("./onboarding");
|
|
|
97
97
|
const node_crypto_1 = require("node:crypto");
|
|
98
98
|
const node_util_1 = require("node:util");
|
|
99
99
|
const memoria_humana_1 = require("./memoria-humana");
|
|
100
|
+
const locale_1 = require("./locale");
|
|
101
|
+
const locale_prompts_1 = require("./locale-prompts");
|
|
100
102
|
const master_1 = require("./master");
|
|
101
103
|
const modos_1 = require("./modos");
|
|
102
104
|
const orkmind_1 = require("./orkmind");
|
|
@@ -804,9 +806,10 @@ function primeiraLinha(texto) {
|
|
|
804
806
|
* - Entradas `mandatory` do OrkMind entram sempre que as tags casam, em qualquer fase.
|
|
805
807
|
* - Todo item declara a proveniencia: `path#ancora` ou `orkmind://<colecao>/<id>`.
|
|
806
808
|
*/
|
|
807
|
-
function injecaoDaFase(carregado, memoria, thread, fase) {
|
|
809
|
+
function injecaoDaFase(carregado, memoria, thread, fase, locale = (0, locale_1.localeAtivo)()) {
|
|
808
810
|
carregado = (0, project_state_1.memoryState)(carregado).loaded;
|
|
809
811
|
const { manifesto } = carregado;
|
|
812
|
+
const m = (locale === 'en' ? locale_prompts_1.PROMPTS_EN : locale_prompts_1.PROMPTS_PT_BR).memoria;
|
|
810
813
|
const itens = [];
|
|
811
814
|
const caminhoThread = `.orkastery/threads/${thread.id}/thread.json`;
|
|
812
815
|
let n = 0;
|
|
@@ -823,7 +826,7 @@ function injecaoDaFase(carregado, memoria, thread, fase) {
|
|
|
823
826
|
vistas.add(d.id);
|
|
824
827
|
add({
|
|
825
828
|
colecao: 'decision',
|
|
826
|
-
titulo:
|
|
829
|
+
titulo: m.decisaoFechada(d.id, d.decididaPor),
|
|
827
830
|
conteudo: d.texto,
|
|
828
831
|
origem: 'thread.json',
|
|
829
832
|
location: `${caminhoThread}#json:decisoes.${d.id}`,
|
|
@@ -839,7 +842,7 @@ function injecaoDaFase(carregado, memoria, thread, fase) {
|
|
|
839
842
|
vistas.add(id);
|
|
840
843
|
add({
|
|
841
844
|
colecao: 'decision',
|
|
842
|
-
titulo: id ?
|
|
845
|
+
titulo: id ? m.decisaoSemantica(id) : m.decisaoSemId,
|
|
843
846
|
conteudo: e.content,
|
|
844
847
|
origem: 'orkmind',
|
|
845
848
|
location: (0, orkmind_1.enderecoDeMemoria)('decision', e.id),
|
|
@@ -856,7 +859,7 @@ function injecaoDaFase(carregado, memoria, thread, fase) {
|
|
|
856
859
|
licoes += 1;
|
|
857
860
|
add({
|
|
858
861
|
colecao: 'learning',
|
|
859
|
-
titulo:
|
|
862
|
+
titulo: m.licaoDaThread(threadDaEntrada(e) ?? (locale === 'en' ? '(previous)' : '(anterior)')),
|
|
860
863
|
conteudo: e.content,
|
|
861
864
|
origem: 'orkmind',
|
|
862
865
|
location: (0, orkmind_1.enderecoDeMemoria)('learning', e.id),
|
|
@@ -873,7 +876,7 @@ function injecaoDaFase(carregado, memoria, thread, fase) {
|
|
|
873
876
|
licoes += 1;
|
|
874
877
|
add({
|
|
875
878
|
colecao: 'learning',
|
|
876
|
-
titulo:
|
|
879
|
+
titulo: m.licoesDoProduto,
|
|
877
880
|
conteudo: texto,
|
|
878
881
|
origem: 'postmortem',
|
|
879
882
|
location: '.orkastery/threads/*/POSTMORTEM.json',
|
|
@@ -891,7 +894,7 @@ function injecaoDaFase(carregado, memoria, thread, fase) {
|
|
|
891
894
|
regras += 1;
|
|
892
895
|
add({
|
|
893
896
|
colecao: 'rule',
|
|
894
|
-
titulo:
|
|
897
|
+
titulo: m.regraMandatoria(primeiraLinha(e.content).slice(0, 70)),
|
|
895
898
|
conteudo: e.content,
|
|
896
899
|
origem: 'orkmind',
|
|
897
900
|
location: (0, orkmind_1.enderecoDeMemoria)('rule', e.id),
|
|
@@ -907,7 +910,7 @@ function injecaoDaFase(carregado, memoria, thread, fase) {
|
|
|
907
910
|
decisoes,
|
|
908
911
|
licoes,
|
|
909
912
|
regras,
|
|
910
|
-
texto: textoDaInjecao(itens, memoria.regime),
|
|
913
|
+
texto: textoDaInjecao(itens, memoria.regime, locale),
|
|
911
914
|
};
|
|
912
915
|
}
|
|
913
916
|
/**
|
|
@@ -916,38 +919,30 @@ function injecaoDaFase(carregado, memoria, thread, fase) {
|
|
|
916
919
|
* Vazio quando nao ha item: a linha da variavel some do prompt e o texto fica byte a byte
|
|
917
920
|
* igual ao que o B4 ja despachava. Uma thread sem decisao fechada nao ganha secao vazia.
|
|
918
921
|
*/
|
|
919
|
-
function textoDaInjecao(itens, regime) {
|
|
922
|
+
function textoDaInjecao(itens, regime, locale = (0, locale_1.localeAtivo)()) {
|
|
920
923
|
if (itens.length === 0)
|
|
921
924
|
return '';
|
|
925
|
+
const m = (locale === 'en' ? locale_prompts_1.PROMPTS_EN : locale_prompts_1.PROMPTS_PT_BR).memoria;
|
|
922
926
|
const linhas = [];
|
|
923
927
|
linhas.push('');
|
|
924
|
-
linhas.push(
|
|
925
|
-
linhas.push(
|
|
926
|
-
'prompt sem proveniencia. O que NAO esta aqui esta nos ponteiros do handoff, ' +
|
|
927
|
-
'recuperavel por `ork recall`.');
|
|
928
|
+
linhas.push(m.titulo(regime));
|
|
929
|
+
linhas.push(m.explicacao);
|
|
928
930
|
const porColecao = {};
|
|
929
931
|
for (const i of itens)
|
|
930
932
|
(porColecao[i.colecao] ??= []).push(i);
|
|
931
|
-
const rotulos = {
|
|
932
|
-
decision: 'Decisoes fechadas desta thread (entram em TODA fase)',
|
|
933
|
-
learning: 'Licoes de threads anteriores deste produto',
|
|
934
|
-
rule: 'Regras mandatorias do ecossistema',
|
|
935
|
-
handoff: 'Handoffs anteriores',
|
|
936
|
-
roadmap: 'Roadmap',
|
|
937
|
-
};
|
|
938
933
|
for (const colecao of ['decision', 'learning', 'rule', 'handoff', 'roadmap']) {
|
|
939
934
|
const doGrupo = porColecao[colecao];
|
|
940
935
|
if (!doGrupo || doGrupo.length === 0)
|
|
941
936
|
continue;
|
|
942
937
|
linhas.push('');
|
|
943
|
-
linhas.push(`### ${
|
|
938
|
+
linhas.push(`### ${m.grupos[colecao] ?? colecao} (${doGrupo.length})`);
|
|
944
939
|
for (const i of doGrupo) {
|
|
945
|
-
linhas.push(`- ${i.titulo}${i.mandatory ?
|
|
940
|
+
linhas.push(`- ${i.titulo}${i.mandatory ? m.mandatory : ''}`);
|
|
946
941
|
for (const l of i.conteudo.split('\n')) {
|
|
947
942
|
if (l.trim() !== '')
|
|
948
943
|
linhas.push(` ${l}`);
|
|
949
944
|
}
|
|
950
|
-
linhas.push(`
|
|
945
|
+
linhas.push(` ${m.origem(i.location)}`);
|
|
951
946
|
}
|
|
952
947
|
}
|
|
953
948
|
return linhas.join('\n');
|
|
@@ -1092,29 +1087,37 @@ function publicarPropostas(carregado, achados, memoriaAberta) {
|
|
|
1092
1087
|
}
|
|
1093
1088
|
/** Texto de `ork memory status`. */
|
|
1094
1089
|
function textoDoEstado(estado) {
|
|
1090
|
+
const m = (0, locale_1.msg)().operacao.restante.memory.estado;
|
|
1095
1091
|
const linhas = [];
|
|
1096
|
-
linhas.push(
|
|
1092
|
+
linhas.push(m.titulo);
|
|
1097
1093
|
linhas.push('');
|
|
1098
|
-
linhas.push(
|
|
1099
|
-
linhas.push(
|
|
1100
|
-
linhas.push(
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1094
|
+
linhas.push(m.pedido(estado.pedido));
|
|
1095
|
+
linhas.push(m.efetivo(estado.efetivo));
|
|
1096
|
+
linhas.push(m.tenant(estado.tenant));
|
|
1097
|
+
// RM-069 (D5): com a fonte de arquivo, o arquivo pelo rotulo com `~`; com ambiente, as linhas de sempre.
|
|
1098
|
+
if (estado.fonteDaDsn === 'arquivo') {
|
|
1099
|
+
linhas.push(m.arquivo(estado.arquivoDaDsn ?? ''));
|
|
1100
|
+
linhas.push(m.dsnNoArquivo(estado.dsnPresente));
|
|
1101
|
+
}
|
|
1102
|
+
else {
|
|
1103
|
+
linhas.push(m.variavel(estado.variavel));
|
|
1104
|
+
linhas.push(m.dsn(estado.dsnPresente));
|
|
1105
|
+
}
|
|
1106
|
+
linhas.push(m.cli(estado.cli));
|
|
1104
1107
|
linhas.push('');
|
|
1105
1108
|
if (estado.motivo) {
|
|
1106
|
-
linhas.push(
|
|
1109
|
+
linhas.push(m.degradacao(estado.motivo));
|
|
1107
1110
|
linhas.push(` ${estado.detalhe}`);
|
|
1108
|
-
linhas.push(
|
|
1111
|
+
linhas.push(m.correcao(estado.correcao));
|
|
1109
1112
|
linhas.push('');
|
|
1110
|
-
linhas.push(
|
|
1111
|
-
linhas.push(
|
|
1113
|
+
linhas.push(m.continua1);
|
|
1114
|
+
linhas.push(m.continua2);
|
|
1112
1115
|
}
|
|
1113
1116
|
else {
|
|
1114
1117
|
linhas.push(` ${estado.detalhe}`);
|
|
1115
1118
|
linhas.push('');
|
|
1116
|
-
linhas.push(
|
|
1117
|
-
linhas.push(
|
|
1119
|
+
linhas.push(m.colecoes(orkmind_1.COLECOES_DO_ORK.join(', ')));
|
|
1120
|
+
linhas.push(m.governanca);
|
|
1118
1121
|
}
|
|
1119
1122
|
if (estado.embeddings)
|
|
1120
1123
|
linhas.push('', ...textoDosEmbeddings(estado.embeddings));
|
|
@@ -1122,37 +1125,38 @@ function textoDoEstado(estado) {
|
|
|
1122
1125
|
}
|
|
1123
1126
|
/** Secao de embeddings do `ork memory status` (I-38 D6): nome da variavel, nunca o valor. */
|
|
1124
1127
|
function textoDosEmbeddings(e) {
|
|
1125
|
-
const
|
|
1126
|
-
linhas
|
|
1128
|
+
const m = (0, locale_1.msg)().operacao.restante.memory.embeddings;
|
|
1129
|
+
const linhas = [m.titulo, ''];
|
|
1130
|
+
linhas.push(m.provider(e.configurado ? `${e.provider} ${e.modelo} (${e.dim} dim)` : m.desligada));
|
|
1127
1131
|
if (e.configurado) {
|
|
1128
|
-
linhas.push(
|
|
1129
|
-
linhas.push(
|
|
1130
|
-
|
|
1131
|
-
linhas.push(
|
|
1132
|
+
linhas.push(m.chave(e.variavelDaChave, e.chavePresente));
|
|
1133
|
+
linhas.push(m.fallback(e.fallback.modelo ? `${e.fallback.modelo}: ${e.fallback.presente ? m.cache(e.fallback.dim) : m.foraCache}, ` +
|
|
1134
|
+
m.deps(e.fallback.dependencias ? m.depsOk : e.sondado ? m.depsAusentes : m.depsNaoSondadas) : m.naoDeclarado));
|
|
1135
|
+
linhas.push(m.ativo(e.ativo, e.sondado));
|
|
1132
1136
|
}
|
|
1133
1137
|
if (e.universo) {
|
|
1134
1138
|
const colecoes = Object.entries(e.universo.porColecao).map(([c, n]) => `${c} ${n}`).join(', ');
|
|
1135
|
-
linhas.push(
|
|
1136
|
-
linhas.push(
|
|
1139
|
+
linhas.push(m.universo(e.entradas, colecoes));
|
|
1140
|
+
linhas.push(m.fora((0, indice_vetorial_1.textoForaDaBusca)(e.universo.foraDaBusca)));
|
|
1137
1141
|
}
|
|
1138
1142
|
else if (e.falhaDoUniverso) {
|
|
1139
|
-
linhas.push(
|
|
1143
|
+
linhas.push(m.universoFalhou(e.falhaDoUniverso));
|
|
1140
1144
|
}
|
|
1141
1145
|
for (const i of e.indices) {
|
|
1142
|
-
linhas.push(
|
|
1146
|
+
linhas.push(m.indice(i.modelo, i.dim, i.vetores, i.coerentes ?? null, i.desatualizados ?? null));
|
|
1143
1147
|
}
|
|
1144
1148
|
if (e.entradas !== null) {
|
|
1145
|
-
linhas.push(
|
|
1149
|
+
linhas.push(m.cobertura(e.cobertura === null ? '-' : `${Math.round(e.cobertura * 1000) / 10}%`, e.entradas));
|
|
1146
1150
|
}
|
|
1147
1151
|
if (e.aviso)
|
|
1148
|
-
linhas.push(
|
|
1152
|
+
linhas.push(m.aviso(e.aviso));
|
|
1149
1153
|
if (e.sonda) {
|
|
1150
|
-
linhas.push(
|
|
1154
|
+
linhas.push(m.sonda(e.sonda.ok ? m.sondaOk(e.sonda.alvo, e.sonda.latenciaMs) : m.sondaFalha(e.sonda.motivo ?? m.semCaminho)));
|
|
1151
1155
|
}
|
|
1152
1156
|
if (e.motivo) {
|
|
1153
|
-
linhas.push(
|
|
1157
|
+
linhas.push(m.motivo(e.motivo));
|
|
1154
1158
|
linhas.push(` ${e.detalhe}`);
|
|
1155
|
-
linhas.push(
|
|
1159
|
+
linhas.push((0, locale_1.msg)().operacao.restante.memory.estado.correcao(e.correcao));
|
|
1156
1160
|
}
|
|
1157
1161
|
else
|
|
1158
1162
|
linhas.push(` ${e.detalhe}`);
|
|
@@ -1160,30 +1164,31 @@ function textoDosEmbeddings(e) {
|
|
|
1160
1164
|
}
|
|
1161
1165
|
/** Texto de `ork memory sync`. */
|
|
1162
1166
|
function textoDoSync(r) {
|
|
1167
|
+
const m = (0, locale_1.msg)().operacao.restante.memory.sync;
|
|
1163
1168
|
const linhas = [];
|
|
1164
|
-
linhas.push(
|
|
1165
|
-
linhas.push(
|
|
1169
|
+
linhas.push(m.titulo(r.regime, r.thread));
|
|
1170
|
+
linhas.push(m.perfil(r.perfil ?? 'integral', (r.colecoesForaDoPerfil ?? []).join(', ')));
|
|
1166
1171
|
if (r.publicacao?.estado === 'pendente')
|
|
1167
|
-
linhas.push(
|
|
1172
|
+
linhas.push(m.pendente(r.publicacao.motivo));
|
|
1168
1173
|
linhas.push('');
|
|
1169
1174
|
const linha = (nome, s) => {
|
|
1170
|
-
linhas.push(
|
|
1175
|
+
linhas.push(m.entradas(nome, s.gravadas.length, s.detalhe));
|
|
1171
1176
|
};
|
|
1172
1177
|
linha('decision', r.decisoes);
|
|
1173
1178
|
linha('rule', r.policies);
|
|
1174
|
-
linhas.push(
|
|
1179
|
+
linhas.push(m.humanos(r.humanos.elegiveis, r.humanos.excluidos, r.humanos.falhas));
|
|
1175
1180
|
const um = (nome, g) => {
|
|
1176
|
-
linhas.push(
|
|
1181
|
+
linhas.push(m.gravacao(nome, g ? (g.ok ? `${g.duplicada ? m.jaExiste : m.gravado} (${g.id})` : m.naoGravado(g.detalhe)) : m.nada));
|
|
1177
1182
|
};
|
|
1178
1183
|
um('handoff', r.handoff);
|
|
1179
1184
|
um('learning', r.learning);
|
|
1180
1185
|
um('roadmap', r.roadmap);
|
|
1181
1186
|
linhas.push('');
|
|
1182
|
-
linhas.push(
|
|
1187
|
+
linhas.push(m.total(r.total, r.falhas));
|
|
1183
1188
|
if (r.regime === 'files') {
|
|
1184
1189
|
linhas.push('');
|
|
1185
1190
|
linhas.push(` ${r.estado.detalhe}`);
|
|
1186
|
-
linhas.push(
|
|
1191
|
+
linhas.push(m.correcao(r.estado.correcao));
|
|
1187
1192
|
}
|
|
1188
1193
|
return linhas.join('\n');
|
|
1189
1194
|
}
|
package/dist/modos-migracao.js
CHANGED
|
@@ -67,6 +67,7 @@ const manifest_1 = require("./manifest");
|
|
|
67
67
|
const ledger_1 = require("./ledger");
|
|
68
68
|
const modos_1 = require("./modos");
|
|
69
69
|
const util_1 = require("./util");
|
|
70
|
+
const locale_1 = require("./locale");
|
|
70
71
|
const MARCA_BACKUP = 'migracao-modos-i43';
|
|
71
72
|
/** Le a lista `[a, b, c]` de uma linha de YAML simples, como o manifesto escreve. */
|
|
72
73
|
function lerListaInline(linha) {
|
|
@@ -178,14 +179,15 @@ function migrarModosAposentados(raiz, opcoes = {}) {
|
|
|
178
179
|
}
|
|
179
180
|
/** Texto do `ork modos migrar`, com o antes e o depois de cada campo. */
|
|
180
181
|
function textoDaMigracaoModos(r) {
|
|
182
|
+
const m = (0, locale_1.msg)().operacao.modos.migracao;
|
|
181
183
|
if (r.mudancas.length === 0) {
|
|
182
|
-
return
|
|
184
|
+
return m.nada;
|
|
183
185
|
}
|
|
184
|
-
const linhas = [r.dryRun ?
|
|
185
|
-
for (const
|
|
186
|
-
linhas.push(` ${
|
|
186
|
+
const linhas = [r.dryRun ? m.simulacao : m.aplicada];
|
|
187
|
+
for (const mudanca of r.mudancas)
|
|
188
|
+
linhas.push(` ${mudanca.arquivo} ${mudanca.campo}`, ` ${m.de.padEnd(4)} ${mudanca.de}`, ` ${m.para} ${mudanca.para}`);
|
|
187
189
|
if (r.backup)
|
|
188
|
-
linhas.push(` backup ${r.backup}`);
|
|
189
|
-
linhas.push('',
|
|
190
|
+
linhas.push(` ${m.backup} ${r.backup}`);
|
|
191
|
+
linhas.push('', m.historico);
|
|
190
192
|
return linhas.join('\n');
|
|
191
193
|
}
|
package/dist/modos.js
CHANGED
|
@@ -24,14 +24,13 @@ exports.blocoDaFase = blocoDaFase;
|
|
|
24
24
|
exports.fasePausa = fasePausa;
|
|
25
25
|
exports.tabelaDeModos = tabelaDeModos;
|
|
26
26
|
const types_1 = require("./types");
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
];
|
|
27
|
+
const locale_1 = require("./locale");
|
|
28
|
+
const locale_prompts_1 = require("./locale-prompts");
|
|
29
|
+
/**
|
|
30
|
+
* Invariantes que valem em TODOS os modos, inclusive `#Auto`. RM-061 F3c: o texto mora no catalogo dos prompts (o
|
|
31
|
+
* pt-BR e a fonte, o ingles e tipado por ele); a tabela do `ork modos` e o prompt de fase leem o mesmo.
|
|
32
|
+
*/
|
|
33
|
+
exports.INVARIANTES = locale_prompts_1.PROMPTS_PT_BR.invariantes;
|
|
35
34
|
/** Monta a parte 3 do slug para um conjunto de fases (visao, secao 3.4). */
|
|
36
35
|
function slugDasFases(fases) {
|
|
37
36
|
if (fases.length === 0)
|
|
@@ -190,10 +189,7 @@ exports.MOTIVO_MODO_APOSENTADO = 'modo.aposentado';
|
|
|
190
189
|
* O texto e DERIVADO de `ORDEM_DOS_MODOS` (ver `substitutosVivos`), nunca escrito a mao.
|
|
191
190
|
*/
|
|
192
191
|
function recusaDeModoAposentado(modo) {
|
|
193
|
-
|
|
194
|
-
return `${exports.MOTIVO_MODO_APOSENTADO}: ${tag} foi aposentado e nao abre trabalho novo. `
|
|
195
|
-
+ `Use ${substitutosVivos().join(' ou ')}. `
|
|
196
|
-
+ `Thread ja gravada em ${tag} continua abrindo normalmente.`;
|
|
192
|
+
return (0, locale_1.msg)().thread.modoAposentado(exports.MOTIVO_MODO_APOSENTADO, exports.MODOS[modo].tag, substitutosVivos());
|
|
197
193
|
}
|
|
198
194
|
/**
|
|
199
195
|
* O portao de ESCRITA de modo, com recusa tipada em vez de silencio.
|
|
@@ -209,8 +205,7 @@ function exigirModoVivo(entrada) {
|
|
|
209
205
|
const cru = (entrada ?? '').trim().replace(/^--?modo[= ]/i, '').replace(/^#/, '').toLowerCase();
|
|
210
206
|
if (modoAposentado(cru))
|
|
211
207
|
throw new Error(recusaDeModoAposentado(cru));
|
|
212
|
-
throw new Error(
|
|
213
|
-
+ `Use um de: ${exports.ORDEM_DOS_MODOS.map((m) => exports.MODOS[m].tag).join(', ')}.`);
|
|
208
|
+
throw new Error((0, locale_1.msg)().thread.modoDesconhecido(entrada ?? '', exports.ORDEM_DOS_MODOS.map((m) => exports.MODOS[m].tag).join(', ')));
|
|
214
209
|
}
|
|
215
210
|
/**
|
|
216
211
|
* Parseia a #TAG de modo de conducao.
|
|
@@ -318,10 +313,11 @@ function fasePausa(modo, fase) {
|
|
|
318
313
|
}
|
|
319
314
|
/** Tabela dos modos VIVOS em texto, usada por `ork modos`. O numero vem da lista. */
|
|
320
315
|
function tabelaDeModos() {
|
|
316
|
+
const m = (0, locale_1.msg)().operacao.modos;
|
|
321
317
|
const linhas = [];
|
|
322
|
-
linhas.push(
|
|
318
|
+
linhas.push(m.titulo);
|
|
323
319
|
linhas.push('');
|
|
324
|
-
const cab = [
|
|
320
|
+
const cab = [m.cabecalho[0].padEnd(10), m.cabecalho[1].padEnd(6), m.cabecalho[2].padEnd(7), m.cabecalho[3]];
|
|
325
321
|
linhas.push(' ' + cab.join(' '));
|
|
326
322
|
linhas.push(' ' + '-'.repeat(78));
|
|
327
323
|
for (const modo of exports.ORDEM_DOS_MODOS) {
|
|
@@ -338,19 +334,19 @@ function tabelaDeModos() {
|
|
|
338
334
|
].join(' '));
|
|
339
335
|
}
|
|
340
336
|
linhas.push(' ' + '-'.repeat(78));
|
|
341
|
-
linhas.push(
|
|
337
|
+
linhas.push(` ${m.marcaDaPausa}`);
|
|
342
338
|
linhas.push('');
|
|
343
|
-
linhas.push(
|
|
339
|
+
linhas.push(m.detalhe);
|
|
344
340
|
for (const modo of exports.ORDEM_DOS_MODOS) {
|
|
345
341
|
const def = exports.MODOS[modo];
|
|
346
|
-
const pausas = def.blocos.filter((b) => b.pausa).map((b) => b.pausaSobre);
|
|
347
|
-
linhas.push(` ${def.tag.padEnd(10)} slug
|
|
348
|
-
linhas.push(` pausas: ${pausas.length > 0 ? pausas.join(', ') :
|
|
349
|
-
linhas.push(` uso: ${def.recomendadoPara}`);
|
|
342
|
+
const pausas = def.blocos.filter((b) => b.pausa).map((b) => m.pausaSobre[b.pausaSobre] ?? b.pausaSobre);
|
|
343
|
+
linhas.push(` ${def.tag.padEnd(10)} ${m.slug}: ${def.blocos.map((b) => b.slugFases).join(', ')}`);
|
|
344
|
+
linhas.push(` ${m.pausas}: ${pausas.length > 0 ? pausas.join(', ') : m.nenhuma}`);
|
|
345
|
+
linhas.push(` ${m.uso}: ${m.recomendado[modo] ?? def.recomendadoPara}`);
|
|
350
346
|
}
|
|
351
347
|
linhas.push('');
|
|
352
|
-
linhas.push(
|
|
353
|
-
for (const inv of
|
|
348
|
+
linhas.push(m.regra);
|
|
349
|
+
for (const inv of (0, locale_1.msg)().prompts.invariantes)
|
|
354
350
|
linhas.push(' - ' + inv);
|
|
355
351
|
return linhas.join('\n');
|
|
356
352
|
}
|