@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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The
|
|
2
|
+
* The six `forge_protection` rows, read from the forge rather than guessed.
|
|
3
3
|
*
|
|
4
4
|
* `road-to-adversarial-verification-and-long-runs` Phase 3.2. ADR-268 § 3 trades
|
|
5
5
|
* the owner's confirmation for a mechanical check, and branch protection is the
|
|
@@ -45,13 +45,26 @@ export interface ProtectionRow {
|
|
|
45
45
|
readonly detail: string;
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
-
/**
|
|
48
|
+
/**
|
|
49
|
+
* The rows, in the order the blocker's own table lists them, plus the
|
|
50
|
+
* authority-surface row added 2026-10-12.
|
|
51
|
+
*
|
|
52
|
+
* **Why the sixth row exists.** A governance hold elsewhere in this package is
|
|
53
|
+
* declared resolved when this very command reports an external approver for the
|
|
54
|
+
* authority surface. Measured 2026-10-12: no row spoke about required reviewers
|
|
55
|
+
* at all, so that condition was unanswerable in EITHER direction — and a
|
|
56
|
+
* condition whose test cannot run is not a strict one, it is an unmeasured one.
|
|
57
|
+
* The row exists to make the negative answerable: it reports `unsatisfied` while
|
|
58
|
+
* no forge-side approval requirement covers the default branch, which is a
|
|
59
|
+
* machine-readable fact where silence was.
|
|
60
|
+
*/
|
|
49
61
|
export const PROTECTION_ROW_IDS: readonly string[] = [
|
|
50
62
|
'default_branch_protected',
|
|
51
63
|
'required_checks_present',
|
|
52
64
|
'force_push_disabled',
|
|
53
65
|
'auto_merge_available',
|
|
54
66
|
'deploy_via_pipeline_only',
|
|
67
|
+
'authority_surface_external_approval',
|
|
55
68
|
] as const;
|
|
56
69
|
|
|
57
70
|
/** What a caller must supply for a row to be readable. `null` = not read. */
|
|
@@ -210,6 +223,55 @@ function hasRule(rs: RulesetDetail, type: string): boolean {
|
|
|
210
223
|
return (rs.rules ?? []).some((r) => r.type === type);
|
|
211
224
|
}
|
|
212
225
|
|
|
226
|
+
/**
|
|
227
|
+
* The `pull_request` rule's approval surface, as this row reads it.
|
|
228
|
+
*
|
|
229
|
+
* A NARROW PROJECTION of the real payload, declared the same way
|
|
230
|
+
* {@link EnvironmentPolicy} is and for the same reason: the response also
|
|
231
|
+
* carries `allowed_merge_methods`, `dismiss_stale_reviews_on_push`,
|
|
232
|
+
* `required_review_thread_resolution` and more, and naming only the three
|
|
233
|
+
* fields this decision rests on says which ones it rests on.
|
|
234
|
+
*/
|
|
235
|
+
interface ApprovalParameters {
|
|
236
|
+
readonly required_approving_review_count?: number;
|
|
237
|
+
readonly require_code_owner_review?: boolean;
|
|
238
|
+
readonly required_reviewers?: readonly unknown[];
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
/** The `pull_request` rule's parameters across `rs`, or `null` when it has none. */
|
|
242
|
+
function approvalParameters(rs: RulesetDetail): ApprovalParameters | null {
|
|
243
|
+
for (const r of rs.rules ?? []) {
|
|
244
|
+
if (r.type !== 'pull_request') continue;
|
|
245
|
+
const p = r.parameters;
|
|
246
|
+
if (p === null || typeof p !== 'object') return {};
|
|
247
|
+
return p as ApprovalParameters;
|
|
248
|
+
}
|
|
249
|
+
return null;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* Which forge-side mechanisms, if any, make an approving review mandatory.
|
|
254
|
+
*
|
|
255
|
+
* Three mechanisms, because GitHub has three and reading one would report "no
|
|
256
|
+
* approval required" for a repository that requires one by a different route:
|
|
257
|
+
* a numeric approving-review count, code-owner review (the path-scoped route,
|
|
258
|
+
* resolved through `CODEOWNERS`), and an explicit `required_reviewers` list.
|
|
259
|
+
*/
|
|
260
|
+
export function approvalMechanisms(rulesets: readonly RulesetDetail[]): string[] {
|
|
261
|
+
const found: string[] = [];
|
|
262
|
+
for (const rs of rulesets) {
|
|
263
|
+
const p = approvalParameters(rs);
|
|
264
|
+
if (p === null) continue;
|
|
265
|
+
const count = p.required_approving_review_count ?? 0;
|
|
266
|
+
if (count >= 1) found.push(`required_approving_review_count=${String(count)}`);
|
|
267
|
+
if (p.require_code_owner_review === true) found.push('require_code_owner_review');
|
|
268
|
+
if ((p.required_reviewers ?? []).length > 0) {
|
|
269
|
+
found.push(`required_reviewers=${String((p.required_reviewers ?? []).length)}`);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
return found;
|
|
273
|
+
}
|
|
274
|
+
|
|
213
275
|
function requiredContexts(rs: RulesetDetail): string[] {
|
|
214
276
|
for (const r of rs.rules ?? []) {
|
|
215
277
|
if (r.type !== 'required_status_checks') continue;
|
|
@@ -352,9 +414,85 @@ export function forgeProtectionRows(reading: ForgeReading): ProtectionRow[] {
|
|
|
352
414
|
},
|
|
353
415
|
);
|
|
354
416
|
|
|
417
|
+
rows.push(authorityApprovalRow(covering));
|
|
418
|
+
|
|
355
419
|
return rows;
|
|
356
420
|
}
|
|
357
421
|
|
|
422
|
+
/**
|
|
423
|
+
* The authority-surface row — and the one row that states what it does NOT
|
|
424
|
+
* establish, because overstating it is the specific failure here.
|
|
425
|
+
*
|
|
426
|
+
* It answers ONE of the three assertions a hold of this kind rests on:
|
|
427
|
+
*
|
|
428
|
+
* 1. *declared intent* — which surfaces a committed policy says need approval.
|
|
429
|
+
* Not read here: that declaration lives in the candidate branch, so reading
|
|
430
|
+
* it from the candidate would let the change under review supply its own
|
|
431
|
+
* permission.
|
|
432
|
+
* 2. *observed forge state* — whether the live configuration actually requires
|
|
433
|
+
* an approving review, and whether an unconditional bypass voids it. **This
|
|
434
|
+
* is the half the row reads**, and it is the only one of the three a forge
|
|
435
|
+
* payload can carry.
|
|
436
|
+
* 3. *principal qualification* — whether the approver is a genuinely separate
|
|
437
|
+
* person who accepted the duty and is reachable. Not derivable from any API
|
|
438
|
+
* response: membership and permissions are readable, custody and willingness
|
|
439
|
+
* are not.
|
|
440
|
+
*
|
|
441
|
+
* So `satisfied` means *a forge-side approval requirement exists and no
|
|
442
|
+
* unconditional bypass voids it* — never *the approval comes from someone other
|
|
443
|
+
* than the author*. A caller that needs the stronger claim gets it from a live
|
|
444
|
+
* test, not from this row, and the detail line says so rather than leaving a
|
|
445
|
+
* reader to infer the narrower meaning.
|
|
446
|
+
*
|
|
447
|
+
* The bypass clause is not decoration: an approval requirement a listed actor
|
|
448
|
+
* may skip unconditionally is advisory, so reporting it `satisfied` would be
|
|
449
|
+
* the quiet false positive the three-state row type exists to prevent.
|
|
450
|
+
*/
|
|
451
|
+
function authorityApprovalRow(covering: readonly RulesetDetail[] | null): ProtectionRow {
|
|
452
|
+
if (covering === null) {
|
|
453
|
+
return {
|
|
454
|
+
id: 'authority_surface_external_approval',
|
|
455
|
+
state: 'unread',
|
|
456
|
+
source: SOURCE.rulesets,
|
|
457
|
+
detail: 'the rulesets were not queried',
|
|
458
|
+
};
|
|
459
|
+
}
|
|
460
|
+
const mechanisms = approvalMechanisms(covering);
|
|
461
|
+
if (mechanisms.length === 0) {
|
|
462
|
+
return {
|
|
463
|
+
id: 'authority_surface_external_approval',
|
|
464
|
+
state: 'unsatisfied',
|
|
465
|
+
source: SOURCE.rulesets,
|
|
466
|
+
detail:
|
|
467
|
+
'no covering ruleset requires an approving review — no approving-review count, ' +
|
|
468
|
+
'no code-owner review and no required reviewers. Any principal with write access ' +
|
|
469
|
+
'can therefore merge an authority-surface change alone.',
|
|
470
|
+
};
|
|
471
|
+
}
|
|
472
|
+
const bypass = covering.flatMap((rs) =>
|
|
473
|
+
(rs.bypass_actors ?? []).filter((a) => a.bypass_mode === 'always'),
|
|
474
|
+
);
|
|
475
|
+
if (bypass.length > 0) {
|
|
476
|
+
return {
|
|
477
|
+
id: 'authority_surface_external_approval',
|
|
478
|
+
state: 'unsatisfied',
|
|
479
|
+
source: SOURCE.rulesets,
|
|
480
|
+
detail:
|
|
481
|
+
`an approval requirement exists (${mechanisms.join(', ')}) but ` +
|
|
482
|
+
`${String(bypass.length)} actor(s) may bypass it unconditionally, so it does not bind`,
|
|
483
|
+
};
|
|
484
|
+
}
|
|
485
|
+
return {
|
|
486
|
+
id: 'authority_surface_external_approval',
|
|
487
|
+
state: 'satisfied',
|
|
488
|
+
source: SOURCE.rulesets,
|
|
489
|
+
detail:
|
|
490
|
+
`an approving review is required and unbypassable (${mechanisms.join(', ')}). ` +
|
|
491
|
+
'This states the forge requirement ONLY — it does not establish that the approver ' +
|
|
492
|
+
'is a principal distinct from the author, which no API response can show.',
|
|
493
|
+
};
|
|
494
|
+
}
|
|
495
|
+
|
|
358
496
|
/**
|
|
359
497
|
* The human ACTION lines for rows that are not satisfied.
|
|
360
498
|
*
|
|
@@ -35,16 +35,28 @@
|
|
|
35
35
|
* Schema (JSON):
|
|
36
36
|
*
|
|
37
37
|
* {
|
|
38
|
-
* "schema_version":
|
|
38
|
+
* "schema_version": 2,
|
|
39
39
|
* "tools": {
|
|
40
40
|
* "<tool_id>": {
|
|
41
41
|
* "anchor": "/abs/path/to/anchor",
|
|
42
|
-
* "files": ["skills/foo/SKILL.md", ...]
|
|
42
|
+
* "files": ["skills/foo/SKILL.md", ...], // anchor-relative, sorted
|
|
43
|
+
* "digests": { // schema 2, additive
|
|
44
|
+
* "skills/foo/SKILL.md": {
|
|
45
|
+
* "installed_sha256": "…", // the bytes we wrote
|
|
46
|
+
* "packaged_sha256": "…" // the bytes we ship now; null = retired
|
|
47
|
+
* }
|
|
48
|
+
* }
|
|
43
49
|
* }
|
|
44
50
|
* }
|
|
45
51
|
* }
|
|
52
|
+
*
|
|
53
|
+
* Schema 2 is ADDITIVE: `files` keeps its schema-1 meaning, so every reader that treats it
|
|
54
|
+
* as a path allowlist works unchanged on either schema, and a schema-1 file
|
|
55
|
+
* loads as an inventory without digests. The digests are the user-scoped
|
|
56
|
+
* ownership ledger: written on every global deploy whatever directory the
|
|
57
|
+
* install ran from, and read by the reaper so an edit is seen before an unlink.
|
|
46
58
|
*/
|
|
47
|
-
import { randomBytes } from "node:crypto";
|
|
59
|
+
import { createHash, randomBytes } from "node:crypto";
|
|
48
60
|
import * as fs from "node:fs";
|
|
49
61
|
import * as os from "node:os";
|
|
50
62
|
import * as path from "node:path";
|
|
@@ -56,7 +68,7 @@ export type EnvMap = Record<string, string | undefined>;
|
|
|
56
68
|
/** Loosely-typed inventory dict, mirroring Python's `dict`. */
|
|
57
69
|
export type Inventory = Record<string, unknown>;
|
|
58
70
|
|
|
59
|
-
export const SCHEMA_VERSION =
|
|
71
|
+
export const SCHEMA_VERSION = 2;
|
|
60
72
|
export const INVENTORY_BASENAME = "deployed-files.json";
|
|
61
73
|
export const INVENTORY_ENV = "AGENT_CONFIG_DEPLOY_INVENTORY";
|
|
62
74
|
|
|
@@ -374,6 +386,13 @@ function as_posix(p: string): string {
|
|
|
374
386
|
* directories — the preview surface for `agent-config install --dry-run`. The selection
|
|
375
387
|
* logic (orphan diff, containment proof, directory guard) is identical to the
|
|
376
388
|
* live path, so the preview is exact.
|
|
389
|
+
*
|
|
390
|
+
* An orphan whose bytes differ from the digest the ledger recorded writing is
|
|
391
|
+
* NOT deleted: the user edited a file the package retired, and an unlink would
|
|
392
|
+
* destroy that edit without it ever being seen. Its absolute path is pushed to
|
|
393
|
+
* `retained` instead, so the caller can say so and keep the record. Orphans are
|
|
394
|
+
* read from `files` AND from the recorded digests, because a retained file is
|
|
395
|
+
* no longer shipped and stays recorded only there.
|
|
377
396
|
*/
|
|
378
397
|
export function reap_stale(
|
|
379
398
|
tool_id: string,
|
|
@@ -381,6 +400,7 @@ export function reap_stale(
|
|
|
381
400
|
current_files: Set<string>,
|
|
382
401
|
inventory: Inventory,
|
|
383
402
|
dry_run = false,
|
|
403
|
+
retained: string[] | null = null,
|
|
384
404
|
): string[] {
|
|
385
405
|
const tools = (inventory["tools"] as Record<string, unknown> | undefined) ?? {};
|
|
386
406
|
const entry = tools[tool_id];
|
|
@@ -402,7 +422,11 @@ export function reap_stale(
|
|
|
402
422
|
|
|
403
423
|
const deleted: string[] = [];
|
|
404
424
|
const prune_candidates = new Set<string>();
|
|
405
|
-
const
|
|
425
|
+
const digests = digests_of_entry(e);
|
|
426
|
+
// A preview cannot know which sidecars the real run stages again, and a
|
|
427
|
+
// staged sidecar is kept — so the preview never names one as would-delete.
|
|
428
|
+
const recorded = [...digests].filter(([, d]) => !(dry_run && d.kind === "sidecar")).map(([rel]) => rel);
|
|
429
|
+
const orphans = difference([...(prev_files as unknown[]), ...recorded], current_files);
|
|
406
430
|
for (const rel of sorted_strings(orphans)) {
|
|
407
431
|
if (typeof rel !== "string" || !rel || rel.startsWith("/") || rel.startsWith("..")) {
|
|
408
432
|
continue;
|
|
@@ -424,6 +448,10 @@ export function reap_stale(
|
|
|
424
448
|
if (lst && lst.isDirectory() && !lst.isSymbolicLink()) {
|
|
425
449
|
continue; // never delete directories
|
|
426
450
|
}
|
|
451
|
+
if (lst !== null && edited_since_install(target, digests.get(rel))) {
|
|
452
|
+
retained?.push(target);
|
|
453
|
+
continue;
|
|
454
|
+
}
|
|
427
455
|
if (dry_run) {
|
|
428
456
|
// Preview: report only what is actually on disk and would go.
|
|
429
457
|
if (path_exists(target) || (lst !== null && lst.isSymbolicLink())) {
|
|
@@ -472,6 +500,12 @@ export function reap_stale(
|
|
|
472
500
|
* `dry_run=true` returns the would-delete set (tagged orphans actually present
|
|
473
501
|
* on disk) WITHOUT unlinking or pruning — the preview surface for
|
|
474
502
|
* `agent-config install --dry-run`. Selection logic is identical to the live path.
|
|
503
|
+
*
|
|
504
|
+
* The tag survives a user's edit, so it proves we WROTE the file, never that it
|
|
505
|
+
* is still what we wrote. A tagged orphan the ledger (`digests`) recorded with
|
|
506
|
+
* a digest its bytes no longer match is pushed to `retained` and kept, exactly
|
|
507
|
+
* as {@link reap_stale} keeps it. A tagged orphan with no recorded digest — an
|
|
508
|
+
* install older than the ledger — is still reaped: there is nothing to compare.
|
|
475
509
|
*/
|
|
476
510
|
export function reap_tagged_orphans(
|
|
477
511
|
anchor: string,
|
|
@@ -479,6 +513,8 @@ export function reap_tagged_orphans(
|
|
|
479
513
|
current_files: Set<string>,
|
|
480
514
|
package_tag: string,
|
|
481
515
|
dry_run = false,
|
|
516
|
+
digests: ReadonlyMap<string, LedgerDigest> = new Map(),
|
|
517
|
+
retained: string[] | null = null,
|
|
482
518
|
): string[] {
|
|
483
519
|
const anchor_resolved = resolve_path(expanduser(anchor));
|
|
484
520
|
const deleted: string[] = [];
|
|
@@ -529,6 +565,10 @@ export function reap_tagged_orphans(
|
|
|
529
565
|
if (!hit) {
|
|
530
566
|
continue;
|
|
531
567
|
}
|
|
568
|
+
if (edited_since_install(md, digests.get(rel))) {
|
|
569
|
+
retained?.push(md);
|
|
570
|
+
continue;
|
|
571
|
+
}
|
|
532
572
|
if (dry_run) {
|
|
533
573
|
deleted.push(md);
|
|
534
574
|
continue;
|
|
@@ -559,6 +599,7 @@ export function record_deploy(
|
|
|
559
599
|
anchor: string,
|
|
560
600
|
current_files: Set<string>,
|
|
561
601
|
inventory: Inventory,
|
|
602
|
+
digests: ReadonlyMap<string, LedgerDigest> | null = null,
|
|
562
603
|
): Inventory {
|
|
563
604
|
if (
|
|
564
605
|
typeof inventory["tools"] !== "object" ||
|
|
@@ -568,14 +609,126 @@ export function record_deploy(
|
|
|
568
609
|
inventory["tools"] = {};
|
|
569
610
|
}
|
|
570
611
|
const tools = inventory["tools"] as Record<string, unknown>;
|
|
571
|
-
|
|
612
|
+
const record: Record<string, unknown> = {
|
|
572
613
|
anchor: String(anchor),
|
|
573
614
|
files: sorted_strings([...current_files]),
|
|
574
615
|
};
|
|
616
|
+
// Omitted rather than emptied when the caller has none: an entry written by a
|
|
617
|
+
// caller that computes no digests reads exactly as a schema-1 entry did.
|
|
618
|
+
if (digests !== null && digests.size > 0) {
|
|
619
|
+
record["digests"] = Object.fromEntries(
|
|
620
|
+
sorted_strings([...digests.keys()]).map((rel) => [rel, { ...digests.get(rel) }]),
|
|
621
|
+
);
|
|
622
|
+
}
|
|
623
|
+
tools[tool_id] = record;
|
|
575
624
|
inventory["schema_version"] = SCHEMA_VERSION;
|
|
576
625
|
return inventory;
|
|
577
626
|
}
|
|
578
627
|
|
|
628
|
+
/**
|
|
629
|
+
* One file's ledger record. `kind: "sidecar"` marks package content staged
|
|
630
|
+
* beside a preserved edit; absent means a deployed file.
|
|
631
|
+
*/
|
|
632
|
+
export interface LedgerDigest {
|
|
633
|
+
installed_sha256: string;
|
|
634
|
+
packaged_sha256: string | null;
|
|
635
|
+
kind?: "sidecar";
|
|
636
|
+
}
|
|
637
|
+
|
|
638
|
+
/** SHA-256 of the bytes at `p`, or `null` when they cannot be read. */
|
|
639
|
+
export function file_sha256(p: string): string | null {
|
|
640
|
+
try {
|
|
641
|
+
return createHash("sha256").update(fs.readFileSync(p)).digest("hex");
|
|
642
|
+
} catch {
|
|
643
|
+
return null;
|
|
644
|
+
}
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
/** True when `target` is readable and its bytes differ from the recorded installed digest. */
|
|
648
|
+
function edited_since_install(target: string, rec: LedgerDigest | undefined): boolean {
|
|
649
|
+
if (rec === undefined) return false;
|
|
650
|
+
const on_disk = file_sha256(target);
|
|
651
|
+
if (on_disk !== null) return on_disk !== rec.installed_sha256;
|
|
652
|
+
// Unreadable bytes are an unknown edit state, so a real file is kept and
|
|
653
|
+
// reported. A dangling symlink holds no bytes to lose and may still go.
|
|
654
|
+
try {
|
|
655
|
+
return !fs.lstatSync(target).isSymbolicLink();
|
|
656
|
+
} catch {
|
|
657
|
+
return false;
|
|
658
|
+
}
|
|
659
|
+
}
|
|
660
|
+
|
|
661
|
+
/** Parse a tool entry's `digests` map; a malformed record contributes nothing. */
|
|
662
|
+
function digests_of_entry(e: Record<string, unknown>): Map<string, LedgerDigest> {
|
|
663
|
+
const out = new Map<string, LedgerDigest>();
|
|
664
|
+
const raw = e["digests"];
|
|
665
|
+
if (typeof raw !== "object" || raw === null || Array.isArray(raw)) return out;
|
|
666
|
+
for (const [rel, rec] of Object.entries(raw as Record<string, unknown>)) {
|
|
667
|
+
if (typeof rec !== "object" || rec === null || Array.isArray(rec)) continue;
|
|
668
|
+
const r = rec as Record<string, unknown>;
|
|
669
|
+
const installed = r["installed_sha256"];
|
|
670
|
+
const packaged = r["packaged_sha256"];
|
|
671
|
+
if (typeof installed !== "string" || installed === "") continue;
|
|
672
|
+
out.set(rel, {
|
|
673
|
+
installed_sha256: installed,
|
|
674
|
+
packaged_sha256: typeof packaged === "string" && packaged !== "" ? packaged : null,
|
|
675
|
+
...(r["kind"] === "sidecar" ? { kind: "sidecar" as const } : {}),
|
|
676
|
+
});
|
|
677
|
+
}
|
|
678
|
+
return out;
|
|
679
|
+
}
|
|
680
|
+
|
|
681
|
+
/**
|
|
682
|
+
* The ledger records of `tool_id`, keyed anchor-relative. Empty under the same
|
|
683
|
+
* "not provably ours anymore" conditions as {@link recorded_rel_files} (no
|
|
684
|
+
* entry, moved anchor, malformed entry), and empty for a schema-1 entry.
|
|
685
|
+
*/
|
|
686
|
+
export function recorded_digests(
|
|
687
|
+
tool_id: string,
|
|
688
|
+
anchor: string,
|
|
689
|
+
inventory?: Inventory | null,
|
|
690
|
+
): Map<string, LedgerDigest> {
|
|
691
|
+
const inv = inventory ?? load_inventory();
|
|
692
|
+
const tools = (inv["tools"] as Record<string, unknown> | undefined) ?? {};
|
|
693
|
+
const entry = tools[tool_id];
|
|
694
|
+
if (typeof entry !== "object" || entry === null || Array.isArray(entry)) return new Map();
|
|
695
|
+
const e = entry as Record<string, unknown>;
|
|
696
|
+
const recorded_anchor = e["anchor"];
|
|
697
|
+
if (typeof recorded_anchor !== "string") return new Map();
|
|
698
|
+
if (resolve_path(expanduser(recorded_anchor)) !== resolve_path(expanduser(anchor))) {
|
|
699
|
+
return new Map();
|
|
700
|
+
}
|
|
701
|
+
return digests_of_entry(e);
|
|
702
|
+
}
|
|
703
|
+
|
|
704
|
+
/**
|
|
705
|
+
* Every recorded INSTALLED digest across all tools, keyed by absolute path in
|
|
706
|
+
* both spellings — the lookup the install conflict tracker needs, emitted in
|
|
707
|
+
* both spellings for the reason {@link recorded_absolute_files} gives.
|
|
708
|
+
*/
|
|
709
|
+
export function recorded_absolute_digests(
|
|
710
|
+
inventory?: Inventory | null,
|
|
711
|
+
home?: string | null,
|
|
712
|
+
): Map<string, string> {
|
|
713
|
+
const inv = inventory ?? load_inventory();
|
|
714
|
+
const tools = (inv["tools"] as Record<string, unknown> | undefined) ?? {};
|
|
715
|
+
const out = new Map<string, string>();
|
|
716
|
+
if (typeof tools !== "object" || tools === null || Array.isArray(tools)) return out;
|
|
717
|
+
for (const entry of Object.values(tools)) {
|
|
718
|
+
if (typeof entry !== "object" || entry === null || Array.isArray(entry)) continue;
|
|
719
|
+
const e = entry as Record<string, unknown>;
|
|
720
|
+
const anchor = e["anchor"];
|
|
721
|
+
if (typeof anchor !== "string") continue;
|
|
722
|
+
const expanded = expanduser_at(anchor, home);
|
|
723
|
+
for (const [rel, rec] of digests_of_entry(e)) {
|
|
724
|
+
const lexical = path.resolve(expanded, rel);
|
|
725
|
+
out.set(lexical, rec.installed_sha256);
|
|
726
|
+
out.set(resolve_path(lexical), rec.installed_sha256);
|
|
727
|
+
}
|
|
728
|
+
}
|
|
729
|
+
return out;
|
|
730
|
+
}
|
|
731
|
+
|
|
579
732
|
// --- helpers ---------------------------------------------------------------
|
|
580
733
|
|
|
581
734
|
/** Prune now-empty directories up to (exclusive) the anchor. */
|
|
@@ -122,7 +122,8 @@ export function rewriteProjectedBodyLinks(body: string, prefix: string): string
|
|
|
122
122
|
return body
|
|
123
123
|
.replace(BODY_DOCS_RE, (_m, t: string) => prefix + t.replace(/^docs\/guidelines\//, 'guidelines/'))
|
|
124
124
|
.replace(BODY_SRC_FLAT_RE, (_m, t: string) => prefix + t)
|
|
125
|
-
.replace(BODY_SRC_AGENT_RE, (_m, t: string) => prefix + t)
|
|
125
|
+
.replace(BODY_SRC_AGENT_RE, (_m, t: string) => prefix + t)
|
|
126
|
+
.replace(LINK_AGENT_SRC_RE, (_m, t: string) => '](' + prefix + t);
|
|
126
127
|
}
|
|
127
128
|
|
|
128
129
|
/**
|
|
@@ -162,3 +163,13 @@ const BODY_DOCS_RE = /(?:\.\.\/)+(docs\/(?:guidelines|contracts)\/[^)\s]+\.md)/g
|
|
|
162
163
|
const BODY_SRC_FLAT_RE = /(?:\.\.\/)+src\/((?:rules|skills)\/[^)\s]+\.md)/g;
|
|
163
164
|
const BODY_SRC_AGENT_RE =
|
|
164
165
|
/(?:\.\.\/)+src\/agent-src\/((?:commands|contexts|personas|user-types|templates|scripts)\/[^)\s]+\.md)/g;
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* A link written from inside `src/` that climbs to `src/agent-src/` without
|
|
169
|
+
* naming `src/` — `](../../agent-src/contexts/x.md)` from `src/skills/<slug>/`.
|
|
170
|
+
* It resolves in the source tree and to nothing in the projection, where the
|
|
171
|
+
* `agent-src/` segment does not exist. Anchored on `](` so only a link target
|
|
172
|
+
* moves, never a path mentioned in prose or an inline code span.
|
|
173
|
+
*/
|
|
174
|
+
const LINK_AGENT_SRC_RE =
|
|
175
|
+
/\]\((?:\.\.\/)+agent-src\/((?:commands|contexts|personas|user-types|templates|scripts)\/[^)\s]*)/g;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The closed set of task kinds a hand may be asked to do: bounded, typed,
|
|
3
|
+
* tool-less work whose output is a proposal the head checks before anything
|
|
4
|
+
* acts on it.
|
|
5
|
+
*
|
|
6
|
+
* Deliberately free of schemas and prompts so the delegation-nudge hook can
|
|
7
|
+
* import it without paying for them in the hook bundle.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
export const HAND_KINDS = [
|
|
11
|
+
'classify',
|
|
12
|
+
'extract',
|
|
13
|
+
'summarise-given-text',
|
|
14
|
+
'draft-candidate',
|
|
15
|
+
'test-candidates',
|
|
16
|
+
'finding-proposal',
|
|
17
|
+
] as const;
|
|
18
|
+
export type HandKind = (typeof HAND_KINDS)[number];
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Work that stays with the paid head whatever route exists: an unpaid route may
|
|
22
|
+
* propose and score, never decide (ADR-257). These are refused before any route
|
|
23
|
+
* is chosen.
|
|
24
|
+
*/
|
|
25
|
+
export const HEAD_ONLY_KINDS = ['plan', 'decide', 'chair', 'final-review', 'write'] as const;
|
|
26
|
+
export type HeadOnlyKind = (typeof HEAD_ONLY_KINDS)[number];
|
|
27
|
+
|
|
28
|
+
const _KINDS: ReadonlySet<string> = new Set<string>(HAND_KINDS);
|
|
29
|
+
const _HEAD_ONLY: ReadonlySet<string> = new Set<string>(HEAD_ONLY_KINDS);
|
|
30
|
+
|
|
31
|
+
/** How a route is paid for; the two unpaid classes are the hands whose every return the head must verify. */
|
|
32
|
+
export const ROUTE_BILLINGS = ['free-quota', 'self-hosted', 'per-token', 'subscription'] as const;
|
|
33
|
+
export type RouteBilling = (typeof ROUTE_BILLINGS)[number];
|
|
34
|
+
|
|
35
|
+
export function isUnpaid(billing: RouteBilling): boolean {
|
|
36
|
+
return billing === 'free-quota' || billing === 'self-hosted';
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/** The head's verdict on one hand's return; `skipped` is recorded, never silent. */
|
|
40
|
+
export const VERIFY_VERDICTS = ['pass', 'fail', 'skipped'] as const;
|
|
41
|
+
export type VerifyVerdict = (typeof VERIFY_VERDICTS)[number];
|
|
42
|
+
|
|
43
|
+
export function isHandKind(raw: unknown): raw is HandKind {
|
|
44
|
+
return typeof raw === 'string' && _KINDS.has(raw);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/** Leading-verb shapes, most specific first: "propose tests" is not "propose findings" or "draft". */
|
|
48
|
+
const KIND_FROM_PROMPT: ReadonlyArray<readonly [RegExp, HandKind]> = [
|
|
49
|
+
[/^\s*(?:propose|suggest|draft|write)\s+(?:unit\s+)?test(?:s|\s+cases?|\s+candidates?)?\b/i, 'test-candidates'],
|
|
50
|
+
[/^\s*(?:propose|list)\s+(?:review\s+)?findings?\b/i, 'finding-proposal'],
|
|
51
|
+
[/^\s*(?:classify|categori[sz]e|label)\b/i, 'classify'],
|
|
52
|
+
[/^\s*extract\b/i, 'extract'],
|
|
53
|
+
[/^\s*summari[sz]e\b/i, 'summarise-given-text'],
|
|
54
|
+
[/^\s*draft\b/i, 'draft-candidate'],
|
|
55
|
+
];
|
|
56
|
+
|
|
57
|
+
/** The hand kind a slice names, or null; deterministic, so a nudge can only cite a kind it matched. */
|
|
58
|
+
export function handKindFromPrompt(text: string): HandKind | null {
|
|
59
|
+
for (const [re, kind] of KIND_FROM_PROMPT) if (re.test(text)) return kind;
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export function isHeadOnlyKind(raw: unknown): raw is HeadOnlyKind {
|
|
64
|
+
return typeof raw === 'string' && _HEAD_ONLY.has(raw);
|
|
65
|
+
}
|
|
@@ -86,9 +86,9 @@ export const PLATFORM_TO_HOST: Readonly<Record<string, string>> = Object.freeze(
|
|
|
86
86
|
export function resumePrompt(roadmapSlug: string): string {
|
|
87
87
|
return (
|
|
88
88
|
`Resume the claimed roadmap \`${roadmapSlug}\`. ` +
|
|
89
|
-
`First act:
|
|
90
|
-
`against the worktree before acting on any of
|
|
91
|
-
`bookkeeping. Then run /roadmap:process-full ${roadmapSlug}.`
|
|
89
|
+
`First act: run \`agent-config run:supervise --verify ${roadmapSlug}\`, which ` +
|
|
90
|
+
`re-verifies the newest checkpoint against the worktree, before acting on any of ` +
|
|
91
|
+
`it — resume by evidence, never by bookkeeping. Then run /roadmap:process-full ${roadmapSlug}.`
|
|
92
92
|
);
|
|
93
93
|
}
|
|
94
94
|
|
|
@@ -67,6 +67,22 @@ export interface HostCapabilityManifest {
|
|
|
67
67
|
* stop-loss behaviour — loudly, never silently.
|
|
68
68
|
*/
|
|
69
69
|
worker_respawn: boolean;
|
|
70
|
+
/**
|
|
71
|
+
* A finished worker can be re-tasked by name and its next run reads more
|
|
72
|
+
* than half of its first call's input from cache — the warm-reuse path
|
|
73
|
+
* `_lib/worker_reuse.ts` decides on.
|
|
74
|
+
*
|
|
75
|
+
* Independent of `worker_respawn`: that field is mid-task kill-and-respawn,
|
|
76
|
+
* this one is a re-task at a task boundary. Neither derives the other.
|
|
77
|
+
* `false` on every host until a dated observation row sets it.
|
|
78
|
+
*/
|
|
79
|
+
worker_resume: boolean;
|
|
80
|
+
/**
|
|
81
|
+
* A forked worker's first call reads the parent's prefix from cache and
|
|
82
|
+
* keeps the parent's tool pool. Read by the fork guidance in
|
|
83
|
+
* `subagent-orchestration`; `false` until observed.
|
|
84
|
+
*/
|
|
85
|
+
fork_shares_cache: boolean;
|
|
70
86
|
/**
|
|
71
87
|
* The host exposes its own structured-ask tool — a native question picker
|
|
72
88
|
* the agent can call instead of rendering a numbered-options block as prose.
|
|
@@ -122,6 +138,8 @@ const SAFE_DEFAULT: HostCapabilityManifest = {
|
|
|
122
138
|
separate_quota_pool: false,
|
|
123
139
|
agent_teams: false,
|
|
124
140
|
worker_respawn: false,
|
|
141
|
+
worker_resume: false,
|
|
142
|
+
fork_shares_cache: false,
|
|
125
143
|
structured_ask: false,
|
|
126
144
|
reads_project_mcp_config: false,
|
|
127
145
|
// `true` because the safe answer here is "there is still a step", not
|
|
@@ -155,6 +173,8 @@ export function normalizeHostManifest(input: unknown): HostCapabilityManifest {
|
|
|
155
173
|
separate_quota_pool: asBool(src.separate_quota_pool),
|
|
156
174
|
agent_teams: asBool(src.agent_teams),
|
|
157
175
|
worker_respawn: asBool(src.worker_respawn),
|
|
176
|
+
worker_resume: asBool(src.worker_resume),
|
|
177
|
+
fork_shares_cache: asBool(src.fork_shares_cache),
|
|
158
178
|
structured_ask: asBool(src.structured_ask),
|
|
159
179
|
reads_project_mcp_config: asBool(src.reads_project_mcp_config),
|
|
160
180
|
// Inverted coercion, matching the inverted default: only an explicit
|
|
@@ -267,14 +287,24 @@ export function normalizeHostManifest(input: unknown): HostCapabilityManifest {
|
|
|
267
287
|
* the archival reading implies an ACTIVE copy of the same clause would bite.
|
|
268
288
|
* It would not. NOTHING IN THIS TREE EXECUTES A `verify:` CLAUSE'S COMMAND,
|
|
269
289
|
* archived or active: `_lib/verify_clause.ts` is a parser, and its four
|
|
270
|
-
* importers — `roadmap_verify_share`, `closure_scan
|
|
290
|
+
* importers — `roadmap_verify_share`, `closure_scan`
|
|
271
291
|
* and `check_verify_expectation_delta` — shell out to nothing but `git`. The
|
|
272
292
|
* step also scoped itself to its own merge ("returns 0 at merge"), which it
|
|
273
293
|
* did. Its stated successor was to record the first observed row with its
|
|
274
294
|
* provenance — which is what this block now is.
|
|
295
|
+
*
|
|
296
|
+
* `fork_shares_cache: true` — OBSERVED. claude (Claude Code 2.1.302, a fork
|
|
297
|
+
* spawned from a subagent leg, 2026-10-17): the fork's first own call read
|
|
298
|
+
* 248,334 of 248,939 input tokens from cache, and its tool list was the
|
|
299
|
+
* parent's. Artifact:
|
|
300
|
+
* `agents/evidence/investigations/host-continuation-observations-2026-10.md`. code-comment-allow provenance-comment -- the observation protocol makes the artifact citation part of the row
|
|
301
|
+
*
|
|
302
|
+
* `worker_resume` — absent, deliberately. The same artifact records a resumed
|
|
303
|
+
* leg reading 99.7 % from cache, but it was addressed by the host's per-run
|
|
304
|
+
* id rather than a durable name, which the criterion requires.
|
|
275
305
|
*/
|
|
276
306
|
const HOST_CAPABILITY_REGISTRY: Readonly<Record<string, Partial<HostCapabilityManifest>>> = {
|
|
277
|
-
claude: { subagent_spawn: true, parallel_spawn: true, structured_ask: true },
|
|
307
|
+
claude: { subagent_spawn: true, parallel_spawn: true, structured_ask: true, fork_shares_cache: true },
|
|
278
308
|
};
|
|
279
309
|
|
|
280
310
|
/**
|
|
@@ -380,6 +410,8 @@ const CAPABILITY_FIELDS: readonly CapabilityField[] = [
|
|
|
380
410
|
'separate_quota_pool',
|
|
381
411
|
'agent_teams',
|
|
382
412
|
'worker_respawn',
|
|
413
|
+
'worker_resume',
|
|
414
|
+
'fork_shares_cache',
|
|
383
415
|
'structured_ask',
|
|
384
416
|
'reads_project_mcp_config',
|
|
385
417
|
'mcp_needs_manual_activation',
|