@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
|
@@ -7,14 +7,26 @@
|
|
|
7
7
|
* `false` to the shipped default, which is the opposite of accepting the old
|
|
8
8
|
* key — so the two maps stay separate even though both warn once.
|
|
9
9
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* by a
|
|
10
|
+
* Release class: A settings key may be removed or renamed in a minor release
|
|
11
|
+
* only when no consumer project can rely on it — default-neutral and
|
|
12
|
+
* derivable, proven by a named test; any other removal or rename ships only in
|
|
13
|
+
* a major, and a renamed key's alias is dropped only in a major. The new key
|
|
14
|
+
* always wins when one layer carries both: a reader who has already migrated
|
|
15
|
+
* is not overridden by a stale line they forgot to delete.
|
|
13
16
|
*
|
|
14
17
|
* Its own module rather than more lines in `agent_settings.ts`, which sits
|
|
15
18
|
* three lines under the 1500-line source ceiling — a sixty-line addition there
|
|
16
19
|
* is sixty units of ratchet, and here it is none.
|
|
17
20
|
*/
|
|
21
|
+
/**
|
|
22
|
+
* The release rule for removing or renaming a settings key, as the one string
|
|
23
|
+
* every statement of it repeats (blocker `what-a-minor-may-remove`, owner
|
|
24
|
+
* answer (c), 2026-10-14). Exported so the warning below prints it and the
|
|
25
|
+
* cut names it, rather than each carrying its own paraphrase.
|
|
26
|
+
*/
|
|
27
|
+
export const SETTINGS_REMOVAL_RULE = 'A settings key may be removed or renamed in a minor release only when no consumer project can ' +
|
|
28
|
+
'rely on it — default-neutral and derivable, proven by a named test; any other removal or rename ' +
|
|
29
|
+
"ships only in a major, and a renamed key's alias is dropped only in a major.";
|
|
18
30
|
export const RENAMED_KEYS = new Map([
|
|
19
31
|
['planning.challenge_on_create', 'planning.closure_pass'],
|
|
20
32
|
]);
|
|
@@ -66,8 +78,8 @@ export function applyRenamedKeys(layer) {
|
|
|
66
78
|
if (_warned.has(oldKey))
|
|
67
79
|
continue;
|
|
68
80
|
_warned.add(oldKey);
|
|
69
|
-
process.stderr.write(`⚠️ settings: \`${oldKey}\` was renamed to \`${newKey}
|
|
70
|
-
|
|
81
|
+
process.stderr.write(`⚠️ settings: \`${oldKey}\` was renamed to \`${newKey}\`; the old key still works. ` +
|
|
82
|
+
`${SETTINGS_REMOVAL_RULE} Rename it in your .agent-settings.yml.\n`);
|
|
71
83
|
}
|
|
72
84
|
return layer;
|
|
73
85
|
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Optional subagent-v1 fields → Claude Code native agent frontmatter lines.
|
|
3
|
+
*
|
|
4
|
+
* The schema names the host's loading knobs vendor-neutrally; the host
|
|
5
|
+
* spelling lives here and nowhere else, the way `model_tier` → `model` lives in
|
|
6
|
+
* `model_tier.ts`. A field is emitted only when the source declares it, so a
|
|
7
|
+
* definition that sets none of them projects byte-identically to before.
|
|
8
|
+
*
|
|
9
|
+
* Two fields are deliberately NOT emitted:
|
|
10
|
+
* - `reuse` is read by `_lib/worker_reuse.ts` (condition (g)) off the source
|
|
11
|
+
* definition. The host has no per-definition reuse key; writing one would be
|
|
12
|
+
* a line the host ignores and a reader might mistake for an enforced switch.
|
|
13
|
+
* - `cache_ttl` has no per-definition host key either — the host's TTL knob is
|
|
14
|
+
* a settings value.
|
|
15
|
+
*
|
|
16
|
+
* `omit_project_instructions` → `omitClaudeMd` drops the instruction hierarchy
|
|
17
|
+
* for that definition, so a definition setting it relies on its dispatch to
|
|
18
|
+
* carry the floor and the user's constraints.
|
|
19
|
+
*/
|
|
20
|
+
export function nativeFieldLines(fm) {
|
|
21
|
+
const out = [];
|
|
22
|
+
if (typeof fm['effort'] === 'string')
|
|
23
|
+
out.push(`effort: ${fm['effort']}`);
|
|
24
|
+
if (typeof fm['max_turns'] === 'number')
|
|
25
|
+
out.push(`maxTurns: ${fm['max_turns']}`);
|
|
26
|
+
if (typeof fm['background'] === 'boolean')
|
|
27
|
+
out.push(`background: ${fm['background']}`);
|
|
28
|
+
const skills = fm['preload_skills'];
|
|
29
|
+
if (Array.isArray(skills) && skills.length > 0)
|
|
30
|
+
out.push(`skills: [${skills.map(String).join(', ')}]`);
|
|
31
|
+
if (fm['omit_project_instructions'] === true)
|
|
32
|
+
out.push('omitClaudeMd: true');
|
|
33
|
+
return out.map((l) => `${l}\n`).join('');
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=subagent_native_fields.js.map
|
|
@@ -0,0 +1,284 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* svg_dom — a dependency-free XML well-formedness parser, and the tree it
|
|
3
|
+
* builds.
|
|
4
|
+
*
|
|
5
|
+
* Step 3.1 of `road-to-svg-review-followups`, amending step 1.1 of
|
|
6
|
+
* `road-to-svg-with-a-witness`. Review claim C11: a regex cannot prove nesting
|
|
7
|
+
* or resolve a reference, and the alternatives were all refused for reasons
|
|
8
|
+
* that still hold — `package.json`'s runtime dependencies carry no XML parser,
|
|
9
|
+
* `happy-dom` is dev-only, the three vendored tree-sitter grammars are php,
|
|
10
|
+
* typescript and javascript, and Playwright is absent in a consumer, so the
|
|
11
|
+
* browser cannot carry a static layer. The remaining option is to write one,
|
|
12
|
+
* which is what `lint_design_quality` already does for its own surface.
|
|
13
|
+
*
|
|
14
|
+
* WHAT IT IS. One scanner over the bytes, producing every node kind an SVG
|
|
15
|
+
* carries — elements with their attributes, comments, CDATA sections,
|
|
16
|
+
* processing instructions, DOCTYPEs and text — each with a line and a column,
|
|
17
|
+
* assembled into a tree with parent links, plus a list of well-formedness
|
|
18
|
+
* errors.
|
|
19
|
+
*
|
|
20
|
+
* TWO SCANNERS, NOT ONE, and this header used to claim otherwise.
|
|
21
|
+
* `parseElements` in `svg_rules.ts` is an independent scanner over the same
|
|
22
|
+
* bytes, so the two CAN disagree about what a file contains — finding 3 of the
|
|
23
|
+
* third completion review of this change found a case where they did, and the
|
|
24
|
+
* disagreement produced an error-severity false positive. That one is fixed
|
|
25
|
+
* where it was (the prolog), but the general claim was false and is not
|
|
26
|
+
* restored: a reader deciding whether a fix here also lands there must check,
|
|
27
|
+
* not assume. Merging them is a larger change than the finding asked for and
|
|
28
|
+
* is not attempted under a remediation.
|
|
29
|
+
*
|
|
30
|
+
* WHAT IT IS NOT. Not a validating parser, not namespace-aware beyond keeping
|
|
31
|
+
* the prefix in the name, and it does not expand entities. It reports that a
|
|
32
|
+
* file is not well-formed; it does not report which schema it violates.
|
|
33
|
+
*
|
|
34
|
+
* WHY A FILE THAT IS NOT WELL-FORMED IS A FINDING RATHER THAN A SKIPPED FILE.
|
|
35
|
+
* A skipped file reads as a clean one in every count that matters, and the
|
|
36
|
+
* shape this exists to catch — `<g><path></g></path>` — is exactly the shape a
|
|
37
|
+
* flat element list cannot see: both tags are present, both are spelled
|
|
38
|
+
* correctly, and the document is nonetheless not a tree.
|
|
39
|
+
*/
|
|
40
|
+
/** 1-based line and column of an offset. Built once per parse. */
|
|
41
|
+
function positions(content) {
|
|
42
|
+
const starts = [0];
|
|
43
|
+
for (let i = 0; i < content.length; i += 1) {
|
|
44
|
+
if (content[i] === '\n')
|
|
45
|
+
starts.push(i + 1);
|
|
46
|
+
}
|
|
47
|
+
return (offset) => {
|
|
48
|
+
// Binary search for the last line start at or before `offset`.
|
|
49
|
+
let lo = 0;
|
|
50
|
+
let hi = starts.length - 1;
|
|
51
|
+
while (lo < hi) {
|
|
52
|
+
const mid = (lo + hi + 1) >> 1;
|
|
53
|
+
if (starts[mid] <= offset)
|
|
54
|
+
lo = mid;
|
|
55
|
+
else
|
|
56
|
+
hi = mid - 1;
|
|
57
|
+
}
|
|
58
|
+
return { line: lo + 1, column: offset - starts[lo] + 1 };
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* End of the tag, honouring quoted attribute values that may contain `>`.
|
|
63
|
+
*
|
|
64
|
+
* Exported because `svg_rules.parseElements` scans the same bytes and had its
|
|
65
|
+
* own byte-identical copy — finding 9 of the third completion review, which
|
|
66
|
+
* also noted that BOTH copies ship in the per-`.svg`-write hook chunk. Two
|
|
67
|
+
* scanners is a fact this file's header now states plainly; two copies of
|
|
68
|
+
* their shared primitives is not a consequence of it.
|
|
69
|
+
*/
|
|
70
|
+
export function tagEnd(content, from) {
|
|
71
|
+
let quote = null;
|
|
72
|
+
for (let i = from + 1; i < content.length; i += 1) {
|
|
73
|
+
const ch = content[i];
|
|
74
|
+
if (quote !== null) {
|
|
75
|
+
if (ch === quote)
|
|
76
|
+
quote = null;
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
if (ch === '"' || ch === "'") {
|
|
80
|
+
quote = ch;
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
if (ch === '>')
|
|
84
|
+
return i;
|
|
85
|
+
}
|
|
86
|
+
return -1;
|
|
87
|
+
}
|
|
88
|
+
/** Attributes of one tag, lowercased keys. Shared with `svg_rules` — see `tagEnd`. */
|
|
89
|
+
export function attrsOf(raw) {
|
|
90
|
+
const attrs = {};
|
|
91
|
+
const re = /([A-Za-z_:][\w.:-]*)\s*=\s*("([^"]*)"|'([^']*)')/g;
|
|
92
|
+
let m;
|
|
93
|
+
while ((m = re.exec(raw)) !== null) {
|
|
94
|
+
const key = (m[1] ?? '').toLowerCase();
|
|
95
|
+
const value = m[3] ?? m[4] ?? '';
|
|
96
|
+
attrs[key] = value.replace(/&/g, '&');
|
|
97
|
+
}
|
|
98
|
+
return attrs;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Parse one document.
|
|
102
|
+
*
|
|
103
|
+
* Never throws: a malformed file produces whatever tree could be built plus
|
|
104
|
+
* the errors that explain it. A parser that threw would make an unparseable
|
|
105
|
+
* file indistinguishable from a crash, and the caller's job is to REPORT the
|
|
106
|
+
* file, not to fall over on it.
|
|
107
|
+
*/
|
|
108
|
+
export function parseDocument(content) {
|
|
109
|
+
const at = positions(content);
|
|
110
|
+
const roots = [];
|
|
111
|
+
const elements = [];
|
|
112
|
+
const errors = [];
|
|
113
|
+
const stack = [];
|
|
114
|
+
const make = (kind, start, name = '', value = '', attrs = {}) => {
|
|
115
|
+
const { line, column } = at(start);
|
|
116
|
+
return { kind, name, attrs, line, column, start, value, children: [], parent: null };
|
|
117
|
+
};
|
|
118
|
+
const append = (node) => {
|
|
119
|
+
const parent = stack[stack.length - 1];
|
|
120
|
+
if (parent === undefined) {
|
|
121
|
+
roots.push(node);
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
node.parent = parent;
|
|
125
|
+
parent.children.push(node);
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
let i = 0;
|
|
129
|
+
while (i < content.length) {
|
|
130
|
+
const lt = content.indexOf('<', i);
|
|
131
|
+
if (lt === -1) {
|
|
132
|
+
const rest = content.slice(i);
|
|
133
|
+
if (rest.trim() !== '')
|
|
134
|
+
append(make('text', i, '', rest));
|
|
135
|
+
break;
|
|
136
|
+
}
|
|
137
|
+
if (lt > i) {
|
|
138
|
+
const text = content.slice(i, lt);
|
|
139
|
+
if (text.trim() !== '')
|
|
140
|
+
append(make('text', i, '', text));
|
|
141
|
+
}
|
|
142
|
+
if (content.startsWith('<!--', lt)) {
|
|
143
|
+
const end = content.indexOf('-->', lt + 4);
|
|
144
|
+
if (end === -1) {
|
|
145
|
+
const p = at(lt);
|
|
146
|
+
errors.push({ message: 'unterminated comment', line: p.line, column: p.column });
|
|
147
|
+
append(make('comment', lt, '', content.slice(lt + 4)));
|
|
148
|
+
break;
|
|
149
|
+
}
|
|
150
|
+
append(make('comment', lt, '', content.slice(lt + 4, end)));
|
|
151
|
+
i = end + 3;
|
|
152
|
+
continue;
|
|
153
|
+
}
|
|
154
|
+
if (content.startsWith('<![CDATA[', lt)) {
|
|
155
|
+
const end = content.indexOf(']]>', lt + 9);
|
|
156
|
+
if (end === -1) {
|
|
157
|
+
const p = at(lt);
|
|
158
|
+
errors.push({ message: 'unterminated CDATA section', line: p.line, column: p.column });
|
|
159
|
+
append(make('cdata', lt, '', content.slice(lt + 9)));
|
|
160
|
+
break;
|
|
161
|
+
}
|
|
162
|
+
append(make('cdata', lt, '', content.slice(lt + 9, end)));
|
|
163
|
+
i = end + 3;
|
|
164
|
+
continue;
|
|
165
|
+
}
|
|
166
|
+
if (content.startsWith('<?', lt)) {
|
|
167
|
+
const end = content.indexOf('?>', lt + 2);
|
|
168
|
+
if (end === -1) {
|
|
169
|
+
// Finding 11 of this change's completion review: this and the
|
|
170
|
+
// declaration below swallowed the rest of the document into one
|
|
171
|
+
// node and returned cleanly, so a file ending in
|
|
172
|
+
// `<?xml version="1.0"` read as WELL-FORMED — a skip, under a
|
|
173
|
+
// contract whose whole point is that a file which does not
|
|
174
|
+
// parse is a finding rather than a skipped file.
|
|
175
|
+
const p = at(lt);
|
|
176
|
+
errors.push({ message: 'unterminated processing instruction', line: p.line, column: p.column });
|
|
177
|
+
}
|
|
178
|
+
const stop = end === -1 ? content.length : end + 2;
|
|
179
|
+
append(make('pi', lt, '', content.slice(lt + 2, end === -1 ? content.length : end)));
|
|
180
|
+
i = stop;
|
|
181
|
+
continue;
|
|
182
|
+
}
|
|
183
|
+
if (content.startsWith('<!', lt)) {
|
|
184
|
+
// A DOCTYPE may carry a bracketed internal subset; it ends after it.
|
|
185
|
+
const bracket = content.indexOf('[', lt);
|
|
186
|
+
const close = content.indexOf('>', lt);
|
|
187
|
+
let stop;
|
|
188
|
+
if (bracket !== -1 && close !== -1 && bracket < close) {
|
|
189
|
+
const endBracket = content.indexOf(']', bracket);
|
|
190
|
+
const after = endBracket === -1 ? close : content.indexOf('>', endBracket);
|
|
191
|
+
stop = after === -1 ? content.length : after + 1;
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
stop = close === -1 ? content.length : close + 1;
|
|
195
|
+
}
|
|
196
|
+
if (close === -1) {
|
|
197
|
+
const p = at(lt);
|
|
198
|
+
errors.push({ message: 'unterminated declaration', line: p.line, column: p.column });
|
|
199
|
+
}
|
|
200
|
+
append(make('doctype', lt, '', content.slice(lt + 2, Math.max(lt + 2, stop - 1))));
|
|
201
|
+
i = stop;
|
|
202
|
+
continue;
|
|
203
|
+
}
|
|
204
|
+
const gt = tagEnd(content, lt);
|
|
205
|
+
if (gt === -1) {
|
|
206
|
+
const p = at(lt);
|
|
207
|
+
errors.push({ message: 'unterminated tag', line: p.line, column: p.column });
|
|
208
|
+
break;
|
|
209
|
+
}
|
|
210
|
+
const raw = content.slice(lt, gt + 1);
|
|
211
|
+
const nameMatch = /^<\/?\s*([A-Za-z_][\w.:-]*)/.exec(raw);
|
|
212
|
+
if (!nameMatch) {
|
|
213
|
+
// Finding 11, third case: a `<` that opens something with no legal
|
|
214
|
+
// element name is malformed markup, not whitespace. Skipping it
|
|
215
|
+
// silently is the same skip the other two were.
|
|
216
|
+
const p = at(lt);
|
|
217
|
+
errors.push({ message: `"${raw.slice(0, 24)}" is not a tag`, line: p.line, column: p.column });
|
|
218
|
+
i = gt + 1;
|
|
219
|
+
continue;
|
|
220
|
+
}
|
|
221
|
+
const name = (nameMatch[1] ?? '').toLowerCase();
|
|
222
|
+
const closing = raw.startsWith('</');
|
|
223
|
+
const selfClosing = raw.endsWith('/>');
|
|
224
|
+
if (closing) {
|
|
225
|
+
const open = stack[stack.length - 1];
|
|
226
|
+
const p = at(lt);
|
|
227
|
+
if (open === undefined) {
|
|
228
|
+
errors.push({ message: `closing tag </${name}> with no open element`, line: p.line, column: p.column });
|
|
229
|
+
}
|
|
230
|
+
else if (open.name !== name) {
|
|
231
|
+
// The shape a flat element list cannot see. Reported against
|
|
232
|
+
// the CLOSING tag, which is where a reader looking at the file
|
|
233
|
+
// sees the problem.
|
|
234
|
+
errors.push({
|
|
235
|
+
message: `closing tag </${name}> does not match the open <${open.name}> (line ${String(open.line)})`,
|
|
236
|
+
line: p.line,
|
|
237
|
+
column: p.column,
|
|
238
|
+
});
|
|
239
|
+
// Recover by popping to the matching open element WHEN THERE
|
|
240
|
+
// IS ONE, so a single mistake does not cascade into an error
|
|
241
|
+
// per remaining tag.
|
|
242
|
+
//
|
|
243
|
+
// When there is none, pop NOTHING. Finding 2 of the fourth
|
|
244
|
+
// completion review: the `else stack.pop()` detached a
|
|
245
|
+
// perfectly good ancestor to pay for a stray tag that never
|
|
246
|
+
// opened anything — a file whose `</g>` has no `<g>` lost its
|
|
247
|
+
// `<svg>` from the stack, so the real `</svg>` at the end then
|
|
248
|
+
// had no open element and the file collected a SECOND error it
|
|
249
|
+
// had not earned. Cascading is exactly what this branch exists
|
|
250
|
+
// to prevent, and the unmatched case was the one where it did
|
|
251
|
+
// the cascading itself. A closing tag with no match is a stray
|
|
252
|
+
// tag: report it and carry on.
|
|
253
|
+
const idx = stack.map((n) => n.name).lastIndexOf(name);
|
|
254
|
+
if (idx !== -1)
|
|
255
|
+
stack.length = idx;
|
|
256
|
+
}
|
|
257
|
+
else {
|
|
258
|
+
stack.pop();
|
|
259
|
+
}
|
|
260
|
+
i = gt + 1;
|
|
261
|
+
continue;
|
|
262
|
+
}
|
|
263
|
+
const node = make('element', lt, name, '', attrsOf(raw));
|
|
264
|
+
append(node);
|
|
265
|
+
elements.push(node);
|
|
266
|
+
if (!selfClosing)
|
|
267
|
+
stack.push(node);
|
|
268
|
+
i = gt + 1;
|
|
269
|
+
}
|
|
270
|
+
for (const unclosed of stack) {
|
|
271
|
+
errors.push({
|
|
272
|
+
message: `<${unclosed.name}> is never closed`,
|
|
273
|
+
line: unclosed.line,
|
|
274
|
+
column: unclosed.column,
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
return { roots, elements, errors };
|
|
278
|
+
}
|
|
279
|
+
// `ancestors` and `documentElement` used to live here. Finding 11 of the third
|
|
280
|
+
// completion review: both were exported, called by nothing, and bundled into
|
|
281
|
+
// the per-`.svg`-write dispatch chunk — own-orphans of this same diff, which
|
|
282
|
+
// `minimal-safe-diff` says the diff that made them removes. `XmlNode.parent`
|
|
283
|
+
// is the primitive either would have been built on and it is still here.
|
|
284
|
+
//# sourceMappingURL=svg_dom.js.map
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `svg-structure-filled-counter` — step 3.2 of `road-to-type-with-a-witness`.
|
|
3
|
+
*
|
|
4
|
+
* A letter with a counter (o, e, a, B, 8) or an O-ring mark is one path with an
|
|
5
|
+
* outer and an inner contour. Under `fill-rule="nonzero"`, the default, the
|
|
6
|
+
* counter stays open only when the inner contour winds the OTHER way: a
|
|
7
|
+
* same-direction inner contour adds to the winding number and the counter
|
|
8
|
+
* paints. Measured on the repo's Chromium: two same-direction circles of radius
|
|
9
|
+
* 250 and 160 painted 196,282 px, the ring they should be 115,940.
|
|
10
|
+
*
|
|
11
|
+
* The check flattens each subpath to a polygon, sums the winding signs of the
|
|
12
|
+
* subpaths that contain a subpath's every vertex, and reports the subpath when
|
|
13
|
+
* that sum is nonzero and shares its own sign — it sits in a painted region and
|
|
14
|
+
* deepens it instead of cutting it out. It is advisory (decision A8): `warning`, never `error`, until
|
|
15
|
+
* the false-positive census of step 3.3 says otherwise.
|
|
16
|
+
*
|
|
17
|
+
* Limits, stated rather than guessed around: a transform does not change a
|
|
18
|
+
* winding sign unless it mirrors, and a mirror flips both contours alike, so
|
|
19
|
+
* transforms are ignored; `fill-rule` set from a stylesheet selector is not
|
|
20
|
+
* read — an attribute or inline style, on the path or an ancestor, is.
|
|
21
|
+
*/
|
|
22
|
+
import { tokenisePath } from './svg_geometry.js';
|
|
23
|
+
const CURVE_STEPS = 12;
|
|
24
|
+
const MAX_SUBPATHS = 400;
|
|
25
|
+
function styleProp(el, prop) {
|
|
26
|
+
const direct = el.attrs[prop];
|
|
27
|
+
if (direct !== undefined)
|
|
28
|
+
return direct.trim();
|
|
29
|
+
const m = new RegExp(`(?:^|;)\\s*${prop}\\s*:\\s*([^;]+)`, 'i').exec(el.attrs['style'] ?? '');
|
|
30
|
+
return m?.[1]?.trim();
|
|
31
|
+
}
|
|
32
|
+
function arcPoints(from, args) {
|
|
33
|
+
const [rxIn, ryIn, rotDeg, large, sweep, x, y] = args;
|
|
34
|
+
const [x1, y1] = from;
|
|
35
|
+
let rx = Math.abs(rxIn);
|
|
36
|
+
let ry = Math.abs(ryIn);
|
|
37
|
+
if (rx === 0 || ry === 0 || (x1 === x && y1 === y))
|
|
38
|
+
return [[x, y]];
|
|
39
|
+
const phi = (rotDeg * Math.PI) / 180;
|
|
40
|
+
const cos = Math.cos(phi);
|
|
41
|
+
const sin = Math.sin(phi);
|
|
42
|
+
const dx = (x1 - x) / 2;
|
|
43
|
+
const dy = (y1 - y) / 2;
|
|
44
|
+
const xp = cos * dx + sin * dy;
|
|
45
|
+
const yp = -sin * dx + cos * dy;
|
|
46
|
+
const lambda = (xp * xp) / (rx * rx) + (yp * yp) / (ry * ry);
|
|
47
|
+
if (lambda > 1) {
|
|
48
|
+
rx *= Math.sqrt(lambda);
|
|
49
|
+
ry *= Math.sqrt(lambda);
|
|
50
|
+
}
|
|
51
|
+
const num = rx * rx * ry * ry - rx * rx * yp * yp - ry * ry * xp * xp;
|
|
52
|
+
const den = rx * rx * yp * yp + ry * ry * xp * xp;
|
|
53
|
+
const coef = (large === sweep ? -1 : 1) * Math.sqrt(Math.max(0, num / den));
|
|
54
|
+
const cxp = (coef * rx * yp) / ry;
|
|
55
|
+
const cyp = (-coef * ry * xp) / rx;
|
|
56
|
+
const cx = cos * cxp - sin * cyp + (x1 + x) / 2;
|
|
57
|
+
const cy = sin * cxp + cos * cyp + (y1 + y) / 2;
|
|
58
|
+
const angle = (ux, uy, vx, vy) => {
|
|
59
|
+
const a = Math.atan2(ux * vy - uy * vx, ux * vx + uy * vy);
|
|
60
|
+
return a;
|
|
61
|
+
};
|
|
62
|
+
const t1 = angle(1, 0, (xp - cxp) / rx, (yp - cyp) / ry);
|
|
63
|
+
let dt = angle((xp - cxp) / rx, (yp - cyp) / ry, (-xp - cxp) / rx, (-yp - cyp) / ry);
|
|
64
|
+
if (!sweep && dt > 0)
|
|
65
|
+
dt -= 2 * Math.PI;
|
|
66
|
+
if (sweep && dt < 0)
|
|
67
|
+
dt += 2 * Math.PI;
|
|
68
|
+
const out = [];
|
|
69
|
+
for (let k = 1; k <= CURVE_STEPS; k++) {
|
|
70
|
+
const t = t1 + (dt * k) / CURVE_STEPS;
|
|
71
|
+
const ex = rx * Math.cos(t);
|
|
72
|
+
const ey = ry * Math.sin(t);
|
|
73
|
+
out.push([cos * ex - sin * ey + cx, sin * ex + cos * ey + cy]);
|
|
74
|
+
}
|
|
75
|
+
return out;
|
|
76
|
+
}
|
|
77
|
+
function bezier(p0, p1, p2, p3) {
|
|
78
|
+
const out = [];
|
|
79
|
+
for (let k = 1; k <= CURVE_STEPS; k++) {
|
|
80
|
+
const t = k / CURVE_STEPS;
|
|
81
|
+
const u = 1 - t;
|
|
82
|
+
out.push([
|
|
83
|
+
u * u * u * p0[0] + 3 * u * u * t * p1[0] + 3 * u * t * t * p2[0] + t * t * t * p3[0],
|
|
84
|
+
u * u * u * p0[1] + 3 * u * u * t * p1[1] + 3 * u * t * t * p2[1] + t * t * t * p3[1],
|
|
85
|
+
]);
|
|
86
|
+
}
|
|
87
|
+
return out;
|
|
88
|
+
}
|
|
89
|
+
/** Each subpath of `d` as a flattened polygon, or `null` when `d` does not parse. */
|
|
90
|
+
export function subpathPolygons(d) {
|
|
91
|
+
const tokens = tokenisePath(d);
|
|
92
|
+
if (tokens === null)
|
|
93
|
+
return null;
|
|
94
|
+
const ARGS = { m: 2, l: 2, t: 2, h: 1, v: 1, c: 6, s: 4, q: 4, a: 7, z: 0 };
|
|
95
|
+
const polys = [];
|
|
96
|
+
let poly = [];
|
|
97
|
+
let cur = [0, 0];
|
|
98
|
+
let start = [0, 0];
|
|
99
|
+
let lastCtrl = null;
|
|
100
|
+
let lastQuad = null;
|
|
101
|
+
let i = 0;
|
|
102
|
+
let cmd = '';
|
|
103
|
+
const flush = () => {
|
|
104
|
+
if (poly.length >= 3)
|
|
105
|
+
polys.push(poly);
|
|
106
|
+
poly = [];
|
|
107
|
+
};
|
|
108
|
+
while (i < tokens.length) {
|
|
109
|
+
const tok = tokens[i];
|
|
110
|
+
if (/^[a-zA-Z]$/.test(tok)) {
|
|
111
|
+
cmd = tok;
|
|
112
|
+
i += 1;
|
|
113
|
+
if (cmd.toLowerCase() === 'z') {
|
|
114
|
+
cur = start;
|
|
115
|
+
lastCtrl = lastQuad = null;
|
|
116
|
+
flush();
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
if (i >= tokens.length)
|
|
120
|
+
break;
|
|
121
|
+
continue;
|
|
122
|
+
}
|
|
123
|
+
const lower = cmd.toLowerCase();
|
|
124
|
+
const n = ARGS[lower];
|
|
125
|
+
if (n === undefined || n === 0)
|
|
126
|
+
return null;
|
|
127
|
+
const a = tokens.slice(i, i + n).map(Number);
|
|
128
|
+
if (a.length < n || a.some((v) => !Number.isFinite(v)))
|
|
129
|
+
return null;
|
|
130
|
+
i += n;
|
|
131
|
+
const rel = cmd !== cmd.toUpperCase();
|
|
132
|
+
const ox = rel ? cur[0] : 0;
|
|
133
|
+
const oy = rel ? cur[1] : 0;
|
|
134
|
+
const at = (k) => [a[k] + ox, a[k + 1] + oy];
|
|
135
|
+
let next = cur;
|
|
136
|
+
let pts = [];
|
|
137
|
+
let ctrl = null;
|
|
138
|
+
let quad = null;
|
|
139
|
+
switch (lower) {
|
|
140
|
+
case 'm':
|
|
141
|
+
flush();
|
|
142
|
+
next = at(0);
|
|
143
|
+
start = next;
|
|
144
|
+
pts = [next];
|
|
145
|
+
// Further pairs after a moveto are implicit linetos.
|
|
146
|
+
cmd = rel ? 'l' : 'L';
|
|
147
|
+
break;
|
|
148
|
+
case 'l':
|
|
149
|
+
next = at(0);
|
|
150
|
+
pts = [next];
|
|
151
|
+
break;
|
|
152
|
+
case 'h':
|
|
153
|
+
next = [a[0] + ox, cur[1]];
|
|
154
|
+
pts = [next];
|
|
155
|
+
break;
|
|
156
|
+
case 'v':
|
|
157
|
+
next = [cur[0], a[0] + oy];
|
|
158
|
+
pts = [next];
|
|
159
|
+
break;
|
|
160
|
+
case 'c':
|
|
161
|
+
ctrl = at(2);
|
|
162
|
+
next = at(4);
|
|
163
|
+
pts = bezier(cur, at(0), ctrl, next);
|
|
164
|
+
break;
|
|
165
|
+
case 's': {
|
|
166
|
+
const c1 = lastCtrl ? [2 * cur[0] - lastCtrl[0], 2 * cur[1] - lastCtrl[1]] : cur;
|
|
167
|
+
ctrl = at(0);
|
|
168
|
+
next = at(2);
|
|
169
|
+
pts = bezier(cur, c1, ctrl, next);
|
|
170
|
+
break;
|
|
171
|
+
}
|
|
172
|
+
case 'q':
|
|
173
|
+
case 't': {
|
|
174
|
+
const q = lower === 'q' ? at(0) : lastQuad ? [2 * cur[0] - lastQuad[0], 2 * cur[1] - lastQuad[1]] : cur;
|
|
175
|
+
next = lower === 'q' ? at(2) : at(0);
|
|
176
|
+
quad = q;
|
|
177
|
+
const c1 = [cur[0] + (2 / 3) * (q[0] - cur[0]), cur[1] + (2 / 3) * (q[1] - cur[1])];
|
|
178
|
+
const c2 = [next[0] + (2 / 3) * (q[0] - next[0]), next[1] + (2 / 3) * (q[1] - next[1])];
|
|
179
|
+
pts = bezier(cur, c1, c2, next);
|
|
180
|
+
break;
|
|
181
|
+
}
|
|
182
|
+
case 'a':
|
|
183
|
+
next = [a[5] + ox, a[6] + oy];
|
|
184
|
+
pts = arcPoints(cur, [a[0], a[1], a[2], a[3], a[4], next[0], next[1]]);
|
|
185
|
+
break;
|
|
186
|
+
}
|
|
187
|
+
poly.push(...pts);
|
|
188
|
+
cur = next;
|
|
189
|
+
lastCtrl = ctrl;
|
|
190
|
+
lastQuad = quad;
|
|
191
|
+
if (polys.length > MAX_SUBPATHS)
|
|
192
|
+
return polys;
|
|
193
|
+
}
|
|
194
|
+
flush();
|
|
195
|
+
return polys;
|
|
196
|
+
}
|
|
197
|
+
function signedArea(poly) {
|
|
198
|
+
let s = 0;
|
|
199
|
+
for (let k = 0; k < poly.length; k++) {
|
|
200
|
+
const [x1, y1] = poly[k];
|
|
201
|
+
const [x2, y2] = poly[(k + 1) % poly.length];
|
|
202
|
+
s += x1 * y2 - x2 * y1;
|
|
203
|
+
}
|
|
204
|
+
return s / 2;
|
|
205
|
+
}
|
|
206
|
+
function inside(pt, poly) {
|
|
207
|
+
let hit = false;
|
|
208
|
+
for (let k = 0, j = poly.length - 1; k < poly.length; j = k++) {
|
|
209
|
+
const [xi, yi] = poly[k];
|
|
210
|
+
const [xj, yj] = poly[j];
|
|
211
|
+
if (yi > pt[1] !== yj > pt[1] && pt[0] < ((xj - xi) * (pt[1] - yi)) / (yj - yi) + xi)
|
|
212
|
+
hit = !hit;
|
|
213
|
+
}
|
|
214
|
+
return hit;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Every `<path>` painted under `nonzero` whose subpath sits in a painted region
|
|
218
|
+
* of the same path and winds with it. One entry per inner subpath; `outer` is
|
|
219
|
+
* the smallest subpath containing it.
|
|
220
|
+
*/
|
|
221
|
+
export function filledCounters(elements) {
|
|
222
|
+
const out = [];
|
|
223
|
+
// The fill rule and fill each element inherits, by an open-element stack.
|
|
224
|
+
const stack = [];
|
|
225
|
+
for (const el of elements) {
|
|
226
|
+
if (el.closing) {
|
|
227
|
+
const at = stack.map((s) => s.name).lastIndexOf(el.name);
|
|
228
|
+
if (at >= 0)
|
|
229
|
+
stack.length = at;
|
|
230
|
+
continue;
|
|
231
|
+
}
|
|
232
|
+
const parent = stack[stack.length - 1];
|
|
233
|
+
const rule = styleProp(el, 'fill-rule') ?? parent?.rule;
|
|
234
|
+
const fill = styleProp(el, 'fill') ?? parent?.fill;
|
|
235
|
+
if (!el.selfClosing)
|
|
236
|
+
stack.push({ name: el.name, rule, fill });
|
|
237
|
+
if (el.name !== 'path')
|
|
238
|
+
continue;
|
|
239
|
+
if ((rule ?? 'nonzero').toLowerCase() === 'evenodd' || (fill ?? '').toLowerCase() === 'none')
|
|
240
|
+
continue;
|
|
241
|
+
const polys = subpathPolygons(el.attrs['d'] ?? '');
|
|
242
|
+
if (polys === null || polys.length < 2 || polys.length > MAX_SUBPATHS)
|
|
243
|
+
continue;
|
|
244
|
+
const areas = polys.map(signedArea);
|
|
245
|
+
for (let inner = 0; inner < polys.length; inner++) {
|
|
246
|
+
const ia = areas[inner];
|
|
247
|
+
if (Math.abs(ia) < 1e-9)
|
|
248
|
+
continue;
|
|
249
|
+
// The winding number around the inner contour, from every subpath
|
|
250
|
+
// that contains it — not from one outer, or an island inside a
|
|
251
|
+
// counter reads as a filled counter.
|
|
252
|
+
let around = 0;
|
|
253
|
+
let nearest = -1;
|
|
254
|
+
for (let outer = 0; outer < polys.length; outer++) {
|
|
255
|
+
if (outer === inner)
|
|
256
|
+
continue;
|
|
257
|
+
const oa = areas[outer];
|
|
258
|
+
if (Math.abs(oa) <= Math.abs(ia))
|
|
259
|
+
continue;
|
|
260
|
+
const op = polys[outer];
|
|
261
|
+
if (!polys[inner].every((p) => inside(p, op)))
|
|
262
|
+
continue;
|
|
263
|
+
around += Math.sign(oa);
|
|
264
|
+
if (nearest < 0 || Math.abs(oa) < Math.abs(areas[nearest]))
|
|
265
|
+
nearest = outer;
|
|
266
|
+
}
|
|
267
|
+
if (around !== 0 && Math.sign(around) === Math.sign(ia)) {
|
|
268
|
+
out.push({ element: el, inner: inner + 1, outer: nearest + 1 });
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
return out;
|
|
273
|
+
}
|
|
274
|
+
/** The rule as `scanSvg` runs it: one advisory finding per filled counter. */
|
|
275
|
+
export function ruleFilledCounter(elements, file) {
|
|
276
|
+
return filledCounters(elements).map((c) => ({
|
|
277
|
+
rule: 'svg-structure-filled-counter',
|
|
278
|
+
file,
|
|
279
|
+
line: c.element.line,
|
|
280
|
+
snippet: `<path> subpath ${c.inner} sits inside subpath ${c.outer} with the same winding under nonzero, so ` +
|
|
281
|
+
'the counter paints — wind the inner contour the other way, or declare fill-rule="evenodd"',
|
|
282
|
+
severity: 'warning',
|
|
283
|
+
}));
|
|
284
|
+
}
|
|
285
|
+
//# sourceMappingURL=svg_filled_counter.js.map
|