@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
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.comCacheNoHost = comCacheNoHost;
|
|
37
|
+
/**
|
|
38
|
+
* RM-072 (D9 da ork-check5x): o trabalhador da varredura do Agile Check. Recebe o arquivo com uma ferramenta, as
|
|
39
|
+
* unidades dela, a config da rodada e o contexto (arvores do HEAD e da base, shas, prazo), roda o mesmo `scanTool` do
|
|
40
|
+
* Classic com um guarda de rodada proprio (containers e saidas brutas dele) e imprime o resultado em JSON. Quem chama e o
|
|
41
|
+
* `runScanAgil`, um trabalhador por ferramenta, ao mesmo tempo.
|
|
42
|
+
*/
|
|
43
|
+
const fs = __importStar(require("node:fs"));
|
|
44
|
+
const executor_1 = require("./executor");
|
|
45
|
+
const guard_1 = require("./guard");
|
|
46
|
+
const run_1 = require("./run");
|
|
47
|
+
/**
|
|
48
|
+
* S6 do CHECK: o binario nativo usa o cache por usuario que o Docker monta (o caminho do host no lugar do caminho do
|
|
49
|
+
* container), e nao o `/tmp` compartilhado do catalogo, onde outro usuario da maquina deixaria um banco do Trivy.
|
|
50
|
+
*/
|
|
51
|
+
function comCacheNoHost(t) {
|
|
52
|
+
if (!t.cacheMounts?.length)
|
|
53
|
+
return t;
|
|
54
|
+
let args = t.args;
|
|
55
|
+
for (const m of t.cacheMounts)
|
|
56
|
+
args = args.map((a) => a.split(m.container).join(m.host));
|
|
57
|
+
return { ...t, args };
|
|
58
|
+
}
|
|
59
|
+
if (require.main === module) {
|
|
60
|
+
const trabalho = JSON.parse(fs.readFileSync(process.argv[2], 'utf8'));
|
|
61
|
+
const guard = new guard_1.RoundGuard(trabalho.ctx.mainRoot);
|
|
62
|
+
try {
|
|
63
|
+
const { deadline, ...resto } = trabalho.ctx;
|
|
64
|
+
// RM-072 (D12): com o binario nativo na versao do catalogo, o Agile o usa antes do Docker (o probe sem Docker faz o
|
|
65
|
+
// chooseExecutor escolher o nativo); sem ele, o Docker, como no Classic.
|
|
66
|
+
const sonda = (0, executor_1.defaultProbe)();
|
|
67
|
+
const probe = trabalho.nativoPrimeiro ? { ...sonda, dockerCli: () => false, dockerDaemon: () => false } : sonda;
|
|
68
|
+
const r = (0, run_1.scanTool)(trabalho.nativoPrimeiro ? comCacheNoHost(trabalho.tool) : trabalho.tool, trabalho.units, trabalho.config, { ...resto, deadline: deadline ?? Infinity, probe, guard, images: new Map() });
|
|
69
|
+
process.stdout.write(JSON.stringify(r));
|
|
70
|
+
}
|
|
71
|
+
finally {
|
|
72
|
+
guard.close();
|
|
73
|
+
}
|
|
74
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LOOP_CATEGORIES = exports.LOOP_CATEGORIES_HIGH = exports.LOOP_CATEGORIES_ANY = void 0;
|
|
4
|
+
exports.isLoop = isLoop;
|
|
5
|
+
/** Categories where any new finding enters the loop. */
|
|
6
|
+
exports.LOOP_CATEGORIES_ANY = ['secret'];
|
|
7
|
+
/** Categories where a new finding enters the loop at high or critical. */
|
|
8
|
+
exports.LOOP_CATEGORIES_HIGH = ['dependency', 'sast', 'iac', 'workflow'];
|
|
9
|
+
/** Every loop category: the categories whose tool, unavailable or failed, leaves the loop unscanned. */
|
|
10
|
+
exports.LOOP_CATEGORIES = [...exports.LOOP_CATEGORIES_ANY, ...exports.LOOP_CATEGORIES_HIGH];
|
|
11
|
+
function isLoop(category, severity) {
|
|
12
|
+
if (exports.LOOP_CATEGORIES_ANY.includes(category))
|
|
13
|
+
return true;
|
|
14
|
+
return exports.LOOP_CATEGORIES_HIGH.includes(category) && (severity === 'high' || severity === 'critical');
|
|
15
|
+
}
|
package/dist/session-events.js
CHANGED
|
@@ -49,6 +49,9 @@ const ledger_1 = require("./ledger");
|
|
|
49
49
|
exports.LIMITE_EVENTO_BYTES = 16384;
|
|
50
50
|
exports.TIPOS_SENSOR = ['permission_prompt', 'permission_request', 'notification',
|
|
51
51
|
'stop', 'subagent_stop', 'commit', 'heartbeat', 'resumed'];
|
|
52
|
+
/** As contagens de trabalho pendente que o Stop aceita, cada uma um inteiro de 0 a `LIMITE_CONTAGEM_DO_STOP`. */
|
|
53
|
+
const CONTAGENS_DO_STOP = ['backgroundTasks', 'sessionCrons'];
|
|
54
|
+
const LIMITE_CONTAGEM_DO_STOP = 10000;
|
|
52
55
|
/**
|
|
53
56
|
* A adoção governa a identidade de uma sessão que já estava rodando e, por decisão da
|
|
54
57
|
* higiene de runtimes, não inventa data de despacho nem prompt executado. O sensor ancora
|
|
@@ -90,11 +93,16 @@ function validarPayload(bruto, tipo, agoraMs) {
|
|
|
90
93
|
const p = JSON.parse(bruto.trim() || '{}');
|
|
91
94
|
if (!p || typeof p !== 'object' || Array.isArray(p))
|
|
92
95
|
throw new Error('payload deve ser objeto JSON');
|
|
93
|
-
const campos = ['observedAt', 'eventId', 'notificationType', 'commit'];
|
|
96
|
+
const campos = ['observedAt', 'eventId', 'notificationType', 'commit', 'accountFailure'];
|
|
94
97
|
for (const [k, v] of Object.entries(p)) {
|
|
95
|
-
|
|
98
|
+
const valido = CONTAGENS_DO_STOP.includes(k)
|
|
99
|
+
? Number.isSafeInteger(v) && v >= 0 && v <= LIMITE_CONTAGEM_DO_STOP
|
|
100
|
+
: campos.includes(k) && typeof v === 'string';
|
|
101
|
+
if (!valido)
|
|
96
102
|
throw new Error(`campo de payload inválido: ${k}`);
|
|
97
103
|
}
|
|
104
|
+
if (tipo !== 'stop' && CONTAGENS_DO_STOP.some((k) => k in p))
|
|
105
|
+
throw new Error('contagem de trabalho pendente só vale no stop');
|
|
98
106
|
const payload = p;
|
|
99
107
|
if (payload.observedAt !== undefined && (!/^\d{4}-\d\d-\d\dT\d\d:\d\d:\d\d\.\d{3}Z$/.test(payload.observedAt) ||
|
|
100
108
|
!Number.isFinite(Date.parse(payload.observedAt)) || new Date(payload.observedAt).toISOString() !== payload.observedAt ||
|
|
@@ -105,6 +113,10 @@ function validarPayload(bruto, tipo, agoraMs) {
|
|
|
105
113
|
if (payload.notificationType !== undefined && !['permission_prompt', 'idle_prompt', 'auth_success', 'elicitation_dialog'].includes(payload.notificationType)) {
|
|
106
114
|
throw new Error('notificationType inválido');
|
|
107
115
|
}
|
|
116
|
+
if (payload.accountFailure !== undefined &&
|
|
117
|
+
(payload.accountFailure !== 'runtime.quota-exhausted' || !['notification', 'stop'].includes(tipo))) {
|
|
118
|
+
throw new Error('accountFailure inválido');
|
|
119
|
+
}
|
|
108
120
|
if ((tipo === 'commit' && !payload.commit) || (payload.commit !== undefined &&
|
|
109
121
|
(tipo !== 'commit' || !/^(?:[a-f0-9]{40}|[a-f0-9]{64})$/.test(payload.commit))))
|
|
110
122
|
throw new Error('commit exige SHA completo');
|
|
@@ -183,6 +195,11 @@ function ingerirEvento(raiz, sessionId, tipoBruto, bruto = '{}', agoraMs = Date.
|
|
|
183
195
|
// I-34: a notificação de ociosidade depois do Stop não é atividade; sem o tipo gravado,
|
|
184
196
|
// o observador claude-bg não teria como distingui-la e trataria o Stop como superado.
|
|
185
197
|
...(tipo === 'notification' && payload.notificationType ? { notificationType: payload.notificationType } : {}),
|
|
198
|
+
// RM-037 (CHECK 3 da ork-rm037defeit2): sem as contagens gravadas, o observador não toma a ociosidade por fim do turno.
|
|
199
|
+
...(payload.backgroundTasks !== undefined ? { backgroundTasks: payload.backgroundTasks } : {}),
|
|
200
|
+
...(payload.sessionCrons !== undefined ? { sessionCrons: payload.sessionCrons } : {}),
|
|
201
|
+
...(payload.accountFailure ? { motivo: payload.accountFailure,
|
|
202
|
+
falhaDeConta: { motivo: payload.accountFailure, resetEm: null, fonte: 'hook', trecho: 'sinal tipado do hook' } } : {}),
|
|
186
203
|
...(bloqueio ? { tipoDeHitl: 'permissao', pergunta: null, estadoRuntime: 'blocked' } : {}) };
|
|
187
204
|
if (retomada && ultimo?.tipo === 'sessao_bloqueada' && Date.parse(observedAt) > Date.parse(ultimo.ts)) {
|
|
188
205
|
(0, ledger_1.registrar)(dir, thread.id, 'sessao_destravada', { ...dados, sensorEventId: eventId + ':resume' });
|
|
@@ -33,11 +33,13 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.THREAD_REMOVIDA = exports.ARTEFATO_DA_FASE = exports.INTERVALO_WATCH_CLAUDE_MS = void 0;
|
|
36
|
+
exports.THREAD_REMOVIDA = exports.ARTEFATO_DA_FASE = exports.OCIOSA_DEPOIS_DO_STOP_MS = exports.INTERVALO_WATCH_CLAUDE_MS = void 0;
|
|
37
37
|
exports.normalizarNativo = normalizarNativo;
|
|
38
38
|
exports.stopCorrelacionado = stopCorrelacionado;
|
|
39
|
+
exports.trabalhoPendenteDoStop = trabalhoPendenteDoStop;
|
|
39
40
|
exports.bloqueioPendente = bloqueioPendente;
|
|
40
41
|
exports.classificarSessaoClaude = classificarSessaoClaude;
|
|
42
|
+
exports.arquivoDaTranscricao = arquivoDaTranscricao;
|
|
41
43
|
exports.ultimoErroDeApi = ultimoErroDeApi;
|
|
42
44
|
exports.falhaDeContaDaTranscricao = falhaDeContaDaTranscricao;
|
|
43
45
|
exports.comFalhaDeConta = comFalhaDeConta;
|
|
@@ -77,8 +79,19 @@ const thread_1 = require("./thread");
|
|
|
77
79
|
const util_1 = require("./util");
|
|
78
80
|
const procedencia_1 = require("./procedencia");
|
|
79
81
|
const hitl_1 = require("./hitl");
|
|
82
|
+
const conta_esgotada_1 = require("./conta-esgotada");
|
|
80
83
|
/** Uma consulta nativa custa cerca de 0,3 s; cinco segundos mantém o custo abaixo de 10%. */
|
|
81
84
|
exports.INTERVALO_WATCH_CLAUDE_MS = 5000;
|
|
85
|
+
/**
|
|
86
|
+
* RM-037 (defeitos de 19 e 20/10/2026, defeito 4): quanto a sessão fica ociosa no prompt (`working` com `status: idle`)
|
|
87
|
+
* depois do Stop correlacionado até o observador tomar o turno por encerrado. O Claude Code mantém `working` a sessão cuja
|
|
88
|
+
* resposta final ele lê como "ainda há passo" e só a encerra (`done`) depois de 60 min ociosa (`bg retire <id>:
|
|
89
|
+
* idle-prompt, idle 60m` no log do daemon, medido em 20/10/2026), e nesse tempo a sessão segurava a condução. O `status`
|
|
90
|
+
* ocioso não basta (CHECK 3 da ork-rm037defeit2, medido no Claude Code 2.1.304): com só um despertar agendado a sessão
|
|
91
|
+
* aparece `idle` e volta a escrever quando ele dispara. Só conta a ociosidade depois do Stop que disse zero tarefa em
|
|
92
|
+
* segundo plano e zero despertar (`trabalhoPendenteDoStop`).
|
|
93
|
+
*/
|
|
94
|
+
exports.OCIOSA_DEPOIS_DO_STOP_MS = 5 * 60 * 1000;
|
|
82
95
|
const LIMITE_EVIDENCIA_BYTES = 4096;
|
|
83
96
|
/** D15 (5): teto dos textos nativos (`state`, `status`, `id`, `kind`) e do erro do diagnóstico. */
|
|
84
97
|
const LIMITE_TEXTO_NATIVO = 64;
|
|
@@ -129,6 +142,22 @@ function stopCorrelacionado(eventos, sessao) {
|
|
|
129
142
|
return null;
|
|
130
143
|
return correlacionados[ultimo];
|
|
131
144
|
}
|
|
145
|
+
/**
|
|
146
|
+
* RM-037 (CHECK 3 da ork-rm037defeit2): o trabalho que o Stop disse que ainda vai acordar a sessão, ou `null` quando ele
|
|
147
|
+
* gravou as duas contagens (`backgroundTasks` e `sessionCrons`, da entrada do hook) e as duas são zero. No Claude Code
|
|
148
|
+
* 2.1.304 o `status` fica `shell` com Bash em segundo plano e `idle` com despertar agendado (`CronCreate`,
|
|
149
|
+
* `ScheduleWakeup`, `/loop`) ou tarefa MCP. O Stop sem as contagens (hook ou runtime de antes) não prova que nada vai
|
|
150
|
+
* voltar: a sessão segue esperando, como antes desta regra, o `done` do runtime.
|
|
151
|
+
*/
|
|
152
|
+
function trabalhoPendenteDoStop(stop) {
|
|
153
|
+
const { backgroundTasks: tarefas, sessionCrons: despertares } = stop;
|
|
154
|
+
if (tarefas === 0 && despertares === 0)
|
|
155
|
+
return null;
|
|
156
|
+
if (typeof tarefas !== 'number' || typeof despertares !== 'number') {
|
|
157
|
+
return 'o Stop não disse se há tarefa em segundo plano ou despertar agendado (sem background_tasks e session_crons)';
|
|
158
|
+
}
|
|
159
|
+
return `o Stop registrou ${tarefas} tarefa(s) em segundo plano e ${despertares} despertar(es) agendado(s)`;
|
|
160
|
+
}
|
|
132
161
|
/**
|
|
133
162
|
* O último entre bloqueio, destravamento e Stop da sessão, depois do despacho, é bloqueio?
|
|
134
163
|
* O Stop resolve o bloqueio anterior: o turno só termina depois que o prompt de permissão
|
|
@@ -201,6 +230,8 @@ function classificarSessaoClaude(e) {
|
|
|
201
230
|
delete cursor.mortoDesde;
|
|
202
231
|
if (estado !== 'blocked')
|
|
203
232
|
delete cursor.bloqueadoDesde;
|
|
233
|
+
if (estado !== 'working')
|
|
234
|
+
delete cursor.ociosaDesde;
|
|
204
235
|
if (['done', 'failed', 'stopped', 'working', 'blocked'].includes(estado ?? ''))
|
|
205
236
|
delete cursor.desconhecidoDesde;
|
|
206
237
|
switch (estado) {
|
|
@@ -248,6 +279,27 @@ function classificarSessaoClaude(e) {
|
|
|
248
279
|
return esperaHumana();
|
|
249
280
|
}
|
|
250
281
|
delete cursor.bloqueadoDesde;
|
|
282
|
+
// RM-037 (defeito 4 de 19 e 20/10/2026): turno encerrado pelo Stop e a sessão ociosa no prompt (`status: idle`). O
|
|
283
|
+
// runtime só a encerra depois de 60 min; passado `OCIOSA_DEPOIS_DO_STOP_MS` sem atividade, vale a prova do `ork`, como
|
|
284
|
+
// no `done`, mas só depois do Stop que disse zero tarefa em segundo plano e zero despertar agendado (CHECK 3): o
|
|
285
|
+
// despertar deixa a sessão `idle` até disparar. O prazo conta da primeira leitura ociosa e nunca de antes do Stop: a
|
|
286
|
+
// sessão que voltou e parou de novo recomeça a contagem.
|
|
287
|
+
if (estado === 'working' && r.status === 'idle' && stop && !bloqueioPendente(e.eventos, e.sessao)) {
|
|
288
|
+
const pendente = trabalhoPendenteDoStop(stop);
|
|
289
|
+
if (pendente !== null) {
|
|
290
|
+
delete cursor.ociosaDesde;
|
|
291
|
+
return espera(`turno encerrado pelo Stop com a sessão ociosa no prompt (working/idle), mas ${pendente}; ` +
|
|
292
|
+
'a ociosidade não encerra o turno');
|
|
293
|
+
}
|
|
294
|
+
cursor.ociosaDesde ??= agora;
|
|
295
|
+
const desde = Math.max(cursor.ociosaDesde, Date.parse(stop.ts) || 0);
|
|
296
|
+
if (agora - desde < exports.OCIOSA_DEPOIS_DO_STOP_MS) {
|
|
297
|
+
return espera('turno encerrado pelo Stop com a sessão ociosa no prompt (working/idle); aguardando o prazo da ociosidade');
|
|
298
|
+
}
|
|
299
|
+
return concluir(`Stop correlacionado e sessão ociosa no prompt (working/idle) por ${exports.OCIOSA_DEPOIS_DO_STOP_MS / 60000} min, ` +
|
|
300
|
+
'sem tarefa em segundo plano nem despertar agendado no Stop', false);
|
|
301
|
+
}
|
|
302
|
+
delete cursor.ociosaDesde;
|
|
251
303
|
return espera(estado === 'blocked' ? 'sessão bloqueada à espera humana' : 'sessão trabalhando');
|
|
252
304
|
}
|
|
253
305
|
default:
|
|
@@ -271,7 +323,10 @@ function textoDoErroDeApi(e) {
|
|
|
271
323
|
return (0, hitl_1.redigirSegredos)([codigo, textos.filter(Boolean).join(' ')].filter(Boolean).join(': ')).slice(0, 4096);
|
|
272
324
|
}
|
|
273
325
|
const UUID = /^[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12}$/i;
|
|
274
|
-
/**
|
|
326
|
+
/**
|
|
327
|
+
* A transcricao da sessao no diretorio do perfil (ou no implicito, sem perfil); `null` com sessao que nao e uuid.
|
|
328
|
+
* RM-059 (F9): o Mensageiro de Sessoes (`entrega-por-mod.ts`) acha nela o turno em que a sessao parou.
|
|
329
|
+
*/
|
|
275
330
|
function arquivoDaTranscricao(perfil, cwd, sessionId) {
|
|
276
331
|
if (!UUID.test(sessionId))
|
|
277
332
|
return null;
|
|
@@ -337,15 +392,6 @@ function falhaDeContaDaTranscricao(perfil, cwd, sessionId, agoraMs = Date.now())
|
|
|
337
392
|
function falhaDoErro(erro, agoraMs) {
|
|
338
393
|
return erro ? (0, claude_bg_1.parseFalhaDeConta)(erro.texto, erro.em ? Date.parse(erro.em) : agoraMs) : null;
|
|
339
394
|
}
|
|
340
|
-
/**
|
|
341
|
-
* RM-037 (fatia 5): a cota vista com a sessao viva. Em 02/10/2026 as sessoes de uma conta pararam as 06:00Z no
|
|
342
|
-
* limite de gasto ("your session limit resets 4:40am (<fuso>)"), sem Stop e com o processo vivo por mais uma
|
|
343
|
-
* hora; o perfil so saiu do rodizio as 07:15Z, quando o processo morreu, e o redespacho das 06:14Z caiu na mesma
|
|
344
|
-
* conta. Aqui, a cada volta com a transcricao maior que na anterior, o ultimo erro de API depois do despacho passa
|
|
345
|
-
* pelo criterio unico da D16; esgotamento com prazo futuro marca o perfil ate a hora dita (ou a janela padrao
|
|
346
|
-
* contada da mensagem) e grava `runtime_quota_detected` uma vez por erro. A fase nao fecha e a conducao nao muda:
|
|
347
|
-
* a sessao continua viva, e o fecho segue o caminho de sempre, sem marcar de novo o mesmo erro.
|
|
348
|
-
*/
|
|
349
395
|
function cotaAoVivo(ctx, perfil, cwd, cursor, erroDaTranscricao, gravar) {
|
|
350
396
|
const { sessao, dir } = ctx;
|
|
351
397
|
const arquivo = arquivoDaTranscricao(perfil, cwd, sessao.sessionId);
|
|
@@ -356,22 +402,22 @@ function cotaAoVivo(ctx, perfil, cwd, cursor, erroDaTranscricao, gravar) {
|
|
|
356
402
|
tamanho = st?.isFile() ? st.size : NaN;
|
|
357
403
|
}
|
|
358
404
|
catch {
|
|
359
|
-
return;
|
|
405
|
+
return null;
|
|
360
406
|
}
|
|
361
407
|
if (!Number.isFinite(tamanho) || cursor.transcricaoBytes === tamanho)
|
|
362
|
-
return;
|
|
408
|
+
return null;
|
|
363
409
|
cursor.transcricaoBytes = tamanho;
|
|
364
410
|
const erro = erroDaTranscricao();
|
|
365
411
|
const erroMs = erro?.em ? Date.parse(erro.em) : NaN;
|
|
366
412
|
// Linha sem instante, ou de antes deste despacho (sessao retomada), nao prova que a cota e deste turno.
|
|
367
413
|
if (!erro || !Number.isFinite(erroMs) || erroMs < Date.parse(sessao.despachadaEm))
|
|
368
|
-
return;
|
|
414
|
+
return null;
|
|
369
415
|
const falha = falhaDoErro(erro, ctx.agoraMs);
|
|
370
416
|
if (falha?.motivo !== 'runtime.quota-exhausted' || !ctx.carregado)
|
|
371
|
-
return;
|
|
417
|
+
return null;
|
|
372
418
|
const esgotadoAte = (0, ratelimit_1.prazoDaCotaVista)(ctx.carregado.manifesto, falha, erroMs, ctx.agoraMs);
|
|
373
419
|
if (!esgotadoAte)
|
|
374
|
-
return;
|
|
420
|
+
return null;
|
|
375
421
|
// A chave do erro: o uuid da linha ou, sem ele, o instante e o trecho (dado de maquina, nunca texto).
|
|
376
422
|
const sensorEventId = (0, node_crypto_1.createHash)('sha256')
|
|
377
423
|
.update(JSON.stringify([sessao.sessionId, sessao.despachadaEm, erro.uuid ?? [erro.em, falha.trecho]])).digest('hex');
|
|
@@ -394,6 +440,7 @@ function cotaAoVivo(ctx, perfil, cwd, cursor, erroDaTranscricao, gravar) {
|
|
|
394
440
|
esgotadoAte, trecho: falha.trecho.replace(/\p{Cc}/gu, ' '), perfil: perfil ? { id: perfil.id, runtime: perfil.runtime } : null,
|
|
395
441
|
perfilMarcado: !!perfil, origem: 'sessions.watch' });
|
|
396
442
|
});
|
|
443
|
+
return { falha, esgotadoAte, erroEm: erro.em };
|
|
397
444
|
}
|
|
398
445
|
/**
|
|
399
446
|
* I-33 (D11): precedencia entre a prova da I-34 e a falha de conta. Com Stop correlacionado vale
|
|
@@ -472,11 +519,11 @@ function saidaDoArtefato(raiz, threadId, sessao, fonte, eventos) {
|
|
|
472
519
|
: atual.mtimeMs !== null && atual.mtimeMs >= Date.parse(sessao.despachadaEm);
|
|
473
520
|
return { arquivo, produzido, sha256: atual.sha256, sha256Base: base?.sha256 ?? null, texto: atual.texto };
|
|
474
521
|
}
|
|
475
|
-
/** Exatamente um veredito legível numa linha `Veredito:
|
|
522
|
+
/** Exatamente um veredito legível numa linha `Veredito: ...`, incluindo a reprovação curta do prompt de CHECK. */
|
|
476
523
|
function vereditoDoParecer(texto) {
|
|
477
524
|
const achados = new Set();
|
|
478
525
|
for (const linha of texto.split('\n')) {
|
|
479
|
-
const m = /^[#>*_`\s-]*veredito[*_`\s]*:[*_`\s]*(passou|precisa de mudan[cç]a|bloqueado)(?![\p{L}\p{N}])/iu.exec(linha);
|
|
526
|
+
const m = /^[#>*_`\s-]*veredito[*_`\s]*:[*_`\s]*(passou|reprovou|precisa de mudan[cç]a|bloqueado)(?![\p{L}\p{N}])/iu.exec(linha);
|
|
480
527
|
if (m)
|
|
481
528
|
achados.add(m[1].toUpperCase().replace('Ç', 'C'));
|
|
482
529
|
}
|
|
@@ -698,9 +745,17 @@ function observarClaudeSobLock(ctx) {
|
|
|
698
745
|
}
|
|
699
746
|
if (!c.terminal) {
|
|
700
747
|
const lidos = cursor.transcricaoBytes;
|
|
701
|
-
cotaAoVivo(ctx, perfil, fonte.cwd, cursor, erroDaTranscricao, gravar);
|
|
748
|
+
const cota = cotaAoVivo(ctx, perfil, fonte.cwd, cursor, erroDaTranscricao, gravar);
|
|
702
749
|
if (cursor.transcricaoBytes !== lidos)
|
|
703
750
|
(0, codex_runner_1.gravarAtomico)(arquivoCursor, cursor);
|
|
751
|
+
if (cota && perfil && ctx.carregado) {
|
|
752
|
+
(0, conta_esgotada_1.reconciliarContaEsgotada)({ raiz, perfil, falha: cota.falha, esgotadoAte: cota.esgotadoAte,
|
|
753
|
+
erroEm: cota.erroEm, agoraMs: ctx.agoraMs });
|
|
754
|
+
const terminal = (0, ledger_1.lerLedger)(dir).find(e => e.tipo === 'phase_result' && e.sessionId === sessao.sessionId &&
|
|
755
|
+
e.motivo === 'runtime.quota-exhausted');
|
|
756
|
+
if (terminal)
|
|
757
|
+
return { ...base, concluido: true, classificacao: 'gate_blocked' };
|
|
758
|
+
}
|
|
704
759
|
}
|
|
705
760
|
if (!c.terminal && c.inconclusivo)
|
|
706
761
|
return (0, session_events_1.comLockDeSessao)(dir, () => {
|