@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/ocupacao.js
CHANGED
|
@@ -29,6 +29,7 @@ exports.sessaoLivreDaVaga = sessaoLivreDaVaga;
|
|
|
29
29
|
exports.avaliarOcupacao = avaliarOcupacao;
|
|
30
30
|
const ledger_1 = require("./ledger");
|
|
31
31
|
const impedimento_1 = require("./impedimento");
|
|
32
|
+
const types_1 = require("./types");
|
|
32
33
|
const sessoes_adopt_1 = require("./sessoes-adopt");
|
|
33
34
|
/** Estado que o `ork phase run` grava quando o bloco despachado pausa ao fim. */
|
|
34
35
|
exports.PAUSA_PREVISTA = 'prevista ao fim do bloco';
|
|
@@ -251,7 +252,8 @@ function avaliarOcupacao(thread, doLedger, opcoes) {
|
|
|
251
252
|
};
|
|
252
253
|
}
|
|
253
254
|
const registro = (0, sessoes_adopt_1.ehRegistroDeAdocao)(thread);
|
|
254
|
-
|
|
255
|
+
// RM-063 (fatia 3, achado a): `busy` e `running` tambem sao a sessao trabalhando.
|
|
256
|
+
if (!registro && ((0, types_1.estadoDeTrabalho)(sessaoEstado) || (sessaoEstado === '' && sessionId !== null))) {
|
|
255
257
|
return {
|
|
256
258
|
...base,
|
|
257
259
|
classe: 'ativa',
|
package/dist/onboarding.js
CHANGED
|
@@ -51,6 +51,7 @@ const node_crypto_1 = require("node:crypto");
|
|
|
51
51
|
const manifest_1 = require("./manifest");
|
|
52
52
|
const project_state_1 = require("./project-state");
|
|
53
53
|
const ledger_1 = require("./ledger");
|
|
54
|
+
const transporte_do_canal_1 = require("./transporte-do-canal");
|
|
54
55
|
const policies_1 = require("./policies");
|
|
55
56
|
const horario_1 = require("./horario");
|
|
56
57
|
const experiencia_1 = require("./experiencia");
|
|
@@ -141,6 +142,9 @@ function validarConteudo(etapa, conteudo) {
|
|
|
141
142
|
invalido();
|
|
142
143
|
}
|
|
143
144
|
}
|
|
145
|
+
// RM-063 (fatia 3, H3): o canal do dono, com o host e o chat autorizado; o transporte pronto sai dele.
|
|
146
|
+
if (etapa === 'maestro' && objeto(conteudo) && Object.hasOwn(conteudo, 'canal') && !(0, transporte_do_canal_1.canalValido)(conteudo.canal))
|
|
147
|
+
invalido();
|
|
144
148
|
// Etapas sensíveis usam um formato fechado: não há espaço para texto de credenciais.
|
|
145
149
|
if (etapa === 'credenciais' || etapa === 'bancos') {
|
|
146
150
|
if (!objeto(conteudo))
|
|
@@ -342,16 +346,23 @@ function gravarEtapa(raiz, nome, conteudo, por = 'owner') {
|
|
|
342
346
|
const etapa = exigirEtapa(nome);
|
|
343
347
|
exigirAutor(por);
|
|
344
348
|
validarConteudo(etapa, conteudo);
|
|
349
|
+
// RM-063 (fatia 3, H3): o transporte pronto do host do canal, resolvido nesta maquina antes de qualquer gravacao.
|
|
350
|
+
const transporte = etapa === 'maestro' && objeto(conteudo) && (0, transporte_do_canal_1.canalValido)(conteudo.canal)
|
|
351
|
+
? (0, transporte_do_canal_1.transporteDoCanal)(raiz, conteudo.canal) : null;
|
|
345
352
|
return comTrava(raiz, () => {
|
|
346
353
|
const solicitadas = conteudo;
|
|
347
354
|
const { estado } = lerParaMutacao(raiz), anterior = estado.etapas[etapa];
|
|
348
|
-
// Configurar preferências não apaga objetivos ou outras respostas da etapa maestro.
|
|
349
|
-
if (etapa === 'maestro' && objeto(conteudo) && objeto(conteudo.owner) && anterior && objeto(anterior.conteudo)) {
|
|
350
|
-
conteudo = { ...anterior.conteudo, ...conteudo, owner: {
|
|
351
|
-
|
|
352
|
-
|
|
355
|
+
// Configurar preferências (ou o canal, RM-063) não apaga objetivos ou outras respostas da etapa maestro.
|
|
356
|
+
if (etapa === 'maestro' && objeto(conteudo) && (objeto(conteudo.owner) || objeto(conteudo.canal)) && anterior && objeto(anterior.conteudo)) {
|
|
357
|
+
conteudo = { ...anterior.conteudo, ...conteudo, ...(objeto(conteudo.owner) ? { owner: {
|
|
358
|
+
...(objeto(anterior.conteudo.owner) ? anterior.conteudo.owner : {}), ...conteudo.owner,
|
|
359
|
+
} } : {}) };
|
|
353
360
|
validarConteudo(etapa, conteudo);
|
|
354
361
|
}
|
|
362
|
+
// RM-063 (fatia 3, H3): o transporte do pulse sai junto com o canal do dono, e antes da resposta: sem o host nesta
|
|
363
|
+
// maquina, nada e gravado. A mesma resposta de novo regrava o transporte (a maquina nunca fica sem ele).
|
|
364
|
+
if (transporte)
|
|
365
|
+
(0, transporte_do_canal_1.gravarTransporteDoCanal)(raiz, transporte);
|
|
355
366
|
validarConteudo(etapa, conteudo);
|
|
356
367
|
// Persistir só chaves deste pedido: uma resposta antiga não vence edição explícita do manifesto.
|
|
357
368
|
validarConteudo(etapa, solicitadas);
|
package/dist/orkmind.js
CHANGED
|
@@ -84,6 +84,7 @@ const node_child_process_1 = require("node:child_process");
|
|
|
84
84
|
const node_crypto_1 = require("node:crypto");
|
|
85
85
|
const node_util_1 = require("node:util");
|
|
86
86
|
const node_perf_hooks_1 = require("node:perf_hooks");
|
|
87
|
+
const dsn_da_memoria_1 = require("./dsn-da-memoria");
|
|
87
88
|
/** As colecoes do OrkMind que o `ork` grava (guia: docs/guias/memoria-e-handoff.md). */
|
|
88
89
|
exports.COLECOES_DO_ORK = [
|
|
89
90
|
'decision',
|
|
@@ -426,26 +427,17 @@ class DriverCliOrkMind {
|
|
|
426
427
|
return chaveDeEmbeddingAceita(valor, this.config.dsn) ? valor : '';
|
|
427
428
|
}
|
|
428
429
|
contemSegredo(valor) {
|
|
429
|
-
|
|
430
|
-
const proibidos =
|
|
430
|
+
// RM-069 (D6, D20, D21): a DSN e a senha dela, de qualquer tamanho, pelos fragmentos e pela barreira de domicilio unico.
|
|
431
|
+
const proibidos = (0, dsn_da_memoria_1.fragmentosDaDsn)(this.config.dsn);
|
|
431
432
|
const nome = this.config.variavelDaChaveDeEmbedding ?? '';
|
|
432
433
|
const chave = nome ? (process.env[nome] ?? '').trim() : '';
|
|
433
434
|
if (chave.length >= 12)
|
|
434
435
|
proibidos.push(chave);
|
|
435
|
-
|
|
436
|
-
const senha = new URL(segredo).password;
|
|
437
|
-
if (senha.length >= 12)
|
|
438
|
-
proibidos.push(senha, decodeURIComponent(senha));
|
|
439
|
-
}
|
|
440
|
-
catch { /* DSN opaca */ }
|
|
441
|
-
const examinar = (x) => typeof x === 'string'
|
|
442
|
-
? proibidos.some(p => p && x.includes(p))
|
|
443
|
-
: !!x && typeof x === 'object' && Object.entries(x).some(([k, v]) => examinar(k) || examinar(v));
|
|
444
|
-
return examinar(valor);
|
|
436
|
+
return (0, dsn_da_memoria_1.contemFragmento)(valor, proibidos);
|
|
445
437
|
}
|
|
446
438
|
rodar(pedido, timeoutMs = this.config.timeoutMs) {
|
|
447
439
|
if (!this.config.dsn.trim())
|
|
448
|
-
throw new Error('dsn.env-ausente');
|
|
440
|
+
throw new Error(this.config.falhaDaDsn ?? 'dsn.env-ausente');
|
|
449
441
|
if (this.contemSegredo(pedido))
|
|
450
442
|
throw new Error('memory.transport.secret: conteudo recusado');
|
|
451
443
|
const [python, ...prefixo] = this.python();
|
|
@@ -920,14 +912,21 @@ class DriverEmMemoria {
|
|
|
920
912
|
}
|
|
921
913
|
}
|
|
922
914
|
exports.DriverEmMemoria = DriverEmMemoria;
|
|
923
|
-
/**
|
|
924
|
-
|
|
925
|
-
|
|
915
|
+
/**
|
|
916
|
+
* Config de memoria efetiva a partir do manifesto, ja com o tenant resolvido. RM-069: a DSN vem da fonte declarada
|
|
917
|
+
* (a variavel de `database_url_env` ou o arquivo de `database_url_file`) pelo resolvedor unico, lida a cada chamada (D12).
|
|
918
|
+
*/
|
|
919
|
+
function configDoManifesto(manifesto, env = process.env) {
|
|
920
|
+
const fonte = (0, dsn_da_memoria_1.resolverDsn)(manifesto.memory, { env });
|
|
926
921
|
return {
|
|
927
922
|
modo: manifesto.memory.mode,
|
|
928
923
|
cli: manifesto.memory.cli || 'orkmind',
|
|
929
|
-
variavel,
|
|
930
|
-
dsn:
|
|
924
|
+
variavel: fonte.fonte === 'ambiente' ? fonte.rotulo : '',
|
|
925
|
+
dsn: fonte.dsn,
|
|
926
|
+
fonteDaDsn: fonte.fonte,
|
|
927
|
+
rotuloDaDsn: fonte.rotulo,
|
|
928
|
+
falhaDaDsn: fonte.falha,
|
|
929
|
+
detalheDaDsn: fonte.detalhe,
|
|
931
930
|
timeoutMs: manifesto.memory.timeout_ms || 15000,
|
|
932
931
|
universoTimeoutMs: prazoDoUniversoMs(manifesto.memory.universo_timeout_ms),
|
|
933
932
|
tenant: manifesto.memory.tenant || manifesto.project.name,
|
|
@@ -943,9 +942,18 @@ function correcaoDe(motivo, config) {
|
|
|
943
942
|
case 'modo.desconhecido':
|
|
944
943
|
return 'memory.mode aceita files ou orkmind';
|
|
945
944
|
case 'dsn.nao-declarado':
|
|
946
|
-
return 'declare memory.
|
|
945
|
+
return 'declare memory.database_url_file (arquivo 0600 em ~/.orkastery/segredos/) ou memory.database_url_env ' +
|
|
946
|
+
'com o NOME da variavel de ambiente da base do tenant';
|
|
947
947
|
case 'dsn.env-ausente':
|
|
948
948
|
return `exporte ${config.variavel} com a DSN da base propria do tenant (o ork nao adivinha base)`;
|
|
949
|
+
case 'dsn.arquivo-ausente':
|
|
950
|
+
return `grave a DSN da base propria do tenant em ${config.rotuloDaDsn}, numa linha e com permissao 0600 (o ork nao adivinha base)`;
|
|
951
|
+
case 'dsn.arquivo-inseguro':
|
|
952
|
+
return `deixe ${config.rotuloDaDsn} como arquivo do usuario que roda o ork, numa pasta dele, com chmod 600 ` +
|
|
953
|
+
'(DSN que outro usuario pode ler nao e lida)';
|
|
954
|
+
case 'dsn.arquivo-invalido':
|
|
955
|
+
return `regrave ${config.rotuloDaDsn} como arquivo comum numa pasta de segredos comum, dentro da casa do usuario e ` +
|
|
956
|
+
'sem link simbolico no caminho, so com a DSN (esquema://...), numa linha e sem NOME= na frente';
|
|
949
957
|
case 'cli.ausente':
|
|
950
958
|
return `instale o OrkMind e garanta "${config.cli}" no PATH`;
|
|
951
959
|
case 'orkmind.indisponivel':
|
|
@@ -966,6 +974,9 @@ function resolverRegime(manifesto, driver) {
|
|
|
966
974
|
dsnPresente: config.dsn.trim() !== '',
|
|
967
975
|
cli: config.cli,
|
|
968
976
|
tenant: config.tenant,
|
|
977
|
+
// RM-069 (D5): a fonte da DSN, aditiva; o arquivo so pelo rotulo com `~`.
|
|
978
|
+
fonteDaDsn: config.fonteDaDsn ?? 'nenhuma',
|
|
979
|
+
...(config.fonteDaDsn === 'arquivo' ? { arquivoDaDsn: config.rotuloDaDsn } : {}),
|
|
969
980
|
};
|
|
970
981
|
const degradar = (motivo, detalhe) => ({
|
|
971
982
|
estado: {
|
|
@@ -983,9 +994,13 @@ function resolverRegime(manifesto, driver) {
|
|
|
983
994
|
if (config.modo !== 'orkmind') {
|
|
984
995
|
return degradar('modo.desconhecido', `memory.mode "${config.modo}" nao e um regime conhecido`);
|
|
985
996
|
}
|
|
986
|
-
// Isolamento por tenant: sem
|
|
987
|
-
if (config.
|
|
988
|
-
return degradar('dsn.nao-declarado', 'memory.database_url_env
|
|
997
|
+
// Isolamento por tenant: sem fonte declarada (variavel ou arquivo) nao ha base, e nao ha palpite.
|
|
998
|
+
if (config.fonteDaDsn === 'nenhuma') {
|
|
999
|
+
return degradar('dsn.nao-declarado', 'memory.database_url_file e memory.database_url_env vazios: sem base declarada o ork nao conecta em base nenhuma');
|
|
1000
|
+
}
|
|
1001
|
+
// RM-069: o arquivo que falha degrada com o motivo dele e nunca cai para a variavel.
|
|
1002
|
+
if (config.dsn.trim() === '' && !driver && config.fonteDaDsn === 'arquivo') {
|
|
1003
|
+
return degradar(config.falhaDaDsn ?? 'dsn.arquivo-ausente', `${config.detalheDaDsn}: o ork nao cai para outra fonte (precedente memory-orkmind)`);
|
|
989
1004
|
}
|
|
990
1005
|
if (config.dsn.trim() === '' && !driver) {
|
|
991
1006
|
return degradar('dsn.env-ausente', `${config.variavel} nao esta no ambiente: o ork nao cai para outra DSN (precedente memory-orkmind)`);
|
|
@@ -1003,7 +1018,8 @@ function resolverRegime(manifesto, driver) {
|
|
|
1003
1018
|
...base,
|
|
1004
1019
|
efetivo: 'orkmind',
|
|
1005
1020
|
motivo: null,
|
|
1006
|
-
detalhe: `${efetivoDriver.nome} ativo na base declarada por ${config.variavel}:
|
|
1021
|
+
detalhe: `${efetivoDriver.nome} ativo na base declarada por ${config.fonteDaDsn === 'arquivo' ? config.rotuloDaDsn : config.variavel}: ` +
|
|
1022
|
+
saude.detalhe,
|
|
1007
1023
|
correcao: '',
|
|
1008
1024
|
},
|
|
1009
1025
|
driver: efetivoDriver,
|
package/dist/orquestracao.js
CHANGED
|
@@ -74,7 +74,9 @@ const modos_1 = require("./modos");
|
|
|
74
74
|
const ocupacao_1 = require("./ocupacao");
|
|
75
75
|
const ratelimit_1 = require("./ratelimit");
|
|
76
76
|
const impedimento_1 = require("./impedimento");
|
|
77
|
+
const runtime_escada_1 = require("./runtime-escada");
|
|
77
78
|
const thread_1 = require("./thread");
|
|
79
|
+
const types_1 = require("./types");
|
|
78
80
|
const util_1 = require("./util");
|
|
79
81
|
const horario_1 = require("./horario");
|
|
80
82
|
Object.defineProperty(exports, "duracaoCurta", { enumerable: true, get: function () { return horario_1.duracaoCurta; } });
|
|
@@ -158,7 +160,8 @@ function pausasAbertas(thread, eventos, estados, quando) {
|
|
|
158
160
|
// continua listada, e o monitor a lia como uma sessao que ainda ia terminar. Uma
|
|
159
161
|
// sessao `blocked` e o contrario disso -- ela e a pausa, ja chegada.
|
|
160
162
|
const sessaoEstado = estados === null ? null : estados.get(sessionId) ?? null;
|
|
161
|
-
|
|
163
|
+
// RM-063 (fatia 3, achado a): `busy` e `running` tambem sao a sessao trabalhando.
|
|
164
|
+
const sessaoViva = estados === null ? null : (0, types_1.estadoDeTrabalho)(sessaoEstado) || sessaoEstado === '';
|
|
162
165
|
const sobre = typeof e.previstaSobre === 'string' && e.previstaSobre !== ''
|
|
163
166
|
? e.previstaSobre
|
|
164
167
|
: blocoDaFase(thread, fase).pausaSobre;
|
|
@@ -205,13 +208,17 @@ function pausasAbertas(thread, eventos, estados, quando) {
|
|
|
205
208
|
return;
|
|
206
209
|
const { bloco, pausaSobre } = blocoDaFase(thread, fase);
|
|
207
210
|
const imp = (0, impedimento_1.ehImpedimentoDoDono)(e.motivo) ? (0, impedimento_1.impedimentoDoEvento)(e) : null;
|
|
211
|
+
// RM-063 (F4): a escada de recuperacao do runtime que acabou chama o dono com as alternativas e o comando que retoma.
|
|
212
|
+
const escada = !imp && e.motivo === 'human.pending' ? (0, runtime_escada_1.escadaDoEvento)(e) : null;
|
|
208
213
|
porFase.set(chave, parada({
|
|
209
214
|
natureza: 'pausa-humana',
|
|
210
215
|
motivo: imp ? e.motivo : 'human.pending',
|
|
211
216
|
fase,
|
|
212
217
|
bloco,
|
|
213
|
-
pausaSobre: imp ? `rodar \`${imp.comando}\` no terminal` :
|
|
218
|
+
pausaSobre: imp ? `rodar \`${imp.comando}\` no terminal` : escada ? 'a escada de recuperacao do runtime'
|
|
219
|
+
: pausaSobre || 'autorizacao da retomada',
|
|
214
220
|
...(imp ? { impedimento: imp } : {}),
|
|
221
|
+
...(escada ? { escada } : {}),
|
|
215
222
|
detalhe: typeof e.detalhe === 'string' && e.detalhe !== ''
|
|
216
223
|
? e.detalhe
|
|
217
224
|
: (0, locale_1.textoDoCatalogo)((m) => m.pulse.motivos['human.pending']),
|
|
@@ -493,61 +500,50 @@ function montarMonitor(carregado, opcoes = {}) {
|
|
|
493
500
|
* ISO (o `--json` e o ledger nao mudam); aqui o horario sai no fuso do dono.
|
|
494
501
|
*/
|
|
495
502
|
function linhaDaParada(p, agora) {
|
|
503
|
+
const m = (0, locale_1.msg)().operacao.restante.monitor;
|
|
496
504
|
const local = (texto) => (0, horario_1.localizarTexto)(texto, { agora });
|
|
497
505
|
const L = [];
|
|
498
|
-
L.push(
|
|
506
|
+
L.push(m.parada(p.motivo, (0, horario_1.duracaoRelativa)(p.paradaHaMin), (0, horario_1.formatarHora)(p.desdeEm, { agora })));
|
|
499
507
|
if (p.pausaSobre)
|
|
500
|
-
L.push(
|
|
501
|
-
L.push(
|
|
502
|
-
L.push(
|
|
503
|
-
L.push(
|
|
508
|
+
L.push(m.humanoDecide(local(p.pausaSobre)));
|
|
509
|
+
L.push(m.detalhe(local(p.detalhe)));
|
|
510
|
+
L.push(m.evidencia(local(p.evidencia)));
|
|
511
|
+
L.push(m.correcao(local(p.correcao)));
|
|
504
512
|
return L;
|
|
505
513
|
}
|
|
506
514
|
/** Texto de `ork orquestracao status`. */
|
|
507
515
|
function textoDoMonitor(m) {
|
|
516
|
+
const t = (0, locale_1.msg)().operacao.restante.monitor;
|
|
508
517
|
const L = [];
|
|
509
|
-
L.push(
|
|
510
|
-
|
|
511
|
-
L.push(
|
|
512
|
-
`em andamento: ${m.resumo.emAndamento} | podem avancar: ${m.resumo.podemAvancar} | ` +
|
|
513
|
-
`fechadas: ${m.resumo.fechadas}`);
|
|
514
|
-
L.push(` limite de atencao: ${m.atencaoMin} min (${m.resumo.acimaDoLimite} parada(s) acima, marcadas com !)`);
|
|
518
|
+
L.push(t.titulo(m.projeto, m.resumo.threads, m.perfis.length, m.perfis.join(', ')));
|
|
519
|
+
L.push(t.resumo(m.resumo.aguardandoHumano, m.resumo.comImpedimento, m.resumo.emAndamento, m.resumo.podemAvancar, m.resumo.fechadas));
|
|
520
|
+
L.push(t.limite(m.atencaoMin, m.resumo.acimaDoLimite));
|
|
515
521
|
L.push(` ${(0, horario_1.legendaDoFuso)(undefined, m.consultadoEm)}`);
|
|
516
522
|
if (!m.runtimeConsultado) {
|
|
517
|
-
L.push(
|
|
523
|
+
L.push(t.runtime(m.runtimeDetalhe));
|
|
518
524
|
}
|
|
519
525
|
L.push('');
|
|
520
526
|
// I-36 (T17): conducao em andamento nao e parada; ela aparece antes, com a linha unica.
|
|
521
527
|
const conduzidas = m.linhas.filter((l) => l.conducao);
|
|
522
528
|
if (conduzidas.length > 0) {
|
|
523
|
-
L.push(
|
|
529
|
+
L.push(t.conduzidas);
|
|
524
530
|
for (const l of conduzidas)
|
|
525
531
|
L.push(` ${l.thread}: ${(0, conducao_texto_1.linhaDeConducao)(l.conducao, { agora: m.consultadoEm })}`);
|
|
526
532
|
L.push('');
|
|
527
533
|
}
|
|
528
534
|
if (m.linhas.length === 0) {
|
|
529
|
-
L.push(
|
|
535
|
+
L.push(t.nenhuma);
|
|
530
536
|
return L.join('\n');
|
|
531
537
|
}
|
|
532
|
-
L.push((0, util_1.tabela)([
|
|
533
|
-
'PERFIL',
|
|
534
|
-
'THREAD',
|
|
535
|
-
'FASE',
|
|
536
|
-
'STATUS',
|
|
537
|
-
'BLOCO QUE PAUSA',
|
|
538
|
-
'AGUARDA DO HUMANO',
|
|
539
|
-
'IMPEDIMENTO',
|
|
540
|
-
'ULTIMO EVENTO',
|
|
541
|
-
'PARADA HA',
|
|
542
|
-
], m.linhas.map((l) => [
|
|
538
|
+
L.push((0, util_1.tabela)([...t.colunas], m.linhas.map((l) => [
|
|
543
539
|
l.perfil,
|
|
544
540
|
l.thread,
|
|
545
541
|
l.faseAtual,
|
|
546
|
-
l.situacao,
|
|
542
|
+
t.situacoes[l.situacao] ?? l.situacao,
|
|
547
543
|
l.pausas.map((p) => p.bloco || '?').join(' ') || '-',
|
|
548
544
|
l.pausas.map((p) => p.pausaSobre).filter((s) => s !== '').join('; ') || '-',
|
|
549
|
-
l.impedimentos.map((p) => p.motivo).join(' ') ||
|
|
550
|
-
l.ultimoEvento ? l.ultimoEvento.tipo :
|
|
545
|
+
l.impedimentos.map((p) => p.motivo).join(' ') || t.nao,
|
|
546
|
+
l.ultimoEvento ? l.ultimoEvento.tipo : t.semLedger,
|
|
551
547
|
l.paradaHaMin === null
|
|
552
548
|
? '-'
|
|
553
549
|
: `${(0, horario_1.duracaoRelativa)(l.paradaHaMin)}${l.acimaDoLimite ? ' !' : ''}`,
|
|
@@ -555,7 +551,7 @@ function textoDoMonitor(m) {
|
|
|
555
551
|
const hitl = m.linhas.filter((l) => l.precisaDeHumano);
|
|
556
552
|
if (hitl.length > 0) {
|
|
557
553
|
L.push('');
|
|
558
|
-
L.push(
|
|
554
|
+
L.push(t.esperando);
|
|
559
555
|
for (const l of hitl) {
|
|
560
556
|
L.push(` ${l.thread} (${l.tag}, ${l.nome})`);
|
|
561
557
|
for (const p of l.pausas.filter((x) => x.sessaoViva !== true))
|
|
@@ -565,7 +561,7 @@ function textoDoMonitor(m) {
|
|
|
565
561
|
const impedidas = m.linhas.filter((l) => l.temImpedimento);
|
|
566
562
|
if (impedidas.length > 0) {
|
|
567
563
|
L.push('');
|
|
568
|
-
L.push(
|
|
564
|
+
L.push(t.impedidas);
|
|
569
565
|
for (const l of impedidas) {
|
|
570
566
|
L.push(` ${l.thread} (${l.tag}, ${l.nome})`);
|
|
571
567
|
for (const p of l.impedimentos)
|
|
@@ -575,16 +571,16 @@ function textoDoMonitor(m) {
|
|
|
575
571
|
const emCurso = m.linhas.filter((l) => l.pausas.some((p) => p.sessaoViva === true));
|
|
576
572
|
if (emCurso.length > 0) {
|
|
577
573
|
L.push('');
|
|
578
|
-
L.push(
|
|
574
|
+
L.push(t.previstas);
|
|
579
575
|
for (const l of emCurso) {
|
|
580
576
|
for (const p of l.pausas.filter((x) => x.sessaoViva === true)) {
|
|
581
|
-
L.push(
|
|
577
|
+
L.push(t.vaiPausar(l.thread, p.bloco || '?', (0, horario_1.localizarTexto)(p.pausaSobre, { agora: m.consultadoEm })));
|
|
582
578
|
}
|
|
583
579
|
}
|
|
584
580
|
}
|
|
585
581
|
if (m.resumo.aguardandoHumano === 0 && m.resumo.comImpedimento === 0) {
|
|
586
582
|
L.push('');
|
|
587
|
-
L.push(
|
|
583
|
+
L.push(t.nenhuma);
|
|
588
584
|
}
|
|
589
585
|
return L.join('\n');
|
|
590
586
|
}
|