@event4u/agent-config 16.5.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 +463 -498
- package/CONTRIBUTING.md +47 -0
- package/README.md +25 -25
- package/dist/agent-src/commands/{design.md → agent-design.md} +10 -6
- 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 +5 -0
- 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 +1 -1
- 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/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 +12 -2
- 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 +14 -14
- 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 +16 -2
- 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/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/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 +9 -3
- 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 +7 -1
- 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/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 +72 -17
- package/dist/cli/commands/uiRenderAsset.js +10 -2
- package/dist/cli/commands/uiRenderAssetFonts.js +158 -0
- package/dist/cli/commands/uiRenderAssetTypes.js +8 -20
- package/dist/cli/initRouting.js +1 -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 +4 -1
- 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-TMWYUOK4.js → chunk-2CX7NWRB.js} +224 -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 +483 -817
- 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 +373 -190
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +5 -5
- package/dist/discovery/dormancy-report.md +1 -1
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +21 -16
- package/dist/discovery/trust-report.md +3 -3
- package/dist/discovery/workspaces.json +16 -11
- package/dist/hooks/chat_history.chunk.cjs +6852 -0
- package/dist/hooks/chat_history.chunk.cjs.sha256 +1 -0
- package/dist/hooks/dispatch.js +17506 -18692
- 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 +281 -49
- package/dist/hooks/svg_rules.chunk.cjs.sha256 +1 -1
- 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 +9831 -5546
- 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/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_filled_counter.js +285 -0
- package/dist/scripts/_lib/svg_rules.js +2 -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/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 +5 -0
- 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 +13 -4
- 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 +26 -22
- 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 +93 -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_filled_counter.ts +287 -0
- package/src/scripts/_lib/svg_rules.ts +2 -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/verify_clause.ts +4 -2
- 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 +38 -7
- 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 +42 -10
- 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 +75 -19
- package/src/scripts/hooks/tool_result_bytes_hook.ts +14 -5
- package/src/scripts/hooks/turn_end_gate_hook.ts +1 -1
- 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 +144 -16
- 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_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_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_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-4DBG5K7M.js +0 -1123
- 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-OAFSJBHH.js +0 -272
- package/dist/ui/assets/index-C3djEJah.js +0 -23
- package/src/scripts/_lib/continuation_ladder.ts +0 -335
- package/src/scripts/hooks/run_continuation_hook.ts +0 -1524
|
@@ -0,0 +1,455 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The runtime the hook carrier and the rule stubs need, staged under the
|
|
3
|
+
* machine root (`~/.event4u/agent-config/runtime/`).
|
|
4
|
+
*
|
|
5
|
+
* road-to-a-hook-carrier-that-is-never-silent Phases 1–3. An `npx` install runs
|
|
6
|
+
* from a package directory inside the npm cache (`_npx`), a directory
|
|
7
|
+
* the package manager may clear at any time, and leaves nothing on `PATH`. Every
|
|
8
|
+
* absolute pointer a thinned stub carries and every carrier path the hook command
|
|
9
|
+
* tries therefore resolves HERE, in a directory the package owns.
|
|
10
|
+
*
|
|
11
|
+
* Layout, with `current` a relative symlink swapped by rename:
|
|
12
|
+
*
|
|
13
|
+
* runtime/current -> v-<version>-<nonce>
|
|
14
|
+
* runtime/v-…/node the node the install ran under
|
|
15
|
+
* runtime/v-…/dist/hooks/… the dispatcher bundle
|
|
16
|
+
* runtime/v-…/dist/agent-src/… rule bodies the stubs point at, with the
|
|
17
|
+
* trees their relative links resolve into
|
|
18
|
+
* runtime/v-…/src/scripts/ (data files only), src/config/, package.json,
|
|
19
|
+
* the `yaml` package, in a `node_modules` directory of the stage
|
|
20
|
+
* what the bundle reads from its package root
|
|
21
|
+
* runtime/v-…/claude-rules/ the installed claude layer before thinning,
|
|
22
|
+
* stamped files only — the copy a dead carrier
|
|
23
|
+
* restores from, in shell
|
|
24
|
+
* runtime/thinned present while the claude layer is thinned;
|
|
25
|
+
* its content is that layer's directory
|
|
26
|
+
* runtime/demoted written by the shell branch after a restore
|
|
27
|
+
* runtime/carrier.json the last stripped-environment probe per host
|
|
28
|
+
*
|
|
29
|
+
* The state files are shared with the shell branch in `claude_settings_hooks`,
|
|
30
|
+
* which reads them without node; their names are part of that contract.
|
|
31
|
+
*/
|
|
32
|
+
import { spawnSync } from 'node:child_process';
|
|
33
|
+
import { randomBytes } from 'node:crypto';
|
|
34
|
+
import * as fs from 'node:fs';
|
|
35
|
+
import { createRequire } from 'node:module';
|
|
36
|
+
import * as os from 'node:os';
|
|
37
|
+
import * as path from 'node:path';
|
|
38
|
+
import { build_claude_hook_matrix } from '../scripts/_lib/claude_settings_hooks.js';
|
|
39
|
+
import { event4u_root } from '../scripts/_lib/user_global_paths.js';
|
|
40
|
+
import { describeUserPin, readUserPin, writeUserPin } from './userPin.js';
|
|
41
|
+
export const RUNTIME_DIRNAME = 'runtime';
|
|
42
|
+
export const CLAUDE_LAYER_DIRNAME = 'claude-rules';
|
|
43
|
+
export const THINNED_MARKER = 'thinned';
|
|
44
|
+
export const DEMOTED_MARKER = 'demoted';
|
|
45
|
+
export const CARRIER_RECORD = 'carrier.json';
|
|
46
|
+
export const PACKAGE_STAMP_LINE = 'package: event4u/agent-config';
|
|
47
|
+
/**
|
|
48
|
+
* Package-relative entries the staged dispatcher reads. A missing entry is
|
|
49
|
+
* skipped, not an error: a checkout without a built bundle still stages its
|
|
50
|
+
* rule bodies, and the hook command checks for the bundle itself.
|
|
51
|
+
*/
|
|
52
|
+
export const STAGED_ENTRIES = [
|
|
53
|
+
'package.json',
|
|
54
|
+
'dist/hooks',
|
|
55
|
+
'dist/agent-src',
|
|
56
|
+
'dist/router.json',
|
|
57
|
+
'src/scripts',
|
|
58
|
+
'src/config',
|
|
59
|
+
];
|
|
60
|
+
/**
|
|
61
|
+
* Packages the bundle still resolves at run time (a `createRequire` the bundler
|
|
62
|
+
* cannot inline). Each is copied into the stage's own `node_modules` from wherever
|
|
63
|
+
* the package root resolves it; `yaml` has no dependencies of its own.
|
|
64
|
+
*/
|
|
65
|
+
export const STAGED_RUNTIME_DEPS = ['yaml'];
|
|
66
|
+
function stageRuntimeDeps(packageRoot, stage) {
|
|
67
|
+
const req = createRequire(path.join(packageRoot, 'package.json'));
|
|
68
|
+
for (const dep of STAGED_RUNTIME_DEPS) {
|
|
69
|
+
let manifest;
|
|
70
|
+
try {
|
|
71
|
+
manifest = req.resolve(`${dep}/package.json`);
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
fs.cpSync(path.dirname(manifest), path.join(stage, 'node_modules', dep), { recursive: true, dereference: true });
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Source under `src/scripts/` stays behind: the bundle carries the code, and
|
|
81
|
+
* reads only the data tables beside it (the manifest, the host lowering table,
|
|
82
|
+
* schemas), which are a small fraction of the TypeScript's size.
|
|
83
|
+
*/
|
|
84
|
+
function stagedFilter(src) {
|
|
85
|
+
return !/\.m?ts$/.test(src);
|
|
86
|
+
}
|
|
87
|
+
export function runtimeRootFor(env) {
|
|
88
|
+
return path.join(event4u_root(env ?? process.env), RUNTIME_DIRNAME);
|
|
89
|
+
}
|
|
90
|
+
export function currentRuntimeDir(runtimeRoot) {
|
|
91
|
+
return path.join(runtimeRoot, 'current');
|
|
92
|
+
}
|
|
93
|
+
function readVersion(packageRoot) {
|
|
94
|
+
try {
|
|
95
|
+
const pkg = JSON.parse(fs.readFileSync(path.join(packageRoot, 'package.json'), 'utf8'));
|
|
96
|
+
return typeof pkg.version === 'string' ? pkg.version : 'unknown';
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
return 'unknown';
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
function snapshotStampedLayer(rulesDir, dest) {
|
|
103
|
+
fs.mkdirSync(dest, { recursive: true });
|
|
104
|
+
let names;
|
|
105
|
+
try {
|
|
106
|
+
names = fs.readdirSync(rulesDir);
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
for (const name of names.sort()) {
|
|
112
|
+
if (!name.endsWith('.md'))
|
|
113
|
+
continue;
|
|
114
|
+
const src = path.join(rulesDir, name);
|
|
115
|
+
let text;
|
|
116
|
+
try {
|
|
117
|
+
if (!fs.statSync(src).isFile())
|
|
118
|
+
continue;
|
|
119
|
+
text = fs.readFileSync(src, 'utf8');
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
// The same test the shell branch applies before overwriting a file.
|
|
125
|
+
if (!text.split(/\r?\n/).includes(PACKAGE_STAMP_LINE))
|
|
126
|
+
continue;
|
|
127
|
+
fs.writeFileSync(path.join(dest, name), text);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
function sweepStale(runtimeRoot, keep) {
|
|
131
|
+
for (const name of fs.readdirSync(runtimeRoot)) {
|
|
132
|
+
const stale = (name.startsWith('v-') && name !== keep) || name.startsWith('.stage-') || name.startsWith('.current-');
|
|
133
|
+
if (stale)
|
|
134
|
+
fs.rmSync(path.join(runtimeRoot, name), { recursive: true, force: true });
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Stage the runtime, then make it current by one rename. A stage interrupted at
|
|
139
|
+
* any point leaves `current` on the previous version; the next stage sweeps
|
|
140
|
+
* what the interrupted one left behind, so one version stays on disk.
|
|
141
|
+
*/
|
|
142
|
+
export function stageRuntime(opts) {
|
|
143
|
+
const runtimeRoot = path.resolve(opts.runtimeRoot);
|
|
144
|
+
const packageRoot = path.resolve(opts.packageRoot);
|
|
145
|
+
fs.mkdirSync(runtimeRoot, { recursive: true });
|
|
146
|
+
const version = readVersion(packageRoot);
|
|
147
|
+
const nonce = `${process.pid}-${randomBytes(4).toString('hex')}`;
|
|
148
|
+
const stage = path.join(runtimeRoot, `.stage-${nonce}`);
|
|
149
|
+
fs.mkdirSync(stage);
|
|
150
|
+
let copied = 0;
|
|
151
|
+
for (const rel of STAGED_ENTRIES) {
|
|
152
|
+
const src = path.join(packageRoot, rel);
|
|
153
|
+
if (!fs.existsSync(src))
|
|
154
|
+
continue;
|
|
155
|
+
fs.cpSync(src, path.join(stage, rel), { recursive: true, dereference: true, filter: stagedFilter });
|
|
156
|
+
copied += 1;
|
|
157
|
+
if (opts._failAfterEntries !== undefined && copied >= opts._failAfterEntries) {
|
|
158
|
+
throw new Error('stageRuntime: injected fault');
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
stageRuntimeDeps(packageRoot, stage);
|
|
162
|
+
if (opts.claudeRulesDir)
|
|
163
|
+
snapshotStampedLayer(opts.claudeRulesDir, path.join(stage, CLAUDE_LAYER_DIRNAME));
|
|
164
|
+
fs.writeFileSync(path.join(stage, 'node'), `${opts.nodePath}\n`);
|
|
165
|
+
const versionDir = `v-${version.replace(/[^A-Za-z0-9._-]/g, '_')}-${nonce}`;
|
|
166
|
+
fs.renameSync(stage, path.join(runtimeRoot, versionDir));
|
|
167
|
+
const current = currentRuntimeDir(runtimeRoot);
|
|
168
|
+
const link = path.join(runtimeRoot, `.current-${nonce}`);
|
|
169
|
+
if (process.platform === 'win32') {
|
|
170
|
+
fs.symlinkSync(path.join(runtimeRoot, versionDir), link, 'junction');
|
|
171
|
+
fs.rmSync(current, { recursive: true, force: true });
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
fs.symlinkSync(versionDir, link);
|
|
175
|
+
}
|
|
176
|
+
fs.renameSync(link, current);
|
|
177
|
+
sweepStale(runtimeRoot, versionDir);
|
|
178
|
+
return {
|
|
179
|
+
currentDir: current,
|
|
180
|
+
version,
|
|
181
|
+
dispatcher: fs.existsSync(path.join(current, 'dist', 'hooks', 'dispatch.js')),
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
/** Write or clear the thinned marker. Clearing it also clears a demotion. */
|
|
185
|
+
export function markClaudeLayer(runtimeRoot, opts) {
|
|
186
|
+
fs.mkdirSync(runtimeRoot, { recursive: true });
|
|
187
|
+
const marker = path.join(runtimeRoot, THINNED_MARKER);
|
|
188
|
+
fs.rmSync(path.join(runtimeRoot, DEMOTED_MARKER), { force: true });
|
|
189
|
+
if (opts.thinned)
|
|
190
|
+
fs.writeFileSync(marker, `${path.resolve(opts.rulesDir)}\n`);
|
|
191
|
+
else
|
|
192
|
+
fs.rmSync(marker, { force: true });
|
|
193
|
+
}
|
|
194
|
+
export function readCarrierState(runtimeRoot) {
|
|
195
|
+
const layer = fs.existsSync(path.join(runtimeRoot, DEMOTED_MARKER))
|
|
196
|
+
? 'demoted'
|
|
197
|
+
: fs.existsSync(path.join(runtimeRoot, THINNED_MARKER))
|
|
198
|
+
? 'thinned'
|
|
199
|
+
: 'full';
|
|
200
|
+
let probe = null;
|
|
201
|
+
try {
|
|
202
|
+
const raw = JSON.parse(fs.readFileSync(path.join(runtimeRoot, CARRIER_RECORD), 'utf8'));
|
|
203
|
+
probe = raw.hosts?.['claude'] ?? null;
|
|
204
|
+
}
|
|
205
|
+
catch {
|
|
206
|
+
probe = null;
|
|
207
|
+
}
|
|
208
|
+
return { layer, probe };
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* What a session leaves behind. A live carrier changes nothing; a dead one on a
|
|
212
|
+
* thinned layer restores it and demotes. Nothing a session does promotes — that
|
|
213
|
+
* is what keeps a terminal launch and an app launch from flapping the layer.
|
|
214
|
+
* The shell branch is the implementation; this is its specification.
|
|
215
|
+
*/
|
|
216
|
+
export function layerAfterSession(state, carrierAlive) {
|
|
217
|
+
if (state === 'thinned' && !carrierAlive)
|
|
218
|
+
return 'demoted';
|
|
219
|
+
return state;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* What an install, upgrade or doctor run leaves behind. A layer is thinned only
|
|
223
|
+
* on a carrier the stripped-environment probe reached, so a demoted machine is
|
|
224
|
+
* promoted by a passing probe and by nothing else.
|
|
225
|
+
*/
|
|
226
|
+
export function layerAfterInstall(state, opts) {
|
|
227
|
+
if (!opts.wantsThin)
|
|
228
|
+
return 'full';
|
|
229
|
+
if (opts.probe === 'reached')
|
|
230
|
+
return 'thinned';
|
|
231
|
+
return state === 'demoted' ? 'demoted' : 'full';
|
|
232
|
+
}
|
|
233
|
+
export const STRIPPED_PATH = '/usr/bin:/bin';
|
|
234
|
+
/**
|
|
235
|
+
* Run an installed hook command the way a launcher with a bare `PATH` would,
|
|
236
|
+
* from an empty project directory, and report whether it reached a dispatcher.
|
|
237
|
+
*
|
|
238
|
+
* The command is run with `--read-exit` appended to each dispatch, the
|
|
239
|
+
* dispatcher's measurement-only mode, which exits before any concern runs; and
|
|
240
|
+
* with `AC_HOOK_PROBE` set, which the shell branch reads to skip the restore.
|
|
241
|
+
*/
|
|
242
|
+
export function probeHookCommand(command, env = process.env) {
|
|
243
|
+
const probeCommand = command.replace(/--min-version (\d+)/g, '--min-version $1 --read-exit');
|
|
244
|
+
const project = fs.mkdtempSync(path.join(os.tmpdir(), 'ac-carrier-probe-'));
|
|
245
|
+
const stdinPath = path.join(project, 'stdin.json');
|
|
246
|
+
fs.writeFileSync(stdinPath, '{}');
|
|
247
|
+
const fd = fs.openSync(stdinPath, 'r');
|
|
248
|
+
try {
|
|
249
|
+
const childEnv = {
|
|
250
|
+
PATH: STRIPPED_PATH,
|
|
251
|
+
CLAUDE_PROJECT_DIR: project,
|
|
252
|
+
AC_HOOK_PROBE: '1',
|
|
253
|
+
};
|
|
254
|
+
for (const key of ['HOME', 'USERPROFILE', 'EVENT4U_CONFIG_HOME']) {
|
|
255
|
+
if (env[key] !== undefined)
|
|
256
|
+
childEnv[key] = env[key];
|
|
257
|
+
}
|
|
258
|
+
const res = spawnSync('/bin/sh', ['-c', probeCommand], {
|
|
259
|
+
cwd: project,
|
|
260
|
+
stdio: [fd, 'pipe', 'pipe'],
|
|
261
|
+
encoding: 'utf-8',
|
|
262
|
+
env: childEnv,
|
|
263
|
+
timeout: 30000,
|
|
264
|
+
});
|
|
265
|
+
return typeof res.stderr === 'string' && res.stderr.includes('--read-exit ok') ? 'reached' : 'not-reached';
|
|
266
|
+
}
|
|
267
|
+
catch {
|
|
268
|
+
return 'not-reached';
|
|
269
|
+
}
|
|
270
|
+
finally {
|
|
271
|
+
fs.closeSync(fd);
|
|
272
|
+
fs.rmSync(project, { recursive: true, force: true });
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
export function recordCarrierProbe(runtimeRoot, host, outcome, version, now = new Date()) {
|
|
276
|
+
fs.mkdirSync(runtimeRoot, { recursive: true });
|
|
277
|
+
const file = path.join(runtimeRoot, CARRIER_RECORD);
|
|
278
|
+
let receipt = {};
|
|
279
|
+
try {
|
|
280
|
+
receipt = JSON.parse(fs.readFileSync(file, 'utf8'));
|
|
281
|
+
}
|
|
282
|
+
catch {
|
|
283
|
+
receipt = {};
|
|
284
|
+
}
|
|
285
|
+
const hosts = receipt.hosts ?? {};
|
|
286
|
+
const date = now.toISOString().slice(0, 10);
|
|
287
|
+
const previous = hosts[host];
|
|
288
|
+
const since = previous !== undefined && previous.outcome === outcome ? (previous.since ?? previous.date) : date;
|
|
289
|
+
const record = { host, outcome, date, version, since };
|
|
290
|
+
hosts[host] = record;
|
|
291
|
+
// Other receipt fields — the `install --full` pin among them — survive a probe.
|
|
292
|
+
fs.writeFileSync(file, `${JSON.stringify({ ...receipt, hosts }, null, 2)}\n`);
|
|
293
|
+
return record;
|
|
294
|
+
}
|
|
295
|
+
/** One receipt / doctor line per probe outcome, including the never-probed one. */
|
|
296
|
+
export function describeCarrierProbe(probe) {
|
|
297
|
+
if (probe === null)
|
|
298
|
+
return ['hook carrier (claude): not probed'];
|
|
299
|
+
const verdict = probe.outcome === 'reached' ? 'reached' : 'NOT reached';
|
|
300
|
+
return [
|
|
301
|
+
`hook carrier (${probe.host}): ${verdict} from a stripped environment (PATH=${STRIPPED_PATH}) — ` +
|
|
302
|
+
`probed ${probe.date}, package ${probe.version}`,
|
|
303
|
+
];
|
|
304
|
+
}
|
|
305
|
+
/** The doctor line: the layer on disk, and since when the carrier outcome holds. */
|
|
306
|
+
export function describeCarrierState(state) {
|
|
307
|
+
const since = state.probe === null ? 'never probed' : `carrier ${state.probe.outcome} since ${state.probe.since ?? state.probe.date}`;
|
|
308
|
+
return `hook carrier (claude): rule layer ${state.layer}, ${since}`;
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* The install-time half of the carrier, run after the claude layer is copied
|
|
312
|
+
* and rewritten and before it may be thinned: stage the runtime, probe the
|
|
313
|
+
* SessionStart command from a stripped environment, record the outcome, and
|
|
314
|
+
* decide the layer by {@link layerAfterInstall}. The caller thins only when
|
|
315
|
+
* `thin` is true and then calls {@link markClaudeLayer}; a full outcome is
|
|
316
|
+
* marked here and a demoted one is left as the shell branch wrote it.
|
|
317
|
+
*
|
|
318
|
+
* Windows has no `/bin/sh` to probe with, so there the decision stays what it
|
|
319
|
+
* was before the probe existed and nothing is recorded — "not probed" is the
|
|
320
|
+
* honest reading.
|
|
321
|
+
*/
|
|
322
|
+
export function prepareClaudeCarrier(opts) {
|
|
323
|
+
const env = opts.env ?? process.env;
|
|
324
|
+
const runtimeRoot = runtimeRootFor(env);
|
|
325
|
+
const warnings = [];
|
|
326
|
+
let staged = null;
|
|
327
|
+
try {
|
|
328
|
+
staged = stageRuntime({
|
|
329
|
+
packageRoot: opts.packageRoot,
|
|
330
|
+
runtimeRoot,
|
|
331
|
+
nodePath: process.execPath,
|
|
332
|
+
claudeRulesDir: opts.rulesDir,
|
|
333
|
+
});
|
|
334
|
+
}
|
|
335
|
+
catch (e) {
|
|
336
|
+
warnings.push(`claude-code: runtime not staged under ${runtimeRoot} — ${String(e)}`);
|
|
337
|
+
}
|
|
338
|
+
if (opts.userPin === true)
|
|
339
|
+
writeUserPin(runtimeRoot);
|
|
340
|
+
const pin = readUserPin(runtimeRoot);
|
|
341
|
+
const wantsThin = opts.wantsThin && staged !== null && pin === null;
|
|
342
|
+
const probe = process.platform === 'win32' || opts.sessionStartCommand === null
|
|
343
|
+
? null
|
|
344
|
+
: probeHookCommand(opts.sessionStartCommand, env);
|
|
345
|
+
if (probe !== null)
|
|
346
|
+
recordCarrierProbe(runtimeRoot, 'claude', probe, staged?.version ?? 'unknown');
|
|
347
|
+
const before = readCarrierState(runtimeRoot);
|
|
348
|
+
const next = probe === null ? (wantsThin ? 'thinned' : 'full') : layerAfterInstall(before.layer, { wantsThin, probe });
|
|
349
|
+
if (next === 'full')
|
|
350
|
+
markClaudeLayer(runtimeRoot, { thinned: false, rulesDir: opts.rulesDir });
|
|
351
|
+
const lines = describeCarrierProbe(readCarrierState(runtimeRoot).probe);
|
|
352
|
+
const pinLine = describeUserPin(pin);
|
|
353
|
+
if (pinLine !== null)
|
|
354
|
+
lines.push(pinLine);
|
|
355
|
+
if (next === 'demoted') {
|
|
356
|
+
lines.push('hook carrier (claude): machine demoted — the rule layer stays full until the probe passes');
|
|
357
|
+
}
|
|
358
|
+
return { thin: next === 'thinned', bodyLinkRoot: staged?.currentDir ?? null, runtimeRoot, lines, warnings };
|
|
359
|
+
}
|
|
360
|
+
/**
|
|
361
|
+
* The doctor half of 3.3: probe the installed command, record it, and promote
|
|
362
|
+
* a demoted machine whose probe now passes. Promotion clears the demotion only;
|
|
363
|
+
* the layer stays full until the next install thins it, because the thin pass
|
|
364
|
+
* belongs to the installer.
|
|
365
|
+
*/
|
|
366
|
+
export function probeAndPromote(sessionStartCommand, env = process.env) {
|
|
367
|
+
const runtimeRoot = runtimeRootFor(env);
|
|
368
|
+
const before = readCarrierState(runtimeRoot);
|
|
369
|
+
if (process.platform === 'win32')
|
|
370
|
+
return before;
|
|
371
|
+
const outcome = probeHookCommand(sessionStartCommand, env);
|
|
372
|
+
const staged = readVersion(currentRuntimeDir(runtimeRoot));
|
|
373
|
+
const version = staged !== 'unknown' ? staged : (before.probe?.version ?? 'unknown');
|
|
374
|
+
recordCarrierProbe(runtimeRoot, 'claude', outcome, version);
|
|
375
|
+
if (before.layer === 'demoted' && outcome === 'reached') {
|
|
376
|
+
fs.rmSync(path.join(runtimeRoot, DEMOTED_MARKER), { force: true });
|
|
377
|
+
}
|
|
378
|
+
return readCarrierState(runtimeRoot);
|
|
379
|
+
}
|
|
380
|
+
/** Remove the staged runtime and its state files; returns the path removed, or null when absent. */
|
|
381
|
+
export function removeStagedRuntime(env = process.env) {
|
|
382
|
+
const runtimeRoot = runtimeRootFor(env);
|
|
383
|
+
if (!fs.existsSync(runtimeRoot))
|
|
384
|
+
return null;
|
|
385
|
+
fs.rmSync(runtimeRoot, { recursive: true, force: true });
|
|
386
|
+
return runtimeRoot;
|
|
387
|
+
}
|
|
388
|
+
/** The `SessionStart` command the installer writes for this package, or null. */
|
|
389
|
+
export function sessionStartCommandFor(packageRoot) {
|
|
390
|
+
try {
|
|
391
|
+
return build_claude_hook_matrix(path.join(packageRoot, 'src', 'scripts', 'hook_manifest.yaml'))['SessionStart'] ?? null;
|
|
392
|
+
}
|
|
393
|
+
catch {
|
|
394
|
+
return null;
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
/**
|
|
398
|
+
* The claude-code deploy step, after the copy and the rewrite: prepare the
|
|
399
|
+
* carrier, thin through `thin` only when the plan says so, and mark the layer
|
|
400
|
+
* by what actually happened — a thin pass that throws leaves it marked full.
|
|
401
|
+
*/
|
|
402
|
+
export function deployClaudeCarrier(opts) {
|
|
403
|
+
const carrier = prepareClaudeCarrier({
|
|
404
|
+
packageRoot: opts.packageRoot,
|
|
405
|
+
rulesDir: opts.rulesDir,
|
|
406
|
+
sessionStartCommand: sessionStartCommandFor(opts.packageRoot),
|
|
407
|
+
wantsThin: opts.wantsThin,
|
|
408
|
+
...(opts.userPin === true ? { userPin: true } : {}),
|
|
409
|
+
});
|
|
410
|
+
for (const w of carrier.warnings)
|
|
411
|
+
opts.warn(w);
|
|
412
|
+
if (!opts.quiet)
|
|
413
|
+
for (const l of carrier.lines)
|
|
414
|
+
opts.info(l);
|
|
415
|
+
if (!carrier.thin)
|
|
416
|
+
return;
|
|
417
|
+
try {
|
|
418
|
+
const lines = opts.thin(carrier.bodyLinkRoot);
|
|
419
|
+
markClaudeLayer(carrier.runtimeRoot, { thinned: true, rulesDir: opts.rulesDir });
|
|
420
|
+
if (!opts.quiet)
|
|
421
|
+
for (const l of lines)
|
|
422
|
+
opts.info(l);
|
|
423
|
+
}
|
|
424
|
+
catch (e) {
|
|
425
|
+
markClaudeLayer(carrier.runtimeRoot, { thinned: false, rulesDir: opts.rulesDir });
|
|
426
|
+
opts.warn(`claude-code: thinned rule layer not written — ${String(e)}`);
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
/**
|
|
430
|
+
* The doctor `hook-carrier` check (2.2, 3.3, 4.1): probe the SessionStart
|
|
431
|
+
* command from a stripped environment, record it, promote a demoted machine
|
|
432
|
+
* whose probe now passes, and print the layer and since when the carrier
|
|
433
|
+
* outcome holds. Skipped until an install staged a runtime.
|
|
434
|
+
*/
|
|
435
|
+
export function checkHookCarrier(packageRoot, env = process.env) {
|
|
436
|
+
const runtimeRoot = runtimeRootFor(env);
|
|
437
|
+
const command = sessionStartCommandFor(packageRoot);
|
|
438
|
+
if (!fs.existsSync(currentRuntimeDir(runtimeRoot)) || command === null) {
|
|
439
|
+
return {
|
|
440
|
+
id: 'hook-carrier',
|
|
441
|
+
status: 'skipped',
|
|
442
|
+
message: `no staged runtime under ${runtimeRoot}`,
|
|
443
|
+
remedy: 'run `agent-config upgrade` (or `npx -y @event4u/agent-config init`) to stage it',
|
|
444
|
+
};
|
|
445
|
+
}
|
|
446
|
+
const state = probeAndPromote(command, env);
|
|
447
|
+
const reached = state.probe?.outcome === 'reached';
|
|
448
|
+
return {
|
|
449
|
+
id: 'hook-carrier',
|
|
450
|
+
status: reached ? 'ok' : 'warn',
|
|
451
|
+
message: [...describeCarrierProbe(state.probe), describeCarrierState(state)].join(' · '),
|
|
452
|
+
remedy: reached ? '' : 'install node where the hook launcher can run it, then run `agent-config upgrade`',
|
|
453
|
+
};
|
|
454
|
+
}
|
|
455
|
+
//# sourceMappingURL=stagedRuntime.js.map
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `--tools` / `--ai` value of `agent-config install`: the two flags are
|
|
3
|
+
* aliases, so their comma lists are unioned in order with duplicates dropped,
|
|
4
|
+
* and an empty union means every tool.
|
|
5
|
+
*/
|
|
6
|
+
export function mergeToolsAliases(tools, ai) {
|
|
7
|
+
const items = [];
|
|
8
|
+
for (const raw of [tools, ai]) {
|
|
9
|
+
if (!raw)
|
|
10
|
+
continue;
|
|
11
|
+
for (const piece of raw.split(',')) {
|
|
12
|
+
const stripped = piece.trim();
|
|
13
|
+
if (stripped && !items.includes(stripped))
|
|
14
|
+
items.push(stripped);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return items.length > 0 ? items.join(',') : 'all';
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=toolsArg.js.map
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The user brake on the rule layer: `install --full` writes one field into the
|
|
3
|
+
* install receipt, `runtime/carrier.json`, and the layer-form decision is the
|
|
4
|
+
* only reader that acts on it. No settings key, schema entry or wizard question
|
|
5
|
+
* carries it — the brake exists so a user can keep today's full layer without
|
|
6
|
+
* the package growing a setting for it.
|
|
7
|
+
*
|
|
8
|
+
* Sticky by design: a later plain `install` or upgrade leaves the field in
|
|
9
|
+
* place, because a brake that an upgrade silently released would not be one.
|
|
10
|
+
* `agent-config uninstall` removes the runtime directory and the field with it.
|
|
11
|
+
*/
|
|
12
|
+
import * as fs from 'node:fs';
|
|
13
|
+
import * as path from 'node:path';
|
|
14
|
+
export const RECEIPT_FILE = 'carrier.json';
|
|
15
|
+
export const USER_PIN_FIELD = 'user_pin';
|
|
16
|
+
function readReceipt(runtimeRoot) {
|
|
17
|
+
try {
|
|
18
|
+
const raw = JSON.parse(fs.readFileSync(path.join(runtimeRoot, RECEIPT_FILE), 'utf8'));
|
|
19
|
+
return typeof raw === 'object' && raw !== null && !Array.isArray(raw) ? raw : {};
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return {};
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/** The pin, or `null`. A field that is present but unreadable still reads as a pin: a brake fails on. */
|
|
26
|
+
export function readUserPin(runtimeRoot) {
|
|
27
|
+
const v = readReceipt(runtimeRoot)[USER_PIN_FIELD];
|
|
28
|
+
if (v === undefined || v === null)
|
|
29
|
+
return null;
|
|
30
|
+
const o = typeof v === 'object' ? v : {};
|
|
31
|
+
return { form: 'full', set_at: typeof o['set_at'] === 'string' ? o['set_at'] : 'unknown' };
|
|
32
|
+
}
|
|
33
|
+
/** Write the pin into the receipt, keeping every other field the receipt holds. */
|
|
34
|
+
export function writeUserPin(runtimeRoot, now = new Date()) {
|
|
35
|
+
fs.mkdirSync(runtimeRoot, { recursive: true });
|
|
36
|
+
const receipt = readReceipt(runtimeRoot);
|
|
37
|
+
const pin = { form: 'full', set_at: now.toISOString().slice(0, 10) };
|
|
38
|
+
receipt[USER_PIN_FIELD] = pin;
|
|
39
|
+
fs.writeFileSync(path.join(runtimeRoot, RECEIPT_FILE), `${JSON.stringify(receipt, null, 2)}\n`);
|
|
40
|
+
return pin;
|
|
41
|
+
}
|
|
42
|
+
export function describeUserPin(pin) {
|
|
43
|
+
return pin === null
|
|
44
|
+
? null
|
|
45
|
+
: `rule layer pinned full by \`install --full\` (since ${pin.set_at}) — the package will not thin it on this machine`;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=userPin.js.map
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* {@link buildInstallPlan}.
|
|
10
10
|
*
|
|
11
11
|
* Mirrors the canonical mapping tables in
|
|
12
|
-
*
|
|
12
|
+
* the retired Python installer, line 2029-2222:
|
|
13
13
|
* - {@link USER_SCOPE_PATHS} ← `USER_SCOPE_PATHS`
|
|
14
14
|
* - {@link GLOBAL_DEPLOY_SOURCES} ← `_CLAUDE_SKILL_BUNDLE` + `GLOBAL_DEPLOY_SOURCES`
|
|
15
15
|
*
|
|
@@ -23,7 +23,7 @@ import { buildInstallPlan } from './plan.js';
|
|
|
23
23
|
import { ruleFileArrives, LEGACY_ALL } from './rule_scope.js';
|
|
24
24
|
/**
|
|
25
25
|
* Per-tool user-scope anchor directory, mirrored 1:1 from
|
|
26
|
-
* `
|
|
26
|
+
* `USER_SCOPE_PATHS` in the retired Python installer. Values may use `~` for the
|
|
27
27
|
* user's home directory; {@link expandAnchor} resolves it server-side.
|
|
28
28
|
*
|
|
29
29
|
* Tools without a user-scope directory convention (e.g. `claude-desktop`
|
|
@@ -93,7 +93,7 @@ const CLAUDE_SKILL_BUNDLE = [
|
|
|
93
93
|
// subdirs route as `/<cluster>:<sub>`. Council session 2026-05-28
|
|
94
94
|
// converged on Option B (native slash-only) — see
|
|
95
95
|
// agents/runtime/council/responses/claude-code-distribution.json
|
|
96
|
-
// and
|
|
96
|
+
// and `_CLAUDE_SKILL_BUNDLE` in the retired Python installer for the Python mirror.
|
|
97
97
|
['dist/agent-src/commands', 'commands'],
|
|
98
98
|
['dist/agent-src/personas', 'personas'],
|
|
99
99
|
];
|
|
@@ -104,7 +104,7 @@ const CLAUDE_SKILL_BUNDLE = [
|
|
|
104
104
|
* `packageSrcRelative` resolves against the agent-config package root;
|
|
105
105
|
* `destSubpath` is appended to `USER_SCOPE_PATHS[toolId]` (expanded).
|
|
106
106
|
*
|
|
107
|
-
* Mirrors `GLOBAL_DEPLOY_SOURCES` in
|
|
107
|
+
* Mirrors `GLOBAL_DEPLOY_SOURCES` in the retired Python installer, line 2178-2222.
|
|
108
108
|
* Tools absent from this map have no deployable content in global scope
|
|
109
109
|
* — they either follow a marker-only convention (handled by bridges in
|
|
110
110
|
* Phase A6) or have no markdown convention at all.
|
|
@@ -235,4 +235,26 @@ export function buildPlanFromWizard(inputs) {
|
|
|
235
235
|
policy: inputs.policy,
|
|
236
236
|
});
|
|
237
237
|
}
|
|
238
|
+
/**
|
|
239
|
+
* The `target` block of a dry-run plan summary.
|
|
240
|
+
*
|
|
241
|
+
* A global install has no project target, and printing the cwd here read as
|
|
242
|
+
* "this is where it writes" — under npx the cwd is often the npx cache, so the
|
|
243
|
+
* plan named a directory the install never touches. For global it prints the
|
|
244
|
+
* anchor of each SELECTED tool and which phases would run.
|
|
245
|
+
*/
|
|
246
|
+
export function dryRunTargetLines(global, tools, projectTarget) {
|
|
247
|
+
if (!global)
|
|
248
|
+
return ` target: ${projectTarget}\n`;
|
|
249
|
+
let out = ' target: user-scope host paths (no project target)\n';
|
|
250
|
+
for (const tool of tools) {
|
|
251
|
+
const anchor = USER_SCOPE_PATHS[tool];
|
|
252
|
+
if (anchor === undefined)
|
|
253
|
+
continue;
|
|
254
|
+
out += ` ${tool} → ${anchor.startsWith('~/') ? join(homedir(), anchor.slice(2)) : anchor}\n`;
|
|
255
|
+
}
|
|
256
|
+
out += ' phases: project payload sync — skipped (global installs write user-scope paths only)\n';
|
|
257
|
+
out += ' host projection + managed hooks — would run\n';
|
|
258
|
+
return out;
|
|
259
|
+
}
|
|
238
260
|
//# sourceMappingURL=wizard-plan.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
| [@event4u/agent-config](https://event4u-app.github.io/agent-config) | Governed skills, rules and commands for AI coding tools (Claude Code, Cursor, Windsurf, Copilot) — every claim machine-checked, including the counts in these badges. | 37 tools (stdio, worker) | `agent-config mcp-server` |
|
|
1
|
+
| [@event4u/agent-config](https://event4u-app.github.io/agent-config) | Governed skills, rules and commands for AI coding tools (Claude Code, Cursor, Windsurf, Copilot) — every claim machine-checked, including the artifact counts in these badges. | 37 tools (stdio, worker) | `agent-config mcp-server` |
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"description": "Governed skills, rules and commands for AI coding tools (Claude Code, Cursor, Windsurf, Copilot) \u2014 every claim machine-checked, including the counts in these badges.",
|
|
2
|
+
"description": "Governed skills, rules and commands for AI coding tools (Claude Code, Cursor, Windsurf, Copilot) \u2014 every claim machine-checked, including the artifact counts in these badges.",
|
|
3
3
|
"homepage": "https://event4u-app.github.io/agent-config",
|
|
4
4
|
"install_hint_stdio": "agent-config mcp-server",
|
|
5
5
|
"name": "agent-config-mcp",
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
"tools_count": 37,
|
|
8
8
|
"topics": [
|
|
9
9
|
"agent-governance",
|
|
10
|
+
"agent-rules",
|
|
10
11
|
"agent-skills",
|
|
11
12
|
"ai-agent",
|
|
12
13
|
"ai-video",
|
|
@@ -16,8 +17,8 @@
|
|
|
16
17
|
"cursor",
|
|
17
18
|
"llm",
|
|
18
19
|
"mcp",
|
|
20
|
+
"mcp-server",
|
|
19
21
|
"prompt-engineering",
|
|
20
|
-
"python",
|
|
21
22
|
"skills",
|
|
22
23
|
"typescript",
|
|
23
24
|
"windsurf"
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"discovery": {
|
|
3
|
-
"artefact_count":
|
|
3
|
+
"artefact_count": 636,
|
|
4
4
|
"scanner_version": "de0a22b4ac4c"
|
|
5
5
|
},
|
|
6
|
-
"generated_at": "2026-10-
|
|
6
|
+
"generated_at": "2026-10-22",
|
|
7
7
|
"package": {
|
|
8
|
-
"description": "Governed skills, rules and commands for AI coding tools (Claude Code, Cursor, Windsurf, Copilot) \u2014 every claim machine-checked, including the counts in these badges.",
|
|
8
|
+
"description": "Governed skills, rules and commands for AI coding tools (Claude Code, Cursor, Windsurf, Copilot) \u2014 every claim machine-checked, including the artifact counts in these badges.",
|
|
9
9
|
"homepage": "https://event4u-app.github.io/agent-config",
|
|
10
10
|
"name": "@event4u/agent-config",
|
|
11
11
|
"repository": "https://github.com/event4u-app/agent-config",
|
|
12
|
-
"version": "
|
|
12
|
+
"version": "17.0.0"
|
|
13
13
|
},
|
|
14
14
|
"registries": [
|
|
15
15
|
{
|
|
@@ -57,6 +57,7 @@
|
|
|
57
57
|
},
|
|
58
58
|
"topics": [
|
|
59
59
|
"agent-governance",
|
|
60
|
+
"agent-rules",
|
|
60
61
|
"agent-skills",
|
|
61
62
|
"ai-agent",
|
|
62
63
|
"ai-video",
|
|
@@ -66,8 +67,8 @@
|
|
|
66
67
|
"cursor",
|
|
67
68
|
"llm",
|
|
68
69
|
"mcp",
|
|
70
|
+
"mcp-server",
|
|
69
71
|
"prompt-engineering",
|
|
70
|
-
"python",
|
|
71
72
|
"skills",
|
|
72
73
|
"typescript",
|
|
73
74
|
"windsurf"
|
package/dist/mcp/server.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-07-09/server.schema.json",
|
|
3
|
-
"description": "Governed skills, rules and commands for AI coding tools (Claude Code, Cursor, Windsurf, Copilot) \u2014 every claim machine-checked, including the counts in these badges.",
|
|
3
|
+
"description": "Governed skills, rules and commands for AI coding tools (Claude Code, Cursor, Windsurf, Copilot) \u2014 every claim machine-checked, including the artifact counts in these badges.",
|
|
4
4
|
"name": "io.github.event4u-app/agent-config",
|
|
5
5
|
"packages": [
|
|
6
6
|
{
|
|
@@ -9,12 +9,12 @@
|
|
|
9
9
|
"transport": {
|
|
10
10
|
"type": "stdio"
|
|
11
11
|
},
|
|
12
|
-
"version": "
|
|
12
|
+
"version": "17.0.0"
|
|
13
13
|
}
|
|
14
14
|
],
|
|
15
15
|
"repository": {
|
|
16
16
|
"source": "github",
|
|
17
17
|
"url": "https://github.com/event4u-app/agent-config"
|
|
18
18
|
},
|
|
19
|
-
"version": "
|
|
19
|
+
"version": "17.0.0"
|
|
20
20
|
}
|