@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
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* The only host environment variables this package will ever write.
|
|
3
3
|
*
|
|
4
4
|
* WHY ITS OWN MODULE. One place owns the question "which host variable may this
|
|
5
|
-
* package write", and the answer is a
|
|
5
|
+
* package write", and the answer is a three-row allow table rather than a rule
|
|
6
6
|
* applied at a call site. `install.ts` imports it; nothing else writes host env.
|
|
7
7
|
* The move out of `install.ts` also keeps that file, already far over its size
|
|
8
8
|
* cap, from paying for this feature — the same reason the doctor's
|
|
@@ -13,12 +13,15 @@
|
|
|
13
13
|
* the host's update-disabled resolver, the blanket one as its THIRD RUNG
|
|
14
14
|
* (measured on Claude Code 2.1.284, `docs/setup/host-traffic-environment.md`).
|
|
15
15
|
* A writer able to express either could disable a consumer's security updates.
|
|
16
|
-
* Owner-decided 2026-09-30 that it never may, and an allow table
|
|
17
|
-
*
|
|
18
|
-
*
|
|
16
|
+
* Owner-decided 2026-09-30 that it never may, and an allow table holds that
|
|
17
|
+
* where a deny list would have to stay complete as the host grows more
|
|
18
|
+
* variables.
|
|
19
19
|
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
20
|
+
* Two writable entries are request SIZE caps; the third, owner-approved
|
|
21
|
+
* 2026-10-14, is the host's
|
|
22
|
+
* subagent CONCURRENCY cap. None suppresses a call, an update check or a
|
|
23
|
+
* download — they bound how big a request is or how many workers run at once,
|
|
24
|
+
* never whether a call happens.
|
|
22
25
|
*/
|
|
23
26
|
|
|
24
27
|
import * as fs from 'node:fs';
|
|
@@ -26,12 +29,28 @@ import * as path from 'node:path';
|
|
|
26
29
|
|
|
27
30
|
import * as YAML from 'yaml';
|
|
28
31
|
|
|
29
|
-
/**
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
32
|
+
/**
|
|
33
|
+
* The concurrency row's ceiling. The row exists to bound fan-out, so a value
|
|
34
|
+
* past this is refused rather than written: an unbounded cap would turn the
|
|
35
|
+
* one row that limits spend into a way to raise it.
|
|
36
|
+
*/
|
|
37
|
+
export const MAX_CONCURRENT_SUBAGENTS = 64;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* The allow table. Three rows, and adding a fourth is a governance change.
|
|
41
|
+
* `settingsKey` is the dotted path into the settings document.
|
|
42
|
+
*/
|
|
43
|
+
export const WRITABLE_HOST_ENV: readonly {
|
|
44
|
+
readonly variable: string;
|
|
45
|
+
readonly settingsKey: string;
|
|
46
|
+
readonly max?: number;
|
|
47
|
+
}[] = [
|
|
48
|
+
{ variable: 'BASH_MAX_OUTPUT_LENGTH', settingsKey: 'host_environment.request_size_caps.bash_max_output_length' },
|
|
49
|
+
{ variable: 'MAX_MCP_OUTPUT_TOKENS', settingsKey: 'host_environment.request_size_caps.max_mcp_output_tokens' },
|
|
50
|
+
{ variable: 'CLAUDE_CODE_MAX_CONCURRENT_SUBAGENTS', settingsKey: 'subagents.max_parallel', max: MAX_CONCURRENT_SUBAGENTS },
|
|
33
51
|
];
|
|
34
52
|
|
|
53
|
+
|
|
35
54
|
/** Where a project's settings document lives, canonical first. */
|
|
36
55
|
const SETTINGS_CANDIDATES: readonly string[][] = [
|
|
37
56
|
['agents', 'settings', '.agent-settings.yml'],
|
|
@@ -78,14 +97,16 @@ export function readSettingsDoc(projectRoot: string): unknown | null {
|
|
|
78
97
|
* writing a value the host would silently reinterpret is worse than writing none.
|
|
79
98
|
*/
|
|
80
99
|
export function hostEnvBlock(settings: unknown): Record<string, string> | null {
|
|
81
|
-
const root = settings as Record<string, unknown> | null | undefined;
|
|
82
|
-
const he = root?.['host_environment'] as Record<string, unknown> | undefined;
|
|
83
|
-
const caps = he?.['request_size_caps'] as Record<string, unknown> | undefined;
|
|
84
|
-
if (caps === undefined) return null;
|
|
85
100
|
const out: Record<string, string> = {};
|
|
86
|
-
for (const { variable, settingsKey } of WRITABLE_HOST_ENV) {
|
|
87
|
-
|
|
88
|
-
|
|
101
|
+
for (const { variable, settingsKey, max } of WRITABLE_HOST_ENV) {
|
|
102
|
+
let v: unknown = settings;
|
|
103
|
+
for (const part of settingsKey.split('.')) {
|
|
104
|
+
v = v !== null && typeof v === 'object' ? (v as Record<string, unknown>)[part] : undefined;
|
|
105
|
+
}
|
|
106
|
+
// A safe integer, so `String(v)` is the digits the host parses back.
|
|
107
|
+
if (typeof v !== 'number' || !Number.isSafeInteger(v) || v <= 0) continue;
|
|
108
|
+
if (max !== undefined && v > max) continue;
|
|
109
|
+
out[variable] = String(v);
|
|
89
110
|
}
|
|
90
111
|
return Object.keys(out).length === 0 ? null : out;
|
|
91
112
|
}
|
|
@@ -106,6 +127,6 @@ export function withHostEnv(
|
|
|
106
127
|
): Record<string, unknown> {
|
|
107
128
|
const env = hostEnvBlock(readSettingsDoc(projectRoot));
|
|
108
129
|
if (env === null) return bridge;
|
|
109
|
-
announce(`.claude/settings.json: wrote ${Object.keys(env).join(', ')} (request-size caps)`);
|
|
130
|
+
announce(`.claude/settings.json: wrote ${Object.keys(env).join(', ')} (request-size and concurrency caps)`);
|
|
110
131
|
return { ...bridge, env };
|
|
111
132
|
}
|
|
@@ -11,9 +11,11 @@
|
|
|
11
11
|
* returned zero hits before this file.
|
|
12
12
|
*
|
|
13
13
|
* THE MECHANISM, AS DOCUMENTED UPSTREAM (code.claude.com/docs/en/skills and
|
|
14
|
-
* anthropics/claude-code#64606, both read 2026-08-22
|
|
15
|
-
*
|
|
16
|
-
*
|
|
14
|
+
* anthropics/claude-code#64606, both read 2026-08-22; the page re-read on
|
|
15
|
+
* 2026-10-14 keeps the 1% and the 1,536 and no longer prints the ≈8,000
|
|
16
|
+
* illustration). Claude Code lists every skill NAME, and keeps DESCRIPTIONS
|
|
17
|
+
* only up to a fraction of the context window — 1% by default, which the
|
|
18
|
+
* 2026-08-22 page illustrated as ≈8,000 characters on a 200k window — filling by
|
|
17
19
|
* invocation frequency and capping each entry at 1,536 characters. The fraction
|
|
18
20
|
* is consumer-settable as `skillListingBudgetFraction`.
|
|
19
21
|
*
|
|
@@ -83,7 +85,12 @@ export interface HostListingModelResult {
|
|
|
83
85
|
assumptions: readonly ModelAssumption[];
|
|
84
86
|
}
|
|
85
87
|
|
|
86
|
-
/**
|
|
88
|
+
/**
|
|
89
|
+
* Claude Code defaults, not measured in this repo. `fraction` and
|
|
90
|
+
* `perEntryCapChars` are documented (read 2026-08-22, re-read 2026-10-14).
|
|
91
|
+
* `charsPerToken` is inferred from an illustration the 2026-08-22 page printed
|
|
92
|
+
* and the 2026-10-14 page no longer does — see `budget-unit-is-chars`.
|
|
93
|
+
*/
|
|
87
94
|
export const CLAUDE_CODE_LISTING_DEFAULTS = {
|
|
88
95
|
fraction: 0.01,
|
|
89
96
|
perEntryCapChars: 1536,
|
|
@@ -96,9 +103,9 @@ const ASSUMPTIONS: readonly ModelAssumption[] = [
|
|
|
96
103
|
id: 'budget-unit-is-chars',
|
|
97
104
|
provenance: 'upstream-prose',
|
|
98
105
|
why:
|
|
99
|
-
'The docs give the budget as a fraction of the context window (tokens)
|
|
100
|
-
'
|
|
101
|
-
'per token. That ratio is inferred
|
|
106
|
+
'The docs give the budget as a fraction of the context window (tokens); the ' +
|
|
107
|
+
'2026-08-22 read illustrated it as "≈8,000 characters on 200k" (gone by 2026-10-14), ' +
|
|
108
|
+
'which only reconciles at 4 chars per token. That ratio is inferred, never stated.',
|
|
102
109
|
},
|
|
103
110
|
{
|
|
104
111
|
id: 'fill-order-is-invocation-frequency',
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Class-tag redaction of identifiers for stores that keep text (knowledge
|
|
3
|
+
* ingestion, cross-repo retrieval).
|
|
4
|
+
*
|
|
5
|
+
* Detection is the rule table's identifier rows, read recall-first: a store
|
|
6
|
+
* that persists text has no reviewer after it, so a missed value is the costly
|
|
7
|
+
* error and a context word is not required here. The rows' checksums still
|
|
8
|
+
* hold — a number that fails Luhn is not a card, a string that fails mod-97 is
|
|
9
|
+
* not an IBAN. The tag spelling and the counter keys are this consumer's.
|
|
10
|
+
*/
|
|
11
|
+
import { detect, type EgressRule, IDENTIFIER_RULES, replaceSpans } from './egress_rules.js';
|
|
12
|
+
|
|
13
|
+
/** The identifier rows with every context requirement dropped. */
|
|
14
|
+
export const STORAGE_IDENTIFIER_RULES: readonly EgressRule[] = IDENTIFIER_RULES.map(({ context: _context, ...rest }) => rest);
|
|
15
|
+
|
|
16
|
+
/** Counter key and tag per placeholder type; `CC` predates the table's `CARD`. */
|
|
17
|
+
const TAG: Readonly<Record<string, string>> = { CARD: 'CC' };
|
|
18
|
+
|
|
19
|
+
export function redactIdentifiers(text: string, counters: Record<string, number>): string {
|
|
20
|
+
const spans = detect(text, STORAGE_IDENTIFIER_RULES);
|
|
21
|
+
return replaceSpans(text, spans, (s) => {
|
|
22
|
+
const tag = TAG[s.type] ?? s.type;
|
|
23
|
+
counters[tag] = (counters[tag] ?? 0) + 1;
|
|
24
|
+
return `[${tag}]`;
|
|
25
|
+
});
|
|
26
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The impact-driven bump rule, scored against the recorded history.
|
|
3
|
+
*
|
|
4
|
+
* Nothing in `release.ts` calls this: changing how releases are numbered is an
|
|
5
|
+
* owner decision that has not been taken. Until it is, the rule only scores
|
|
6
|
+
* historical rows, so the decision can be made on a measured replay.
|
|
7
|
+
*/
|
|
8
|
+
import { CONSUMER_IMPACT_VALUES, IMPACT_RANK, type ConsumerImpact } from './consumer_impact.js';
|
|
9
|
+
|
|
10
|
+
export type Bump = 'major' | 'minor' | 'patch';
|
|
11
|
+
|
|
12
|
+
export interface BumpInput {
|
|
13
|
+
readonly impact: ConsumerImpact;
|
|
14
|
+
readonly breaking: boolean;
|
|
15
|
+
readonly has_minor_type: boolean;
|
|
16
|
+
readonly touches_major_surface: boolean;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export function impact_bump(input: BumpInput): Bump {
|
|
20
|
+
if (input.impact === 'action' || input.touches_major_surface) return 'major';
|
|
21
|
+
if (input.breaking || input.has_minor_type) return 'minor';
|
|
22
|
+
return 'patch';
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export interface ImpactRow {
|
|
26
|
+
readonly version: string;
|
|
27
|
+
/** `null` when the last cell is not a value from the enum. */
|
|
28
|
+
readonly impact: ConsumerImpact | null;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/** Rows of the by-major table: first cell `**X.0.0**`, last cell the impact. */
|
|
32
|
+
export function parse_impact_rows(markdown: string): ImpactRow[] {
|
|
33
|
+
const rows: ImpactRow[] = [];
|
|
34
|
+
for (const line of markdown.split('\n')) {
|
|
35
|
+
const m = /^\| \*\*(\d+\.0\.0)\*\* \|.*\| ([^|]*?) \|\s*$/.exec(line);
|
|
36
|
+
if (m === null) continue;
|
|
37
|
+
const cell = m[2] as string;
|
|
38
|
+
const impact = (CONSUMER_IMPACT_VALUES as readonly string[]).includes(cell) ? (cell as ConsumerImpact) : null;
|
|
39
|
+
rows.push({ version: m[1] as string, impact });
|
|
40
|
+
}
|
|
41
|
+
return rows;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Every recorded row was cut as a major because it carried a breaking subject,
|
|
46
|
+
* so each replays with `breaking: true`. The surface half of the rule is not
|
|
47
|
+
* scored: the record has no column for it, and inferring one would re-judge
|
|
48
|
+
* history. An unreadable impact replays as `major`, never as a downgrade.
|
|
49
|
+
*/
|
|
50
|
+
export function replay_majors(rows: readonly ImpactRow[]): Map<string, Bump> {
|
|
51
|
+
const strongest = new Map<string, ConsumerImpact | null>();
|
|
52
|
+
for (const row of rows) {
|
|
53
|
+
const prev = strongest.get(row.version);
|
|
54
|
+
if (prev === undefined) {
|
|
55
|
+
strongest.set(row.version, row.impact);
|
|
56
|
+
} else if (prev !== null && (row.impact === null || IMPACT_RANK[row.impact] > IMPACT_RANK[prev])) {
|
|
57
|
+
strongest.set(row.version, row.impact);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
const out = new Map<string, Bump>();
|
|
61
|
+
for (const [version, impact] of strongest) {
|
|
62
|
+
out.set(
|
|
63
|
+
version,
|
|
64
|
+
impact === null
|
|
65
|
+
? 'major'
|
|
66
|
+
: impact_bump({ impact, breaking: true, has_minor_type: false, touches_major_surface: false }),
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
return out;
|
|
70
|
+
}
|
|
@@ -33,8 +33,10 @@
|
|
|
33
33
|
import * as fs from 'node:fs';
|
|
34
34
|
import * as path from 'node:path';
|
|
35
35
|
|
|
36
|
+
import { ROADMAP_ROOT_REL, scan as scanArtifactLocation } from './agent_artifact_location.js';
|
|
36
37
|
import type { WiringCheck } from './runtime_wiring_checks.js';
|
|
37
38
|
import { TOOL_TO_HOST, residualReport } from './mcp_consent_residual.js';
|
|
39
|
+
import { checkSkillReach } from './skill_reach.js';
|
|
38
40
|
|
|
39
41
|
/**
|
|
40
42
|
* Root agent-instruction files, as a multi-vendor ecosystem convention rather
|
|
@@ -508,11 +510,59 @@ export function checkMcpConsentResidual(): WiringCheck {
|
|
|
508
510
|
};
|
|
509
511
|
}
|
|
510
512
|
|
|
513
|
+
/**
|
|
514
|
+
* A roadmap-shaped file outside the roadmap root in the consumer's tree — the
|
|
515
|
+
* outward half `check_agent_artifact_location` names, running the same detector.
|
|
516
|
+
*
|
|
517
|
+
* A REPORT, never a move: `doctor` is read-only, and relocating a consumer's
|
|
518
|
+
* file without asking is the ownership break this package is ending elsewhere.
|
|
519
|
+
* `warn` rather than `fail` because a monorepo may keep roadmaps elsewhere on
|
|
520
|
+
* purpose — the finding names where this package's mechanisms would look, it
|
|
521
|
+
* does not assert the file is wrong. So a default run and `--strict` both exit
|
|
522
|
+
* 0 on it; only `--strict --strict-level warn` fails, which is the caller
|
|
523
|
+
* choosing that bar.
|
|
524
|
+
*/
|
|
525
|
+
export function checkArtifactLocation(projectRoot: string): WiringCheck {
|
|
526
|
+
const id = 'artifact-location';
|
|
527
|
+
const { findings, scanned } = scanArtifactLocation(projectRoot);
|
|
528
|
+
if (scanned === 0) {
|
|
529
|
+
return { id, status: 'skipped', message: 'no markdown file in this tree', remedy: '' };
|
|
530
|
+
}
|
|
531
|
+
if (findings.length === 0) {
|
|
532
|
+
return {
|
|
533
|
+
id,
|
|
534
|
+
status: 'ok',
|
|
535
|
+
message: `no roadmap-shaped file outside ${ROADMAP_ROOT_REL}/ (${scanned} markdown file(s) read)`,
|
|
536
|
+
remedy: '',
|
|
537
|
+
};
|
|
538
|
+
}
|
|
539
|
+
const lines = findings.map(
|
|
540
|
+
(f) => `${f.rel} → ${ROADMAP_ROOT_REL}/${path.posix.basename(f.rel)} (carries ${f.signals.join(', ')})`,
|
|
541
|
+
);
|
|
542
|
+
return {
|
|
543
|
+
id,
|
|
544
|
+
status: 'warn',
|
|
545
|
+
message:
|
|
546
|
+
`${findings.length} roadmap-shaped file(s) outside ${ROADMAP_ROOT_REL}/, where no roadmap ` +
|
|
547
|
+
`mechanism of this package reads them: ${lines.join(' · ')}`,
|
|
548
|
+
remedy:
|
|
549
|
+
`move each to the target named above if it is a roadmap; doctor never moves it for you. ` +
|
|
550
|
+
'If it is not a roadmap, it carries one of the three signals it should not',
|
|
551
|
+
};
|
|
552
|
+
}
|
|
553
|
+
|
|
511
554
|
// ---------------------------------------------------------------------------
|
|
512
555
|
// Wiring — the shape `cmd_doctor` consumes
|
|
513
556
|
// ---------------------------------------------------------------------------
|
|
514
557
|
|
|
515
|
-
export const REACH_CHECK_IDS = [
|
|
558
|
+
export const REACH_CHECK_IDS = [
|
|
559
|
+
'instruction-path-reach',
|
|
560
|
+
'version-axis',
|
|
561
|
+
'override-set',
|
|
562
|
+
'mcp-consent-residual',
|
|
563
|
+
'artifact-location',
|
|
564
|
+
'skill-reach',
|
|
565
|
+
] as const;
|
|
516
566
|
|
|
517
567
|
export function reachRunners(opts: {
|
|
518
568
|
projectRoot: string;
|
|
@@ -523,5 +573,7 @@ export function reachRunners(opts: {
|
|
|
523
573
|
'version-axis': () => checkVersionAxis(opts.projectRoot, opts.resolvableVersion),
|
|
524
574
|
'override-set': () => checkOverrideSet(opts.projectRoot),
|
|
525
575
|
'mcp-consent-residual': () => checkMcpConsentResidual(),
|
|
576
|
+
'artifact-location': () => checkArtifactLocation(opts.projectRoot),
|
|
577
|
+
'skill-reach': () => checkSkillReach(),
|
|
526
578
|
};
|
|
527
579
|
}
|
|
@@ -59,6 +59,7 @@ import {
|
|
|
59
59
|
} from './global_deploy_inventory.js';
|
|
60
60
|
import { DEFAULT_EVENT4U_ROOT_RELATIVE } from './user_global_paths.js';
|
|
61
61
|
import { ruleBody, splitFrontmatter } from './rule_law_section.js';
|
|
62
|
+
import { normaliseLayerText } from './installed_layer_normalise.js';
|
|
62
63
|
|
|
63
64
|
/** How many files the per-directory ranking carries. Step 0.1 fixes it at 20. */
|
|
64
65
|
export const TOP_FILES = 20;
|
|
@@ -72,6 +73,14 @@ export interface RuleFileReading {
|
|
|
72
73
|
readonly file: string;
|
|
73
74
|
/** Characters AFTER the frontmatter and block-comment strip. */
|
|
74
75
|
readonly chars: number;
|
|
76
|
+
/**
|
|
77
|
+
* {@link chars}, with every absolute path substituted for a fixed token.
|
|
78
|
+
*
|
|
79
|
+
* The figure a comparison across two machines or two revisions may be read
|
|
80
|
+
* in — see `installed_layer_normalise.ts` for why `chars` alone cannot be.
|
|
81
|
+
* NEVER the answer to "what does the host load": that is `chars`.
|
|
82
|
+
*/
|
|
83
|
+
readonly normalised_chars: number;
|
|
75
84
|
/** False when the file carries a `paths:` key — then the host loads it on a path match. */
|
|
76
85
|
readonly unconditional: boolean;
|
|
77
86
|
/** True when the installed-tools manifest records this path, in either state. */
|
|
@@ -89,6 +98,8 @@ export interface LayerReading {
|
|
|
89
98
|
readonly files: number;
|
|
90
99
|
readonly unconditional: number;
|
|
91
100
|
readonly chars: number;
|
|
101
|
+
/** {@link RuleFileReading.normalised_chars}, summed over the directory. */
|
|
102
|
+
readonly normalised_chars: number;
|
|
92
103
|
readonly package_owned: number;
|
|
93
104
|
readonly foreign: number;
|
|
94
105
|
/**
|
|
@@ -199,6 +210,8 @@ export interface InstalledLayerReport {
|
|
|
199
210
|
readonly files: number;
|
|
200
211
|
readonly unconditional: number;
|
|
201
212
|
readonly chars: number;
|
|
213
|
+
/** {@link LayerReading.normalised_chars}, summed over every layer. */
|
|
214
|
+
readonly normalised_chars: number;
|
|
202
215
|
readonly package_owned: number;
|
|
203
216
|
readonly foreign: number;
|
|
204
217
|
readonly package_owned_chars: number;
|
|
@@ -313,6 +326,7 @@ export function readLayer(
|
|
|
313
326
|
files: 0,
|
|
314
327
|
unconditional: 0,
|
|
315
328
|
chars: 0,
|
|
329
|
+
normalised_chars: 0,
|
|
316
330
|
package_owned: 0,
|
|
317
331
|
foreign: 0,
|
|
318
332
|
package_owned_chars: 0,
|
|
@@ -351,6 +365,10 @@ export function readLayer(
|
|
|
351
365
|
// a host loads" and "what a delivery carries" cannot drift into two
|
|
352
366
|
// spellings of the same measurement.
|
|
353
367
|
chars: ruleBody(text).length,
|
|
368
|
+
// THE SAME STRING, MEASURED TWICE. `chars` is what the host loads;
|
|
369
|
+
// this is that text with every absolute path substituted, so two
|
|
370
|
+
// machines with different package roots read one figure in common.
|
|
371
|
+
normalised_chars: normaliseLayerText(ruleBody(text)).length,
|
|
354
372
|
unconditional: isUnconditional(text),
|
|
355
373
|
package_owned: owned,
|
|
356
374
|
});
|
|
@@ -370,6 +388,7 @@ export function readLayer(
|
|
|
370
388
|
files: readings.length,
|
|
371
389
|
unconditional: readings.filter((r) => r.unconditional).length,
|
|
372
390
|
chars: readings.reduce((n, r) => n + r.chars, 0),
|
|
391
|
+
normalised_chars: readings.reduce((n, r) => n + r.normalised_chars, 0),
|
|
373
392
|
package_owned: readings.filter((r) => r.package_owned).length,
|
|
374
393
|
foreign: readings.filter((r) => !r.package_owned).length,
|
|
375
394
|
package_owned_chars: readings.reduce((n, r) => n + (r.package_owned ? r.chars : 0), 0),
|
|
@@ -827,6 +846,7 @@ export function buildInstalledLayerReport(opts: ReportOptions): InstalledLayerRe
|
|
|
827
846
|
files: acc.files + l.files,
|
|
828
847
|
unconditional: acc.unconditional + l.unconditional,
|
|
829
848
|
chars: acc.chars + l.chars,
|
|
849
|
+
normalised_chars: acc.normalised_chars + l.normalised_chars,
|
|
830
850
|
package_owned: acc.package_owned + l.package_owned,
|
|
831
851
|
foreign: acc.foreign + l.foreign,
|
|
832
852
|
package_owned_chars: acc.package_owned_chars + l.package_owned_chars,
|
|
@@ -838,6 +858,7 @@ export function buildInstalledLayerReport(opts: ReportOptions): InstalledLayerRe
|
|
|
838
858
|
files: 0,
|
|
839
859
|
unconditional: 0,
|
|
840
860
|
chars: 0,
|
|
861
|
+
normalised_chars: 0,
|
|
841
862
|
package_owned: 0,
|
|
842
863
|
foreign: 0,
|
|
843
864
|
package_owned_chars: 0,
|
|
@@ -923,6 +944,16 @@ export function renderInstalledLayerReport(report: InstalledLayerReport): string
|
|
|
923
944
|
`(${String(t.unconditional_chars)} standing + ${String(t.scoped_chars)} path-scoped), ` +
|
|
924
945
|
`${String(t.package_owned)} package-owned / ${String(t.foreign)} foreign`,
|
|
925
946
|
);
|
|
947
|
+
// THE COMPARABLE FIGURE, ON ITS OWN LINE AND LABELLED AS WHAT IT IS. The
|
|
948
|
+
// TOTAL above is what the host loads on THIS machine and moves with the
|
|
949
|
+
// package root; this one does not, and is therefore the only one two runs
|
|
950
|
+
// may be compared in. Printing them adjacent is deliberate — a reader who
|
|
951
|
+
// sees one number cannot tell which question it answers.
|
|
952
|
+
out.push(
|
|
953
|
+
` TOTAL (normalised) — ${String(t.normalised_chars)} chars, ` +
|
|
954
|
+
'every absolute path substituted; comparable across machines and revisions, ' +
|
|
955
|
+
'NOT what the host loads',
|
|
956
|
+
);
|
|
926
957
|
out.push(...renderHostLimitRows(report.limits));
|
|
927
958
|
return out;
|
|
928
959
|
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Make the installed-layer character measurement independent of where the
|
|
3
|
+
* package happens to live on the machine that measured it.
|
|
4
|
+
*
|
|
5
|
+
* WHY THIS EXISTS, AND WHY IT IS NOT A CEILING. D7 of
|
|
6
|
+
* `road-to-an-installed-layer-that-is-thinned` records that a ceiling over the
|
|
7
|
+
* installed layer "may not rest on a STORED baseline, in any shape, until the
|
|
8
|
+
* measurement is environment-independent", and names two acceptable forms: a
|
|
9
|
+
* normalised total, or a base-ref comparison that stores nothing. This module
|
|
10
|
+
* is the first form and nothing more — it changes what the report CAN be read
|
|
11
|
+
* against and introduces no gate, no threshold and no stored number. The
|
|
12
|
+
* ratchet the council returned REQUEST_CHANGES on (2026-10-12, one seat
|
|
13
|
+
* present) was a stored baseline over an UN-normalised figure; that mechanism
|
|
14
|
+
* is untouched here and stays rejected.
|
|
15
|
+
*
|
|
16
|
+
* THE DEFECT, CONCRETELY. Every thinned stub the installer writes ends in an
|
|
17
|
+
* absolute body pointer built by `absoluteBodyLinkPrefix`, so the layer's
|
|
18
|
+
* character total moves by one character per stub for every character of
|
|
19
|
+
* package-root prefix — 89 characters per character on the real corpus. A
|
|
20
|
+
* number that moves with the runner's directory name measures the runner as
|
|
21
|
+
* much as the corpus, which is why `estate-count-budget.json` was deleted from
|
|
22
|
+
* this repository.
|
|
23
|
+
*
|
|
24
|
+
* SUBSTITUTED, NOT STRIPPED. Every absolute path becomes a fixed-width token
|
|
25
|
+
* rather than vanishing, so the figure still accounts for the fact that a
|
|
26
|
+
* pointer is there. Stripping would make a stub with a pointer and a stub
|
|
27
|
+
* without one read alike, which is a different measurement than the one a
|
|
28
|
+
* ceiling wants.
|
|
29
|
+
*
|
|
30
|
+
* THE NORMALISED FIGURE IS NOT "WHAT THE HOST LOADS". The host loads the real
|
|
31
|
+
* text, absolute path and all, and {@link
|
|
32
|
+
* import('./installed_layer.js').LayerReading.chars} stays the figure for that
|
|
33
|
+
* question. This one answers "is the corpus growing", which is the only
|
|
34
|
+
* question a comparison across two machines or two revisions can honestly ask.
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* What every absolute path is replaced with.
|
|
39
|
+
*
|
|
40
|
+
* Fixed width by construction — it contains no path separator, which is also
|
|
41
|
+
* what makes {@link normaliseLayerText} idempotent.
|
|
42
|
+
*/
|
|
43
|
+
export const ABSOLUTE_PATH_TOKEN = '<abs>';
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* A POSIX absolute path: two or more `/`-led segments.
|
|
47
|
+
*
|
|
48
|
+
* TWO, NOT ONE. A single segment admits ordinary prose — `and/or`, a bare
|
|
49
|
+
* `/rules` in a sentence — and a one-segment path cannot carry a root prefix
|
|
50
|
+
* long enough to be the drift this module is about.
|
|
51
|
+
*
|
|
52
|
+
* The lookbehind refuses a start that is already inside something: a word
|
|
53
|
+
* character (so `and/or` is prose), another separator (so the `//` of a URL
|
|
54
|
+
* authority is not entered), and `:` (so a scheme is not split).
|
|
55
|
+
*/
|
|
56
|
+
const POSIX_ABSOLUTE = /(?<![A-Za-z0-9._~%@+:/\\-])(?:\/[A-Za-z0-9._@+~-]+){2,}/g;
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* A Windows drive path. The installer runs there too, and its pointer carries
|
|
60
|
+
* the same drift with `\` for `/`.
|
|
61
|
+
*/
|
|
62
|
+
const WINDOWS_ABSOLUTE = /(?<![A-Za-z0-9._~%@+:/\\-])[A-Za-z]:(?:[\\/][A-Za-z0-9._@+~-]+)+/g;
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Substitute every absolute-path occurrence in one rule's loaded text.
|
|
66
|
+
*
|
|
67
|
+
* Pure, total and idempotent: the token contains no separator, so a second
|
|
68
|
+
* pass finds nothing left to replace. Callers measure `.length` of the result;
|
|
69
|
+
* they never ship it as text a host reads.
|
|
70
|
+
*/
|
|
71
|
+
export function normaliseLayerText(text: string): string {
|
|
72
|
+
return text
|
|
73
|
+
.replace(WINDOWS_ABSOLUTE, ABSOLUTE_PATH_TOKEN)
|
|
74
|
+
.replace(POSIX_ABSOLUTE, ABSOLUTE_PATH_TOKEN);
|
|
75
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One captured `InstructionsLoaded` line, classified into what the arrival
|
|
3
|
+
* record is built from. Runs at read time, never in the hook.
|
|
4
|
+
*
|
|
5
|
+
* The host fires the event once per loaded `CLAUDE.md` / `.claude/rules/*.md`,
|
|
6
|
+
* with `file_path`, `memory_type`, `load_reason` and, for lazy loads, the
|
|
7
|
+
* triggering path. Anything this cannot read with certainty becomes an
|
|
8
|
+
* `unknown` line — never an arrival — so a host that changes the payload
|
|
9
|
+
* degrades the record to "not observed" instead of to a false "loaded".
|
|
10
|
+
*/
|
|
11
|
+
import { captureInstructionsLoaded, type CaptureLine } from './instructions_loaded_event.js';
|
|
12
|
+
|
|
13
|
+
/** The `load_reason` values the host documents. Any other value is `unknown`. */
|
|
14
|
+
export const LOAD_REASONS = ['session_start', 'nested_traversal', 'path_glob_match', 'include', 'compact'] as const;
|
|
15
|
+
export type LoadReason = (typeof LOAD_REASONS)[number];
|
|
16
|
+
|
|
17
|
+
/** A payload that is not an object at all carries no session and is never written, so it has no reason here. */
|
|
18
|
+
export type UnknownWhy = 'event-mismatch' | 'no-file-path' | 'unknown-load-reason';
|
|
19
|
+
|
|
20
|
+
interface LineBase {
|
|
21
|
+
readonly v: 1;
|
|
22
|
+
readonly ts: string;
|
|
23
|
+
readonly session: string | null;
|
|
24
|
+
readonly host_version: string | null;
|
|
25
|
+
readonly launch: string | null;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export interface LoadedLine extends LineBase {
|
|
29
|
+
readonly event: 'loaded';
|
|
30
|
+
readonly file: string;
|
|
31
|
+
readonly kind: 'rule' | 'memory' | 'other';
|
|
32
|
+
readonly scope: 'user' | 'project';
|
|
33
|
+
readonly reason: LoadReason;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export interface UnknownLine extends LineBase {
|
|
37
|
+
readonly event: 'unknown';
|
|
38
|
+
readonly why: UnknownWhy;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export type ObserverLine = LoadedLine | UnknownLine;
|
|
42
|
+
|
|
43
|
+
/** `claude-code_2-1-299_agent` → `2.1.299`; anything else → null. */
|
|
44
|
+
export function hostVersionFromAgent(agent: string | null | undefined): string | null {
|
|
45
|
+
const m = /^claude-code_(\d+)-(\d+)-(\d+)(?:_|$)/.exec(agent ?? '');
|
|
46
|
+
return m ? `${m[1]}.${m[2]}.${m[3]}` : null;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export function hostVersionFromEnv(env: NodeJS.ProcessEnv): string | null {
|
|
50
|
+
return hostVersionFromAgent(env['AI_AGENT']);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export function classifyCapture(c: CaptureLine): ObserverLine {
|
|
54
|
+
const base: LineBase = {
|
|
55
|
+
v: 1,
|
|
56
|
+
ts: c.ts,
|
|
57
|
+
session: c.session,
|
|
58
|
+
host_version: hostVersionFromAgent(c.agent),
|
|
59
|
+
launch: c.launch !== null && /^[a-z][a-z0-9-]{0,31}$/.test(c.launch) ? c.launch : null,
|
|
60
|
+
};
|
|
61
|
+
const unknown = (why: UnknownWhy): UnknownLine => ({ ...base, event: 'unknown', why });
|
|
62
|
+
if (c.name !== 'InstructionsLoaded') return unknown('event-mismatch');
|
|
63
|
+
if (c.file === null || !c.file.endsWith('.md')) return unknown('no-file-path');
|
|
64
|
+
if (!(LOAD_REASONS as readonly (string | null)[]).includes(c.reason)) return unknown('unknown-load-reason');
|
|
65
|
+
const kind = c.rules ? 'rule' : c.file === 'CLAUDE.md' ? 'memory' : 'other';
|
|
66
|
+
return { ...base, event: 'loaded', file: c.file, kind, scope: c.user ? 'user' : 'project', reason: c.reason as LoadReason };
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/** Capture and classify in one step — the path a fixture takes. */
|
|
70
|
+
export function classifyInstructionsLoaded(
|
|
71
|
+
payload: unknown,
|
|
72
|
+
ctx: { readonly ts: string; readonly home: string; readonly env: NodeJS.ProcessEnv },
|
|
73
|
+
): ObserverLine {
|
|
74
|
+
return classifyCapture(captureInstructionsLoaded(payload, ctx.ts, ctx.home, ctx.env));
|
|
75
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What the `InstructionsLoaded` observer writes for one host event — the
|
|
3
|
+
* capture, not the verdict. It runs inside the dispatcher bundle on every
|
|
4
|
+
* instruction load, so it does the least that keeps the line private: every
|
|
5
|
+
* string is kept only when it is a short id-shaped token, and the file path is
|
|
6
|
+
* reduced to its basename plus two booleans before anything is written. Whether
|
|
7
|
+
* the event is a valid load is decided later, outside the bundle, by
|
|
8
|
+
* `instructions_loaded_classify.ts`.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
export interface CaptureLine {
|
|
12
|
+
readonly v: 2;
|
|
13
|
+
readonly ts: string;
|
|
14
|
+
/** The host's own agent string, e.g. `claude-code_2-1-299_agent`. */
|
|
15
|
+
readonly agent: string | null;
|
|
16
|
+
readonly launch: string | null;
|
|
17
|
+
readonly session: string | null;
|
|
18
|
+
readonly name: string | null;
|
|
19
|
+
readonly reason: string | null;
|
|
20
|
+
readonly file: string | null;
|
|
21
|
+
/** The path ran through a `.claude/rules/` directory. */
|
|
22
|
+
readonly rules: boolean;
|
|
23
|
+
/** The path sat under the user's own `~/.claude/`. */
|
|
24
|
+
readonly user: boolean;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/** A token that is safe as a filename and carries no path: starts alphanumeric, no separators. */
|
|
28
|
+
export const ID_SHAPE_RE = /^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/;
|
|
29
|
+
|
|
30
|
+
/** The one rule for which directory entries are session files — the reader and the prune share it. */
|
|
31
|
+
export const isSessionFile = (f: string): boolean => f.endsWith('.jsonl') && ID_SHAPE_RE.test(f.slice(0, -6));
|
|
32
|
+
|
|
33
|
+
const idShaped = (v: unknown): string | null => (typeof v === 'string' && ID_SHAPE_RE.test(v) ? v : null);
|
|
34
|
+
|
|
35
|
+
export function captureInstructionsLoaded(payload: unknown, ts: string, home: string, env: NodeJS.ProcessEnv): CaptureLine {
|
|
36
|
+
const p = (typeof payload === 'object' && payload !== null && !Array.isArray(payload) ? payload : {}) as Record<string, unknown>;
|
|
37
|
+
const raw = String(p['file_path'] ?? '').replace(/\\/g, '/');
|
|
38
|
+
// Only an absolute path with no `.`/`..` segment and no doubled separator is read at all.
|
|
39
|
+
const norm = /^([A-Za-z]:)?\//.test(raw) && !/\/\.{0,2}\//.test(raw) ? raw : '';
|
|
40
|
+
const h = home.replace(/\\/g, '/').replace(/\/+$/, '');
|
|
41
|
+
return {
|
|
42
|
+
v: 2,
|
|
43
|
+
ts,
|
|
44
|
+
agent: idShaped(env['AI_AGENT']),
|
|
45
|
+
launch: idShaped(env['CLAUDE_CODE_ENTRYPOINT']),
|
|
46
|
+
session: idShaped(p['session_id']),
|
|
47
|
+
name: idShaped(p['hook_event_name']),
|
|
48
|
+
reason: idShaped(p['load_reason']),
|
|
49
|
+
file: idShaped(norm.slice(norm.lastIndexOf('/') + 1)),
|
|
50
|
+
rules: norm.includes('/.claude/rules/'),
|
|
51
|
+
user: h !== '' && norm.startsWith(`${h}/.claude/`),
|
|
52
|
+
};
|
|
53
|
+
}
|
|
@@ -41,6 +41,7 @@ import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
|
41
41
|
import {
|
|
42
42
|
redact_low_impact_entry,
|
|
43
43
|
} from '../ai_council/redact_low_impact_entry.js';
|
|
44
|
+
import { HIDDEN_UNICODE_RE } from './egress_normalize.js';
|
|
44
45
|
import type { RedactionViolation } from '../ai_council/redact_low_impact_entry.js';
|
|
45
46
|
|
|
46
47
|
const _ROOT = path.resolve(path.dirname(_thisFile()), '..', '..');
|
|
@@ -130,8 +131,7 @@ function _compileIgnoreCase(pattern: string): RegExp {
|
|
|
130
131
|
// council re-evaluation (2026-07-11). Presence is itself a violation:
|
|
131
132
|
// a knowledge card has no legitimate need for invisible characters, and
|
|
132
133
|
// halt-and-surface (never silent-rewrite) is this gate's contract.
|
|
133
|
-
const _HIDDEN_UNICODE_RE =
|
|
134
|
-
/[----\u{E0000}-\u{E007F}]/gu;
|
|
134
|
+
const _HIDDEN_UNICODE_RE = HIDDEN_UNICODE_RE;
|
|
135
135
|
|
|
136
136
|
/**
|
|
137
137
|
* Combined privacy-floor + source-confidentiality scan over `text`.
|