@event4u/agent-config 16.4.0 → 17.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.augment-plugin/marketplace.json +3 -3
- package/.augment-plugin/plugin.json +1 -1
- package/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/skills/install-agent-config/SKILL.md +4 -4
- package/CHANGELOG.md +483 -669
- package/CONTRIBUTING.md +47 -0
- package/README.md +25 -25
- package/dist/agent-src/commands/{design.md → agent-design.md} +11 -7
- package/dist/agent-src/commands/agents/init.md +66 -3
- package/dist/agent-src/commands/agents/user/init.md +3 -0
- package/dist/agent-src/commands/{optimize/deep.md → analyze/and-optimize.md} +72 -33
- package/dist/agent-src/commands/analyze/inbox.md +168 -37
- package/dist/agent-src/commands/analyze/pr.md +144 -0
- package/dist/agent-src/commands/analyze/{repo.md → reference.md} +85 -14
- package/dist/agent-src/commands/analyze/roadmap-repos.md +19 -10
- package/dist/agent-src/commands/analyze.md +28 -12
- package/dist/agent-src/commands/audit.md +115 -0
- package/dist/agent-src/commands/brand/review.md +13 -2
- package/dist/agent-src/commands/brand/tokens.md +3 -3
- package/dist/agent-src/commands/brand/voice.md +8 -5
- package/dist/agent-src/commands/brand.md +2 -2
- package/dist/agent-src/commands/challenge-me/closure.md +25 -0
- package/dist/agent-src/commands/design-system/import.md +8 -3
- package/dist/agent-src/commands/design-system/sync.md +98 -0
- package/dist/agent-src/commands/design-system.md +6 -1
- package/dist/agent-src/commands/evals/analyze.json +44 -0
- package/dist/agent-src/commands/evals/audit.json +12 -0
- package/dist/agent-src/commands/evals/retro.json +12 -0
- package/dist/agent-src/commands/fix/ci.md +10 -8
- package/dist/agent-src/commands/ghostwriter/write.md +22 -0
- package/dist/agent-src/commands/memory/learn-low-impact.md +70 -83
- package/dist/agent-src/commands/memory/propose.md +12 -0
- package/dist/agent-src/commands/memory.md +1 -1
- package/dist/agent-src/commands/optimize.md +4 -3
- package/dist/agent-src/commands/post-as/me.md +18 -0
- package/dist/agent-src/commands/pr/create.md +17 -342
- package/dist/agent-src/commands/pr/merge.md +129 -368
- package/dist/agent-src/commands/retro.md +121 -0
- package/dist/agent-src/commands/review/routing.md +1 -1
- package/dist/agent-src/commands/roadmap/next.md +4 -1
- package/dist/agent-src/commands/roadmap/process-full.md +46 -333
- package/dist/agent-src/commands/roadmap/triage-parked.md +6 -2
- package/dist/agent-src/commands/team-knowledge/consolidate.md +2 -2
- package/dist/agent-src/commands/team-knowledge.md +1 -1
- package/dist/agent-src/commands/threat-model.md +1 -1
- package/dist/agent-src/commands/upstream-contribute.md +91 -101
- package/dist/agent-src/commands/worktree/cleanup.md +18 -11
- package/dist/agent-src/contexts/contracts/consumer-agents-md-guide.md +54 -0
- package/dist/agent-src/contexts/execution/analysis-loop.md +137 -0
- package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +3 -3
- package/dist/agent-src/contexts/execution/decision-closure-execution.md +1 -1
- package/dist/agent-src/contexts/execution/host-capability-manifest.md +6 -0
- package/dist/agent-src/contexts/execution/orchestration-telemetry.md +11 -4
- package/dist/agent-src/contexts/execution/pr-create-branches-content.md +250 -0
- package/dist/agent-src/contexts/execution/pr-create-branches-freshness.md +150 -0
- package/dist/agent-src/contexts/execution/pr-merge-queue.md +287 -0
- package/dist/agent-src/contexts/execution/pr-merge-sync.md +276 -0
- package/dist/agent-src/contexts/execution/pr-merge-trust-boundary.md +69 -0
- package/dist/agent-src/contexts/execution/process-full-all.md +233 -0
- package/dist/agent-src/contexts/execution/process-full-delivery.md +231 -0
- package/dist/agent-src/contexts/execution/roadmap-execution-contract-branches.md +42 -0
- package/dist/agent-src/contexts/execution/roadmap-execution-contract.md +1 -35
- package/dist/agent-src/contexts/execution/roadmap-process-loop-close.md +235 -0
- package/dist/agent-src/contexts/execution/roadmap-process-loop-prescan.md +216 -0
- package/dist/agent-src/contexts/execution/roadmap-process-loop-run.md +253 -0
- package/dist/agent-src/contexts/execution/roadmap-process-loop-set.md +212 -0
- package/dist/agent-src/contexts/execution/roadmap-process-loop.md +25 -864
- package/dist/agent-src/contexts/execution/subagent-spawn-contract.md +14 -2
- package/dist/agent-src/contexts/execution/subagent-steering.md +65 -8
- package/dist/agent-src/contexts/model-recommendations.md +5 -5
- package/dist/agent-src/contexts/subagent-configuration.md +1 -1
- package/dist/agent-src/guidelines/agent-infra/api-cost-levers.md +4 -3
- package/dist/agent-src/guidelines/agent-infra/model-recommendation.md +11 -5
- package/dist/agent-src/guidelines/agent-infra/rule-body-migration-inventory.md +1 -1
- package/dist/agent-src/guidelines/agent-infra/self-improvement-pipeline.md +47 -24
- package/dist/agent-src/guidelines/design-antipatterns.md +6 -1
- package/dist/agent-src/guidelines/design-asset-discipline.md +17 -0
- package/dist/agent-src/guidelines/design-fidelity-routing.md +1 -0
- package/dist/agent-src/guidelines/php/api-design.md +10 -1
- package/dist/agent-src/rules/brand-source-of-truth.md +7 -6
- package/dist/agent-src/rules/code-provenance.md +1 -1
- package/dist/agent-src/rules/context-hygiene.md +0 -1
- package/dist/agent-src/rules/design-fidelity.md +12 -13
- package/dist/agent-src/rules/external-reference-deep-dive.md +2 -2
- package/dist/agent-src/rules/fix-what-you-see.md +1 -1
- package/dist/agent-src/rules/low-impact-corpus-privacy-floor.md +14 -15
- package/dist/agent-src/rules/missing-skill-recovery.md +12 -11
- package/dist/agent-src/rules/neighbour-precedence.md +1 -1
- package/dist/agent-src/rules/recurring-criticism.md +1 -1
- package/dist/agent-src/rules/roadmap-ci-steps-policy.md +0 -2
- package/dist/agent-src/rules/self-repair-loop.md +2 -2
- package/dist/agent-src/rules/token-budget-discipline.md +2 -2
- package/dist/agent-src/scripts/dashboard_mode.ts +4 -1
- package/dist/agent-src/scripts/roadmap_age.ts +175 -0
- package/dist/agent-src/scripts/update_roadmap_progress.ts +10 -2
- package/dist/agent-src/skills/accessibility-auditor/SKILL.md +3 -3
- package/dist/agent-src/skills/accessibility-auditor/data/aria-patterns.csv +2 -0
- package/dist/agent-src/skills/accessibility-auditor/data/manifest.json +3 -3
- package/dist/agent-src/skills/agent-security-review/SKILL.md +2 -2
- package/dist/agent-src/skills/agents-md-thin-root/SKILL.md +12 -4
- package/dist/agent-src/skills/ai-code-blindspots/SKILL.md +7 -0
- package/dist/agent-src/skills/ai-council/references/advanced-modes.md +11 -1
- package/dist/agent-src/skills/ai-council/references/cost-and-redaction.md +7 -0
- package/dist/agent-src/skills/ai-council/references/execution-modes.md +7 -0
- package/dist/agent-src/skills/ai-council/references/output-and-synthesis.md +19 -0
- package/dist/agent-src/skills/ai-council/references/procedure.md +7 -0
- package/dist/agent-src/skills/api-design/SKILL.md +2 -2
- package/dist/agent-src/skills/api-endpoint/SKILL.md +2 -2
- package/dist/agent-src/skills/authz-review/SKILL.md +5 -3
- package/dist/agent-src/skills/blade-ui/SKILL.md +2 -2
- package/dist/agent-src/skills/brand/SKILL.md +7 -3
- package/dist/agent-src/skills/brand-asset-generation/SKILL.md +13 -6
- package/dist/agent-src/skills/brand-audit/SKILL.md +2 -1
- package/dist/agent-src/skills/brand-identity/SKILL.md +5 -4
- package/dist/agent-src/skills/brand-strategy/SKILL.md +5 -4
- package/dist/agent-src/skills/brand-to-tokens/SKILL.md +18 -39
- package/dist/agent-src/skills/brand-to-tokens/templates/marp-brand-deck.md.example +2 -2
- package/dist/agent-src/skills/brand-to-tokens/templates/reveal-brand-deck.yaml +2 -2
- package/dist/agent-src/skills/canvas-design/SKILL.md +16 -4
- package/dist/agent-src/skills/competitive-positioning/SKILL.md +2 -2
- package/dist/agent-src/skills/composer-packages/SKILL.md +18 -0
- package/dist/agent-src/skills/condense-memory/SKILL.md +1 -1
- package/dist/agent-src/skills/content-funnel-design/SKILL.md +8 -1
- package/dist/agent-src/skills/context-authoring/SKILL.md +1 -1
- package/dist/agent-src/skills/context-document/SKILL.md +2 -2
- package/dist/agent-src/skills/corpus-grounding/SKILL.md +6 -6
- package/dist/agent-src/skills/corpus-grounding/scripts/decision_engine.ts +13 -11
- package/dist/agent-src/skills/corpus-grounding/scripts/ground.mjs +1706 -0
- package/dist/agent-src/skills/corpus-grounding/scripts/schema_validator.ts +7 -1
- package/dist/agent-src/skills/dashboard-design/SKILL.md +1 -1
- package/dist/agent-src/skills/data-flow-mapper/SKILL.md +5 -2
- package/dist/agent-src/skills/database/SKILL.md +5 -4
- package/dist/agent-src/skills/decision-record/references/weighted-matrix.md +12 -0
- package/dist/agent-src/skills/deep-reading-analyst/SKILL.md +1 -1
- package/dist/agent-src/skills/dependency-upgrade/SKILL.md +61 -11
- package/dist/agent-src/skills/description-assist/SKILL.md +1 -1
- package/dist/agent-src/skills/design-intelligence/SKILL.md +1 -1
- package/dist/agent-src/skills/design-intelligence/data/landing.csv +1 -1
- package/dist/agent-src/skills/design-intelligence/references/context-and-registers.md +10 -2
- package/dist/agent-src/skills/design-intelligence/references/design-languages.md +1 -1
- package/dist/agent-src/skills/design-intelligence/references/design-rules-checklist.md +4 -3
- package/dist/agent-src/skills/design-intelligence/references/integration-mapping.md +25 -22
- package/dist/agent-src/skills/{wireframe → design-review}/references/story-beat-ledger.schema.json +1 -1
- package/dist/agent-src/skills/design-review/references/verification-automation.md +11 -3
- package/dist/agent-src/skills/design-system-capture/SKILL.md +15 -10
- package/dist/agent-src/skills/design-system-capture/references/design-system-json.md +20 -5
- package/dist/agent-src/skills/design-system-capture/references/import-procedure.md +2 -2
- package/dist/agent-src/skills/design-tokens/SKILL.md +23 -23
- package/dist/agent-src/skills/design-tokens/scripts/tokens.mjs +1037 -0
- package/dist/agent-src/skills/design-tokens/scripts/tokens.ts +336 -13
- package/dist/agent-src/skills/design-tokens/templates/design-tokens-starter.json +52 -53
- package/dist/agent-src/skills/docker/SKILL.md +1 -1
- package/dist/agent-src/skills/estimate-ticket/SKILL.md +1 -1
- package/dist/agent-src/skills/existing-ui-audit/SKILL.md +14 -276
- package/dist/agent-src/skills/existing-ui-audit/procedure.yaml +44 -0
- package/dist/agent-src/skills/existing-ui-audit/references/anti-slop-cross-reference.md +1 -1
- package/dist/agent-src/skills/existing-ui-audit/references/steps/00-inspect-stack-and-input.md +4 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/01-enumerate-components.md +26 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/01b-detect-component-taxonomy.md +7 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/02-identify-design-system.md +12 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/03-detect-design-tokens.md +35 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/04-detect-shadcn-inventory.md +13 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/04b-live-storybook-read.md +26 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/05-list-reusable-patterns.md +14 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/06-match-candidates.md +52 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/07-greenfield-branch.md +29 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/08-a11y-baseline.md +40 -0
- package/dist/agent-src/skills/existing-ui-audit/references/steps/09-validate-and-write.md +5 -0
- package/dist/agent-src/skills/experiment-loop/SKILL.md +1 -1
- package/dist/agent-src/skills/fe-design/references/design-patterns.md +65 -4
- package/dist/agent-src/skills/fe-design/references/design-read-and-memory.md +1 -1
- package/dist/agent-src/skills/fe-design/references/source-led-port.md +1 -1
- package/dist/agent-src/skills/finishing-a-development-branch/SKILL.md +6 -6
- package/dist/agent-src/skills/flux/SKILL.md +1 -1
- package/dist/agent-src/skills/form-handler/SKILL.md +15 -2
- package/dist/agent-src/skills/frontend-render-security/SKILL.md +9 -0
- package/dist/agent-src/skills/git-workflow/SKILL.md +2 -2
- package/dist/agent-src/skills/git-workflow/references/branch-update.md +7 -0
- package/dist/agent-src/skills/git-workflow/references/commit-subject.md +12 -0
- package/dist/agent-src/skills/git-workflow/references/push-closes-its-loop.md +10 -0
- package/dist/agent-src/skills/gtm-launch/SKILL.md +8 -1
- package/dist/agent-src/skills/html-deck/SKILL.md +7 -2
- package/dist/agent-src/skills/humanizer/SKILL.md +16 -3
- package/dist/agent-src/skills/humanizer/references/anti-aiisms.md +13 -1
- package/dist/agent-src/skills/humanizer/references/fixtures.md +8 -0
- package/dist/agent-src/skills/iconography/SKILL.md +4 -2
- package/dist/agent-src/skills/image-provider-routing/SKILL.md +16 -5
- package/dist/agent-src/skills/js-library-packaging/SKILL.md +5 -4
- package/dist/agent-src/skills/js-library-packaging/scripts/check_package_surface.mjs +197 -0
- package/dist/agent-src/skills/judge-artifact-completeness/SKILL.md +1 -1
- package/dist/agent-src/skills/judge-security-auditor/SKILL.md +2 -2
- package/dist/agent-src/skills/launch-readiness/SKILL.md +18 -22
- package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +5 -5
- package/dist/agent-src/skills/livewire/SKILL.md +1 -1
- package/dist/agent-src/skills/llm-provider-knowledge/SKILL.md +18 -0
- package/dist/agent-src/skills/logo-generation/SKILL.md +21 -11
- package/dist/agent-src/skills/market-entry-analysis/SKILL.md +6 -1
- package/dist/agent-src/skills/markitdown/SKILL.md +1 -1
- package/dist/agent-src/skills/memory-consolidation/SKILL.md +2 -2
- package/dist/agent-src/skills/messaging-architecture/SKILL.md +8 -1
- package/dist/agent-src/skills/motion-choreographer/SKILL.md +2 -2
- package/dist/agent-src/skills/playwright-testing/SKILL.md +2 -0
- package/dist/agent-src/skills/positioning-strategy/SKILL.md +10 -2
- package/dist/agent-src/skills/prediction-pool-optimizer/references/ev-fixtures.md +13 -0
- package/dist/agent-src/skills/prediction-pool-optimizer/references/odds-and-bonus.md +7 -0
- package/dist/agent-src/skills/project-analysis-core/SKILL.md +1 -1
- package/dist/agent-src/skills/project-analysis-hypothesis-driven/SKILL.md +1 -1
- package/dist/agent-src/skills/project-analyzer/SKILL.md +14 -75
- package/dist/agent-src/skills/project-analyzer/procedure.yaml +39 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/01-project-overview.md +9 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/02-architecture.md +7 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/03-data-layer.md +6 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/04-business-domains.md +7 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/05-api-surface.md +6 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/06-service-map.md +6 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/07-module-inventory.md +6 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/08-infrastructure-and-testing.md +5 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/09-agent-docs-audit.md +6 -0
- package/dist/agent-src/skills/project-analyzer/references/steps/10-gap-analysis.md +6 -0
- package/dist/agent-src/skills/quality-tools/references/js-ts-tools.md +10 -0
- package/dist/agent-src/skills/quality-tools/references/php-tools.md +13 -0
- package/dist/agent-src/skills/quality-tools/references/python-tools.md +11 -0
- package/dist/agent-src/skills/react-native-setup/SKILL.md +7 -2
- package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +5 -1
- package/dist/agent-src/skills/react-shadcn-ui/references/registry.md +13 -0
- package/dist/agent-src/skills/react-shadcn-ui/scripts/shadcn_add.mjs +315 -0
- package/dist/agent-src/skills/react-shadcn-ui/scripts/shadcn_add.ts +6 -6
- package/dist/agent-src/skills/receiving-code-review/SKILL.md +1 -1
- package/dist/agent-src/skills/refine-ticket/SKILL.md +2 -2
- package/dist/agent-src/skills/release-comms/SKILL.md +2 -1
- package/dist/agent-src/skills/repomix-packer/SKILL.md +2 -2
- package/dist/agent-src/skills/requesting-code-review/SKILL.md +3 -3
- package/dist/agent-src/skills/roadmap-management/references/archival.md +3 -3
- package/dist/agent-src/skills/roadmap-management/references/authoring.md +9 -2
- package/dist/agent-src/skills/roadmap-management/references/dashboard.md +3 -3
- package/dist/agent-src/skills/roadmap-management/references/lifecycle.md +3 -3
- package/dist/agent-src/skills/roadmap-writing/SKILL.md +4 -4
- package/dist/agent-src/skills/rtk-output-filtering/SKILL.md +1 -1
- package/dist/agent-src/skills/rule-writing/SKILL.md +1 -2
- package/dist/agent-src/skills/security/SKILL.md +41 -5
- package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +5 -3
- package/dist/agent-src/skills/skill-reviewer/SKILL.md +1 -1
- package/dist/agent-src/skills/skill-writing/SKILL.md +23 -8
- package/dist/agent-src/skills/skill-writing/references/section-patterns.md +19 -1
- package/dist/agent-src/skills/source-discovery/SKILL.md +3 -3
- package/dist/agent-src/skills/sql-writing/SKILL.md +2 -2
- package/dist/agent-src/skills/standards-from-config/SKILL.md +2 -2
- package/dist/agent-src/skills/storybook-workshop/SKILL.md +5 -0
- package/dist/agent-src/skills/storybook-workshop/scripts/story_contrast_floor.mjs +99 -0
- package/dist/agent-src/skills/subagent-orchestration/SKILL.md +13 -13
- package/dist/agent-src/skills/subagent-orchestration/prompts/README.md +4 -3
- package/dist/agent-src/skills/svg-authoring/SKILL.md +324 -0
- package/dist/agent-src/skills/systematic-debugging/SKILL.md +2 -2
- package/dist/agent-src/skills/tailwind-engineer/SKILL.md +8 -3
- package/dist/agent-src/skills/tailwind-engineer/scripts/tailwind_config_gen.mjs +482 -0
- package/dist/agent-src/skills/test-case-discovery/SKILL.md +1 -1
- package/dist/agent-src/skills/threat-modeling/SKILL.md +8 -1
- package/dist/agent-src/skills/threat-modeling/data/manifest.json +5 -2
- package/dist/agent-src/skills/threat-modeling/data/reasoning.csv +10 -10
- package/dist/agent-src/skills/threat-modeling/data/surfaces.csv +11 -10
- package/dist/agent-src/skills/threat-modeling/data/threats.csv +34 -20
- package/dist/agent-src/skills/type-design/SKILL.md +196 -0
- package/dist/agent-src/skills/type-design/references/font-spec.md +90 -0
- package/dist/agent-src/skills/type-design/references/gates.md +113 -0
- package/dist/agent-src/skills/type-design/references/toolchain.md +66 -0
- package/dist/agent-src/skills/typography-system/SKILL.md +21 -11
- package/dist/agent-src/skills/typography-system/references/worked-scales.md +85 -0
- package/dist/agent-src/skills/ui-apply-generic/SKILL.md +1 -1
- package/dist/agent-src/skills/universal-project-analysis/SKILL.md +1 -1
- package/dist/agent-src/skills/upstream-contribute/SKILL.md +120 -125
- package/dist/agent-src/skills/using-git-worktrees/SKILL.md +1 -0
- package/dist/agent-src/skills/verify-repair-loop/SKILL.md +1 -1
- package/dist/agent-src/skills/voice-and-tone-design/SKILL.md +71 -2
- package/dist/agent-src/skills/wireframe/SKILL.md +5 -2
- package/dist/agent-src/skills/worktree-lifecycle/SKILL.md +16 -14
- package/dist/agent-src/templates/AGENTS.md +1 -1
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/dist/agent-src/templates/agents/proposal.example.md +1 -1
- package/dist/agent-src/templates/github-workflows/advisories-daily.yml +85 -0
- package/dist/agent-src/templates/roadmaps.md +39 -1
- package/dist/agent-src/templates/scripts/check_memory.ts +2 -2
- package/dist/agent-src/templates/scripts/historical-bug-patterns.example.yml +13 -1
- package/dist/agent-src/templates/scripts/work_engine/cli.ts +17 -0
- package/dist/agent-src/templates/scripts/work_engine/cli_args.ts +10 -0
- package/dist/agent-src/templates/scripts/work_engine/directives/ui/scaffold.ts +22 -13
- package/dist/agent-src/templates/scripts/work_engine/dispatcher.ts +18 -4
- package/dist/agent-src/templates/scripts/work_engine/procedure/checks.ts +283 -0
- package/dist/agent-src/templates/scripts/work_engine/procedure/run.ts +432 -0
- package/dist/agent-src/templates/scripts/work_engine/procedure/sidecar.ts +185 -0
- package/dist/agent-src/templates/scripts/work_engine/state.ts +3 -0
- package/dist/cli/commands/uiRender.js +265 -13
- package/dist/cli/commands/uiRenderAsset.js +1316 -0
- package/dist/cli/commands/uiRenderAssetCompare.js +752 -0
- package/dist/cli/commands/uiRenderAssetFonts.js +158 -0
- package/dist/cli/commands/uiRenderAssetGrid.js +265 -0
- package/dist/cli/commands/uiRenderAssetGrounds.js +323 -0
- package/dist/cli/commands/uiRenderAssetIsolation.js +85 -0
- package/dist/cli/commands/uiRenderAssetTypes.js +133 -0
- package/dist/cli/initRouting.js +1 -1
- package/dist/cli/main.js +47 -1
- package/dist/cli/mcp/dispatch.js +31 -9
- package/dist/cli/python/knowledge_ingest.js +7 -39
- package/dist/cli/python/workspace_secrets.js +4 -177
- package/dist/cli/registry.js +5 -2
- package/dist/cli-delegate/archive_completed_roadmaps.js +3 -2
- package/dist/cli-delegate/check_update_banner.js +635 -266
- package/dist/cli-delegate/{chunk-AED2VQGM.js → chunk-2CX7NWRB.js} +233 -437
- package/dist/cli-delegate/{chunk-F3QDG2GT.js → chunk-2SFOOFJJ.js} +259 -159
- package/dist/cli-delegate/chunk-2Y5AMLMY.js +136 -0
- package/dist/cli-delegate/{chunk-OKJUIAPS.js → chunk-4E2W63DA.js} +1 -62
- package/dist/cli-delegate/{chunk-6SRJTYJS.js → chunk-4SHNERBL.js} +37 -16
- package/dist/cli-delegate/chunk-5VO3RTMV.js +208 -0
- package/dist/cli-delegate/chunk-6E2LDY4F.js +27 -0
- package/dist/cli-delegate/{chunk-XQTPXKFA.js → chunk-6ZD2QZMN.js} +8 -17
- package/dist/cli-delegate/{chunk-6V5FMA3P.js → chunk-7CEI2YPS.js} +1 -1
- package/dist/cli-delegate/{chunk-DMSZHXZS.js → chunk-7DRWULEQ.js} +80 -7
- package/dist/cli-delegate/chunk-7NXCZSDL.js +54 -0
- package/dist/cli-delegate/chunk-AX3U3UWJ.js +328 -0
- package/dist/cli-delegate/{chunk-WOKWX5PL.js → chunk-BKALSTBZ.js} +18 -3
- package/dist/cli-delegate/chunk-BMGUGSY6.js +103 -0
- package/dist/cli-delegate/chunk-BYV46VRM.js +3309 -0
- package/dist/cli-delegate/{chunk-5GPULQBE.js → chunk-CAL76ADI.js} +4215 -682
- package/dist/cli-delegate/chunk-DSY6LLCQ.js +127 -0
- package/dist/cli-delegate/chunk-E6XNBVE4.js +581 -0
- package/dist/cli-delegate/{chunk-ZUZKZYCN.js → chunk-ESUNQ5XR.js} +46 -10
- package/dist/cli-delegate/{chunk-G5VVIZRC.js → chunk-F7HLSW6P.js} +1 -1
- package/dist/cli-delegate/chunk-FIEEOH5C.js +133 -0
- package/dist/cli-delegate/chunk-FKYZOWVD.js +719 -0
- package/dist/cli-delegate/chunk-GOMILC3O.js +918 -0
- package/dist/cli-delegate/chunk-I4KJYVPB.js +69 -0
- package/dist/cli-delegate/{chunk-JQOM7TTM.js → chunk-IDAOTDPE.js} +1 -100
- package/dist/cli-delegate/chunk-IROAQ77A.js +137 -0
- package/dist/cli-delegate/chunk-J2SJZICO.js +698 -0
- package/dist/cli-delegate/{chunk-6YQC2HLF.js → chunk-JHMMWNJ2.js} +54 -40
- package/dist/cli-delegate/{chunk-WQWXGIWB.js → chunk-M6CRG5O6.js} +165 -15
- package/dist/cli-delegate/{chunk-PHD7OOLE.js → chunk-MQ2UDEGV.js} +14 -3
- package/dist/cli-delegate/chunk-NTM7G2V4.js +220 -0
- package/dist/cli-delegate/chunk-PV7S5DPJ.js +175 -0
- package/dist/cli-delegate/{chunk-F7DQWYR5.js → chunk-RAXQOETZ.js} +6 -2
- package/dist/cli-delegate/{chunk-T7XSJSUQ.js → chunk-SIOMDAKL.js} +980 -784
- package/dist/cli-delegate/{chunk-KR6EM23A.js → chunk-TULVDQ4L.js} +3 -48
- package/dist/cli-delegate/chunk-UUYEKXKR.js +20 -0
- package/dist/cli-delegate/{chunk-7XGD2OEU.js → chunk-UXWHY6CQ.js} +2 -1
- package/dist/cli-delegate/{chunk-PWX7CKMD.js → chunk-VC3ECUEK.js} +1 -1
- package/dist/cli-delegate/{chunk-KXXWJTDO.js → chunk-WMNYVIYX.js} +1 -1
- package/dist/cli-delegate/chunk-XCY5KKUC.js +181 -0
- package/dist/cli-delegate/{chunk-H76PHZBI.js → chunk-XLY5G3CM.js} +14 -19
- package/dist/cli-delegate/cmd_adr_effective.js +41 -2
- package/dist/cli-delegate/cmd_analyze_session.js +7 -7
- package/dist/cli-delegate/cmd_brand_status.js +1287 -10
- package/dist/cli-delegate/cmd_ci_settle.js +330 -0
- package/dist/cli-delegate/cmd_conformance.js +669 -822
- package/dist/cli-delegate/cmd_doctor.js +26 -16
- package/dist/cli-delegate/cmd_doctor_neighbours.js +10 -7
- package/dist/cli-delegate/cmd_explain.js +9 -24
- package/dist/cli-delegate/cmd_export.js +14 -11
- package/dist/cli-delegate/cmd_fleet.js +5 -3
- package/dist/cli-delegate/cmd_git_convention.js +8 -4
- package/dist/cli-delegate/cmd_handoff.js +79 -242
- package/dist/cli-delegate/cmd_mcp_available.js +1 -1
- package/dist/cli-delegate/cmd_memory_get.js +4 -2
- package/dist/cli-delegate/cmd_migrate.js +2 -2
- package/dist/cli-delegate/cmd_packs_active.js +2 -2
- package/dist/cli-delegate/cmd_preflight.js +7 -5
- package/dist/cli-delegate/cmd_prune.js +16 -13
- package/dist/cli-delegate/cmd_route_audit.js +11 -8
- package/dist/cli-delegate/cmd_route_explain.js +649 -16
- package/dist/cli-delegate/cmd_session_recycle.js +15 -6
- package/dist/cli-delegate/cmd_settings_check.js +2 -2
- package/dist/cli-delegate/cmd_settings_get.js +1 -1
- package/dist/cli-delegate/cmd_settings_migrate.js +14 -11
- package/dist/cli-delegate/cmd_settings_set.js +1 -1
- package/dist/cli-delegate/cmd_sync.js +16 -13
- package/dist/cli-delegate/cmd_uninstall.js +185 -31
- package/dist/cli-delegate/cmd_update.js +67 -3
- package/dist/cli-delegate/cmd_upgrade.js +38 -7
- package/dist/cli-delegate/cmd_validate.js +16 -13
- package/dist/cli-delegate/cmd_versions.js +1 -1
- package/dist/cli-delegate/dashboard_mode.js +1 -1
- package/dist/cli-delegate/gate_execute.js +4 -3
- package/dist/cli-delegate/roadmap_age.js +22 -0
- package/dist/cli-delegate/roadmap_gates.js +4 -3
- package/dist/cli-delegate/update_roadmap_progress.js +3 -2
- package/dist/cli-delegate/upgrade_unattended-VVL6JLSX.js +541 -0
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +409 -201
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +8 -8
- package/dist/discovery/dormancy-report.md +1 -1
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +36 -27
- package/dist/discovery/trust-report.md +3 -3
- package/dist/discovery/workspaces.json +25 -16
- package/dist/hooks/chat_history.chunk.cjs +6852 -0
- package/dist/hooks/chat_history.chunk.cjs.sha256 +1 -0
- package/dist/hooks/dispatch.js +17706 -18627
- package/dist/hooks/dispatch.sha256 +1 -1
- package/dist/hooks/egress_engine.chunk.cjs +915 -0
- package/dist/hooks/egress_engine.chunk.cjs.sha256 +1 -0
- package/dist/hooks/svg_rules.chunk.cjs +1858 -0
- package/dist/hooks/svg_rules.chunk.cjs.sha256 +1 -0
- package/dist/install/conflict.js +36 -6
- package/dist/install/conflictTracker.js +81 -7
- package/dist/install/detect.js +3 -3
- package/dist/install/hostPermissionsAdapter.js +106 -0
- package/dist/install/install.mjs +3117 -1949
- package/dist/install/installThinLayer.js +1 -1
- package/dist/install/manifestFiles.js +21 -0
- package/dist/install/noGoDenyRows.js +300 -0
- package/dist/install/noGoRules.js +368 -0
- package/dist/install/ownershipLedger.js +133 -0
- package/dist/install/plan.js +1 -1
- package/dist/install/preflight.js +39 -8
- package/dist/install/preserve.js +74 -12
- package/dist/install/recordedOwnership.js +88 -5
- package/dist/install/rule_scope.js +20 -3
- package/dist/install/stagedRuntime.js +455 -0
- package/dist/install/toolsArg.js +19 -0
- package/dist/install/userPin.js +47 -0
- package/dist/install/wizard-plan.js +26 -4
- package/dist/mcp/awesome-mcp-servers.row.md +1 -1
- package/dist/mcp/mcp-cloudflare-catalogue.json +3 -2
- package/dist/mcp/registry-manifest.json +6 -5
- package/dist/mcp/server.json +3 -3
- package/dist/mcp/server.mjs +9814 -5333
- package/dist/router.json +1 -1
- package/dist/scripts/_lib/agent_settings.js +7 -12
- package/dist/scripts/_lib/asset_render_record.js +219 -0
- package/dist/scripts/_lib/claude_builtin_names.js +9 -4
- package/dist/scripts/_lib/claude_settings_hooks.js +102 -34
- package/dist/scripts/_lib/egress_rules.js +766 -0
- package/dist/scripts/_lib/environment_detector.js +24 -33
- package/dist/scripts/_lib/global_deploy_inventory.js +146 -9
- package/dist/scripts/_lib/guidelines_lane.js +10 -1
- package/dist/scripts/_lib/identifier_redaction.js +24 -0
- package/dist/scripts/_lib/installed_layer.js +17 -0
- package/dist/scripts/_lib/installed_layer_normalise.js +72 -0
- package/dist/scripts/_lib/lean_projection_mode.js +34 -152
- package/dist/scripts/_lib/project_tree_form.js +118 -0
- package/dist/scripts/_lib/scan_scope.js +105 -0
- package/dist/scripts/_lib/scoped_projection.js +133 -3
- package/dist/scripts/_lib/settings_removed_keys.js +29 -0
- package/dist/scripts/_lib/settings_renamed_keys.js +17 -5
- package/dist/scripts/_lib/subagent_native_fields.js +35 -0
- package/dist/scripts/_lib/svg_dom.js +284 -0
- package/dist/scripts/_lib/svg_filled_counter.js +285 -0
- package/dist/scripts/_lib/svg_geometry.js +477 -0
- package/dist/scripts/_lib/svg_motion.js +179 -0
- package/dist/scripts/_lib/svg_rules.js +1339 -0
- package/dist/scripts/_lib/svg_urls.js +67 -0
- package/dist/scripts/_lib/ui_surface.js +19 -0
- package/dist/scripts/_lib/verification_command.js +364 -0
- package/dist/scripts/_lib/workspace_secrets.js +229 -0
- package/dist/scripts/ai_council/seat_policy.js +27 -0
- package/dist/scripts/ai_council/transport_resolver.js +9 -10
- package/dist/scripts/condense.js +25 -29
- package/dist/scripts/lint_svg_asset.js +324 -0
- package/dist/server/io/substituteTemplate.js +2 -2
- package/dist/server/io/yamlIO.js +2 -2
- package/dist/server/routes/install.js +5 -1
- package/dist/server/routes/settings.js +2 -2
- package/dist/server/routes/wizard.js +1 -1
- package/dist/server/schemas/settings.js +22 -16
- package/dist/server/serverInfo.js +1 -1
- package/dist/shared/brandTokenDocument.js +47 -0
- package/dist/shared/brandTokenPaths.js +43 -0
- package/dist/shared/settingsCarveOut.js +0 -7
- package/dist/shared/skillRanking.js +103 -5
- package/dist/shared/userMd/formAdapter.js +16 -0
- package/dist/shared/userMd/schema.js +17 -0
- package/dist/ui/assets/index-w70Ado09.js +23 -0
- package/dist/ui/index.html +1 -1
- package/docs/MIGRATION.md +89 -2
- package/docs/THIRD-PARTY-NOTICES.md +27 -0
- package/docs/contracts/settings-classes.md +27 -9
- package/docs/guidelines/agent-infra/api-cost-levers.md +4 -3
- package/docs/guidelines/agent-infra/model-recommendation.md +11 -5
- package/docs/guidelines/agent-infra/rule-body-migration-inventory.md +1 -1
- package/docs/guidelines/agent-infra/self-improvement-pipeline.md +47 -24
- package/docs/guidelines/design-antipatterns.md +6 -1
- package/docs/guidelines/design-asset-discipline.md +17 -0
- package/docs/guidelines/design-fidelity-routing.md +1 -0
- package/docs/guidelines/php/api-design.md +10 -1
- package/llms.txt +12 -10
- package/package.json +15 -5
- package/src/agent-src/scripts/dashboard_mode.ts +4 -1
- package/src/agent-src/scripts/roadmap_age.ts +175 -0
- package/src/agent-src/scripts/update_roadmap_progress.ts +10 -2
- package/src/agent-src/templates/AGENTS.md +1 -1
- package/src/agent-src/templates/scripts/check_memory.ts +2 -2
- package/src/agent-src/templates/scripts/historical-bug-patterns.example.yml +13 -1
- package/src/agent-src/templates/scripts/work_engine/cli.ts +17 -0
- package/src/agent-src/templates/scripts/work_engine/cli_args.ts +10 -0
- package/src/agent-src/templates/scripts/work_engine/directives/ui/scaffold.ts +22 -13
- package/src/agent-src/templates/scripts/work_engine/dispatcher.ts +18 -4
- package/src/agent-src/templates/scripts/work_engine/procedure/checks.ts +283 -0
- package/src/agent-src/templates/scripts/work_engine/procedure/run.ts +432 -0
- package/src/agent-src/templates/scripts/work_engine/procedure/sidecar.ts +185 -0
- package/src/agent-src/templates/scripts/work_engine/state.ts +3 -0
- package/src/config/agent-settings.template.yml +120 -57
- package/src/config/agents-paths.yml +13 -7
- package/src/config/ci-local-parity.yml +44 -0
- package/src/config/continuity-surface.json +51 -2
- package/src/config/depth-audit-samples.json +5 -0
- package/src/config/discovery/command-verbs.yml +1 -0
- package/src/config/dispatch-economy-metrics.json +1 -0
- package/src/config/egress-mutations/class-precedence-swapped.json +7 -0
- package/src/config/egress-mutations/credential-token-restores.json +7 -0
- package/src/config/egress-mutations/iban-checksum-disabled.json +7 -0
- package/src/config/egress-mutations/raw-value-in-the-count-record.json +7 -0
- package/src/config/evaluator-budgets.json +4 -4
- package/src/config/gate-coverage.yml +149 -3
- package/src/config/gate-reachability-exemptions.json +3 -5
- package/src/config/gate-violation-baselines.json +29 -25
- package/src/config/gitignore-block.txt +6 -3
- package/src/config/hook-bundle-budget.json +34 -3
- package/src/config/hook-carrier-probes.json +30 -0
- package/src/config/hook-latency-budget.json +4 -2
- package/src/config/host-injection-effect.json +8 -1
- package/src/config/host-skill-frontmatter-keys.json +56 -0
- package/src/config/layer-form-brakes.json +4 -0
- package/src/config/layer-form-comparison-corpus.json +42 -0
- package/src/config/loop-surfaces.yaml +28 -47
- package/src/config/memory-twin-verdicts.yml +9 -1
- package/src/config/metric-registry.yml +40 -3
- package/src/config/pack-size-budget.json +15 -0
- package/src/config/procedure-core-budget.json +21 -0
- package/src/config/profiles/minimal.ini +1 -1
- package/src/config/project-tree-form.json +24 -0
- package/src/config/reach-channels.yml +3 -3
- package/src/config/reach-prescriptions-intake.yml +1 -1
- package/src/config/roadmap-step-size-baseline.json +118 -0
- package/src/config/routing-coverage-seed.json +100 -2
- package/src/config/skill-body-budget.json +686 -0
- package/src/config/skill-fork-pilot.json +17 -0
- package/src/config/skill-lifecycle-probes-codex.json +57 -0
- package/src/config/skill-lifecycle-probes.json +57 -0
- package/src/config/skill-output-shape.json +316 -0
- package/src/config/step-depth-table.json +58 -0
- package/src/config/turnaround-budget.json +90 -0
- package/src/install/conflict.ts +38 -6
- package/src/install/conflictTracker.ts +126 -8
- package/src/install/detect.ts +3 -3
- package/src/install/hostPermissionsAdapter.ts +136 -0
- package/src/install/installThinLayer.ts +6 -1
- package/src/install/manifestFiles.ts +24 -0
- package/src/install/noGoDenyRows.ts +368 -0
- package/src/install/noGoRules.ts +438 -0
- package/src/install/ownershipLedger.ts +180 -0
- package/src/install/plan.ts +1 -1
- package/src/install/preflight.ts +42 -10
- package/src/install/preserve.ts +94 -12
- package/src/install/recordedOwnership.ts +121 -3
- package/src/install/rule_scope.ts +20 -3
- package/src/install/stagedRuntime.ts +528 -0
- package/src/install/toolsArg.ts +16 -0
- package/src/install/types.ts +23 -2
- package/src/install/userPin.ts +54 -0
- package/src/install/wizard-plan.ts +25 -4
- package/src/scripts/_cli/_doctor_emit.ts +24 -0
- package/src/scripts/_cli/cmd_brand_status.ts +223 -12
- package/src/scripts/_cli/cmd_ci_settle.ts +32 -0
- package/src/scripts/_cli/cmd_doctor.ts +23 -44
- package/src/scripts/_cli/cmd_route_explain.ts +176 -2
- package/src/scripts/_cli/cmd_uninstall.ts +270 -26
- package/src/scripts/_cli/cmd_update.ts +34 -1
- package/src/scripts/_cli/cmd_upgrade.ts +38 -2
- package/src/scripts/_cli/detection_report.ts +7 -0
- package/src/scripts/_cli/doctor_execution.ts +1 -2
- package/src/scripts/_cli/doctor_install_mode.ts +39 -0
- package/src/scripts/_cli/doctor_network_posture.ts +3 -3
- package/src/scripts/_cli/doctor_ownership_ledger.ts +126 -0
- package/src/scripts/_cli/doctor_update_verdict.ts +104 -0
- package/src/scripts/_cli/explain_last/scrubber.ts +9 -21
- package/src/scripts/_cli/upgrade_unattended.ts +548 -0
- package/src/scripts/_dispatch.bash +42 -9
- package/src/scripts/_lib/activation_ladder.ts +1 -1
- package/src/scripts/_lib/advisory_inventory.ts +405 -0
- package/src/scripts/_lib/advisory_notice.ts +270 -0
- package/src/scripts/_lib/advisory_sources.ts +752 -0
- package/src/scripts/_lib/advisory_verdicts.ts +363 -0
- package/src/scripts/_lib/agent_artifact_location.ts +177 -0
- package/src/scripts/_lib/agent_settings.ts +7 -12
- package/src/scripts/_lib/arrival_record.ts +217 -0
- package/src/scripts/_lib/asset_render_record.ts +247 -0
- package/src/scripts/_lib/billing_grant.ts +4 -2
- package/src/scripts/_lib/brand_voice_slot.ts +258 -0
- package/src/scripts/_lib/canary_status.ts +24 -0
- package/src/scripts/_lib/cc_transcript.ts +276 -0
- package/src/scripts/_lib/changelog_eras.ts +83 -0
- package/src/scripts/_lib/claim_phrases.ts +71 -0
- package/src/scripts/_lib/classify_update.ts +171 -0
- package/src/scripts/_lib/claude_builtin_names.ts +9 -4
- package/src/scripts/_lib/claude_hook_scope.ts +195 -0
- package/src/scripts/_lib/claude_settings_hooks.ts +118 -34
- package/src/scripts/_lib/codex_resident_set.ts +460 -0
- package/src/scripts/_lib/codex_skill_finder.ts +225 -0
- package/src/scripts/_lib/confusables.ts +19 -0
- package/src/scripts/_lib/consumer_impact.ts +199 -0
- package/src/scripts/_lib/content_class.ts +127 -0
- package/src/scripts/_lib/counted_probe.ts +68 -1
- package/src/scripts/_lib/credential_deny_rows.ts +151 -0
- package/src/scripts/_lib/credential_files.ts +367 -0
- package/src/scripts/_lib/delivery_arm_experiment.ts +2 -2
- package/src/scripts/_lib/depth_flip.ts +141 -0
- package/src/scripts/_lib/design_lock.ts +117 -0
- package/src/scripts/_lib/design_sync_ledger.ts +142 -0
- package/src/scripts/_lib/design_sync_plan.ts +177 -0
- package/src/scripts/_lib/design_sync_reconcile.ts +159 -0
- package/src/scripts/_lib/design_sync_verify.ts +99 -0
- package/src/scripts/_lib/design_system_claude_design.ts +323 -0
- package/src/scripts/_lib/design_system_import.ts +84 -6
- package/src/scripts/_lib/dispatch_import_closure.ts +42 -11
- package/src/scripts/_lib/egress_credential_env.ts +35 -0
- package/src/scripts/_lib/egress_engine.ts +22 -0
- package/src/scripts/_lib/egress_known_values.ts +223 -0
- package/src/scripts/_lib/egress_normalize.ts +67 -0
- package/src/scripts/_lib/egress_prefixes.ts +42 -0
- package/src/scripts/_lib/egress_rules.ts +896 -0
- package/src/scripts/_lib/egress_rules_linearity.ts +56 -0
- package/src/scripts/_lib/egress_sender_scan.ts +290 -0
- package/src/scripts/_lib/egress_session_table.ts +510 -0
- package/src/scripts/_lib/egress_text.ts +63 -0
- package/src/scripts/_lib/egress_token.ts +252 -0
- package/src/scripts/_lib/empty_cycles.ts +1 -1
- package/src/scripts/_lib/environment_detector.ts +45 -30
- package/src/scripts/_lib/exemption_shape.ts +75 -1
- package/src/scripts/_lib/floor_posture.ts +185 -0
- package/src/scripts/_lib/forge_protection.ts +140 -2
- package/src/scripts/_lib/global_deploy_inventory.ts +159 -6
- package/src/scripts/_lib/guidelines_lane.ts +12 -1
- package/src/scripts/_lib/hand_kinds.ts +65 -0
- package/src/scripts/_lib/headless_invocation.ts +3 -3
- package/src/scripts/_lib/host_capability.ts +34 -2
- package/src/scripts/_lib/host_env_write.ts +39 -18
- package/src/scripts/_lib/host_listing_model.ts +14 -7
- package/src/scripts/_lib/identifier_redaction.ts +26 -0
- package/src/scripts/_lib/impact_bump.ts +70 -0
- package/src/scripts/_lib/install_reach_checks.ts +53 -1
- package/src/scripts/_lib/installed_layer.ts +31 -0
- package/src/scripts/_lib/installed_layer_normalise.ts +75 -0
- package/src/scripts/_lib/instructions_loaded_classify.ts +75 -0
- package/src/scripts/_lib/instructions_loaded_event.ts +53 -0
- package/src/scripts/_lib/knowledge_global_redaction.ts +2 -2
- package/src/scripts/_lib/layer_form_corpus.ts +165 -0
- package/src/scripts/_lib/layer_form_decision.ts +248 -0
- package/src/scripts/_lib/layer_form_evidence.ts +112 -0
- package/src/scripts/_lib/lean_projection_mode.ts +32 -161
- package/src/scripts/_lib/llm_proposer_transport.ts +1 -0
- package/src/scripts/_lib/loop_guards.ts +8 -120
- package/src/scripts/_lib/major_surface.ts +207 -0
- package/src/scripts/_lib/mcp_bridge.ts +30 -69
- package/src/scripts/_lib/merge_clearance_record.ts +384 -0
- package/src/scripts/_lib/neighbour_census.ts +18 -1
- package/src/scripts/_lib/orchestration_record.ts +61 -0
- package/src/scripts/_lib/outcome_vocabularies.ts +15 -23
- package/src/scripts/_lib/pin_advice.ts +49 -0
- package/src/scripts/_lib/platform_anchor.ts +222 -0
- package/src/scripts/_lib/procedure_checks.ts +5 -0
- package/src/scripts/_lib/project_tree_form.ts +134 -0
- package/src/scripts/_lib/projection_key_migration.ts +122 -0
- package/src/scripts/_lib/prompt_shape.ts +13 -2
- package/src/scripts/_lib/provenance_verify.ts +272 -0
- package/src/scripts/_lib/quota_parked.ts +27 -1
- package/src/scripts/_lib/ratification_artifact.ts +64 -1
- package/src/scripts/_lib/ratification_subject.ts +508 -46
- package/src/scripts/_lib/release_findings_ingest.ts +52 -5
- package/src/scripts/_lib/release_highlights.ts +72 -2
- package/src/scripts/_lib/release_settings_surface.ts +392 -0
- package/src/scripts/_lib/review_round.ts +134 -0
- package/src/scripts/_lib/roadmap_checkboxes.ts +1 -1
- package/src/scripts/_lib/roadmap_slug_lock.ts +254 -0
- package/src/scripts/_lib/roadmap_step_size.ts +75 -0
- package/src/scripts/_lib/run_checkpoint.ts +60 -3
- package/src/scripts/_lib/runtime_wiring_checks.ts +15 -1
- package/src/scripts/_lib/scope_guard.sh +64 -5
- package/src/scripts/_lib/scoped_projection.ts +136 -3
- package/src/scripts/_lib/secret_detector.ts +24 -103
- package/src/scripts/_lib/security_fix.ts +429 -0
- package/src/scripts/_lib/security_fix_context.ts +133 -0
- package/src/scripts/_lib/self_repair.ts +69 -39
- package/src/scripts/_lib/self_repair_outgoing.ts +209 -0
- package/src/scripts/_lib/self_repair_payload.ts +86 -0
- package/src/scripts/_lib/session_eol.ts +3 -0
- package/src/scripts/_lib/session_pr_watch.ts +207 -0
- package/src/scripts/_lib/session_register.ts +51 -1
- package/src/scripts/_lib/session_tag.ts +51 -0
- package/src/scripts/_lib/settings_removed_keys.ts +30 -0
- package/src/scripts/_lib/settings_renamed_keys.ts +19 -5
- package/src/scripts/_lib/skill_catalogue.ts +66 -25
- package/src/scripts/_lib/skill_fork_pilot.ts +121 -0
- package/src/scripts/_lib/skill_leases.ts +203 -0
- package/src/scripts/_lib/skill_listing_overrides.ts +294 -0
- package/src/scripts/_lib/skill_materialisation.ts +388 -0
- package/src/scripts/_lib/skill_materialisation_gate.ts +210 -0
- package/src/scripts/_lib/skill_materialisation_lock.ts +149 -0
- package/src/scripts/_lib/skill_materialisation_triggers.ts +96 -0
- package/src/scripts/_lib/skill_origin.ts +21 -1
- package/src/scripts/_lib/skill_reach.ts +342 -0
- package/src/scripts/_lib/source_shape.ts +7 -2
- package/src/scripts/_lib/sqlite_guard.ts +1 -1
- package/src/scripts/_lib/step_anatomy.ts +330 -0
- package/src/scripts/_lib/subagent_capsule.ts +8 -2
- package/src/scripts/_lib/subagent_native_fields.ts +30 -0
- package/src/scripts/_lib/subagent_spawn.ts +36 -0
- package/src/scripts/_lib/subagent_steering.ts +367 -0
- package/src/scripts/_lib/svg_dom.ts +318 -0
- package/src/scripts/_lib/svg_filled_counter.ts +287 -0
- package/src/scripts/_lib/svg_geometry.ts +480 -0
- package/src/scripts/_lib/svg_motion.ts +208 -0
- package/src/scripts/_lib/svg_rules.ts +1455 -0
- package/src/scripts/_lib/svg_urls.ts +72 -0
- package/src/scripts/_lib/test_delta.ts +89 -6
- package/src/scripts/_lib/tier_downshift_verdict.ts +222 -0
- package/src/scripts/_lib/tool_result_census.ts +62 -0
- package/src/scripts/_lib/trigger_routers.ts +1 -0
- package/src/scripts/_lib/turnaround_throughput.ts +378 -0
- package/src/scripts/_lib/ui_surface.ts +22 -0
- package/src/scripts/_lib/unattended_gates.ts +100 -0
- package/src/scripts/_lib/undeployed_fixes.ts +34 -0
- package/src/scripts/_lib/update_check.ts +143 -12
- package/src/scripts/_lib/update_invite.ts +116 -0
- package/src/scripts/_lib/update_notice.ts +259 -0
- package/src/scripts/_lib/verification_command.ts +59 -0
- package/src/scripts/_lib/verify_clause.ts +31 -19
- package/src/scripts/_lib/version_order.ts +146 -0
- package/src/scripts/_lib/worker_reuse.ts +191 -0
- package/src/scripts/_lib/workspace_secrets.ts +273 -0
- package/src/scripts/_lib/worktree_git.ts +67 -0
- package/src/scripts/_lib/worktree_ignored.ts +116 -0
- package/src/scripts/adoption_status.ts +330 -3
- package/src/scripts/adr_cite_check.ts +93 -0
- package/src/scripts/advisories.ts +803 -0
- package/src/scripts/ai-image/adapters/flux.sh +1 -0
- package/src/scripts/ai-image/adapters/gemini-image.sh +1 -0
- package/src/scripts/ai-image/adapters/ideogram.sh +1 -0
- package/src/scripts/ai-image/adapters/recraft.sh +1 -0
- package/src/scripts/ai-video/adapters/comfyui.sh +1 -0
- package/src/scripts/ai-video/adapters/fal.sh +1 -0
- package/src/scripts/ai-video/adapters/gemini-veo.sh +1 -0
- package/src/scripts/ai-video/adapters/higgsfield.sh +1 -0
- package/src/scripts/ai-video/adapters/kling.sh +1 -0
- package/src/scripts/ai-video/adapters/musetalk.sh +1 -0
- package/src/scripts/ai-video/adapters/openai-images.sh +1 -0
- package/src/scripts/ai-video/adapters/replicate.sh +1 -0
- package/src/scripts/ai-video/adapters/sora.sh +1 -0
- package/src/scripts/ai-video/adapters/syncso.sh +1 -0
- package/src/scripts/ai-video/stitch.sh +115 -2
- package/src/scripts/ai_council/airgap.ts +1 -0
- package/src/scripts/ai_council/api_transport.ts +27 -4
- package/src/scripts/ai_council/budget_guard.ts +300 -11
- package/src/scripts/ai_council/bundler.ts +20 -29
- package/src/scripts/ai_council/chairman.ts +17 -2
- package/src/scripts/ai_council/cli_agency_bounds.ts +158 -0
- package/src/scripts/ai_council/cli_launch_env.ts +54 -0
- package/src/scripts/ai_council/cli_least_agency_canary.ts +18 -2
- package/src/scripts/ai_council/clients.ts +55 -73
- package/src/scripts/ai_council/config.ts +16 -22
- package/src/scripts/ai_council/council_egress.ts +167 -0
- package/src/scripts/ai_council/exposure_ledger.ts +117 -0
- package/src/scripts/ai_council/free_hand_shadow.ts +276 -0
- package/src/scripts/ai_council/free_route.ts +216 -0
- package/src/scripts/ai_council/free_route_catalog.ts +173 -0
- package/src/scripts/ai_council/free_route_client.ts +95 -0
- package/src/scripts/ai_council/free_rung.ts +61 -0
- package/src/scripts/ai_council/hand_payload.ts +230 -0
- package/src/scripts/ai_council/hand_schemas.ts +123 -0
- package/src/scripts/ai_council/jury_aggregate.ts +155 -1
- package/src/scripts/ai_council/kind_flip.ts +221 -0
- package/src/scripts/ai_council/kind_flip_state.ts +19 -0
- package/src/scripts/ai_council/learn_low_impact_preview.ts +50 -22
- package/src/scripts/ai_council/modification_review.ts +98 -5
- package/src/scripts/ai_council/necessity.ts +7 -0
- package/src/scripts/ai_council/orchestrator.ts +16 -16
- package/src/scripts/ai_council/pricing.ts +10 -0
- package/src/scripts/ai_council/redact_low_impact_entry.ts +5 -2
- package/src/scripts/ai_council/response_render.ts +27 -4
- package/src/scripts/ai_council/round_reservations.ts +119 -0
- package/src/scripts/ai_council/route_chooser.ts +161 -0
- package/src/scripts/ai_council/route_liveness.ts +152 -0
- package/src/scripts/ai_council/route_member.ts +52 -0
- package/src/scripts/ai_council/seat_policy.ts +40 -0
- package/src/scripts/ai_council/seat_resume.ts +40 -0
- package/src/scripts/ai_council/shadow_dispatch.ts +13 -3
- package/src/scripts/ai_council/spend_gate.ts +18 -2
- package/src/scripts/ai_council/status_surface.ts +37 -0
- package/src/scripts/ai_council/transport_resolver.ts +15 -18
- package/src/scripts/analysis_analysts.ts +226 -0
- package/src/scripts/analysis_anchors.ts +140 -0
- package/src/scripts/analysis_and_optimize.ts +44 -0
- package/src/scripts/analysis_emit.ts +150 -0
- package/src/scripts/analysis_exchange.ts +186 -0
- package/src/scripts/analysis_gate.ts +158 -0
- package/src/scripts/analysis_inbox_final.ts +173 -0
- package/src/scripts/analysis_ledger.ts +119 -0
- package/src/scripts/analysis_pr_optimize.ts +219 -0
- package/src/scripts/analysis_pr_review.ts +240 -0
- package/src/scripts/analysis_pr_target.ts +121 -0
- package/src/scripts/analysis_prompts.ts +130 -0
- package/src/scripts/analysis_publish.ts +358 -0
- package/src/scripts/analysis_questions.ts +78 -0
- package/src/scripts/analysis_run.ts +248 -0
- package/src/scripts/analysis_run_record.ts +210 -0
- package/src/scripts/analysis_target.ts +343 -0
- package/src/scripts/analysis_validate.ts +161 -0
- package/src/scripts/anchor_eval_falsify.ts +1 -1
- package/src/scripts/arrival_report.ts +115 -0
- package/src/scripts/ask_transport.ts +284 -35
- package/src/scripts/backfill_model_tier.ts +4 -5
- package/src/scripts/before_complete_hook.ts +48 -2
- package/src/scripts/bench_hook_latency.ts +3 -3
- package/src/scripts/bench_procedure_cursor.ts +440 -0
- package/src/scripts/bootstrap.sh +3 -3
- package/src/scripts/build_exit_code_register.ts +440 -0
- package/src/scripts/build_proof.ts +23 -1
- package/src/scripts/cache_realization_report.ts +155 -14
- package/src/scripts/canary_liveness.ts +117 -0
- package/src/scripts/chat_history.ts +12 -15
- package/src/scripts/check_account_surface.ts +318 -0
- package/src/scripts/check_agent_artifact_location.ts +17 -160
- package/src/scripts/check_bundle_path_leakage.ts +6 -0
- package/src/scripts/check_ci_local_parity.ts +21 -13
- package/src/scripts/check_claims.ts +77 -2
- package/src/scripts/check_completion_review.ts +34 -1
- package/src/scripts/check_concern_admissions.ts +41 -5
- package/src/scripts/check_consumer_scope_flip.ts +1 -1
- package/src/scripts/check_context_paths.ts +2 -0
- package/src/scripts/check_council_layout.ts +9 -0
- package/src/scripts/check_credential_spelling.ts +267 -0
- package/src/scripts/check_egress_mutations.ts +239 -0
- package/src/scripts/check_enforcement_coverage.ts +16 -3
- package/src/scripts/check_estate_count.ts +16 -1
- package/src/scripts/check_finding_dispositions.ts +147 -0
- package/src/scripts/check_gate_coverage.ts +123 -21
- package/src/scripts/check_gate_reachability.ts +16 -2
- package/src/scripts/check_generator_sync.ts +46 -0
- package/src/scripts/check_hook_bundle_composition.ts +139 -1
- package/src/scripts/check_host_docs_digest.ts +142 -5
- package/src/scripts/check_kernel_edit_ratified.ts +301 -76
- package/src/scripts/check_kernel_rule_bundle.ts +14 -10
- package/src/scripts/check_knowledge_cards.ts +83 -3
- package/src/scripts/check_memory.ts +13 -3
- package/src/scripts/check_pack_size.ts +1 -1
- package/src/scripts/check_permission_deny_syntax.ts +247 -0
- package/src/scripts/check_platform_anchor.ts +243 -0
- package/src/scripts/check_proposal.ts +183 -1
- package/src/scripts/check_reach_channels.ts +5 -3
- package/src/scripts/check_references.ts +5 -2
- package/src/scripts/check_release_manifest_content.ts +33 -0
- package/src/scripts/check_release_pr_shape.ts +5 -0
- package/src/scripts/check_rule_invariants.ts +9 -1
- package/src/scripts/check_skill_body_budget.ts +343 -0
- package/src/scripts/check_skill_requires.ts +137 -1
- package/src/scripts/check_step_receipts.ts +246 -0
- package/src/scripts/check_structural_breaking.ts +7 -1
- package/src/scripts/check_suppression_hygiene.ts +8 -0
- package/src/scripts/check_test_weakening.ts +14 -0
- package/src/scripts/check_token_quality_golden.ts +5 -1
- package/src/scripts/check_update_banner.ts +50 -3
- package/src/scripts/check_verify_expectation_delta.ts +2 -1
- package/src/scripts/check_voice_lexicon.ts +531 -0
- package/src/scripts/ci_os_attribution.ts +327 -0
- package/src/scripts/ci_platform_scope.ts +69 -0
- package/src/scripts/ci_settle.ts +4 -1
- package/src/scripts/ci_status.ts +0 -1
- package/src/scripts/ci_time_to_green.ts +748 -0
- package/src/scripts/classify_merge_risk.ts +407 -19
- package/src/scripts/code_graph/sqlite_store.ts +1 -1
- package/src/scripts/compile_trigger_evals.ts +353 -0
- package/src/scripts/condense.ts +25 -31
- package/src/scripts/consumer_matrix.ts +61 -3
- package/src/scripts/council_availability_hook.ts +12 -4
- package/src/scripts/council_cli.ts +48 -38
- package/src/scripts/cross_repo_retrieve.ts +9 -72
- package/src/scripts/design_lock.ts +106 -0
- package/src/scripts/design_slop_rules.ts +30 -0
- package/src/scripts/design_sync.ts +264 -0
- package/src/scripts/design_system_import.ts +30 -13
- package/src/scripts/dispatch_economy_report.ts +46 -1
- package/src/scripts/dispatch_r2_reviewer.ts +41 -5
- package/src/scripts/egress_canary.ts +166 -0
- package/src/scripts/egress_sender_census.ts +101 -0
- package/src/scripts/external_sources_denylist.json +94 -12
- package/src/scripts/generate_catalog.ts +6 -2
- package/src/scripts/generate_owned_digest.ts +163 -0
- package/src/scripts/generate_reference_toc.ts +143 -0
- package/src/scripts/generate_subagent_floor.ts +11 -1
- package/src/scripts/handoff_context_hook.ts +34 -0
- package/src/scripts/hook_carrier_census.ts +263 -0
- package/src/scripts/hook_chunks.d.mts +12 -0
- package/src/scripts/hook_chunks.mjs +114 -0
- package/src/scripts/hook_manifest.json +1 -1
- package/src/scripts/hook_manifest.yaml +65 -42
- package/src/scripts/hooks/block_config_weakening.ts +127 -3
- package/src/scripts/hooks/block_credential_reads.ts +165 -0
- package/src/scripts/hooks/block_no_verify.ts +47 -23
- package/src/scripts/hooks/block_speaking_inbox_dir.ts +54 -8
- package/src/scripts/hooks/category_a.ts +202 -25
- package/src/scripts/hooks/concern_failure_policy.ts +6 -6
- package/src/scripts/hooks/concern_registry.ts +31 -6
- package/src/scripts/hooks/concern_registry_types.ts +11 -0
- package/src/scripts/hooks/delegation_nudge_hook.ts +105 -15
- package/src/scripts/hooks/design_pass_hook.ts +199 -13
- package/src/scripts/hooks/dispatch_hook.ts +13 -12
- package/src/scripts/hooks/egress_engine_loader.ts +125 -0
- package/src/scripts/hooks/egress_stage.ts +440 -0
- package/src/scripts/hooks/hook_stdin.ts +29 -4
- package/src/scripts/hooks/host_docs_pages.ts +194 -0
- package/src/scripts/hooks/host_docs_pages.yaml +75 -0
- package/src/scripts/hooks/host_lowering.json +1 -1
- package/src/scripts/hooks/host_lowering.yaml +22 -21
- package/src/scripts/hooks/host_rate_marker_hook.ts +73 -0
- package/src/scripts/hooks/instructions_observer_hook.ts +170 -0
- package/src/scripts/hooks/interruption_ledger_hook.ts +1 -1
- package/src/scripts/hooks/lazy_concern.ts +148 -0
- package/src/scripts/hooks/orchestration_record_hook.ts +80 -2
- package/src/scripts/hooks/payload_stub.ts +16 -6
- package/src/scripts/hooks/permission_gate.ts +7 -7
- package/src/scripts/hooks/push_settle_hook.ts +32 -3
- package/src/scripts/hooks/replay_hook.ts +43 -0
- package/src/scripts/hooks/reread_guard_hook.ts +87 -10
- package/src/scripts/hooks/rtk_wrap_hook.ts +4 -3
- package/src/scripts/hooks/rule_inject_hook.ts +8 -1
- package/src/scripts/hooks/session_eol_hook.ts +48 -1
- package/src/scripts/hooks/source_first_gate_hook.ts +6 -8
- package/src/scripts/hooks/spawn_guard_shadow_hook.ts +203 -10
- package/src/scripts/hooks/state_io.ts +2 -2
- package/src/scripts/hooks/svg_obligation.ts +553 -0
- package/src/scripts/hooks/svg_rules_loader.ts +133 -0
- package/src/scripts/hooks/tool_result_bytes_hook.ts +14 -5
- package/src/scripts/hooks/turn_end_gate_hook.ts +5 -3
- package/src/scripts/hooks/ui_route_nudge_hook.ts +2 -12
- package/src/scripts/hooks_doctor.ts +31 -0
- package/src/scripts/hooks_status.ts +58 -3
- package/src/scripts/inbox_source_census.ts +74 -13
- package/src/scripts/install +25 -3
- package/src/scripts/install.ts +60 -91
- package/src/scripts/interruption_report.ts +11 -1
- package/src/scripts/layer_baseline_report.ts +267 -0
- package/src/scripts/learning_sidecar.ts +1 -1
- package/src/scripts/lint_agents_layout.ts +3 -0
- package/src/scripts/lint_blocker_citations.ts +104 -0
- package/src/scripts/lint_breaking_changes_index.ts +40 -7
- package/src/scripts/lint_consolidation_lineage.ts +150 -19
- package/src/scripts/lint_consumer_internal_refs.ts +90 -42
- package/src/scripts/lint_context_spine_usage.ts +21 -0
- package/src/scripts/lint_design_antipattern_parity.ts +39 -7
- package/src/scripts/lint_design_quality.ts +60 -12
- package/src/scripts/lint_evidence_artifacts.ts +31 -0
- package/src/scripts/lint_example_fences.ts +11 -2
- package/src/scripts/lint_ghostwriter_source.ts +42 -10
- package/src/scripts/lint_hook_manifest.ts +94 -0
- package/src/scripts/lint_marketplace_install_completeness.ts +4 -0
- package/src/scripts/lint_mcp_config_security.ts +9 -11
- package/src/scripts/lint_motion_authority_drift.ts +27 -0
- package/src/scripts/lint_plan_risk_register.ts +28 -1
- package/src/scripts/lint_positioning.ts +4 -4
- package/src/scripts/lint_provenance.ts +1 -0
- package/src/scripts/lint_roadmap_blockers.ts +65 -4
- package/src/scripts/lint_roadmap_complexity.ts +98 -0
- package/src/scripts/lint_skill_link_reach.ts +251 -9
- package/src/scripts/lint_skill_procedures.ts +252 -0
- package/src/scripts/lint_skill_scripts_readonly.ts +12 -1
- package/src/scripts/lint_subagent_determinism.ts +14 -1
- package/src/scripts/lint_svg_asset.ts +365 -0
- package/src/scripts/lint_ticked_unmet_criteria.ts +300 -21
- package/src/scripts/mcp_registry_submit.sh +2 -2
- package/src/scripts/mcp_server/consumer_tool_catalog.json +4 -4
- package/src/scripts/mcp_server/suggest_skill.ts +89 -4
- package/src/scripts/mcp_server/tools.ts +2 -33
- package/src/scripts/measure_skill_ranker_baseline.ts +203 -5
- package/src/scripts/measure_turn_end_gate.ts +61 -1
- package/src/scripts/merge_clearance.ts +225 -0
- package/src/scripts/migrate_command_suggestions.ts +1 -1
- package/src/scripts/network_sources.ts +236 -0
- package/src/scripts/no_go_deny_rows.ts +225 -0
- package/src/scripts/orchestration_record.ts +15 -2
- package/src/scripts/plan_test_shards.ts +103 -0
- package/src/scripts/pr_url_reminder_hook.ts +10 -0
- package/src/scripts/print_required_checks.ts +5 -5
- package/src/scripts/probe_depth_shadow.ts +406 -0
- package/src/scripts/probe_turnaround.ts +342 -10
- package/src/scripts/ratification_subject.ts +176 -0
- package/src/scripts/rdp_gate_classify.ts +1 -0
- package/src/scripts/rdp_quality_eval.ts +1 -0
- package/src/scripts/release.ts +26 -55
- package/src/scripts/release_drill.ts +52 -23
- package/src/scripts/release_env.ts +37 -0
- package/src/scripts/release_publication.ts +11 -1
- package/src/scripts/report_consumer_gate_reach.ts +233 -0
- package/src/scripts/report_merge_gate_load.ts +295 -0
- package/src/scripts/report_project_contract.ts +123 -0
- package/src/scripts/report_reducible_classes.ts +342 -0
- package/src/scripts/report_required_checks_drift.ts +5 -3
- package/src/scripts/report_skill_host_census.ts +199 -0
- package/src/scripts/report_standing_payload_by_host.ts +7 -7
- package/src/scripts/retro.ts +758 -0
- package/src/scripts/retro_facts.ts +575 -0
- package/src/scripts/retro_queue.ts +739 -0
- package/src/scripts/retro_session_facts.ts +218 -0
- package/src/scripts/retro_sweep.ts +493 -0
- package/src/scripts/retro_triage.ts +126 -0
- package/src/scripts/roadmap_context.ts +2 -2
- package/src/scripts/roadmap_drain_queue.ts +601 -0
- package/src/scripts/run_supervise.ts +24 -2
- package/src/scripts/schemas/agent-settings.schema.json +0 -16
- package/src/scripts/schemas/command.schema.json +3 -3
- package/src/scripts/schemas/review-findings.schema.json +8 -0
- package/src/scripts/schemas/skill.schema.json +7 -6
- package/src/scripts/schemas/subagent.schema.json +33 -2
- package/src/scripts/score_skill_selection.ts +5 -2
- package/src/scripts/second_brain_retrieval.ts +1 -0
- package/src/scripts/second_brain_run.ts +1 -0
- package/src/scripts/self_repair_cli.ts +563 -87
- package/src/scripts/self_review_gate.ts +59 -4
- package/src/scripts/session_register_hook.ts +91 -4
- package/src/scripts/sessions_cli.ts +100 -5
- package/src/scripts/skill_collision_clusters.ts +1 -1
- package/src/scripts/skill_tools/score_skill_relevance.ts +31 -2
- package/src/scripts/skill_trigger_eval.ts +4 -2
- package/src/scripts/source_adapters.ts +183 -0
- package/src/scripts/step_receipt.ts +100 -0
- package/src/scripts/sync_pr_branch.ts +4 -0
- package/src/scripts/test_council_qualification.ts +1 -1
- package/src/scripts/trigger_eval_grandfather.json +3 -49
- package/src/scripts/trigger_eval_rotation.ts +31 -3
- package/src/scripts/ui_conformance_probe.ts +405 -1
- package/src/scripts/update_counts.ts +230 -11
- package/src/scripts/update_invite_hook.ts +245 -0
- package/src/scripts/update_notice_hook.ts +298 -0
- package/src/scripts/validate_frontmatter.ts +85 -0
- package/src/scripts/worker_reuse_shadow_report.ts +121 -0
- package/src/scripts/worktree_cleanup_check.ts +915 -121
- package/src/server/io/yamlIO.ts +2 -2
- package/src/server/schemas/settings.ts +37 -23
- package/src/shared/brandTokenDocument.ts +46 -0
- package/src/shared/brandTokenPaths.ts +43 -0
- package/src/shared/settingsCarveOut.ts +0 -8
- package/src/shared/skillRanking.ts +106 -5
- package/src/shared/userMd/formAdapter.ts +15 -1
- package/src/shared/userMd/schema.ts +22 -0
- package/src/templates/agent-user.md +4 -0
- package/src/templates/agent-user.yml +4 -0
- package/dist/cli-delegate/chunk-523HCFYO.js +0 -90
- package/dist/cli-delegate/chunk-AL3RZ22D.js +0 -74
- package/dist/cli-delegate/chunk-KB5FZ655.js +0 -208
- package/dist/cli-delegate/chunk-MDPPKQCQ.js +0 -875
- package/dist/cli-delegate/chunk-MSUL5NYP.js +0 -1123
- package/dist/cli-delegate/chunk-OAFSJBHH.js +0 -272
- package/dist/ui/assets/index-C3djEJah.js +0 -23
- package/src/scripts/_lib/continuation_ladder.ts +0 -335
- package/src/scripts/hooks/run_continuation_hook.ts +0 -1524
|
@@ -0,0 +1,438 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A consumer no-go bullet, sorted into `path`, `command` or `prose`, and
|
|
3
|
+
* rendered as the deny rule it would become.
|
|
4
|
+
*
|
|
5
|
+
* `road-to-a-project-contract-written-down` step 2.1. `/agents:init` asks the
|
|
6
|
+
* consumer for no-gos and writes them into their own `AGENTS.md`. A sentence
|
|
7
|
+
* there binds every turn and the agent may still read past it. This is what
|
|
8
|
+
* turns the two kinds that CAN be enforced into rows the host refuses on, and
|
|
9
|
+
* what refuses to turn the third kind into anything at all.
|
|
10
|
+
*
|
|
11
|
+
* ```
|
|
12
|
+
* A BULLET THE FUNCTION CANNOT CLASSIFY IS `prose`, NEVER A GUESSED ROW.
|
|
13
|
+
* A ROW ON A VAGUE SENTENCE BLOCKS LEGITIMATE WORK AND CANNOT SAY WHY.
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* Pure: it reads a string and returns a verdict. Nothing here opens a settings
|
|
17
|
+
* file — the consent prompt and the append are step 2.2's.
|
|
18
|
+
*
|
|
19
|
+
* WHAT MAKES A VERDICT. Two independent signals must agree, and either one
|
|
20
|
+
* missing is `prose`:
|
|
21
|
+
*
|
|
22
|
+
* 1. ONE backticked token. The consumer guide's own `## No-gos` shape puts
|
|
23
|
+
* the path or the command in backticks. Zero means the bullet names
|
|
24
|
+
* neither; two or more means the subject is ambiguous, and picking one
|
|
25
|
+
* would be the guess this module exists to refuse.
|
|
26
|
+
* 2. An action verb from a closed vocabulary. The token's SHAPE says what it
|
|
27
|
+
* is; only the verb says what must not happen to it. "`vendor/` is
|
|
28
|
+
* generated" carries a path and no action, and choosing `Edit` over `Read`
|
|
29
|
+
* on its behalf would widen or narrow a rule nobody wrote.
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
/** What a bullet turned out to be. */
|
|
33
|
+
export type NoGoKind = 'path' | 'command' | 'prose';
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* What the bullet forbids DOING — host-neutral, and the whole output of this
|
|
37
|
+
* module beside the token.
|
|
38
|
+
*
|
|
39
|
+
* `null` on a prose verdict. The split between this and the host's spelling is
|
|
40
|
+
* the council's convergent requirement of 2026-10-13 (anthropic + openai, 2/2):
|
|
41
|
+
* a classifier that resolves a host row at run time is not a pure classifier,
|
|
42
|
+
* and a renderer that re-derives the semantics is a second place for them to
|
|
43
|
+
* drift. The classifier never learns which host it is running for.
|
|
44
|
+
*/
|
|
45
|
+
export type NoGoAction = 'read' | 'edit' | 'run';
|
|
46
|
+
|
|
47
|
+
export interface NoGoClassification {
|
|
48
|
+
/** The bullet as written, list marker stripped and trimmed. */
|
|
49
|
+
readonly bullet: string;
|
|
50
|
+
readonly kind: NoGoKind;
|
|
51
|
+
/** The one backticked token the verdict rests on; `null` for prose. */
|
|
52
|
+
readonly token: string | null;
|
|
53
|
+
/** What must not happen to it; `null` for prose. */
|
|
54
|
+
readonly action: NoGoAction | null;
|
|
55
|
+
/** Why the verdict is what it is — shown beside the row at consent time. */
|
|
56
|
+
readonly reason: string;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/** Verbs that forbid READING. A `Read` deny also covers edits and writes. */
|
|
60
|
+
const READ_VERBS = ['read', 'open', 'view', 'cat', 'print', 'dump'] as const;
|
|
61
|
+
|
|
62
|
+
/** Verbs that forbid CHANGING. `Edit` is the only path rule the host checks. */
|
|
63
|
+
const EDIT_VERBS = [
|
|
64
|
+
'edit',
|
|
65
|
+
'modify',
|
|
66
|
+
'change',
|
|
67
|
+
'write',
|
|
68
|
+
'touch',
|
|
69
|
+
'delete',
|
|
70
|
+
'remove',
|
|
71
|
+
'rename',
|
|
72
|
+
'commit',
|
|
73
|
+
'overwrite',
|
|
74
|
+
'regenerate',
|
|
75
|
+
] as const;
|
|
76
|
+
|
|
77
|
+
/** Verbs that forbid EXECUTING. */
|
|
78
|
+
const RUN_VERBS = ['run', 'execute', 'invoke', 'call'] as const;
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Words that make a bullet a PROHIBITION rather than a description.
|
|
82
|
+
*
|
|
83
|
+
* Required, and that is the correction a review forced: a verb scan alone
|
|
84
|
+
* accepts "``npm run build`` is the only sanctioned build command" and renders
|
|
85
|
+
* a deny row over the command the bullet PRESCRIBES. A no-go section is not the
|
|
86
|
+
* only place a backticked command appears in a sentence with a verb near it.
|
|
87
|
+
*/
|
|
88
|
+
const NEGATIONS = [
|
|
89
|
+
'never',
|
|
90
|
+
'not',
|
|
91
|
+
'no',
|
|
92
|
+
"don't",
|
|
93
|
+
'dont',
|
|
94
|
+
'avoid',
|
|
95
|
+
'forbidden',
|
|
96
|
+
'prohibited',
|
|
97
|
+
] as const;
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Text that ends the clause the prohibition governs.
|
|
101
|
+
*
|
|
102
|
+
* The second half of the same correction. "Never run migrations in production
|
|
103
|
+
* - use `php artisan migrate --pretend` instead" negates, carries a run verb,
|
|
104
|
+
* and carries a backticked command — and the command is the ESCAPE HATCH the
|
|
105
|
+
* bullet recommends. A separator between the verb and the token means the token
|
|
106
|
+
* belongs to a different clause, so the verdict is prose.
|
|
107
|
+
*/
|
|
108
|
+
const CLAUSE_BREAK =
|
|
109
|
+
/(?:^|\s)[-–—](?:\s|$)|[;:,()]|\b(?:instead|use|using|prefer|except|unless|but|rather|need|needs|needed|necessary|required|optional|if|when|while|without|before|after|until|other than)\b/i;
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Words between the negation and the verb that INVERT what the negation does.
|
|
113
|
+
*
|
|
114
|
+
* The structural half of the fix, because a word list alone has now failed
|
|
115
|
+
* three times. "Don't forget to run `npm ci`" negates the OMISSION of the
|
|
116
|
+
* action, so the sentence prescribes exactly what a deny row would forbid.
|
|
117
|
+
* The shape is always the same — a negation, a verb of omission or
|
|
118
|
+
* hesitation, an infinitive marker, then the real verb — and `to` is the part
|
|
119
|
+
* that gives it away: a prohibition reads "never run X", never "never
|
|
120
|
+
* <something> to run X".
|
|
121
|
+
*
|
|
122
|
+
* So: an infinitive `to` between the negation and the action verb means the
|
|
123
|
+
* action is the OBJECT of some other verb rather than the thing forbidden.
|
|
124
|
+
* That catches `forget`, `hesitate`, `fail`, `neglect` and every sibling
|
|
125
|
+
* nobody has thought of yet, which a fourth word list would not.
|
|
126
|
+
*/
|
|
127
|
+
const INVERTS_THE_NEGATION = /\bto\b/i;
|
|
128
|
+
|
|
129
|
+
/** Backticked spans replaced by spaces, so a verb INSIDE the token is not read as the bullet's verb. */
|
|
130
|
+
function maskTokens(bullet: string): string {
|
|
131
|
+
return bullet.replace(/`[^`]+`/g, (m) => ' '.repeat(m.length));
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/** First index at which any whole word in `words` occurs, or -1. */
|
|
135
|
+
function firstWordIndex(haystack: string, words: readonly string[]): number {
|
|
136
|
+
let best = -1;
|
|
137
|
+
for (const w of words) {
|
|
138
|
+
const m = new RegExp(`\\b${w}\\b`, 'i').exec(haystack);
|
|
139
|
+
if (m !== null && (best === -1 || m.index < best)) best = m.index;
|
|
140
|
+
}
|
|
141
|
+
return best;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
interface VerbHit {
|
|
145
|
+
readonly action: NoGoAction;
|
|
146
|
+
readonly start: number;
|
|
147
|
+
readonly end: number;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/** The first action verb at or after `from`, or `null`. */
|
|
151
|
+
function verbAfter(masked: string, from: number): VerbHit | null {
|
|
152
|
+
const groups: readonly (readonly [NoGoAction, readonly string[]])[] = [
|
|
153
|
+
['run', RUN_VERBS],
|
|
154
|
+
['read', READ_VERBS],
|
|
155
|
+
['edit', EDIT_VERBS],
|
|
156
|
+
];
|
|
157
|
+
let best: VerbHit | null = null;
|
|
158
|
+
for (const [action, verbs] of groups) {
|
|
159
|
+
for (const v of verbs) {
|
|
160
|
+
const re = new RegExp(`\\b${v.replace("'", "'?")}\\b`, 'gi');
|
|
161
|
+
let m = re.exec(masked);
|
|
162
|
+
while (m !== null) {
|
|
163
|
+
if (m.index >= from && (best === null || m.index < best.start)) {
|
|
164
|
+
best = { action, start: m.index, end: m.index + m[0].length };
|
|
165
|
+
}
|
|
166
|
+
m = re.exec(masked);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
return best;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/** The backticked spans of a bullet, in order. */
|
|
174
|
+
function backticked(bullet: string): string[] {
|
|
175
|
+
const out: string[] = [];
|
|
176
|
+
const re = /`([^`]+)`/g;
|
|
177
|
+
let m = re.exec(bullet);
|
|
178
|
+
while (m !== null) {
|
|
179
|
+
const inner = (m[1] as string).trim();
|
|
180
|
+
if (inner.length > 0) out.push(inner);
|
|
181
|
+
m = re.exec(bullet);
|
|
182
|
+
}
|
|
183
|
+
return out;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* Does `token` look like a filesystem path?
|
|
188
|
+
*
|
|
189
|
+
* A path separator, a leading dot, or a file extension. A bare word is NOT a
|
|
190
|
+
* path: `migrations` alone could be a directory or a command, and the guide's
|
|
191
|
+
* own example writes the trailing slash.
|
|
192
|
+
*/
|
|
193
|
+
/**
|
|
194
|
+
* File extensions a single-dot token is accepted on.
|
|
195
|
+
*
|
|
196
|
+
* A closed list, because neither open rule works. `/\.[A-Za-z0-9]+$/` accepted
|
|
197
|
+
* `users.id`, `app.debug` and `v2.1`; the replacement that excluded
|
|
198
|
+
* all-lowercase single-dot tokens refused `package.json`, `main.go` and
|
|
199
|
+
* `index.js` — a consumer's most likely first no-go — while still accepting
|
|
200
|
+
* `Users.id` and `my_table.id`. Both were measured; the list is what
|
|
201
|
+
* distinguishes the two classes.
|
|
202
|
+
*
|
|
203
|
+
* It is NOT exhaustive, and an earlier version of this comment said it
|
|
204
|
+
* distinguished them "without guessing either way", which overstated it.
|
|
205
|
+
* `Dockerfile`, `Makefile`, `terraform.tfvars`, `build.gradle`, `app.vue` and
|
|
206
|
+
* a long tail of real extensions fall to prose. The direction is the safe one
|
|
207
|
+
* — no row is built and a reason is printed — and a consumer who means a path
|
|
208
|
+
* can always write the trailing slash or a `/`, which both bypass this list.
|
|
209
|
+
*/
|
|
210
|
+
const FILE_EXTENSIONS = new Set([
|
|
211
|
+
'cjs', 'conf', 'css', 'csv', 'env', 'go', 'html', 'ini', 'java', 'js', 'json', 'jsx',
|
|
212
|
+
'kt', 'lock', 'log', 'md', 'mjs', 'php', 'pem', 'py', 'rb', 'rs', 'scss', 'sh', 'sql',
|
|
213
|
+
'sqlite', 'svg', 'toml', 'ts', 'tsx', 'txt', 'xml', 'yaml', 'yml',
|
|
214
|
+
]);
|
|
215
|
+
|
|
216
|
+
function looksLikePath(token: string): boolean {
|
|
217
|
+
if (/\s/.test(token)) return false;
|
|
218
|
+
if (token.includes('/')) return true;
|
|
219
|
+
if (token.startsWith('.')) return true;
|
|
220
|
+
const dot = token.lastIndexOf('.');
|
|
221
|
+
if (dot <= 0) return false;
|
|
222
|
+
return FILE_EXTENSIONS.has(token.slice(dot + 1).toLowerCase());
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* Characters that make a path token mean something other than it reads.
|
|
227
|
+
*
|
|
228
|
+
* `!` is a gitignore NEGATION on the host: a deny row starting with it carves
|
|
229
|
+
* paths OUT of the deny rules listed before it, so a no-go bullet would weaken
|
|
230
|
+
* a consumer's existing list while being shown as a deny row. `[`, `]` and `?`
|
|
231
|
+
* are gitignore character classes, and the host does not escape a rule you
|
|
232
|
+
* wrote yourself — `reports/[2024]/**` matches `reports/2/`, never the
|
|
233
|
+
* directory the consumer named.
|
|
234
|
+
*
|
|
235
|
+
* A single leading `/` joins them, and the page carries a warning box about it:
|
|
236
|
+
* a pattern with one leading slash "isn't an absolute path. The single leading
|
|
237
|
+
* slash anchors at the settings source, not the filesystem root" — the page's
|
|
238
|
+
* own example of the mistake is elided here because a home-shaped literal in a
|
|
239
|
+
* published file is what `check_bundle_path_leakage` exists to refuse. A
|
|
240
|
+
* consumer who writes `` `/etc/passwd` `` means the absolute path, and the row
|
|
241
|
+
* would guard `<working directory>/etc/passwd` — a path that does not exist.
|
|
242
|
+
*
|
|
243
|
+
* `*` is deliberately NOT here: a consumer who writes `src/generated/**` means
|
|
244
|
+
* that glob, and the guide teaches the trailing slash for everything else.
|
|
245
|
+
*/
|
|
246
|
+
const UNSAFE_PATH_CHARS = /^!|^\/(?!\/)|[[\]?]/;
|
|
247
|
+
|
|
248
|
+
const PROSE = (bullet: string, reason: string): NoGoClassification => ({
|
|
249
|
+
bullet,
|
|
250
|
+
kind: 'prose',
|
|
251
|
+
token: null,
|
|
252
|
+
action: null,
|
|
253
|
+
reason,
|
|
254
|
+
});
|
|
255
|
+
|
|
256
|
+
/** Strip a leading markdown list marker, if present. */
|
|
257
|
+
function stripMarker(line: string): string {
|
|
258
|
+
return line.replace(/^\s*[-*+]\s+/, '').trim();
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
export function classifyNoGo(raw: string): NoGoClassification {
|
|
262
|
+
const bullet = stripMarker(raw);
|
|
263
|
+
if (bullet.length === 0) return PROSE(bullet, 'empty bullet');
|
|
264
|
+
|
|
265
|
+
const tokens = backticked(bullet);
|
|
266
|
+
if (tokens.length === 0) {
|
|
267
|
+
return PROSE(bullet, 'names no path and no command in backticks');
|
|
268
|
+
}
|
|
269
|
+
if (tokens.length > 1) {
|
|
270
|
+
return PROSE(
|
|
271
|
+
bullet,
|
|
272
|
+
`${String(tokens.length)} backticked tokens — the subject is ambiguous, so no row is built`,
|
|
273
|
+
);
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
const token = tokens[0] as string;
|
|
277
|
+
const masked = maskTokens(bullet);
|
|
278
|
+
const tokenAt = bullet.indexOf(`\`${token}\``);
|
|
279
|
+
|
|
280
|
+
const negAt = firstWordIndex(masked, NEGATIONS);
|
|
281
|
+
if (negAt === -1) {
|
|
282
|
+
return PROSE(
|
|
283
|
+
bullet,
|
|
284
|
+
'states no prohibition, so the backticked token may be what the bullet recommends',
|
|
285
|
+
);
|
|
286
|
+
}
|
|
287
|
+
const verb = verbAfter(masked, negAt);
|
|
288
|
+
if (verb === null) {
|
|
289
|
+
return PROSE(bullet, 'names no action verb, so what must not happen to it is unstated');
|
|
290
|
+
}
|
|
291
|
+
// The negation must govern the VERB too, not merely appear earlier in the
|
|
292
|
+
// line. Without this, "If no cache exists, run `npm run build`" and "There
|
|
293
|
+
// is no need to run `npm install`" both denied the command they permit —
|
|
294
|
+
// round 1's finding narrowed rather than closed, measured by round 2.
|
|
295
|
+
const negToVerb = masked.slice(negAt, verb.start);
|
|
296
|
+
if (CLAUSE_BREAK.test(negToVerb)) {
|
|
297
|
+
return PROSE(
|
|
298
|
+
bullet,
|
|
299
|
+
'the prohibition and the action verb sit in different clauses, so the bullet may ' +
|
|
300
|
+
'be permitting rather than forbidding',
|
|
301
|
+
);
|
|
302
|
+
}
|
|
303
|
+
if (INVERTS_THE_NEGATION.test(negToVerb)) {
|
|
304
|
+
return PROSE(
|
|
305
|
+
bullet,
|
|
306
|
+
'the action is the object of another verb rather than the thing forbidden — ' +
|
|
307
|
+
'"do not forget to X" asks for X, it does not forbid it',
|
|
308
|
+
);
|
|
309
|
+
}
|
|
310
|
+
if (verb.start > tokenAt) {
|
|
311
|
+
return PROSE(bullet, 'the action verb comes after the token, so the two may not be related');
|
|
312
|
+
}
|
|
313
|
+
const between = bullet.slice(verb.end, tokenAt);
|
|
314
|
+
if (CLAUSE_BREAK.test(between)) {
|
|
315
|
+
return PROSE(
|
|
316
|
+
bullet,
|
|
317
|
+
`\`${token}\` sits in a different clause from the prohibition — it may be the ` +
|
|
318
|
+
'alternative the bullet recommends, so no rule is built',
|
|
319
|
+
);
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
if (verb.action === 'run') {
|
|
323
|
+
return {
|
|
324
|
+
bullet,
|
|
325
|
+
kind: 'command',
|
|
326
|
+
token,
|
|
327
|
+
action: verb.action,
|
|
328
|
+
reason: 'a negated run verb over a backticked command',
|
|
329
|
+
};
|
|
330
|
+
}
|
|
331
|
+
const action = verb.action;
|
|
332
|
+
|
|
333
|
+
if (!looksLikePath(token)) {
|
|
334
|
+
return PROSE(
|
|
335
|
+
bullet,
|
|
336
|
+
`a ${action} verb over \`${token}\`, which has no path shape — no rule is built`,
|
|
337
|
+
);
|
|
338
|
+
}
|
|
339
|
+
if (UNSAFE_PATH_CHARS.test(token)) {
|
|
340
|
+
return PROSE(
|
|
341
|
+
bullet,
|
|
342
|
+
`\`${token}\` carries a gitignore metacharacter (\`!\`, \`[\`, \`]\` or \`?\`) that the ` +
|
|
343
|
+
'host does not escape, so a rule built from it would guard something else',
|
|
344
|
+
);
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
return {
|
|
348
|
+
bullet,
|
|
349
|
+
kind: 'path',
|
|
350
|
+
token,
|
|
351
|
+
action,
|
|
352
|
+
reason:
|
|
353
|
+
action === 'read'
|
|
354
|
+
? 'a read verb over a backticked path'
|
|
355
|
+
: 'an edit verb over a backticked path',
|
|
356
|
+
};
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
/**
|
|
360
|
+
* Every bullet of a `## No-gos` section, in file order.
|
|
361
|
+
*
|
|
362
|
+
* Non-bullet lines — the heading, blanks, a sentence between bullets — are not
|
|
363
|
+
* no-gos and are skipped rather than classified as prose: a prose verdict is a
|
|
364
|
+
* statement about a bullet somebody wrote, and a heading is not one.
|
|
365
|
+
*/
|
|
366
|
+
export function classifyNoGos(section: string): readonly NoGoClassification[] {
|
|
367
|
+
return section
|
|
368
|
+
.split('\n')
|
|
369
|
+
.filter((line) => /^\s*[-*+]\s+\S/.test(line))
|
|
370
|
+
.map((line) => classifyNoGo(line));
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
/** The `##` heading spellings a no-gos section is written under. */
|
|
374
|
+
const NO_GOS_HEADINGS = new Set(['no-gos', 'no-gos (never do this)']);
|
|
375
|
+
|
|
376
|
+
/**
|
|
377
|
+
* The body of a consumer `AGENTS.md`'s `## No-gos` section, or `''`.
|
|
378
|
+
*
|
|
379
|
+
* Skips fenced blocks for the reason `report_project_contract` does, and it is
|
|
380
|
+
* the same load-bearing reason rather than a shared habit: the consumer guide
|
|
381
|
+
* ships this exact heading INSIDE a ```markdown fence as copy-in material, so a
|
|
382
|
+
* reader without the skip would classify the guide's own example bullets and
|
|
383
|
+
* offer to deny `migrations/` in a repository that never asked.
|
|
384
|
+
*/
|
|
385
|
+
export function extractNoGosSection(body: string): string {
|
|
386
|
+
const out: string[] = [];
|
|
387
|
+
/** The open fence's marker character AND its length. */
|
|
388
|
+
let fence: { char: string; len: number } | null = null;
|
|
389
|
+
let inside = false;
|
|
390
|
+
const lines = body.split('\n');
|
|
391
|
+
for (let n = 0; n < lines.length; n += 1) {
|
|
392
|
+
const line = (lines[n] as string).trimEnd();
|
|
393
|
+
const open = /^\s*(`{3,}|~{3,})/.exec(line);
|
|
394
|
+
if (open !== null) {
|
|
395
|
+
const marker = open[1] as string;
|
|
396
|
+
const char = marker[0] as string;
|
|
397
|
+
if (fence === null) {
|
|
398
|
+
fence = { char, len: marker.length };
|
|
399
|
+
continue;
|
|
400
|
+
}
|
|
401
|
+
// A fence closes only on the SAME character and at least its own
|
|
402
|
+
// length. Tracking the character alone let a ````-delimited block
|
|
403
|
+
// close on its first inner ``` line, so the rest of a guide's
|
|
404
|
+
// copy-in example was read as the consumer's own rules.
|
|
405
|
+
if (char === fence.char && marker.length >= fence.len) fence = null;
|
|
406
|
+
continue;
|
|
407
|
+
}
|
|
408
|
+
if (fence !== null) continue;
|
|
409
|
+
// A setext underline turns the PREVIOUS line into a heading, which
|
|
410
|
+
// closes the section the same way an ATX heading does — but ONLY when
|
|
411
|
+
// that previous line is a paragraph. After a blank line or a list
|
|
412
|
+
// item, CommonMark makes `---` a thematic break, and the first version
|
|
413
|
+
// of this branch treated every one of them as a heading: it popped the
|
|
414
|
+
// preceding bullet and closed the section, so a `---` separator before
|
|
415
|
+
// the next heading silently ate bullets. Silently is the word that
|
|
416
|
+
// matters — a dropped bullet produces no row AND no reason line, so
|
|
417
|
+
// the consent screen never mentions it.
|
|
418
|
+
const prev = out.length > 0 ? (out[out.length - 1] as string) : '';
|
|
419
|
+
const prevIsParagraph = prev.trim().length > 0 && !/^\s*[-*+>#]|^\s*\d+[.)]/.test(prev);
|
|
420
|
+
if (/^(?:=+|-{2,})\s*$/.test(line) && inside && prevIsParagraph) {
|
|
421
|
+
out.pop();
|
|
422
|
+
inside = false;
|
|
423
|
+
continue;
|
|
424
|
+
}
|
|
425
|
+
// ANY heading level closes the section; only a level-two one with a
|
|
426
|
+
// matching title opens it. Matching `##` alone let a following `#
|
|
427
|
+
// Appendix` leave the section open, so every bullet of every later
|
|
428
|
+
// top-level section was classified as a no-go.
|
|
429
|
+
const h = /^(#{1,6})[ \t]+(.+?)[ \t]*#*$/.exec(line);
|
|
430
|
+
if (h !== null) {
|
|
431
|
+
const level2 = (h[1] as string).length === 2;
|
|
432
|
+
inside = level2 && NO_GOS_HEADINGS.has((h[2] as string).trim().toLowerCase());
|
|
433
|
+
continue;
|
|
434
|
+
}
|
|
435
|
+
if (inside) out.push(line);
|
|
436
|
+
}
|
|
437
|
+
return out.join('\n');
|
|
438
|
+
}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The user-scoped ownership ledger.
|
|
3
|
+
*
|
|
4
|
+
* WHY IT EXISTS. A globally installed file's record of what this package wrote
|
|
5
|
+
* lived only in a PROJECT manifest, and that manifest is written only when the
|
|
6
|
+
* install runs from a directory carrying project settings. Run the install from
|
|
7
|
+
* anywhere else and nothing was recorded; run it from a second project and that
|
|
8
|
+
* project's manifest recorded nothing about the first. With no recorded digest
|
|
9
|
+
* the writer could not tell a user's edit from our bytes and overwrote it, and
|
|
10
|
+
* the reaper deleted an edited file the package retired without ever reading it.
|
|
11
|
+
* Whether an edit survived depended on the working directory of a later install.
|
|
12
|
+
*
|
|
13
|
+
* WHERE IT LIVES. In the global deploy inventory every global deploy already
|
|
14
|
+
* writes (`global_deploy_inventory.ts`, schema 2, additive `digests`), so the
|
|
15
|
+
* record belongs to the user, not to whichever project an install ran from. The
|
|
16
|
+
* AI council's reading of ADR-020 (2026-10-16) bounds it: ownership metadata only, no project key, no artefact selection.
|
|
17
|
+
*
|
|
18
|
+
* WHAT IT RECORDS per file: the digest of the bytes we INSTALLED and the digest
|
|
19
|
+
* of the bytes we would install NOW — two, because one cannot distinguish "the
|
|
20
|
+
* user changed it" from "we shipped a new version of it".
|
|
21
|
+
*
|
|
22
|
+
* - A file this run wrote or found identical: both are the on-disk digest.
|
|
23
|
+
* - A file this run PRESERVED: both are the digest of the content STAGED beside
|
|
24
|
+
* it — the package content this installer last produced for the path, the
|
|
25
|
+
* meaning the project manifest gives the same field (`manifestFiles.ts`,
|
|
26
|
+
* `reconcileToolFiles`). That is what makes the documented resolution work:
|
|
27
|
+
* merge the sidecar and the file matches, so the next install is clean.
|
|
28
|
+
* Keeping the older digest would leave a correctly merged file looking
|
|
29
|
+
* edited forever. What it must never be is a re-hash of the target: that
|
|
30
|
+
* records the user's edit as ours, and the next run overwrites it.
|
|
31
|
+
* - The staged sidecar: its own digest, `kind: "sidecar"` — the only proof that
|
|
32
|
+
* this installer wrote that file, so a later version may refresh it.
|
|
33
|
+
* - A retired file the user edited: kept on disk, kept in the record with
|
|
34
|
+
* `packaged_sha256: null`, so the next run reads it as retired-modified again
|
|
35
|
+
* instead of as an untracked tagged orphan it would delete.
|
|
36
|
+
*/
|
|
37
|
+
import * as fs from 'node:fs';
|
|
38
|
+
import * as path from 'node:path';
|
|
39
|
+
|
|
40
|
+
import * as global_deploy_inventory from '../scripts/_lib/global_deploy_inventory.js';
|
|
41
|
+
import type { LedgerDigest } from '../scripts/_lib/global_deploy_inventory.js';
|
|
42
|
+
import { sidecarPathFor } from './preserve.js';
|
|
43
|
+
|
|
44
|
+
/** Inputs for one tool's ledger update after its global deploy. */
|
|
45
|
+
export interface GlobalDeployRecord {
|
|
46
|
+
readonly toolId: string;
|
|
47
|
+
/** The anchor as configured (`~/.cursor/`) — stored verbatim. */
|
|
48
|
+
readonly anchorRaw: string;
|
|
49
|
+
/** The anchor expanded to an absolute path. */
|
|
50
|
+
readonly anchor: string;
|
|
51
|
+
/** Anchor-relative files the current package maintains here. */
|
|
52
|
+
readonly currentFiles: ReadonlySet<string>;
|
|
53
|
+
/** The plan's `dest_sub` list, for the tagged-orphan sweep. */
|
|
54
|
+
readonly destSubs: readonly string[];
|
|
55
|
+
readonly packageTag: string;
|
|
56
|
+
/** Absolute targets this run preserved instead of writing. */
|
|
57
|
+
readonly preserved: readonly string[];
|
|
58
|
+
/** Absolute sidecar path → digest of the content staged there this run. */
|
|
59
|
+
readonly staged: ReadonlyMap<string, string | null>;
|
|
60
|
+
/** The digest recorded BEFORE this run for an absolute target. */
|
|
61
|
+
readonly recordedFor: (target: string) => string | null | undefined;
|
|
62
|
+
/** Inventory location override (tests); default `inventory_path()`. */
|
|
63
|
+
readonly inventoryPath?: string | null;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/** What the update did on disk. */
|
|
67
|
+
export interface GlobalDeployOutcome {
|
|
68
|
+
/** Absolute paths the reapers deleted. */
|
|
69
|
+
readonly reaped: readonly string[];
|
|
70
|
+
/** Absolute paths of retired files kept because the user edited them. */
|
|
71
|
+
readonly retained: readonly string[];
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Anchor-relative POSIX path of `abs`, or `null` when it is not under `anchor`.
|
|
76
|
+
*
|
|
77
|
+
* Tried against the anchor as given AND its realpath: the reapers report paths
|
|
78
|
+
* under the RESOLVED anchor, the copy loop under the lexical one, and on macOS
|
|
79
|
+
* a temp or home tree differs between the two by a symlinked prefix.
|
|
80
|
+
*/
|
|
81
|
+
function relUnder(anchor: string, abs: string): string | null {
|
|
82
|
+
let real = anchor;
|
|
83
|
+
try {
|
|
84
|
+
real = fs.realpathSync(anchor);
|
|
85
|
+
} catch {
|
|
86
|
+
/* the anchor does not exist yet — the lexical form is all there is */
|
|
87
|
+
}
|
|
88
|
+
for (const base of [anchor, real]) {
|
|
89
|
+
const rel = path.relative(path.resolve(base), path.resolve(abs));
|
|
90
|
+
if (rel !== '' && !rel.startsWith('..') && !path.isAbsolute(rel)) {
|
|
91
|
+
return rel.split(path.sep).join('/');
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Reap what the package no longer ships — sparing edited files — then record
|
|
99
|
+
* the ledger for one tool and save it.
|
|
100
|
+
*
|
|
101
|
+
* Replaces the load → reap → record → save sequence the installer ran inline,
|
|
102
|
+
* so the two reapers and the record are fed one consistent view: the sidecars
|
|
103
|
+
* staged this run are part of what "should exist", or the reaper would delete
|
|
104
|
+
* the package content it was just told to stage.
|
|
105
|
+
*/
|
|
106
|
+
export function recordGlobalDeploy(r: GlobalDeployRecord): GlobalDeployOutcome {
|
|
107
|
+
const inventory = global_deploy_inventory.load_inventory(r.inventoryPath ?? null);
|
|
108
|
+
const previous = global_deploy_inventory.recorded_digests(r.toolId, r.anchor, inventory);
|
|
109
|
+
|
|
110
|
+
const sidecars = new Map<string, string>();
|
|
111
|
+
for (const [abs, digest] of r.staged) {
|
|
112
|
+
const rel = relUnder(r.anchor, abs);
|
|
113
|
+
if (rel !== null && digest !== null) sidecars.set(rel, digest);
|
|
114
|
+
}
|
|
115
|
+
const keep = new Set<string>([...r.currentFiles, ...sidecars.keys()]);
|
|
116
|
+
|
|
117
|
+
const retainedAbs: string[] = [];
|
|
118
|
+
let reaped: string[] = [];
|
|
119
|
+
const tools = (inventory['tools'] as Record<string, unknown> | undefined) ?? {};
|
|
120
|
+
if (r.toolId in tools) {
|
|
121
|
+
reaped = reaped.concat(
|
|
122
|
+
global_deploy_inventory.reap_stale(r.toolId, r.anchor, keep, inventory, false, retainedAbs),
|
|
123
|
+
);
|
|
124
|
+
}
|
|
125
|
+
reaped = reaped.concat(
|
|
126
|
+
global_deploy_inventory.reap_tagged_orphans(
|
|
127
|
+
r.anchor,
|
|
128
|
+
[...r.destSubs],
|
|
129
|
+
keep,
|
|
130
|
+
r.packageTag,
|
|
131
|
+
false,
|
|
132
|
+
previous,
|
|
133
|
+
retainedAbs,
|
|
134
|
+
),
|
|
135
|
+
);
|
|
136
|
+
|
|
137
|
+
const preservedRel = new Set<string>();
|
|
138
|
+
for (const abs of r.preserved) {
|
|
139
|
+
const rel = relUnder(r.anchor, abs);
|
|
140
|
+
if (rel !== null) preservedRel.add(rel);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
const digests = new Map<string, LedgerDigest>();
|
|
144
|
+
for (const rel of r.currentFiles) {
|
|
145
|
+
const abs = path.join(r.anchor, rel);
|
|
146
|
+
if (preservedRel.has(rel)) {
|
|
147
|
+
const staged = r.staged.get(sidecarPathFor(abs)) ?? null;
|
|
148
|
+
const installed = staged ?? previous.get(rel)?.installed_sha256 ?? r.recordedFor(abs);
|
|
149
|
+
if (typeof installed !== 'string' || installed === '') continue;
|
|
150
|
+
digests.set(rel, { installed_sha256: installed, packaged_sha256: staged ?? installed });
|
|
151
|
+
continue;
|
|
152
|
+
}
|
|
153
|
+
const onDisk = global_deploy_inventory.file_sha256(abs);
|
|
154
|
+
if (onDisk === null) continue;
|
|
155
|
+
digests.set(rel, { installed_sha256: onDisk, packaged_sha256: onDisk });
|
|
156
|
+
}
|
|
157
|
+
for (const [rel, digest] of sidecars) {
|
|
158
|
+
digests.set(rel, { installed_sha256: digest, packaged_sha256: digest, kind: 'sidecar' });
|
|
159
|
+
}
|
|
160
|
+
const retained = [...new Set(retainedAbs)].sort();
|
|
161
|
+
for (const abs of retained) {
|
|
162
|
+
const rel = relUnder(r.anchor, abs);
|
|
163
|
+
const prior = rel === null ? undefined : previous.get(rel);
|
|
164
|
+
if (rel === null || prior === undefined) continue;
|
|
165
|
+
digests.set(rel, { installed_sha256: prior.installed_sha256, packaged_sha256: null });
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
global_deploy_inventory.record_deploy(r.toolId, r.anchorRaw, new Set(r.currentFiles), inventory, digests);
|
|
169
|
+
global_deploy_inventory.save_inventory(inventory, r.inventoryPath ?? null);
|
|
170
|
+
return { reaped: [...new Set(reaped)].sort(), retained };
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/** The per-file line for a retired file kept because the user edited it. */
|
|
174
|
+
export function retainedFileMessage(target: string): string {
|
|
175
|
+
return (
|
|
176
|
+
`Kept ${target}: the package no longer ships this file, but it was edited after it was ` +
|
|
177
|
+
'installed, so it was not deleted. It is no longer updated by agent-config; delete it ' +
|
|
178
|
+
'yourself when you no longer need it.'
|
|
179
|
+
);
|
|
180
|
+
}
|
package/src/install/plan.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Plan builder — Phase A3 port of `
|
|
2
|
+
* Plan builder — Phase A3 port of `_build_install_plan` in the retired Python installer.
|
|
3
3
|
*
|
|
4
4
|
* Pure: walks one or more source directories, computes the target path
|
|
5
5
|
* + SHA-256 of every file, and returns a declarative {@link InstallPlan}.
|