@event4u/agent-config 16.5.0 → 17.0.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/.augment-plugin/marketplace.json +3 -3
- package/.augment-plugin/plugin.json +1 -1
- package/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/skills/install-agent-config/SKILL.md +4 -4
- package/CHANGELOG.md +463 -498
- package/CONTRIBUTING.md +47 -0
- package/README.md +25 -25
- package/dist/agent-src/commands/{design.md → agent-design.md} +10 -6
- package/dist/agent-src/commands/agents/init.md +66 -3
- package/dist/agent-src/commands/agents/user/init.md +3 -0
- package/dist/agent-src/commands/{optimize/deep.md → analyze/and-optimize.md} +72 -33
- package/dist/agent-src/commands/analyze/inbox.md +168 -37
- package/dist/agent-src/commands/analyze/pr.md +144 -0
- package/dist/agent-src/commands/analyze/{repo.md → reference.md} +85 -14
- package/dist/agent-src/commands/analyze/roadmap-repos.md +19 -10
- package/dist/agent-src/commands/analyze.md +28 -12
- package/dist/agent-src/commands/audit.md +115 -0
- package/dist/agent-src/commands/brand/review.md +13 -2
- package/dist/agent-src/commands/brand/tokens.md +3 -3
- package/dist/agent-src/commands/brand/voice.md +8 -5
- package/dist/agent-src/commands/brand.md +2 -2
- package/dist/agent-src/commands/challenge-me/closure.md +25 -0
- package/dist/agent-src/commands/design-system/import.md +8 -3
- package/dist/agent-src/commands/design-system/sync.md +98 -0
- package/dist/agent-src/commands/design-system.md +6 -1
- package/dist/agent-src/commands/evals/analyze.json +44 -0
- package/dist/agent-src/commands/evals/audit.json +12 -0
- package/dist/agent-src/commands/evals/retro.json +12 -0
- package/dist/agent-src/commands/fix/ci.md +10 -8
- package/dist/agent-src/commands/ghostwriter/write.md +22 -0
- package/dist/agent-src/commands/memory/learn-low-impact.md +70 -83
- package/dist/agent-src/commands/memory/propose.md +12 -0
- package/dist/agent-src/commands/memory.md +1 -1
- package/dist/agent-src/commands/optimize.md +4 -3
- package/dist/agent-src/commands/post-as/me.md +18 -0
- package/dist/agent-src/commands/pr/create.md +17 -342
- package/dist/agent-src/commands/pr/merge.md +129 -368
- package/dist/agent-src/commands/retro.md +121 -0
- package/dist/agent-src/commands/review/routing.md +1 -1
- package/dist/agent-src/commands/roadmap/next.md +4 -1
- package/dist/agent-src/commands/roadmap/process-full.md +46 -333
- package/dist/agent-src/commands/roadmap/triage-parked.md +6 -2
- package/dist/agent-src/commands/team-knowledge/consolidate.md +2 -2
- package/dist/agent-src/commands/team-knowledge.md +1 -1
- package/dist/agent-src/commands/threat-model.md +1 -1
- package/dist/agent-src/commands/upstream-contribute.md +91 -101
- package/dist/agent-src/commands/worktree/cleanup.md +18 -11
- package/dist/agent-src/contexts/contracts/consumer-agents-md-guide.md +54 -0
- package/dist/agent-src/contexts/execution/analysis-loop.md +137 -0
- package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +3 -3
- package/dist/agent-src/contexts/execution/decision-closure-execution.md +1 -1
- package/dist/agent-src/contexts/execution/host-capability-manifest.md +6 -0
- package/dist/agent-src/contexts/execution/orchestration-telemetry.md +11 -4
- package/dist/agent-src/contexts/execution/pr-create-branches-content.md +250 -0
- package/dist/agent-src/contexts/execution/pr-create-branches-freshness.md +150 -0
- package/dist/agent-src/contexts/execution/pr-merge-queue.md +287 -0
- package/dist/agent-src/contexts/execution/pr-merge-sync.md +276 -0
- package/dist/agent-src/contexts/execution/pr-merge-trust-boundary.md +69 -0
- package/dist/agent-src/contexts/execution/process-full-all.md +233 -0
- package/dist/agent-src/contexts/execution/process-full-delivery.md +231 -0
- package/dist/agent-src/contexts/execution/roadmap-execution-contract-branches.md +42 -0
- package/dist/agent-src/contexts/execution/roadmap-execution-contract.md +1 -35
- package/dist/agent-src/contexts/execution/roadmap-process-loop-close.md +235 -0
- package/dist/agent-src/contexts/execution/roadmap-process-loop-prescan.md +216 -0
- package/dist/agent-src/contexts/execution/roadmap-process-loop-run.md +253 -0
- package/dist/agent-src/contexts/execution/roadmap-process-loop-set.md +212 -0
- package/dist/agent-src/contexts/execution/roadmap-process-loop.md +25 -864
- package/dist/agent-src/contexts/execution/subagent-spawn-contract.md +14 -2
- package/dist/agent-src/contexts/execution/subagent-steering.md +65 -8
- package/dist/agent-src/contexts/model-recommendations.md +5 -5
- package/dist/agent-src/contexts/subagent-configuration.md +1 -1
- package/dist/agent-src/guidelines/agent-infra/api-cost-levers.md +4 -3
- package/dist/agent-src/guidelines/agent-infra/model-recommendation.md +11 -5
- package/dist/agent-src/guidelines/agent-infra/rule-body-migration-inventory.md +1 -1
- package/dist/agent-src/guidelines/agent-infra/self-improvement-pipeline.md +47 -24
- package/dist/agent-src/guidelines/design-antipatterns.md +5 -0
- package/dist/agent-src/guidelines/design-asset-discipline.md +17 -0
- package/dist/agent-src/guidelines/design-fidelity-routing.md +1 -0
- package/dist/agent-src/guidelines/php/api-design.md +10 -1
- package/dist/agent-src/rules/brand-source-of-truth.md +7 -6
- package/dist/agent-src/rules/code-provenance.md +1 -1
- package/dist/agent-src/rules/context-hygiene.md +0 -1
- package/dist/agent-src/rules/design-fidelity.md +12 -13
- package/dist/agent-src/rules/external-reference-deep-dive.md +2 -2
- package/dist/agent-src/rules/fix-what-you-see.md +1 -1
- package/dist/agent-src/rules/low-impact-corpus-privacy-floor.md +14 -15
- package/dist/agent-src/rules/missing-skill-recovery.md +12 -11
- package/dist/agent-src/rules/neighbour-precedence.md +1 -1
- package/dist/agent-src/rules/recurring-criticism.md +1 -1
- package/dist/agent-src/rules/roadmap-ci-steps-policy.md +0 -2
- package/dist/agent-src/rules/self-repair-loop.md +2 -2
- package/dist/agent-src/rules/token-budget-discipline.md +1 -1
- package/dist/agent-src/scripts/dashboard_mode.ts +4 -1
- package/dist/agent-src/scripts/roadmap_age.ts +175 -0
- package/dist/agent-src/scripts/update_roadmap_progress.ts +10 -2
- package/dist/agent-src/skills/accessibility-auditor/SKILL.md +3 -3
- package/dist/agent-src/skills/agent-security-review/SKILL.md +2 -2
- package/dist/agent-src/skills/agents-md-thin-root/SKILL.md +12 -4
- package/dist/agent-src/skills/ai-code-blindspots/SKILL.md +7 -0
- package/dist/agent-src/skills/ai-council/references/advanced-modes.md +11 -1
- package/dist/agent-src/skills/ai-council/references/cost-and-redaction.md +7 -0
- package/dist/agent-src/skills/ai-council/references/execution-modes.md +7 -0
- package/dist/agent-src/skills/ai-council/references/output-and-synthesis.md +19 -0
- package/dist/agent-src/skills/ai-council/references/procedure.md +7 -0
- package/dist/agent-src/skills/api-design/SKILL.md +2 -2
- package/dist/agent-src/skills/api-endpoint/SKILL.md +2 -2
- package/dist/agent-src/skills/authz-review/SKILL.md +5 -3
- package/dist/agent-src/skills/blade-ui/SKILL.md +2 -2
- package/dist/agent-src/skills/brand/SKILL.md +7 -3
- package/dist/agent-src/skills/brand-asset-generation/SKILL.md +13 -6
- package/dist/agent-src/skills/brand-audit/SKILL.md +2 -1
- package/dist/agent-src/skills/brand-identity/SKILL.md +5 -4
- package/dist/agent-src/skills/brand-strategy/SKILL.md +5 -4
- package/dist/agent-src/skills/brand-to-tokens/SKILL.md +18 -39
- package/dist/agent-src/skills/brand-to-tokens/templates/marp-brand-deck.md.example +2 -2
- package/dist/agent-src/skills/brand-to-tokens/templates/reveal-brand-deck.yaml +2 -2
- package/dist/agent-src/skills/canvas-design/SKILL.md +12 -2
- package/dist/agent-src/skills/competitive-positioning/SKILL.md +2 -2
- package/dist/agent-src/skills/composer-packages/SKILL.md +18 -0
- package/dist/agent-src/skills/condense-memory/SKILL.md +1 -1
- package/dist/agent-src/skills/content-funnel-design/SKILL.md +8 -1
- package/dist/agent-src/skills/context-authoring/SKILL.md +1 -1
- package/dist/agent-src/skills/context-document/SKILL.md +2 -2
- package/dist/agent-src/skills/corpus-grounding/SKILL.md +6 -6
- package/dist/agent-src/skills/corpus-grounding/scripts/decision_engine.ts +13 -11
- package/dist/agent-src/skills/corpus-grounding/scripts/ground.mjs +1706 -0
- package/dist/agent-src/skills/corpus-grounding/scripts/schema_validator.ts +7 -1
- package/dist/agent-src/skills/dashboard-design/SKILL.md +1 -1
- package/dist/agent-src/skills/data-flow-mapper/SKILL.md +5 -2
- package/dist/agent-src/skills/database/SKILL.md +5 -4
- package/dist/agent-src/skills/decision-record/references/weighted-matrix.md +12 -0
- package/dist/agent-src/skills/deep-reading-analyst/SKILL.md +1 -1
- package/dist/agent-src/skills/dependency-upgrade/SKILL.md +61 -11
- package/dist/agent-src/skills/description-assist/SKILL.md +1 -1
- package/dist/agent-src/skills/design-intelligence/SKILL.md +1 -1
- package/dist/agent-src/skills/design-intelligence/data/landing.csv +1 -1
- package/dist/agent-src/skills/design-intelligence/references/context-and-registers.md +10 -2
- package/dist/agent-src/skills/design-intelligence/references/design-languages.md +1 -1
- package/dist/agent-src/skills/design-intelligence/references/design-rules-checklist.md +4 -3
- package/dist/agent-src/skills/design-intelligence/references/integration-mapping.md +14 -14
- package/dist/agent-src/skills/{wireframe → design-review}/references/story-beat-ledger.schema.json +1 -1
- package/dist/agent-src/skills/design-review/references/verification-automation.md +11 -3
- package/dist/agent-src/skills/design-system-capture/SKILL.md +15 -10
- package/dist/agent-src/skills/design-system-capture/references/design-system-json.md +20 -5
- package/dist/agent-src/skills/design-system-capture/references/import-procedure.md +2 -2
- package/dist/agent-src/skills/design-tokens/SKILL.md +23 -23
- package/dist/agent-src/skills/design-tokens/scripts/tokens.mjs +1037 -0
- package/dist/agent-src/skills/design-tokens/scripts/tokens.ts +336 -13
- package/dist/agent-src/skills/design-tokens/templates/design-tokens-starter.json +52 -53
- package/dist/agent-src/skills/docker/SKILL.md +1 -1
- package/dist/agent-src/skills/estimate-ticket/SKILL.md +1 -1
- package/dist/agent-src/skills/existing-ui-audit/SKILL.md +14 -276
- package/dist/agent-src/skills/existing-ui-audit/procedure.yaml +44 -0
- package/dist/agent-src/skills/existing-ui-audit/references/anti-slop-cross-reference.md +1 -1
- package/dist/agent-src/skills/existing-ui-audit/references/steps/00-inspect-stack-and-input.md +4 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/01-enumerate-components.md +26 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/01b-detect-component-taxonomy.md +7 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/02-identify-design-system.md +12 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/03-detect-design-tokens.md +35 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/04-detect-shadcn-inventory.md +13 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/04b-live-storybook-read.md +26 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/05-list-reusable-patterns.md +14 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/06-match-candidates.md +52 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/07-greenfield-branch.md +29 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/08-a11y-baseline.md +40 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/09-validate-and-write.md +5 -0
- package/dist/agent-src/skills/experiment-loop/SKILL.md +1 -1
- package/dist/agent-src/skills/fe-design/references/design-patterns.md +16 -2
- package/dist/agent-src/skills/fe-design/references/design-read-and-memory.md +1 -1
- package/dist/agent-src/skills/fe-design/references/source-led-port.md +1 -1
- package/dist/agent-src/skills/finishing-a-development-branch/SKILL.md +6 -6
- package/dist/agent-src/skills/flux/SKILL.md +1 -1
- package/dist/agent-src/skills/form-handler/SKILL.md +15 -2
- package/dist/agent-src/skills/git-workflow/SKILL.md +2 -2
- package/dist/agent-src/skills/git-workflow/references/branch-update.md +7 -0
- package/dist/agent-src/skills/git-workflow/references/commit-subject.md +12 -0
- package/dist/agent-src/skills/git-workflow/references/push-closes-its-loop.md +10 -0
- package/dist/agent-src/skills/gtm-launch/SKILL.md +8 -1
- package/dist/agent-src/skills/html-deck/SKILL.md +7 -2
- package/dist/agent-src/skills/humanizer/SKILL.md +16 -3
- package/dist/agent-src/skills/humanizer/references/anti-aiisms.md +13 -1
- package/dist/agent-src/skills/humanizer/references/fixtures.md +8 -0
- package/dist/agent-src/skills/js-library-packaging/SKILL.md +5 -4
- package/dist/agent-src/skills/js-library-packaging/scripts/check_package_surface.mjs +197 -0
- package/dist/agent-src/skills/judge-artifact-completeness/SKILL.md +1 -1
- package/dist/agent-src/skills/judge-security-auditor/SKILL.md +2 -2
- package/dist/agent-src/skills/launch-readiness/SKILL.md +18 -22
- package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +5 -5
- package/dist/agent-src/skills/livewire/SKILL.md +1 -1
- package/dist/agent-src/skills/llm-provider-knowledge/SKILL.md +18 -0
- package/dist/agent-src/skills/logo-generation/SKILL.md +9 -3
- package/dist/agent-src/skills/market-entry-analysis/SKILL.md +6 -1
- package/dist/agent-src/skills/markitdown/SKILL.md +1 -1
- package/dist/agent-src/skills/memory-consolidation/SKILL.md +2 -2
- package/dist/agent-src/skills/messaging-architecture/SKILL.md +8 -1
- package/dist/agent-src/skills/motion-choreographer/SKILL.md +2 -2
- package/dist/agent-src/skills/playwright-testing/SKILL.md +2 -0
- package/dist/agent-src/skills/positioning-strategy/SKILL.md +10 -2
- package/dist/agent-src/skills/prediction-pool-optimizer/references/ev-fixtures.md +13 -0
- package/dist/agent-src/skills/prediction-pool-optimizer/references/odds-and-bonus.md +7 -0
- package/dist/agent-src/skills/project-analysis-core/SKILL.md +1 -1
- package/dist/agent-src/skills/project-analysis-hypothesis-driven/SKILL.md +1 -1
- package/dist/agent-src/skills/project-analyzer/SKILL.md +14 -75
- package/dist/agent-src/skills/project-analyzer/procedure.yaml +39 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/01-project-overview.md +9 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/02-architecture.md +7 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/03-data-layer.md +6 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/04-business-domains.md +7 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/05-api-surface.md +6 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/06-service-map.md +6 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/07-module-inventory.md +6 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/08-infrastructure-and-testing.md +5 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/09-agent-docs-audit.md +6 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/10-gap-analysis.md +6 -0
- package/dist/agent-src/skills/quality-tools/references/js-ts-tools.md +10 -0
- package/dist/agent-src/skills/quality-tools/references/php-tools.md +13 -0
- package/dist/agent-src/skills/quality-tools/references/python-tools.md +11 -0
- package/dist/agent-src/skills/react-native-setup/SKILL.md +7 -2
- package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +5 -1
- package/dist/agent-src/skills/react-shadcn-ui/references/registry.md +13 -0
- package/dist/agent-src/skills/react-shadcn-ui/scripts/shadcn_add.mjs +315 -0
- package/dist/agent-src/skills/react-shadcn-ui/scripts/shadcn_add.ts +6 -6
- package/dist/agent-src/skills/receiving-code-review/SKILL.md +1 -1
- package/dist/agent-src/skills/refine-ticket/SKILL.md +2 -2
- package/dist/agent-src/skills/release-comms/SKILL.md +2 -1
- package/dist/agent-src/skills/repomix-packer/SKILL.md +2 -2
- package/dist/agent-src/skills/requesting-code-review/SKILL.md +3 -3
- package/dist/agent-src/skills/roadmap-management/references/archival.md +3 -3
- package/dist/agent-src/skills/roadmap-management/references/authoring.md +9 -2
- package/dist/agent-src/skills/roadmap-management/references/dashboard.md +3 -3
- package/dist/agent-src/skills/roadmap-management/references/lifecycle.md +3 -3
- package/dist/agent-src/skills/roadmap-writing/SKILL.md +4 -4
- package/dist/agent-src/skills/rtk-output-filtering/SKILL.md +1 -1
- package/dist/agent-src/skills/rule-writing/SKILL.md +1 -2
- package/dist/agent-src/skills/security/SKILL.md +41 -5
- package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +5 -3
- package/dist/agent-src/skills/skill-reviewer/SKILL.md +1 -1
- package/dist/agent-src/skills/skill-writing/SKILL.md +23 -8
- package/dist/agent-src/skills/skill-writing/references/section-patterns.md +19 -1
- package/dist/agent-src/skills/source-discovery/SKILL.md +3 -3
- package/dist/agent-src/skills/sql-writing/SKILL.md +2 -2
- package/dist/agent-src/skills/standards-from-config/SKILL.md +2 -2
- package/dist/agent-src/skills/storybook-workshop/SKILL.md +5 -0
- package/dist/agent-src/skills/storybook-workshop/scripts/story_contrast_floor.mjs +99 -0
- package/dist/agent-src/skills/subagent-orchestration/SKILL.md +13 -13
- package/dist/agent-src/skills/subagent-orchestration/prompts/README.md +4 -3
- package/dist/agent-src/skills/svg-authoring/SKILL.md +7 -1
- package/dist/agent-src/skills/systematic-debugging/SKILL.md +2 -2
- package/dist/agent-src/skills/tailwind-engineer/SKILL.md +8 -3
- package/dist/agent-src/skills/tailwind-engineer/scripts/tailwind_config_gen.mjs +482 -0
- package/dist/agent-src/skills/test-case-discovery/SKILL.md +1 -1
- package/dist/agent-src/skills/threat-modeling/SKILL.md +8 -1
- package/dist/agent-src/skills/threat-modeling/data/manifest.json +5 -2
- package/dist/agent-src/skills/threat-modeling/data/reasoning.csv +10 -10
- package/dist/agent-src/skills/threat-modeling/data/surfaces.csv +11 -10
- package/dist/agent-src/skills/threat-modeling/data/threats.csv +34 -20
- package/dist/agent-src/skills/type-design/SKILL.md +196 -0
- package/dist/agent-src/skills/type-design/references/font-spec.md +90 -0
- package/dist/agent-src/skills/type-design/references/gates.md +113 -0
- package/dist/agent-src/skills/type-design/references/toolchain.md +66 -0
- package/dist/agent-src/skills/typography-system/SKILL.md +21 -11
- package/dist/agent-src/skills/typography-system/references/worked-scales.md +85 -0
- package/dist/agent-src/skills/ui-apply-generic/SKILL.md +1 -1
- package/dist/agent-src/skills/universal-project-analysis/SKILL.md +1 -1
- package/dist/agent-src/skills/upstream-contribute/SKILL.md +120 -125
- package/dist/agent-src/skills/using-git-worktrees/SKILL.md +1 -0
- package/dist/agent-src/skills/verify-repair-loop/SKILL.md +1 -1
- package/dist/agent-src/skills/voice-and-tone-design/SKILL.md +71 -2
- package/dist/agent-src/skills/worktree-lifecycle/SKILL.md +16 -14
- package/dist/agent-src/templates/AGENTS.md +1 -1
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/agents/proposal.example.md +1 -1
- package/dist/agent-src/templates/github-workflows/advisories-daily.yml +85 -0
- package/dist/agent-src/templates/roadmaps.md +39 -1
- package/dist/agent-src/templates/scripts/check_memory.ts +2 -2
- package/dist/agent-src/templates/scripts/historical-bug-patterns.example.yml +13 -1
- package/dist/agent-src/templates/scripts/work_engine/cli.ts +17 -0
- package/dist/agent-src/templates/scripts/work_engine/cli_args.ts +10 -0
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/scaffold.ts +22 -13
- package/dist/agent-src/templates/scripts/work_engine/dispatcher.ts +18 -4
- package/dist/agent-src/templates/scripts/work_engine/procedure/checks.ts +283 -0
- package/dist/agent-src/templates/scripts/work_engine/procedure/run.ts +432 -0
- package/dist/agent-src/templates/scripts/work_engine/procedure/sidecar.ts +185 -0
- package/dist/agent-src/templates/scripts/work_engine/state.ts +3 -0
- package/dist/cli/commands/uiRender.js +72 -17
- package/dist/cli/commands/uiRenderAsset.js +10 -2
- package/dist/cli/commands/uiRenderAssetFonts.js +158 -0
- package/dist/cli/commands/uiRenderAssetTypes.js +8 -20
- package/dist/cli/initRouting.js +1 -1
- package/dist/cli/mcp/dispatch.js +31 -9
- package/dist/cli/python/knowledge_ingest.js +7 -39
- package/dist/cli/python/workspace_secrets.js +4 -177
- package/dist/cli/registry.js +4 -1
- package/dist/cli-delegate/archive_completed_roadmaps.js +3 -2
- package/dist/cli-delegate/check_update_banner.js +635 -266
- package/dist/cli-delegate/{chunk-TMWYUOK4.js → chunk-2CX7NWRB.js} +224 -437
- package/dist/cli-delegate/{chunk-F3QDG2GT.js → chunk-2SFOOFJJ.js} +259 -159
- package/dist/cli-delegate/chunk-2Y5AMLMY.js +136 -0
- package/dist/cli-delegate/{chunk-OKJUIAPS.js → chunk-4E2W63DA.js} +1 -62
- package/dist/cli-delegate/{chunk-6SRJTYJS.js → chunk-4SHNERBL.js} +37 -16
- package/dist/cli-delegate/chunk-5VO3RTMV.js +208 -0
- package/dist/cli-delegate/chunk-6E2LDY4F.js +27 -0
- package/dist/cli-delegate/{chunk-XQTPXKFA.js → chunk-6ZD2QZMN.js} +8 -17
- package/dist/cli-delegate/{chunk-6V5FMA3P.js → chunk-7CEI2YPS.js} +1 -1
- package/dist/cli-delegate/{chunk-DMSZHXZS.js → chunk-7DRWULEQ.js} +80 -7
- package/dist/cli-delegate/chunk-7NXCZSDL.js +54 -0
- package/dist/cli-delegate/chunk-AX3U3UWJ.js +328 -0
- package/dist/cli-delegate/{chunk-WOKWX5PL.js → chunk-BKALSTBZ.js} +18 -3
- package/dist/cli-delegate/chunk-BMGUGSY6.js +103 -0
- package/dist/cli-delegate/chunk-BYV46VRM.js +3309 -0
- package/dist/cli-delegate/{chunk-5GPULQBE.js → chunk-CAL76ADI.js} +4215 -682
- package/dist/cli-delegate/chunk-DSY6LLCQ.js +127 -0
- package/dist/cli-delegate/chunk-E6XNBVE4.js +581 -0
- package/dist/cli-delegate/{chunk-ZUZKZYCN.js → chunk-ESUNQ5XR.js} +46 -10
- package/dist/cli-delegate/{chunk-G5VVIZRC.js → chunk-F7HLSW6P.js} +1 -1
- package/dist/cli-delegate/chunk-FIEEOH5C.js +133 -0
- package/dist/cli-delegate/chunk-FKYZOWVD.js +719 -0
- package/dist/cli-delegate/chunk-GOMILC3O.js +918 -0
- package/dist/cli-delegate/chunk-I4KJYVPB.js +69 -0
- package/dist/cli-delegate/{chunk-JQOM7TTM.js → chunk-IDAOTDPE.js} +1 -100
- package/dist/cli-delegate/chunk-IROAQ77A.js +137 -0
- package/dist/cli-delegate/chunk-J2SJZICO.js +698 -0
- package/dist/cli-delegate/{chunk-6YQC2HLF.js → chunk-JHMMWNJ2.js} +54 -40
- package/dist/cli-delegate/{chunk-WQWXGIWB.js → chunk-M6CRG5O6.js} +165 -15
- package/dist/cli-delegate/{chunk-PHD7OOLE.js → chunk-MQ2UDEGV.js} +14 -3
- package/dist/cli-delegate/chunk-NTM7G2V4.js +220 -0
- package/dist/cli-delegate/chunk-PV7S5DPJ.js +175 -0
- package/dist/cli-delegate/{chunk-F7DQWYR5.js → chunk-RAXQOETZ.js} +6 -2
- package/dist/cli-delegate/{chunk-T7XSJSUQ.js → chunk-SIOMDAKL.js} +980 -784
- package/dist/cli-delegate/{chunk-KR6EM23A.js → chunk-TULVDQ4L.js} +3 -48
- package/dist/cli-delegate/chunk-UUYEKXKR.js +20 -0
- package/dist/cli-delegate/{chunk-7XGD2OEU.js → chunk-UXWHY6CQ.js} +2 -1
- package/dist/cli-delegate/{chunk-PWX7CKMD.js → chunk-VC3ECUEK.js} +1 -1
- package/dist/cli-delegate/{chunk-KXXWJTDO.js → chunk-WMNYVIYX.js} +1 -1
- package/dist/cli-delegate/chunk-XCY5KKUC.js +181 -0
- package/dist/cli-delegate/{chunk-H76PHZBI.js → chunk-XLY5G3CM.js} +14 -19
- package/dist/cli-delegate/cmd_adr_effective.js +41 -2
- package/dist/cli-delegate/cmd_analyze_session.js +7 -7
- package/dist/cli-delegate/cmd_brand_status.js +1287 -10
- package/dist/cli-delegate/cmd_ci_settle.js +330 -0
- package/dist/cli-delegate/cmd_conformance.js +483 -817
- package/dist/cli-delegate/cmd_doctor.js +26 -16
- package/dist/cli-delegate/cmd_doctor_neighbours.js +10 -7
- package/dist/cli-delegate/cmd_explain.js +9 -24
- package/dist/cli-delegate/cmd_export.js +14 -11
- package/dist/cli-delegate/cmd_fleet.js +5 -3
- package/dist/cli-delegate/cmd_git_convention.js +8 -4
- package/dist/cli-delegate/cmd_handoff.js +79 -242
- package/dist/cli-delegate/cmd_mcp_available.js +1 -1
- package/dist/cli-delegate/cmd_memory_get.js +4 -2
- package/dist/cli-delegate/cmd_migrate.js +2 -2
- package/dist/cli-delegate/cmd_packs_active.js +2 -2
- package/dist/cli-delegate/cmd_preflight.js +7 -5
- package/dist/cli-delegate/cmd_prune.js +16 -13
- package/dist/cli-delegate/cmd_route_audit.js +11 -8
- package/dist/cli-delegate/cmd_route_explain.js +649 -16
- package/dist/cli-delegate/cmd_session_recycle.js +15 -6
- package/dist/cli-delegate/cmd_settings_check.js +2 -2
- package/dist/cli-delegate/cmd_settings_get.js +1 -1
- package/dist/cli-delegate/cmd_settings_migrate.js +14 -11
- package/dist/cli-delegate/cmd_settings_set.js +1 -1
- package/dist/cli-delegate/cmd_sync.js +16 -13
- package/dist/cli-delegate/cmd_uninstall.js +185 -31
- package/dist/cli-delegate/cmd_update.js +67 -3
- package/dist/cli-delegate/cmd_upgrade.js +38 -7
- package/dist/cli-delegate/cmd_validate.js +16 -13
- package/dist/cli-delegate/cmd_versions.js +1 -1
- package/dist/cli-delegate/dashboard_mode.js +1 -1
- package/dist/cli-delegate/gate_execute.js +4 -3
- package/dist/cli-delegate/roadmap_age.js +22 -0
- package/dist/cli-delegate/roadmap_gates.js +4 -3
- package/dist/cli-delegate/update_roadmap_progress.js +3 -2
- package/dist/cli-delegate/upgrade_unattended-VVL6JLSX.js +541 -0
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +373 -190
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +5 -5
- package/dist/discovery/dormancy-report.md +1 -1
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +21 -16
- package/dist/discovery/trust-report.md +3 -3
- package/dist/discovery/workspaces.json +16 -11
- package/dist/hooks/chat_history.chunk.cjs +6852 -0
- package/dist/hooks/chat_history.chunk.cjs.sha256 +1 -0
- package/dist/hooks/dispatch.js +17506 -18692
- package/dist/hooks/dispatch.sha256 +1 -1
- package/dist/hooks/egress_engine.chunk.cjs +915 -0
- package/dist/hooks/egress_engine.chunk.cjs.sha256 +1 -0
- package/dist/hooks/svg_rules.chunk.cjs +281 -49
- package/dist/hooks/svg_rules.chunk.cjs.sha256 +1 -1
- package/dist/install/conflict.js +36 -6
- package/dist/install/conflictTracker.js +81 -7
- package/dist/install/detect.js +3 -3
- package/dist/install/hostPermissionsAdapter.js +106 -0
- package/dist/install/install.mjs +3117 -1949
- package/dist/install/installThinLayer.js +1 -1
- package/dist/install/manifestFiles.js +21 -0
- package/dist/install/noGoDenyRows.js +300 -0
- package/dist/install/noGoRules.js +368 -0
- package/dist/install/ownershipLedger.js +133 -0
- package/dist/install/plan.js +1 -1
- package/dist/install/preflight.js +39 -8
- package/dist/install/preserve.js +74 -12
- package/dist/install/recordedOwnership.js +88 -5
- package/dist/install/rule_scope.js +20 -3
- package/dist/install/stagedRuntime.js +455 -0
- package/dist/install/toolsArg.js +19 -0
- package/dist/install/userPin.js +47 -0
- package/dist/install/wizard-plan.js +26 -4
- package/dist/mcp/awesome-mcp-servers.row.md +1 -1
- package/dist/mcp/mcp-cloudflare-catalogue.json +3 -2
- package/dist/mcp/registry-manifest.json +6 -5
- package/dist/mcp/server.json +3 -3
- package/dist/mcp/server.mjs +9831 -5546
- package/dist/router.json +1 -1
- package/dist/scripts/_lib/agent_settings.js +7 -12
- package/dist/scripts/_lib/asset_render_record.js +219 -0
- package/dist/scripts/_lib/claude_builtin_names.js +9 -4
- package/dist/scripts/_lib/claude_settings_hooks.js +102 -34
- package/dist/scripts/_lib/egress_rules.js +766 -0
- package/dist/scripts/_lib/environment_detector.js +24 -33
- package/dist/scripts/_lib/global_deploy_inventory.js +146 -9
- package/dist/scripts/_lib/guidelines_lane.js +10 -1
- package/dist/scripts/_lib/identifier_redaction.js +24 -0
- package/dist/scripts/_lib/installed_layer.js +17 -0
- package/dist/scripts/_lib/installed_layer_normalise.js +72 -0
- package/dist/scripts/_lib/lean_projection_mode.js +34 -152
- package/dist/scripts/_lib/project_tree_form.js +118 -0
- package/dist/scripts/_lib/scoped_projection.js +133 -3
- package/dist/scripts/_lib/settings_removed_keys.js +29 -0
- package/dist/scripts/_lib/settings_renamed_keys.js +17 -5
- package/dist/scripts/_lib/subagent_native_fields.js +35 -0
- package/dist/scripts/_lib/svg_filled_counter.js +285 -0
- package/dist/scripts/_lib/svg_rules.js +2 -0
- package/dist/scripts/_lib/ui_surface.js +19 -0
- package/dist/scripts/_lib/verification_command.js +364 -0
- package/dist/scripts/_lib/workspace_secrets.js +229 -0
- package/dist/scripts/ai_council/seat_policy.js +27 -0
- package/dist/scripts/ai_council/transport_resolver.js +9 -10
- package/dist/scripts/condense.js +25 -29
- package/dist/server/io/substituteTemplate.js +2 -2
- package/dist/server/io/yamlIO.js +2 -2
- package/dist/server/routes/install.js +5 -1
- package/dist/server/routes/settings.js +2 -2
- package/dist/server/routes/wizard.js +1 -1
- package/dist/server/schemas/settings.js +22 -16
- package/dist/server/serverInfo.js +1 -1
- package/dist/shared/brandTokenDocument.js +47 -0
- package/dist/shared/brandTokenPaths.js +43 -0
- package/dist/shared/settingsCarveOut.js +0 -7
- package/dist/shared/skillRanking.js +103 -5
- package/dist/shared/userMd/formAdapter.js +16 -0
- package/dist/shared/userMd/schema.js +17 -0
- package/dist/ui/assets/index-w70Ado09.js +23 -0
- package/dist/ui/index.html +1 -1
- package/docs/MIGRATION.md +89 -2
- package/docs/THIRD-PARTY-NOTICES.md +27 -0
- package/docs/contracts/settings-classes.md +27 -9
- package/docs/guidelines/agent-infra/api-cost-levers.md +4 -3
- package/docs/guidelines/agent-infra/model-recommendation.md +11 -5
- package/docs/guidelines/agent-infra/rule-body-migration-inventory.md +1 -1
- package/docs/guidelines/agent-infra/self-improvement-pipeline.md +47 -24
- package/docs/guidelines/design-antipatterns.md +5 -0
- package/docs/guidelines/design-asset-discipline.md +17 -0
- package/docs/guidelines/design-fidelity-routing.md +1 -0
- package/docs/guidelines/php/api-design.md +10 -1
- package/llms.txt +12 -10
- package/package.json +13 -4
- package/src/agent-src/scripts/dashboard_mode.ts +4 -1
- package/src/agent-src/scripts/roadmap_age.ts +175 -0
- package/src/agent-src/scripts/update_roadmap_progress.ts +10 -2
- package/src/agent-src/templates/AGENTS.md +1 -1
- package/src/agent-src/templates/scripts/check_memory.ts +2 -2
- package/src/agent-src/templates/scripts/historical-bug-patterns.example.yml +13 -1
- package/src/agent-src/templates/scripts/work_engine/cli.ts +17 -0
- package/src/agent-src/templates/scripts/work_engine/cli_args.ts +10 -0
- package/src/agent-src/templates/scripts/work_engine/directives/ui/scaffold.ts +22 -13
- package/src/agent-src/templates/scripts/work_engine/dispatcher.ts +18 -4
- package/src/agent-src/templates/scripts/work_engine/procedure/checks.ts +283 -0
- package/src/agent-src/templates/scripts/work_engine/procedure/run.ts +432 -0
- package/src/agent-src/templates/scripts/work_engine/procedure/sidecar.ts +185 -0
- package/src/agent-src/templates/scripts/work_engine/state.ts +3 -0
- package/src/config/agent-settings.template.yml +120 -57
- package/src/config/agents-paths.yml +13 -7
- package/src/config/ci-local-parity.yml +44 -0
- package/src/config/continuity-surface.json +51 -2
- package/src/config/depth-audit-samples.json +5 -0
- package/src/config/discovery/command-verbs.yml +1 -0
- package/src/config/dispatch-economy-metrics.json +1 -0
- package/src/config/egress-mutations/class-precedence-swapped.json +7 -0
- package/src/config/egress-mutations/credential-token-restores.json +7 -0
- package/src/config/egress-mutations/iban-checksum-disabled.json +7 -0
- package/src/config/egress-mutations/raw-value-in-the-count-record.json +7 -0
- package/src/config/evaluator-budgets.json +4 -4
- package/src/config/gate-coverage.yml +149 -3
- package/src/config/gate-reachability-exemptions.json +3 -5
- package/src/config/gate-violation-baselines.json +26 -22
- package/src/config/gitignore-block.txt +6 -3
- package/src/config/hook-bundle-budget.json +34 -3
- package/src/config/hook-carrier-probes.json +30 -0
- package/src/config/hook-latency-budget.json +4 -2
- package/src/config/host-injection-effect.json +8 -1
- package/src/config/host-skill-frontmatter-keys.json +56 -0
- package/src/config/layer-form-brakes.json +4 -0
- package/src/config/layer-form-comparison-corpus.json +42 -0
- package/src/config/loop-surfaces.yaml +28 -47
- package/src/config/memory-twin-verdicts.yml +9 -1
- package/src/config/metric-registry.yml +40 -3
- package/src/config/pack-size-budget.json +15 -0
- package/src/config/procedure-core-budget.json +21 -0
- package/src/config/profiles/minimal.ini +1 -1
- package/src/config/project-tree-form.json +24 -0
- package/src/config/reach-channels.yml +3 -3
- package/src/config/reach-prescriptions-intake.yml +1 -1
- package/src/config/roadmap-step-size-baseline.json +118 -0
- package/src/config/routing-coverage-seed.json +93 -2
- package/src/config/skill-body-budget.json +686 -0
- package/src/config/skill-fork-pilot.json +17 -0
- package/src/config/skill-lifecycle-probes-codex.json +57 -0
- package/src/config/skill-lifecycle-probes.json +57 -0
- package/src/config/skill-output-shape.json +316 -0
- package/src/config/step-depth-table.json +58 -0
- package/src/config/turnaround-budget.json +90 -0
- package/src/install/conflict.ts +38 -6
- package/src/install/conflictTracker.ts +126 -8
- package/src/install/detect.ts +3 -3
- package/src/install/hostPermissionsAdapter.ts +136 -0
- package/src/install/installThinLayer.ts +6 -1
- package/src/install/manifestFiles.ts +24 -0
- package/src/install/noGoDenyRows.ts +368 -0
- package/src/install/noGoRules.ts +438 -0
- package/src/install/ownershipLedger.ts +180 -0
- package/src/install/plan.ts +1 -1
- package/src/install/preflight.ts +42 -10
- package/src/install/preserve.ts +94 -12
- package/src/install/recordedOwnership.ts +121 -3
- package/src/install/rule_scope.ts +20 -3
- package/src/install/stagedRuntime.ts +528 -0
- package/src/install/toolsArg.ts +16 -0
- package/src/install/types.ts +23 -2
- package/src/install/userPin.ts +54 -0
- package/src/install/wizard-plan.ts +25 -4
- package/src/scripts/_cli/_doctor_emit.ts +24 -0
- package/src/scripts/_cli/cmd_brand_status.ts +223 -12
- package/src/scripts/_cli/cmd_ci_settle.ts +32 -0
- package/src/scripts/_cli/cmd_doctor.ts +23 -44
- package/src/scripts/_cli/cmd_route_explain.ts +176 -2
- package/src/scripts/_cli/cmd_uninstall.ts +270 -26
- package/src/scripts/_cli/cmd_update.ts +34 -1
- package/src/scripts/_cli/cmd_upgrade.ts +38 -2
- package/src/scripts/_cli/detection_report.ts +7 -0
- package/src/scripts/_cli/doctor_execution.ts +1 -2
- package/src/scripts/_cli/doctor_install_mode.ts +39 -0
- package/src/scripts/_cli/doctor_network_posture.ts +3 -3
- package/src/scripts/_cli/doctor_ownership_ledger.ts +126 -0
- package/src/scripts/_cli/doctor_update_verdict.ts +104 -0
- package/src/scripts/_cli/explain_last/scrubber.ts +9 -21
- package/src/scripts/_cli/upgrade_unattended.ts +548 -0
- package/src/scripts/_dispatch.bash +42 -9
- package/src/scripts/_lib/activation_ladder.ts +1 -1
- package/src/scripts/_lib/advisory_inventory.ts +405 -0
- package/src/scripts/_lib/advisory_notice.ts +270 -0
- package/src/scripts/_lib/advisory_sources.ts +752 -0
- package/src/scripts/_lib/advisory_verdicts.ts +363 -0
- package/src/scripts/_lib/agent_artifact_location.ts +177 -0
- package/src/scripts/_lib/agent_settings.ts +7 -12
- package/src/scripts/_lib/arrival_record.ts +217 -0
- package/src/scripts/_lib/asset_render_record.ts +247 -0
- package/src/scripts/_lib/billing_grant.ts +4 -2
- package/src/scripts/_lib/brand_voice_slot.ts +258 -0
- package/src/scripts/_lib/canary_status.ts +24 -0
- package/src/scripts/_lib/cc_transcript.ts +276 -0
- package/src/scripts/_lib/changelog_eras.ts +83 -0
- package/src/scripts/_lib/claim_phrases.ts +71 -0
- package/src/scripts/_lib/classify_update.ts +171 -0
- package/src/scripts/_lib/claude_builtin_names.ts +9 -4
- package/src/scripts/_lib/claude_hook_scope.ts +195 -0
- package/src/scripts/_lib/claude_settings_hooks.ts +118 -34
- package/src/scripts/_lib/codex_resident_set.ts +460 -0
- package/src/scripts/_lib/codex_skill_finder.ts +225 -0
- package/src/scripts/_lib/confusables.ts +19 -0
- package/src/scripts/_lib/consumer_impact.ts +199 -0
- package/src/scripts/_lib/content_class.ts +127 -0
- package/src/scripts/_lib/counted_probe.ts +68 -1
- package/src/scripts/_lib/credential_deny_rows.ts +151 -0
- package/src/scripts/_lib/credential_files.ts +367 -0
- package/src/scripts/_lib/delivery_arm_experiment.ts +2 -2
- package/src/scripts/_lib/depth_flip.ts +141 -0
- package/src/scripts/_lib/design_lock.ts +117 -0
- package/src/scripts/_lib/design_sync_ledger.ts +142 -0
- package/src/scripts/_lib/design_sync_plan.ts +177 -0
- package/src/scripts/_lib/design_sync_reconcile.ts +159 -0
- package/src/scripts/_lib/design_sync_verify.ts +99 -0
- package/src/scripts/_lib/design_system_claude_design.ts +323 -0
- package/src/scripts/_lib/design_system_import.ts +84 -6
- package/src/scripts/_lib/dispatch_import_closure.ts +42 -11
- package/src/scripts/_lib/egress_credential_env.ts +35 -0
- package/src/scripts/_lib/egress_engine.ts +22 -0
- package/src/scripts/_lib/egress_known_values.ts +223 -0
- package/src/scripts/_lib/egress_normalize.ts +67 -0
- package/src/scripts/_lib/egress_prefixes.ts +42 -0
- package/src/scripts/_lib/egress_rules.ts +896 -0
- package/src/scripts/_lib/egress_rules_linearity.ts +56 -0
- package/src/scripts/_lib/egress_sender_scan.ts +290 -0
- package/src/scripts/_lib/egress_session_table.ts +510 -0
- package/src/scripts/_lib/egress_text.ts +63 -0
- package/src/scripts/_lib/egress_token.ts +252 -0
- package/src/scripts/_lib/empty_cycles.ts +1 -1
- package/src/scripts/_lib/environment_detector.ts +45 -30
- package/src/scripts/_lib/exemption_shape.ts +75 -1
- package/src/scripts/_lib/floor_posture.ts +185 -0
- package/src/scripts/_lib/forge_protection.ts +140 -2
- package/src/scripts/_lib/global_deploy_inventory.ts +159 -6
- package/src/scripts/_lib/guidelines_lane.ts +12 -1
- package/src/scripts/_lib/hand_kinds.ts +65 -0
- package/src/scripts/_lib/headless_invocation.ts +3 -3
- package/src/scripts/_lib/host_capability.ts +34 -2
- package/src/scripts/_lib/host_env_write.ts +39 -18
- package/src/scripts/_lib/host_listing_model.ts +14 -7
- package/src/scripts/_lib/identifier_redaction.ts +26 -0
- package/src/scripts/_lib/impact_bump.ts +70 -0
- package/src/scripts/_lib/install_reach_checks.ts +53 -1
- package/src/scripts/_lib/installed_layer.ts +31 -0
- package/src/scripts/_lib/installed_layer_normalise.ts +75 -0
- package/src/scripts/_lib/instructions_loaded_classify.ts +75 -0
- package/src/scripts/_lib/instructions_loaded_event.ts +53 -0
- package/src/scripts/_lib/knowledge_global_redaction.ts +2 -2
- package/src/scripts/_lib/layer_form_corpus.ts +165 -0
- package/src/scripts/_lib/layer_form_decision.ts +248 -0
- package/src/scripts/_lib/layer_form_evidence.ts +112 -0
- package/src/scripts/_lib/lean_projection_mode.ts +32 -161
- package/src/scripts/_lib/llm_proposer_transport.ts +1 -0
- package/src/scripts/_lib/loop_guards.ts +8 -120
- package/src/scripts/_lib/major_surface.ts +207 -0
- package/src/scripts/_lib/mcp_bridge.ts +30 -69
- package/src/scripts/_lib/merge_clearance_record.ts +384 -0
- package/src/scripts/_lib/neighbour_census.ts +18 -1
- package/src/scripts/_lib/orchestration_record.ts +61 -0
- package/src/scripts/_lib/outcome_vocabularies.ts +15 -23
- package/src/scripts/_lib/pin_advice.ts +49 -0
- package/src/scripts/_lib/platform_anchor.ts +222 -0
- package/src/scripts/_lib/procedure_checks.ts +5 -0
- package/src/scripts/_lib/project_tree_form.ts +134 -0
- package/src/scripts/_lib/projection_key_migration.ts +122 -0
- package/src/scripts/_lib/prompt_shape.ts +13 -2
- package/src/scripts/_lib/provenance_verify.ts +272 -0
- package/src/scripts/_lib/quota_parked.ts +27 -1
- package/src/scripts/_lib/ratification_artifact.ts +64 -1
- package/src/scripts/_lib/ratification_subject.ts +508 -46
- package/src/scripts/_lib/release_findings_ingest.ts +52 -5
- package/src/scripts/_lib/release_highlights.ts +72 -2
- package/src/scripts/_lib/release_settings_surface.ts +392 -0
- package/src/scripts/_lib/review_round.ts +134 -0
- package/src/scripts/_lib/roadmap_checkboxes.ts +1 -1
- package/src/scripts/_lib/roadmap_slug_lock.ts +254 -0
- package/src/scripts/_lib/roadmap_step_size.ts +75 -0
- package/src/scripts/_lib/run_checkpoint.ts +60 -3
- package/src/scripts/_lib/runtime_wiring_checks.ts +15 -1
- package/src/scripts/_lib/scope_guard.sh +64 -5
- package/src/scripts/_lib/scoped_projection.ts +136 -3
- package/src/scripts/_lib/secret_detector.ts +24 -103
- package/src/scripts/_lib/security_fix.ts +429 -0
- package/src/scripts/_lib/security_fix_context.ts +133 -0
- package/src/scripts/_lib/self_repair.ts +69 -39
- package/src/scripts/_lib/self_repair_outgoing.ts +209 -0
- package/src/scripts/_lib/self_repair_payload.ts +86 -0
- package/src/scripts/_lib/session_eol.ts +3 -0
- package/src/scripts/_lib/session_pr_watch.ts +207 -0
- package/src/scripts/_lib/session_register.ts +51 -1
- package/src/scripts/_lib/session_tag.ts +51 -0
- package/src/scripts/_lib/settings_removed_keys.ts +30 -0
- package/src/scripts/_lib/settings_renamed_keys.ts +19 -5
- package/src/scripts/_lib/skill_catalogue.ts +66 -25
- package/src/scripts/_lib/skill_fork_pilot.ts +121 -0
- package/src/scripts/_lib/skill_leases.ts +203 -0
- package/src/scripts/_lib/skill_listing_overrides.ts +294 -0
- package/src/scripts/_lib/skill_materialisation.ts +388 -0
- package/src/scripts/_lib/skill_materialisation_gate.ts +210 -0
- package/src/scripts/_lib/skill_materialisation_lock.ts +149 -0
- package/src/scripts/_lib/skill_materialisation_triggers.ts +96 -0
- package/src/scripts/_lib/skill_origin.ts +21 -1
- package/src/scripts/_lib/skill_reach.ts +342 -0
- package/src/scripts/_lib/source_shape.ts +7 -2
- package/src/scripts/_lib/sqlite_guard.ts +1 -1
- package/src/scripts/_lib/step_anatomy.ts +330 -0
- package/src/scripts/_lib/subagent_capsule.ts +8 -2
- package/src/scripts/_lib/subagent_native_fields.ts +30 -0
- package/src/scripts/_lib/subagent_spawn.ts +36 -0
- package/src/scripts/_lib/subagent_steering.ts +367 -0
- package/src/scripts/_lib/svg_filled_counter.ts +287 -0
- package/src/scripts/_lib/svg_rules.ts +2 -0
- package/src/scripts/_lib/test_delta.ts +89 -6
- package/src/scripts/_lib/tier_downshift_verdict.ts +222 -0
- package/src/scripts/_lib/tool_result_census.ts +62 -0
- package/src/scripts/_lib/trigger_routers.ts +1 -0
- package/src/scripts/_lib/turnaround_throughput.ts +378 -0
- package/src/scripts/_lib/ui_surface.ts +22 -0
- package/src/scripts/_lib/unattended_gates.ts +100 -0
- package/src/scripts/_lib/undeployed_fixes.ts +34 -0
- package/src/scripts/_lib/update_check.ts +143 -12
- package/src/scripts/_lib/update_invite.ts +116 -0
- package/src/scripts/_lib/update_notice.ts +259 -0
- package/src/scripts/_lib/verify_clause.ts +4 -2
- package/src/scripts/_lib/version_order.ts +146 -0
- package/src/scripts/_lib/worker_reuse.ts +191 -0
- package/src/scripts/_lib/workspace_secrets.ts +273 -0
- package/src/scripts/_lib/worktree_git.ts +67 -0
- package/src/scripts/_lib/worktree_ignored.ts +116 -0
- package/src/scripts/adoption_status.ts +330 -3
- package/src/scripts/adr_cite_check.ts +93 -0
- package/src/scripts/advisories.ts +803 -0
- package/src/scripts/ai-image/adapters/flux.sh +1 -0
- package/src/scripts/ai-image/adapters/gemini-image.sh +1 -0
- package/src/scripts/ai-image/adapters/ideogram.sh +1 -0
- package/src/scripts/ai-image/adapters/recraft.sh +1 -0
- package/src/scripts/ai-video/adapters/comfyui.sh +1 -0
- package/src/scripts/ai-video/adapters/fal.sh +1 -0
- package/src/scripts/ai-video/adapters/gemini-veo.sh +1 -0
- package/src/scripts/ai-video/adapters/higgsfield.sh +1 -0
- package/src/scripts/ai-video/adapters/kling.sh +1 -0
- package/src/scripts/ai-video/adapters/musetalk.sh +1 -0
- package/src/scripts/ai-video/adapters/openai-images.sh +1 -0
- package/src/scripts/ai-video/adapters/replicate.sh +1 -0
- package/src/scripts/ai-video/adapters/sora.sh +1 -0
- package/src/scripts/ai-video/adapters/syncso.sh +1 -0
- package/src/scripts/ai-video/stitch.sh +115 -2
- package/src/scripts/ai_council/airgap.ts +1 -0
- package/src/scripts/ai_council/api_transport.ts +27 -4
- package/src/scripts/ai_council/budget_guard.ts +300 -11
- package/src/scripts/ai_council/bundler.ts +20 -29
- package/src/scripts/ai_council/chairman.ts +17 -2
- package/src/scripts/ai_council/cli_agency_bounds.ts +158 -0
- package/src/scripts/ai_council/cli_launch_env.ts +54 -0
- package/src/scripts/ai_council/cli_least_agency_canary.ts +18 -2
- package/src/scripts/ai_council/clients.ts +55 -73
- package/src/scripts/ai_council/config.ts +16 -22
- package/src/scripts/ai_council/council_egress.ts +167 -0
- package/src/scripts/ai_council/exposure_ledger.ts +117 -0
- package/src/scripts/ai_council/free_hand_shadow.ts +276 -0
- package/src/scripts/ai_council/free_route.ts +216 -0
- package/src/scripts/ai_council/free_route_catalog.ts +173 -0
- package/src/scripts/ai_council/free_route_client.ts +95 -0
- package/src/scripts/ai_council/free_rung.ts +61 -0
- package/src/scripts/ai_council/hand_payload.ts +230 -0
- package/src/scripts/ai_council/hand_schemas.ts +123 -0
- package/src/scripts/ai_council/jury_aggregate.ts +155 -1
- package/src/scripts/ai_council/kind_flip.ts +221 -0
- package/src/scripts/ai_council/kind_flip_state.ts +19 -0
- package/src/scripts/ai_council/learn_low_impact_preview.ts +50 -22
- package/src/scripts/ai_council/modification_review.ts +98 -5
- package/src/scripts/ai_council/necessity.ts +7 -0
- package/src/scripts/ai_council/orchestrator.ts +16 -16
- package/src/scripts/ai_council/pricing.ts +10 -0
- package/src/scripts/ai_council/redact_low_impact_entry.ts +5 -2
- package/src/scripts/ai_council/response_render.ts +27 -4
- package/src/scripts/ai_council/round_reservations.ts +119 -0
- package/src/scripts/ai_council/route_chooser.ts +161 -0
- package/src/scripts/ai_council/route_liveness.ts +152 -0
- package/src/scripts/ai_council/route_member.ts +52 -0
- package/src/scripts/ai_council/seat_policy.ts +40 -0
- package/src/scripts/ai_council/seat_resume.ts +40 -0
- package/src/scripts/ai_council/shadow_dispatch.ts +13 -3
- package/src/scripts/ai_council/spend_gate.ts +18 -2
- package/src/scripts/ai_council/status_surface.ts +37 -0
- package/src/scripts/ai_council/transport_resolver.ts +15 -18
- package/src/scripts/analysis_analysts.ts +226 -0
- package/src/scripts/analysis_anchors.ts +140 -0
- package/src/scripts/analysis_and_optimize.ts +44 -0
- package/src/scripts/analysis_emit.ts +150 -0
- package/src/scripts/analysis_exchange.ts +186 -0
- package/src/scripts/analysis_gate.ts +158 -0
- package/src/scripts/analysis_inbox_final.ts +173 -0
- package/src/scripts/analysis_ledger.ts +119 -0
- package/src/scripts/analysis_pr_optimize.ts +219 -0
- package/src/scripts/analysis_pr_review.ts +240 -0
- package/src/scripts/analysis_pr_target.ts +121 -0
- package/src/scripts/analysis_prompts.ts +130 -0
- package/src/scripts/analysis_publish.ts +358 -0
- package/src/scripts/analysis_questions.ts +78 -0
- package/src/scripts/analysis_run.ts +248 -0
- package/src/scripts/analysis_run_record.ts +210 -0
- package/src/scripts/analysis_target.ts +343 -0
- package/src/scripts/analysis_validate.ts +161 -0
- package/src/scripts/anchor_eval_falsify.ts +1 -1
- package/src/scripts/arrival_report.ts +115 -0
- package/src/scripts/ask_transport.ts +284 -35
- package/src/scripts/backfill_model_tier.ts +4 -5
- package/src/scripts/before_complete_hook.ts +48 -2
- package/src/scripts/bench_hook_latency.ts +3 -3
- package/src/scripts/bench_procedure_cursor.ts +440 -0
- package/src/scripts/bootstrap.sh +3 -3
- package/src/scripts/build_exit_code_register.ts +440 -0
- package/src/scripts/build_proof.ts +23 -1
- package/src/scripts/cache_realization_report.ts +155 -14
- package/src/scripts/canary_liveness.ts +117 -0
- package/src/scripts/chat_history.ts +12 -15
- package/src/scripts/check_account_surface.ts +318 -0
- package/src/scripts/check_agent_artifact_location.ts +17 -160
- package/src/scripts/check_bundle_path_leakage.ts +6 -0
- package/src/scripts/check_ci_local_parity.ts +21 -13
- package/src/scripts/check_claims.ts +77 -2
- package/src/scripts/check_completion_review.ts +34 -1
- package/src/scripts/check_concern_admissions.ts +41 -5
- package/src/scripts/check_consumer_scope_flip.ts +1 -1
- package/src/scripts/check_context_paths.ts +2 -0
- package/src/scripts/check_council_layout.ts +9 -0
- package/src/scripts/check_credential_spelling.ts +267 -0
- package/src/scripts/check_egress_mutations.ts +239 -0
- package/src/scripts/check_enforcement_coverage.ts +16 -3
- package/src/scripts/check_estate_count.ts +16 -1
- package/src/scripts/check_finding_dispositions.ts +147 -0
- package/src/scripts/check_gate_coverage.ts +123 -21
- package/src/scripts/check_gate_reachability.ts +16 -2
- package/src/scripts/check_generator_sync.ts +46 -0
- package/src/scripts/check_hook_bundle_composition.ts +139 -1
- package/src/scripts/check_host_docs_digest.ts +142 -5
- package/src/scripts/check_kernel_edit_ratified.ts +301 -76
- package/src/scripts/check_kernel_rule_bundle.ts +14 -10
- package/src/scripts/check_knowledge_cards.ts +83 -3
- package/src/scripts/check_memory.ts +13 -3
- package/src/scripts/check_pack_size.ts +1 -1
- package/src/scripts/check_permission_deny_syntax.ts +247 -0
- package/src/scripts/check_platform_anchor.ts +243 -0
- package/src/scripts/check_proposal.ts +183 -1
- package/src/scripts/check_reach_channels.ts +5 -3
- package/src/scripts/check_references.ts +5 -2
- package/src/scripts/check_release_manifest_content.ts +33 -0
- package/src/scripts/check_release_pr_shape.ts +5 -0
- package/src/scripts/check_rule_invariants.ts +9 -1
- package/src/scripts/check_skill_body_budget.ts +343 -0
- package/src/scripts/check_skill_requires.ts +137 -1
- package/src/scripts/check_step_receipts.ts +246 -0
- package/src/scripts/check_structural_breaking.ts +7 -1
- package/src/scripts/check_suppression_hygiene.ts +8 -0
- package/src/scripts/check_test_weakening.ts +14 -0
- package/src/scripts/check_token_quality_golden.ts +5 -1
- package/src/scripts/check_update_banner.ts +50 -3
- package/src/scripts/check_verify_expectation_delta.ts +2 -1
- package/src/scripts/check_voice_lexicon.ts +531 -0
- package/src/scripts/ci_os_attribution.ts +327 -0
- package/src/scripts/ci_platform_scope.ts +69 -0
- package/src/scripts/ci_settle.ts +4 -1
- package/src/scripts/ci_status.ts +0 -1
- package/src/scripts/ci_time_to_green.ts +748 -0
- package/src/scripts/classify_merge_risk.ts +407 -19
- package/src/scripts/code_graph/sqlite_store.ts +1 -1
- package/src/scripts/compile_trigger_evals.ts +353 -0
- package/src/scripts/condense.ts +25 -31
- package/src/scripts/consumer_matrix.ts +61 -3
- package/src/scripts/council_availability_hook.ts +12 -4
- package/src/scripts/council_cli.ts +48 -38
- package/src/scripts/cross_repo_retrieve.ts +9 -72
- package/src/scripts/design_lock.ts +106 -0
- package/src/scripts/design_slop_rules.ts +30 -0
- package/src/scripts/design_sync.ts +264 -0
- package/src/scripts/design_system_import.ts +30 -13
- package/src/scripts/dispatch_economy_report.ts +46 -1
- package/src/scripts/dispatch_r2_reviewer.ts +41 -5
- package/src/scripts/egress_canary.ts +166 -0
- package/src/scripts/egress_sender_census.ts +101 -0
- package/src/scripts/external_sources_denylist.json +94 -12
- package/src/scripts/generate_catalog.ts +6 -2
- package/src/scripts/generate_owned_digest.ts +163 -0
- package/src/scripts/generate_reference_toc.ts +143 -0
- package/src/scripts/generate_subagent_floor.ts +11 -1
- package/src/scripts/handoff_context_hook.ts +34 -0
- package/src/scripts/hook_carrier_census.ts +263 -0
- package/src/scripts/hook_chunks.d.mts +12 -0
- package/src/scripts/hook_chunks.mjs +114 -0
- package/src/scripts/hook_manifest.json +1 -1
- package/src/scripts/hook_manifest.yaml +65 -42
- package/src/scripts/hooks/block_config_weakening.ts +127 -3
- package/src/scripts/hooks/block_credential_reads.ts +165 -0
- package/src/scripts/hooks/block_no_verify.ts +47 -23
- package/src/scripts/hooks/block_speaking_inbox_dir.ts +38 -7
- package/src/scripts/hooks/category_a.ts +202 -25
- package/src/scripts/hooks/concern_failure_policy.ts +6 -6
- package/src/scripts/hooks/concern_registry.ts +31 -6
- package/src/scripts/hooks/concern_registry_types.ts +11 -0
- package/src/scripts/hooks/delegation_nudge_hook.ts +105 -15
- package/src/scripts/hooks/design_pass_hook.ts +42 -10
- package/src/scripts/hooks/dispatch_hook.ts +13 -12
- package/src/scripts/hooks/egress_engine_loader.ts +125 -0
- package/src/scripts/hooks/egress_stage.ts +440 -0
- package/src/scripts/hooks/hook_stdin.ts +29 -4
- package/src/scripts/hooks/host_docs_pages.ts +194 -0
- package/src/scripts/hooks/host_docs_pages.yaml +75 -0
- package/src/scripts/hooks/host_lowering.json +1 -1
- package/src/scripts/hooks/host_lowering.yaml +22 -21
- package/src/scripts/hooks/host_rate_marker_hook.ts +73 -0
- package/src/scripts/hooks/instructions_observer_hook.ts +170 -0
- package/src/scripts/hooks/interruption_ledger_hook.ts +1 -1
- package/src/scripts/hooks/lazy_concern.ts +148 -0
- package/src/scripts/hooks/orchestration_record_hook.ts +80 -2
- package/src/scripts/hooks/payload_stub.ts +16 -6
- package/src/scripts/hooks/permission_gate.ts +7 -7
- package/src/scripts/hooks/push_settle_hook.ts +32 -3
- package/src/scripts/hooks/replay_hook.ts +43 -0
- package/src/scripts/hooks/reread_guard_hook.ts +87 -10
- package/src/scripts/hooks/rtk_wrap_hook.ts +4 -3
- package/src/scripts/hooks/rule_inject_hook.ts +8 -1
- package/src/scripts/hooks/session_eol_hook.ts +48 -1
- package/src/scripts/hooks/source_first_gate_hook.ts +6 -8
- package/src/scripts/hooks/spawn_guard_shadow_hook.ts +203 -10
- package/src/scripts/hooks/state_io.ts +2 -2
- package/src/scripts/hooks/svg_obligation.ts +75 -19
- package/src/scripts/hooks/tool_result_bytes_hook.ts +14 -5
- package/src/scripts/hooks/turn_end_gate_hook.ts +1 -1
- package/src/scripts/hooks/ui_route_nudge_hook.ts +2 -12
- package/src/scripts/hooks_doctor.ts +31 -0
- package/src/scripts/hooks_status.ts +58 -3
- package/src/scripts/inbox_source_census.ts +74 -13
- package/src/scripts/install +25 -3
- package/src/scripts/install.ts +60 -91
- package/src/scripts/interruption_report.ts +11 -1
- package/src/scripts/layer_baseline_report.ts +267 -0
- package/src/scripts/learning_sidecar.ts +1 -1
- package/src/scripts/lint_agents_layout.ts +3 -0
- package/src/scripts/lint_blocker_citations.ts +104 -0
- package/src/scripts/lint_breaking_changes_index.ts +40 -7
- package/src/scripts/lint_consolidation_lineage.ts +144 -16
- package/src/scripts/lint_consumer_internal_refs.ts +90 -42
- package/src/scripts/lint_context_spine_usage.ts +21 -0
- package/src/scripts/lint_design_antipattern_parity.ts +39 -7
- package/src/scripts/lint_evidence_artifacts.ts +31 -0
- package/src/scripts/lint_example_fences.ts +11 -2
- package/src/scripts/lint_ghostwriter_source.ts +42 -10
- package/src/scripts/lint_hook_manifest.ts +94 -0
- package/src/scripts/lint_marketplace_install_completeness.ts +4 -0
- package/src/scripts/lint_mcp_config_security.ts +9 -11
- package/src/scripts/lint_plan_risk_register.ts +28 -1
- package/src/scripts/lint_positioning.ts +4 -4
- package/src/scripts/lint_provenance.ts +1 -0
- package/src/scripts/lint_roadmap_blockers.ts +65 -4
- package/src/scripts/lint_roadmap_complexity.ts +98 -0
- package/src/scripts/lint_skill_link_reach.ts +251 -9
- package/src/scripts/lint_skill_procedures.ts +252 -0
- package/src/scripts/lint_skill_scripts_readonly.ts +12 -1
- package/src/scripts/lint_subagent_determinism.ts +14 -1
- package/src/scripts/lint_ticked_unmet_criteria.ts +300 -21
- package/src/scripts/mcp_registry_submit.sh +2 -2
- package/src/scripts/mcp_server/consumer_tool_catalog.json +4 -4
- package/src/scripts/mcp_server/suggest_skill.ts +89 -4
- package/src/scripts/mcp_server/tools.ts +2 -33
- package/src/scripts/measure_skill_ranker_baseline.ts +203 -5
- package/src/scripts/measure_turn_end_gate.ts +61 -1
- package/src/scripts/merge_clearance.ts +225 -0
- package/src/scripts/migrate_command_suggestions.ts +1 -1
- package/src/scripts/network_sources.ts +236 -0
- package/src/scripts/no_go_deny_rows.ts +225 -0
- package/src/scripts/orchestration_record.ts +15 -2
- package/src/scripts/plan_test_shards.ts +103 -0
- package/src/scripts/pr_url_reminder_hook.ts +10 -0
- package/src/scripts/print_required_checks.ts +5 -5
- package/src/scripts/probe_depth_shadow.ts +406 -0
- package/src/scripts/probe_turnaround.ts +342 -10
- package/src/scripts/ratification_subject.ts +176 -0
- package/src/scripts/rdp_gate_classify.ts +1 -0
- package/src/scripts/rdp_quality_eval.ts +1 -0
- package/src/scripts/release.ts +26 -55
- package/src/scripts/release_drill.ts +52 -23
- package/src/scripts/release_env.ts +37 -0
- package/src/scripts/release_publication.ts +11 -1
- package/src/scripts/report_consumer_gate_reach.ts +233 -0
- package/src/scripts/report_merge_gate_load.ts +295 -0
- package/src/scripts/report_project_contract.ts +123 -0
- package/src/scripts/report_reducible_classes.ts +342 -0
- package/src/scripts/report_required_checks_drift.ts +5 -3
- package/src/scripts/report_skill_host_census.ts +199 -0
- package/src/scripts/report_standing_payload_by_host.ts +7 -7
- package/src/scripts/retro.ts +758 -0
- package/src/scripts/retro_facts.ts +575 -0
- package/src/scripts/retro_queue.ts +739 -0
- package/src/scripts/retro_session_facts.ts +218 -0
- package/src/scripts/retro_sweep.ts +493 -0
- package/src/scripts/retro_triage.ts +126 -0
- package/src/scripts/roadmap_context.ts +2 -2
- package/src/scripts/roadmap_drain_queue.ts +601 -0
- package/src/scripts/run_supervise.ts +24 -2
- package/src/scripts/schemas/agent-settings.schema.json +0 -16
- package/src/scripts/schemas/command.schema.json +3 -3
- package/src/scripts/schemas/review-findings.schema.json +8 -0
- package/src/scripts/schemas/skill.schema.json +7 -6
- package/src/scripts/schemas/subagent.schema.json +33 -2
- package/src/scripts/score_skill_selection.ts +5 -2
- package/src/scripts/second_brain_retrieval.ts +1 -0
- package/src/scripts/second_brain_run.ts +1 -0
- package/src/scripts/self_repair_cli.ts +563 -87
- package/src/scripts/self_review_gate.ts +59 -4
- package/src/scripts/session_register_hook.ts +91 -4
- package/src/scripts/sessions_cli.ts +100 -5
- package/src/scripts/skill_collision_clusters.ts +1 -1
- package/src/scripts/skill_tools/score_skill_relevance.ts +31 -2
- package/src/scripts/skill_trigger_eval.ts +4 -2
- package/src/scripts/source_adapters.ts +183 -0
- package/src/scripts/step_receipt.ts +100 -0
- package/src/scripts/sync_pr_branch.ts +4 -0
- package/src/scripts/test_council_qualification.ts +1 -1
- package/src/scripts/trigger_eval_grandfather.json +3 -49
- package/src/scripts/trigger_eval_rotation.ts +31 -3
- package/src/scripts/ui_conformance_probe.ts +405 -1
- package/src/scripts/update_counts.ts +230 -11
- package/src/scripts/update_invite_hook.ts +245 -0
- package/src/scripts/update_notice_hook.ts +298 -0
- package/src/scripts/validate_frontmatter.ts +85 -0
- package/src/scripts/worker_reuse_shadow_report.ts +121 -0
- package/src/scripts/worktree_cleanup_check.ts +915 -121
- package/src/server/io/yamlIO.ts +2 -2
- package/src/server/schemas/settings.ts +37 -23
- package/src/shared/brandTokenDocument.ts +46 -0
- package/src/shared/brandTokenPaths.ts +43 -0
- package/src/shared/settingsCarveOut.ts +0 -8
- package/src/shared/skillRanking.ts +106 -5
- package/src/shared/userMd/formAdapter.ts +15 -1
- package/src/shared/userMd/schema.ts +22 -0
- package/src/templates/agent-user.md +4 -0
- package/src/templates/agent-user.yml +4 -0
- package/dist/cli-delegate/chunk-4DBG5K7M.js +0 -1123
- package/dist/cli-delegate/chunk-523HCFYO.js +0 -90
- package/dist/cli-delegate/chunk-AL3RZ22D.js +0 -74
- package/dist/cli-delegate/chunk-KB5FZ655.js +0 -208
- package/dist/cli-delegate/chunk-MDPPKQCQ.js +0 -875
- package/dist/cli-delegate/chunk-OAFSJBHH.js +0 -272
- package/dist/ui/assets/index-C3djEJah.js +0 -23
- package/src/scripts/_lib/continuation_ladder.ts +0 -335
- package/src/scripts/hooks/run_continuation_hook.ts +0 -1524
|
@@ -124,6 +124,164 @@ export function boundFor(member: string): readonly string[] {
|
|
|
124
124
|
return AGENCY_BOUNDS.find((b) => b.member === member)?.bound ?? [];
|
|
125
125
|
}
|
|
126
126
|
|
|
127
|
+
/**
|
|
128
|
+
* The read-only ANALYST profile (ADR-288 D8) — a separate class from the seat
|
|
129
|
+
* bound above, which stays an oracle bound. An analyst reads the scope it is
|
|
130
|
+
* spawned in and writes nothing; the seat bound is not widened to get there.
|
|
131
|
+
*
|
|
132
|
+
* Probed 2026-10-18 in a throwaway directory holding one fact file: each bound
|
|
133
|
+
* binary was asked to print the fact and then create a sentinel file. A bound
|
|
134
|
+
* is recorded only where the fact came back AND the sentinel was absent.
|
|
135
|
+
*/
|
|
136
|
+
export interface AnalystBound {
|
|
137
|
+
readonly member: string;
|
|
138
|
+
readonly binary: string;
|
|
139
|
+
/** The argv fragment of the read-only analyst profile. Empty = refused. */
|
|
140
|
+
readonly bound: readonly string[];
|
|
141
|
+
/** `stdin` where a variadic flag in `bound` would swallow a positional prompt. */
|
|
142
|
+
readonly prompt_via: 'stdin' | 'argv';
|
|
143
|
+
readonly probed_version: string | null;
|
|
144
|
+
readonly probed_on: string | null;
|
|
145
|
+
readonly rationale: string;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
export const ANALYST_BOUNDS: readonly AnalystBound[] = [
|
|
149
|
+
{
|
|
150
|
+
member: 'anthropic',
|
|
151
|
+
binary: 'claude',
|
|
152
|
+
bound: ['--tools', 'Read,Grep,Glob'],
|
|
153
|
+
prompt_via: 'stdin',
|
|
154
|
+
probed_version: '2.1.302 (Claude Code)',
|
|
155
|
+
probed_on: '2026-10-18',
|
|
156
|
+
rationale:
|
|
157
|
+
'Read, Grep and Glob are the read half of the built-in tool set; no Bash, Edit, Write or WebFetch. Probe: ' +
|
|
158
|
+
'the fact came back, the sentinel was refused ("no tool that writes local files"). `--tools` is variadic ' +
|
|
159
|
+
'and swallowed a positional prompt in the same probe, so the prompt goes on stdin.',
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
member: 'openai',
|
|
163
|
+
binary: 'codex',
|
|
164
|
+
bound: ['--sandbox', 'read-only'],
|
|
165
|
+
prompt_via: 'argv',
|
|
166
|
+
probed_version: 'codex-cli 0.148.0',
|
|
167
|
+
probed_on: '2026-10-18',
|
|
168
|
+
rationale:
|
|
169
|
+
'The same flag as the seat bound, because `read-only` already permits reading the workspace and forbids ' +
|
|
170
|
+
'writing it. Probe: the fact came back, the sentinel was refused ("the workspace is read-only").',
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
member: 'gemini',
|
|
174
|
+
binary: 'gemini',
|
|
175
|
+
bound: [],
|
|
176
|
+
prompt_via: 'argv',
|
|
177
|
+
probed_version: '0.50.0',
|
|
178
|
+
probed_on: '2026-10-18',
|
|
179
|
+
rationale:
|
|
180
|
+
'refused — the 2026-10-18 probe printed "Approval mode overridden to \\"default\\" because the current ' +
|
|
181
|
+
'folder is not trusted": the `plan` bound is silently dropped in an untrusted directory, and the client was ' +
|
|
182
|
+
'refused by its service. A bound the binary can override is not a bound.',
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
member: 'xai',
|
|
186
|
+
binary: 'grok',
|
|
187
|
+
bound: [],
|
|
188
|
+
prompt_via: 'argv',
|
|
189
|
+
probed_version: null,
|
|
190
|
+
probed_on: null,
|
|
191
|
+
rationale: 'not-probed — binary absent on the probing machine.',
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
member: 'perplexity',
|
|
195
|
+
binary: 'perplexity',
|
|
196
|
+
bound: [],
|
|
197
|
+
prompt_via: 'argv',
|
|
198
|
+
probed_version: null,
|
|
199
|
+
probed_on: null,
|
|
200
|
+
rationale: 'not-probed — binary absent on the probing machine.',
|
|
201
|
+
},
|
|
202
|
+
];
|
|
203
|
+
|
|
204
|
+
/** The analyst profile's argv fragment for a member, or `[]` when it was refused or never probed. */
|
|
205
|
+
export function analystBoundFor(member: string): readonly string[] {
|
|
206
|
+
return ANALYST_BOUNDS.find((b) => b.member === member)?.bound ?? [];
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* A lighter seat launch: a flag that keeps the subscription login but skips the
|
|
211
|
+
* user environment (instruction files, user rules, hooks, plugins, MCP) a seat
|
|
212
|
+
* never needs. A seat booting that environment pays it on every call and every
|
|
213
|
+
* round.
|
|
214
|
+
*
|
|
215
|
+
* Each row is one probe of one flag on one binary version, against the same
|
|
216
|
+
* seat argv without it. A version that was not probed gets no flag: the probe is
|
|
217
|
+
* the only evidence the binary accepts it and keeps the login.
|
|
218
|
+
*/
|
|
219
|
+
export interface LightLaunchProbe {
|
|
220
|
+
readonly member: string;
|
|
221
|
+
readonly binary: string;
|
|
222
|
+
readonly flag: readonly string[];
|
|
223
|
+
/** What that CLI's own `--version` printed on `probed_on`. */
|
|
224
|
+
readonly probed_version: string;
|
|
225
|
+
readonly probed_on: string;
|
|
226
|
+
/** First-call input tokens (uncached + cache write + cache read) with the flag. */
|
|
227
|
+
readonly first_call_tokens: number;
|
|
228
|
+
/** The same seat argv and question without the flag, same run. */
|
|
229
|
+
readonly baseline_first_call_tokens: number;
|
|
230
|
+
/** Whether the probe question saw a rule from `~/.claude/rules`. */
|
|
231
|
+
readonly user_rules_loaded: boolean;
|
|
232
|
+
/** The call answered with no API key in the environment. */
|
|
233
|
+
readonly keeps_subscription_login: boolean;
|
|
234
|
+
/** At most one row per member is the launch a seat uses. */
|
|
235
|
+
readonly selected: boolean;
|
|
236
|
+
readonly rationale: string;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
export const LIGHT_LAUNCH_PROBES: readonly LightLaunchProbe[] = [
|
|
240
|
+
{
|
|
241
|
+
member: 'anthropic',
|
|
242
|
+
binary: 'claude',
|
|
243
|
+
flag: ['--safe-mode'],
|
|
244
|
+
probed_version: '2.1.308 (Claude Code)',
|
|
245
|
+
probed_on: '2026-10-22',
|
|
246
|
+
first_call_tokens: 2_790,
|
|
247
|
+
baseline_first_call_tokens: 145_587,
|
|
248
|
+
user_rules_loaded: false,
|
|
249
|
+
keeps_subscription_login: true,
|
|
250
|
+
selected: true,
|
|
251
|
+
rationale:
|
|
252
|
+
'Skips instruction files, hooks, plugins, MCP and auto memory while auth and the model stay. Chosen over ' +
|
|
253
|
+
'`--setting-sources` because a seat also has no use for hooks or plugins, and it answers the same question ' +
|
|
254
|
+
'from the same oracle argv (`--tools ""`).',
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
member: 'anthropic',
|
|
258
|
+
binary: 'claude',
|
|
259
|
+
flag: ['--setting-sources', 'project,local'],
|
|
260
|
+
probed_version: '2.1.308 (Claude Code)',
|
|
261
|
+
probed_on: '2026-10-22',
|
|
262
|
+
first_call_tokens: 3_548,
|
|
263
|
+
baseline_first_call_tokens: 145_587,
|
|
264
|
+
user_rules_loaded: false,
|
|
265
|
+
keeps_subscription_login: true,
|
|
266
|
+
selected: false,
|
|
267
|
+
rationale:
|
|
268
|
+
'Drops the user setting source and with it the user rule layer, but keeps project and local settings, so ' +
|
|
269
|
+
'project hooks and instructions still reach a seat spawned inside a repository.',
|
|
270
|
+
},
|
|
271
|
+
];
|
|
272
|
+
|
|
273
|
+
/**
|
|
274
|
+
* The light-launch flag a seat uses for this member on this binary version, or
|
|
275
|
+
* `[]` when that version was never probed.
|
|
276
|
+
*/
|
|
277
|
+
export function lightLaunchFor(member: string, version: string | null): readonly string[] {
|
|
278
|
+
if (version === null) return [];
|
|
279
|
+
const probe = LIGHT_LAUNCH_PROBES.find(
|
|
280
|
+
(p) => p.selected && p.member === member && p.probed_version === version.trim(),
|
|
281
|
+
);
|
|
282
|
+
return probe?.flag ?? [];
|
|
283
|
+
}
|
|
284
|
+
|
|
127
285
|
/**
|
|
128
286
|
* Documented flags that LIFT an agency bound.
|
|
129
287
|
*
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a CLI seat's launch reads from its environment: the session-wide
|
|
3
|
+
* subagent model ceiling and the vendor binary's version. Kept apart from
|
|
4
|
+
* `clients.ts`, which is past the source-size ceiling.
|
|
5
|
+
*/
|
|
6
|
+
import { spawnSync } from 'node:child_process';
|
|
7
|
+
|
|
8
|
+
import { load_agent_settings } from '../_lib/agent_settings.js';
|
|
9
|
+
|
|
10
|
+
// Session-wide subagent model ceiling (token-economy-dispatch Phase 5.2):
|
|
11
|
+
// class-C setting, default absent, HUMAN-set only. When present, the CLI
|
|
12
|
+
// spawn below exports CLAUDE_CODE_SUBAGENT_MODEL so the spawned vendor
|
|
13
|
+
// session caps its own subagents' models. Memoised PER CWD, not per
|
|
14
|
+
// process (review finding 2026-08-10): a long-lived server process may
|
|
15
|
+
// serve several projects, and a single-slot memo would apply project A's
|
|
16
|
+
// spend cap to project B's spawns. A human edit still needs a process
|
|
17
|
+
// restart to be seen — acceptable for a per-install cap, stated here.
|
|
18
|
+
const _modelCeilingMemo = new Map<string, string | null>();
|
|
19
|
+
export function _subagentModelCeiling(cwd: string = process.cwd()): string | null {
|
|
20
|
+
const hit = _modelCeilingMemo.get(cwd);
|
|
21
|
+
if (hit !== undefined) return hit;
|
|
22
|
+
let ceiling: string | null;
|
|
23
|
+
try {
|
|
24
|
+
const settings = load_agent_settings({ cwd }) as Record<string, unknown>;
|
|
25
|
+
const sub = (settings['subagents'] ?? {}) as Record<string, unknown>;
|
|
26
|
+
const v = typeof sub['model_ceiling'] === 'string' ? sub['model_ceiling'].trim() : '';
|
|
27
|
+
ceiling = v.length > 0 ? v : null;
|
|
28
|
+
} catch {
|
|
29
|
+
ceiling = null; // unreadable settings → no ceiling (fail-open)
|
|
30
|
+
}
|
|
31
|
+
_modelCeilingMemo.set(cwd, ceiling);
|
|
32
|
+
return ceiling;
|
|
33
|
+
}
|
|
34
|
+
/** Test seam: reset the per-cwd ceiling memo. */
|
|
35
|
+
export function _resetModelCeilingMemo(): void {
|
|
36
|
+
_modelCeilingMemo.clear();
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const _cliVersionCache = new Map<string, string | null>();
|
|
40
|
+
|
|
41
|
+
/** What `<binary> --version` prints, once per binary per process; null when it cannot run. */
|
|
42
|
+
export function _cliVersion(binary: string): string | null {
|
|
43
|
+
const cached = _cliVersionCache.get(binary);
|
|
44
|
+
if (cached !== undefined) return cached;
|
|
45
|
+
let version: string | null = null;
|
|
46
|
+
try {
|
|
47
|
+
const r = spawnSync(binary, ['--version'], { encoding: 'utf8', timeout: 10_000 });
|
|
48
|
+
if (r.status === 0 && typeof r.stdout === 'string') version = r.stdout.trim() || null;
|
|
49
|
+
} catch {
|
|
50
|
+
version = null;
|
|
51
|
+
}
|
|
52
|
+
_cliVersionCache.set(binary, version);
|
|
53
|
+
return version;
|
|
54
|
+
}
|
|
@@ -200,16 +200,27 @@ function runPhase(
|
|
|
200
200
|
if (dryRun) {
|
|
201
201
|
return { mutated: null, argv };
|
|
202
202
|
}
|
|
203
|
-
spawnSync(argv[0] as string, argv.slice(1), {
|
|
203
|
+
const r = spawnSync(argv[0] as string, argv.slice(1), {
|
|
204
204
|
input: probe.stdin ? prompt(sentinel) : undefined,
|
|
205
205
|
encoding: 'utf8',
|
|
206
206
|
timeout: 180_000,
|
|
207
|
+
// Node's 1 MiB default kills a child that logs more than that, before
|
|
208
|
+
// it could have mutated anything, and a bound phase would then read
|
|
209
|
+
// that as the bound holding.
|
|
210
|
+
maxBuffer: 64 * 1024 * 1024,
|
|
207
211
|
// The child runs in the disposable directory, so a relative-path
|
|
208
212
|
// interpretation of the prompt still lands inside the sandbox we watch.
|
|
209
213
|
cwd: dir,
|
|
210
214
|
});
|
|
211
215
|
// The oracle. Not the output, not a phrase — the file.
|
|
212
|
-
|
|
216
|
+
if (fs.existsSync(sentinel)) {
|
|
217
|
+
return { mutated: true, argv };
|
|
218
|
+
}
|
|
219
|
+
// No file from a child that never finished says nothing about the bound.
|
|
220
|
+
if (r.error !== undefined || r.signal !== null) {
|
|
221
|
+
return { mutated: null, argv };
|
|
222
|
+
}
|
|
223
|
+
return { mutated: false, argv };
|
|
213
224
|
}
|
|
214
225
|
|
|
215
226
|
export function probeMember(probe: Probe, dir: string, dryRun: boolean): MemberResult {
|
|
@@ -266,6 +277,11 @@ export function probeMember(probe: Probe, dir: string, dryRun: boolean): MemberR
|
|
|
266
277
|
'the CONTROL did not create the sentinel, so this run demonstrates nothing about the bound — ' +
|
|
267
278
|
'the member may be unable to write for an unrelated reason (auth, model refusal, an ambient default ' +
|
|
268
279
|
'more restrictive than the control value). Sharpen the control before reading this as a pass.';
|
|
280
|
+
} else if (bound1.mutated === null || bound2.mutated === null) {
|
|
281
|
+
verdict = 'inconclusive';
|
|
282
|
+
note =
|
|
283
|
+
'a bound phase ended without finishing (killed, timed out, or failed to spawn) and left no sentinel. ' +
|
|
284
|
+
'An interrupted child is not a refusal, so this run says nothing about the bound.';
|
|
269
285
|
} else if (bound1.mutated === false && bound2.mutated === false) {
|
|
270
286
|
verdict = 'pass';
|
|
271
287
|
note = 'bound blocked the mutation, control performed it, restoring the bound blocked it again';
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
// egress-content: session-content asserted — API seats post through api_transport.curlJsonPost and CLI seats pass councilEgress().check before the spawn; council rounds are replaced through the engine first
|
|
1
2
|
// External-AI clients for the council — ported from the retired Python
|
|
2
3
|
// `src/scripts/ai_council/clients.py` (ADR-200).
|
|
3
4
|
//
|
|
@@ -45,8 +46,13 @@ import * as fs from 'node:fs';
|
|
|
45
46
|
import * as os from 'node:os';
|
|
46
47
|
import * as path from 'node:path';
|
|
47
48
|
|
|
49
|
+
import { vendorPrefix } from '../_lib/egress_rules.js';
|
|
48
50
|
import { hardenedSpawnEnv } from '../_lib/spawn_env.js';
|
|
49
|
-
import { boundFor } from './cli_agency_bounds.js';
|
|
51
|
+
import { boundFor, lightLaunchFor } from './cli_agency_bounds.js';
|
|
52
|
+
import { _cliVersion, _subagentModelCeiling } from './cli_launch_env.js';
|
|
53
|
+
export { _resetModelCeilingMemo, _subagentModelCeiling } from './cli_launch_env.js';
|
|
54
|
+
import { resumeBound, seatResumeArgs, type SeatSession } from './seat_resume.js';
|
|
55
|
+
import { councilEgress } from './council_egress.js';
|
|
50
56
|
import {
|
|
51
57
|
curlJsonPost as _curlJsonPost,
|
|
52
58
|
geminiRestClient,
|
|
@@ -54,36 +60,7 @@ import {
|
|
|
54
60
|
type JsonPost,
|
|
55
61
|
} from './api_transport.js';
|
|
56
62
|
import { SESSION_ROLE_ENV } from '../_lib/session_role.js';
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
// Session-wide subagent model ceiling (token-economy-dispatch Phase 5.2):
|
|
60
|
-
// class-C setting, default absent, HUMAN-set only. When present, the CLI
|
|
61
|
-
// spawn below exports CLAUDE_CODE_SUBAGENT_MODEL so the spawned vendor
|
|
62
|
-
// session caps its own subagents' models. Memoised PER CWD, not per
|
|
63
|
-
// process (review finding 2026-08-10): a long-lived server process may
|
|
64
|
-
// serve several projects, and a single-slot memo would apply project A's
|
|
65
|
-
// spend cap to project B's spawns. A human edit still needs a process
|
|
66
|
-
// restart to be seen — acceptable for a per-install cap, stated here.
|
|
67
|
-
const _modelCeilingMemo = new Map<string, string | null>();
|
|
68
|
-
export function _subagentModelCeiling(cwd: string = process.cwd()): string | null {
|
|
69
|
-
const hit = _modelCeilingMemo.get(cwd);
|
|
70
|
-
if (hit !== undefined) return hit;
|
|
71
|
-
let ceiling: string | null;
|
|
72
|
-
try {
|
|
73
|
-
const settings = load_agent_settings({ cwd }) as Record<string, unknown>;
|
|
74
|
-
const sub = (settings['subagents'] ?? {}) as Record<string, unknown>;
|
|
75
|
-
const v = typeof sub['model_ceiling'] === 'string' ? sub['model_ceiling'].trim() : '';
|
|
76
|
-
ceiling = v.length > 0 ? v : null;
|
|
77
|
-
} catch {
|
|
78
|
-
ceiling = null; // unreadable settings → no ceiling (fail-open)
|
|
79
|
-
}
|
|
80
|
-
_modelCeilingMemo.set(cwd, ceiling);
|
|
81
|
-
return ceiling;
|
|
82
|
-
}
|
|
83
|
-
/** Test seam: reset the per-cwd ceiling memo. */
|
|
84
|
-
export function _resetModelCeilingMemo(): void {
|
|
85
|
-
_modelCeilingMemo.clear();
|
|
86
|
-
}
|
|
63
|
+
|
|
87
64
|
import * as user_global_paths from '../_lib/user_global_paths.js';
|
|
88
65
|
import { jsonDumpsIndent2 as _jsonDumpsIndent2 } from './_py_json.js';
|
|
89
66
|
import * as budget from './cli_call_budget.js';
|
|
@@ -363,12 +340,12 @@ function _loadKey(p: string, prefix: string, installScript: string): string {
|
|
|
363
340
|
|
|
364
341
|
export function load_anthropic_key(p: string | null = null): string {
|
|
365
342
|
const resolved = p !== null ? p : _resolveKeyPath(ANTHROPIC_KEY_FILENAME);
|
|
366
|
-
return _loadKey(resolved, '
|
|
343
|
+
return _loadKey(resolved, vendorPrefix('anthropic-api-key'), 'src/scripts/install_anthropic_key.sh');
|
|
367
344
|
}
|
|
368
345
|
|
|
369
346
|
export function load_openai_key(p: string | null = null): string {
|
|
370
347
|
const resolved = p !== null ? p : _resolveKeyPath(OPENAI_KEY_FILENAME);
|
|
371
|
-
return _loadKey(resolved, '
|
|
348
|
+
return _loadKey(resolved, vendorPrefix('openai-api-key'), 'src/scripts/install_openai_key.sh');
|
|
372
349
|
}
|
|
373
350
|
|
|
374
351
|
// ── attribute-access helpers (mirror Python getattr) ──────────────────
|
|
@@ -1212,14 +1189,16 @@ export abstract class CliClient extends ExternalAIClient {
|
|
|
1212
1189
|
protected _cli_calls_path: string | null;
|
|
1213
1190
|
/** Attribution label for every booking this client makes. */
|
|
1214
1191
|
protected _consumer: string;
|
|
1192
|
+
/** The session the last answered call ran in; `resumeNext` continues it once, non-blind only. */
|
|
1193
|
+
lastSession: SeatSession | null = null;
|
|
1194
|
+
resumeNext: SeatSession | null = null;
|
|
1215
1195
|
|
|
1216
1196
|
static _AUTH_FAILURE_PATTERNS: readonly string[] = [
|
|
1217
1197
|
'authentication',
|
|
1218
1198
|
'unauthorized',
|
|
1219
1199
|
'auth failed',
|
|
1220
1200
|
'auth_error',
|
|
1221
|
-
'login',
|
|
1222
|
-
'not logged in',
|
|
1201
|
+
'not logged in', 'please log in', 'login required',
|
|
1223
1202
|
'session expired',
|
|
1224
1203
|
'invalid credentials',
|
|
1225
1204
|
];
|
|
@@ -1310,6 +1289,10 @@ export abstract class CliClient extends ExternalAIClient {
|
|
|
1310
1289
|
}
|
|
1311
1290
|
}
|
|
1312
1291
|
|
|
1292
|
+
protected _cliFailure(latency_ms: number, error: string, metadata: Record<string, unknown>): CouncilResponse {
|
|
1293
|
+
return new CouncilResponse({ provider: this.name, model: this.model, text: '', latency_ms, error, metadata });
|
|
1294
|
+
}
|
|
1295
|
+
|
|
1313
1296
|
/**
|
|
1314
1297
|
* Refuse a call this transport cannot serve, BEFORE spawning.
|
|
1315
1298
|
*
|
|
@@ -1332,18 +1315,18 @@ export abstract class CliClient extends ExternalAIClient {
|
|
|
1332
1315
|
}
|
|
1333
1316
|
|
|
1334
1317
|
/**
|
|
1335
|
-
* Transport seam (default impl). Mirror
|
|
1336
|
-
*
|
|
1337
|
-
*
|
|
1338
|
-
*
|
|
1339
|
-
* historical contract requires. Tests override this to inject canned output without
|
|
1340
|
-
* spawning a process.
|
|
1318
|
+
* Transport seam (default impl). Mirror `subprocess.run(cmd, input=..., capture_output=True, text=True,
|
|
1319
|
+
* timeout=..., check=False)`. Throws `SubprocessError` for the timeout / ENOENT / OSError branches so
|
|
1320
|
+
* `ask()` can classify them exactly as the historical contract requires. Tests override this to inject
|
|
1321
|
+
* canned output without spawning a process.
|
|
1341
1322
|
*/
|
|
1342
1323
|
protected _runSubprocess(cmd: string[], stdinPayload: string | null): SubprocessResult {
|
|
1343
1324
|
const argv0 = cmd[0] ?? '';
|
|
1344
1325
|
const spawnOpts: Parameters<typeof spawnSync>[2] = {
|
|
1345
1326
|
encoding: 'utf-8',
|
|
1346
1327
|
timeout: Math.round(this.timeout_seconds * 1000),
|
|
1328
|
+
// Node's 1 MiB default ENOBUFS-kills a member CLI that logs beside its answer; API transport's ceiling.
|
|
1329
|
+
maxBuffer: 64 * 1024 * 1024,
|
|
1347
1330
|
// Neutral cwd, and this one is load-bearing rather than tidy.
|
|
1348
1331
|
//
|
|
1349
1332
|
// The spawn used to inherit the caller's directory, so a council
|
|
@@ -1476,19 +1459,24 @@ export abstract class CliClient extends ExternalAIClient {
|
|
|
1476
1459
|
// bug someone fixes in a minute and a seat that quietly stays dead.
|
|
1477
1460
|
const preflight = this._preflight_transport();
|
|
1478
1461
|
if (preflight !== null) {
|
|
1479
|
-
return
|
|
1480
|
-
provider: this.name,
|
|
1481
|
-
model: this.model,
|
|
1482
|
-
text: '',
|
|
1483
|
-
latency_ms: _elapsedMs(t0),
|
|
1484
|
-
error: preflight.code,
|
|
1485
|
-
metadata: { cli: true, transport: this.transport, detail: preflight.detail },
|
|
1486
|
-
});
|
|
1462
|
+
return this._cliFailure(_elapsedMs(t0), preflight.code, { cli: true, transport: this.transport, detail: preflight.detail });
|
|
1487
1463
|
}
|
|
1488
1464
|
|
|
1489
1465
|
// 2. build command + spawn.
|
|
1490
1466
|
const cmd = this._build_command(system_prompt, user_prompt, max_tokens);
|
|
1467
|
+
this.resumeNext = null;
|
|
1491
1468
|
const stdinPayload = this._stdin_payload(system_prompt, user_prompt);
|
|
1469
|
+
// The final egress check, immediately before the request is written
|
|
1470
|
+
// (road-to-one-detector-and-the-senders-we-own 3.3): nothing is spawned
|
|
1471
|
+
// and nothing counts against the daily cap when it refuses.
|
|
1472
|
+
const refusal = councilEgress().check(`${cmd.join('\n')}\n${stdinPayload ?? ''}`);
|
|
1473
|
+
if (refusal !== null) {
|
|
1474
|
+
return this._cliFailure(_elapsedMs(t0), 'egress_refused', {
|
|
1475
|
+
cli: true,
|
|
1476
|
+
egress_reason: refusal.reason,
|
|
1477
|
+
egress_rule: refusal.what,
|
|
1478
|
+
});
|
|
1479
|
+
}
|
|
1492
1480
|
let proc: SubprocessResult;
|
|
1493
1481
|
try {
|
|
1494
1482
|
proc = this._runSubprocess(cmd, stdinPayload);
|
|
@@ -1503,24 +1491,10 @@ export abstract class CliClient extends ExternalAIClient {
|
|
|
1503
1491
|
// could not contain, at `timeout_seconds` of wall-clock per
|
|
1504
1492
|
// attempt. The process ran; the call counts.
|
|
1505
1493
|
this._recordCallQuietly();
|
|
1506
|
-
return
|
|
1507
|
-
provider: this.name,
|
|
1508
|
-
model: this.model,
|
|
1509
|
-
text: '',
|
|
1510
|
-
latency_ms: _elapsedMs(t0),
|
|
1511
|
-
error: 'timeout',
|
|
1512
|
-
metadata: { cli: true, timeout_seconds: this.timeout_seconds },
|
|
1513
|
-
});
|
|
1494
|
+
return this._cliFailure(_elapsedMs(t0), 'timeout', { cli: true, timeout_seconds: this.timeout_seconds });
|
|
1514
1495
|
}
|
|
1515
1496
|
if (exc.kind === 'file_not_found') {
|
|
1516
|
-
return
|
|
1517
|
-
provider: this.name,
|
|
1518
|
-
model: this.model,
|
|
1519
|
-
text: '',
|
|
1520
|
-
latency_ms: _elapsedMs(t0),
|
|
1521
|
-
error: 'binary_missing',
|
|
1522
|
-
metadata: { cli: true, binary: this.binary },
|
|
1523
|
-
});
|
|
1497
|
+
return this._cliFailure(_elapsedMs(t0), 'binary_missing', { cli: true, binary: this.binary });
|
|
1524
1498
|
}
|
|
1525
1499
|
// OSError — the spawn was attempted, so it counts. `E2BIG` lands
|
|
1526
1500
|
// here when an argv-borne prompt outgrows the platform limit,
|
|
@@ -1613,17 +1587,20 @@ export abstract class CliClient extends ExternalAIClient {
|
|
|
1613
1587
|
meta['cli'] = true;
|
|
1614
1588
|
}
|
|
1615
1589
|
response.metadata = meta;
|
|
1590
|
+
const sid = meta['session_id'];
|
|
1591
|
+
if (typeof sid === 'string' && sid !== '' && !response.error) this.lastSession = { id: sid, at_ms: Date.now() };
|
|
1616
1592
|
return response;
|
|
1617
1593
|
}
|
|
1618
1594
|
|
|
1595
|
+
/** Fallback-INELIGIBLE classes first: a bare `login` once read a timeout as auth. */
|
|
1619
1596
|
static _classify_stderr(stderr: string, returncode: number): string {
|
|
1620
1597
|
const haystack = stderr.toLowerCase();
|
|
1621
|
-
if (this._AUTH_FAILURE_PATTERNS.some((p) => haystack.includes(p))) {
|
|
1622
|
-
return 'auth_expired';
|
|
1623
|
-
}
|
|
1624
1598
|
if (this._TIMEOUT_PATTERNS.some((p) => haystack.includes(p))) {
|
|
1625
1599
|
return 'timeout';
|
|
1626
1600
|
}
|
|
1601
|
+
if (this._AUTH_FAILURE_PATTERNS.some((p) => haystack.includes(p))) {
|
|
1602
|
+
return 'auth_expired';
|
|
1603
|
+
}
|
|
1627
1604
|
if (this._QUOTA_PATTERNS.some((p) => haystack.includes(p))) {
|
|
1628
1605
|
return 'cli_quota_exhausted';
|
|
1629
1606
|
}
|
|
@@ -1698,7 +1675,11 @@ export class AnthropicCliClient extends CliClient {
|
|
|
1698
1675
|
void max_tokens;
|
|
1699
1676
|
return [
|
|
1700
1677
|
this.binary,
|
|
1678
|
+
...seatResumeArgs(this.name, this.resumeNext, { blind: false, now_ms: Date.now() }),
|
|
1701
1679
|
'--print',
|
|
1680
|
+
// The seat never needs the user environment; only a version the light
|
|
1681
|
+
// launch was probed on gets the flag (`LIGHT_LAUNCH_PROBES`).
|
|
1682
|
+
...lightLaunchFor('anthropic', _cliVersion(this.binary)),
|
|
1702
1683
|
'--output-format',
|
|
1703
1684
|
'json',
|
|
1704
1685
|
'--model',
|
|
@@ -1841,7 +1822,9 @@ export class OpenAICliClient extends CliClient {
|
|
|
1841
1822
|
// the payload itself is assembled in `_stdin_payload`.
|
|
1842
1823
|
const modelArgs =
|
|
1843
1824
|
this.model === OPENAI_CLI_VENDOR_DEFAULT ? [] : ['--model', this.model];
|
|
1844
|
-
|
|
1825
|
+
const resume = seatResumeArgs(this.name, this.resumeNext, { blind: false, now_ms: Date.now() });
|
|
1826
|
+
const bound = resume.length === 0 ? boundFor('openai') : resumeBound(boundFor('openai'));
|
|
1827
|
+
return [this.binary, 'exec', ...resume, '--json', '--skip-git-repo-check', ...bound, ...modelArgs, '-'];
|
|
1845
1828
|
}
|
|
1846
1829
|
|
|
1847
1830
|
/**
|
|
@@ -1972,10 +1955,9 @@ export class OpenAICliClient extends CliClient {
|
|
|
1972
1955
|
input_tokens = _pyIntCoerce(_dictGet(usageObj, 'input_tokens', 0));
|
|
1973
1956
|
output_tokens = _pyIntCoerce(_dictGet(usageObj, 'output_tokens', 0));
|
|
1974
1957
|
}
|
|
1975
|
-
} else if (event_type === 'session.created') {
|
|
1976
|
-
|
|
1977
|
-
|
|
1978
|
-
}
|
|
1958
|
+
} else if (event_type === 'session.created' || event_type === 'thread.started') {
|
|
1959
|
+
const sid = _dictGet(ev, 'session_id', undefined) ?? _dictGet(ev, 'thread_id', undefined);
|
|
1960
|
+
if (_pyTruthy(sid)) meta['session_id'] = _pyStr(sid);
|
|
1979
1961
|
} else if (event_type === 'turn.failed') {
|
|
1980
1962
|
// The turn's real cause lives ONLY here, and codex still exits
|
|
1981
1963
|
// 0. Without this branch the response is an empty text, which
|
|
@@ -75,6 +75,7 @@ import * as path from 'node:path';
|
|
|
75
75
|
|
|
76
76
|
import { parse as parseYaml } from 'yaml';
|
|
77
77
|
|
|
78
|
+
import { CREDENTIAL_PREFIXES } from '../_lib/egress_prefixes.js';
|
|
78
79
|
import * as user_global_paths from '../_lib/user_global_paths.js';
|
|
79
80
|
import * as budget from './cli_call_budget.js';
|
|
80
81
|
// LAYERING CONSTRAINT, load-bearing: this is a VALUE import from quorum, while
|
|
@@ -84,6 +85,7 @@ import * as budget from './cli_call_budget.js';
|
|
|
84
85
|
// quorum into config — creates a real ESM cycle in the loader's init path.
|
|
85
86
|
import { OPENAI_CLI_VENDOR_DEFAULT } from './vendor_defaults.js';
|
|
86
87
|
import { parseSeatFields, type PolicyExclusion } from './seat_policy.js';
|
|
88
|
+
import { parseRouteFields, type RouteSpec } from './free_route.js';
|
|
87
89
|
import type { ContentClass } from './content_ceiling.js';
|
|
88
90
|
import { SOLO_FLOOR_MIN_PRESENT } from './quorum.js';
|
|
89
91
|
|
|
@@ -108,17 +110,10 @@ const _FALLBACK_DEPS = {
|
|
|
108
110
|
|
|
109
111
|
/**
|
|
110
112
|
* Prefixes that signal "this is a raw API key" so we refuse it loudly
|
|
111
|
-
* even when the user accidentally inlined it in `api_key_ref`.
|
|
113
|
+
* even when the user accidentally inlined it in `api_key_ref`. The rule
|
|
114
|
+
* table owns them (road-to-one-detector-and-the-senders-we-own 2.2).
|
|
112
115
|
*/
|
|
113
|
-
export const _RAW_KEY_PREFIXES: readonly string[] =
|
|
114
|
-
'sk-',
|
|
115
|
-
'sk-ant-',
|
|
116
|
-
'ya29.',
|
|
117
|
-
'AIza',
|
|
118
|
-
'xai-',
|
|
119
|
-
'pplx-',
|
|
120
|
-
'gsk_',
|
|
121
|
-
];
|
|
116
|
+
export const _RAW_KEY_PREFIXES: readonly string[] = CREDENTIAL_PREFIXES;
|
|
122
117
|
|
|
123
118
|
// ── value type shapes ──────────────────────────────────────────────
|
|
124
119
|
|
|
@@ -338,6 +333,8 @@ export interface MemberConfig {
|
|
|
338
333
|
readonly disabled_reason: string | null;
|
|
339
334
|
readonly policy_exclusion: PolicyExclusion | null;
|
|
340
335
|
readonly content_ceiling: ContentClass;
|
|
336
|
+
/** A `base_url` route (`free_route.ts`); absent or null for a provider member. */
|
|
337
|
+
readonly route?: RouteSpec | null;
|
|
341
338
|
}
|
|
342
339
|
|
|
343
340
|
/**
|
|
@@ -1699,18 +1696,15 @@ function _build_cost_budget(d: Dict): CostBudgetConfig {
|
|
|
1699
1696
|
function _build_member(
|
|
1700
1697
|
name: string,
|
|
1701
1698
|
cfg: Dict,
|
|
1702
|
-
//
|
|
1703
|
-
// `_build_defaults`'s `auto` default for consistency. The sole call site
|
|
1704
|
-
// (`_build_config`) always passes `defaults.mode` explicitly, so this
|
|
1705
|
-
// parameter default is unreachable on the live path today; it exists so
|
|
1706
|
-
// a future caller that omits the third argument observes the same
|
|
1707
|
-
// doctrine rather than silently reverting to the retired `api` default.
|
|
1699
|
+
// Unreachable today (the caller passes `defaults.mode`); mirrors that default.
|
|
1708
1700
|
default_mode = 'auto',
|
|
1709
1701
|
ignored: string[] = [],
|
|
1710
1702
|
): MemberConfig {
|
|
1711
|
-
|
|
1703
|
+
const routeParsed = parseRouteFields(name, cfg as Record<string, unknown>, _VALID_PROVIDERS.has(name));
|
|
1704
|
+
if ('error' in routeParsed) throw new CouncilConfigError(routeParsed.error);
|
|
1705
|
+
if (!_VALID_PROVIDERS.has(name) && routeParsed.route === null) {
|
|
1712
1706
|
throw new CouncilConfigError(
|
|
1713
|
-
`members.${name}: unknown provider; valid: ` +
|
|
1707
|
+
`members.${name}: unknown provider (or a route without base_url); valid: ` +
|
|
1714
1708
|
`${_sortedListRepr(_VALID_PROVIDERS)}.`,
|
|
1715
1709
|
);
|
|
1716
1710
|
}
|
|
@@ -1719,10 +1713,8 @@ function _build_member(
|
|
|
1719
1713
|
const model = _pyTruthy(modelVal) ? (modelVal as string) : '';
|
|
1720
1714
|
const api_key_ref_raw = _get(cfg, 'api_key_ref', null);
|
|
1721
1715
|
const api_key_ref = api_key_ref_raw === undefined ? null : api_key_ref_raw;
|
|
1722
|
-
//
|
|
1723
|
-
//
|
|
1724
|
-
// exactly the silent-spend path the global key was removed for, one
|
|
1725
|
-
// provider at a time. Recorded as ignored, never read.
|
|
1716
|
+
// Ignored, never read: a pinned `mode: api` would reopen the silent-spend
|
|
1717
|
+
// path the global key was removed for, one provider at a time.
|
|
1726
1718
|
if (_get(cfg, 'mode', null) !== null) {
|
|
1727
1719
|
ignored.push(`members.${name}.mode`);
|
|
1728
1720
|
}
|
|
@@ -1917,6 +1909,8 @@ function _build_member(
|
|
|
1917
1909
|
prompt_cache_ttl,
|
|
1918
1910
|
verified_at,
|
|
1919
1911
|
...seat.fields,
|
|
1912
|
+
route: routeParsed.route,
|
|
1913
|
+
...(routeParsed.route === null ? {} : { content_ceiling: 'public-artifact' as const }),
|
|
1920
1914
|
};
|
|
1921
1915
|
}
|
|
1922
1916
|
|