@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/leases.js
CHANGED
|
@@ -97,6 +97,7 @@ const horario_1 = require("./horario");
|
|
|
97
97
|
const conducao_texto_1 = require("./conducao-texto");
|
|
98
98
|
const ledger_1 = require("./ledger");
|
|
99
99
|
const thread_1 = require("./thread");
|
|
100
|
+
const locale_1 = require("./locale");
|
|
100
101
|
/** Nome do lease que serializa o merge na base (visao, paridade 5). */
|
|
101
102
|
exports.LEASE_MAIN_TREE = 'main-tree';
|
|
102
103
|
/** TTL padrao de 30 minutos: um SHIP que passe disso deixou de existir. */
|
|
@@ -1033,24 +1034,25 @@ function adquirirRegiao(raiz, nome, opcoes) {
|
|
|
1033
1034
|
}
|
|
1034
1035
|
/** Texto de `ork lease list`: leases ativos, familias e a fila por colisao. */
|
|
1035
1036
|
function tabelaDeLeases(raiz) {
|
|
1037
|
+
const m = (0, locale_1.msg)().operacao.restante.lease;
|
|
1036
1038
|
const emDisco = leasesEmDisco(raiz);
|
|
1037
1039
|
const fila = lerFila(raiz);
|
|
1038
|
-
const linhas = [
|
|
1040
|
+
const linhas = [m.titulo, ''];
|
|
1039
1041
|
const principal = (0, estado_thread_1.raizDoEstado)(raiz);
|
|
1040
1042
|
if (emDisco.length === 0) {
|
|
1041
|
-
linhas.push(
|
|
1043
|
+
linhas.push(m.nenhum);
|
|
1042
1044
|
}
|
|
1043
1045
|
else {
|
|
1044
1046
|
for (const { lease: l, legado } of emDisco) {
|
|
1045
|
-
const situacao = expirado(l) ?
|
|
1046
|
-
linhas.push(
|
|
1047
|
-
linhas.push(
|
|
1048
|
-
linhas.push(
|
|
1047
|
+
const situacao = expirado(l) ? m.situacao.vencido : m.situacao.ativo;
|
|
1048
|
+
linhas.push(m.item(textoSeguro(l.nome), tipoDoLease(l.nome), textoSeguro(l.thread), situacao));
|
|
1049
|
+
linhas.push(m.periodo((0, horario_1.formatarDataHora)(l.adquiridoEm), (0, horario_1.formatarDataHora)(l.expiraEm), l.pid));
|
|
1050
|
+
linhas.push(m.motivo(textoSeguro(l.motivo)));
|
|
1049
1051
|
// RM-036: a copia antiga e somente lida, ate vencer ou encerrar a janela.
|
|
1050
1052
|
if (legado) {
|
|
1051
1053
|
const relativo = path.relative(principal, legado);
|
|
1052
1054
|
const onde = relativo && !relativo.startsWith('..') && !path.isAbsolute(relativo) ? relativo : legado;
|
|
1053
|
-
linhas.push(
|
|
1055
|
+
linhas.push(m.legado(textoSeguro(onde)));
|
|
1054
1056
|
}
|
|
1055
1057
|
// I-36: o lease de execucao diz quem conduz, com a mesma linha das outras superficies.
|
|
1056
1058
|
const conducao = (0, conducao_texto_1.conducaoDoLease)(l);
|
|
@@ -1088,15 +1090,15 @@ function tabelaDeLeases(raiz) {
|
|
|
1088
1090
|
}
|
|
1089
1091
|
if (tipoDoLease(nome) === 'exec')
|
|
1090
1092
|
continue;
|
|
1091
|
-
linhas.push(
|
|
1092
|
-
linhas.push(
|
|
1093
|
+
linhas.push(m.legadoInvalido(textoSeguro(arquivo)));
|
|
1094
|
+
linhas.push(m.legadoPreservado);
|
|
1093
1095
|
}
|
|
1094
1096
|
}
|
|
1095
1097
|
linhas.push('');
|
|
1096
1098
|
// Consulta nao recolhe candidatos: mostra a fila, inclusive sobras de SIGKILL.
|
|
1097
1099
|
const pasta = dirLeases(raiz);
|
|
1098
1100
|
const retomadas = fs.existsSync(pasta) ? fs.readdirSync(pasta).filter((n) => n.endsWith('.json.retomadas')).sort() : [];
|
|
1099
|
-
linhas.push(
|
|
1101
|
+
linhas.push(m.filaRetomada(retomadas.length));
|
|
1100
1102
|
for (const nome of retomadas) {
|
|
1101
1103
|
const dir = path.join(pasta, nome);
|
|
1102
1104
|
linhas.push(` ${textoSeguro(nome)}`);
|
|
@@ -1108,25 +1110,24 @@ function tabelaDeLeases(raiz) {
|
|
|
1108
1110
|
if (!c)
|
|
1109
1111
|
continue;
|
|
1110
1112
|
const idade = Math.max(0, Date.now() - c.stat.mtimeMs), vencido = idade >= exports.TTL_PADRAO_MS;
|
|
1111
|
-
linhas.push(
|
|
1113
|
+
linhas.push(m.candidato(textoSeguro(c.nome), c.pid, c.ticket, Math.floor(idade / 1000)));
|
|
1112
1114
|
if (vencido)
|
|
1113
|
-
linhas.push(
|
|
1115
|
+
linhas.push(m.prazo);
|
|
1114
1116
|
}
|
|
1115
1117
|
}
|
|
1116
1118
|
catch {
|
|
1117
|
-
linhas.push(
|
|
1119
|
+
linhas.push(m.filaInsegura);
|
|
1118
1120
|
}
|
|
1119
1121
|
}
|
|
1120
1122
|
const merge = fila.filter((p) => p.tipo === 'main-tree');
|
|
1121
1123
|
const regiao = fila.filter((p) => p.tipo !== 'main-tree');
|
|
1122
|
-
linhas.push(
|
|
1124
|
+
linhas.push(m.filaMerge(merge.length));
|
|
1123
1125
|
merge.forEach((p, i) => {
|
|
1124
|
-
linhas.push(
|
|
1126
|
+
linhas.push(m.esperaMerge(i + 1, textoSeguro(p.thread), (0, horario_1.formatarDesde)(p.desdeEm), textoSeguro(p.bloqueadaPor)));
|
|
1125
1127
|
});
|
|
1126
|
-
linhas.push(
|
|
1128
|
+
linhas.push(m.filaRegiao(regiao.length));
|
|
1127
1129
|
regiao.forEach((p, i) => {
|
|
1128
|
-
linhas.push(
|
|
1129
|
-
`(thread ${textoSeguro(p.bloqueadaPor)}) desde ${(0, horario_1.formatarDesde)(p.desdeEm)}`);
|
|
1130
|
+
linhas.push(m.esperaRegiao(i + 1, textoSeguro(p.thread), textoSeguro(p.nome), textoSeguro(p.colidiuCom), textoSeguro(p.bloqueadaPor), (0, horario_1.formatarDesde)(p.desdeEm)));
|
|
1130
1131
|
});
|
|
1131
1132
|
if (emDisco.length > 0 || fila.length > 0)
|
|
1132
1133
|
linhas.push((0, horario_1.legendaDoFuso)());
|
package/dist/ledger-stats.js
CHANGED
|
@@ -45,6 +45,7 @@ const ledger_1 = require("./ledger");
|
|
|
45
45
|
const util_1 = require("./util");
|
|
46
46
|
const horario_1 = require("./horario");
|
|
47
47
|
const hitl_tempo_parado_1 = require("./hitl-tempo-parado");
|
|
48
|
+
const locale_1 = require("./locale");
|
|
48
49
|
const MOTIVOS_PREVENTIVOS = new Set([
|
|
49
50
|
'policy.violation', 'cost.violation', 'verify.regression', 'claims.failed', 'claims.unverifiable',
|
|
50
51
|
]);
|
|
@@ -260,27 +261,27 @@ function registrarEstimativaPlano(raiz, threadId, dados) {
|
|
|
260
261
|
throw Error('ledger.estimate.head-unavailable');
|
|
261
262
|
return (0, ledger_1.registrar)((0, thread_1.dirThread)(raiz, threadId), threadId, 'plan_estimate', { fase: 'PLAN', unidade: 'hours', semIaHoras: dados.semIaHoras, iaSemOrkHoras: dados.iaSemOrkHoras, por: dados.por, metodo: dados.metodo, premissas: dados.premissas, incerteza: dados.incerteza ?? 'nao informada', head: head.stdout.trim() });
|
|
262
263
|
}
|
|
263
|
-
const minutos = (ms) => ms === null ?
|
|
264
|
+
const minutos = (ms) => ms === null ? (0, locale_1.msg)().operacao.ledger.semResposta : `${(ms / 60_000).toFixed(1)} min`;
|
|
264
265
|
/** RM-057: uma linha, com a meta ao lado da mediana, para o dono ver o tempo parado sem abrir o JSON. */
|
|
265
266
|
function linhaDoHitlDeConducao(h) {
|
|
266
|
-
const
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
`texto fora da excecao ${h.emTexto.foraDaExcecao}`;
|
|
267
|
+
const m = (0, locale_1.msg)().operacao.ledger;
|
|
268
|
+
const meta = h.dentroDaMeta === null ? '' : h.dentroDaMeta ? m.metaDentro : m.metaFora;
|
|
269
|
+
return m.hitl(h.pedidos, (h.paradoMs / 3_600_000).toFixed(2), minutos(h.medianaRespostaMs), meta, h.abertos, h.emTexto.foraDaExcecao);
|
|
270
270
|
}
|
|
271
271
|
function textoDasEstatisticas(r) {
|
|
272
|
-
const
|
|
272
|
+
const m = (0, locale_1.msg)().operacao.ledger;
|
|
273
|
+
const dinheiro = r.custoReferencia.valor === null ? m.semCobertura : `USD ${r.custoReferencia.valor.toFixed(6)}`;
|
|
273
274
|
return [
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
275
|
+
m.periodo((0, horario_1.formatarDataHora)(r.periodo.desde), (0, horario_1.formatarDataHoraRotulada)(r.periodo.ate), r.periodo.intervalo),
|
|
276
|
+
m.sessoes(r.threads, r.sessoes.concluidas, r.sessoes.despachadas),
|
|
277
|
+
m.throughput(r.throughput.ships, r.sessoes.retries),
|
|
278
|
+
m.execucao(r.execucao.horas.toFixed(2), r.execucao.cobertura.medidas, r.execucao.cobertura.semMedida),
|
|
279
|
+
m.tokens(r.tokens.total, r.tokens.input, r.tokens.cachedInput, r.tokens.output),
|
|
280
|
+
m.custo(dinheiro),
|
|
281
|
+
m.espera((r.esperaHumana.milissegundos / 3_600_000).toFixed(2), r.esperaHumana.abertas),
|
|
281
282
|
linhaDoHitlDeConducao(r.hitlDeConducao),
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
...r.qualidade.observacoes.map(o =>
|
|
283
|
+
m.riscos(r.riscosPreventivos.total),
|
|
284
|
+
m.estimativas(r.estimativasPlano.amostras),
|
|
285
|
+
...r.qualidade.observacoes.map(o => m.cobertura(m.observacao(o))),
|
|
285
286
|
].join('\n');
|
|
286
287
|
}
|
package/dist/ledger.js
CHANGED
|
@@ -52,6 +52,7 @@ const path = __importStar(require("node:path"));
|
|
|
52
52
|
const util_1 = require("./util");
|
|
53
53
|
const node_crypto_1 = require("node:crypto");
|
|
54
54
|
const company_brain_journal_1 = require("./company-brain-journal");
|
|
55
|
+
const locale_1 = require("./locale");
|
|
55
56
|
/** Tipos de evento do ledger. B0 abriu a lista; o B1 acrescenta os seus. */
|
|
56
57
|
exports.TIPOS_DE_EVENTO = {
|
|
57
58
|
// Bloco B0
|
|
@@ -77,6 +78,8 @@ exports.TIPOS_DE_EVENTO = {
|
|
|
77
78
|
shipIniciado: 'ship_started',
|
|
78
79
|
shipConcluido: 'ship_done',
|
|
79
80
|
shipBloqueado: 'ship_blocked',
|
|
81
|
+
// Security scan: a loop category was not scanned for the candidate SHA and a human authorized the delivery anyway.
|
|
82
|
+
entregaSemScanAutorizada: 'ship_unscanned_authorized',
|
|
80
83
|
// RM-059 (F7, T7.1): o `ork ship publicar` publicou a branch ou abriu o PR, com a prova do `ls-remote`.
|
|
81
84
|
shipPublicado: 'ship_published',
|
|
82
85
|
/**
|
|
@@ -102,6 +105,13 @@ exports.TIPOS_DE_EVENTO = {
|
|
|
102
105
|
handoffRecuperado: 'handoff_recalled',
|
|
103
106
|
// Bloco B2: worktree gerenciada, fila de leases, escalonador e MASTER/score
|
|
104
107
|
worktreeGarantida: 'worktree_ensured',
|
|
108
|
+
/** RM-037 (defeito 2 de 19 e 20/10/2026): o preparo de `worktree.dependencias` na worktree nova. */
|
|
109
|
+
worktreeDependencias: 'worktree_dependencias',
|
|
110
|
+
/**
|
|
111
|
+
* RM-037 (CHECK 3 da ork-rm037defeit2): o preparo que a criacao adiou (o passo do arco abre a thread sob a trava de
|
|
112
|
+
* despacho); a baseline e o verify o rodam antes do primeiro comando.
|
|
113
|
+
*/
|
|
114
|
+
worktreeDependenciasPendentes: 'worktree_dependencias_pendentes',
|
|
105
115
|
worktreeSincronizada: 'worktree_synced',
|
|
106
116
|
worktreeAuditada: 'worktree_audited',
|
|
107
117
|
worktreeLiberada: 'worktree_released',
|
|
@@ -186,9 +196,28 @@ exports.TIPOS_DE_EVENTO = {
|
|
|
186
196
|
// o crontab e do usuario na maquina, nao de uma thread. Escritor: `fabrica-batida.ts`.
|
|
187
197
|
batidaInstalada: 'batida_instalada',
|
|
188
198
|
batidaRemovida: 'batida_removida',
|
|
199
|
+
// RM-063 (F4): um degrau da escada de recuperacao do runtime (reerguer o daemon, o fallback do bloco, outro
|
|
200
|
+
// perfil), feito, pulado ou falho, com o destino e o mesmo sha256 do prompt. Escritor: `runtime-escada.ts`.
|
|
201
|
+
recuperacaoDoRuntime: 'runtime_recuperacao',
|
|
202
|
+
// RM-063 (F5): uma acao da varredura (limpar sessao fantasma, registrar a entrega de PR mesclado, MASTER por omissao),
|
|
203
|
+
// feita ou recusada, com a autorizacao duravel do dono que a permitiu. Escritor: `varredura-acoes.ts`.
|
|
204
|
+
acaoDaVarredura: 'varredura_acao',
|
|
205
|
+
// RM-063 (F6): o dono foi avisado de que a maquina esta ociosa (vaga livre e item reservado para ela sem ninguem
|
|
206
|
+
// trabalhando), uma linha por episodio, no ledger do projeto. Escritor: a varredura (`pulse-delivery.ts`).
|
|
207
|
+
maquinaOciosaAvisada: 'maquina_ociosa_avisada',
|
|
208
|
+
// RM-063 (F7): o dono gravou a autorizacao duravel desta maquina (`ork conducao autorizar`), no ledger do projeto, com
|
|
209
|
+
// quem autorizou, ate quando, o que pode e a que ela substituiu. Escritor: `autorizacao-duravel.ts`.
|
|
210
|
+
autorizacaoConcedida: 'autorizacao_concedida',
|
|
189
211
|
// RM-059 (F6, T6.4): a Sentinela do Condutor ligou ou desligou nesta maquina (ledger do projeto, so na troca).
|
|
190
212
|
sentinelaLigada: 'sentinela_ligada',
|
|
191
213
|
sentinelaDesligada: 'sentinela_desligada',
|
|
214
|
+
// RM-059 (F9, T9.1): a resposta de sessao `claude-bg` pelo Mensageiro de Sessoes (`entrega-por-mod.ts`), sem o
|
|
215
|
+
// texto, so o sha256 do corpo. Na fila: o `enviar` do controle por mod, no servidor do dono que recebeu a resposta.
|
|
216
|
+
// Enviada: a `ork_session_outbox` com o resultado do `$.session.send`. Reservada: a `ork_session_inbox` do servidor
|
|
217
|
+
// preso ao despacho, quando a conferencia no receptor passa. O `session_answered` sai da reconciliacao de sempre.
|
|
218
|
+
entregaNaFila: 'session_delivery_queued',
|
|
219
|
+
entregaEnviada: 'session_delivery_sent',
|
|
220
|
+
entregaReservada: 'session_delivery_reserved',
|
|
192
221
|
};
|
|
193
222
|
/**
|
|
194
223
|
* I-41 (GO-FIX 1, B4 e D11): o rastro tipado da decisao autonoma.
|
|
@@ -204,7 +233,8 @@ function exigirRastroDeDecisaoAutonoma(dados) {
|
|
|
204
233
|
for (const campo of ['quemDecidiu', 'evidencia', 'razao']) {
|
|
205
234
|
const v = dados[campo];
|
|
206
235
|
if (typeof v !== 'string' || !v.trim() || v.length > 1000 || /[\x00-\x08\x0b-\x1f\x7f]/.test(v)) {
|
|
207
|
-
|
|
236
|
+
// RM-061 F3c: a recusa sai do catalogo, na lingua de quem a le; o pt-BR e o de sempre.
|
|
237
|
+
throw new locale_1.ErroDoCatalogo((m) => m.decisao.rastroObrigatorio(campo));
|
|
208
238
|
}
|
|
209
239
|
}
|
|
210
240
|
}
|
package/dist/licoes.js
CHANGED
|
@@ -58,6 +58,7 @@ const path = __importStar(require("node:path"));
|
|
|
58
58
|
const estado_thread_1 = require("./estado-thread");
|
|
59
59
|
const ledger_1 = require("./ledger");
|
|
60
60
|
const policies_1 = require("./policies");
|
|
61
|
+
const locale_1 = require("./locale");
|
|
61
62
|
/** O que evita cada bloqueio, na forma de comando. Sem dica, a licao so conta a recorrencia. */
|
|
62
63
|
exports.DICA_DO_MOTIVO = {
|
|
63
64
|
'claims.failed': 'rode o comando da claim antes de registra-la; claim sem prova local volta como GO-FIX',
|
|
@@ -154,17 +155,16 @@ const curto = (t, teto) => (t.length > teto ? `${t.slice(0, teto - 3)}...` : t);
|
|
|
154
155
|
function textoDasLicoes(r) {
|
|
155
156
|
if (r.threads === 0 || (r.motivos.length === 0 && r.classes.length === 0 && r.recentes.length === 0))
|
|
156
157
|
return '';
|
|
157
|
-
const
|
|
158
|
+
const m = (0, locale_1.msg)().operacao.restante.licoes;
|
|
159
|
+
const linhas = [m.resumo(r.threads)];
|
|
158
160
|
for (const m of r.motivos) {
|
|
159
|
-
linhas.push(
|
|
160
|
-
(m.dica ? `; o que evita: ${m.dica}` : ''));
|
|
161
|
+
linhas.push((0, locale_1.msg)().operacao.restante.licoes.bloqueio(m.nome, m.threads.length, m.threads.length === 1 ? 'thread' : 'threads', m.dica));
|
|
161
162
|
}
|
|
162
163
|
for (const c of r.classes) {
|
|
163
|
-
linhas.push(
|
|
164
|
-
(c.dica ? `; o que evita: ${c.dica}` : ''));
|
|
164
|
+
linhas.push(m.classe(c.nome, c.threads.length, c.threads.length === 1 ? 'thread' : 'threads', c.dica));
|
|
165
165
|
}
|
|
166
166
|
for (const l of r.recentes)
|
|
167
|
-
linhas.push(
|
|
167
|
+
linhas.push(m.nota(l.thread, l.score, curto(l.justificativa, 160)));
|
|
168
168
|
return linhas.join('\n');
|
|
169
169
|
}
|
|
170
170
|
/** Janela e piso da recorrencia que vira proposta de policy. */
|
|
@@ -208,16 +208,17 @@ function registrarPropostasNovas(raiz, agoraIso = new Date().toISOString()) {
|
|
|
208
208
|
}
|
|
209
209
|
/** `ork licoes`: o que volta no proximo GOAL e PLAN, e as propostas de policy. */
|
|
210
210
|
function textoDeLicoes(raiz, agoraIso = new Date().toISOString()) {
|
|
211
|
+
const m = (0, locale_1.msg)().operacao.restante.licoes;
|
|
211
212
|
const resumo = resumoDasLicoes(raiz, null);
|
|
212
|
-
const linhas = [
|
|
213
|
-
linhas.push(textoDasLicoes(resumo) ||
|
|
213
|
+
const linhas = [m.titulo, ''];
|
|
214
|
+
linhas.push(textoDasLicoes(resumo) || m.nenhuma);
|
|
214
215
|
const propostas = propostasDePolicy(raiz, agoraIso);
|
|
215
216
|
linhas.push('');
|
|
216
|
-
linhas.push(
|
|
217
|
+
linhas.push(m.propostas(exports.PISO_DA_PROPOSTA, exports.JANELA_DA_PROPOSTA_DIAS));
|
|
217
218
|
if (propostas.length === 0)
|
|
218
|
-
linhas.push(
|
|
219
|
+
linhas.push(m.propostaNenhuma);
|
|
219
220
|
for (const p of propostas)
|
|
220
221
|
linhas.push(` ${p.chave} em ${p.threads.length} threads (${p.threads.slice(0, 5).join(', ')})`, ` ${p.sugestao}`);
|
|
221
|
-
linhas.push('',
|
|
222
|
+
linhas.push('', m.fecho);
|
|
222
223
|
return linhas.join('\n');
|
|
223
224
|
}
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* RM-061, fatia F3b: a familia `accounts` do catalogo de mensagens (`ork accounts list|add|remove|check|esgotamentos`),
|
|
4
|
+
* a tabela dos perfis, o relatorio dos esgotamentos e as recusas do registro de perfis (`runtime-profiles.ts`). O pt-BR e
|
|
5
|
+
* a fonte; o ingles e tipado por ele. Sem import do nucleo.
|
|
6
|
+
*
|
|
7
|
+
* O id, o runtime, o diretorio e o motivo tipado sao dado e saem iguais; o estado de um perfil (dado do store e do
|
|
8
|
+
* `--json`) so se traduz na impressao, pelo id. O que o store grava (`ultimaFalha.detalhe`) e o limite que o `--json`
|
|
9
|
+
* dos esgotamentos leva saem sempre do pt-BR. As recusas `runtime.profiles.*` nascem por `ErroDoCatalogo`, com o codigo
|
|
10
|
+
* tipado igual nas duas linguas.
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.ACCOUNTS_EN = exports.ACCOUNTS_PT_BR = void 0;
|
|
14
|
+
/**
|
|
15
|
+
* O detalhe da conferencia de login que o proprio ork escreve (`conferirAuth` do claude e do codex) e dado: vai ao store
|
|
16
|
+
* em pt-BR e so a impressao o traduz, pela frase exata. A saida do CLI que vem dentro dele (o trecho do `codex`) segue
|
|
17
|
+
* como veio.
|
|
18
|
+
*/
|
|
19
|
+
const DETALHES_DO_LOGIN_EN = [
|
|
20
|
+
[/^claude auth status sem resposta \(timeout, sinal ou binario ausente\)$/, () => 'claude auth status gave no answer (timeout, signal or missing binary)'],
|
|
21
|
+
[/^claude auth status sem JSON legivel \(codigo (.+)\)$/, (codigo) => `claude auth status gave no readable JSON (exit code ${codigo})`],
|
|
22
|
+
[/^claude auth status sem JSON legivel$/, () => 'claude auth status gave no readable JSON'],
|
|
23
|
+
[/^claude auth status respondeu por outro diretorio de configuracao; perfil nao aplicado$/,
|
|
24
|
+
() => 'claude auth status answered for another configuration directory; profile not applied'],
|
|
25
|
+
[/^claude auth status: provider pago \((.+)\); so a assinatura claude\.ai despacha$/,
|
|
26
|
+
(partes) => `claude auth status: paid provider (${partes}); only the claude.ai subscription dispatches`],
|
|
27
|
+
[/^codex login status sem resposta \(timeout, sinal ou binario ausente\)$/, () => 'codex login status gave no answer (timeout, signal or missing binary)'],
|
|
28
|
+
[/^codex login status saiu (-?\d+)(: [\s\S]*)?$/, (codigo, resto) => `codex login status exited ${codigo}${resto ?? ''}`],
|
|
29
|
+
[/^codex login status: login por API key \(provider pago\)$/, () => 'codex login status: API key login (paid provider)'],
|
|
30
|
+
[/^codex login status: login sem assinatura ChatGPT comprovada \(tratado como provider pago\)$/,
|
|
31
|
+
() => 'codex login status: login without a proven ChatGPT subscription (treated as a paid provider)'],
|
|
32
|
+
];
|
|
33
|
+
const ESTADOS_EN = {
|
|
34
|
+
ativo: 'active', esgotado: 'exhausted', 'sem-auth': 'no-auth', 'provider-pago': 'paid-provider', desativado: 'disabled',
|
|
35
|
+
};
|
|
36
|
+
exports.ACCOUNTS_PT_BR = {
|
|
37
|
+
semPerfis: 'Nenhum perfil configurado: cada runtime despacha pelo ambiente do processo.',
|
|
38
|
+
colunas: ['PERFIL', 'RUNTIME', 'DIRETORIO', 'ESTADO', 'ESGOTADO ATE', 'ULTIMO USO', 'ULTIMA FALHA'],
|
|
39
|
+
/** O estado gravado no store, como o texto o mostra. */
|
|
40
|
+
estado: (estado) => estado,
|
|
41
|
+
falhaEm: (motivo, quando) => `${motivo} em ${quando}`,
|
|
42
|
+
usoAdd: 'uso: ork accounts add <id> --runtime claude-bg|codex --dir <diretorio> [--sem-login]',
|
|
43
|
+
reativado: (id) => `Perfil ${id} reativado: mesmo id, runtime e diretorio do perfil desativado.`,
|
|
44
|
+
recusado: (erro) => `perfil recusado: ${erro}`,
|
|
45
|
+
loginPendente: (variavel, dir, comando, id) => `Login pendente: rode ${variavel}=${dir} ${comando} e depois ork accounts check ${id}`,
|
|
46
|
+
resultadoAdd: (id, runtime, dir, situacao) => `Perfil ${id} (${runtime}) em ${dir}: ${situacao}`,
|
|
47
|
+
conferido: 'login de assinatura conferido',
|
|
48
|
+
/** O detalhe da conferencia de login (dado do store), como a impressao o mostra. */
|
|
49
|
+
detalheDoLogin: (detalhe) => detalhe,
|
|
50
|
+
inconclusivaAdd: (detalhe) => `conferencia de login inconclusiva (${detalhe}); o proximo despacho confere de novo`,
|
|
51
|
+
pagoAdd: (detalhe) => `provider pago (${detalhe}); nunca recebe despacho`,
|
|
52
|
+
semLoginAdd: (detalhe) => `sem login (${detalhe}); fora do rodizio`,
|
|
53
|
+
usoRemove: 'uso: ork accounts remove <id>',
|
|
54
|
+
desativado: (id) => `Perfil ${id} desativado: o diretorio e o login do CLI ficam onde estao.`,
|
|
55
|
+
perfilAtivoNaoExiste: (alvo) => `perfil ativo "${alvo}" nao existe (veja: ork accounts list)`,
|
|
56
|
+
resultadoCheck: (id, runtime, situacao) => `${id} (${runtime}): ${situacao}`,
|
|
57
|
+
inconclusivaCheck: (detalhe) => `conferencia de login inconclusiva, estado mantido (${detalhe})`,
|
|
58
|
+
pagoCheck: (detalhe) => `provider pago, nunca despacha (${detalhe})`,
|
|
59
|
+
semLoginCheck: (detalhe) => `sem login (${detalhe})`,
|
|
60
|
+
tipoDeLimite: (tipo) => ({ sessao: 'sessao', semanal: 'semanal', 'gasto-admin': 'gasto definido pelo admin',
|
|
61
|
+
outro: 'outro limite', nenhum: 'nenhum limite observado' }[tipo] ?? tipo),
|
|
62
|
+
limiteDaConta: (limite) => `limite: ${limite}`,
|
|
63
|
+
cotaMedida: (usada, limite, unidade) => `${usada}/${limite}${unidade === '%' ? '%' : ` ${unidade ?? 'unidades'}`} (medida pelo runtime)`,
|
|
64
|
+
cotaIndisponivel: 'nao exposta pelo runtime',
|
|
65
|
+
cotaDaConta: (cota) => `cota: ${cota}`,
|
|
66
|
+
sessaoSemVinculo: (sessao) => `sessao:${sessao}`,
|
|
67
|
+
cargaDaConta: (carga) => `roda agora: ${carga}`,
|
|
68
|
+
cargaVazia: 'roda agora: nada',
|
|
69
|
+
cargaInconclusiva: 'roda agora: inventario inconclusivo',
|
|
70
|
+
voltaEm: (quando) => `volta: ${quando}`,
|
|
71
|
+
voltaSemMedida: 'volta: sem prazo medido',
|
|
72
|
+
marcaExpirada: 'marca vencida expirada nesta conferencia',
|
|
73
|
+
periodoInvalido: (erro) => `${erro} (use --desde 7d, 24h, 30m ou uma data ISO)`,
|
|
74
|
+
desconhecido: (sub) => `subcomando desconhecido: accounts ${sub} (use list, add, remove, check ou esgotamentos)`,
|
|
75
|
+
// ork accounts esgotamentos
|
|
76
|
+
esgotamentosTitulo: (desde, ate, intervalo) => `Esgotamentos de conta ${desde} ate ${ate} ${intervalo}`,
|
|
77
|
+
marcasVivas: (n) => ` marcas vivas no registro: ${n}`,
|
|
78
|
+
marca: (conta, runtime, estado, desde, ate, projeto, motivo) => ` conta ${conta} ${runtime} ${estado} desde ${desde}, ${ate === null ? 'sem prazo' : `ate ${ate}`} visto em ${projeto} (${motivo})`,
|
|
79
|
+
projetosLidos: (lista) => ` projetos lidos: ${lista ?? 'nenhum registrado'}`,
|
|
80
|
+
projetoLido: (nome, despachos) => `${nome} (${despachos === null ? 'fora do disco' : `${despachos} despacho(s) com perfil`})`,
|
|
81
|
+
despachosMarcados: (n) => ` despachos em conta marcada por outro projeto: ${n}`,
|
|
82
|
+
colunasDosDespachos: ['QUANDO', 'PROJETO', 'THREAD', 'FASE', 'PERFIL', 'CONTA', 'MARCADA POR'],
|
|
83
|
+
limite: (limite) => ` limite: ${limite}`,
|
|
84
|
+
/** O limite que o `--json` dos esgotamentos leva (dado, sempre em pt-BR); a impressao o mostra no locale do comando. */
|
|
85
|
+
limiteDoRelatorio: 'o registro guarda so as marcas vivas (uso bem sucedido, login reconferido e prazo vencido ' +
|
|
86
|
+
'apagam a marca): o total e um piso, valido enquanto a marca existe',
|
|
87
|
+
// O que o store grava (sempre em pt-BR).
|
|
88
|
+
inconclusiva: (detalhe) => `conferencia de login inconclusiva: ${detalhe}`,
|
|
89
|
+
vistoEmOutroProjeto: (detalhe) => `visto em outro projeto: ${detalhe}`,
|
|
90
|
+
// As recusas do registro de perfis (runtime-profiles.ts).
|
|
91
|
+
uidIndisponivel: 'runtime.profiles.invalid: uid do processo indisponivel',
|
|
92
|
+
diretorioNaoNormalizado: 'runtime.profiles.invalid: diretorio do perfil precisa ser caminho absoluto normalizado',
|
|
93
|
+
idInvalido: 'runtime.profiles.invalid: id do perfil aceita letras, digitos, ponto, hifen e sublinhado (ate 63)',
|
|
94
|
+
despachoAusente: 'runtime.profiles.invalid: perfil de despacho ausente',
|
|
95
|
+
runtimeDesconhecido: 'runtime.profiles.invalid: runtime do perfil desconhecido',
|
|
96
|
+
despachoComCampo: 'runtime.profiles.invalid: perfil de despacho com campo inesperado',
|
|
97
|
+
perfilDeOutroRuntime: 'runtime.profiles.invalid: perfil de outro runtime',
|
|
98
|
+
sensorDiverge: 'runtime.profiles.invalid: perfil do sensor diverge do despacho',
|
|
99
|
+
pastaPrivada: 'runtime.profiles.invalid: pasta privada precisa ser 0700 do proprio usuario',
|
|
100
|
+
diretorioDeEstado: 'runtime.profiles.invalid: diretorio de estado invalido',
|
|
101
|
+
dataInvalida: (campo) => `runtime.profiles.invalid: ${campo} invalido`,
|
|
102
|
+
perfilInvalido: 'runtime.profiles.invalid: perfil invalido',
|
|
103
|
+
campoInesperado: 'runtime.profiles.invalid: campo inesperado no perfil',
|
|
104
|
+
estadoDesconhecido: 'runtime.profiles.invalid: estado do perfil desconhecido',
|
|
105
|
+
ultimaFalhaInvalida: 'runtime.profiles.invalid: ultimaFalha invalida',
|
|
106
|
+
storeInvalido: 'runtime.profiles.invalid: store invalido',
|
|
107
|
+
contratoEsperado: (contrato) => `runtime.profiles.invalid: contrato ${contrato} esperado`,
|
|
108
|
+
idRepetido: 'runtime.profiles.invalid: id de perfil repetido',
|
|
109
|
+
mesmoDiretorio: 'runtime.profiles.invalid: dois perfis do mesmo runtime no mesmo diretorio',
|
|
110
|
+
arquivoIlegivel: 'runtime.profiles.invalid: arquivo de perfis ilegivel ou link simbolico',
|
|
111
|
+
arquivoSemPermissao: 'runtime.profiles.invalid: arquivo de perfis precisa ser 0600 do proprio usuario',
|
|
112
|
+
arquivoJson: 'runtime.profiles.invalid: arquivo de perfis com JSON invalido',
|
|
113
|
+
pastaTrocada: 'runtime.profiles.invalid: pasta privada trocada durante a gravacao',
|
|
114
|
+
storeOcupado: 'runtime.profiles.busy: store de perfis ocupado; tente novamente',
|
|
115
|
+
perfilNaoExiste: (id) => `runtime.profiles.unknown: perfil "${id}" nao existe (veja: ork accounts list)`,
|
|
116
|
+
diretorioInacessivel: (codigo) => `runtime.profiles.invalid: diretorio do perfil inacessivel (${codigo})`,
|
|
117
|
+
naoEDiretorio: 'runtime.profiles.invalid: o caminho do perfil nao e diretorio',
|
|
118
|
+
outroUsuario: 'runtime.profiles.invalid: diretorio do perfil pertence a outro usuario',
|
|
119
|
+
semLeituraEscrita: 'runtime.profiles.invalid: diretorio do perfil sem leitura e escrita para este usuario',
|
|
120
|
+
runtimeSemPerfil: (runtime) => `runtime.profiles.invalid: runtime "${runtime}" nao aceita perfil`,
|
|
121
|
+
jaExiste: (id, desativadoEm) => `runtime.profiles.invalid: perfil "${id}" ja existe` +
|
|
122
|
+
(desativadoEm !== null ? ` (desativado em ${desativadoEm}; reative com o mesmo --runtime e --dir)` : ''),
|
|
123
|
+
jaHaPerfil: (runtime, dir) => `runtime.profiles.invalid: ja ha perfil ${runtime} em ${dir}`,
|
|
124
|
+
mesmoDiretorioDoPerfil: (dir, id, real) => `runtime.profiles.invalid: ${dir} e o mesmo diretorio do perfil "${id}" (${real})`,
|
|
125
|
+
estaDesativado: (id) => `runtime.profiles.invalid: perfil "${id}" esta desativado`,
|
|
126
|
+
cotaExigePrazo: 'runtime.profiles.invalid: cota esgotada exige esgotadoAte',
|
|
127
|
+
registroInvalido: 'runtime.profiles.invalid: registro de contas invalido',
|
|
128
|
+
contaInvalida: 'runtime.profiles.invalid: conta compartilhada invalida',
|
|
129
|
+
};
|
|
130
|
+
exports.ACCOUNTS_EN = {
|
|
131
|
+
semPerfis: 'No profile configured: each runtime dispatches with the process environment.',
|
|
132
|
+
colunas: ['PROFILE', 'RUNTIME', 'DIRECTORY', 'STATE', 'EXHAUSTED UNTIL', 'LAST USE', 'LAST FAILURE'],
|
|
133
|
+
estado: (estado) => ESTADOS_EN[estado] ?? estado,
|
|
134
|
+
falhaEm: (motivo, quando) => `${motivo} at ${quando}`,
|
|
135
|
+
usoAdd: 'usage: ork accounts add <id> --runtime claude-bg|codex --dir <directory> [--sem-login]',
|
|
136
|
+
reativado: (id) => `Profile ${id} reactivated: same id, runtime and directory as the disabled profile.`,
|
|
137
|
+
recusado: (erro) => `profile refused: ${erro}`,
|
|
138
|
+
loginPendente: (variavel, dir, comando, id) => `Login pending: run \`${variavel}=${dir} ${comando}\`, then \`ork accounts check ${id}\``,
|
|
139
|
+
resultadoAdd: (id, runtime, dir, situacao) => `Profile ${id} (${runtime}) in ${dir}: ${situacao}`,
|
|
140
|
+
conferido: 'subscription login checked',
|
|
141
|
+
detalheDoLogin: (detalhe) => {
|
|
142
|
+
const regra = DETALHES_DO_LOGIN_EN.find(([re]) => re.test(detalhe));
|
|
143
|
+
return regra ? regra[1](...(regra[0].exec(detalhe) ?? []).slice(1)) : detalhe;
|
|
144
|
+
},
|
|
145
|
+
inconclusivaAdd: (detalhe) => `login check inconclusive (${detalhe}); the next dispatch checks again`,
|
|
146
|
+
pagoAdd: (detalhe) => `paid provider (${detalhe}); never receives a dispatch`,
|
|
147
|
+
semLoginAdd: (detalhe) => `no login (${detalhe}); out of the rotation`,
|
|
148
|
+
usoRemove: 'usage: ork accounts remove <id>',
|
|
149
|
+
desativado: (id) => `Profile ${id} disabled: the directory and the CLI login stay where they are.`,
|
|
150
|
+
perfilAtivoNaoExiste: (alvo) => `active profile "${alvo}" does not exist (see: \`ork accounts list\`)`,
|
|
151
|
+
resultadoCheck: (id, runtime, situacao) => `${id} (${runtime}): ${situacao}`,
|
|
152
|
+
inconclusivaCheck: (detalhe) => `login check inconclusive, state kept (${detalhe})`,
|
|
153
|
+
pagoCheck: (detalhe) => `paid provider, never dispatches (${detalhe})`,
|
|
154
|
+
semLoginCheck: (detalhe) => `no login (${detalhe})`,
|
|
155
|
+
tipoDeLimite: (tipo) => ({ sessao: 'session', semanal: 'weekly', 'gasto-admin': 'admin-defined spend',
|
|
156
|
+
outro: 'other limit', nenhum: 'no observed limit' }[tipo] ?? tipo),
|
|
157
|
+
limiteDaConta: (limite) => `limit: ${limite}`,
|
|
158
|
+
cotaMedida: (usada, limite, unidade) => `${usada}/${limite}${unidade === '%' ? '%' : ` ${unidade ?? 'units'}`} (measured by the runtime)`,
|
|
159
|
+
cotaIndisponivel: 'not exposed by the runtime',
|
|
160
|
+
cotaDaConta: (cota) => `quota: ${cota}`,
|
|
161
|
+
sessaoSemVinculo: (sessao) => `session:${sessao}`,
|
|
162
|
+
cargaDaConta: (carga) => `running now: ${carga}`,
|
|
163
|
+
cargaVazia: 'running now: nothing',
|
|
164
|
+
cargaInconclusiva: 'running now: inconclusive inventory',
|
|
165
|
+
voltaEm: (quando) => `returns: ${quando}`,
|
|
166
|
+
voltaSemMedida: 'returns: no measured deadline',
|
|
167
|
+
marcaExpirada: 'expired mark cleared in this check',
|
|
168
|
+
periodoInvalido: (erro) => `${erro} (use \`--desde\` 7d, 24h, 30m or an ISO date)`,
|
|
169
|
+
desconhecido: (sub) => `unknown subcommand: accounts ${sub} (use list, add, remove, check or esgotamentos)`,
|
|
170
|
+
esgotamentosTitulo: (desde, ate, intervalo) => `Account exhaustions ${desde} to ${ate} ${intervalo}`,
|
|
171
|
+
marcasVivas: (n) => ` live marks in the registry: ${n}`,
|
|
172
|
+
marca: (conta, runtime, estado, desde, ate, projeto, motivo) => ` account ${conta} ${runtime} ${estado} since ${desde}, ${ate === null ? 'no deadline' : `until ${ate}`} seen in ${projeto} (${motivo})`,
|
|
173
|
+
projetosLidos: (lista) => ` projects read: ${lista ?? 'none registered'}`,
|
|
174
|
+
projetoLido: (nome, despachos) => `${nome} (${despachos === null ? 'off disk' : `${despachos} dispatch(es) with a profile`})`,
|
|
175
|
+
despachosMarcados: (n) => ` dispatches on an account marked by another project: ${n}`,
|
|
176
|
+
colunasDosDespachos: ['WHEN', 'PROJECT', 'THREAD', 'PHASE', 'PROFILE', 'ACCOUNT', 'MARKED BY'],
|
|
177
|
+
limite: (limite) => ` limit: ${limite}`,
|
|
178
|
+
limiteDoRelatorio: 'the registry only keeps live marks (a successful use, a rechecked login and an expired deadline clear the ' +
|
|
179
|
+
'mark): the total is a floor, valid while the mark exists',
|
|
180
|
+
inconclusiva: (detalhe) => `login check inconclusive: ${detalhe}`,
|
|
181
|
+
vistoEmOutroProjeto: (detalhe) => `seen in another project: ${detalhe}`,
|
|
182
|
+
uidIndisponivel: 'runtime.profiles.invalid: process uid unavailable',
|
|
183
|
+
diretorioNaoNormalizado: 'runtime.profiles.invalid: the profile directory must be a normalized absolute path',
|
|
184
|
+
idInvalido: 'runtime.profiles.invalid: a profile id takes letters, digits, dot, hyphen and underscore (up to 63)',
|
|
185
|
+
despachoAusente: 'runtime.profiles.invalid: dispatch profile missing',
|
|
186
|
+
runtimeDesconhecido: 'runtime.profiles.invalid: unknown profile runtime',
|
|
187
|
+
despachoComCampo: 'runtime.profiles.invalid: dispatch profile with an unexpected field',
|
|
188
|
+
perfilDeOutroRuntime: 'runtime.profiles.invalid: profile of another runtime',
|
|
189
|
+
sensorDiverge: 'runtime.profiles.invalid: the sensor profile differs from the dispatch',
|
|
190
|
+
pastaPrivada: 'runtime.profiles.invalid: the private folder must be 0700 and owned by this user',
|
|
191
|
+
diretorioDeEstado: 'runtime.profiles.invalid: invalid state directory',
|
|
192
|
+
dataInvalida: (campo) => `runtime.profiles.invalid: invalid ${campo}`,
|
|
193
|
+
perfilInvalido: 'runtime.profiles.invalid: invalid profile',
|
|
194
|
+
campoInesperado: 'runtime.profiles.invalid: unexpected field in the profile',
|
|
195
|
+
estadoDesconhecido: 'runtime.profiles.invalid: unknown profile state',
|
|
196
|
+
ultimaFalhaInvalida: 'runtime.profiles.invalid: invalid `ultimaFalha`',
|
|
197
|
+
storeInvalido: 'runtime.profiles.invalid: invalid store',
|
|
198
|
+
contratoEsperado: (contrato) => `runtime.profiles.invalid: contract ${contrato} expected`,
|
|
199
|
+
idRepetido: 'runtime.profiles.invalid: repeated profile id',
|
|
200
|
+
mesmoDiretorio: 'runtime.profiles.invalid: two profiles of the same runtime in the same directory',
|
|
201
|
+
arquivoIlegivel: 'runtime.profiles.invalid: profiles file unreadable or a symbolic link',
|
|
202
|
+
arquivoSemPermissao: 'runtime.profiles.invalid: the profiles file must be 0600 and owned by this user',
|
|
203
|
+
arquivoJson: 'runtime.profiles.invalid: profiles file with invalid JSON',
|
|
204
|
+
pastaTrocada: 'runtime.profiles.invalid: private folder swapped during the write',
|
|
205
|
+
storeOcupado: 'runtime.profiles.busy: profile store busy; try again',
|
|
206
|
+
perfilNaoExiste: (id) => `runtime.profiles.unknown: profile "${id}" does not exist (see: \`ork accounts list\`)`,
|
|
207
|
+
diretorioInacessivel: (codigo) => `runtime.profiles.invalid: profile directory not accessible (${codigo})`,
|
|
208
|
+
naoEDiretorio: 'runtime.profiles.invalid: the profile path is not a directory',
|
|
209
|
+
outroUsuario: 'runtime.profiles.invalid: the profile directory belongs to another user',
|
|
210
|
+
semLeituraEscrita: 'runtime.profiles.invalid: the profile directory lacks read and write access for this user',
|
|
211
|
+
runtimeSemPerfil: (runtime) => `runtime.profiles.invalid: runtime "${runtime}" does not take a profile`,
|
|
212
|
+
jaExiste: (id, desativadoEm) => `runtime.profiles.invalid: profile "${id}" already exists` +
|
|
213
|
+
(desativadoEm !== null ? ` (disabled on ${desativadoEm}; reactivate it with the same \`--runtime\` and \`--dir\`)` : ''),
|
|
214
|
+
jaHaPerfil: (runtime, dir) => `runtime.profiles.invalid: there is already a ${runtime} profile in ${dir}`,
|
|
215
|
+
mesmoDiretorioDoPerfil: (dir, id, real) => `runtime.profiles.invalid: ${dir} is the same directory as profile "${id}" (${real})`,
|
|
216
|
+
estaDesativado: (id) => `runtime.profiles.invalid: profile "${id}" is disabled`,
|
|
217
|
+
cotaExigePrazo: 'runtime.profiles.invalid: an exhausted quota needs `esgotadoAte`',
|
|
218
|
+
registroInvalido: 'runtime.profiles.invalid: invalid account registry',
|
|
219
|
+
contaInvalida: 'runtime.profiles.invalid: invalid shared account',
|
|
220
|
+
};
|