@event4u/agent-config 16.4.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 +483 -669
- package/CONTRIBUTING.md +47 -0
- package/README.md +25 -25
- package/dist/agent-src/commands/{design.md → agent-design.md} +11 -7
- 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 +6 -1
- 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 +2 -2
- 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/accessibility-auditor/data/aria-patterns.csv +2 -0
- package/dist/agent-src/skills/accessibility-auditor/data/manifest.json +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 +16 -4
- 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 +25 -22
- 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 +65 -4
- 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/frontend-render-security/SKILL.md +9 -0
- 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/iconography/SKILL.md +4 -2
- package/dist/agent-src/skills/image-provider-routing/SKILL.md +16 -5
- 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 +21 -11
- 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 +324 -0
- 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/wireframe/SKILL.md +5 -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 +265 -13
- package/dist/cli/commands/uiRenderAsset.js +1316 -0
- package/dist/cli/commands/uiRenderAssetCompare.js +752 -0
- package/dist/cli/commands/uiRenderAssetFonts.js +158 -0
- package/dist/cli/commands/uiRenderAssetGrid.js +265 -0
- package/dist/cli/commands/uiRenderAssetGrounds.js +323 -0
- package/dist/cli/commands/uiRenderAssetIsolation.js +85 -0
- package/dist/cli/commands/uiRenderAssetTypes.js +133 -0
- package/dist/cli/initRouting.js +1 -1
- package/dist/cli/main.js +47 -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 +5 -2
- 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-AED2VQGM.js → chunk-2CX7NWRB.js} +233 -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 +669 -822
- 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 +409 -201
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +8 -8
- package/dist/discovery/dormancy-report.md +1 -1
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +36 -27
- package/dist/discovery/trust-report.md +3 -3
- package/dist/discovery/workspaces.json +25 -16
- package/dist/hooks/chat_history.chunk.cjs +6852 -0
- package/dist/hooks/chat_history.chunk.cjs.sha256 +1 -0
- package/dist/hooks/dispatch.js +17706 -18627
- 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 +1858 -0
- package/dist/hooks/svg_rules.chunk.cjs.sha256 +1 -0
- 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 +9814 -5333
- 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/scan_scope.js +105 -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_dom.js +284 -0
- package/dist/scripts/_lib/svg_filled_counter.js +285 -0
- package/dist/scripts/_lib/svg_geometry.js +477 -0
- package/dist/scripts/_lib/svg_motion.js +179 -0
- package/dist/scripts/_lib/svg_rules.js +1339 -0
- package/dist/scripts/_lib/svg_urls.js +67 -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/scripts/lint_svg_asset.js +324 -0
- 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 +6 -1
- 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 +15 -5
- 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 +29 -25
- 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 +100 -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_dom.ts +318 -0
- package/src/scripts/_lib/svg_filled_counter.ts +287 -0
- package/src/scripts/_lib/svg_geometry.ts +480 -0
- package/src/scripts/_lib/svg_motion.ts +208 -0
- package/src/scripts/_lib/svg_rules.ts +1455 -0
- package/src/scripts/_lib/svg_urls.ts +72 -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/verification_command.ts +59 -0
- package/src/scripts/_lib/verify_clause.ts +31 -19
- 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 +54 -8
- 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 +199 -13
- 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 +553 -0
- package/src/scripts/hooks/svg_rules_loader.ts +133 -0
- package/src/scripts/hooks/tool_result_bytes_hook.ts +14 -5
- package/src/scripts/hooks/turn_end_gate_hook.ts +5 -3
- 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 +150 -19
- 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_design_quality.ts +60 -12
- 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_motion_authority_drift.ts +27 -0
- 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_svg_asset.ts +365 -0
- 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-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-MSUL5NYP.js +0 -1123
- 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
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# host_docs_pages — vendor pages this tree cites that are NOT a hook contract.
|
|
2
|
+
#
|
|
3
|
+
# WHY THIS FILE EXISTS. `host_lowering.yaml` records, per host, the page each
|
|
4
|
+
# row's answers were read off, and `check_host_docs_digest` watches exactly
|
|
5
|
+
# those pages. Every `docs_url` in that table is a HOOKS page, because that is
|
|
6
|
+
# what a lowering row is about. So a vendor page this tree reads for something
|
|
7
|
+
# else — a listing contract, a catalogue budget — reaches the tree only by
|
|
8
|
+
# accident: nothing re-fetches it, nothing notices when it moves, and the
|
|
9
|
+
# reading goes stale in silence until somebody happens to look.
|
|
10
|
+
#
|
|
11
|
+
# This is the sibling list for those pages. Same four provenance fields as a
|
|
12
|
+
# lowering row's `verified:` block, same watcher, same discipline.
|
|
13
|
+
#
|
|
14
|
+
# WHY IT IS A SEPARATE FILE AND NOT A ROW IN host_lowering.yaml. A lowering row
|
|
15
|
+
# is keyed `(host, surface, slot)` and answers "what does this host do with a
|
|
16
|
+
# dispatcher verdict". A listing page answers nothing of the sort, and a row
|
|
17
|
+
# with every hook column null would be a lie shaped like data. The tables also
|
|
18
|
+
# carry different edit costs: `host_lowering.yaml` is on the plumbing list, so
|
|
19
|
+
# an edit there carries a ratification artifact — correct for a file that
|
|
20
|
+
# decides whether a gate can refuse, and wrong for a list of URLs to re-fetch.
|
|
21
|
+
#
|
|
22
|
+
# WHAT A CHANGED DIGEST MEANS HERE, as in the sibling table: evidence that the
|
|
23
|
+
# page MOVED, never a reading of what it now says. The watcher adopts no
|
|
24
|
+
# upstream text. A human reads the page and re-establishes the row by hand.
|
|
25
|
+
#
|
|
26
|
+
# COLUMNS
|
|
27
|
+
# docs_url the page, as the URL that actually serves the body. Record
|
|
28
|
+
# the redirect TARGET, never a URL that answers 301 — a digest
|
|
29
|
+
# over a redirect body is not a digest over the page.
|
|
30
|
+
# docs_at the day a human last READ this page. Not the day its body was
|
|
31
|
+
# hashed; those are two events and the sibling table learned
|
|
32
|
+
# that the hard way.
|
|
33
|
+
# docs_digest sha256 of the body as fetched by the last digest run, or
|
|
34
|
+
# `null` when no run has hashed it yet. `null` is an honest
|
|
35
|
+
# state, not a gap: it is filled by the first
|
|
36
|
+
# `check_host_docs_digest --fetch --write`.
|
|
37
|
+
# expires this package's review-by date for the reading. The gate tests
|
|
38
|
+
# `expires < today`, so a drifted row is pulled back to the day
|
|
39
|
+
# BEFORE detection — "valid through yesterday".
|
|
40
|
+
# why one line: what this tree reads off the page, and who reads it.
|
|
41
|
+
# A page nobody cites does not belong on this list.
|
|
42
|
+
#
|
|
43
|
+
# CONSUMED BY:
|
|
44
|
+
# - src/scripts/hooks/host_docs_pages.ts (reader + surgical writer)
|
|
45
|
+
# - src/scripts/check_host_docs_digest.ts (the docs-drift watcher)
|
|
46
|
+
|
|
47
|
+
pages:
|
|
48
|
+
claude-code-skills:
|
|
49
|
+
docs_url: https://code.claude.com/docs/en/skills.md
|
|
50
|
+
docs_at: 2026-10-19
|
|
51
|
+
docs_digest: 428fdf2654fa01dcbbece1f6d010e350f646ecbdbec229e7df097f452f06c2b7
|
|
52
|
+
expires: 2027-10-19
|
|
53
|
+
why: >-
|
|
54
|
+
The skill LISTING contract — that the host lists every skill name but
|
|
55
|
+
keeps descriptions only up to a fraction of the context window, filling by
|
|
56
|
+
invocation frequency and capping each entry. `src/scripts/_lib/host_listing_model.ts`
|
|
57
|
+
models that mechanism and cites this page for its numbers; nothing else
|
|
58
|
+
in this tree establishes any of them. As of the 2026-10-19 read the page
|
|
59
|
+
states the fraction and the per-entry cap; the chars-per-token ratio rests
|
|
60
|
+
on an illustration only the 2026-08-22 read carried.
|
|
61
|
+
codex-skills:
|
|
62
|
+
docs_url: https://learn.chatgpt.com/docs/build-skills.md
|
|
63
|
+
docs_at: 2026-10-17
|
|
64
|
+
docs_digest: ed6e324f747d47adf6f60ee1fca13ba469b3671f55f58c3a78f35947af6919d5
|
|
65
|
+
expires: 2027-10-17
|
|
66
|
+
why: >-
|
|
67
|
+
The second host's skill contract, which road-to-skills-that-arrive-when-called
|
|
68
|
+
builds its Codex rows on (D3, Phase 0.3, Phase 4): the user root is
|
|
69
|
+
`$HOME/.agents/skills` and repositories are scanned under `.agents/skills`;
|
|
70
|
+
the initial list includes each skill's path and uses at most 2% of the
|
|
71
|
+
context window (8,000 characters when unknown, configurable up to 10,000
|
|
72
|
+
tokens); descriptions are shortened first and skills may then be omitted
|
|
73
|
+
with a warning; changes are detected automatically. The old URL
|
|
74
|
+
`developers.openai.com/codex/skills.md` answers 308 to this one, so the
|
|
75
|
+
redirect target is recorded.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"fingerprint":"
|
|
1
|
+
{"fingerprint":"398a795b1cf7152c8b09aebecd3365edcda74b2893528b8ed021446786da4796:22312","body_fingerprint":"3783687449af9116a2386ef6d31bcaa2f9ddd2b1d9a774d9e9f525b7b6a0c01b:6376","table":{"schema_version":1,"hosts":{"claude":{"surfaces":{"any":{"entry_shape":"claude-settings-hooks","json_shape":"hook-specific-output","fail_policy":"propagate","timeout_unit":"seconds","timeout_default":null,"verified":{"docs_at":"2026-10-19","docs_url":"https://code.claude.com/docs/en/hooks.md","docs_digest":"dd0f114dac70bc7836abd37797fb486d3007d889eeb6bbc88c307ed2587a44ef","probe_at":"2026-09-06","host_version":"2.1.263","expires":"2027-09-06"},"slots":{"session_start":{"native":"SessionStart","block_exit":null,"answered_at":"2026-09-29"},"session_end":{"native":"SessionEnd","block_exit":null,"answered_at":"2026-09-29"},"stop":{"native":"Stop","block_exit":2,"answered_at":"2026-09-29"},"user_prompt_submit":{"native":"UserPromptSubmit","block_exit":2,"answered_at":"2026-09-29"},"pre_tool_use":{"native":"PreToolUse","block_exit":2,"answered_at":"2026-09-29"},"post_tool_use":{"native":"PostToolUse","block_exit":null,"answered_at":"2026-09-29"},"pre_compact":{"native":"PreCompact","block_exit":null,"answered_at":"2026-09-29"},"subagent_start":{"native":"SubagentStart","block_exit":null,"answered_at":"2026-09-29"},"subagent_stop":{"native":"SubagentStop","block_exit":null,"answered_at":"2026-09-29"}}}}},"augment":{"surfaces":{"any":{"entry_shape":"augment-settings-hooks","json_shape":"none","fail_policy":"discard","timeout_unit":"unknown","timeout_default":null,"verified":{"docs_at":"2026-10-14","docs_url":"https://docs.augmentcode.com/cli/hooks.md","docs_digest":"93f421dccdd017099d87b12ffd7fe8f272d8adf750856ddfb200d9b55c695378","probe_at":null,"host_version":null,"expires":"2027-10-14"},"slots":{"session_start":{"native":"SessionStart","block_exit":null,"answered_at":"2026-09-29"},"session_end":{"native":"SessionEnd","block_exit":null,"answered_at":"2026-09-29"},"stop":{"native":"Stop","block_exit":null,"answered_at":"2026-09-29"},"pre_tool_use":{"native":"PreToolUse","block_exit":null,"answered_at":"2026-09-29"},"post_tool_use":{"native":"PostToolUse","block_exit":null,"answered_at":"2026-09-29"}}}}},"cursor":{"surfaces":{"any":{"entry_shape":"cursor-hooks-json","json_shape":"none","fail_policy":"propagate","timeout_unit":"unknown","timeout_default":null,"verified":{"docs_at":"2026-09-29","docs_url":"https://cursor.com/docs/hooks.md","docs_digest":"7294a2d63b19d79a5283c948afe174cba8b06a7585563d34a2c41b90f5df0d39","probe_at":null,"host_version":null,"expires":"2027-09-29"},"slots":{"session_start":{"native":"sessionStart","block_exit":null,"answered_at":"2026-09-29"},"session_end":{"native":"sessionEnd","block_exit":null,"answered_at":"2026-09-29"},"stop":{"native":"stop","block_exit":null,"answered_at":"2026-09-29"},"user_prompt_submit":{"native":"beforeSubmitPrompt","block_exit":null,"answered_at":"2026-09-29"},"post_tool_use":{"native":"postToolUse","block_exit":null,"answered_at":"2026-09-29"}}}}},"cline":{"surfaces":{"any":{"entry_shape":"cline-per-event-script","json_shape":"none","fail_policy":"discard","timeout_unit":"unknown","timeout_default":null,"verified":{"docs_at":"2026-10-14","docs_url":"https://docs.cline.bot/customization/hooks.md","docs_digest":"73b6df1bf5e51589313ea3fcfdd50c0d505530234418adcdc9fe198af61837c2","probe_at":null,"host_version":null,"expires":"2027-10-14"},"slots":{"session_start":{"native":["TaskStart","TaskResume"],"block_exit":null,"answered_at":"2026-09-29"},"session_end":{"native":"TaskComplete","block_exit":null,"answered_at":"2026-09-29"},"stop":{"native":"TaskCancel","block_exit":null,"answered_at":"2026-09-29"},"user_prompt_submit":{"native":"UserPromptSubmit","block_exit":null,"answered_at":"2026-09-29"},"post_tool_use":{"native":"PostToolUse","block_exit":null,"answered_at":"2026-09-29"}}}}},"windsurf":{"surfaces":{"any":{"entry_shape":"windsurf-hooks-json","json_shape":"none","fail_policy":"propagate","timeout_unit":"unknown","timeout_default":null,"verified":{"docs_at":"2026-10-14","docs_url":"https://docs.devin.ai/desktop/cascade/hooks.md","docs_digest":"b9e0cd4772de9e7c4086ecf31bfcb456dc74c3b36516f52c2ff8ec1dd5c1170d","probe_at":null,"host_version":null,"expires":"2027-10-14"},"slots":{"session_start":{"native":"post_setup_worktree","block_exit":null,"answered_at":"2026-09-29"},"user_prompt_submit":{"native":"pre_user_prompt","block_exit":null,"answered_at":"2026-09-29"},"stop":{"native":"post_cascade_response","block_exit":null,"answered_at":"2026-09-29"}}}}},"gemini":{"surfaces":{"any":{"entry_shape":"gemini-settings-hooks","json_shape":"none","fail_policy":"propagate","timeout_unit":"unknown","timeout_default":null,"verified":{"docs_at":"2026-09-29","docs_url":"https://geminicli.com/docs/hooks/reference.md","docs_digest":"06d37f2f66812ee78bb46c37a112203376f0bae4d3b8b44ac79d0bda4b86a118","probe_at":null,"host_version":null,"expires":"2027-09-29"},"slots":{"session_start":{"native":"SessionStart","block_exit":null,"answered_at":"2026-09-29","matcher":""},"session_end":{"native":"SessionEnd","block_exit":null,"answered_at":"2026-09-29","matcher":""},"stop":{"native":"AfterAgent","block_exit":null,"answered_at":"2026-09-29","matcher":""},"user_prompt_submit":{"native":"BeforeAgent","block_exit":null,"answered_at":"2026-09-29","matcher":""},"post_tool_use":{"native":"AfterTool","block_exit":null,"answered_at":"2026-09-29","matcher":".*"}}}}},"cowork":{"surfaces":{"any":{"entry_shape":"none","json_shape":"none","fail_policy":"discard","timeout_unit":"unknown","timeout_default":null,"verified":{"docs_at":"2026-09-29","docs_url":null,"docs_digest":null,"probe_at":null,"host_version":null,"expires":"2027-09-29"},"slots":{}}}},"copilot":{"surfaces":{"any":{"entry_shape":"none","json_shape":"none","fail_policy":"discard","timeout_unit":"unknown","timeout_default":null,"verified":{"docs_at":"2026-09-29","docs_url":"https://docs.github.com/en/copilot/concepts/agents/hooks.md","docs_digest":"bfd40aa93ad62133efc17a50f189034f01594dc89a5d31a13a0c541d691acede","probe_at":null,"host_version":null,"expires":"2027-09-29"},"slots":{}}}},"codex":{"surfaces":{"any":{"entry_shape":"none","json_shape":"none","fail_policy":"discard","timeout_unit":"unknown","timeout_default":null,"verified":{"docs_at":"2026-10-14","docs_url":"https://developers.openai.com/codex/hooks.md","docs_digest":"57166ef03e7059732dd90925d5c42dd4d187eb2625d66cc154d0fbd2edb65f92","probe_at":"2026-10-01","host_version":"0.148.0","expires":"2027-10-14"},"slots":{}}}}}}}
|
|
@@ -50,8 +50,8 @@
|
|
|
50
50
|
# never silently updated. On drift the watcher leaves it
|
|
51
51
|
# alone and moves `expires` instead, so the field keeps
|
|
52
52
|
# naming the body someone actually read. It is NOT paired
|
|
53
|
-
# with `docs_at`, and the
|
|
54
|
-
#
|
|
53
|
+
# with `docs_at`, and the first fill proved why: all nine
|
|
54
|
+
# carried `docs_at: 2026-09-29` while the eight digests were
|
|
55
55
|
# taken 2026-10-01. The two answer different questions —
|
|
56
56
|
# `docs_at` when a human read the page for the row's ANSWERS,
|
|
57
57
|
# `docs_digest` which body the watcher is comparing against.
|
|
@@ -88,15 +88,16 @@ hosts:
|
|
|
88
88
|
# read was never dated, and the absence was the record. Both are filled
|
|
89
89
|
# now from sources this tree already carries — the 2026-09-06 live probe
|
|
90
90
|
# recorded in `host_semantics.ts` (Claude Code 2.1.263) and a fresh
|
|
91
|
-
# documentation read on 2026-09-29
|
|
91
|
+
# documentation read on 2026-09-29, repeated 2026-10-14 and 2026-10-19.
|
|
92
|
+
# `expires` is deliberately unchanged.
|
|
92
93
|
#
|
|
93
94
|
# The committed `docs_url` was `https://docs.claude.com/en/docs/claude-code/hooks`,
|
|
94
95
|
# which answers 301 and lands on the URL below. Recording the redirect
|
|
95
96
|
# target is what makes a digest reproducible.
|
|
96
97
|
verified:
|
|
97
|
-
docs_at: 2026-
|
|
98
|
+
docs_at: 2026-10-19
|
|
98
99
|
docs_url: https://code.claude.com/docs/en/hooks.md
|
|
99
|
-
docs_digest:
|
|
100
|
+
docs_digest: dd0f114dac70bc7836abd37797fb486d3007d889eeb6bbc88c307ed2587a44ef
|
|
100
101
|
probe_at: 2026-09-06
|
|
101
102
|
host_version: 2.1.263
|
|
102
103
|
expires: 2027-09-06
|
|
@@ -121,15 +122,15 @@ hosts:
|
|
|
121
122
|
fail_policy: discard
|
|
122
123
|
timeout_unit: unknown
|
|
123
124
|
timeout_default: null
|
|
124
|
-
# Established by a documentation read on 2026-09-29,
|
|
125
|
-
# probe — `probe_at` stays null and says so.
|
|
125
|
+
# Established by a documentation read on 2026-09-29, repeated 2026-10-14, not
|
|
126
|
+
# by a live probe — `probe_at` stays null and says so.
|
|
126
127
|
verified:
|
|
127
|
-
docs_at: 2026-
|
|
128
|
+
docs_at: 2026-10-14
|
|
128
129
|
docs_url: https://docs.augmentcode.com/cli/hooks.md
|
|
129
|
-
docs_digest:
|
|
130
|
+
docs_digest: 93f421dccdd017099d87b12ffd7fe8f272d8adf750856ddfb200d9b55c695378
|
|
130
131
|
probe_at: null
|
|
131
132
|
host_version: null
|
|
132
|
-
expires: 2027-
|
|
133
|
+
expires: 2027-10-14
|
|
133
134
|
# THE FINDING THIS ROW CARRIES. Augment's own documentation states that
|
|
134
135
|
# `PreToolUse` can block tool execution and shows `exit 2` doing it. The
|
|
135
136
|
# `block_exit: null` below is therefore NOT a claim that the host cannot
|
|
@@ -187,12 +188,12 @@ hosts:
|
|
|
187
188
|
# piece of work, and inventing a citation for them here would be the
|
|
188
189
|
# defect this file was built to remove.
|
|
189
190
|
verified:
|
|
190
|
-
docs_at: 2026-
|
|
191
|
+
docs_at: 2026-10-14
|
|
191
192
|
docs_url: https://docs.cline.bot/customization/hooks.md
|
|
192
|
-
docs_digest:
|
|
193
|
+
docs_digest: 73b6df1bf5e51589313ea3fcfdd50c0d505530234418adcdc9fe198af61837c2
|
|
193
194
|
probe_at: null
|
|
194
195
|
host_version: null
|
|
195
|
-
expires: 2027-
|
|
196
|
+
expires: 2027-10-14
|
|
196
197
|
slots:
|
|
197
198
|
session_start: { native: [TaskStart, TaskResume], block_exit: null, answered_at: 2026-09-29 }
|
|
198
199
|
session_end: { native: TaskComplete, block_exit: null, answered_at: 2026-09-29 }
|
|
@@ -212,12 +213,12 @@ hosts:
|
|
|
212
213
|
# redirects to `docs.devin.ai`; the redirect target is recorded so the
|
|
213
214
|
# digest is reproducible.
|
|
214
215
|
verified:
|
|
215
|
-
docs_at: 2026-
|
|
216
|
+
docs_at: 2026-10-14
|
|
216
217
|
docs_url: https://docs.devin.ai/desktop/cascade/hooks.md
|
|
217
|
-
docs_digest:
|
|
218
|
+
docs_digest: b9e0cd4772de9e7c4086ecf31bfcb456dc74c3b36516f52c2ff8ec1dd5c1170d
|
|
218
219
|
probe_at: null
|
|
219
220
|
host_version: null
|
|
220
|
-
expires: 2027-
|
|
221
|
+
expires: 2027-10-14
|
|
221
222
|
slots:
|
|
222
223
|
session_start: { native: post_setup_worktree, block_exit: null, answered_at: 2026-09-29 }
|
|
223
224
|
user_prompt_submit: { native: pre_user_prompt, block_exit: null, answered_at: 2026-09-29 }
|
|
@@ -380,8 +381,8 @@ hosts:
|
|
|
380
381
|
# refusal path on this host, which is exactly what a null means here. It
|
|
381
382
|
# does NOT establish that Codex cannot refuse — this file's header
|
|
382
383
|
# forbids that reading, and two unexcluded explanations remain. The
|
|
383
|
-
# installed build
|
|
384
|
-
#
|
|
384
|
+
# installed build was 0.148.0 against a then-current 0.159.3, and the
|
|
385
|
+
# page read on 2026-09-29 described the current one; and the probe never
|
|
385
386
|
# distinguished "the hook fired and was ignored" from "the matcher never
|
|
386
387
|
# matched", because the instrumented re-run (a hook that records its own
|
|
387
388
|
# input before refusing) was refused by the harness this probe ran
|
|
@@ -392,10 +393,10 @@ hosts:
|
|
|
392
393
|
# armed a refusal this tree cannot demonstrate. The row records the
|
|
393
394
|
# negative instead.
|
|
394
395
|
verified:
|
|
395
|
-
docs_at: 2026-
|
|
396
|
+
docs_at: 2026-10-14
|
|
396
397
|
docs_url: https://developers.openai.com/codex/hooks.md
|
|
397
|
-
docs_digest:
|
|
398
|
+
docs_digest: 57166ef03e7059732dd90925d5c42dd4d187eb2625d66cc154d0fbd2edb65f92
|
|
398
399
|
probe_at: 2026-10-01
|
|
399
400
|
host_version: 0.148.0
|
|
400
|
-
expires: 2027-
|
|
401
|
+
expires: 2027-10-14
|
|
401
402
|
slots: {}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
#!/usr/bin/env tsx
|
|
2
|
+
/**
|
|
3
|
+
* host-rate-marker — the host's own `StopFailure` with error class
|
|
4
|
+
* `rate_limit` writes the `quota_parked` marker, tagged host-sourced.
|
|
5
|
+
*
|
|
6
|
+
* Bound on `agent_error`, onto which Claude's `StopFailure` is lowered. Any
|
|
7
|
+
* other failure class is not a rate signal and writes nothing. It records and
|
|
8
|
+
* never acts: nothing here sleeps, retries or relaunches, and the exit is 0 on
|
|
9
|
+
* every path.
|
|
10
|
+
*/
|
|
11
|
+
import * as fs from 'node:fs';
|
|
12
|
+
import * as path from 'node:path';
|
|
13
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
14
|
+
|
|
15
|
+
import { writeQuotaParked } from '../_lib/quota_parked.js';
|
|
16
|
+
import { resolveConsumerRoot } from './subagent_ledger_hook.js';
|
|
17
|
+
import { readHookStdin } from './hook_stdin.js';
|
|
18
|
+
import { EXIT_ALLOW } from './exit_codes.js';
|
|
19
|
+
|
|
20
|
+
type JsonObject = { [k: string]: unknown };
|
|
21
|
+
const isObject = (v: unknown): v is JsonObject => typeof v === 'object' && v !== null && !Array.isArray(v);
|
|
22
|
+
|
|
23
|
+
/** The host vendor whose plan window a host-sourced marker describes. */
|
|
24
|
+
const HOST_PROVIDER = 'anthropic';
|
|
25
|
+
|
|
26
|
+
function processEnvelope(envelope: unknown, root: string): number {
|
|
27
|
+
try {
|
|
28
|
+
if (!isObject(envelope)) return EXIT_ALLOW;
|
|
29
|
+
const payload = isObject(envelope['payload']) ? envelope['payload'] : envelope;
|
|
30
|
+
if (payload['hook_event_name'] !== 'StopFailure' || payload['error'] !== 'rate_limit') return EXIT_ALLOW;
|
|
31
|
+
const session = payload['session_id'];
|
|
32
|
+
if (typeof session !== 'string' || session === '') return EXIT_ALLOW;
|
|
33
|
+
writeQuotaParked(root, session, [HOST_PROVIDER], () => new Date(), 'host');
|
|
34
|
+
} catch {
|
|
35
|
+
// A marker that cannot be written is a missed record, never a blocked stop.
|
|
36
|
+
}
|
|
37
|
+
return EXIT_ALLOW;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/** String-in entry for tests and the dispatcher. */
|
|
41
|
+
export function run(stdinText: string, root: string): number {
|
|
42
|
+
let envelope: unknown;
|
|
43
|
+
try {
|
|
44
|
+
envelope = stdinText.trim() ? JSON.parse(stdinText) : {};
|
|
45
|
+
} catch {
|
|
46
|
+
return EXIT_ALLOW;
|
|
47
|
+
}
|
|
48
|
+
return processEnvelope(envelope, root);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export function main(): number {
|
|
52
|
+
const raw = readHookStdin();
|
|
53
|
+
let envelope: unknown = {};
|
|
54
|
+
try {
|
|
55
|
+
envelope = raw.trim() ? JSON.parse(raw) : {};
|
|
56
|
+
} catch {
|
|
57
|
+
return EXIT_ALLOW;
|
|
58
|
+
}
|
|
59
|
+
return processEnvelope(envelope, resolveConsumerRoot(envelope as never));
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
declare const __AGENT_CONFIG_BUNDLE__: boolean | undefined;
|
|
63
|
+
function _isCliEntry(): boolean {
|
|
64
|
+
if (typeof __AGENT_CONFIG_BUNDLE__ !== 'undefined' && __AGENT_CONFIG_BUNDLE__) return false;
|
|
65
|
+
if (process.argv[1] === undefined) return false;
|
|
66
|
+
if (import.meta.url === pathToFileURL(path.resolve(process.argv[1])).href) return true;
|
|
67
|
+
try {
|
|
68
|
+
return fs.realpathSync(fileURLToPath(import.meta.url)) === fs.realpathSync(path.resolve(process.argv[1]));
|
|
69
|
+
} catch {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
if (_isCliEntry()) process.exit(main());
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
#!/usr/bin/env tsx
|
|
2
|
+
/**
|
|
3
|
+
* `InstructionsLoaded` observer — capture only.
|
|
4
|
+
*
|
|
5
|
+
* Appends one classified line per host load event to
|
|
6
|
+
* `<machine root>/runtime/arrivals/<session>.jsonl`, the input of that
|
|
7
|
+
* session's arrival record. It emits nothing to the model and returns 0 on
|
|
8
|
+
* every path: an instrument that can fail a turn is a mechanism, and this is not
|
|
9
|
+
* one. Lines carry a file basename, two enums and the host version — never a
|
|
10
|
+
* path or a file's contents — and never leave the machine. The directory is
|
|
11
|
+
* this observer's alone; nothing else in the package writes there.
|
|
12
|
+
*
|
|
13
|
+
* ONE FILE PER SESSION, BECAUSE THE HOST RUNS THIS EVENT ASYNCHRONOUSLY. A
|
|
14
|
+
* session start fires one event per loaded file and the hooks run in parallel,
|
|
15
|
+
* so append order is scheduler order and the reader treats each session as a
|
|
16
|
+
* set. Retention is the newest {@link KEEP_SESSIONS} session files, each capped
|
|
17
|
+
* at {@link MAX_SESSION_BYTES}; old files are deleted whole, never rotated.
|
|
18
|
+
* A line without a session id could never form a record, so it is not written.
|
|
19
|
+
*
|
|
20
|
+
* ONE DESCRIPTOR, NO PATH CHECK. The file is opened once with `O_NOFOLLOW` and
|
|
21
|
+
* `O_NONBLOCK`; the descriptor must be a regular file readable by its owner
|
|
22
|
+
* alone, and the line is written through it whole or the write is a failure —
|
|
23
|
+
* so no symlink swapped in between a check and a write can redirect the line,
|
|
24
|
+
* no FIFO planted at the path can stall the open, and no torn line passes
|
|
25
|
+
* silently.
|
|
26
|
+
*
|
|
27
|
+
* THE BOUNDS, STATED AS WHAT THEY ARE. Every write prunes after it appends, so
|
|
28
|
+
* the file count can exceed fifty by the writers between their append and their
|
|
29
|
+
* own prune, and by any writer killed in that gap — until the next write, which
|
|
30
|
+
* prunes again. The byte cap is checked on the descriptor before the write, so a
|
|
31
|
+
* file can exceed it by one line (under 2 KiB, every field being a token of at
|
|
32
|
+
* most 128 characters) per writer racing past the check at once. Neither bound
|
|
33
|
+
* is a lock, and no lock is taken: a hook that can wait on another hook is a
|
|
34
|
+
* hook that can stall a session.
|
|
35
|
+
*
|
|
36
|
+
* WHAT A RACE CAN AND CANNOT DO. Two processes pruning at once both succeed. A
|
|
37
|
+
* prune can delete the file of an idle session older than fifty newer ones; if
|
|
38
|
+
* that session loads a file later, it starts a new file without its start-up
|
|
39
|
+
* loads, which the record reads as `unknown` — evidence is lost in the
|
|
40
|
+
* direction that keeps the machine full, never invented.
|
|
41
|
+
*
|
|
42
|
+
* A FAILURE LEAVES A DATED MARK, WHERE IT CAN. A write stopped by permissions,
|
|
43
|
+
* a full disk, a refused symlink or file, or a short write records its date and
|
|
44
|
+
* error code in `arrivals.last-error` beside the directory. It is the LAST
|
|
45
|
+
* failure, not a current state: a date older than the newest session file means
|
|
46
|
+
* the observer has written since. A failure that also prevents writing the mark
|
|
47
|
+
* — the machine root itself unwritable — leaves none.
|
|
48
|
+
*
|
|
49
|
+
* NOT YET BOUND. No manifest row runs this concern, and it is not in the
|
|
50
|
+
* dispatcher's concern registry, so it adds nothing to the hook bundle until
|
|
51
|
+
* its binding lands; the binding needs bundle headroom it does not have today.
|
|
52
|
+
*
|
|
53
|
+
* KILL SWITCH. `AGENT_CONFIG_INSTRUCTIONS_OBSERVER=off` makes it a no-op without
|
|
54
|
+
* a reinstall; once the binding above lands, removing that one
|
|
55
|
+
* `instructions_loaded` row from `hook_manifest.yaml` and reinstalling removes
|
|
56
|
+
* it entirely. Either is the
|
|
57
|
+
* response to hook failures, duplicate events, a session-start regression or an
|
|
58
|
+
* unexplained test break.
|
|
59
|
+
*/
|
|
60
|
+
import * as fs from 'node:fs';
|
|
61
|
+
import * as path from 'node:path';
|
|
62
|
+
|
|
63
|
+
import { event4u_root } from '../_lib/user_global_paths.js';
|
|
64
|
+
import { captureInstructionsLoaded, isSessionFile } from '../_lib/instructions_loaded_event.js';
|
|
65
|
+
import { is_replay_mode } from './state_io.js';
|
|
66
|
+
import { readHookStdin } from './hook_stdin.js';
|
|
67
|
+
import { EXIT_ALLOW } from './exit_codes.js';
|
|
68
|
+
|
|
69
|
+
export const KILL_SWITCH_ENV = 'AGENT_CONFIG_INSTRUCTIONS_OBSERVER';
|
|
70
|
+
export const KEEP_SESSIONS = 50;
|
|
71
|
+
/** A session file stops growing here (see the header for the overshoot under racing writers). */
|
|
72
|
+
export const MAX_SESSION_BYTES = 256 * 1024;
|
|
73
|
+
|
|
74
|
+
const C = fs.constants;
|
|
75
|
+
/** `O_NOFOLLOW` is POSIX; where the platform has none the flag is simply absent. */
|
|
76
|
+
const NOFOLLOW = C.O_NOFOLLOW ?? 0;
|
|
77
|
+
/** `O_NONBLOCK` so a FIFO planted at the path cannot stall the open waiting for a reader. */
|
|
78
|
+
const APPEND_NOFOLLOW = C.O_WRONLY | C.O_APPEND | C.O_CREAT | C.O_NONBLOCK | NOFOLLOW;
|
|
79
|
+
const TRUNC_NOFOLLOW = C.O_WRONLY | C.O_TRUNC | C.O_CREAT | C.O_NONBLOCK | NOFOLLOW;
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Write `text` through one descriptor opened with `flags`: the descriptor must
|
|
83
|
+
* be a regular file nobody but its owner can read, under `cap` bytes, and the
|
|
84
|
+
* write must be whole. Each refusal throws its own code. The size and mode are
|
|
85
|
+
* checked on the descriptor, never on the path, so nothing swapped in between
|
|
86
|
+
* a check and the write can redirect it.
|
|
87
|
+
*/
|
|
88
|
+
function writePrivate(file: string, text: string, flags: number, cap = Infinity): void {
|
|
89
|
+
const fd = fs.openSync(file, flags, 0o600);
|
|
90
|
+
try {
|
|
91
|
+
const st = fs.fstatSync(fd);
|
|
92
|
+
if (!st.isFile() || (st.mode & 0o077) !== 0) throw new Error('EREFUSED');
|
|
93
|
+
// Every captured field is an ASCII id or boolean, so a line's length is its byte count.
|
|
94
|
+
if (st.size < cap && fs.writeSync(fd, text) !== text.length) throw new Error('ESHORT');
|
|
95
|
+
} finally {
|
|
96
|
+
fs.closeSync(fd);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* The arrivals directory, created `0700` and then verified: a real directory,
|
|
102
|
+
* not a symlink, with no group or other bits, owned by this user where the
|
|
103
|
+
* platform reports owners. Anything else throws `EREFUSED_DIR` before a file in
|
|
104
|
+
* it is opened.
|
|
105
|
+
*/
|
|
106
|
+
function privateDir(dir: string): void {
|
|
107
|
+
fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
108
|
+
const st = fs.lstatSync(dir);
|
|
109
|
+
const uid = process.getuid?.();
|
|
110
|
+
if (!st.isDirectory() || (st.mode & 0o077) !== 0 || (uid !== undefined && st.uid !== uid)) throw new Error('EREFUSED_DIR');
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
export function arrivalsDir(env: NodeJS.ProcessEnv = process.env): string {
|
|
114
|
+
return path.join(event4u_root(env), 'runtime', 'arrivals');
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/** Delete all but the newest {@link KEEP_SESSIONS} regular session files; ties broken by name. */
|
|
118
|
+
function prune(dir: string): void {
|
|
119
|
+
const files: { f: string; t: number }[] = [];
|
|
120
|
+
for (const f of fs.readdirSync(dir)) {
|
|
121
|
+
if (!isSessionFile(f)) continue;
|
|
122
|
+
try {
|
|
123
|
+
const st = fs.lstatSync(path.join(dir, f));
|
|
124
|
+
if (st.isFile()) files.push({ f, t: st.mtimeMs });
|
|
125
|
+
} catch {
|
|
126
|
+
// Removed by a parallel prune since the listing.
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
files.sort((a, b) => b.t - a.t || (a.f < b.f ? -1 : 1));
|
|
130
|
+
for (const { f } of files.slice(KEEP_SESSIONS)) fs.rmSync(path.join(dir, f), { force: true });
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
export function processEnvelope(raw: string, env: NodeJS.ProcessEnv = process.env): number {
|
|
134
|
+
let dir = '';
|
|
135
|
+
try {
|
|
136
|
+
if (env[KILL_SWITCH_ENV] === 'off' || is_replay_mode()) return EXIT_ALLOW;
|
|
137
|
+
dir = arrivalsDir(env);
|
|
138
|
+
let parsed: unknown = null;
|
|
139
|
+
try {
|
|
140
|
+
parsed = JSON.parse(raw);
|
|
141
|
+
} catch {
|
|
142
|
+
// An unreadable envelope carries no session to file a line under.
|
|
143
|
+
}
|
|
144
|
+
const envelope = (parsed ?? {}) as Record<string, unknown>;
|
|
145
|
+
const inner = envelope['payload'];
|
|
146
|
+
// Without HOME no load reads as user-layer, which can only keep the machine full.
|
|
147
|
+
const cap = captureInstructionsLoaded(typeof inner === 'object' && inner !== null ? inner : envelope, new Date().toISOString(), env['HOME'] ?? '', env);
|
|
148
|
+
// A line with no session id can never form a record, so it is not written.
|
|
149
|
+
if (cap.session === null) return EXIT_ALLOW;
|
|
150
|
+
privateDir(dir);
|
|
151
|
+
writePrivate(path.join(dir, `${cap.session}.jsonl`), `${JSON.stringify(cap)}\n`, APPEND_NOFOLLOW, MAX_SESSION_BYTES);
|
|
152
|
+
prune(dir);
|
|
153
|
+
} catch (e) {
|
|
154
|
+
try {
|
|
155
|
+
const code = String((e as NodeJS.ErrnoException).code ?? (e as Error).message);
|
|
156
|
+
if (dir) writePrivate(`${dir}.last-error`, `${new Date().toISOString()} ${code}\n`, TRUNC_NOFOLLOW);
|
|
157
|
+
} catch {
|
|
158
|
+
// Nowhere to record it either; the session is still never failed.
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return EXIT_ALLOW;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
export function main(): number {
|
|
165
|
+
try {
|
|
166
|
+
return processEnvelope(readHookStdin());
|
|
167
|
+
} catch {
|
|
168
|
+
return EXIT_ALLOW;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
@@ -56,7 +56,7 @@ import * as fs from 'node:fs';
|
|
|
56
56
|
import * as path from 'node:path';
|
|
57
57
|
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
58
58
|
|
|
59
|
-
import { derive_session_tag } from '../
|
|
59
|
+
import { derive_session_tag } from '../_lib/session_tag.js';
|
|
60
60
|
import { unwrap, type JsonObject, type JsonValue } from './envelope.js';
|
|
61
61
|
import { readHookStdin } from './hook_stdin.js';
|
|
62
62
|
import { HANDBACK, finalParagraph, readTranscriptTail } from './turn_end_gate_hook.js';
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Concerns the dispatch bundle does NOT inline, and how to load one.
|
|
3
|
+
*
|
|
4
|
+
* WHY. Every concern in `concern_registry.ts` is statically imported, so
|
|
5
|
+
* esbuild folds its whole transitive closure into `dist/hooks/dispatch.js` —
|
|
6
|
+
* the one bundle every hook event loads. Measured 2026-10-20 from the bundle's
|
|
7
|
+
* own metafile: `src/scripts/chat_history.ts` and the modules reachable only
|
|
8
|
+
* through it were 121,219 bytes of a 1,549,961-byte bundle.
|
|
9
|
+
*
|
|
10
|
+
* Every byte figure in this header is a point-in-time reading with no
|
|
11
|
+
* committed artifact behind it. Treat it as unreproduced: before citing one,
|
|
12
|
+
* re-measure from a `build:hooks` run with `--metafile`, since the bundle
|
|
13
|
+
* moves with every merge.
|
|
14
|
+
*
|
|
15
|
+
* This paragraph used to end "and `chat-history` is bound on `session_start`
|
|
16
|
+
* alone", and an independent review caught that it is false. The manifest
|
|
17
|
+
* binds it on FIVE events — `session_start`, `session_end`, `stop`,
|
|
18
|
+
* `post_tool_use` and `user_prompt_submit` — which makes it close to the
|
|
19
|
+
* widest-bound concern in the tree, not a narrow one. The claim was read off
|
|
20
|
+
* the `session_start:` rows without checking the others, and it reached the
|
|
21
|
+
* budget file, a roadmap, a commit message and a council prompt before anyone
|
|
22
|
+
* tested it.
|
|
23
|
+
*
|
|
24
|
+
* What survives the correction is the SIZE argument, which never depended on
|
|
25
|
+
* the binding: 121 KB that every event pays is 121 KB whether the concern runs
|
|
26
|
+
* on one event or five, because the cost is the inlining, not the invocation.
|
|
27
|
+
* What does NOT survive is "this is the cheapest possible candidate" — the
|
|
28
|
+
* genuinely narrow ones are `turn-end-gate` (71,928 B, `stop` alone),
|
|
29
|
+
* `injection-scan` (46,660 B, `post_tool_use` alone), `skill-route`
|
|
30
|
+
* (31,183 B), `git-authorization` (30,761 B), `session-eol` (27,708 B) and
|
|
31
|
+
* `handoff-context` (25,220 B). The latency effect of moving THIS one is
|
|
32
|
+
* unmeasured, and the 2026-10-18 council asked for exactly that measurement.
|
|
33
|
+
*
|
|
34
|
+
* An AI council of two providers chose this mechanism on 2026-10-18 for the
|
|
35
|
+
* egress engine — move the module out into a conditional chunk rather than
|
|
36
|
+
* raise the byte ceiling, and give the chunk a measured budget of its own
|
|
37
|
+
* (roadmap decision D9, `src/config/hook-bundle-budget.json`). This applies the
|
|
38
|
+
* same mechanism to a CONCERN, which `hooks/egress_engine_loader.ts` does not
|
|
39
|
+
* cover: a concern is reached through the registry and has a spawn fallback
|
|
40
|
+
* behind it, so the failure shape is different and gets its own loader.
|
|
41
|
+
*
|
|
42
|
+
* WHAT HAPPENS WHEN THE CHUNK IS NOT THERE. Nothing silently stops working.
|
|
43
|
+
* `_run_concern` tries the static registry, then this, then the historical
|
|
44
|
+
* spawn-per-concern path — which is slower and still correct. A missing or
|
|
45
|
+
* mis-digested chunk therefore costs latency, never the concern's effect. That
|
|
46
|
+
* is the whole reason a concern may be moved out at all and an egress engine
|
|
47
|
+
* may not: there is a correct path behind the fast one.
|
|
48
|
+
*
|
|
49
|
+
* WHY `require` AND A COMPUTED SPECIFIER — as in `svg_rules_loader.ts`: a
|
|
50
|
+
* concern runs synchronously, and a literal specifier would be inlined by
|
|
51
|
+
* esbuild, which is the cost this exists to avoid.
|
|
52
|
+
*/
|
|
53
|
+
import * as fs from 'node:fs';
|
|
54
|
+
import { createRequire } from 'node:module';
|
|
55
|
+
import * as path from 'node:path';
|
|
56
|
+
import { fileURLToPath } from 'node:url';
|
|
57
|
+
|
|
58
|
+
import { verifyBundle } from './bundle_integrity.js';
|
|
59
|
+
import type { ConcernMain } from './concern_registry_types.js';
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Manifest `script:` path → the chunk basename beside `dist/hooks/dispatch.js`,
|
|
63
|
+
* and the source module to fall back to when running from the tree.
|
|
64
|
+
*/
|
|
65
|
+
export const LAZY_CONCERNS: Readonly<Record<string, { readonly chunk: string; readonly source: string }>> =
|
|
66
|
+
Object.freeze({
|
|
67
|
+
'src/scripts/chat_history.ts': Object.freeze({
|
|
68
|
+
chunk: 'chat_history.chunk.cjs',
|
|
69
|
+
source: path.join('..', 'chat_history'),
|
|
70
|
+
}),
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
declare const __AGENT_CONFIG_BUNDLE__: boolean | undefined;
|
|
74
|
+
|
|
75
|
+
function isBundled(): boolean {
|
|
76
|
+
return typeof __AGENT_CONFIG_BUNDLE__ !== 'undefined' && __AGENT_CONFIG_BUNDLE__;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/** Where a lazy concern loads from: the sibling chunk when bundled, the source module otherwise. */
|
|
80
|
+
export function lazyConcernSpecifier(script: string, selfUrl: string, bundled: boolean): string | null {
|
|
81
|
+
const entry = LAZY_CONCERNS[script];
|
|
82
|
+
if (entry === undefined) return null;
|
|
83
|
+
const selfPath = fileURLToPath(selfUrl);
|
|
84
|
+
const dir = path.dirname(selfPath);
|
|
85
|
+
if (bundled) return path.join(dir, entry.chunk);
|
|
86
|
+
const ext = selfPath.endsWith('.ts') ? '.ts' : '.js';
|
|
87
|
+
return path.join(dir, `${entry.source}${ext}`);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* From the source tree the concern is TypeScript whose imports name `.js`
|
|
92
|
+
* siblings, which a plain `require` cannot resolve outside a `tsx` process.
|
|
93
|
+
* `tsx`'s own require resolves them; the specifier is computed so esbuild never
|
|
94
|
+
* pulls `tsx` into the bundle, where this branch is not taken.
|
|
95
|
+
*/
|
|
96
|
+
function sourceRequire(req: NodeJS.Require): (id: string, from: string) => unknown {
|
|
97
|
+
try {
|
|
98
|
+
const api = req(['tsx', 'cjs', 'api'].join('/')) as { require?: (id: string, from: string) => unknown };
|
|
99
|
+
if (typeof api.require === 'function') return api.require;
|
|
100
|
+
} catch {
|
|
101
|
+
// tsx absent: a plain require is the only reader left.
|
|
102
|
+
}
|
|
103
|
+
return (id: string) => req(id);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* The concern's `main`, or `null` when the chunk is absent, mis-digested or
|
|
108
|
+
* does not export one. Every failure is a value: the caller falls back to the
|
|
109
|
+
* spawn path, which is what makes a missing chunk a latency cost rather than a
|
|
110
|
+
* lost effect.
|
|
111
|
+
*/
|
|
112
|
+
export function loadLazyConcernUncached(
|
|
113
|
+
script: string,
|
|
114
|
+
selfUrl: string = import.meta.url,
|
|
115
|
+
bundled: boolean = isBundled(),
|
|
116
|
+
): ConcernMain | null {
|
|
117
|
+
try {
|
|
118
|
+
const specifier = lazyConcernSpecifier(script, selfUrl, bundled);
|
|
119
|
+
if (specifier === null || !fs.existsSync(specifier)) return null;
|
|
120
|
+
// No sidecar, a malformed one or a mismatch: the chunk is not the one built.
|
|
121
|
+
if (bundled && verifyBundle(specifier).state !== 'ok') return null;
|
|
122
|
+
const req = createRequire(selfUrl);
|
|
123
|
+
const mod = (bundled ? req(specifier) : sourceRequire(req)(specifier, fileURLToPath(selfUrl))) as Record<
|
|
124
|
+
string,
|
|
125
|
+
unknown
|
|
126
|
+
>;
|
|
127
|
+
const main = mod['main'];
|
|
128
|
+
return typeof main === 'function' ? (main as ConcernMain) : null;
|
|
129
|
+
} catch {
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
const cache = new Map<string, ConcernMain | null>();
|
|
135
|
+
|
|
136
|
+
/** The concern's `main` or `null`; cached per process, failures included. */
|
|
137
|
+
export function loadLazyConcern(script: string, selfUrl: string = import.meta.url): ConcernMain | null {
|
|
138
|
+
const key = `${selfUrl}\u0000${script}`;
|
|
139
|
+
if (cache.has(key)) return cache.get(key) ?? null;
|
|
140
|
+
const loaded = loadLazyConcernUncached(script, selfUrl);
|
|
141
|
+
cache.set(key, loaded);
|
|
142
|
+
return loaded;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/** Test seam: forget every cached load. Never called by the hook path. */
|
|
146
|
+
export function _resetLazyConcernCache(): void {
|
|
147
|
+
cache.clear();
|
|
148
|
+
}
|