@orkastery/cli 0.5.6 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/adapters/README.md +18 -0
- package/adapters/claude-code/.claude-plugin/plugin.json +1 -0
- package/adapters/claude-code/README.md +37 -5
- package/adapters/claude-code/agents/ork-check.md +1 -0
- package/adapters/claude-code/agents/ork-go.md +1 -0
- package/adapters/claude-code/agents/ork-goal.md +1 -0
- package/adapters/claude-code/agents/ork-master.md +1 -0
- package/adapters/claude-code/agents/ork-plan.md +1 -0
- package/adapters/claude-code/agents/ork-ship.md +1 -0
- package/adapters/claude-code/hooks/hooks.json +2 -1
- package/adapters/claude-code/hooks/ork-guard.js +15 -1
- package/adapters/claude-code/hooks/ork-resposta.js +91 -0
- package/adapters/claude-code/hooks/ork-sensor.js +18 -2
- package/adapters/claude-code/hooks/quota-signal.js +14 -0
- package/adapters/claude-code/mods/ork-mensageiro/.claude-plugin/plugin.json +14 -0
- package/adapters/claude-code/mods/ork-mensageiro/hooks/caixa.ts +215 -0
- package/adapters/claude-code/mods/ork-mensageiro/hooks/hooks.json +3 -0
- package/adapters/claude-code/mods/ork-mensageiro/hooks/painel.tsx +165 -0
- package/adapters/claude-code/mods/ork-mensageiro/hooks/recepcao.ts +256 -0
- package/adapters/claude-code/mods/ork-mensageiro/hooks/register.tsx +481 -0
- package/adapters/claude-code/mods/ork-mensageiro/orkastery-mod.json +5 -0
- package/adapters/claude-code/mods/ork-mensageiro/types/index.d.ts +85 -0
- package/adapters/claude-code/mods/ork-pista/hooks/ci.ts +9 -5
- package/adapters/claude-code/mods/ork-ritual/.claude-plugin/plugin.json +14 -0
- package/adapters/claude-code/mods/ork-ritual/hooks/hooks.json +3 -0
- package/adapters/claude-code/mods/ork-ritual/hooks/nota.ts +88 -0
- package/adapters/claude-code/mods/ork-ritual/hooks/register.tsx +494 -0
- package/adapters/claude-code/mods/ork-ritual/hooks/replay.tsx +271 -0
- package/adapters/claude-code/mods/ork-ritual/hooks/ritual.ts +218 -0
- package/adapters/claude-code/mods/ork-ritual/orkastery-mod.json +5 -0
- package/adapters/claude-code/mods/ork-ritual/types/index.d.ts +106 -0
- package/adapters/claude-code/mods/ork-sentinela/hooks/vigia.ts +1 -1
- package/adapters/codex/skills/ork/SKILL.md +2 -0
- package/adapters/hermes/README.md +64 -1
- package/adapters/hermes/bin/ork-conhecimento-colecoes.sh +14 -0
- package/adapters/hermes/bin/ork-conhecimento-listar.sh +15 -0
- package/adapters/hermes/bin/ork-conhecimento-mostrar.sh +16 -0
- package/adapters/hermes/bin/ork-conhecimento-verificar.sh +15 -0
- package/adapters/hermes/bin/ork-vigia-batida.py +127 -0
- package/adapters/hermes/hermes.plugin.json +4 -0
- package/adapters/hermes/hitl-ingress/__init__.py +101 -8
- package/adapters/hermes/skills/orkastery-devmaster/SKILL.md +2 -2
- package/adapters/openclaw/README.md +81 -9
- package/adapters/openclaw/bin/ork-vigia-batida.js +86 -0
- package/adapters/openclaw/dist/hitl-ingress.js +106 -9
- package/adapters/openclaw/dist/index.js +86 -0
- package/adapters/openclaw/openclaw.plugin.json +34 -4
- package/adapters/openclaw/package.json +2 -2
- package/adapters/openclaw/src/hitl-ingress.ts +103 -9
- package/adapters/openclaw/src/index.ts +94 -0
- package/assets/adapters-en/claude-code/README.md +403 -0
- package/assets/adapters-en/claude-code/agents/ork-check.md +33 -0
- package/assets/adapters-en/claude-code/agents/ork-go.md +33 -0
- package/assets/adapters-en/claude-code/agents/ork-goal.md +34 -0
- package/assets/adapters-en/claude-code/agents/ork-master.md +35 -0
- package/assets/adapters-en/claude-code/agents/ork-plan.md +33 -0
- package/assets/adapters-en/claude-code/agents/ork-ship.md +33 -0
- package/assets/adapters-en/claude-code/commands/check.md +46 -0
- package/assets/adapters-en/claude-code/commands/go.md +46 -0
- package/assets/adapters-en/claude-code/commands/goal.md +55 -0
- package/assets/adapters-en/claude-code/commands/master.md +54 -0
- package/assets/adapters-en/claude-code/commands/onboarding.md +22 -0
- package/assets/adapters-en/claude-code/commands/ork.md +126 -0
- package/assets/adapters-en/claude-code/commands/plan.md +47 -0
- package/assets/adapters-en/claude-code/commands/ship.md +45 -0
- package/assets/adapters-en/codex/skills/ork/SKILL.md +85 -0
- package/assets/adapters-en/hermes/README.md +273 -0
- package/assets/adapters-en/hermes/skills/orkastery-devmaster/SKILL.md +169 -0
- package/assets/references-en/README.md +25 -0
- package/assets/references-en/code-review-axes.md +82 -0
- package/assets/references-en/definition-of-done.md +74 -0
- package/assets/references-en/performance-checklist.md +53 -0
- package/assets/references-en/security-checklist.md +101 -0
- package/assets/references-en/testing-patterns.md +51 -0
- package/assets/security-scan/defaults/.golangci.yml +2 -0
- package/assets/security-scan/defaults/eslint.config.mjs +11 -0
- package/assets/security-scan/defaults/gitleaks.toml +3 -0
- package/assets/security-scan/defaults/ruff.toml +1 -0
- package/assets/security-scan/tools-agil.json +87 -0
- package/assets/security-scan/tools.json +625 -0
- package/assets/skills-en/core/onboarding/SKILL.md +58 -0
- package/assets/skills-en/core/orkastery-bootstrap/SKILL.md +119 -0
- package/assets/skills-en/core/thread-state/SKILL.md +88 -0
- package/assets/skills-en/governance/decision-triage/SKILL.md +65 -0
- package/assets/skills-en/governance/narrative-guardian/SKILL.md +66 -0
- package/assets/skills-en/governance/roadmap-keeper/SKILL.md +60 -0
- package/assets/skills-en/governance/scope-check-capability-map/SKILL.md +71 -0
- package/assets/skills-en/observability/thread-tracing/SKILL.md +63 -0
- package/assets/skills-en/phases/check-quality/SKILL.md +103 -0
- package/assets/skills-en/phases/go-implementation/SKILL.md +78 -0
- package/assets/skills-en/phases/goal-definition/SKILL.md +69 -0
- package/assets/skills-en/phases/master-metrics/SKILL.md +72 -0
- package/assets/skills-en/phases/plan-specification/SKILL.md +67 -0
- package/assets/skills-en/phases/security-remediation/SKILL.md +70 -0
- package/assets/skills-en/phases/ship-release/SKILL.md +71 -0
- package/assets/skills-en/reviewers/code-reviewer/SKILL.md +61 -0
- package/assets/skills-en/reviewers/security-auditor/SKILL.md +93 -0
- package/assets/skills-en/reviewers/test-engineer/SKILL.md +66 -0
- package/assets/skills-en/reviewers/web-performance-auditor/SKILL.md +63 -0
- package/dist/adapters/claude-bg.js +123 -9
- package/dist/adapters/codex-controller-worker.js +12 -5
- package/dist/adapters/codex-events.js +16 -4
- package/dist/adapters/codex.js +3 -1
- package/dist/adapters/grok-events.js +227 -0
- package/dist/adapters/grok-mcp-servidor.js +612 -0
- package/dist/adapters/grok-mcp.js +178 -0
- package/dist/adapters/grok.js +686 -0
- package/dist/agendador-cpu.js +92 -0
- package/dist/atualizar-branch.js +245 -0
- package/dist/auditoria.js +13 -11
- package/dist/auditrun.js +51 -46
- package/dist/autorizacao-duravel.js +327 -0
- package/dist/board.js +94 -40
- package/dist/branch-de-estado.js +23 -10
- package/dist/busca-semantica.js +7 -5
- package/dist/catalogo.js +2 -1
- package/dist/changelog-reconciliacao.js +290 -0
- package/dist/check-agil.js +528 -0
- package/dist/check-modo.js +41 -0
- package/dist/check-paralelo.js +238 -0
- package/dist/ci.js +248 -45
- package/dist/ciclos.js +8 -6
- package/dist/claim-lint.js +12 -8
- package/dist/claims-conferir.js +47 -39
- package/dist/claims.js +10 -9
- package/dist/company-brain-client.js +10 -3
- package/dist/company-brain-migration.js +11 -5
- package/dist/conducao-batida.js +759 -0
- package/dist/conducao-sentinela.js +25 -8
- package/dist/conducao.js +89 -29
- package/dist/conhecimento-consulta.js +270 -0
- package/dist/conhecimento.js +111 -87
- package/dist/conta-esgotada.js +127 -0
- package/dist/dado-privado.js +816 -0
- package/dist/decisao-autonoma.js +5 -4
- package/dist/demo.js +14 -12
- package/dist/dependencias-da-worktree.js +25 -0
- package/dist/divida.js +38 -36
- package/dist/docs.js +89 -89
- package/dist/doctor-forja.js +343 -0
- package/dist/doctor-pulse-cron.js +113 -1
- package/dist/doctor.js +164 -6
- package/dist/dsn-da-memoria.js +417 -0
- package/dist/entrega-por-mod.js +503 -0
- package/dist/entrega-pr.js +154 -54
- package/dist/esgotamentos.js +13 -11
- package/dist/estado-thread.js +21 -18
- package/dist/evalrunner.js +35 -32
- package/dist/fabrica-batida.js +34 -21
- package/dist/fabrica-estado.js +33 -21
- package/dist/fix.js +21 -19
- package/dist/forja/adaptador.js +6 -0
- package/dist/forja/ambiente-de-ci.js +27 -0
- package/dist/forja/api.js +256 -0
- package/dist/forja/cache.js +89 -0
- package/dist/forja/cli.js +60 -0
- package/dist/forja/contrato.js +9 -0
- package/dist/forja/endereco.js +43 -0
- package/dist/forja/estado.js +22 -0
- package/dist/forja/executor.js +73 -0
- package/dist/forja/github/ci.js +95 -0
- package/dist/forja/github/dono-da-rede.js +18 -0
- package/dist/forja/github/metadados.js +15 -0
- package/dist/forja/github/pedidos.js +200 -0
- package/dist/forja/gitlab/ci.js +141 -0
- package/dist/forja/gitlab/consultas.js +59 -0
- package/dist/forja/gitlab/dono-da-rede.js +43 -0
- package/dist/forja/gitlab/metadados.js +15 -0
- package/dist/forja/gitlab/pedidos-abertos.js +158 -0
- package/dist/forja/gitlab/pedidos.js +141 -0
- package/dist/forja/produtor.js +32 -0
- package/dist/forja/registro.js +31 -0
- package/dist/forja/resolver.js +121 -0
- package/dist/forja/texto.js +13 -0
- package/dist/forja/versao.js +71 -0
- package/dist/forja.js +123 -80
- package/dist/handoff.js +23 -13
- package/dist/hitl-contract.js +46 -43
- package/dist/hitl-curto.js +37 -25
- package/dist/hitl-gates.js +13 -11
- package/dist/hitl-local-receipt.js +51 -0
- package/dist/hitl-local.js +11 -2
- package/dist/hitl-lock.js +5 -11
- package/dist/hitl-public-receipt.js +11 -0
- package/dist/hitl-resumo.js +44 -1
- package/dist/hitl-sessions.js +62 -9
- package/dist/hitl-texto-livre.js +7 -4
- package/dist/hitl.js +34 -31
- package/dist/horario.js +20 -1
- package/dist/hosts.js +104 -134
- package/dist/index.js +864 -554
- package/dist/indice-vetorial.js +14 -12
- package/dist/init.js +11 -2
- package/dist/integracoes-locais.js +4 -0
- package/dist/intelligence-graph-cli.js +123 -69
- package/dist/intelligence-graph-query.js +37 -22
- package/dist/leases.js +19 -18
- package/dist/ledger-stats.js +17 -16
- package/dist/ledger.js +31 -1
- package/dist/licoes.js +12 -11
- package/dist/locale-accounts.js +228 -0
- package/dist/locale-adapter.js +291 -0
- package/dist/locale-ajuda.js +86 -10
- package/dist/locale-audit.js +199 -0
- package/dist/locale-claims.js +213 -0
- package/dist/locale-conducao.js +138 -0
- package/dist/locale-conhecimento.js +181 -0
- package/dist/locale-decisao.js +205 -0
- package/dist/locale-docs.js +230 -0
- package/dist/locale-estado.js +101 -0
- package/dist/locale-forja.js +288 -0
- package/dist/locale-gerados.js +5 -0
- package/dist/locale-grafo.js +129 -0
- package/dist/locale-master.js +83 -0
- package/dist/locale-network.js +524 -0
- package/dist/locale-operacao-restante.js +931 -0
- package/dist/locale-projetos.js +100 -0
- package/dist/locale-prompts.js +194 -0
- package/dist/locale-pulse.js +140 -2
- package/dist/locale-reservas.js +87 -0
- package/dist/locale-retry.js +183 -6
- package/dist/locale-security-scan.js +69 -0
- package/dist/locale-setup.js +192 -0
- package/dist/locale-ship.js +177 -66
- package/dist/locale-thread.js +149 -5
- package/dist/locale-verify.js +80 -4
- package/dist/locale-worktree.js +246 -0
- package/dist/locale.js +553 -9
- package/dist/maestro-runtime.js +22 -3
- package/dist/manifest.js +293 -12
- package/dist/maquina-ociosa.js +211 -0
- package/dist/maquina.js +10 -5
- package/dist/master-nota-local.js +200 -0
- package/dist/master-nota.js +10 -2
- package/dist/master.js +118 -41
- package/dist/mcp-conhecimento.js +52 -0
- package/dist/mcp-experiencia.js +26 -5
- package/dist/mcp-install.js +90 -15
- package/dist/mcp-noctum.js +101 -0
- package/dist/mcp-server.js +116 -22
- package/dist/mcp-ship-transporte.js +977 -0
- package/dist/mcp-ship.js +68 -24
- package/dist/mcp-transportes.js +17 -0
- package/dist/memoria.js +63 -58
- package/dist/merge-da-entrega.js +85 -0
- package/dist/modos-migracao.js +8 -6
- package/dist/modos.js +17 -18
- package/dist/network-roadmap.js +94 -54
- package/dist/noctum-aceite.js +929 -0
- package/dist/noctum-arco.js +540 -33
- package/dist/noctum-capacidade.js +3 -3
- package/dist/noctum-changelog.js +399 -0
- package/dist/noctum-cli.js +539 -0
- package/dist/noctum-coordenacao.js +1225 -0
- package/dist/noctum-entrega.js +1217 -0
- package/dist/noctum-envelope.js +253 -17
- package/dist/noctum-execucao.js +100 -24
- package/dist/noctum-fechamento.js +416 -0
- package/dist/noctum-fila.js +49 -10
- package/dist/noctum-guarda.js +333 -0
- package/dist/noctum-integracao.js +507 -0
- package/dist/noctum-maquinas.js +387 -0
- package/dist/noctum-medicao.js +450 -0
- package/dist/noctum-modo.js +390 -0
- package/dist/noctum-pergunta-canal.js +96 -0
- package/dist/noctum-pergunta.js +115 -0
- package/dist/noctum-provas.js +838 -0
- package/dist/noctum-reconciliacao.js +594 -0
- package/dist/noctum-rede.js +102 -0
- package/dist/noctum-registro.js +215 -0
- package/dist/noctum-relatorio.js +861 -0
- package/dist/noctum-resposta.js +207 -0
- package/dist/noctum-retomada-rede.js +71 -0
- package/dist/noctum-sessoes-em-voo.js +93 -0
- package/dist/noctum-supervisao.js +649 -0
- package/dist/noctum-terminal.js +459 -0
- package/dist/noctum-transporte.js +655 -0
- package/dist/noctum-vigia.js +679 -0
- package/dist/ocupacao.js +3 -1
- package/dist/onboarding.js +16 -5
- package/dist/orkmind.js +39 -23
- package/dist/orquestracao.js +31 -35
- package/dist/parado-no-condutor.js +160 -139
- package/dist/phase.js +96 -42
- package/dist/policies.js +33 -0
- package/dist/postura-local.js +11 -6
- package/dist/preflight.js +2 -1
- package/dist/procedencia.js +9 -14
- package/dist/projeto-alvo.js +59 -20
- package/dist/prompts.js +136 -42
- package/dist/prova-minima.js +5 -6
- package/dist/pulse-cadencia.js +5 -4
- package/dist/pulse-consentimento.js +53 -1
- package/dist/pulse-delivery.js +143 -27
- package/dist/pulse-resposta.js +368 -4
- package/dist/pulse.js +136 -3
- package/dist/ratelimit.js +13 -4
- package/dist/recall.js +14 -13
- package/dist/rede-adesao.js +13 -8
- package/dist/rede-forja.js +108 -24
- package/dist/rede-status.js +63 -45
- package/dist/rede.js +86 -46
- package/dist/retomada-checkpoint.js +101 -0
- package/dist/retry.js +326 -78
- package/dist/roadmap-reservas.js +32 -32
- package/dist/runtime-ambiente.js +5 -0
- package/dist/runtime-context.js +279 -85
- package/dist/runtime-escada.js +429 -0
- package/dist/runtime-profiles.js +130 -63
- package/dist/runtimes.js +42 -5
- package/dist/saida-segura.js +3 -2
- package/dist/security-scan/agil.js +366 -0
- package/dist/security-scan/cli.js +76 -0
- package/dist/security-scan/compare.js +149 -0
- package/dist/security-scan/config.js +93 -0
- package/dist/security-scan/detect.js +97 -0
- package/dist/security-scan/executor.js +196 -0
- package/dist/security-scan/guard.js +180 -0
- package/dist/security-scan/imagem-de-lint.js +96 -0
- package/dist/security-scan/normalize/actionlint.js +12 -0
- package/dist/security-scan/normalize/eslint.js +12 -0
- package/dist/security-scan/normalize/gitleaks.js +13 -0
- package/dist/security-scan/normalize/golangci-lint.js +13 -0
- package/dist/security-scan/normalize/govulncheck.js +36 -0
- package/dist/security-scan/normalize/index.js +25 -0
- package/dist/security-scan/normalize/npm-audit.js +30 -0
- package/dist/security-scan/normalize/osv-scanner.js +32 -0
- package/dist/security-scan/normalize/oxlint.js +51 -0
- package/dist/security-scan/normalize/pip-audit.js +16 -0
- package/dist/security-scan/normalize/ruff.js +12 -0
- package/dist/security-scan/normalize/semgrep.js +20 -0
- package/dist/security-scan/normalize/trivy.js +33 -0
- package/dist/security-scan/normalize/util.js +204 -0
- package/dist/security-scan/normalize/zizmor.js +19 -0
- package/dist/security-scan/report.js +156 -0
- package/dist/security-scan/run.js +448 -0
- package/dist/security-scan/tools.js +62 -0
- package/dist/security-scan/trabalhador.js +74 -0
- package/dist/security-scan/types.js +15 -0
- package/dist/session-events.js +19 -2
- package/dist/session-watcher-claude.js +74 -19
- package/dist/session-watcher-grok.js +425 -0
- package/dist/session-watcher.js +174 -13
- package/dist/sessoes-contas.js +42 -5
- package/dist/sessoes-inventario.js +1 -1
- package/dist/sessoes.js +25 -23
- package/dist/setup.js +67 -66
- package/dist/ship-publicar.js +263 -92
- package/dist/ship.js +160 -17
- package/dist/superficie.js +14 -11
- package/dist/thread-close.js +9 -9
- package/dist/thread.js +121 -18
- package/dist/tokens.js +15 -11
- package/dist/trabalho-thread.js +297 -0
- package/dist/transporte-do-canal.js +189 -0
- package/dist/types.js +12 -1
- package/dist/util.js +5 -2
- package/dist/varredura-acoes.js +500 -0
- package/dist/verify.js +491 -32
- package/dist/worktree-local.js +12 -10
- package/dist/worktree.js +81 -85
- package/eval/casos/check-quality.json +77 -0
- package/eval/casos/security-auditor.json +148 -0
- package/eval/casos/security-remediation.json +161 -0
- package/eval/fixtures/security-scan/README.md +8 -0
- package/eval/fixtures/security-scan/go/.github/workflows/ci.yml +12 -0
- package/eval/fixtures/security-scan/go/Dockerfile +4 -0
- package/eval/fixtures/security-scan/go/README.md +4 -0
- package/eval/fixtures/security-scan/go/config.go +4 -0
- package/eval/fixtures/security-scan/go/go.mod +5 -0
- package/eval/fixtures/security-scan/go/go.sum +2 -0
- package/eval/fixtures/security-scan/go/main.go +31 -0
- package/eval/fixtures/security-scan/js/.github/workflows/ci.yml +12 -0
- package/eval/fixtures/security-scan/js/Dockerfile +3 -0
- package/eval/fixtures/security-scan/js/README.md +4 -0
- package/eval/fixtures/security-scan/js/package-lock.json +844 -0
- package/eval/fixtures/security-scan/js/package.json +10 -0
- package/eval/fixtures/security-scan/js/src/config.js +4 -0
- package/eval/fixtures/security-scan/js/src/server.js +17 -0
- package/eval/fixtures/security-scan/js/src/util.ts +4 -0
- package/eval/fixtures/security-scan/js/tsconfig.json +4 -0
- package/eval/fixtures/security-scan/python/.github/workflows/ci.yml +12 -0
- package/eval/fixtures/security-scan/python/Dockerfile +3 -0
- package/eval/fixtures/security-scan/python/README.md +4 -0
- package/eval/fixtures/security-scan/python/app/__init__.py +0 -0
- package/eval/fixtures/security-scan/python/app/config.py +2 -0
- package/eval/fixtures/security-scan/python/app/main.py +19 -0
- package/eval/fixtures/security-scan/python/requirements.txt +1 -0
- package/package.json +10 -5
- package/references/security-checklist.md +3 -3
- package/skills/README.md +1 -0
- package/skills/core/orkastery-bootstrap/SKILL.md +2 -2
- package/skills/phases/check-quality/SKILL.md +16 -0
- package/skills/phases/go-implementation/SKILL.md +6 -0
- package/skills/phases/security-remediation/SKILL.md +70 -0
- package/skills/reviewers/security-auditor/SKILL.md +25 -0
package/dist/setup.js
CHANGED
|
@@ -90,6 +90,7 @@ const manifest_1 = require("./manifest");
|
|
|
90
90
|
const modos_1 = require("./modos");
|
|
91
91
|
const runtimes_1 = require("./runtimes");
|
|
92
92
|
const util_1 = require("./util");
|
|
93
|
+
const locale_1 = require("./locale");
|
|
93
94
|
exports.CONTRATO_DO_SETUP = 'ork.setup/v1';
|
|
94
95
|
exports.NOME_SETUP = 'setup.json';
|
|
95
96
|
/** I-52: o setup versionado, ao lado do `orkastery.yaml`. */
|
|
@@ -99,14 +100,14 @@ const MAX_INSTANTE_MS = 8_640_000_000_000_000;
|
|
|
99
100
|
const CAMPOS_LIMITES = ['duracaoMs', 'maxChildren', 'maxDepth', 'maxRetries'];
|
|
100
101
|
function objeto(valor, campo) {
|
|
101
102
|
if (!valor || typeof valor !== 'object' || Array.isArray(valor)) {
|
|
102
|
-
throw new Error(
|
|
103
|
+
throw new Error((0, locale_1.msg)().setup.objeto(campo));
|
|
103
104
|
}
|
|
104
105
|
return valor;
|
|
105
106
|
}
|
|
106
107
|
function camposExatos(valor, campos, campo) {
|
|
107
108
|
if (Object.keys(valor).length !== campos.length ||
|
|
108
109
|
campos.some(c => !Object.hasOwn(valor, c))) {
|
|
109
|
-
throw new Error(
|
|
110
|
+
throw new Error((0, locale_1.msg)().setup.camposExatos(campo, campos.join(', ')));
|
|
110
111
|
}
|
|
111
112
|
}
|
|
112
113
|
const ENTRADA_DE_FALLBACK = /^([a-z][a-z0-9-]*):([^\s:]+)(?::([a-z]+))?$/;
|
|
@@ -116,11 +117,12 @@ function validarFallback(lista, principal) {
|
|
|
116
117
|
return lista.map((item) => {
|
|
117
118
|
const m = ENTRADA_DE_FALLBACK.exec(item.trim());
|
|
118
119
|
if (!m)
|
|
119
|
-
throw new Error(
|
|
120
|
-
|
|
121
|
-
|
|
120
|
+
throw new Error((0, locale_1.msg)().setup.fallbackInvalido(item));
|
|
121
|
+
// RM-067 (F4b, G9): desde a F4 todo runtime do registro e de bloco; a recusa lista os que o fallback aceita.
|
|
122
|
+
if (!(0, runtimes_1.runtimeDeBloco)(m[1]))
|
|
123
|
+
throw new Error((0, locale_1.msg)().setup.fallbackDesconhecido(m[1], runtimes_1.RUNTIMES_DE_BLOCO.join(', ')));
|
|
122
124
|
if (vistos.has(m[1]))
|
|
123
|
-
throw new Error(
|
|
125
|
+
throw new Error((0, locale_1.msg)().setup.fallbackRepetido(m[1]));
|
|
124
126
|
vistos.add(m[1]);
|
|
125
127
|
return item.trim();
|
|
126
128
|
});
|
|
@@ -133,7 +135,7 @@ function normalizarFallback(valor, principal) {
|
|
|
133
135
|
const saida = [];
|
|
134
136
|
for (const item of valor) {
|
|
135
137
|
const m = typeof item === 'string' ? ENTRADA_DE_FALLBACK.exec(item) : null;
|
|
136
|
-
if (!m || !(0, runtimes_1.
|
|
138
|
+
if (!m || !(0, runtimes_1.runtimeDeBloco)(m[1]) || vistos.has(m[1]))
|
|
137
139
|
continue;
|
|
138
140
|
vistos.add(m[1]);
|
|
139
141
|
saida.push(item);
|
|
@@ -164,7 +166,7 @@ function validarLimitesDeBloco(valor) {
|
|
|
164
166
|
const n = limites[campo];
|
|
165
167
|
if (typeof n !== 'number' || !Number.isSafeInteger(n) || n < (campo === 'duracaoMs' ? 1 : 0) ||
|
|
166
168
|
(campo === 'duracaoMs' && n > MAX_INSTANTE_MS)) {
|
|
167
|
-
throw new Error(
|
|
169
|
+
throw new Error((0, locale_1.msg)().setup.limiteInvalido(campo, campo === 'duracaoMs'));
|
|
168
170
|
}
|
|
169
171
|
}
|
|
170
172
|
return {
|
|
@@ -176,17 +178,17 @@ function validarConfigComLimites(config) {
|
|
|
176
178
|
if (!Object.hasOwn(config, 'limites'))
|
|
177
179
|
return;
|
|
178
180
|
validarLimitesDeBloco(config.limites);
|
|
179
|
-
if (typeof config.runtime !== 'string' || !(0, runtimes_1.
|
|
181
|
+
if (typeof config.runtime !== 'string' || !(0, runtimes_1.runtimeDeBloco)(config.runtime) ||
|
|
180
182
|
typeof config.model !== 'string' || config.model.trim() === '' ||
|
|
181
183
|
typeof config.effort !== 'string' || config.effort.trim() === '') {
|
|
182
|
-
throw new Error(
|
|
184
|
+
throw new Error((0, locale_1.msg)().setup.blocoComLimites);
|
|
183
185
|
}
|
|
184
186
|
}
|
|
185
187
|
/** Valida tambem entradas que a normalizacao antiga descartaria. */
|
|
186
188
|
function validarEstruturaSetup(valor) {
|
|
187
189
|
const setup = objeto(valor, 'setup');
|
|
188
190
|
if (setup.contrato !== undefined && setup.contrato !== exports.CONTRATO_DO_SETUP) {
|
|
189
|
-
throw new Error(
|
|
191
|
+
throw new Error((0, locale_1.msg)().setup.contratoIncompativel);
|
|
190
192
|
}
|
|
191
193
|
if (setup.modos === undefined)
|
|
192
194
|
return;
|
|
@@ -195,13 +197,13 @@ function validarEstruturaSetup(valor) {
|
|
|
195
197
|
if (configModo.blocos === undefined)
|
|
196
198
|
continue;
|
|
197
199
|
if (!Array.isArray(configModo.blocos))
|
|
198
|
-
throw new Error(
|
|
200
|
+
throw new Error((0, locale_1.msg)().setup.blocosArray(modo));
|
|
199
201
|
for (const [i, valorBloco] of configModo.blocos.entries()) {
|
|
200
202
|
const config = objeto(valorBloco, `bloco ${modo}/${i + 1}`);
|
|
201
203
|
validarConfigComLimites(config);
|
|
202
204
|
if (Object.hasOwn(config, 'limites') && (setup.contrato !== exports.CONTRATO_DO_SETUP ||
|
|
203
205
|
!modos_1.ORDEM_DOS_MODOS.includes(modo) || i >= modos_1.MODOS[modo].blocos.length)) {
|
|
204
|
-
throw new Error(
|
|
206
|
+
throw new Error((0, locale_1.msg)().setup.limitesConhecidos);
|
|
205
207
|
}
|
|
206
208
|
}
|
|
207
209
|
}
|
|
@@ -273,7 +275,7 @@ function lerSetup(raiz) {
|
|
|
273
275
|
bruto = (0, util_1.lerJson)(caminho);
|
|
274
276
|
}
|
|
275
277
|
catch (e) {
|
|
276
|
-
throw new Error(
|
|
278
|
+
throw new Error((0, locale_1.msg)().setup.setupInvalido(caminho, e.message));
|
|
277
279
|
}
|
|
278
280
|
validarEstruturaSetup(bruto);
|
|
279
281
|
const modosBrutos = (bruto.modos ?? {});
|
|
@@ -287,7 +289,7 @@ function lerSetup(raiz) {
|
|
|
287
289
|
if (doArquivo[i] === undefined)
|
|
288
290
|
return blocoPadraoDoModo(modo);
|
|
289
291
|
const b = doArquivo[i];
|
|
290
|
-
const runtime = typeof b.runtime === 'string' && (0, runtimes_1.
|
|
292
|
+
const runtime = typeof b.runtime === 'string' && (0, runtimes_1.runtimeDeBloco)(b.runtime)
|
|
291
293
|
? b.runtime
|
|
292
294
|
: doModo.runtime;
|
|
293
295
|
return {
|
|
@@ -324,7 +326,7 @@ function gravarSetup(raiz, setup) {
|
|
|
324
326
|
function versionarSetup(raiz, por = 'owner') {
|
|
325
327
|
const caminho = caminhoSetupVersionado(raiz);
|
|
326
328
|
if (fs.existsSync(caminho))
|
|
327
|
-
throw new Error(
|
|
329
|
+
throw new Error((0, locale_1.msg)().setup.versionadoExiste(exports.NOME_SETUP_VERSIONADO));
|
|
328
330
|
const origem = origemDoSetup(raiz);
|
|
329
331
|
const setup = lerSetup(raiz);
|
|
330
332
|
validarEstruturaSetup(setup);
|
|
@@ -358,12 +360,12 @@ function limitesDoBloco(manifesto, setup, modo, fase) {
|
|
|
358
360
|
if (!Array.isArray(permitidos) || permitidos.length === 0 ||
|
|
359
361
|
permitidos.some(m => !modos_1.ORDEM_DOS_MODOS.includes(m)) ||
|
|
360
362
|
!permitidos.includes(modo)) {
|
|
361
|
-
throw new Error(
|
|
363
|
+
throw new Error((0, locale_1.msg)().setup.playbookModo);
|
|
362
364
|
}
|
|
363
365
|
for (const permitido of permitidos) {
|
|
364
366
|
const blocos = setup.modos?.[permitido]?.blocos;
|
|
365
367
|
if (!blocos || blocos.length !== modos_1.MODOS[permitido].blocos.length) {
|
|
366
|
-
throw new Error(
|
|
368
|
+
throw new Error((0, locale_1.msg)().setup.playbookBlocos(permitido));
|
|
367
369
|
}
|
|
368
370
|
for (const config of blocos) {
|
|
369
371
|
validarConfigComLimites(objeto(config, 'config do bloco'));
|
|
@@ -372,12 +374,12 @@ function limitesDoBloco(manifesto, setup, modo, fase) {
|
|
|
372
374
|
}
|
|
373
375
|
const config = configDoBloco(setup, modo, fase);
|
|
374
376
|
if (!config)
|
|
375
|
-
throw new Error(
|
|
377
|
+
throw new Error((0, locale_1.msg)().setup.faseFora(fase, modo));
|
|
376
378
|
return validarLimitesDeBloco(config.limites);
|
|
377
379
|
}
|
|
378
380
|
function instante(valor, campo) {
|
|
379
381
|
if (typeof valor !== 'number' || !Number.isSafeInteger(valor) || valor < 0 || valor > MAX_INSTANTE_MS) {
|
|
380
|
-
throw new Error(
|
|
382
|
+
throw new Error((0, locale_1.msg)().setup.instante(campo));
|
|
381
383
|
}
|
|
382
384
|
return valor;
|
|
383
385
|
}
|
|
@@ -389,20 +391,20 @@ function validarIdentidade(valor) {
|
|
|
389
391
|
camposExatos(id, ['threadId', 'execucaoId', 'modo', 'bloco'], 'identidade');
|
|
390
392
|
for (const campo of ['threadId', 'execucaoId']) {
|
|
391
393
|
if (typeof id[campo] !== 'string' || id[campo].trim() === '') {
|
|
392
|
-
throw new Error(
|
|
394
|
+
throw new Error((0, locale_1.msg)().setup.identidadeTexto(campo));
|
|
393
395
|
}
|
|
394
396
|
}
|
|
395
397
|
if (!modos_1.ORDEM_DOS_MODOS.includes(id.modo) ||
|
|
396
398
|
typeof id.bloco !== 'number' || !Number.isSafeInteger(id.bloco) ||
|
|
397
399
|
id.bloco < 1 || id.bloco > modos_1.MODOS[id.modo].blocos.length) {
|
|
398
|
-
throw new Error(
|
|
400
|
+
throw new Error((0, locale_1.msg)().setup.identidadeModo);
|
|
399
401
|
}
|
|
400
402
|
return { threadId: id.threadId, execucaoId: id.execucaoId, modo: id.modo, bloco: id.bloco };
|
|
401
403
|
}
|
|
402
404
|
function semAmpliacao(limites, origem) {
|
|
403
405
|
for (const campo of CAMPOS_LIMITES) {
|
|
404
406
|
if (limites[campo] > origem[campo])
|
|
405
|
-
throw new Error(
|
|
407
|
+
throw new Error((0, locale_1.msg)().setup.herancaAmplia(campo));
|
|
406
408
|
}
|
|
407
409
|
}
|
|
408
410
|
/**
|
|
@@ -415,7 +417,7 @@ function iniciarPrazoDoBloco(manifesto, setup, identidade, fase, agoraMs) {
|
|
|
415
417
|
return null;
|
|
416
418
|
const id = validarIdentidade(identidade);
|
|
417
419
|
if (!modos_1.MODOS[id.modo].blocos[id.bloco - 1].fases.includes(fase)) {
|
|
418
|
-
throw new Error(
|
|
420
|
+
throw new Error((0, locale_1.msg)().setup.identidadeFase);
|
|
419
421
|
}
|
|
420
422
|
const inicio = instante(agoraMs, 'iniciadaEmMs');
|
|
421
423
|
const deadline = somarPrazo(inicio, limites.duracaoMs);
|
|
@@ -429,11 +431,11 @@ function validarPrazo(valor, esperada) {
|
|
|
429
431
|
camposExatos(p, ['versao', 'identidade', 'iniciadaEmMs', 'deadlineOriginalMs',
|
|
430
432
|
'limitesOriginais', 'deadlineMs', 'limites', 'observadoEmMs'], 'prazo');
|
|
431
433
|
if (p.versao !== 1)
|
|
432
|
-
throw new Error(
|
|
434
|
+
throw new Error((0, locale_1.msg)().setup.prazoVersao);
|
|
433
435
|
const identidade = validarIdentidade(p.identidade);
|
|
434
436
|
const idEsperada = validarIdentidade(esperada);
|
|
435
437
|
if (Object.keys(identidade).some(c => identidade[c] !== idEsperada[c])) {
|
|
436
|
-
throw new Error(
|
|
438
|
+
throw new Error((0, locale_1.msg)().setup.identidadeDivergente);
|
|
437
439
|
}
|
|
438
440
|
const limitesOriginais = validarLimitesDeBloco(p.limitesOriginais);
|
|
439
441
|
const limites = validarLimitesDeBloco(p.limites);
|
|
@@ -444,7 +446,7 @@ function validarPrazo(valor, esperada) {
|
|
|
444
446
|
const deadlineMs = instante(p.deadlineMs, 'deadlineMs');
|
|
445
447
|
if (deadlineOriginalMs !== somarPrazo(iniciadaEmMs, limitesOriginais.duracaoMs) ||
|
|
446
448
|
deadlineMs !== somarPrazo(iniciadaEmMs, limites.duracaoMs) || observadoEmMs < iniciadaEmMs) {
|
|
447
|
-
throw new Error(
|
|
449
|
+
throw new Error((0, locale_1.msg)().setup.prazoInconsistente);
|
|
448
450
|
}
|
|
449
451
|
return { versao: 1, identidade, iniciadaEmMs, deadlineOriginalMs, limitesOriginais, deadlineMs, limites, observadoEmMs };
|
|
450
452
|
}
|
|
@@ -457,7 +459,7 @@ function consumirPrazoDoBloco(snapshot, identidadeEsperada, agoraMs, atividade =
|
|
|
457
459
|
const prazo = validarPrazo(snapshot, identidadeEsperada);
|
|
458
460
|
const agoraValidado = instante(agoraMs, 'agoraMs');
|
|
459
461
|
if (agoraValidado < prazo.observadoEmMs)
|
|
460
|
-
throw new Error(
|
|
462
|
+
throw new Error((0, locale_1.msg)().setup.relogioRegressivo);
|
|
461
463
|
const a = objeto(atividade, 'atividade');
|
|
462
464
|
if (a.tipo === 'trabalho') {
|
|
463
465
|
camposExatos(a, ['tipo'], 'atividade');
|
|
@@ -465,10 +467,10 @@ function consumirPrazoDoBloco(snapshot, identidadeEsperada, agoraMs, atividade =
|
|
|
465
467
|
else if (a.tipo === 'espera_lease' || a.tipo === 'espera_score') {
|
|
466
468
|
camposExatos(a, ['tipo', 'processosAtivos'], 'atividade');
|
|
467
469
|
if (a.processosAtivos !== 0)
|
|
468
|
-
throw new Error(
|
|
470
|
+
throw new Error((0, locale_1.msg)().setup.esperaComProcesso);
|
|
469
471
|
}
|
|
470
472
|
else {
|
|
471
|
-
throw new Error(
|
|
473
|
+
throw new Error((0, locale_1.msg)().setup.atividadeDesconhecida);
|
|
472
474
|
}
|
|
473
475
|
prazo.observadoEmMs = agoraValidado;
|
|
474
476
|
const restanteMs = Math.max(0, prazo.deadlineMs - agoraValidado);
|
|
@@ -481,13 +483,13 @@ function consumirPrazoDoBloco(snapshot, identidadeEsperada, agoraMs, atividade =
|
|
|
481
483
|
function herdarPrazoDoBloco(origem, identidadeEsperada, agoraMs, limitesSolicitados) {
|
|
482
484
|
const consumo = consumirPrazoDoBloco(origem, identidadeEsperada, agoraMs);
|
|
483
485
|
if (consumo.estado !== 'ativo')
|
|
484
|
-
throw new Error(
|
|
486
|
+
throw new Error((0, locale_1.msg)().setup.prazoExpirado);
|
|
485
487
|
const prazo = consumo.prazo;
|
|
486
488
|
const limites = validarLimitesDeBloco(limitesSolicitados === undefined ? prazo.limites : limitesSolicitados);
|
|
487
489
|
semAmpliacao(limites, prazo.limites);
|
|
488
490
|
const deadlineMs = somarPrazo(prazo.iniciadaEmMs, limites.duracaoMs);
|
|
489
491
|
if (deadlineMs <= agoraMs)
|
|
490
|
-
throw new Error(
|
|
492
|
+
throw new Error((0, locale_1.msg)().setup.prazoReduzido);
|
|
491
493
|
return { ...prazo, limites, deadlineMs };
|
|
492
494
|
}
|
|
493
495
|
/** A config do bloco e o default pos-instalacao? */
|
|
@@ -525,20 +527,18 @@ function editarBloco(raiz, modo, bloco, edicao, por = 'owner') {
|
|
|
525
527
|
if (!Number.isInteger(bloco) || bloco < 1 || bloco > def.blocos.length) {
|
|
526
528
|
return {
|
|
527
529
|
...base,
|
|
528
|
-
erro:
|
|
530
|
+
erro: (0, locale_1.msg)().setup.blocoInexistente(bloco, def.tag, def.blocos.length),
|
|
529
531
|
};
|
|
530
532
|
}
|
|
531
|
-
if (edicao.runtime !== undefined && !(0, runtimes_1.
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
erro: `runtime desconhecido: "${edicao.runtime}" (homologados: ${runtimes_1.ORDEM_DOS_RUNTIMES.join(', ')})`,
|
|
535
|
-
};
|
|
533
|
+
if (edicao.runtime !== undefined && !(0, runtimes_1.runtimeDeBloco)(edicao.runtime)) {
|
|
534
|
+
// RM-067 (F4b, G9): a recusa lista os runtimes que o bloco aceita, o grok entre eles desde a F4.
|
|
535
|
+
return { ...base, erro: (0, locale_1.msg)().setup.runtimeDesconhecido(edicao.runtime, runtimes_1.RUNTIMES_DE_BLOCO.join(', ')) };
|
|
536
536
|
}
|
|
537
537
|
const atual = setup.modos[modo].blocos[bloco - 1];
|
|
538
538
|
if (edicao.runtime !== undefined && edicao.runtime !== atual.runtime && !edicao.model?.trim())
|
|
539
|
-
return { ...base, erro:
|
|
539
|
+
return { ...base, erro: (0, locale_1.msg)().setup.modeloComRuntime };
|
|
540
540
|
if (!(edicao.model ?? atual.model).trim())
|
|
541
|
-
return { ...base, erro:
|
|
541
|
+
return { ...base, erro: (0, locale_1.msg)().setup.modeloPendente };
|
|
542
542
|
const de = { ...atual };
|
|
543
543
|
const runtimeNovo = edicao.runtime ?? atual.runtime;
|
|
544
544
|
let fallback;
|
|
@@ -613,15 +613,15 @@ function registrarSetupNoLedger(raiz, dados) {
|
|
|
613
613
|
function linhaDaOrigemDoSetup(raiz) {
|
|
614
614
|
const origem = origemDoSetup(raiz);
|
|
615
615
|
if (origem === 'versionado') {
|
|
616
|
-
return
|
|
617
|
-
(fs.existsSync(caminhoSetupLocal(raiz)) ? ' O .orkastery/setup.json local desta maquina fica ignorado.' : '');
|
|
616
|
+
return (0, locale_1.msg)().setup.origem.versionado(exports.NOME_SETUP_VERSIONADO, fs.existsSync(caminhoSetupLocal(raiz)));
|
|
618
617
|
}
|
|
619
618
|
if (origem === 'local')
|
|
620
|
-
return
|
|
621
|
-
return
|
|
619
|
+
return (0, locale_1.msg)().setup.origem.local;
|
|
620
|
+
return (0, locale_1.msg)().setup.origem.padrao;
|
|
622
621
|
}
|
|
623
622
|
/** Tabela de um modo: cada bloco com sua config e a marca do que saiu do default. */
|
|
624
623
|
function textoDoSetup(raiz, modo) {
|
|
624
|
+
const m = (0, locale_1.msg)().setup.tabela;
|
|
625
625
|
const def = (0, modos_1.definicaoDoModo)(modo);
|
|
626
626
|
const setup = lerSetup(raiz);
|
|
627
627
|
const linhas = def.blocos.map((b, i) => {
|
|
@@ -630,22 +630,23 @@ function textoDoSetup(raiz, modo) {
|
|
|
630
630
|
String(i + 1),
|
|
631
631
|
b.fases.join('-'),
|
|
632
632
|
cfg.runtime,
|
|
633
|
-
cfg.model ||
|
|
633
|
+
cfg.model || m.modeloPendente,
|
|
634
634
|
cfg.effort,
|
|
635
635
|
cfg.fallback?.join(', ') || '-',
|
|
636
|
-
ehPadrao(cfg, modo) ?
|
|
636
|
+
ehPadrao(cfg, modo) ? m.default : m.customizado,
|
|
637
637
|
];
|
|
638
638
|
});
|
|
639
639
|
const saida = [];
|
|
640
|
-
saida.push(
|
|
640
|
+
saida.push(m.titulo(def.tag, def.blocos.length, def.pausas));
|
|
641
641
|
saida.push('');
|
|
642
|
-
saida.push((0, util_1.tabela)([
|
|
642
|
+
saida.push((0, util_1.tabela)([...m.cabecalho], linhas));
|
|
643
643
|
saida.push('');
|
|
644
|
-
saida.push(
|
|
645
|
-
saida.push(
|
|
644
|
+
saida.push(m.editar(modo));
|
|
645
|
+
saida.push(m.fallback(modo));
|
|
646
646
|
const padrao = blocoPadraoDoModo(modo);
|
|
647
|
-
saida.push(
|
|
648
|
-
|
|
647
|
+
saida.push(m.resetar(modo, `${padrao.runtime}/${padrao.model}/${padrao.effort}`));
|
|
648
|
+
// RM-067 (F4b, G9): a tela lista os runtimes de bloco, os que o `--runtime` e o `--fallback` do setup aceitam.
|
|
649
|
+
saida.push(m.runtimes(runtimes_1.RUNTIMES_DE_BLOCO.join(', ')));
|
|
649
650
|
saida.push('');
|
|
650
651
|
saida.push(linhaDaOrigemDoSetup(raiz));
|
|
651
652
|
return saida.join('\n');
|
|
@@ -658,33 +659,33 @@ function textoDoSetup(raiz, modo) {
|
|
|
658
659
|
* o owner disser que concluiu, e todo bloco nao respondido fica no default.
|
|
659
660
|
*/
|
|
660
661
|
function textoDaEntrevista(raiz) {
|
|
662
|
+
const m = (0, locale_1.msg)().setup.entrevista;
|
|
661
663
|
const setup = lerSetup(raiz);
|
|
662
664
|
const saida = [];
|
|
663
|
-
saida.push(
|
|
665
|
+
saida.push(m.titulo);
|
|
664
666
|
saida.push('');
|
|
665
|
-
saida.push(
|
|
666
|
-
saida.push(
|
|
667
|
-
saida.push(
|
|
667
|
+
saida.push(m.ordem(modos_1.ORDEM_DOS_MODOS.map((modo) => modos_1.MODOS[modo].tag).join(' -> ')));
|
|
668
|
+
saida.push(m.termina1);
|
|
669
|
+
saida.push(m.termina2);
|
|
668
670
|
const proprios = modos_1.ORDEM_DOS_MODOS.filter((m) => !ehPadrao(blocoPadraoDoModo(m)));
|
|
669
|
-
saida.push(
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
}).join(', ')}.` : '.'));
|
|
671
|
+
saida.push(m.default(`${exports.BLOCO_PADRAO.runtime}/${exports.BLOCO_PADRAO.model}/${exports.BLOCO_PADRAO.effort}`, proprios.length ? m.excecoes(proprios.map((modo) => {
|
|
672
|
+
const b = blocoPadraoDoModo(modo);
|
|
673
|
+
return `${modos_1.MODOS[modo].tag} (${b.runtime}/${b.model}/${b.effort}${b.fallback?.length ? `, fallback ${b.fallback.join(', ')}` : ''})`;
|
|
674
|
+
}).join(', ')) : '.'));
|
|
674
675
|
saida.push('');
|
|
675
676
|
for (const modo of modos_1.ORDEM_DOS_MODOS) {
|
|
676
677
|
const def = modos_1.MODOS[modo];
|
|
677
678
|
saida.push(`${def.tag}`);
|
|
678
679
|
def.blocos.forEach((b, i) => {
|
|
679
680
|
const cfg = setup.modos[modo].blocos[i];
|
|
680
|
-
const marca = ehPadrao(cfg, modo) ? '' :
|
|
681
|
-
saida.push(
|
|
681
|
+
const marca = ehPadrao(cfg, modo) ? '' : m.customizado;
|
|
682
|
+
saida.push(m.bloco(i + 1, b.fases.join('-'), `${cfg.runtime}/${cfg.model || m.modeloPendente}/${cfg.effort}`, marca));
|
|
682
683
|
});
|
|
683
684
|
}
|
|
684
685
|
saida.push('');
|
|
685
|
-
saida.push(
|
|
686
|
-
saida.push(
|
|
687
|
-
saida.push(
|
|
686
|
+
saida.push(m.ver);
|
|
687
|
+
saida.push(m.editar);
|
|
688
|
+
saida.push(m.resetar);
|
|
688
689
|
saida.push('');
|
|
689
690
|
saida.push(linhaDaOrigemDoSetup(raiz));
|
|
690
691
|
return saida.join('\n');
|