@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/board.js
CHANGED
|
@@ -50,7 +50,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
50
50
|
exports.perfisDetectados = perfisDetectados;
|
|
51
51
|
exports.threadsDeTodosOsPerfis = threadsDeTodosOsPerfis;
|
|
52
52
|
exports.estadosDeSessao = estadosDeSessao;
|
|
53
|
+
exports.leituraDoRuntime = leituraDoRuntime;
|
|
54
|
+
exports.leituraReaproveitada = leituraReaproveitada;
|
|
53
55
|
exports.vagaDoDespacho = vagaDoDespacho;
|
|
56
|
+
exports.sessoesQueOcupam = sessoesQueOcupam;
|
|
54
57
|
exports.esperarVaga = esperarVaga;
|
|
55
58
|
exports.planejar = planejar;
|
|
56
59
|
exports.devolverVagas = devolverVagas;
|
|
@@ -71,6 +74,7 @@ const util_1 = require("./util");
|
|
|
71
74
|
const sessoes_adopt_1 = require("./sessoes-adopt");
|
|
72
75
|
const horario_1 = require("./horario");
|
|
73
76
|
const conducao_1 = require("./conducao");
|
|
77
|
+
const locale_1 = require("./locale");
|
|
74
78
|
const conducao_texto_1 = require("./conducao-texto");
|
|
75
79
|
/**
|
|
76
80
|
* Perfis detectados no projeto.
|
|
@@ -127,6 +131,31 @@ function estadosDeSessao(raiz = null, staleMin) {
|
|
|
127
131
|
return null;
|
|
128
132
|
return (0, sessoes_contas_1.estadosNasContas)(raiz, { staleMin });
|
|
129
133
|
}
|
|
134
|
+
/** Prazo da consulta do runtime, por conta, dentro do portao: ele roda no despacho e nao pode prende-lo. */
|
|
135
|
+
const PRAZO_DA_CONSULTA_MS = 20_000;
|
|
136
|
+
/** As sessoes de todas as contas, com `--all`: a sessao parada (`stopped`) so aparece nessa lista (medido em 12/10/2026). */
|
|
137
|
+
function leituraDoRuntime(carregado) {
|
|
138
|
+
return () => (0, sessoes_contas_1.consultarContas)(carregado.raiz, { todas: true, staleMin: carregado.manifesto.concurrency.stale_after_min, prazoMs: PRAZO_DA_CONSULTA_MS });
|
|
139
|
+
}
|
|
140
|
+
/** A mesma leitura reaproveitada por `janelaMs`: quem espera a vaga nao consulta o runtime a cada volta. */
|
|
141
|
+
function leituraReaproveitada(ler, janelaMs, relogio = Date.now) {
|
|
142
|
+
let guardada = null;
|
|
143
|
+
return () => {
|
|
144
|
+
const agoraMs = relogio();
|
|
145
|
+
if (!guardada || agoraMs - guardada.em >= janelaMs)
|
|
146
|
+
guardada = { em: agoraMs, leitura: ler() };
|
|
147
|
+
return guardada.leitura;
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
/** As sessoes que o runtime mostra encerradas. Leitura que lanca nao prova nada: nenhuma sai da conta. */
|
|
151
|
+
function encerradasNoRuntime(ler) {
|
|
152
|
+
try {
|
|
153
|
+
return new Set(ler().sessoes.filter(sessoes_contas_1.encerradaNaLista).map((s) => s.sessionId));
|
|
154
|
+
}
|
|
155
|
+
catch {
|
|
156
|
+
return new Set();
|
|
157
|
+
}
|
|
158
|
+
}
|
|
130
159
|
/**
|
|
131
160
|
* RM-037 (rm037defeito, defeito 3): o portao de vaga do `ork phase run`. Com `max_parallel_threads: 5`,
|
|
132
161
|
* um sexto despacho saiu as 09h03 de 29/09/2026 com cinco sessoes vivas: o `phase run` nao consultava
|
|
@@ -141,9 +170,41 @@ function estadosDeSessao(raiz = null, staleMin) {
|
|
|
141
170
|
*/
|
|
142
171
|
function vagaDoDespacho(carregado, threadId, quando = (0, util_1.agora)(),
|
|
143
172
|
/** S-5 do CHECK 3: o `desde` da tomada deste despacho; despacho em curso de outra thread so conta se veio antes. */
|
|
144
|
-
desdeProprio
|
|
173
|
+
desdeProprio,
|
|
174
|
+
/** RM-037 (ork-rm037esperas, D6): a leitura do runtime no limite; sem ela, a de todas as contas com `--all`. */
|
|
175
|
+
lerRuntime) {
|
|
176
|
+
const limite = Math.max(1, carregado.manifesto.concurrency.max_parallel_threads);
|
|
177
|
+
let ocupam = sessoesQueOcupam(carregado, { exceto: threadId, quando, desdeProprio });
|
|
178
|
+
if (ocupam.length < limite)
|
|
179
|
+
return null;
|
|
180
|
+
// RM-037 (ork-rm037esperas, D6): no limite, a sessao que o runtime mostra encerrada (estado terminal ou fantasma) nao
|
|
181
|
+
// trabalha mais, mesmo com o lease de pe, e sai da conta: em 12/10/2026, uma sessao parada com `claude stop` antes do
|
|
182
|
+
// `phase_result` prendia a vaga ate a thread fechar. So no limite, para o despacho comum nao pagar a consulta; a
|
|
183
|
+
// sessao ausente da lista e a leitura que falha continuam contando.
|
|
184
|
+
if (ocupam.some((o) => o.sessao !== null)) {
|
|
185
|
+
const encerradas = encerradasNoRuntime(lerRuntime ?? leituraDoRuntime(carregado));
|
|
186
|
+
ocupam = ocupam.filter((o) => o.sessao === null || !encerradas.has(o.sessao));
|
|
187
|
+
if (ocupam.length < limite)
|
|
188
|
+
return null;
|
|
189
|
+
}
|
|
190
|
+
return {
|
|
191
|
+
limite,
|
|
192
|
+
ocupam,
|
|
193
|
+
detalhe: `concurrency.limite: o projeto ja tem ${ocupam.length} sessao(oes) viva(s) em outras threads e o limite e ${limite} ` +
|
|
194
|
+
`(concurrency.max_parallel_threads): ${ocupam.map((o) => `${o.thread} ${o.fase ?? '-'} ` +
|
|
195
|
+
(o.sessao ? `${o.runtime} ${o.sessao.slice(0, 8)}` : 'despacho em curso')).join('; ')}`,
|
|
196
|
+
correcao: 'espere uma sessao terminar e repita com --esperar <min>; sessao que morreu sem evento sai com ' +
|
|
197
|
+
'ork conducao status <thread>; ou suba concurrency.max_parallel_threads no orkastery.yaml',
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* As vagas do projeto ocupadas agora, pela regra do portao de vaga do despacho (`vagaDoDespacho`): a conducao de uma
|
|
202
|
+
* sessao viva (salvo a parada ou escalada) e o despacho em curso. RM-063 (F6): a maquina ociosa conta por aqui. `exceto`
|
|
203
|
+
* tira a propria thread; `desdeProprio` desempata dois despachos pela ultima vaga. Somente leitura, mais antiga primeiro.
|
|
204
|
+
*/
|
|
205
|
+
function sessoesQueOcupam(carregado, opcoes = {}) {
|
|
145
206
|
const { raiz, manifesto } = carregado;
|
|
146
|
-
const
|
|
207
|
+
const quando = opcoes.quando ?? (0, util_1.agora)(), desdeProprio = opcoes.desdeProprio, threadId = opcoes.exceto ?? '';
|
|
147
208
|
const staleMin = manifesto.concurrency.stale_after_min;
|
|
148
209
|
const ocupam = [];
|
|
149
210
|
for (const id of (0, thread_1.listarIds)(raiz)) {
|
|
@@ -175,24 +236,17 @@ desdeProprio) {
|
|
|
175
236
|
sessao: atual.dono.tipo === 'sessao' ? atual.dono.sessionId : null,
|
|
176
237
|
runtime: atual.dono.tipo === 'sessao' ? atual.dono.runtime : null });
|
|
177
238
|
}
|
|
178
|
-
|
|
179
|
-
return null;
|
|
180
|
-
ocupam.sort((a, b) => a.desde.localeCompare(b.desde));
|
|
181
|
-
return {
|
|
182
|
-
limite,
|
|
183
|
-
ocupam,
|
|
184
|
-
detalhe: `concurrency.limite: o projeto ja tem ${ocupam.length} sessao(oes) viva(s) em outras threads e o limite e ${limite} ` +
|
|
185
|
-
`(concurrency.max_parallel_threads): ${ocupam.map((o) => `${o.thread} ${o.fase ?? '-'} ` +
|
|
186
|
-
(o.sessao ? `${o.runtime} ${o.sessao.slice(0, 8)}` : 'despacho em curso')).join('; ')}`,
|
|
187
|
-
correcao: 'espere uma sessao terminar e repita com --esperar <min>; sessao que morreu sem evento sai com ' +
|
|
188
|
-
'ork conducao status <thread>; ou suba concurrency.max_parallel_threads no orkastery.yaml',
|
|
189
|
-
};
|
|
239
|
+
return ocupam.sort((a, b) => a.desde.localeCompare(b.desde));
|
|
190
240
|
}
|
|
191
241
|
/** `--esperar`: espera a vaga do projeto ate o prazo. Devolve true quando ha vaga. */
|
|
192
|
-
function esperarVaga(carregado, threadId, esperarMs
|
|
242
|
+
function esperarVaga(carregado, threadId, esperarMs,
|
|
243
|
+
/** RM-037 (ork-rm037esperas, D6): a leitura do runtime; os testes injetam a deles. */
|
|
244
|
+
ler = leituraDoRuntime(carregado)) {
|
|
193
245
|
const prazo = Date.now() + esperarMs;
|
|
246
|
+
// RM-037 (ork-rm037esperas, D6): a leitura do runtime vale 30 s nesta espera, e nao uma consulta a cada volta.
|
|
247
|
+
const lerRuntime = leituraReaproveitada(ler, 30_000);
|
|
194
248
|
for (;;) {
|
|
195
|
-
if (!vagaDoDespacho(carregado, threadId))
|
|
249
|
+
if (!vagaDoDespacho(carregado, threadId, undefined, undefined, lerRuntime))
|
|
196
250
|
return true;
|
|
197
251
|
if (Date.now() >= prazo)
|
|
198
252
|
return false;
|
|
@@ -316,8 +370,8 @@ function planejar(carregado, opcoes = {}) {
|
|
|
316
370
|
situacao: 'espera',
|
|
317
371
|
motivo: 'vaga.stale',
|
|
318
372
|
detalhe: oc.detalhe,
|
|
319
|
-
|
|
320
|
-
|
|
373
|
+
// RM-061 (F2b, G2): o pulse mostra esta correcao nas acoes automaticas e a remonta no locale.
|
|
374
|
+
correcao: (0, locale_1.textoDoCatalogo)((m) => m.pulse.vagaStaleCorrecao(t.id, t.faseAtual)),
|
|
321
375
|
leases: meus,
|
|
322
376
|
});
|
|
323
377
|
continue;
|
|
@@ -347,7 +401,7 @@ function planejar(carregado, opcoes = {}) {
|
|
|
347
401
|
situacao: 'espera',
|
|
348
402
|
motivo: 'concurrency.limite',
|
|
349
403
|
detalhe: `a maquina ja tem ${ocupadas} thread(s) em andamento, o limite e ${max}`,
|
|
350
|
-
correcao:
|
|
404
|
+
correcao: (0, locale_1.textoDoCatalogo)((m) => m.pulse.limiteCorrecao),
|
|
351
405
|
leases: [],
|
|
352
406
|
});
|
|
353
407
|
continue;
|
|
@@ -428,34 +482,35 @@ function devolverVagas(carregado, opcoes = {}) {
|
|
|
428
482
|
}
|
|
429
483
|
/** Texto de `ork board reap`. */
|
|
430
484
|
function textoDoReap(devolvidas) {
|
|
485
|
+
const m = (0, locale_1.msg)().operacao.restante.board;
|
|
431
486
|
if (devolvidas.length === 0) {
|
|
432
|
-
return
|
|
487
|
+
return m.reapVazio;
|
|
433
488
|
}
|
|
434
489
|
// I-35: o ledger guarda o ISO; o texto ao dono sai no fuso dele, rotulado uma vez.
|
|
435
|
-
const linhas = [
|
|
490
|
+
const linhas = [m.reapTitulo(devolvidas.length, (0, horario_1.legendaDoFuso)()), ''];
|
|
436
491
|
for (const d of devolvidas) {
|
|
437
|
-
const marca = d.registrada ?
|
|
492
|
+
const marca = d.registrada ? m.reapMarca.gravada : m.reapMarca.anterior;
|
|
438
493
|
linhas.push(` ${d.thread.padEnd(20)} [${d.motivo}] ${marca}`);
|
|
439
|
-
linhas.push(
|
|
440
|
-
linhas.push(
|
|
494
|
+
linhas.push(m.detalhe((0, horario_1.localizarTexto)(d.detalhe)));
|
|
495
|
+
linhas.push(m.evidencia((0, horario_1.localizarTexto)(d.evidencia)));
|
|
441
496
|
}
|
|
442
497
|
return linhas.join('\n');
|
|
443
498
|
}
|
|
444
499
|
function linhaDeFila(p, i, agora) {
|
|
445
|
-
return
|
|
500
|
+
return (0, locale_1.msg)().operacao.restante.board.filaItem(i + 1, p.thread, p.nome, p.colidiuCom, p.bloqueadaPor, (0, horario_1.formatarDesde)(p.desdeEm, { agora }));
|
|
446
501
|
}
|
|
447
502
|
/** Texto de `ork board plan`. */
|
|
448
503
|
function textoDoPlano(plano) {
|
|
504
|
+
const m = (0, locale_1.msg)().operacao.restante.board;
|
|
449
505
|
const linhas = [];
|
|
450
|
-
linhas.push(
|
|
451
|
-
linhas.push(
|
|
452
|
-
`em andamento agora (procura ativa): ${plano.emAndamento}`);
|
|
506
|
+
linhas.push(m.planoTitulo((0, horario_1.legendaDoFuso)(undefined, plano.decididoEm)));
|
|
507
|
+
linhas.push(m.limite(plano.maxParalelas, plano.emAndamento));
|
|
453
508
|
linhas.push('');
|
|
454
509
|
if (plano.vagas.length === 0) {
|
|
455
|
-
linhas.push(
|
|
510
|
+
linhas.push(m.nenhumaThread);
|
|
456
511
|
}
|
|
457
512
|
else {
|
|
458
|
-
linhas.push((0, util_1.tabela)([
|
|
513
|
+
linhas.push((0, util_1.tabela)([...m.colunasPlano], plano.vagas.map((v) => [
|
|
459
514
|
v.thread,
|
|
460
515
|
v.slug,
|
|
461
516
|
(0, modos_1.tagDoModo)(v.modo),
|
|
@@ -467,23 +522,23 @@ function textoDoPlano(plano) {
|
|
|
467
522
|
const comCorrecao = plano.vagas.filter((v) => v.correcao !== '');
|
|
468
523
|
if (comCorrecao.length > 0) {
|
|
469
524
|
linhas.push('');
|
|
470
|
-
linhas.push(
|
|
525
|
+
linhas.push(m.correcoes);
|
|
471
526
|
for (const v of comCorrecao)
|
|
472
527
|
linhas.push(` ${v.thread}: ${(0, horario_1.localizarTexto)(v.correcao, { agora: plano.decididoEm })}`);
|
|
473
528
|
}
|
|
474
529
|
}
|
|
475
530
|
linhas.push('');
|
|
476
|
-
linhas.push(
|
|
531
|
+
linhas.push(m.merge);
|
|
477
532
|
if (plano.filaDeMerge.length === 0) {
|
|
478
|
-
linhas.push(
|
|
533
|
+
linhas.push(m.mergeVazia);
|
|
479
534
|
}
|
|
480
535
|
else {
|
|
481
536
|
plano.filaDeMerge.forEach((p, i) => linhas.push(linhaDeFila(p, i, plano.decididoEm)));
|
|
482
537
|
}
|
|
483
538
|
linhas.push('');
|
|
484
|
-
linhas.push(
|
|
539
|
+
linhas.push(m.regiao);
|
|
485
540
|
if (plano.filaDeRegiao.length === 0) {
|
|
486
|
-
linhas.push(
|
|
541
|
+
linhas.push(m.regiaoVazia);
|
|
487
542
|
}
|
|
488
543
|
else {
|
|
489
544
|
plano.filaDeRegiao.forEach((p, i) => linhas.push(linhaDeFila(p, i, plano.decididoEm)));
|
|
@@ -492,17 +547,17 @@ function textoDoPlano(plano) {
|
|
|
492
547
|
}
|
|
493
548
|
/** Texto de `ork board [--all]`: a visao unica das threads. */
|
|
494
549
|
function textoDoBoard(carregado, todos) {
|
|
550
|
+
const m = (0, locale_1.msg)().operacao.restante.board;
|
|
495
551
|
const itens = threadsDeTodosOsPerfis(carregado, todos);
|
|
496
552
|
const perfis = todos ? perfisDetectados(carregado) : perfisDetectados(carregado).slice(0, 1);
|
|
497
553
|
const linhas = [];
|
|
498
|
-
linhas.push(
|
|
499
|
-
`(${itens.length} thread(s) em ${perfis.length} perfil(is): ${perfis.map((p) => p.nome).join(', ')})`);
|
|
554
|
+
linhas.push(m.titulo(carregado.manifesto.project.name, itens.length, perfis.length, perfis.map((p) => p.nome).join(', ')));
|
|
500
555
|
linhas.push('');
|
|
501
556
|
if (itens.length === 0) {
|
|
502
|
-
linhas.push(
|
|
557
|
+
linhas.push(m.vazio);
|
|
503
558
|
return linhas.join('\n');
|
|
504
559
|
}
|
|
505
|
-
linhas.push((0, util_1.tabela)([
|
|
560
|
+
linhas.push((0, util_1.tabela)([...m.colunas], itens.map((i) => [
|
|
506
561
|
i.perfil,
|
|
507
562
|
i.thread.id,
|
|
508
563
|
i.thread.slug,
|
|
@@ -518,14 +573,14 @@ function textoDoBoard(carregado, todos) {
|
|
|
518
573
|
const conduzidas = itens.map((i) => ({ id: i.thread.id, c: (0, conducao_1.conducaoDaThread)(i.raiz, i.thread.id) })).filter((x) => x.c);
|
|
519
574
|
if (conduzidas.length > 0) {
|
|
520
575
|
linhas.push('');
|
|
521
|
-
linhas.push(
|
|
576
|
+
linhas.push(m.conducao);
|
|
522
577
|
for (const x of conduzidas)
|
|
523
578
|
linhas.push(` ${x.id}: ${(0, conducao_texto_1.linhaDeConducao)(x.c)}`);
|
|
524
579
|
}
|
|
525
580
|
const comVariante = itens.filter((i) => i.thread.variante);
|
|
526
581
|
if (comVariante.length > 0) {
|
|
527
582
|
linhas.push('');
|
|
528
|
-
linhas.push(
|
|
583
|
+
linhas.push(m.variantes);
|
|
529
584
|
for (const i of comVariante)
|
|
530
585
|
linhas.push(` ${i.thread.id}: --ciclo ${i.thread.variante}`);
|
|
531
586
|
}
|
|
@@ -534,8 +589,8 @@ function textoDoBoard(carregado, todos) {
|
|
|
534
589
|
const semScore = itens.filter((i) => !i.thread.score && i.thread.faseAtual === 'MASTER');
|
|
535
590
|
if (semScore.length > 0) {
|
|
536
591
|
linhas.push('');
|
|
537
|
-
linhas.push(
|
|
538
|
-
linhas.push(
|
|
592
|
+
linhas.push(m.batch(semScore.length));
|
|
593
|
+
linhas.push(m.batchVeja);
|
|
539
594
|
}
|
|
540
595
|
return linhas.join('\n');
|
|
541
596
|
}
|
package/dist/branch-de-estado.js
CHANGED
|
@@ -33,11 +33,12 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.refRemota = exports.remotoValido = exports.REMOTO_DO_GIT = void 0;
|
|
36
|
+
exports.refRemota = exports.shaValido = exports.remotoValido = exports.REMOTO_DO_GIT = void 0;
|
|
37
37
|
exports.git = git;
|
|
38
38
|
exports.exigirGit = exigirGit;
|
|
39
39
|
exports.remotoRedigido = remotoRedigido;
|
|
40
40
|
exports.exigirRemoto = exigirRemoto;
|
|
41
|
+
exports.branchValida = branchValida;
|
|
41
42
|
exports.pontaLocal = pontaLocal;
|
|
42
43
|
exports.buscarBranch = buscarBranch;
|
|
43
44
|
exports.jsonsDaPonta = jsonsDaPonta;
|
|
@@ -60,6 +61,7 @@ const fs = __importStar(require("node:fs"));
|
|
|
60
61
|
const os = __importStar(require("node:os"));
|
|
61
62
|
const path = __importStar(require("node:path"));
|
|
62
63
|
const redacao_url_1 = require("./redacao-url");
|
|
64
|
+
const locale_1 = require("./locale");
|
|
63
65
|
function git(raiz, args, extra = {}) {
|
|
64
66
|
const r = (0, node_child_process_1.spawnSync)('git', args, { cwd: raiz, encoding: 'utf8', input: extra.input, timeout: extra.timeoutMs ?? 60000,
|
|
65
67
|
env: { ...process.env, ...extra.env } });
|
|
@@ -67,8 +69,11 @@ function git(raiz, args, extra = {}) {
|
|
|
67
69
|
}
|
|
68
70
|
function exigirGit(raiz, args, prefixo, extra = {}) {
|
|
69
71
|
const r = git(raiz, args, extra);
|
|
70
|
-
if (!r.ok)
|
|
71
|
-
|
|
72
|
+
if (!r.ok) {
|
|
73
|
+
// RM-061 (F3b, GO-FIX 1): pelo catalogo, com o codigo `<prefixo>.git` igual; a saida do git vai como veio.
|
|
74
|
+
const comando = args[0], saida = r.stderr.trim().split('\n').pop() ?? '';
|
|
75
|
+
throw new locale_1.ErroDoCatalogo((m) => m.estado.gitFalhou(prefixo, comando, saida));
|
|
76
|
+
}
|
|
72
77
|
return r.stdout;
|
|
73
78
|
}
|
|
74
79
|
/**
|
|
@@ -103,10 +108,31 @@ function remotoRedigido(remoto) {
|
|
|
103
108
|
function exigirRemoto(remoto, prefixo) {
|
|
104
109
|
if ((0, exports.remotoValido)(remoto))
|
|
105
110
|
return remoto;
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
111
|
+
// RM-061 (F3b): a recusa nasce do catalogo; o codigo `<prefixo>.remoto-invalido` e o mesmo nas duas linguas.
|
|
112
|
+
const redigido = remotoRedigido(remoto);
|
|
113
|
+
throw new locale_1.ErroDoCatalogo((m) => m.estado.remotoInvalido(prefixo, redigido));
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* RM-047 (fronteira de confiança): nome de branch que pode ir ao git como argumento. O valor vem do
|
|
117
|
+
* `worktree.base_branch` do manifesto, do campo `para` do ledger ou do frontmatter, e todos podem ser
|
|
118
|
+
* do clone: um nome que começa com `-` viraria opção do git (`--output=<arquivo>` grava arquivo).
|
|
119
|
+
* A regra é a do `git check-ref-format --branch`, então nenhum nome que o git aceite é recusado.
|
|
120
|
+
*/
|
|
121
|
+
function branchValida(branch) {
|
|
122
|
+
if (typeof branch !== 'string' || branch.length === 0 || branch.length > 255)
|
|
123
|
+
return false;
|
|
124
|
+
if (branch.startsWith('-') || branch === '@' || branch.includes('..') || branch.includes('@{'))
|
|
125
|
+
return false;
|
|
126
|
+
// eslint-disable-next-line no-control-regex
|
|
127
|
+
if (/[\x00-\x20\x7f~^:?*[\\]/.test(branch))
|
|
128
|
+
return false;
|
|
129
|
+
if (branch.startsWith('/') || branch.endsWith('/') || branch.includes('//') || branch.endsWith('.'))
|
|
130
|
+
return false;
|
|
131
|
+
return branch.split('/').every((parte) => !parte.startsWith('.') && !parte.endsWith('.lock'));
|
|
109
132
|
}
|
|
133
|
+
/** Sha hexadecimal (abreviado ou inteiro, SHA-1 ou SHA-256): o único formato de commit lido do ledger que vai ao git. */
|
|
134
|
+
const shaValido = (sha) => typeof sha === 'string' && /^[0-9a-f]{7,64}$/i.test(sha);
|
|
135
|
+
exports.shaValido = shaValido;
|
|
110
136
|
const refRemota = (remoto, branch) => `refs/remotes/${remoto}/${branch}`;
|
|
111
137
|
exports.refRemota = refRemota;
|
|
112
138
|
/** A ultima copia lida da branch nesta maquina, sem rede. `null` quando nunca foi lida. */
|
|
@@ -157,7 +183,7 @@ function jsonsDaPonta(raiz, ponta, dir, prefixo) {
|
|
|
157
183
|
* Grava uma versao nova da branch em cima de `ponta`, sem tocar arvore de trabalho nem indice:
|
|
158
184
|
* indice temporario, blobs, `write-tree` e `commit-tree`. Push sem forca; recusa volta `false`.
|
|
159
185
|
*/
|
|
160
|
-
function gravarNaBranch(raiz, remoto, branch, ponta, mudancas, mensagem, prefixo, rede = {}) {
|
|
186
|
+
function gravarNaBranch(raiz, remoto, branch, ponta, mudancas, mensagem, prefixo, rede = {}, autor) {
|
|
161
187
|
exigirRemoto(remoto, prefixo);
|
|
162
188
|
const indice = path.join(fs.mkdtempSync(path.join(os.tmpdir(), 'ork-branch-estado-')), 'index');
|
|
163
189
|
const env = { GIT_INDEX_FILE: indice };
|
|
@@ -176,7 +202,10 @@ function gravarNaBranch(raiz, remoto, branch, ponta, mudancas, mensagem, prefixo
|
|
|
176
202
|
}
|
|
177
203
|
}
|
|
178
204
|
const arvore = exigirGit(raiz, ['write-tree'], prefixo, { env }).trim();
|
|
179
|
-
|
|
205
|
+
// RM-058 N3 (S6 da revisão da ork-rm058n3): quem grava pode dar a identidade do commit, para a do git da pessoa não ir ao remoto.
|
|
206
|
+
const identidade = autor ? { env: { GIT_AUTHOR_NAME: autor.nome, GIT_AUTHOR_EMAIL: autor.email, GIT_COMMITTER_NAME: autor.nome,
|
|
207
|
+
GIT_COMMITTER_EMAIL: autor.email } } : {};
|
|
208
|
+
const commit = exigirGit(raiz, ['commit-tree', arvore, ...(ponta ? ['-p', ponta] : []), '-m', mensagem], prefixo, identidade).trim();
|
|
180
209
|
// `rede`: prazo e ambiente so do que vai a rede (RM-037, achado A3: o fechamento nao espera 60 s).
|
|
181
210
|
const push = git(raiz, ['push', '--quiet', '--', remoto, `${commit}:refs/heads/${branch}`], rede);
|
|
182
211
|
if (push.ok) {
|
|
@@ -185,7 +214,8 @@ function gravarNaBranch(raiz, remoto, branch, ponta, mudancas, mensagem, prefixo
|
|
|
185
214
|
}
|
|
186
215
|
if (/rejected|non-fast-forward|fetch first|stale info|failed to push/i.test(push.stderr))
|
|
187
216
|
return false;
|
|
188
|
-
|
|
217
|
+
const saida = push.stderr.trim().split('\n').pop() ?? '';
|
|
218
|
+
throw new locale_1.ErroDoCatalogo((m) => m.estado.pushFalhou(prefixo, remoto, saida));
|
|
189
219
|
}
|
|
190
220
|
finally {
|
|
191
221
|
fs.rmSync(path.dirname(indice), { recursive: true, force: true });
|
package/dist/busca-semantica.js
CHANGED
|
@@ -22,6 +22,7 @@ exports.fundirRrf = fundirRrf;
|
|
|
22
22
|
exports.buscarPorSignificado = buscarPorSignificado;
|
|
23
23
|
exports.textoDaBuscaPorSignificado = textoDaBuscaPorSignificado;
|
|
24
24
|
const indice_vetorial_1 = require("./indice-vetorial");
|
|
25
|
+
const locale_1 = require("./locale");
|
|
25
26
|
exports.MODOS_DE_BUSCA = ['hibrido', 'vetor', 'fts'];
|
|
26
27
|
/** D9: constante da fusao RRF. */
|
|
27
28
|
exports.RRF_K = 60;
|
|
@@ -185,17 +186,18 @@ function buscarPorSignificado(o) {
|
|
|
185
186
|
* id do FTS fora do universo e o aviso de cobertura vivem nele, e o texto os perdia na busca que deu certo.
|
|
186
187
|
*/
|
|
187
188
|
function textoDaBuscaPorSignificado(r) {
|
|
188
|
-
const
|
|
189
|
+
const m = (0, locale_1.msg)().operacao.restante.memory.busca;
|
|
190
|
+
const linhas = [m.titulo(r.modo, r.origem, r.modeloUsado ?? '')];
|
|
189
191
|
if (r.motivo)
|
|
190
|
-
linhas.push(
|
|
192
|
+
linhas.push(m.motivo(r.motivo, r.detalhe));
|
|
191
193
|
else if (r.detalhe)
|
|
192
|
-
linhas.push(
|
|
194
|
+
linhas.push(m.detalhe(r.detalhe));
|
|
193
195
|
linhas.push('');
|
|
194
196
|
r.resultados.forEach((e, i) => {
|
|
195
|
-
const sim = e.similaridade === null ? '' :
|
|
197
|
+
const sim = e.similaridade === null ? '' : m.similaridade(e.similaridade);
|
|
196
198
|
linhas.push(` ${i + 1}. [${e.collection}] ${e.id} score ${e.score} ${e.fontes.join('+')}${sim}`);
|
|
197
199
|
linhas.push(` ${e.resumo}`);
|
|
198
200
|
});
|
|
199
|
-
linhas.push('',
|
|
201
|
+
linhas.push('', m.resumo(r.resultados.length));
|
|
200
202
|
return linhas.join('\n');
|
|
201
203
|
}
|
package/dist/catalogo.js
CHANGED
|
@@ -45,11 +45,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
45
45
|
exports.BUCKETS = void 0;
|
|
46
46
|
exports.raizDoCatalogo = raizDoCatalogo;
|
|
47
47
|
exports.exigirCatalogo = exigirCatalogo;
|
|
48
|
+
exports.catalogoDoPacote = catalogoDoPacote;
|
|
49
|
+
exports.exigirCatalogoDoPacote = exigirCatalogoDoPacote;
|
|
48
50
|
exports.cliDoCatalogo = cliDoCatalogo;
|
|
49
51
|
exports.skillsDoCatalogo = skillsDoCatalogo;
|
|
50
52
|
exports.referenciasDoCatalogo = referenciasDoCatalogo;
|
|
51
53
|
const fs = __importStar(require("node:fs"));
|
|
52
54
|
const path = __importStar(require("node:path"));
|
|
55
|
+
const locale_1 = require("./locale");
|
|
53
56
|
/** O que precisa existir para um diretorio ser a raiz do catalogo. */
|
|
54
57
|
const MARCAS = ['skills', 'references', 'eval'];
|
|
55
58
|
function ehRaizDoCatalogo(dir) {
|
|
@@ -79,10 +82,41 @@ function raizDoCatalogo(inicial) {
|
|
|
79
82
|
function exigirCatalogo(inicial) {
|
|
80
83
|
const raiz = raizDoCatalogo(inicial);
|
|
81
84
|
if (!raiz) {
|
|
82
|
-
throw new
|
|
85
|
+
throw new locale_1.ErroDoCatalogo((m) => m.adapter.catalogoNaoEncontrado);
|
|
83
86
|
}
|
|
84
87
|
return raiz;
|
|
85
88
|
}
|
|
89
|
+
/** A raiz do catálogo do pacote que está rodando: subindo a partir do próprio código, nunca do cwd. */
|
|
90
|
+
function catalogoDoPacote() {
|
|
91
|
+
return subirProcurando(__dirname);
|
|
92
|
+
}
|
|
93
|
+
function real(p) {
|
|
94
|
+
try {
|
|
95
|
+
return fs.realpathSync(p);
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
return path.resolve(p);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* RM-047 (P4): o catálogo que o `ork eval` executa. O eval roda os canários, os hooks e o `core/dist`
|
|
103
|
+
* do catálogo, então ele só vale o do pacote que está rodando. Um diretório com `skills/`,
|
|
104
|
+
* `references/` e `eval/` achado a partir do cwd (um clone qualquer) que não seja o próprio pacote é
|
|
105
|
+
* recusado com `eval.catalogo-alheio`, com o comando que roda o eval daquele checkout de propósito.
|
|
106
|
+
*/
|
|
107
|
+
function exigirCatalogoDoPacote(inicial) {
|
|
108
|
+
const pacote = catalogoDoPacote();
|
|
109
|
+
if (!pacote) {
|
|
110
|
+
throw new Error('catalogo do Orkastery nao encontrado (esperado um diretorio com skills/, references/ e eval/)');
|
|
111
|
+
}
|
|
112
|
+
const doCwd = subirProcurando(inicial);
|
|
113
|
+
if (doCwd && real(doCwd) !== real(pacote)) {
|
|
114
|
+
throw new Error(`eval.catalogo-alheio: ${doCwd} tem skills/, references/ e eval/, mas nao e o pacote deste ork ` +
|
|
115
|
+
`(${pacote}). O eval executa os canarios, os hooks e o core/dist do catalogo, e so roda o do proprio pacote. ` +
|
|
116
|
+
`Para avaliar aquele checkout de proposito, rode o ork dele: node ${path.join(doCwd, 'core', 'dist', 'index.js')} eval`);
|
|
117
|
+
}
|
|
118
|
+
return pacote;
|
|
119
|
+
}
|
|
86
120
|
/** Os buckets do catalogo, na ordem em que o README os apresenta. */
|
|
87
121
|
exports.BUCKETS = [
|
|
88
122
|
'core',
|