@orkastery/cli 0.5.3 → 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 +195 -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/autoridade.json +56 -0
- package/adapters/claude-code/mods/ork-clima/.claude-plugin/plugin.json +14 -0
- package/adapters/claude-code/mods/ork-clima/hooks/contas.ts +283 -0
- package/adapters/claude-code/mods/ork-clima/hooks/hooks.json +3 -0
- package/adapters/claude-code/mods/ork-clima/hooks/previsao.ts +393 -0
- package/adapters/claude-code/mods/ork-clima/hooks/register.ts +205 -0
- package/adapters/claude-code/mods/ork-clima/orkastery-mod.json +5 -0
- package/adapters/claude-code/mods/ork-clima/types/index.d.ts +80 -0
- package/adapters/claude-code/mods/ork-freio/.claude-plugin/plugin.json +14 -0
- package/adapters/claude-code/mods/ork-freio/hooks/carga.ts +160 -0
- package/adapters/claude-code/mods/ork-freio/hooks/conferencia.ts +309 -0
- package/adapters/claude-code/mods/ork-freio/hooks/hooks.json +3 -0
- package/adapters/claude-code/mods/ork-freio/hooks/lote.ts +270 -0
- package/adapters/claude-code/mods/ork-freio/hooks/register.ts +285 -0
- package/adapters/claude-code/mods/ork-freio/orkastery-mod.json +5 -0
- package/adapters/claude-code/mods/ork-freio/types/index.d.ts +127 -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-mesa/.claude-plugin/plugin.json +14 -0
- package/adapters/claude-code/mods/ork-mesa/hooks/cartoes.tsx +246 -0
- package/adapters/claude-code/mods/ork-mesa/hooks/decidir.ts +110 -0
- package/adapters/claude-code/mods/ork-mesa/hooks/fila.ts +253 -0
- package/adapters/claude-code/mods/ork-mesa/hooks/hooks.json +3 -0
- package/adapters/claude-code/mods/ork-mesa/hooks/obvia.ts +98 -0
- package/adapters/claude-code/mods/ork-mesa/hooks/register.tsx +493 -0
- package/adapters/claude-code/mods/ork-mesa/orkastery-mod.json +5 -0
- package/adapters/claude-code/mods/ork-mesa/types/index.d.ts +131 -0
- package/adapters/claude-code/mods/ork-pista/.claude-plugin/plugin.json +14 -0
- package/adapters/claude-code/mods/ork-pista/hooks/acoes.ts +71 -0
- package/adapters/claude-code/mods/ork-pista/hooks/ci.ts +121 -0
- package/adapters/claude-code/mods/ork-pista/hooks/hooks.json +3 -0
- package/adapters/claude-code/mods/ork-pista/hooks/pista.tsx +356 -0
- package/adapters/claude-code/mods/ork-pista/hooks/register.tsx +439 -0
- package/adapters/claude-code/mods/ork-pista/orkastery-mod.json +5 -0
- package/adapters/claude-code/mods/ork-pista/types/index.d.ts +85 -0
- package/adapters/claude-code/mods/ork-ponte/.claude-plugin/plugin.json +13 -0
- package/adapters/claude-code/mods/ork-ponte/hooks/faixa.tsx +57 -0
- package/adapters/claude-code/mods/ork-ponte/hooks/guarda.ts +410 -0
- package/adapters/claude-code/mods/ork-ponte/hooks/hooks.json +3 -0
- package/adapters/claude-code/mods/ork-ponte/hooks/mostrado.ts +55 -0
- package/adapters/claude-code/mods/ork-ponte/hooks/nucleo.ts +157 -0
- package/adapters/claude-code/mods/ork-ponte/hooks/papel.ts +42 -0
- package/adapters/claude-code/mods/ork-ponte/hooks/register.ts +331 -0
- package/adapters/claude-code/mods/ork-ponte/hooks/vigia.ts +76 -0
- package/adapters/claude-code/mods/ork-ponte/orkastery-mod.json +5 -0
- package/adapters/claude-code/mods/ork-ponte/types/index.d.ts +178 -0
- package/adapters/claude-code/mods/ork-portao/.claude-plugin/plugin.json +14 -0
- package/adapters/claude-code/mods/ork-portao/hooks/hooks.json +3 -0
- package/adapters/claude-code/mods/ork-portao/hooks/lease.ts +201 -0
- package/adapters/claude-code/mods/ork-portao/hooks/plano.ts +304 -0
- package/adapters/claude-code/mods/ork-portao/hooks/register.ts +339 -0
- package/adapters/claude-code/mods/ork-portao/hooks/verify.ts +152 -0
- package/adapters/claude-code/mods/ork-portao/orkastery-mod.json +5 -0
- package/adapters/claude-code/mods/ork-portao/types/index.d.ts +60 -0
- package/adapters/claude-code/mods/ork-radar/.claude-plugin/plugin.json +14 -0
- package/adapters/claude-code/mods/ork-radar/hooks/colisao.ts +420 -0
- package/adapters/claude-code/mods/ork-radar/hooks/hooks.json +3 -0
- package/adapters/claude-code/mods/ork-radar/hooks/mapa.tsx +322 -0
- package/adapters/claude-code/mods/ork-radar/hooks/register.tsx +470 -0
- package/adapters/claude-code/mods/ork-radar/orkastery-mod.json +5 -0
- package/adapters/claude-code/mods/ork-radar/types/index.d.ts +72 -0
- 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/.claude-plugin/plugin.json +14 -0
- package/adapters/claude-code/mods/ork-sentinela/hooks/alertas.ts +85 -0
- package/adapters/claude-code/mods/ork-sentinela/hooks/despacho.ts +156 -0
- package/adapters/claude-code/mods/ork-sentinela/hooks/hooks.json +3 -0
- package/adapters/claude-code/mods/ork-sentinela/hooks/register.ts +511 -0
- package/adapters/claude-code/mods/ork-sentinela/hooks/vigia.ts +186 -0
- package/adapters/claude-code/mods/ork-sentinela/orkastery-mod.json +5 -0
- package/adapters/claude-code/mods/ork-sentinela/types/index.d.ts +65 -0
- package/adapters/claude-code/mods/ork-torre/.claude-plugin/plugin.json +14 -0
- package/adapters/claude-code/mods/ork-torre/hooks/agenda.ts +60 -0
- package/adapters/claude-code/mods/ork-torre/hooks/detalhe.tsx +236 -0
- package/adapters/claude-code/mods/ork-torre/hooks/frases.ts +42 -0
- package/adapters/claude-code/mods/ork-torre/hooks/hooks.json +3 -0
- package/adapters/claude-code/mods/ork-torre/hooks/painel.tsx +344 -0
- package/adapters/claude-code/mods/ork-torre/hooks/rede.ts +97 -0
- package/adapters/claude-code/mods/ork-torre/hooks/register.tsx +437 -0
- package/adapters/claude-code/mods/ork-torre/orkastery-mod.json +5 -0
- package/adapters/claude-code/mods/ork-torre/types/index.d.ts +108 -0
- 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 +3 -3
- package/adapters/openclaw/README.md +83 -10
- 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/docs-en/markdownlint-cli2.jsonc +22 -0
- package/assets/docs-en/padroes/documentacao-de-produto.md +135 -0
- package/assets/docs-en/padroes/roadmap-de-produto.md +100 -0
- package/assets/docs-en/produto/README.md +14 -0
- package/assets/docs-en/produto/_modelo-feature.md +62 -0
- package/assets/docs-en/roadmap/README.md +14 -0
- package/assets/docs-en/roadmap/_modelo-item.md +75 -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 +193 -15
- package/dist/adapters/codex-controller-worker.js +12 -5
- package/dist/adapters/codex-events.js +16 -4
- package/dist/adapters/codex.js +13 -2
- package/dist/agents-md.js +24 -15
- package/dist/atualizar-branch.js +245 -0
- package/dist/auditoria.js +13 -11
- package/dist/auditrun.js +68 -48
- package/dist/autorizacao-duravel.js +327 -0
- package/dist/board.js +98 -43
- package/dist/branch-de-estado.js +39 -9
- package/dist/busca-semantica.js +7 -5
- package/dist/catalogo.js +35 -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 +255 -46
- package/dist/ciclos.js +8 -6
- package/dist/claim-lint.js +12 -8
- package/dist/claims-conferir.js +350 -0
- package/dist/claims.js +13 -10
- package/dist/company-brain-client.js +45 -3
- package/dist/company-brain-journal.js +2 -1
- package/dist/company-brain-migration.js +47 -6
- package/dist/conducao-batida.js +759 -0
- package/dist/conducao-sentinela.js +405 -0
- package/dist/conducao-texto.js +12 -18
- package/dist/conducao.js +206 -59
- package/dist/conhecimento-consulta.js +270 -0
- package/dist/conhecimento.js +514 -0
- 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 +103 -82
- package/dist/doctor-forja.js +345 -0
- package/dist/doctor-pulse-cron.js +294 -27
- package/dist/doctor-rede.js +18 -17
- package/dist/doctor.js +278 -116
- package/dist/dsn-da-memoria.js +417 -0
- package/dist/entrega-por-mod.js +503 -0
- package/dist/entrega-pr.js +158 -57
- package/dist/escopo-escrita.js +10 -1
- package/dist/esgotamentos.js +13 -11
- package/dist/estado-thread.js +42 -17
- package/dist/evalrunner.js +35 -32
- package/dist/experiencia-instalacao.js +45 -25
- package/dist/fabrica-batida.js +323 -0
- package/dist/fabrica-estado.js +49 -16
- package/dist/fabrica-publicar.js +3 -1
- package/dist/fila-pesada.js +444 -0
- package/dist/fix.js +24 -21
- 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 +124 -81
- package/dist/gates.js +3 -28
- package/dist/handoff.js +33 -19
- 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 +53 -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 +72 -3
- package/dist/hitl-sessions.js +62 -9
- package/dist/hitl-tempo-parado.js +4 -4
- package/dist/hitl-texto-livre.js +7 -4
- package/dist/hitl.js +63 -64
- package/dist/horario.js +30 -7
- package/dist/hosts.js +155 -134
- package/dist/impedimento.js +108 -14
- package/dist/index.js +1421 -1019
- package/dist/indice-vetorial.js +14 -12
- package/dist/indice.js +7 -1
- package/dist/init.js +54 -49
- package/dist/instabilidade.js +144 -0
- package/dist/integracoes-locais.js +4 -0
- package/dist/intelligence-graph-cli.js +213 -88
- package/dist/intelligence-graph-contexto.js +56 -17
- package/dist/intelligence-graph-contract.js +2 -1
- package/dist/intelligence-graph-extract-md.js +56 -4
- package/dist/intelligence-graph-extract-ts.js +71 -3
- package/dist/intelligence-graph-query.js +96 -34
- package/dist/leases.js +19 -18
- package/dist/ledger-stats.js +17 -16
- package/dist/ledger.js +46 -2
- package/dist/licoes.js +12 -11
- package/dist/liveness.js +6 -3
- package/dist/locale-accounts.js +220 -0
- package/dist/locale-adapter.js +291 -0
- package/dist/locale-ajuda.js +833 -0
- 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 +165 -0
- package/dist/locale-grafo.js +129 -0
- package/dist/locale-master.js +182 -0
- package/dist/locale-network.js +524 -0
- package/dist/locale-onboarding.js +92 -0
- package/dist/locale-operacao-restante.js +931 -0
- package/dist/locale-phase.js +151 -0
- package/dist/locale-projetos.js +100 -0
- package/dist/locale-prompts.js +194 -0
- package/dist/locale-pulse.js +349 -0
- package/dist/locale-reservas.js +87 -0
- package/dist/locale-retry.js +524 -0
- package/dist/locale-roadmap.js +102 -0
- package/dist/locale-security-scan.js +69 -0
- package/dist/locale-setup.js +192 -0
- package/dist/locale-ship.js +597 -0
- package/dist/locale-thread.js +421 -0
- package/dist/locale-verify.js +201 -0
- package/dist/locale-worktree.js +246 -0
- package/dist/locale.js +1258 -0
- package/dist/maestro-runtime.js +22 -3
- package/dist/manifest.js +415 -13
- package/dist/maquina-ociosa.js +211 -0
- package/dist/maquina.js +31 -7
- package/dist/master-digest.js +6 -1
- package/dist/master-nota-local.js +200 -0
- package/dist/master-nota.js +14 -8
- package/dist/master.js +139 -65
- package/dist/mcp-artifacts.js +11 -2
- package/dist/mcp-conhecimento.js +52 -0
- package/dist/mcp-experiencia.js +26 -5
- package/dist/mcp-git.js +23 -6
- package/dist/mcp-grafo.js +7 -4
- package/dist/mcp-install.js +73 -8
- package/dist/mcp-noctum.js +101 -0
- package/dist/mcp-server.js +90 -16
- package/dist/mcp-ship-transporte.js +977 -0
- package/dist/mcp-ship.js +71 -25
- package/dist/mcp-transportes.js +17 -0
- package/dist/mcp-verify.js +6 -1
- package/dist/memoria.js +63 -58
- package/dist/modos-migracao.js +8 -6
- package/dist/modos.js +20 -24
- package/dist/network-roadmap.js +90 -51
- package/dist/noctum-aceite.js +789 -0
- package/dist/noctum-arco.js +1418 -0
- package/dist/noctum-capacidade.js +141 -0
- 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 +1046 -0
- package/dist/noctum-execucao.js +376 -0
- package/dist/noctum-fechamento.js +405 -0
- package/dist/noctum-fila.js +314 -0
- 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 +32 -3
- package/dist/onboarding.js +56 -26
- package/dist/orkmind.js +48 -25
- package/dist/orquestracao.js +44 -47
- package/dist/parado-no-condutor.js +174 -127
- package/dist/phase.js +144 -63
- package/dist/policies.js +37 -4
- package/dist/portfolio.js +4 -2
- package/dist/postura-local.js +235 -0
- package/dist/preflight.js +11 -10
- package/dist/procedencia.js +220 -0
- package/dist/projeto-alvo.js +186 -24
- package/dist/prompts.js +140 -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 +151 -24
- package/dist/pulse-resposta.js +368 -4
- package/dist/pulse.js +188 -22
- package/dist/ratelimit.js +16 -6
- package/dist/recall.js +14 -13
- package/dist/redacao-saida.js +63 -0
- package/dist/rede-adesao.js +13 -8
- package/dist/rede-forja.js +108 -24
- package/dist/rede-status.js +66 -47
- package/dist/rede.js +86 -46
- package/dist/retomada-checkpoint.js +101 -0
- package/dist/retry.js +451 -212
- package/dist/roadmap-reservas.js +45 -28
- package/dist/roadmap-status.js +129 -33
- package/dist/runtime-ambiente.js +5 -0
- package/dist/runtime-context.js +284 -32
- package/dist/runtime-escada.js +423 -0
- package/dist/runtime-profiles.js +103 -46
- package/dist/runtimes.js +2 -1
- 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 +26 -5
- package/dist/session-watcher-claude.js +81 -20
- package/dist/session-watcher.js +340 -42
- package/dist/sessoes-contas.js +10 -1
- package/dist/sessoes-inventario.js +1 -1
- package/dist/sessoes.js +25 -23
- package/dist/setup.js +59 -58
- package/dist/ship-publicar.js +971 -0
- package/dist/ship.js +243 -97
- package/dist/steal.js +77 -0
- package/dist/superficie.js +14 -11
- package/dist/thread-close.js +12 -11
- package/dist/thread.js +274 -100
- 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 +13 -3
- package/dist/varredura-acoes.js +507 -0
- package/dist/verify.js +608 -76
- package/dist/vida-da-thread.js +254 -0
- package/dist/worktree-local.js +167 -0
- package/dist/worktree.js +99 -83
- package/dist/yaml.js +27 -8
- 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/schemas/code-artifact-graph.v1.schema.json +2 -1
- 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/prompts.js
CHANGED
|
@@ -49,7 +49,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
49
49
|
};
|
|
50
50
|
})();
|
|
51
51
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
52
|
-
exports.TEMPLATES_EMBUTIDOS = exports.TEMPLATE_FASE_PADRAO = exports.PADROES_DE_HITL_EM_TEXTO_LIVRE = exports.CONTRATO_DE_FASE = exports.REGRA_CENTRAL = exports.SECOES_OBRIGATORIAS = exports.LIMITE_TEMPLATE_BYTES = void 0;
|
|
52
|
+
exports.TEMPLATES_EMBUTIDOS = exports.TEMPLATE_FASE_PADRAO_EN = exports.TEMPLATE_FASE_PADRAO = exports.PADROES_DE_HITL_EM_TEXTO_LIVRE = exports.CONTRATO_DE_FASE_EN = exports.CONTRATO_DE_FASE = exports.REGRA_CENTRAL_EN = exports.SECOES_OBRIGATORIAS_EN = exports.REGRA_CENTRAL = exports.SECOES_OBRIGATORIAS = exports.LIMITE_TEMPLATE_BYTES = void 0;
|
|
53
53
|
exports.pedidoComDicaDoGrafo = pedidoComDicaDoGrafo;
|
|
54
54
|
exports.dirDeTemplates = dirDeTemplates;
|
|
55
55
|
exports.variaveisUsadas = variaveisUsadas;
|
|
@@ -61,6 +61,8 @@ exports.carregarTemplatesDe = carregarTemplatesDe;
|
|
|
61
61
|
exports.carregarTemplates = carregarTemplates;
|
|
62
62
|
exports.exigirTemplate = exigirTemplate;
|
|
63
63
|
exports.templateDaFase = templateDaFase;
|
|
64
|
+
exports.idiomaDoTemplate = idiomaDoTemplate;
|
|
65
|
+
exports.avisosDeLingua = avisosDeLingua;
|
|
64
66
|
exports.textoDoLint = textoDoLint;
|
|
65
67
|
exports.tabelaDeTemplates = tabelaDeTemplates;
|
|
66
68
|
exports.threadDeExemplo = threadDeExemplo;
|
|
@@ -69,16 +71,18 @@ const path = __importStar(require("node:path"));
|
|
|
69
71
|
const modos_1 = require("./modos");
|
|
70
72
|
const policies_1 = require("./policies");
|
|
71
73
|
const types_1 = require("./types");
|
|
74
|
+
const locale_1 = require("./locale");
|
|
75
|
+
const locale_prompts_1 = require("./locale-prompts");
|
|
72
76
|
/** Limite duro de um template, o mesmo do manifesto: prosa longa nao vira prompt. */
|
|
73
77
|
exports.LIMITE_TEMPLATE_BYTES = 16384;
|
|
74
|
-
/**
|
|
75
|
-
|
|
78
|
+
/**
|
|
79
|
+
* KG5 fatia 2: dica opt-in no pedido; desligada preserva o texto byte a byte. Fatia 5: a dica diz o que
|
|
80
|
+
* a marca `arvore: modificada` quer dizer na aresta.
|
|
81
|
+
*/
|
|
82
|
+
function pedidoComDicaDoGrafo(pedido, thread, ligado, locale = (0, locale_1.localeAtivo)()) {
|
|
76
83
|
if (!ligado)
|
|
77
84
|
return pedido;
|
|
78
|
-
return pedido.trimEnd() + '
|
|
79
|
-
+ `Consulte ork_grafo_contexto {threadId: "${thread}"} ou ork grafo contexto ${thread} --json para o pacote da thread com evidencias e teto em bytes.\n`
|
|
80
|
-
+ 'As tools ork_grafo_vizinhos, ork_grafo_chamadores, ork_grafo_importadores e ork_grafo_caminho permitem aprofundar. '
|
|
81
|
-
+ 'Sem indice do HEAD, rode ork grafo indexar. O grafo e parcial; com arvore modificada, descreve o HEAD.\n';
|
|
85
|
+
return pedido.trimEnd() + (locale === 'en' ? locale_prompts_1.PROMPTS_EN : locale_prompts_1.PROMPTS_PT_BR).contextoDoGrafo(thread);
|
|
82
86
|
}
|
|
83
87
|
/** Onde um projeto guarda os templates que sobrescrevem os embutidos. */
|
|
84
88
|
function dirDeTemplates(raiz) {
|
|
@@ -106,7 +110,7 @@ function variaveisUsadas(corpo) {
|
|
|
106
110
|
function renderizar(template, valores) {
|
|
107
111
|
const faltando = variaveisUsadas(template.corpo).filter((v) => !(v in valores));
|
|
108
112
|
if (faltando.length > 0) {
|
|
109
|
-
throw new Error(
|
|
113
|
+
throw new Error((0, locale_1.msg)().prompts.cli.variavelSemValor(template.id, faltando.join(', ')));
|
|
110
114
|
}
|
|
111
115
|
const linhas = template.corpo.split('\n');
|
|
112
116
|
const saida = [];
|
|
@@ -137,7 +141,7 @@ function parseListaInline(bruto) {
|
|
|
137
141
|
function parseTemplate(bruto, origem) {
|
|
138
142
|
const casado = /^---\n([\s\S]*?)\n---\n([\s\S]*)$/.exec(bruto);
|
|
139
143
|
if (!casado) {
|
|
140
|
-
throw new Error(
|
|
144
|
+
throw new Error((0, locale_1.msg)().prompts.cli.frontmatterAusente(origem));
|
|
141
145
|
}
|
|
142
146
|
const campos = {};
|
|
143
147
|
for (const linha of casado[1].split('\n')) {
|
|
@@ -173,6 +177,8 @@ exports.SECOES_OBRIGATORIAS = [
|
|
|
173
177
|
];
|
|
174
178
|
/** A frase que nenhum template pode perder, porque ela e o contrato de todo modo. */
|
|
175
179
|
exports.REGRA_CENTRAL = 'REGRA CENTRAL: o modo afrouxa a pausa, NUNCA a verificacao.';
|
|
180
|
+
exports.SECOES_OBRIGATORIAS_EN = locale_prompts_1.PROMPTS_EN.secoesObrigatorias;
|
|
181
|
+
exports.REGRA_CENTRAL_EN = locale_prompts_1.PROMPTS_EN.regraCentral;
|
|
176
182
|
/** O contrato do prompt de fase (o do B4). */
|
|
177
183
|
exports.CONTRATO_DE_FASE = {
|
|
178
184
|
nome: 'fase',
|
|
@@ -181,6 +187,10 @@ exports.CONTRATO_DE_FASE = {
|
|
|
181
187
|
variavelObrigatoria: 'pedido',
|
|
182
188
|
validaFases: true,
|
|
183
189
|
};
|
|
190
|
+
exports.CONTRATO_DE_FASE_EN = {
|
|
191
|
+
nome: 'phase', secoes: exports.SECOES_OBRIGATORIAS_EN, regraCentral: exports.REGRA_CENTRAL_EN,
|
|
192
|
+
variavelObrigatoria: 'pedido', validaFases: true,
|
|
193
|
+
};
|
|
184
194
|
/**
|
|
185
195
|
* RM-057: os jeitos de um template pedir ao dono texto livre ou texto colado. Lista fechada, como o
|
|
186
196
|
* vocabulario do pulse: acrescentar um padrao e decisao de contrato, com teste. Casa sobre a linha
|
|
@@ -209,7 +219,9 @@ function procurarHitlEmTextoLivre(corpo) {
|
|
|
209
219
|
* template que perdeu a regra dos modos, que esqueceu o pedido do builder, que declara variavel
|
|
210
220
|
* que nao usa (ou usa variavel que nao declara) e que carrega credencial.
|
|
211
221
|
*/
|
|
212
|
-
function lintTemplate(t, contrato
|
|
222
|
+
function lintTemplate(t, contrato) {
|
|
223
|
+
contrato ??= t.id.endsWith('.en') ? exports.CONTRATO_DE_FASE_EN : exports.CONTRATO_DE_FASE;
|
|
224
|
+
const mc = (0, locale_1.msg)().prompts.cli;
|
|
213
225
|
const problemas = [];
|
|
214
226
|
const erro = (regra, detalhe) => {
|
|
215
227
|
problemas.push({ template: t.id || t.origem, regra, gravidade: 'erro', detalhe });
|
|
@@ -218,56 +230,56 @@ function lintTemplate(t, contrato = exports.CONTRATO_DE_FASE) {
|
|
|
218
230
|
problemas.push({ template: t.id || t.origem, regra, gravidade: 'aviso', detalhe });
|
|
219
231
|
};
|
|
220
232
|
if (!t.id)
|
|
221
|
-
erro('id',
|
|
233
|
+
erro('id', mc.idAusente);
|
|
222
234
|
if (t.origem !== 'embutido') {
|
|
223
235
|
const esperado = path.basename(t.origem, '.md');
|
|
224
236
|
if (t.id && t.id !== esperado) {
|
|
225
|
-
erro('id',
|
|
237
|
+
erro('id', mc.idDiverge(t.id, esperado));
|
|
226
238
|
}
|
|
227
239
|
}
|
|
228
240
|
if (!Number.isInteger(t.versao) || t.versao < 1) {
|
|
229
|
-
erro('versao',
|
|
241
|
+
erro('versao', mc.versaoInvalida(t.versao));
|
|
230
242
|
}
|
|
231
243
|
if (t.descricao.trim() === '')
|
|
232
|
-
erro('descricao',
|
|
244
|
+
erro('descricao', mc.descricaoAusente);
|
|
233
245
|
if (contrato.validaFases) {
|
|
234
246
|
for (const fase of t.fases) {
|
|
235
247
|
if (!types_1.FASES.includes(fase)) {
|
|
236
|
-
erro('fases',
|
|
248
|
+
erro('fases', mc.faseInvalida(fase, types_1.FASES.join(', ')));
|
|
237
249
|
}
|
|
238
250
|
}
|
|
239
251
|
}
|
|
240
252
|
const usadas = variaveisUsadas(t.corpo);
|
|
241
253
|
const naoDeclaradas = usadas.filter((v) => !t.variaveis.includes(v));
|
|
242
254
|
if (naoDeclaradas.length > 0) {
|
|
243
|
-
erro('variaveis',
|
|
255
|
+
erro('variaveis', mc.variaveisNaoDeclaradas(naoDeclaradas.join(', ')));
|
|
244
256
|
}
|
|
245
257
|
const naoUsadas = t.variaveis.filter((v) => !usadas.includes(v));
|
|
246
258
|
if (naoUsadas.length > 0) {
|
|
247
|
-
erro('variaveis',
|
|
259
|
+
erro('variaveis', mc.variaveisNaoUsadas(naoUsadas.join(', ')));
|
|
248
260
|
}
|
|
249
261
|
for (const secao of contrato.secoes) {
|
|
250
262
|
if (!t.corpo.includes(secao))
|
|
251
|
-
erro('secoes',
|
|
263
|
+
erro('secoes', mc.secaoAusente(secao));
|
|
252
264
|
}
|
|
253
265
|
if (!t.corpo.includes(contrato.regraCentral)) {
|
|
254
|
-
erro('regra-central',
|
|
266
|
+
erro('regra-central', mc.regraCentralAusente(contrato.regraCentral));
|
|
255
267
|
}
|
|
256
268
|
if (contrato.variavelObrigatoria && !usadas.includes(contrato.variavelObrigatoria)) {
|
|
257
|
-
erro(contrato.variavelObrigatoria,
|
|
269
|
+
erro(contrato.variavelObrigatoria, mc.pedidoAusente(contrato.variavelObrigatoria, contrato.nome));
|
|
258
270
|
}
|
|
259
271
|
for (const achado of (0, policies_1.procurarSegredos)(t.bruto)) {
|
|
260
|
-
erro('segredo',
|
|
272
|
+
erro('segredo', mc.segredo(achado.nome, achado.linha));
|
|
261
273
|
}
|
|
262
274
|
const bytes = Buffer.byteLength(t.bruto, 'utf8');
|
|
263
275
|
if (bytes > exports.LIMITE_TEMPLATE_BYTES) {
|
|
264
|
-
erro('tamanho',
|
|
276
|
+
erro('tamanho', mc.tamanho(bytes, exports.LIMITE_TEMPLATE_BYTES));
|
|
265
277
|
}
|
|
266
278
|
for (const achado of procurarHitlEmTextoLivre(t.corpo)) {
|
|
267
|
-
erro('hitl-texto-livre',
|
|
279
|
+
erro('hitl-texto-livre', mc.hitlTextoLivre(achado.linha, achado.oQue));
|
|
268
280
|
}
|
|
269
281
|
if (t.bruto.includes('—')) {
|
|
270
|
-
aviso('idioma',
|
|
282
|
+
aviso('idioma', mc.travessao);
|
|
271
283
|
}
|
|
272
284
|
return problemas;
|
|
273
285
|
}
|
|
@@ -280,10 +292,10 @@ function lintTemplate(t, contrato = exports.CONTRATO_DE_FASE) {
|
|
|
280
292
|
*/
|
|
281
293
|
exports.TEMPLATE_FASE_PADRAO = `---
|
|
282
294
|
id: fase-padrao
|
|
283
|
-
versao:
|
|
295
|
+
versao: 4
|
|
284
296
|
descricao: Prompt canonico de uma fase do ciclo GOAL..MASTER, com nomenclatura, modo de conducao, contexto da thread, memoria injetada e regras de evidencia.
|
|
285
297
|
fases: [GOAL, PLAN, GO, CHECK, SHIP, MASTER]
|
|
286
|
-
variaveis: [fase, thread, bloco, nome, ciclo_canonico, tag, blocos, pausas, linha_variante, regra_de_pausa, invariantes, slug, projeto_nome, projeto_abbrev, base_branch, base_commit, diretorio, pedido, memoria_injetada, regras_de_evidencia]
|
|
298
|
+
variaveis: [fase, thread, bloco, nome, ciclo_canonico, tag, blocos, pausas, linha_variante, regra_de_pausa, invariantes, slug, projeto_nome, projeto_abbrev, base_branch, base_commit, diretorio, trabalho, pedido, fecho_go, memoria_injetada, regras_de_evidencia]
|
|
287
299
|
---
|
|
288
300
|
# Orkastery, fase {{fase}} da thread {{thread}}
|
|
289
301
|
|
|
@@ -317,12 +329,14 @@ REGRA CENTRAL: o modo afrouxa a pausa, NUNCA a verificacao.
|
|
|
317
329
|
- projeto: {{projeto_nome}} (abbrev {{projeto_abbrev}})
|
|
318
330
|
- base carimbada: {{base_branch}} @ {{base_commit}}
|
|
319
331
|
- diretorio de trabalho: {{diretorio}}
|
|
332
|
+
- trabalho retomavel: {{trabalho}} (rascunhos de check e PR, pareceres e listas de prova)
|
|
320
333
|
- estado da thread: .orkastery/threads/{{thread}}/thread.json
|
|
321
334
|
- ledger: .orkastery/threads/{{thread}}/ledger.jsonl
|
|
322
335
|
|
|
323
336
|
## Pedido do builder
|
|
324
337
|
{{pedido}}
|
|
325
338
|
{{memoria_injetada}}
|
|
339
|
+
{{fecho_go}}
|
|
326
340
|
|
|
327
341
|
## Isolamento por sessão
|
|
328
342
|
|
|
@@ -334,9 +348,69 @@ Falha de autenticação permanece impedimento; não troque provider, sandbox ou
|
|
|
334
348
|
|
|
335
349
|
## Regras de evidencia
|
|
336
350
|
{{regras_de_evidencia}}`;
|
|
351
|
+
/** English counterpart of the canonical phase prompt. The pt-BR template above remains the source contract. */
|
|
352
|
+
exports.TEMPLATE_FASE_PADRAO_EN = `---
|
|
353
|
+
id: fase-padrao.en
|
|
354
|
+
versao: 4
|
|
355
|
+
descricao: Canonical prompt for a GOAL..MASTER cycle phase, with naming, conduction mode, thread context, injected memory, and evidence rules.
|
|
356
|
+
fases: [GOAL, PLAN, GO, CHECK, SHIP, MASTER]
|
|
357
|
+
variaveis: [fase, thread, bloco, nome, ciclo_canonico, tag, blocos, pausas, linha_variante, regra_de_pausa, invariantes, slug, projeto_nome, projeto_abbrev, base_branch, base_commit, diretorio, trabalho, pedido, fecho_go, memoria_injetada, regras_de_evidencia]
|
|
358
|
+
---
|
|
359
|
+
# Orkastery, {{fase}} phase of thread {{thread}}
|
|
360
|
+
|
|
361
|
+
You conduct block {{bloco}} of thread "{{nome}}". {{fase}} is the entry phase, not a new orchestration.
|
|
362
|
+
Run the phases in this block in canonical order, respecting each phase scope and the core gates; GOAL does not implement before GO.
|
|
363
|
+
Do not open another thread or redispatch yourself. If the project has an MCP server, prefer its tools for supported state and operations.
|
|
364
|
+
In Claude with the \`orkastery\` server, use the exposed full names: \`ToolSearch\` with \`select:mcp__orkastery__ork_thread_status,mcp__orkastery__ork_artifact_read\` discovers those reads; select the full name for any other tool. Do not search for \`select:ork_thread_status\`. Other hosts use their discovered namespace.
|
|
365
|
+
When available, use ork_artifact_read/write for the goal, plan, and review, and ork_claims_list/ork_claim_add for claims; do not write the ledger or canonical state directly.
|
|
366
|
+
Record every decision you make without asking the owner in the ledger with \`ork decisao registrar <thread>\` (or \`ork_decision_record\` in MCP because the Codex sandbox cannot write the ledger), including what was decided, why, how to change it, reversal cost now and later, the written criterion, who decided, and the evidence. This is how it reaches the owner in the summary instead of disappearing in the conversation.
|
|
367
|
+
An agent-authored artifact is not an official receipt; registering a claim does not verify it.
|
|
368
|
+
To record product changes, prefer ork_git_commit with the current HEAD and paths with claims; use ork_verify for real verification and ork_ship with checked source/destination HEADs for delivery. A local commit is not SHIP; an incomplete result requires reconciling state and remote before retrying. Permission to query does not grant those operations: respect native authorization and gates.
|
|
369
|
+
The conducting session presents an owner decision to the host; a child session neither answers nor assumes the owner's identity.
|
|
370
|
+
Preserve the configured child profile: \`interactive\` grants queries; \`worktree\` requires installation opt-in and authorizes exact tools in the validated worktree, without approving gates or assuming the owner. Do not change configuration to bypass a block.
|
|
371
|
+
Query \`ork_git_status\` for real HEADs and Git state; use \`ork_git_commit\`, \`ork_verify\`, and \`ork_ship\` through the core contracts, without Bash Git or invented SHAs. Use \`source.head\` as the commit \`expectedHead\`; query again after the commit and use \`source.head\`/\`destination.head\` as SHIP \`expectedSource\`/\`expectedDestination\`. A historical base does not replace the current query. Edit/deny rules are native tool permissions, not process sandbox rules.
|
|
372
|
+
A native permission failure or an operation without supported transport remains a real blocker, never a reason to alter the sandbox.
|
|
373
|
+
|
|
374
|
+
## Canonical cycle
|
|
375
|
+
{{ciclo_canonico}}
|
|
376
|
+
|
|
377
|
+
## Conduction mode: {{tag}}
|
|
378
|
+
Blocks in this thread: {{blocos}}
|
|
379
|
+
Human pauses in this thread: {{pausas}}
|
|
380
|
+
{{linha_variante}}
|
|
381
|
+
{{regra_de_pausa}}
|
|
382
|
+
|
|
383
|
+
CENTRAL RULE: the mode relaxes the pause, NEVER verification.
|
|
384
|
+
{{invariantes}}
|
|
385
|
+
|
|
386
|
+
## Thread context
|
|
387
|
+
- thread: {{thread}} (slug {{slug}})
|
|
388
|
+
- project: {{projeto_nome}} (abbrev {{projeto_abbrev}})
|
|
389
|
+
- stamped base: {{base_branch}} @ {{base_commit}}
|
|
390
|
+
- working directory: {{diretorio}}
|
|
391
|
+
- resumable work: {{trabalho}} (check and PR drafts, reviews and proof lists)
|
|
392
|
+
- thread state: .orkastery/threads/{{thread}}/thread.json
|
|
393
|
+
- ledger: .orkastery/threads/{{thread}}/ledger.jsonl
|
|
394
|
+
|
|
395
|
+
## Builder request
|
|
396
|
+
{{pedido}}
|
|
397
|
+
{{memoria_injetada}}
|
|
398
|
+
{{fecho_go}}
|
|
399
|
+
|
|
400
|
+
## Session isolation
|
|
401
|
+
|
|
402
|
+
The runtime may be the same for the conductor and reviewer. Independence requires distinct native IDs
|
|
403
|
+
and links proven by the core; a role name in the prompt is not authority. This session executes the
|
|
404
|
+
received block without opening recursion, approving a gate, or validating its own work. Preserve the
|
|
405
|
+
configured runtime/model/effort and \`interactive\`/\`worktree\` profile. Authentication failure remains
|
|
406
|
+
a blocker; do not change provider, sandbox, or identity.
|
|
407
|
+
|
|
408
|
+
## Evidence rules
|
|
409
|
+
{{regras_de_evidencia}}`;
|
|
337
410
|
/** Os templates que vem dentro do `ork`, por id. */
|
|
338
411
|
exports.TEMPLATES_EMBUTIDOS = {
|
|
339
412
|
'fase-padrao': exports.TEMPLATE_FASE_PADRAO,
|
|
413
|
+
'fase-padrao.en': exports.TEMPLATE_FASE_PADRAO_EN,
|
|
340
414
|
};
|
|
341
415
|
/**
|
|
342
416
|
* Carrega templates de um conjunto de embutidos, sobrescritos pelos `.md` de um diretorio.
|
|
@@ -378,50 +452,74 @@ function exigirTemplate(id, raiz) {
|
|
|
378
452
|
const achado = carregarTemplates(raiz).find((t) => t.id === id);
|
|
379
453
|
if (!achado) {
|
|
380
454
|
const ids = carregarTemplates(raiz).map((t) => t.id).join(', ');
|
|
381
|
-
throw new Error(
|
|
455
|
+
throw new Error((0, locale_1.msg)().prompts.cli.templateNaoExiste(id, ids));
|
|
382
456
|
}
|
|
383
457
|
return achado;
|
|
384
458
|
}
|
|
385
459
|
/**
|
|
386
460
|
* O template que conduz a fase: `fase-<minuscula>` quando o projeto versionou um so para ela,
|
|
387
461
|
* senao o `fase-padrao`. E o unico ponto de resolucao, para nao haver duas regras de escolha.
|
|
462
|
+
*
|
|
463
|
+
* RM-061 F3c: com o dono em ingles, o template do projeto vence o embutido e o da fase vence o padrao; no mesmo
|
|
464
|
+
* nivel, o `.en` vem antes. O projeto que versionou o proprio prompt nunca o perde porque o dono fala ingles: sem o
|
|
465
|
+
* par `.en`, a fase sai em pt-BR, e o `ork prompt lint` avisa (`avisosDeLingua`).
|
|
388
466
|
*/
|
|
389
|
-
function templateDaFase(fase, raiz) {
|
|
467
|
+
function templateDaFase(fase, raiz, locale = (0, locale_1.localeAtivo)()) {
|
|
390
468
|
const templates = carregarTemplates(raiz);
|
|
391
|
-
const
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
469
|
+
const achar = (id, soDoProjeto = false) => templates.find((t) => t.id === id && (!soDoProjeto || t.origem !== 'embutido'));
|
|
470
|
+
const especifico = `fase-${fase.toLowerCase()}`;
|
|
471
|
+
const candidatos = locale === 'en'
|
|
472
|
+
? [achar(`${especifico}.en`), achar(especifico), achar('fase-padrao.en', true), achar('fase-padrao', true), achar('fase-padrao.en')]
|
|
473
|
+
: [achar(especifico), achar('fase-padrao')];
|
|
474
|
+
const escolhido = candidatos.find((t) => t !== undefined);
|
|
475
|
+
if (!escolhido)
|
|
476
|
+
throw new Error((0, locale_1.msg)().prompts.cli.templatePadraoAusente);
|
|
477
|
+
return escolhido;
|
|
478
|
+
}
|
|
479
|
+
/** RM-061 F3c: a lingua de um template de fase, pelo sufixo do id; os valores do prompt falam a mesma. */
|
|
480
|
+
function idiomaDoTemplate(t) {
|
|
481
|
+
return t.id.endsWith('.en') ? 'en' : 'pt-BR';
|
|
482
|
+
}
|
|
483
|
+
/**
|
|
484
|
+
* RM-061 F3c: com o dono em ingles, o template de fase do projeto sem o par `.en` do projeto vale como esta, em
|
|
485
|
+
* pt-BR. O lint avisa, para a troca de lingua nunca ser silenciosa; em pt-BR nao ha o que avisar.
|
|
486
|
+
*/
|
|
487
|
+
function avisosDeLingua(templates, lingua) {
|
|
488
|
+
if (lingua !== 'en')
|
|
489
|
+
return [];
|
|
490
|
+
const doProjeto = new Set(templates.filter((t) => t.origem !== 'embutido').map((t) => t.id));
|
|
491
|
+
return templates
|
|
492
|
+
.filter((t) => t.origem !== 'embutido' && t.id.startsWith('fase-') && !t.id.endsWith('.en') && !doProjeto.has(`${t.id}.en`))
|
|
493
|
+
.map((t) => ({ template: t.id, regra: 'idioma', gravidade: 'aviso', detalhe: (0, locale_1.msg)().prompts.cli.semParIngles(t.id) }));
|
|
398
494
|
}
|
|
399
495
|
/** Texto de `ork prompt lint` para a saida do CLI. */
|
|
400
496
|
function textoDoLint(problemas, quantos) {
|
|
497
|
+
const m = (0, locale_1.msg)().prompts.cli;
|
|
401
498
|
const linhas = [];
|
|
402
499
|
const erros = problemas.filter((p) => p.gravidade === 'erro');
|
|
403
500
|
const avisos = problemas.filter((p) => p.gravidade === 'aviso');
|
|
404
501
|
for (const p of problemas) {
|
|
405
|
-
linhas.push(` [${p.gravidade}] ${p.template} :: ${p.regra}`);
|
|
502
|
+
linhas.push(` [${m.gravidades[p.gravidade]}] ${p.template} :: ${p.regra}`);
|
|
406
503
|
linhas.push(` ${p.detalhe}`);
|
|
407
504
|
}
|
|
408
505
|
if (problemas.length === 0) {
|
|
409
|
-
linhas.push(
|
|
506
|
+
linhas.push(m.semProblema(quantos));
|
|
410
507
|
}
|
|
411
508
|
linhas.push('');
|
|
412
|
-
linhas.push(
|
|
509
|
+
linhas.push(m.resumoLint(quantos, erros.length, avisos.length));
|
|
413
510
|
return linhas.join('\n');
|
|
414
511
|
}
|
|
415
512
|
/** Texto de `ork prompt list`. */
|
|
416
513
|
function tabelaDeTemplates(templates) {
|
|
417
|
-
const
|
|
514
|
+
const m = (0, locale_1.msg)().prompts.cli;
|
|
515
|
+
const linhas = [m.tituloLista, ''];
|
|
418
516
|
for (const t of templates) {
|
|
419
|
-
linhas.push(` ${t.id.padEnd(16)} v${t.versao}
|
|
420
|
-
linhas.push(` ${' '.repeat(16)}
|
|
517
|
+
linhas.push(` ${t.id.padEnd(16)} v${t.versao} ${m.origem(t.origem)}`);
|
|
518
|
+
linhas.push(` ${' '.repeat(16)} ${m.fases(t.fases.length > 0 ? t.fases.join(' ') : m.todas)}`);
|
|
421
519
|
linhas.push(` ${' '.repeat(16)} ${t.descricao}`);
|
|
422
520
|
}
|
|
423
521
|
linhas.push('');
|
|
424
|
-
linhas.push(
|
|
522
|
+
linhas.push(m.comoVersionar);
|
|
425
523
|
return linhas.join('\n');
|
|
426
524
|
}
|
|
427
525
|
/**
|
package/dist/prova-minima.js
CHANGED
|
@@ -56,6 +56,7 @@ const fs = __importStar(require("node:fs"));
|
|
|
56
56
|
const path = __importStar(require("node:path"));
|
|
57
57
|
const ledger_1 = require("./ledger");
|
|
58
58
|
const thread_1 = require("./thread");
|
|
59
|
+
const locale_1 = require("./locale");
|
|
59
60
|
/** Teto de comandos por claim num ciclo sem CHECK (degrau 2). */
|
|
60
61
|
exports.LIMITE_DE_COMANDOS_SEM_CHECK = 2;
|
|
61
62
|
/** O ciclo da thread nao tem CHECK: a prova e a minima, feita pela propria GO. */
|
|
@@ -87,13 +88,11 @@ function comandoDoTesteFocado(teste) {
|
|
|
87
88
|
*/
|
|
88
89
|
function validarProvaSemCheck(verificar, comandoDeTesteDoManifesto) {
|
|
89
90
|
if (verificar.length > exports.LIMITE_DE_COMANDOS_SEM_CHECK) {
|
|
90
|
-
throw new
|
|
91
|
-
`(recebidos ${verificar.length}); use o teste focado ou declare a ausencia com ork claims ausente`);
|
|
91
|
+
throw new locale_1.ErroDoCatalogo((m) => m.claims.custoDeComandos(exports.LIMITE_DE_COMANDOS_SEM_CHECK, verificar.length));
|
|
92
92
|
}
|
|
93
93
|
const suite = comandoDeTesteDoManifesto?.trim();
|
|
94
94
|
if (suite && verificar.some((c) => c.includes(suite))) {
|
|
95
|
-
throw new
|
|
96
|
-
'use o teste focado do arquivo que mudou');
|
|
95
|
+
throw new locale_1.ErroDoCatalogo((m) => m.claims.custoDaSuite(suite));
|
|
97
96
|
}
|
|
98
97
|
}
|
|
99
98
|
/** Degrau 3: grava no ledger da thread que estes caminhos ficaram sem prova, e por que. */
|
|
@@ -101,9 +100,9 @@ function registrarProvaAusente(raiz, threadId, ausencia) {
|
|
|
101
100
|
(0, thread_1.lerThread)(raiz, threadId); // a thread tem de existir
|
|
102
101
|
const motivo = ausencia.motivo.trim();
|
|
103
102
|
if (!motivo)
|
|
104
|
-
throw new
|
|
103
|
+
throw new locale_1.ErroDoCatalogo((m) => m.claims.ausenteSemMotivo);
|
|
105
104
|
if (ausencia.paths.length === 0)
|
|
106
|
-
throw new
|
|
105
|
+
throw new locale_1.ErroDoCatalogo((m) => m.claims.ausenteSemCaminhos);
|
|
107
106
|
(0, ledger_1.registrar)((0, thread_1.dirThread)(raiz, threadId), threadId, ledger_1.TIPOS_DE_EVENTO.provaAusente, {
|
|
108
107
|
paths: ausencia.paths,
|
|
109
108
|
motivo,
|
package/dist/pulse-cadencia.js
CHANGED
|
@@ -63,6 +63,7 @@ const fs = __importStar(require("node:fs"));
|
|
|
63
63
|
const path = __importStar(require("node:path"));
|
|
64
64
|
const horario_1 = require("./horario");
|
|
65
65
|
const estado_thread_1 = require("./estado-thread");
|
|
66
|
+
const locale_1 = require("./locale");
|
|
66
67
|
exports.CONTRATO_CADENCIA = 'ork.pulse-cadencia/v1';
|
|
67
68
|
const ARQUIVO_CADENCIA = 'pulse-cadencia.json';
|
|
68
69
|
const ARQUIVO_ULTIMO_RESUMO = 'pulse-ultimo-resumo.json';
|
|
@@ -100,10 +101,10 @@ function lerCadencia(raiz, estadoDir) {
|
|
|
100
101
|
/** Grava a tag do dono. `por` e quem mandou (o remetente autenticado do canal, ou o operador). */
|
|
101
102
|
function gravarCadencia(raiz, tag, origem, estadoDir) {
|
|
102
103
|
if (!Object.hasOwn(exports.CADENCIAS, tag))
|
|
103
|
-
throw new Error(
|
|
104
|
+
throw new Error((0, locale_1.msg)().operacao.pulseCadencia.desconhecidaInterna(tag));
|
|
104
105
|
const por = origem.por.trim();
|
|
105
106
|
if (!por)
|
|
106
|
-
throw new Error(
|
|
107
|
+
throw new Error((0, locale_1.msg)().operacao.pulseCadencia.trocaSemAutor);
|
|
107
108
|
const gravada = { contrato: exports.CONTRATO_CADENCIA, tag, por, canal: origem.canal, em: origem.em ?? new Date().toISOString() };
|
|
108
109
|
const dir = dirDoMonitor(raiz, estadoDir);
|
|
109
110
|
fs.mkdirSync(dir, { recursive: true });
|
|
@@ -158,6 +159,6 @@ function janelaAberta(def, ultimoResumoEm, quando, fuso = (0, horario_1.fusoDoDo
|
|
|
158
159
|
}
|
|
159
160
|
/** A confirmacao que volta ao dono pelo mesmo canal, no fuso dele. */
|
|
160
161
|
function textoDaCadencia(def, quando) {
|
|
161
|
-
|
|
162
|
-
|
|
162
|
+
const m = (0, locale_1.msg)().operacao.pulseCadencia;
|
|
163
|
+
return m.texto(m.descricoes[def.tag] ?? def.descricao, def.tag, (0, horario_1.formatarDataHoraRotulada)(inicioDaProximaJanela(def, quando)));
|
|
163
164
|
}
|
|
@@ -33,7 +33,11 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.PRAZO_PADRAO_MIN = exports.ENDERECO_DA_RESPOSTA = exports.ALVO_DO_PULSE = exports.TAMANHO_DO_CODIGO = exports.ALFABETO_DO_CODIGO = exports.CONTRATO_CONSENTIMENTO = void 0;
|
|
36
|
+
exports.PRAZO_PADRAO_MIN = exports.REPLY_A_OUTRA = exports.REFERENCIA_DO_REPLY = exports.CODIGO_CURTO = exports.ENDERECO_DA_RESPOSTA = exports.ALVO_DO_PULSE = exports.TAMANHO_DO_CODIGO = exports.ALFABETO_DO_CODIGO = exports.CONTRATO_CONSENTIMENTO = void 0;
|
|
37
|
+
exports.lerReferenciaDoReply = lerReferenciaDoReply;
|
|
38
|
+
exports.referenciaDoReplyValida = referenciaDoReplyValida;
|
|
39
|
+
exports.enderecoDoPulse = enderecoDoPulse;
|
|
40
|
+
exports.enderecoDoPulseValido = enderecoDoPulseValido;
|
|
37
41
|
exports.arquivoDoConsentimento = arquivoDoConsentimento;
|
|
38
42
|
exports.gerarCodigo = gerarCodigo;
|
|
39
43
|
exports.interpretarResposta = interpretarResposta;
|
|
@@ -93,6 +97,54 @@ const LETRAS_DO_CODIGO = 'ABCDEFGHJKMNPQRSTVWXYZ';
|
|
|
93
97
|
*/
|
|
94
98
|
exports.ALVO_DO_PULSE = 'pulse';
|
|
95
99
|
exports.ENDERECO_DA_RESPOSTA = 'resposta';
|
|
100
|
+
/**
|
|
101
|
+
* RM-057 (resposta curta, D3 da ork-rm057respost): a forma de um código curto, como `gerarCodigo` o faz (letra na frente
|
|
102
|
+
* e ao menos um dígito), em maiúsculas.
|
|
103
|
+
*/
|
|
104
|
+
exports.CODIGO_CURTO = /^(?=[A-HJKMNP-TV-Z][2-9A-HJKMNP-TV-Z]{0,2}[2-9])[A-HJKMNP-TV-Z][2-9A-HJKMNP-TV-Z]{3}$/;
|
|
105
|
+
/**
|
|
106
|
+
* RM-057 (resposta curta, D3; GO-FIX 1, achado 2): a referência do reply, `<código>:<id>`. O código vem do título da
|
|
107
|
+
* pergunta do arco que o dono respondeu, e o id é o da mensagem respondida no Telegram. O núcleo só aceita o reply quando
|
|
108
|
+
* esse id é o da mensagem em que a pergunta foi entregue, gravado na entrega: confirmação, recusa e conversa nunca são
|
|
109
|
+
* a pergunta, mesmo quando trazem o código.
|
|
110
|
+
*/
|
|
111
|
+
exports.REFERENCIA_DO_REPLY = /^((?=[A-HJKMNP-TV-Z][2-9A-HJKMNP-TV-Z]{0,2}[2-9])[A-HJKMNP-TV-Z][2-9A-HJKMNP-TV-Z]{3}):([1-9][0-9]{0,19})$/;
|
|
112
|
+
/** O código e o id da mensagem respondida, ou `null` quando a referência não tem a forma. */
|
|
113
|
+
function lerReferenciaDoReply(referencia) {
|
|
114
|
+
const m = typeof referencia === 'string' ? exports.REFERENCIA_DO_REPLY.exec(referencia) : null;
|
|
115
|
+
return m ? { codigo: m[1], mensagem: m[2] } : null;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* RM-057 (GO-FIX 2, R1 do CHECK da ork-rm057respost): a marca do reply a OUTRA mensagem. Quando o dono responde com a
|
|
119
|
+
* palavra solta em reply a uma mensagem que não é a pergunta do arco (a confirmação de um gate, a mensagem de outra pessoa
|
|
120
|
+
* do grupo, a do assistente), o gateway assina `resposta:outra`: a palavra nunca vira palavra solta, e o núcleo a recusa
|
|
121
|
+
* dizendo por quê. Nenhuma prova aceita este endereço.
|
|
122
|
+
*/
|
|
123
|
+
exports.REPLY_A_OUTRA = 'outra';
|
|
124
|
+
/** A referência que o gateway pode assinar: a da pergunta respondida (`<código>:<id>`) ou a marca do reply a outra mensagem. */
|
|
125
|
+
function referenciaDoReplyValida(referencia) {
|
|
126
|
+
return referencia === exports.REPLY_A_OUTRA || lerReferenciaDoReply(referencia) !== null;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* RM-057 (resposta curta, D3): o endereço que o gateway assina quando o dono responde EM REPLY à mensagem de uma pergunta.
|
|
130
|
+
* A referência (`<código>:<id da mensagem respondida>`) entra na posição de pedido do corpo assinado
|
|
131
|
+
* (`resposta:<código>:<id>`), dentro do HMAC, e o texto do dono continua na posição de resposta, como ele digitou. A
|
|
132
|
+
* palavra solta em reply a outra mensagem vai em `resposta:outra` (GO-FIX 2). Sem reply, o endereço é o de sempre.
|
|
133
|
+
*/
|
|
134
|
+
function enderecoDoPulse(referencia) {
|
|
135
|
+
if (referencia === undefined || referencia === null)
|
|
136
|
+
return exports.ENDERECO_DA_RESPOSTA;
|
|
137
|
+
if (!referenciaDoReplyValida(referencia))
|
|
138
|
+
throw new Error('resposta do pulse: referência do reply fora da forma <código>:<mensagem> (ou outra)');
|
|
139
|
+
return `${exports.ENDERECO_DA_RESPOSTA}:${referencia}`;
|
|
140
|
+
}
|
|
141
|
+
/** Os dois endereços do pulse que provam resposta: o de sempre e o do reply. */
|
|
142
|
+
function enderecoDoPulseValido(endereco) {
|
|
143
|
+
if (endereco === exports.ENDERECO_DA_RESPOSTA)
|
|
144
|
+
return true;
|
|
145
|
+
return typeof endereco === 'string' && endereco.startsWith(`${exports.ENDERECO_DA_RESPOSTA}:`) &&
|
|
146
|
+
lerReferenciaDoReply(endereco.slice(exports.ENDERECO_DA_RESPOSTA.length + 1)) !== null;
|
|
147
|
+
}
|
|
96
148
|
/** Uma hora, a mesma janela do resumo pedido em 20/09. Vencido nao nega: so deixa de valer. */
|
|
97
149
|
exports.PRAZO_PADRAO_MIN = 60;
|
|
98
150
|
const sha = (s) => (0, node_crypto_1.createHash)('sha256').update(s).digest('hex');
|