@orkastery/cli 0.5.6 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/adapters/README.md +18 -0
- package/adapters/claude-code/.claude-plugin/plugin.json +1 -0
- package/adapters/claude-code/README.md +37 -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/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-pista/hooks/ci.ts +9 -5
- 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/hooks/vigia.ts +1 -1
- 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 +2 -2
- package/adapters/openclaw/README.md +81 -9
- 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/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 +123 -9
- package/dist/adapters/codex-controller-worker.js +12 -5
- package/dist/adapters/codex-events.js +16 -4
- package/dist/adapters/codex.js +3 -1
- package/dist/adapters/grok-events.js +227 -0
- package/dist/adapters/grok-mcp-servidor.js +612 -0
- package/dist/adapters/grok-mcp.js +178 -0
- package/dist/adapters/grok.js +686 -0
- package/dist/agendador-cpu.js +92 -0
- package/dist/atualizar-branch.js +245 -0
- package/dist/auditoria.js +13 -11
- package/dist/auditrun.js +51 -46
- package/dist/autorizacao-duravel.js +327 -0
- package/dist/board.js +94 -40
- package/dist/branch-de-estado.js +23 -10
- package/dist/busca-semantica.js +7 -5
- package/dist/catalogo.js +2 -1
- package/dist/changelog-reconciliacao.js +290 -0
- package/dist/check-agil.js +528 -0
- package/dist/check-modo.js +41 -0
- package/dist/check-paralelo.js +238 -0
- package/dist/ci.js +248 -45
- package/dist/ciclos.js +8 -6
- package/dist/claim-lint.js +12 -8
- package/dist/claims-conferir.js +47 -39
- package/dist/claims.js +10 -9
- package/dist/company-brain-client.js +10 -3
- package/dist/company-brain-migration.js +11 -5
- package/dist/conducao-batida.js +759 -0
- package/dist/conducao-sentinela.js +25 -8
- package/dist/conducao.js +89 -29
- package/dist/conhecimento-consulta.js +270 -0
- package/dist/conhecimento.js +111 -87
- 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 +89 -89
- package/dist/doctor-forja.js +343 -0
- package/dist/doctor-pulse-cron.js +113 -1
- package/dist/doctor.js +164 -6
- package/dist/dsn-da-memoria.js +417 -0
- package/dist/entrega-por-mod.js +503 -0
- package/dist/entrega-pr.js +154 -54
- package/dist/esgotamentos.js +13 -11
- package/dist/estado-thread.js +21 -18
- package/dist/evalrunner.js +35 -32
- package/dist/fabrica-batida.js +34 -21
- package/dist/fabrica-estado.js +33 -21
- package/dist/fix.js +21 -19
- 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 +123 -80
- package/dist/handoff.js +23 -13
- 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 +51 -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 +44 -1
- package/dist/hitl-sessions.js +62 -9
- package/dist/hitl-texto-livre.js +7 -4
- package/dist/hitl.js +34 -31
- package/dist/horario.js +20 -1
- package/dist/hosts.js +104 -134
- package/dist/index.js +864 -554
- package/dist/indice-vetorial.js +14 -12
- package/dist/init.js +11 -2
- package/dist/integracoes-locais.js +4 -0
- package/dist/intelligence-graph-cli.js +123 -69
- package/dist/intelligence-graph-query.js +37 -22
- package/dist/leases.js +19 -18
- package/dist/ledger-stats.js +17 -16
- package/dist/ledger.js +31 -1
- package/dist/licoes.js +12 -11
- package/dist/locale-accounts.js +228 -0
- package/dist/locale-adapter.js +291 -0
- package/dist/locale-ajuda.js +86 -10
- 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 +288 -0
- package/dist/locale-gerados.js +5 -0
- package/dist/locale-grafo.js +129 -0
- package/dist/locale-master.js +83 -0
- package/dist/locale-network.js +524 -0
- package/dist/locale-operacao-restante.js +931 -0
- package/dist/locale-projetos.js +100 -0
- package/dist/locale-prompts.js +194 -0
- package/dist/locale-pulse.js +140 -2
- package/dist/locale-reservas.js +87 -0
- package/dist/locale-retry.js +183 -6
- package/dist/locale-security-scan.js +69 -0
- package/dist/locale-setup.js +192 -0
- package/dist/locale-ship.js +177 -66
- package/dist/locale-thread.js +149 -5
- package/dist/locale-verify.js +80 -4
- package/dist/locale-worktree.js +246 -0
- package/dist/locale.js +553 -9
- package/dist/maestro-runtime.js +22 -3
- package/dist/manifest.js +293 -12
- package/dist/maquina-ociosa.js +211 -0
- package/dist/maquina.js +10 -5
- package/dist/master-nota-local.js +200 -0
- package/dist/master-nota.js +10 -2
- package/dist/master.js +118 -41
- package/dist/mcp-conhecimento.js +52 -0
- package/dist/mcp-experiencia.js +26 -5
- package/dist/mcp-install.js +90 -15
- package/dist/mcp-noctum.js +101 -0
- package/dist/mcp-server.js +116 -22
- package/dist/mcp-ship-transporte.js +977 -0
- package/dist/mcp-ship.js +68 -24
- package/dist/mcp-transportes.js +17 -0
- package/dist/memoria.js +63 -58
- package/dist/merge-da-entrega.js +85 -0
- package/dist/modos-migracao.js +8 -6
- package/dist/modos.js +17 -18
- package/dist/network-roadmap.js +94 -54
- package/dist/noctum-aceite.js +929 -0
- package/dist/noctum-arco.js +540 -33
- package/dist/noctum-capacidade.js +3 -3
- package/dist/noctum-changelog.js +399 -0
- package/dist/noctum-cli.js +539 -0
- package/dist/noctum-coordenacao.js +1225 -0
- package/dist/noctum-entrega.js +1217 -0
- package/dist/noctum-envelope.js +253 -17
- package/dist/noctum-execucao.js +100 -24
- package/dist/noctum-fechamento.js +416 -0
- package/dist/noctum-fila.js +49 -10
- package/dist/noctum-guarda.js +333 -0
- package/dist/noctum-integracao.js +507 -0
- package/dist/noctum-maquinas.js +387 -0
- package/dist/noctum-medicao.js +450 -0
- package/dist/noctum-modo.js +390 -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 +594 -0
- package/dist/noctum-rede.js +102 -0
- package/dist/noctum-registro.js +215 -0
- package/dist/noctum-relatorio.js +861 -0
- package/dist/noctum-resposta.js +207 -0
- package/dist/noctum-retomada-rede.js +71 -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 +679 -0
- package/dist/ocupacao.js +3 -1
- package/dist/onboarding.js +16 -5
- package/dist/orkmind.js +39 -23
- package/dist/orquestracao.js +31 -35
- package/dist/parado-no-condutor.js +160 -139
- package/dist/phase.js +96 -42
- package/dist/policies.js +33 -0
- package/dist/postura-local.js +11 -6
- package/dist/preflight.js +2 -1
- package/dist/procedencia.js +9 -14
- package/dist/projeto-alvo.js +59 -20
- package/dist/prompts.js +136 -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 +143 -27
- package/dist/pulse-resposta.js +368 -4
- package/dist/pulse.js +136 -3
- package/dist/ratelimit.js +13 -4
- package/dist/recall.js +14 -13
- package/dist/rede-adesao.js +13 -8
- package/dist/rede-forja.js +108 -24
- package/dist/rede-status.js +63 -45
- package/dist/rede.js +86 -46
- package/dist/retomada-checkpoint.js +101 -0
- package/dist/retry.js +326 -78
- package/dist/roadmap-reservas.js +32 -32
- package/dist/runtime-ambiente.js +5 -0
- package/dist/runtime-context.js +279 -85
- package/dist/runtime-escada.js +429 -0
- package/dist/runtime-profiles.js +130 -63
- package/dist/runtimes.js +42 -5
- package/dist/saida-segura.js +3 -2
- package/dist/security-scan/agil.js +366 -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 +196 -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 +19 -2
- package/dist/session-watcher-claude.js +74 -19
- package/dist/session-watcher-grok.js +425 -0
- package/dist/session-watcher.js +174 -13
- package/dist/sessoes-contas.js +42 -5
- package/dist/sessoes-inventario.js +1 -1
- package/dist/sessoes.js +25 -23
- package/dist/setup.js +67 -66
- package/dist/ship-publicar.js +263 -92
- package/dist/ship.js +160 -17
- package/dist/superficie.js +14 -11
- package/dist/thread-close.js +9 -9
- package/dist/thread.js +121 -18
- 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 +5 -2
- package/dist/varredura-acoes.js +500 -0
- package/dist/verify.js +491 -32
- package/dist/worktree-local.js +12 -10
- package/dist/worktree.js +81 -85
- 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 +10 -5
- package/references/security-checklist.md +3 -3
- 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)
|
|
@@ -354,7 +398,7 @@ function executar(f, p) {
|
|
|
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.
|
|
357
|
-
return (0, ship_1.ship)(c, t.id, { de, para, remoto: 'origin', executorVerify: executor, ttlLeaseMs: PRAZO + RESERVA, retomarLeaseVencido: false,
|
|
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,
|
|
358
402
|
esperarFilaPesadaMs: Math.max(0, Math.min(20000, deadline - Date.now() - RESERVA)),
|
|
359
403
|
revalidarGit: (etapa, dir) => { if (!leasesIntactas())
|
|
360
404
|
erro('lease.changed'); guard(etapa, dir); } });
|
|
@@ -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/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
|
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.branchRegistradaDaEntrega = branchRegistradaDaEntrega;
|
|
4
|
+
exports.mergesDasEntregasNaBase = mergesDasEntregasNaBase;
|
|
5
|
+
/**
|
|
6
|
+
* Reconhecimento unico do merge que entrega uma thread na linha de primeiro pai da base.
|
|
7
|
+
*
|
|
8
|
+
* A forja pode preservar o titulo `ship(<thread>)` no assunto ou usar sua mensagem padrao.
|
|
9
|
+
* Nos formatos padrao, a branch e o vinculo: ela precisa ser exatamente a branch registrada
|
|
10
|
+
* para a thread. O fallback pela convencao existe para o `docs verificar` no CI, que nao tem
|
|
11
|
+
* `.orkastery/`, e fecha o id antes de aceitar o sufixo da fase (`ork-abc` nao casa `ork-abcd`).
|
|
12
|
+
*/
|
|
13
|
+
const branch_de_estado_1 = require("./branch-de-estado");
|
|
14
|
+
const ledger_1 = require("./ledger");
|
|
15
|
+
const thread_1 = require("./thread");
|
|
16
|
+
const util_1 = require("./util");
|
|
17
|
+
/** A branch da thread como foi registrada, preferindo o evento especifico da worktree. */
|
|
18
|
+
function branchRegistradaDaEntrega(raiz, thread) {
|
|
19
|
+
try {
|
|
20
|
+
const eventos = (0, ledger_1.lerLedger)((0, thread_1.dirThread)(raiz, thread));
|
|
21
|
+
const worktree = [...eventos].reverse().find((e) => e.tipo === ledger_1.TIPOS_DE_EVENTO.worktreeCriada && (0, branch_de_estado_1.branchValida)(e.branch));
|
|
22
|
+
if (worktree)
|
|
23
|
+
return String(worktree.branch);
|
|
24
|
+
const criada = [...eventos].reverse().find((e) => e.tipo === ledger_1.TIPOS_DE_EVENTO.threadCriada);
|
|
25
|
+
const base = criada?.base;
|
|
26
|
+
if (base && typeof base === 'object' && !Array.isArray(base)) {
|
|
27
|
+
const branch = base.branch;
|
|
28
|
+
if ((0, branch_de_estado_1.branchValida)(branch))
|
|
29
|
+
return branch;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
catch { /* checkout de CI ou thread sem estado local */ }
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
const branchConvencionalDaThread = (branch, thread) => {
|
|
36
|
+
const prefixo = `ork/${thread}`;
|
|
37
|
+
return branch === prefixo || branch.startsWith(`${prefixo}-`);
|
|
38
|
+
};
|
|
39
|
+
function threadDoAssunto(assunto, entregas, base) {
|
|
40
|
+
const ship = /^ship\(([^)]+)\)/.exec(assunto);
|
|
41
|
+
if (ship?.[1])
|
|
42
|
+
return ship[1];
|
|
43
|
+
const github = /^Merge pull request #[1-9][0-9]* from [^/\s]+\/(\S+)$/.exec(assunto);
|
|
44
|
+
const gitlab = /^Merge branch '(.+)' into '(.+)'$/.exec(assunto);
|
|
45
|
+
const branch = github?.[1] ?? (gitlab?.[2] === base ? gitlab[1] : null);
|
|
46
|
+
if (!branch)
|
|
47
|
+
return null;
|
|
48
|
+
return entregas.find((entrega) => entrega.branch === null
|
|
49
|
+
? branchConvencionalDaThread(branch, entrega.thread)
|
|
50
|
+
: branch === entrega.branch)?.thread ?? null;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Merges das entregas na base, em ordem do git log (mais novo primeiro por omissao).
|
|
54
|
+
*
|
|
55
|
+
* O assunto e lido por `%s`, portanto uma citacao somente no corpo nao entra. `--first-parent`
|
|
56
|
+
* tira commits da branch lateral. O segundo pai continua opcional no retorno para preservar a
|
|
57
|
+
* recusa tipada `entrega.sem-vinculo` de squash/rebase quando a CI e obrigatoria.
|
|
58
|
+
*/
|
|
59
|
+
function mergesDasEntregasNaBase(raiz, refBase, base, entregas, reverse = false) {
|
|
60
|
+
const saida = new Map(entregas.map((e) => [e.thread, []]));
|
|
61
|
+
if (!(0, branch_de_estado_1.branchValida)(refBase) || !(0, branch_de_estado_1.branchValida)(base))
|
|
62
|
+
return saida;
|
|
63
|
+
const args = ['log', refBase, '--first-parent', '--format=%H%x09%P%x09%cI%x09%s', ...(reverse ? ['--reverse'] : []), '--'];
|
|
64
|
+
const r = (0, util_1.exec)('git', args, raiz, 60000);
|
|
65
|
+
if (!r.ok)
|
|
66
|
+
return saida;
|
|
67
|
+
for (const linha of r.stdout.split('\n')) {
|
|
68
|
+
const [sha, pais, em, assunto] = linha.split('\t');
|
|
69
|
+
if (!(0, branch_de_estado_1.shaValido)(sha) || typeof assunto !== 'string')
|
|
70
|
+
continue;
|
|
71
|
+
const thread = threadDoAssunto(assunto, entregas, base);
|
|
72
|
+
if (!thread)
|
|
73
|
+
continue;
|
|
74
|
+
const segundo = (pais ?? '').split(' ')[1] ?? null;
|
|
75
|
+
const ms = Date.parse(em ?? '');
|
|
76
|
+
const merges = saida.get(thread) ?? [];
|
|
77
|
+
merges.push({
|
|
78
|
+
mergeSha: sha,
|
|
79
|
+
headSha: segundo && (0, branch_de_estado_1.shaValido)(segundo) ? segundo : null,
|
|
80
|
+
em: Number.isFinite(ms) ? new Date(ms).toISOString() : null,
|
|
81
|
+
});
|
|
82
|
+
saida.set(thread, merges);
|
|
83
|
+
}
|
|
84
|
+
return saida;
|
|
85
|
+
}
|
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
|
@@ -25,14 +25,12 @@ exports.fasePausa = fasePausa;
|
|
|
25
25
|
exports.tabelaDeModos = tabelaDeModos;
|
|
26
26
|
const types_1 = require("./types");
|
|
27
27
|
const locale_1 = require("./locale");
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
'Toda decisao autonoma vai ao ledger com quem decidiu, evidencia e razao.',
|
|
35
|
-
];
|
|
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;
|
|
36
34
|
/** Monta a parte 3 do slug para um conjunto de fases (visao, secao 3.4). */
|
|
37
35
|
function slugDasFases(fases) {
|
|
38
36
|
if (fases.length === 0)
|
|
@@ -315,10 +313,11 @@ function fasePausa(modo, fase) {
|
|
|
315
313
|
}
|
|
316
314
|
/** Tabela dos modos VIVOS em texto, usada por `ork modos`. O numero vem da lista. */
|
|
317
315
|
function tabelaDeModos() {
|
|
316
|
+
const m = (0, locale_1.msg)().operacao.modos;
|
|
318
317
|
const linhas = [];
|
|
319
|
-
linhas.push(
|
|
318
|
+
linhas.push(m.titulo);
|
|
320
319
|
linhas.push('');
|
|
321
|
-
const cab = [
|
|
320
|
+
const cab = [m.cabecalho[0].padEnd(10), m.cabecalho[1].padEnd(6), m.cabecalho[2].padEnd(7), m.cabecalho[3]];
|
|
322
321
|
linhas.push(' ' + cab.join(' '));
|
|
323
322
|
linhas.push(' ' + '-'.repeat(78));
|
|
324
323
|
for (const modo of exports.ORDEM_DOS_MODOS) {
|
|
@@ -335,19 +334,19 @@ function tabelaDeModos() {
|
|
|
335
334
|
].join(' '));
|
|
336
335
|
}
|
|
337
336
|
linhas.push(' ' + '-'.repeat(78));
|
|
338
|
-
linhas.push(
|
|
337
|
+
linhas.push(` ${m.marcaDaPausa}`);
|
|
339
338
|
linhas.push('');
|
|
340
|
-
linhas.push(
|
|
339
|
+
linhas.push(m.detalhe);
|
|
341
340
|
for (const modo of exports.ORDEM_DOS_MODOS) {
|
|
342
341
|
const def = exports.MODOS[modo];
|
|
343
|
-
const pausas = def.blocos.filter((b) => b.pausa).map((b) => b.pausaSobre);
|
|
344
|
-
linhas.push(` ${def.tag.padEnd(10)} slug
|
|
345
|
-
linhas.push(` pausas: ${pausas.length > 0 ? pausas.join(', ') :
|
|
346
|
-
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}`);
|
|
347
346
|
}
|
|
348
347
|
linhas.push('');
|
|
349
|
-
linhas.push(
|
|
350
|
-
for (const inv of
|
|
348
|
+
linhas.push(m.regra);
|
|
349
|
+
for (const inv of (0, locale_1.msg)().prompts.invariantes)
|
|
351
350
|
linhas.push(' - ' + inv);
|
|
352
351
|
return linhas.join('\n');
|
|
353
352
|
}
|