@orkastery/cli 0.5.6 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +118 -4
- 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/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 +16 -8
- 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 +500 -0
- package/dist/check-modo.js +41 -0
- package/dist/check-paralelo.js +183 -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 +84 -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 +81 -74
- package/dist/doctor-forja.js +345 -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 +143 -43
- 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 +13 -10
- 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 +16 -0
- package/dist/hosts.js +104 -134
- package/dist/index.js +848 -548
- package/dist/indice-vetorial.js +14 -12
- package/dist/init.js +11 -2
- package/dist/integracoes-locais.js +2 -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 +220 -0
- package/dist/locale-adapter.js +291 -0
- package/dist/locale-ajuda.js +76 -4
- 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 +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 +145 -6
- package/dist/locale-security-scan.js +69 -0
- package/dist/locale-setup.js +192 -0
- package/dist/locale-ship.js +169 -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 +287 -11
- 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 +73 -8
- package/dist/mcp-noctum.js +101 -0
- package/dist/mcp-server.js +82 -14
- 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/modos-migracao.js +8 -6
- package/dist/modos.js +17 -18
- package/dist/network-roadmap.js +85 -49
- package/dist/noctum-aceite.js +789 -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 +482 -0
- package/dist/noctum-coordenacao.js +1225 -0
- package/dist/noctum-entrega.js +1169 -0
- package/dist/noctum-envelope.js +252 -16
- package/dist/noctum-execucao.js +95 -23
- package/dist/noctum-fechamento.js +405 -0
- package/dist/noctum-fila.js +43 -9
- 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 +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 +146 -124
- package/dist/phase.js +53 -27
- package/dist/policies.js +33 -0
- package/dist/postura-local.js +4 -3
- 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 +12 -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 +228 -73
- package/dist/roadmap-reservas.js +32 -32
- package/dist/runtime-ambiente.js +5 -0
- package/dist/runtime-context.js +117 -43
- package/dist/runtime-escada.js +423 -0
- package/dist/runtime-profiles.js +103 -46
- 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 +19 -2
- package/dist/session-watcher-claude.js +74 -19
- package/dist/session-watcher.js +156 -10
- package/dist/sessoes-contas.js +9 -0
- package/dist/sessoes-inventario.js +1 -1
- package/dist/sessoes.js +25 -23
- package/dist/setup.js +59 -58
- 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 +507 -0
- package/dist/verify.js +472 -29
- 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 +9 -4
- 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/hosts.js
CHANGED
|
@@ -57,10 +57,12 @@ exports.ORDEM_DOS_HOSTS = exports.HOSTS = exports.MAESTRO_HOST_SURFACES = export
|
|
|
57
57
|
exports.parseHost = parseHost;
|
|
58
58
|
exports.lerRecibo = lerRecibo;
|
|
59
59
|
exports.classificarDivergencia = classificarDivergencia;
|
|
60
|
+
exports.varianteEmIngles = varianteEmIngles;
|
|
60
61
|
exports.avisoDoOrkNoPath = avisoDoOrkNoPath;
|
|
61
62
|
exports.renderizarArquivo = renderizarArquivo;
|
|
62
63
|
exports.instalarAdaptador = instalarAdaptador;
|
|
63
64
|
exports.desinstalarExperiencia = desinstalarExperiencia;
|
|
65
|
+
exports.destinoPadraoDe = destinoPadraoDe;
|
|
64
66
|
exports.tabelaDeHosts = tabelaDeHosts;
|
|
65
67
|
exports.textoDosPitfalls = textoDosPitfalls;
|
|
66
68
|
exports.textoDaInstalacao = textoDaInstalacao;
|
|
@@ -84,102 +86,42 @@ const versao_1 = require("./versao");
|
|
|
84
86
|
const manifest_1 = require("./manifest");
|
|
85
87
|
const experiencia_1 = require("./experiencia");
|
|
86
88
|
const experiencia_instalacao_1 = require("./experiencia-instalacao");
|
|
89
|
+
const locale_1 = require("./locale");
|
|
90
|
+
const locale_adapter_1 = require("./locale-adapter");
|
|
91
|
+
/** RM-061 (F3b): a descricao e os pitfalls de cada host moram no catalogo (`locale-adapter.ts`), com o pt-BR como fonte. */
|
|
92
|
+
const DO_CATALOGO = locale_adapter_1.ADAPTER_PT_BR.hosts;
|
|
87
93
|
exports.HOSTS = {
|
|
88
94
|
'claude-code': {
|
|
89
95
|
host: 'claude-code',
|
|
90
|
-
descricao: '
|
|
96
|
+
descricao: DO_CATALOGO['claude-code'].descricao,
|
|
91
97
|
destinoPadrao: '.claude',
|
|
92
98
|
subdir: path.join('plugins', 'orkastery'),
|
|
93
99
|
levaCatalogo: true,
|
|
94
|
-
pitfalls: [
|
|
95
|
-
{
|
|
96
|
-
titulo: 'manifesto sem os caminhos das skills instala limpo e nao expoe nada',
|
|
97
|
-
detalhe: 'o plugin auto-descobre skills/<nome>/SKILL.md e para ai: ele nao desce nos buckets (core/, phases/, reviewers/, ...) que este catalogo usa, entao o plugin.json declara cada caminho de skill, um a um',
|
|
98
|
-
prova: 'claude plugin details orkastery # Skills (N) soma as skills do plugin.json e os comandos de commands/',
|
|
99
|
-
},
|
|
100
|
-
{
|
|
101
|
-
titulo: 'duas copias do catalogo divergem',
|
|
102
|
-
detalhe: 'a fonte unica e skills/ na raiz do produto; o INSTALADO.json guarda a origem e o sha256 de cada arquivo, e reinstalar CLASSIFICA cada divergencia por ele: o que so mudou no catalogo ressincroniza sozinho, o que voce editou barra e pede decisao por arquivo (--aceitar-catalogo ou --manter-copia). Editar a copia instalada e bandeira vermelha',
|
|
103
|
-
prova: 'ork adapter install claude-code --dry-run # mostra o que divergiu do catalogo',
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
titulo: 'hook com caminho relativo nao roda, e o guard vira decoracao',
|
|
107
|
-
detalhe: 'o hooks.json chama node "${CLAUDE_PLUGIN_ROOT}/hooks/ork-guard.js", nunca um caminho relativo ao diretorio de trabalho, que muda a cada worktree de thread',
|
|
108
|
-
prova: 'echo \'{"tool_name":"Bash","tool_input":{"command":"git add -A"}}\' | node <destino>/hooks/ork-guard.js ; echo "codigo: $?" # 2 = guard vivo',
|
|
109
|
-
},
|
|
110
|
-
],
|
|
100
|
+
pitfalls: DO_CATALOGO['claude-code'].pitfalls,
|
|
111
101
|
},
|
|
112
102
|
codex: {
|
|
113
103
|
host: 'codex',
|
|
114
|
-
descricao:
|
|
104
|
+
descricao: DO_CATALOGO.codex.descricao,
|
|
115
105
|
destinoPadrao: '.agents',
|
|
116
106
|
subdir: path.join('skills', 'orkastery'),
|
|
117
107
|
levaCatalogo: true,
|
|
118
|
-
pitfalls:
|
|
119
|
-
{
|
|
120
|
-
titulo: 'skills instaladas fora do projeto da sessao',
|
|
121
|
-
detalhe: 'Codex descobre .agents/skills a partir do diretorio da sessao ate a raiz do repositorio; outra worktree precisa da sua propria instalacao e comprovacao de descoberta',
|
|
122
|
-
prova: 'No Codex aberto no projeto instalado: $ork',
|
|
123
|
-
},
|
|
124
|
-
{
|
|
125
|
-
titulo: 'copia instalada diferente do catalogo',
|
|
126
|
-
detalhe: 'o recibo INSTALADO.json registra os arquivos e hashes dentro da pasta propria orkastery; uma edicao divergente barra a reinstalacao sem substituir arquivos de outras skills',
|
|
127
|
-
prova: 'ork adapter install codex --dry-run',
|
|
128
|
-
},
|
|
129
|
-
{
|
|
130
|
-
titulo: 'skill confundida com autorizacao de runtime',
|
|
131
|
-
detalhe: 'instalar instrucoes nao habilita permissoes, hooks ou sandbox; em projeto configurado, AGENTS.md recebe apenas o bloco reversível da experiência. Gates e preflight continuam no nucleo, e descoberta nao prova a jornada conversacional',
|
|
132
|
-
prova: 'ork doctor',
|
|
133
|
-
},
|
|
134
|
-
],
|
|
108
|
+
pitfalls: DO_CATALOGO.codex.pitfalls,
|
|
135
109
|
},
|
|
136
110
|
hermes: {
|
|
137
111
|
host: 'hermes',
|
|
138
|
-
descricao:
|
|
112
|
+
descricao: DO_CATALOGO.hermes.descricao,
|
|
139
113
|
destinoPadrao: '.hermes',
|
|
140
114
|
subdir: '',
|
|
141
115
|
levaCatalogo: false,
|
|
142
|
-
pitfalls:
|
|
143
|
-
{
|
|
144
|
-
titulo: 'ork fora do PATH do host',
|
|
145
|
-
detalhe: 'o host roda com ambiente mais enxuto que o terminal do builder e ~/.local/bin pode nao estar la; o plugin grava o caminho absoluto e o script honra ORK_BIN',
|
|
146
|
-
prova: 'ORK_BIN=$(command -v ork) ; "$ORK_BIN" doctor',
|
|
147
|
-
},
|
|
148
|
-
{
|
|
149
|
-
titulo: 'reimplementar o parse da #TAG no host',
|
|
150
|
-
detalhe: 'duas implementacoes divergem na primeira tag nova, e a divergencia aparece como thread aberta no modo errado, o que ninguem percebe ate a pausa que nao veio',
|
|
151
|
-
prova: 'ork modos --do-pedido "teste #Maestro" # a unica fonte do modo',
|
|
152
|
-
},
|
|
153
|
-
{
|
|
154
|
-
titulo: 'validar allowed_modes no host',
|
|
155
|
-
detalhe: 'um host que recusa o modo antes de chamar o ork recusa com a regra que ele tem em cache, nao com a do manifesto do projeto; deixe o ork thread new recusar, com erro tipado',
|
|
156
|
-
prova: 'ork thread new "teste" --mode look --dry-run',
|
|
157
|
-
},
|
|
158
|
-
],
|
|
116
|
+
pitfalls: DO_CATALOGO.hermes.pitfalls,
|
|
159
117
|
},
|
|
160
118
|
openclaw: {
|
|
161
119
|
host: 'openclaw',
|
|
162
|
-
descricao:
|
|
120
|
+
descricao: DO_CATALOGO.openclaw.descricao,
|
|
163
121
|
destinoPadrao: '.openclaw',
|
|
164
122
|
subdir: 'extensions/orkastery',
|
|
165
123
|
levaCatalogo: false,
|
|
166
|
-
pitfalls:
|
|
167
|
-
{
|
|
168
|
-
titulo: 'placeholder {{ork_bin}} que fica no arquivo',
|
|
169
|
-
detalhe: 'o entry executa o binario como ele esta: um placeholder nao renderizado cai no fallback (ORK_BIN ou o ork do PATH), e sem o fallback vira "comando nao encontrado" em toda tool, que a sessao so descobre depois de ja ter aberto thread na cabeca do agente',
|
|
170
|
-
prova: 'grep -c "{{" <destino>/extensions/orkastery/dist/index.js # precisa devolver 0',
|
|
171
|
-
},
|
|
172
|
-
{
|
|
173
|
-
titulo: 'argumento com espaco quebrado em varios argumentos',
|
|
174
|
-
detalhe: 'cada tool monta o comando como VETOR de argv, nunca como string de shell, para o pedido do builder chegar inteiro em --prompt; string de shell aqui vira injecao de comando com o texto do builder dentro',
|
|
175
|
-
prova: 'ork_phase_run com um prompt de varias linhas, conferido em ork phase list <thread>',
|
|
176
|
-
},
|
|
177
|
-
{
|
|
178
|
-
titulo: 'tool que reimplementa regra do nucleo',
|
|
179
|
-
detalhe: 'toda tool deste plugin e uma chamada de CLI e nada mais; tool nova que precisa de logica e sinal de que a logica pertence ao ork, com teste',
|
|
180
|
-
prova: 'ork eval # o corpus reprova host com regra de negocio duplicada',
|
|
181
|
-
},
|
|
182
|
-
],
|
|
124
|
+
pitfalls: DO_CATALOGO.openclaw.pitfalls,
|
|
183
125
|
},
|
|
184
126
|
};
|
|
185
127
|
exports.ORDEM_DOS_HOSTS = ['claude-code', 'codex', 'hermes', 'openclaw'];
|
|
@@ -231,6 +173,25 @@ function classificarDivergencia(shaDoCatalogo, shaDaCopia, shaDoRecibo) {
|
|
|
231
173
|
return 'copia-editada';
|
|
232
174
|
return 'ambos-andaram';
|
|
233
175
|
}
|
|
176
|
+
/** RM-061 (F3b, D4): as pastas das variantes inglesas, ao lado do catálogo (`core/assets` no repositório, `assets` no pacote). */
|
|
177
|
+
const PASTAS_DAS_VARIANTES = { skills: 'skills-en', references: 'references-en', adapters: 'adapters-en' };
|
|
178
|
+
/**
|
|
179
|
+
* RM-061 (F3b, D4): a variante inglesa de um arquivo `.md` do catálogo (`skills/<bucket>/<nome>/SKILL.md`,
|
|
180
|
+
* `references/<arquivo>.md`, `adapters/<host>/<relativo>.md`), quando existe; sem ela, `null` e o arquivo sai em pt-BR.
|
|
181
|
+
* A variante mora com o catálogo de onde o arquivo sai, nunca no pacote de outro: um catálogo sem `assets` instala em pt-BR.
|
|
182
|
+
* O par `orchestration-experience` e `orchestration-experience-pt-br` já é bilíngue e não tem variante.
|
|
183
|
+
*/
|
|
184
|
+
function varianteEmIngles(catalogo, origem) {
|
|
185
|
+
const m = /^(skills|references|adapters)\/(.+\.md)$/.exec(path.relative(catalogo, origem).split(path.sep).join('/'));
|
|
186
|
+
if (!m)
|
|
187
|
+
return null;
|
|
188
|
+
for (const assets of [path.join(catalogo, 'core', 'assets'), path.join(catalogo, 'assets')]) {
|
|
189
|
+
const candidato = path.join(assets, PASTAS_DAS_VARIANTES[m[1]], ...m[2].split('/'));
|
|
190
|
+
if (fs.existsSync(candidato))
|
|
191
|
+
return candidato;
|
|
192
|
+
}
|
|
193
|
+
return null;
|
|
194
|
+
}
|
|
234
195
|
function sha256(conteudo) {
|
|
235
196
|
return (0, node_crypto_1.createHash)('sha256').update(conteudo).digest('hex');
|
|
236
197
|
}
|
|
@@ -239,6 +200,9 @@ function listarArquivos(dir, prefixo = '') {
|
|
|
239
200
|
for (const entrada of fs.readdirSync(dir, { withFileTypes: true }).sort((a, b) => a.name.localeCompare(b.name))) {
|
|
240
201
|
const origem = path.join(dir, entrada.name);
|
|
241
202
|
const relativo = path.posix.join(prefixo, entrada.name);
|
|
203
|
+
// O cache de bytecode que o Python deixa no checkout nao e do catalogo: nao se instala nem entra no recibo.
|
|
204
|
+
if (entrada.name === '__pycache__' || entrada.name.endsWith('.pyc'))
|
|
205
|
+
continue;
|
|
242
206
|
if (entrada.isDirectory()) {
|
|
243
207
|
achados.push(...listarArquivos(origem, relativo));
|
|
244
208
|
}
|
|
@@ -264,14 +228,14 @@ function avisoDoOrkNoPath(emExecucao, versao, env = process.env) {
|
|
|
264
228
|
const doPath = (0, util_1.noPath)('ork', env);
|
|
265
229
|
if (!doPath || mesmoArquivo(doPath, emExecucao))
|
|
266
230
|
return undefined;
|
|
267
|
-
let outra
|
|
231
|
+
let outra;
|
|
268
232
|
try {
|
|
269
233
|
const saida = (0, node_child_process_1.execFileSync)(doPath, ['--version'], { encoding: 'utf8', timeout: 5000, stdio: ['ignore', 'pipe', 'ignore'], env });
|
|
270
|
-
outra = saida.trim().split('\n')[0]?.trim() ||
|
|
234
|
+
outra = saida.trim().split('\n')[0]?.trim() || undefined;
|
|
271
235
|
}
|
|
272
236
|
catch { /* o aviso sai mesmo sem a versão */ }
|
|
273
|
-
|
|
274
|
-
|
|
237
|
+
// RM-061 (F3b): o aviso nasce pelo catalogo e o texto da instalacao o remonta no locale do comando.
|
|
238
|
+
return (0, locale_1.textoDoCatalogo)((m) => m.adapter.orkNoPath(doPath, outra ?? m.adapter.versaoDesconhecida, emExecucao, versao));
|
|
275
239
|
}
|
|
276
240
|
/** Substitui os tres placeholders. Nao ha template engine aqui de proposito. */
|
|
277
241
|
function renderizarArquivo(conteudo, valores) {
|
|
@@ -300,7 +264,7 @@ function instalarAdaptador(host, opcoes = {}) {
|
|
|
300
264
|
? avisoDoOrkNoPath(opcoes.orkEmExecucao, versao) : undefined;
|
|
301
265
|
const dirDoHost = path.join(catalogo, 'adapters', host);
|
|
302
266
|
if (!fs.existsSync(dirDoHost)) {
|
|
303
|
-
throw new
|
|
267
|
+
throw new locale_1.ErroDoCatalogo((m) => m.adapter.adaptadorNaoExiste(host, dirDoHost));
|
|
304
268
|
}
|
|
305
269
|
const fontes = listarArquivos(dirDoHost).map(fonte => host === 'hermes' && fonte.relativo.startsWith('hitl-ingress/')
|
|
306
270
|
? { ...fonte, relativo: fonte.relativo.replace(/^hitl-ingress\//, 'plugins/orkastery-hitl/') } : fonte);
|
|
@@ -320,19 +284,28 @@ function instalarAdaptador(host, opcoes = {}) {
|
|
|
320
284
|
fontes.push({ origem: skill.caminho, relativo: path.posix.join('skills', skill.nome, 'SKILL.md') });
|
|
321
285
|
}
|
|
322
286
|
}
|
|
287
|
+
// RM-061 (F3b, D4): com o dono em inglês, o arquivo com variante sai dela, no mesmo destino; o recibo guarda a origem
|
|
288
|
+
// real, e reinstalar na outra língua troca no lugar a cópia intacta (`catalogo-andou`).
|
|
289
|
+
if (opcoes.locale === 'en') {
|
|
290
|
+
for (const fonte of fontes)
|
|
291
|
+
fonte.origem = varianteEmIngles(catalogo, fonte.origem) ?? fonte.origem;
|
|
292
|
+
}
|
|
323
293
|
// A experiência é opcional: manifesto com erro, bloco alheio ou caminho inadequado pulam só a
|
|
324
|
-
// ativação, com aviso, e o adaptador segue instalado como antes da RM-051.
|
|
325
|
-
|
|
294
|
+
// ativação, com aviso, e o adaptador segue instalado como antes da RM-051. RM-061 (F3b): o aviso nasce
|
|
295
|
+
// pelo catalogo e o texto da instalacao o remonta.
|
|
296
|
+
const pulado = (montar) => (0, locale_1.textoDoCatalogo)((m) => montar(m.adapter, m.adapter.segue));
|
|
326
297
|
const carregado = (0, manifest_1.carregarManifesto)(projeto);
|
|
327
298
|
let avisoExperiencia;
|
|
328
299
|
if (carregado?.raiz === projeto && carregado.erros.length) {
|
|
329
|
-
|
|
300
|
+
const erro = carregado.erros[0];
|
|
301
|
+
avisoExperiencia = pulado((a, segue) => a.puladoManifesto(erro, segue));
|
|
330
302
|
}
|
|
331
303
|
// Preferência inválida (ex.: experience: "false") não ativa nem remove nada: quem escreveu pode ter
|
|
332
304
|
// tentado desligar o pacote. Corrigir com ork onboarding set maestro volta a instalar.
|
|
333
305
|
const invalida = carregado?.raiz === projeto ? carregado.avisos.find(a => a.startsWith('experiencia.config.invalid')) : undefined;
|
|
334
|
-
if (!avisoExperiencia && invalida)
|
|
335
|
-
avisoExperiencia =
|
|
306
|
+
if (!avisoExperiencia && invalida) {
|
|
307
|
+
avisoExperiencia = (0, locale_1.textoDoCatalogo)((m) => m.adapter.puladoInvalida(m.onboarding.avisoDaPreferencia(invalida), m.adapter.segue));
|
|
308
|
+
}
|
|
336
309
|
const preferencias = carregado?.raiz === projeto && !avisoExperiencia ? (0, experiencia_1.resolverExperiencia)(carregado.manifesto.owner) : null;
|
|
337
310
|
const hostComBloco = host === 'codex' || host === 'claude-code';
|
|
338
311
|
// O bloco aponta o diretório relativo ao projeto: CLAUDE.md e AGENTS.md costumam ir ao repositório.
|
|
@@ -341,14 +314,15 @@ function instalarAdaptador(host, opcoes = {}) {
|
|
|
341
314
|
if (preferencias?.experience && host !== 'openclaw') {
|
|
342
315
|
const skillRelativa = host === 'hermes' ? `skills/${preferencias.skill}/SKILL.md`
|
|
343
316
|
: `skills/core/${preferencias.skill}/SKILL.md`;
|
|
317
|
+
const skill = preferencias.skill;
|
|
344
318
|
if (!fontes.some(f => f.relativo === skillRelativa)) {
|
|
345
|
-
avisoExperiencia =
|
|
319
|
+
avisoExperiencia = pulado((a, segue) => a.puladoSemSkill(skill, segue));
|
|
346
320
|
}
|
|
347
321
|
else if (hostComBloco && (diretorioExperiencia.startsWith('../') || path.isAbsolute(diretorioExperiencia))) {
|
|
348
|
-
avisoExperiencia =
|
|
322
|
+
avisoExperiencia = pulado((a, segue) => a.puladoForaDoProjeto(segue));
|
|
349
323
|
}
|
|
350
324
|
else if (hostComBloco && /[\r\n`]/.test(diretorioExperiencia)) {
|
|
351
|
-
avisoExperiencia =
|
|
325
|
+
avisoExperiencia = pulado((a, segue) => a.puladoCaminho(segue));
|
|
352
326
|
}
|
|
353
327
|
}
|
|
354
328
|
let planoExperiencia = null;
|
|
@@ -360,7 +334,7 @@ function instalarAdaptador(host, opcoes = {}) {
|
|
|
360
334
|
const motivo = e.message;
|
|
361
335
|
if (!/^experiencia\.(bloco\.conflict|path\.unsafe)/.test(motivo))
|
|
362
336
|
throw e;
|
|
363
|
-
avisoExperiencia =
|
|
337
|
+
avisoExperiencia = pulado((a, segue) => a.puladoBloco(motivo.startsWith('experiencia.path'), host, segue));
|
|
364
338
|
}
|
|
365
339
|
}
|
|
366
340
|
// O preflight cobre o destino e os arquivos do próprio adaptador antes de copiar o primeiro. Links
|
|
@@ -369,7 +343,7 @@ function instalarAdaptador(host, opcoes = {}) {
|
|
|
369
343
|
for (let atual = alvo; atual !== path.dirname(destino) && atual !== path.dirname(atual); atual = path.dirname(atual)) {
|
|
370
344
|
const stat = fs.lstatSync(atual, { throwIfNoEntry: false });
|
|
371
345
|
if (stat && (stat.isSymbolicLink() || (atual === alvo ? !stat.isFile() || stat.nlink !== 1 : !stat.isDirectory()))) {
|
|
372
|
-
throw
|
|
346
|
+
throw new locale_1.ErroDoCatalogo((m) => m.adapter.destinoInseguro);
|
|
373
347
|
}
|
|
374
348
|
}
|
|
375
349
|
}
|
|
@@ -559,82 +533,83 @@ function desinstalarExperiencia(projeto, host, dryRun = false) {
|
|
|
559
533
|
(0, experiencia_instalacao_1.aplicarExperiencia)(plano);
|
|
560
534
|
return { host, dryRun, arquivos: plano.mudancas.map(m => path.relative(plano.projeto, m.arquivo)) };
|
|
561
535
|
}
|
|
562
|
-
/**
|
|
536
|
+
/** O destino padrao de um host, relativo a raiz do projeto (`.claude/plugins/orkastery`). */
|
|
537
|
+
function destinoPadraoDe(host) {
|
|
538
|
+
const def = exports.HOSTS[host];
|
|
539
|
+
return `${def.destinoPadrao}${def.subdir ? '/' + def.subdir : ''}`;
|
|
540
|
+
}
|
|
541
|
+
/** Texto de `ork adapter list`, no locale ativo; a descricao de cada host vem do catalogo. */
|
|
563
542
|
function tabelaDeHosts() {
|
|
564
|
-
const
|
|
543
|
+
const m = (0, locale_1.msg)().adapter;
|
|
544
|
+
const linhas = [m.titulo, ''];
|
|
565
545
|
for (const host of exports.ORDEM_DOS_HOSTS) {
|
|
566
|
-
|
|
567
|
-
linhas.push(` ${
|
|
568
|
-
linhas.push(` ${' '.repeat(13)}
|
|
569
|
-
linhas.push(` ${' '.repeat(13)} catalogo de skills junto: ${def.levaCatalogo ? 'sim' : 'nao'}`);
|
|
546
|
+
linhas.push(` ${host.padEnd(13)} ${m.hosts[host].descricao}`);
|
|
547
|
+
linhas.push(` ${' '.repeat(13)} ${m.destinoPadrao(destinoPadraoDe(host))}`);
|
|
548
|
+
linhas.push(` ${' '.repeat(13)} ${m.catalogoJunto(exports.HOSTS[host].levaCatalogo)}`);
|
|
570
549
|
}
|
|
571
550
|
linhas.push('');
|
|
572
|
-
linhas.push(
|
|
573
|
-
linhas.push(
|
|
551
|
+
linhas.push(m.instaleCom);
|
|
552
|
+
linhas.push(m.zeroRegra);
|
|
574
553
|
return linhas.join('\n');
|
|
575
554
|
}
|
|
576
|
-
/** Texto dos pitfalls de um host, impresso no fim de toda instalacao. */
|
|
555
|
+
/** Texto dos pitfalls de um host, impresso no fim de toda instalacao, no locale ativo. */
|
|
577
556
|
function textoDosPitfalls(host) {
|
|
578
|
-
const
|
|
579
|
-
const linhas = [
|
|
580
|
-
|
|
557
|
+
const m = (0, locale_1.msg)().adapter;
|
|
558
|
+
const linhas = [m.tituloDosPitfalls(host), ''];
|
|
559
|
+
m.hosts[host].pitfalls.forEach((p, i) => {
|
|
581
560
|
linhas.push(` ${i + 1}. ${p.titulo}`);
|
|
582
561
|
linhas.push(` ${p.detalhe}`);
|
|
583
|
-
linhas.push(`
|
|
562
|
+
linhas.push(` ${m.prova(p.prova)}`);
|
|
584
563
|
linhas.push('');
|
|
585
564
|
});
|
|
586
565
|
return linhas.join('\n').replace(/\n$/, '');
|
|
587
566
|
}
|
|
588
|
-
/** Texto de `ork adapter install
|
|
567
|
+
/** Texto de `ork adapter install`, no locale ativo; os avisos que a instalacao montou sao remontados. */
|
|
589
568
|
function textoDaInstalacao(r) {
|
|
569
|
+
const m = (0, locale_1.msg)().adapter;
|
|
590
570
|
const linhas = [];
|
|
591
571
|
// Ensaio da 0.5.0: com o pacote ativo e pulado por aviso (catalogo fora do projeto), a linha dizia
|
|
592
572
|
// "desativada"; o aviso logo abaixo diz o motivo.
|
|
593
|
-
if (r.experiencia)
|
|
594
|
-
linhas.push(
|
|
595
|
-
|
|
596
|
-
`${r.experiencia.skill ? ` (${r.experiencia.skill})` : ''}.`);
|
|
573
|
+
if (r.experiencia) {
|
|
574
|
+
linhas.push(m.experiencia(r.experiencia.ativa ? 'ativa' : r.experiencia.aviso ? 'pulada' : 'desativada', r.experiencia.skill));
|
|
575
|
+
}
|
|
597
576
|
if (r.experiencia?.aviso)
|
|
598
|
-
linhas.push(
|
|
599
|
-
linhas.push(r.dryRun
|
|
600
|
-
? `Simulacao (--dry-run) da instalacao do adaptador ${r.host}: nada foi escrito.`
|
|
601
|
-
: r.ok
|
|
602
|
-
? `Arquivos do adaptador ${r.host} preparados.`
|
|
603
|
-
: `Instalacao do adaptador ${r.host} BARRADA: ha arquivo diferente no destino.`);
|
|
577
|
+
linhas.push(m.aviso((0, locale_1.remontar)(r.experiencia.aviso)));
|
|
578
|
+
linhas.push(r.dryRun ? m.simulacao(r.host) : r.ok ? m.preparados(r.host) : m.barrada(r.host));
|
|
604
579
|
// Ensaio de 03/10 (R6): a ativacao sai no comeco e de novo no fim, depois da lista de arquivos e dos
|
|
605
580
|
// pitfalls, para que o fim da saida diga o proximo passo.
|
|
606
581
|
const ativacao = [];
|
|
607
582
|
if (r.ok && !r.dryRun && r.host === 'claude-code') {
|
|
608
583
|
const destino = "'" + r.destino.replace(/'/g, "'\"'\"'") + "'";
|
|
609
|
-
linhas.push(
|
|
610
|
-
linhas.push(
|
|
584
|
+
linhas.push(m.claudeNaoVerificado);
|
|
585
|
+
linhas.push(m.claudeValide);
|
|
611
586
|
ativacao.push(` claude plugin validate ${destino}`);
|
|
612
587
|
ativacao.push(` claude plugin marketplace add ${destino} --scope project`);
|
|
613
588
|
ativacao.push(' claude plugin install orkastery@orkastery --scope project');
|
|
614
589
|
ativacao.push(' claude plugin list --json');
|
|
615
|
-
ativacao.push(
|
|
590
|
+
ativacao.push(m.claudeDepois);
|
|
616
591
|
}
|
|
617
592
|
else if (r.ok && !r.dryRun && r.host === 'codex') {
|
|
618
|
-
ativacao.push(
|
|
619
|
-
ativacao.push(
|
|
593
|
+
ativacao.push(m.codexAbra);
|
|
594
|
+
ativacao.push(m.codexNaoVerificado);
|
|
620
595
|
}
|
|
621
596
|
if (r.ok && !r.dryRun && (r.host === 'codex' || r.host === 'claude-code')) {
|
|
622
597
|
const projeto = "'" + r.projeto.replace(/'/g, "'\"'\"'") + "'";
|
|
623
|
-
ativacao.push(
|
|
598
|
+
ativacao.push(m.prepareMcp(projeto, r.host));
|
|
624
599
|
}
|
|
625
600
|
linhas.push(...ativacao);
|
|
626
601
|
if (ativacao.length)
|
|
627
|
-
linhas.push(
|
|
628
|
-
linhas.push(
|
|
629
|
-
linhas.push(
|
|
630
|
-
linhas.push(
|
|
602
|
+
linhas.push(m.consentimento);
|
|
603
|
+
linhas.push(m.catalogo(r.catalogo));
|
|
604
|
+
linhas.push(m.destino(r.destino));
|
|
605
|
+
linhas.push(m.ork(r.orkBin));
|
|
631
606
|
if (r.avisoOrk)
|
|
632
|
-
linhas.push(
|
|
607
|
+
linhas.push(m.avisoOrk((0, locale_1.remontar)(r.avisoOrk)));
|
|
633
608
|
linhas.push('');
|
|
634
609
|
const novos = r.arquivos.filter((a) => a.estado === 'novo').length;
|
|
635
610
|
const iguais = r.arquivos.filter((a) => a.estado === 'igual').length;
|
|
636
611
|
const catalogoAndou = r.conflitos.filter((a) => a.divergencia === 'catalogo-andou').length;
|
|
637
|
-
linhas.push(
|
|
612
|
+
linhas.push(m.arquivos(r.arquivos.length, novos, iguais, r.conflitos.length));
|
|
638
613
|
for (const a of r.arquivos) {
|
|
639
614
|
const marca = a.estado === 'novo' ? '+' : a.estado === 'igual' ? '=' : '!';
|
|
640
615
|
const porque = a.divergencia ? ` (${a.divergencia})` : '';
|
|
@@ -642,22 +617,17 @@ function textoDaInstalacao(r) {
|
|
|
642
617
|
}
|
|
643
618
|
// RM-059 (T0.7): arquivo de mod que saiu do catalogo sai da copia, para o despacho nao recusar o mod.
|
|
644
619
|
for (const rel of r.removidos ?? [])
|
|
645
|
-
linhas.push(
|
|
620
|
+
linhas.push(m.removido(rel, r.dryRun));
|
|
646
621
|
// I-43 (D5): o `--dir` na raiz avisa, em vez de reportar "tudo novo" com saida 0.
|
|
647
622
|
if (r.reciboVizinho) {
|
|
648
623
|
linhas.push('');
|
|
649
|
-
linhas.push(
|
|
650
|
-
linhas.push(` ${r.reciboVizinho}`);
|
|
651
|
-
linhas.push(' `--dir` e o destino COMPLETO, nao a raiz do projeto. Do jeito que esta, esta');
|
|
652
|
-
linhas.push(' instalacao criaria uma copia nova ao lado da que ja existe, e a que existe');
|
|
653
|
-
linhas.push(' ficaria sem conferencia nenhuma.');
|
|
624
|
+
linhas.push(...m.reciboVizinho(r.destino, r.reciboVizinho));
|
|
654
625
|
}
|
|
655
626
|
// I-43 (D5): o que o recibo garante seguro se resolve sozinho, e sai como uma linha
|
|
656
627
|
// de resumo em vez de virar decisao do operador.
|
|
657
628
|
if (catalogoAndou > 0) {
|
|
658
629
|
linhas.push('');
|
|
659
|
-
linhas.push(
|
|
660
|
-
linhas.push(' e quem mudou foi o catalogo. Sobrescrever nao perde trabalho de ninguem.');
|
|
630
|
+
linhas.push(...m.catalogoAndou(catalogoAndou));
|
|
661
631
|
}
|
|
662
632
|
if (!r.ok) {
|
|
663
633
|
// A pergunta de UMA linha, com o arquivo NOMEADO e as duas saidas reais. O `--dir`
|
|
@@ -667,13 +637,13 @@ function textoDaInstalacao(r) {
|
|
|
667
637
|
? r.destino.slice(r.projeto.length + 1)
|
|
668
638
|
: r.destino;
|
|
669
639
|
linhas.push('');
|
|
670
|
-
linhas.push(
|
|
640
|
+
linhas.push(m.precisamDeDecisao(r.precisamDeDecisao.length));
|
|
671
641
|
for (const a of r.precisamDeDecisao) {
|
|
672
642
|
linhas.push(` ${a.relativo} (${a.divergencia})`);
|
|
673
643
|
linhas.push(` $ diff -u ${a.origem} ${a.destino}`);
|
|
674
644
|
}
|
|
675
645
|
linhas.push('');
|
|
676
|
-
linhas.push(
|
|
646
|
+
linhas.push(m.resolva);
|
|
677
647
|
const exemplo = r.precisamDeDecisao[0]?.relativo ?? '<arquivo>';
|
|
678
648
|
linhas.push(` ork adapter install ${r.host} --dir ${dirEmUso} --aceitar-catalogo ${exemplo}`);
|
|
679
649
|
linhas.push(` ork adapter install ${r.host} --dir ${dirEmUso} --manter-copia ${exemplo}`);
|
|
@@ -682,7 +652,7 @@ function textoDaInstalacao(r) {
|
|
|
682
652
|
linhas.push(textoDosPitfalls(r.host));
|
|
683
653
|
if (ativacao.length) {
|
|
684
654
|
linhas.push('');
|
|
685
|
-
linhas.push(r.host === 'claude-code' ?
|
|
655
|
+
linhas.push(r.host === 'claude-code' ? m.proximoPassoClaude : m.proximoPasso);
|
|
686
656
|
linhas.push(...ativacao);
|
|
687
657
|
}
|
|
688
658
|
return linhas.join('\n');
|