@event4u/agent-config 9.7.0 → 9.9.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.
Files changed (901) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +314 -190
  3. package/CONTRIBUTING.md +23 -7
  4. package/MIGRATION.md +20 -0
  5. package/README.md +57 -11
  6. package/dist/agent-src/commands/agents/audit.md +1 -1
  7. package/dist/agent-src/commands/agents/optimize.md +2 -2
  8. package/dist/agent-src/commands/agents/user.md +1 -1
  9. package/dist/agent-src/commands/agents.md +1 -1
  10. package/dist/agent-src/commands/check-current-md.md +3 -3
  11. package/dist/agent-src/commands/commit/in-chunks.md +8 -0
  12. package/dist/agent-src/commands/commit.md +17 -0
  13. package/dist/agent-src/commands/fix/portability.md +2 -2
  14. package/dist/agent-src/commands/fix/pr-comments-loop.md +136 -0
  15. package/dist/agent-src/commands/fix/refs.md +2 -2
  16. package/dist/agent-src/commands/fix/route.md +4 -3
  17. package/dist/agent-src/commands/fix.md +9 -6
  18. package/dist/agent-src/commands/ghostwriter.md +1 -1
  19. package/dist/agent-src/commands/image.md +1 -1
  20. package/dist/agent-src/commands/optimize/augmentignore.md +1 -1
  21. package/dist/agent-src/commands/optimize/skills.md +2 -2
  22. package/dist/agent-src/commands/post-as.md +1 -1
  23. package/dist/agent-src/commands/pr/create.md +4 -0
  24. package/dist/agent-src/commands/research.md +1 -1
  25. package/dist/agent-src/commands/roadmap/ai-council.md +1 -1
  26. package/dist/agent-src/commands/security-audit-config.md +1 -1
  27. package/dist/agent-src/commands/team/delegate.md +4 -0
  28. package/dist/agent-src/commands/video.md +1 -1
  29. package/dist/agent-src/contexts/authority/kernel-rule-edits.md +1 -1
  30. package/dist/agent-src/contexts/contracts/emergency-triage-block.md +2 -2
  31. package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +48 -2
  32. package/dist/agent-src/contexts/execution/orchestration-telemetry.md +10 -0
  33. package/dist/agent-src/contexts/execution/subagent-modes-detail.md +109 -8
  34. package/dist/agent-src/contexts/execution/subagent-response-contract.md +20 -0
  35. package/dist/agent-src/contexts/execution/subagent-spawn-contract.md +53 -3
  36. package/dist/agent-src/contexts/override-system.md +75 -5
  37. package/dist/agent-src/rules/code-provenance.md +112 -0
  38. package/dist/agent-src/rules/context-hygiene.md +2 -0
  39. package/dist/agent-src/rules/doc-screenshot-hygiene.md +97 -0
  40. package/dist/agent-src/rules/domain-safety-pii.md +1 -0
  41. package/dist/agent-src/rules/external-code-graph-interop.md +13 -3
  42. package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +2 -0
  43. package/dist/agent-src/rules/git-history-discipline.md +2 -0
  44. package/dist/agent-src/rules/history-discipline.md +80 -0
  45. package/dist/agent-src/rules/language-and-tone.md +2 -0
  46. package/dist/agent-src/rules/lethal-trifecta-guard.md +3 -0
  47. package/dist/agent-src/rules/media-governance-routing.md +2 -0
  48. package/dist/agent-src/rules/minimal-safe-diff.md +2 -0
  49. package/dist/agent-src/rules/no-roadmap-references.md +4 -1
  50. package/dist/agent-src/rules/non-destructive-by-default.md +20 -0
  51. package/dist/agent-src/rules/onboarding-gate.md +2 -0
  52. package/dist/agent-src/rules/output-discipline.md +2 -0
  53. package/dist/agent-src/rules/persona-governance.md +2 -0
  54. package/dist/agent-src/rules/php-coding.md +1 -0
  55. package/dist/agent-src/rules/preservation-guard.md +3 -0
  56. package/dist/agent-src/rules/reviewer-awareness.md +1 -0
  57. package/dist/agent-src/rules/roadmap-ci-steps-policy.md +1 -0
  58. package/dist/agent-src/rules/roadmap-progress-sync.md +9 -0
  59. package/dist/agent-src/rules/scale-discipline.md +92 -0
  60. package/dist/agent-src/rules/secret-vcs-guard.md +106 -0
  61. package/dist/agent-src/rules/security-sensitive-stop.md +11 -1
  62. package/dist/agent-src/rules/session-canary.md +77 -0
  63. package/dist/agent-src/rules/skill-quality.md +2 -0
  64. package/dist/agent-src/rules/source-confidentiality.md +2 -0
  65. package/dist/agent-src/rules/source-of-truth.md +2 -0
  66. package/dist/agent-src/rules/telegraph-speak.md +2 -0
  67. package/dist/agent-src/rules/token-optimizer-maintenance.md +3 -1
  68. package/dist/agent-src/rules/tool-safety.md +4 -1
  69. package/dist/agent-src/rules/untrusted-input-defense.md +10 -0
  70. package/dist/agent-src/rules/verify-before-complete.md +2 -0
  71. package/dist/agent-src/skills/adr-create/SKILL.md +17 -1
  72. package/dist/agent-src/skills/agent-security-review/SKILL.md +1 -1
  73. package/dist/agent-src/skills/code-intelligence/SKILL.md +97 -0
  74. package/dist/agent-src/skills/condense-memory/SKILL.md +1 -1
  75. package/dist/agent-src/skills/corpus-grounding/SKILL.md +0 -3
  76. package/dist/agent-src/skills/description-assist/SKILL.md +1 -1
  77. package/dist/agent-src/skills/design-review/SKILL.md +5 -6
  78. package/dist/agent-src/skills/design-tokens/SKILL.md +0 -1
  79. package/dist/agent-src/skills/gated-reach/SKILL.md +185 -0
  80. package/dist/agent-src/skills/gated-reach/evals/triggers.json +72 -0
  81. package/dist/agent-src/skills/history-design/SKILL.md +101 -0
  82. package/dist/agent-src/skills/history-design/evals/triggers.json +17 -0
  83. package/dist/agent-src/skills/humanizer/SKILL.md +3 -3
  84. package/dist/agent-src/skills/image-analyser/SKILL.md +14 -12
  85. package/dist/agent-src/skills/image-editing/SKILL.md +2 -1
  86. package/dist/agent-src/skills/image-generation/SKILL.md +2 -1
  87. package/dist/agent-src/skills/image-provider-routing/SKILL.md +2 -2
  88. package/dist/agent-src/skills/launch-readiness/SKILL.md +1 -1
  89. package/dist/agent-src/skills/license-compliance-audit/SKILL.md +161 -0
  90. package/dist/agent-src/skills/license-compliance-audit/evals/triggers.json +52 -0
  91. package/dist/agent-src/skills/license-compliance-borrow-check/SKILL.md +145 -0
  92. package/dist/agent-src/skills/license-compliance-borrow-check/evals/triggers.json +52 -0
  93. package/dist/agent-src/skills/license-compliance-credits/SKILL.md +97 -0
  94. package/dist/agent-src/skills/license-compliance-credits/evals/triggers.json +52 -0
  95. package/dist/agent-src/skills/md-language-check/SKILL.md +1 -1
  96. package/dist/agent-src/skills/override-management/SKILL.md +1 -1
  97. package/dist/agent-src/skills/prediction-pool-optimizer/SKILL.md +7 -7
  98. package/dist/agent-src/skills/project-analysis-core/SKILL.md +1 -1
  99. package/dist/agent-src/skills/prompt-engineering-image/SKILL.md +3 -2
  100. package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +2 -2
  101. package/dist/agent-src/skills/readme-writing/SKILL.md +6 -1
  102. package/dist/agent-src/skills/recursive-verification/SKILL.md +6 -0
  103. package/dist/agent-src/skills/refine-ticket/SKILL.md +3 -3
  104. package/dist/agent-src/skills/roadmap-writing/SKILL.md +4 -0
  105. package/dist/agent-src/skills/rtk-output-filtering/SKILL.md +31 -12
  106. package/dist/agent-src/skills/rule-refactor/SKILL.md +3 -3
  107. package/dist/agent-src/skills/schema-review/SKILL.md +92 -0
  108. package/dist/agent-src/skills/schema-review/evals/triggers.json +17 -0
  109. package/dist/agent-src/skills/screenshot-hygiene/SKILL.md +171 -0
  110. package/dist/agent-src/skills/secrets-management/SKILL.md +43 -1
  111. package/dist/agent-src/skills/security-audit/SKILL.md +1 -1
  112. package/dist/agent-src/skills/security-maturity-assessment/SKILL.md +1 -1
  113. package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +3 -3
  114. package/dist/agent-src/skills/skill-writing/SKILL.md +2 -2
  115. package/dist/agent-src/skills/source-discovery/SKILL.md +5 -5
  116. package/dist/agent-src/skills/subagent-orchestration/SKILL.md +45 -85
  117. package/dist/agent-src/skills/subagent-orchestration/prompts/README.md +5 -4
  118. package/dist/agent-src/skills/subagent-orchestration/prompts/adversarial-verification-council.md +29 -0
  119. package/dist/agent-src/skills/subagent-orchestration/prompts/do-and-judge-two-stage.md +29 -0
  120. package/dist/agent-src/skills/subagent-orchestration/prompts/do-and-judge.md +29 -0
  121. package/dist/agent-src/skills/subagent-orchestration/prompts/do-competitively.md +29 -0
  122. package/dist/agent-src/skills/subagent-orchestration/prompts/do-in-parallel.md +29 -0
  123. package/dist/agent-src/skills/subagent-orchestration/prompts/do-in-steps.md +29 -0
  124. package/dist/agent-src/skills/subagent-orchestration/prompts/do-in-worktrees.md +29 -0
  125. package/dist/agent-src/skills/subagent-orchestration/prompts/judge-with-debate.md +29 -0
  126. package/dist/agent-src/skills/systematic-debugging/SKILL.md +2 -2
  127. package/dist/agent-src/skills/tailwind-engineer/SKILL.md +2 -3
  128. package/dist/agent-src/skills/token-optimizer/SKILL.md +4 -4
  129. package/dist/agent-src/skills/verify-repair-loop/SKILL.md +4 -0
  130. package/dist/agent-src/skills/worktree-lifecycle/SKILL.md +2 -3
  131. package/dist/agent-src/templates/AGENTS.md +1 -1
  132. package/dist/agent-src/templates/agents/.gitattributes.fragment +25 -6
  133. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  134. package/dist/agent-src/templates/command.md +3 -3
  135. package/dist/agent-src/templates/github-workflows/secret-scan.yml +65 -0
  136. package/dist/agent-src/templates/persona.md +2 -2
  137. package/dist/agent-src/templates/rule.md +2 -2
  138. package/dist/agent-src/templates/scripts/telemetry/engagement.ts +77 -0
  139. package/dist/agent-src/templates/scripts/telemetry_record.ts +33 -1
  140. package/dist/cli/commands/doctorShell.js +20 -0
  141. package/dist/cli/commands/doctorShell.js.map +1 -1
  142. package/dist/cli/commands/rtkDetect.js +58 -0
  143. package/dist/cli/commands/rtkDetect.js.map +1 -0
  144. package/dist/cli/configRoot.js +112 -0
  145. package/dist/cli/configRoot.js.map +1 -0
  146. package/dist/cli/configRoot.test.js +97 -0
  147. package/dist/cli/configRoot.test.js.map +1 -0
  148. package/dist/cli/firstRunNotice.js +70 -0
  149. package/dist/cli/firstRunNotice.js.map +1 -0
  150. package/dist/cli/help.js +4 -1
  151. package/dist/cli/help.js.map +1 -1
  152. package/dist/cli/main.js +54 -5
  153. package/dist/cli/main.js.map +1 -1
  154. package/dist/cli/registry.js +8 -1
  155. package/dist/cli/registry.js.map +1 -1
  156. package/dist/discovery/deprecation-report.md +1 -1
  157. package/dist/discovery/discovery-manifest.json +502 -101
  158. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  159. package/dist/discovery/discovery-manifest.summary.md +6 -4
  160. package/dist/discovery/orphan-report.md +1 -1
  161. package/dist/discovery/packs.json +95 -8
  162. package/dist/discovery/trust-report.md +11 -11
  163. package/dist/discovery/workspaces.json +36 -7
  164. package/dist/hooks/dispatch.js +19475 -0
  165. package/dist/install/agentSwitchDetection.js +75 -0
  166. package/dist/install/agentSwitchDetection.js.map +1 -0
  167. package/dist/install/agentSwitchProfile.js +117 -0
  168. package/dist/install/agentSwitchProfile.js.map +1 -0
  169. package/dist/install/atomic.js +1 -1
  170. package/dist/install/detect.js +1 -1
  171. package/dist/install/install.mjs +791 -486
  172. package/dist/install/rtkDetection.js +213 -0
  173. package/dist/install/rtkDetection.js.map +1 -0
  174. package/dist/install/rule_scope.js +2 -1
  175. package/dist/install/rule_scope.js.map +1 -1
  176. package/dist/install/types.js +2 -2
  177. package/dist/install/wizard-plan.js +1 -1
  178. package/dist/install/wizardDismissals.js +58 -0
  179. package/dist/install/wizardDismissals.js.map +1 -0
  180. package/dist/mcp/awesome-mcp-servers.row.md +1 -1
  181. package/dist/mcp/mcp-cloudflare-catalogue.json +1 -1
  182. package/dist/mcp/registry-manifest.json +15 -4
  183. package/dist/mcp/server.json +20 -0
  184. package/dist/mcp/server.mjs +44292 -0
  185. package/dist/router.json +1 -1
  186. package/dist/scripts/condense.js +14 -7
  187. package/dist/scripts/condense.js.map +1 -1
  188. package/dist/server/app.js +12 -0
  189. package/dist/server/app.js.map +1 -1
  190. package/dist/server/io/sharedWriteCheck.js +101 -0
  191. package/dist/server/io/sharedWriteCheck.js.map +1 -0
  192. package/dist/server/routes/ping.js +32 -0
  193. package/dist/server/routes/ping.js.map +1 -1
  194. package/dist/server/routes/settings.js +21 -4
  195. package/dist/server/routes/settings.js.map +1 -1
  196. package/dist/server/routes/userMd.js +21 -4
  197. package/dist/server/routes/userMd.js.map +1 -1
  198. package/dist/server/routes/wizard.js +68 -25
  199. package/dist/server/routes/wizard.js.map +1 -1
  200. package/dist/server/schemas/settings.js +12 -2
  201. package/dist/server/schemas/settings.js.map +1 -1
  202. package/dist/server/serverInfo.js +6 -2
  203. package/dist/server/serverInfo.js.map +1 -1
  204. package/dist/server/token.js +11 -4
  205. package/dist/server/token.js.map +1 -1
  206. package/dist/server/writeRoot.js +15 -1
  207. package/dist/server/writeRoot.js.map +1 -1
  208. package/dist/shared/capabilities.js +33 -0
  209. package/dist/shared/capabilities.js.map +1 -0
  210. package/dist/shared/capabilities.test.js +39 -0
  211. package/dist/shared/capabilities.test.js.map +1 -0
  212. package/dist/ui/assets/index-BpSQt5vm.js +40 -0
  213. package/dist/ui/assets/index-BpSQt5vm.js.map +1 -0
  214. package/dist/ui/assets/index-jSfMW8_t.css +1 -0
  215. package/dist/ui/index.html +15 -6
  216. package/docs/MIGRATION.md +16 -0
  217. package/docs/guidelines/component-oriented-and-oop-development.md +4 -2
  218. package/package.json +22 -9
  219. package/src/agent-src/templates/AGENTS.md +1 -1
  220. package/src/agent-src/templates/scripts/telemetry/engagement.ts +77 -0
  221. package/src/agent-src/templates/scripts/telemetry_record.ts +33 -1
  222. package/src/config/agent-settings.template.yml +94 -13
  223. package/src/config/discovery/packs.yml +22 -0
  224. package/src/config/discovery/workspaces.yml +1 -1
  225. package/src/config/evaluator-budgets.json +47 -0
  226. package/src/config/hook-latency-budget.json +20 -0
  227. package/src/config/reach-channels.yml +217 -0
  228. package/src/config/reach-prescriptions-intake.yml +200 -0
  229. package/src/install/agentSwitchDetection.ts +90 -0
  230. package/src/install/agentSwitchProfile.ts +131 -0
  231. package/src/install/atomic.ts +1 -1
  232. package/src/install/detect.ts +1 -1
  233. package/src/install/rtkDetection.ts +274 -0
  234. package/src/install/rule_scope.ts +9 -2
  235. package/src/install/types.ts +2 -2
  236. package/src/install/wizard-plan.ts +1 -1
  237. package/src/install/wizardDismissals.ts +60 -0
  238. package/src/scripts/_cli/cmd_doctor.ts +62 -1
  239. package/src/scripts/_cli/cmd_memory_get.ts +197 -0
  240. package/src/scripts/_cli/cmd_refresh.ts +30 -0
  241. package/src/scripts/_dispatch.bash +96 -0
  242. package/src/scripts/_lib/auto_dispatch.corpus.test.ts +64 -1
  243. package/src/scripts/_lib/auto_dispatch.ts +76 -0
  244. package/src/scripts/_lib/detect_target_license.ts +714 -0
  245. package/src/scripts/_lib/exec_evidence.ts +251 -0
  246. package/src/scripts/_lib/fixtures/secret-detector/negatives.txt +15 -0
  247. package/src/scripts/_lib/fixtures/secret-detector/positives.txt +15 -0
  248. package/src/scripts/_lib/install_drift.ts +194 -0
  249. package/src/scripts/_lib/kernel_rules.ts +46 -0
  250. package/src/scripts/_lib/memory_fts_index.ts +390 -0
  251. package/src/scripts/_lib/orchestration_record.ts +91 -2
  252. package/src/scripts/_lib/persistence/adapter_raw_sql.ts +443 -0
  253. package/src/scripts/_lib/persistence/detect_audit_coverage.ts +423 -0
  254. package/src/scripts/_lib/persistence/detect_bounded_reads.ts +154 -0
  255. package/src/scripts/_lib/persistence/detect_index_parity.ts +576 -0
  256. package/src/scripts/_lib/persistence/detect_n1_eloquent.ts +226 -0
  257. package/src/scripts/_lib/persistence/detect_offload.ts +441 -0
  258. package/src/scripts/_lib/persistence/detect_prisma_growth.ts +74 -0
  259. package/src/scripts/_lib/persistence/offload_catalog.ts +73 -0
  260. package/src/scripts/_lib/persistence/types.ts +109 -0
  261. package/src/scripts/_lib/reddit_thread_parse.ts +598 -0
  262. package/src/scripts/_lib/risk_paths.ts +160 -0
  263. package/src/scripts/_lib/rtk_allowlist.ts +44 -0
  264. package/src/scripts/_lib/secret_detector.test.ts +108 -0
  265. package/src/scripts/_lib/secret_detector.ts +328 -0
  266. package/src/scripts/_lib/secret_detector_adversarial.test.ts +116 -0
  267. package/src/scripts/_lib/spawn_env.ts +7 -0
  268. package/src/scripts/_lib/sqlite_guard.ts +191 -0
  269. package/src/scripts/_lib/subagent_spawn.ts +53 -0
  270. package/src/scripts/_lib/tool_probe.ts +359 -0
  271. package/src/scripts/_lib/worker_budget.ts +107 -0
  272. package/src/scripts/adr/regenerate_index.ts +81 -6
  273. package/src/scripts/ai_council/blind_review.ts +0 -0
  274. package/src/scripts/ai_council/config.ts +12 -6
  275. package/src/scripts/ai_council/orchestrator.ts +73 -3
  276. package/src/scripts/ai_team/review_gate.ts +8 -10
  277. package/src/scripts/ai_team/team_dispatch.ts +48 -0
  278. package/src/scripts/audit_adr_coverage.ts +33 -0
  279. package/src/scripts/audit_initial_context.ts +1 -1
  280. package/src/scripts/bench_cross_source_eval.ts +400 -0
  281. package/src/scripts/bench_honesty_score.ts +1093 -0
  282. package/src/scripts/bench_hook_latency.ts +218 -0
  283. package/src/scripts/build_mcp_catalog.ts +275 -0
  284. package/src/scripts/build_mcp_registry_manifest.ts +46 -0
  285. package/src/scripts/build_proof.ts +207 -0
  286. package/src/scripts/chat_history.ts +8 -5
  287. package/src/scripts/check_adr_frontmatter.ts +195 -0
  288. package/src/scripts/check_artefact_count_messaging.ts +4 -0
  289. package/src/scripts/check_backstop_debt.ts +210 -0
  290. package/src/scripts/check_bundle_path_leakage.ts +343 -0
  291. package/src/scripts/check_claims.ts +188 -8
  292. package/src/scripts/check_comparison.ts +12 -0
  293. package/src/scripts/check_enforcement_coverage.ts +592 -0
  294. package/src/scripts/check_evaluator_budgets.ts +99 -0
  295. package/src/scripts/check_kernel_rule_bundle.ts +16 -12
  296. package/src/scripts/check_knowledge_sharing.ts +12 -1
  297. package/src/scripts/check_no_external_sources.ts +2 -2
  298. package/src/scripts/check_reach_channels.ts +407 -0
  299. package/src/scripts/check_reach_staleness.ts +364 -0
  300. package/src/scripts/check_secret_leak.test.ts +47 -0
  301. package/src/scripts/check_secret_leak.ts +290 -0
  302. package/src/scripts/check_source_pointer_freshness.ts +28 -3
  303. package/src/scripts/code_graph/build.ts +0 -0
  304. package/src/scripts/code_graph/cli.ts +379 -0
  305. package/src/scripts/code_graph/detect.ts +186 -0
  306. package/src/scripts/code_graph/extract.ts +386 -0
  307. package/src/scripts/code_graph/intent.ts +45 -0
  308. package/src/scripts/code_graph/loader.ts +123 -0
  309. package/src/scripts/code_graph/query.ts +290 -0
  310. package/src/scripts/code_graph/sanitize.ts +30 -0
  311. package/src/scripts/code_graph/sqlite_store.ts +174 -0
  312. package/src/scripts/code_graph/types.ts +83 -0
  313. package/src/scripts/code_graph/validate.ts +63 -0
  314. package/src/scripts/condense.ts +14 -6
  315. package/src/scripts/context_hygiene_hook.ts +8 -5
  316. package/src/scripts/council_cli.ts +126 -12
  317. package/src/scripts/detect_target_license.ts +203 -0
  318. package/src/scripts/evaluator_umbrella.sh +145 -0
  319. package/src/scripts/external_sources_denylist.json +8 -4
  320. package/src/scripts/first_run_gate_hook.ts +9 -5
  321. package/src/scripts/generate_subagent_floor.ts +194 -0
  322. package/src/scripts/hermetic-install.sh +3 -3
  323. package/src/scripts/hook_manifest.yaml +65 -16
  324. package/src/scripts/hooks/block_kernel_rule_writes.ts +212 -0
  325. package/src/scripts/hooks/block_no_verify.ts +9 -9
  326. package/src/scripts/hooks/code_graph_nudge_hook.ts +191 -0
  327. package/src/scripts/hooks/concern_registry.ts +75 -0
  328. package/src/scripts/hooks/design_slop_hook.ts +8 -5
  329. package/src/scripts/hooks/dispatch_entry.ts +37 -0
  330. package/src/scripts/hooks/dispatch_hook.ts +176 -3
  331. package/src/scripts/hooks/hook_stdin.ts +42 -0
  332. package/src/scripts/hooks/rtk_wrap_hook.ts +26 -12
  333. package/src/scripts/hot_context_hook.ts +7 -6
  334. package/src/scripts/injection_scan_hook.ts +9 -1
  335. package/src/scripts/install +6 -6
  336. package/src/scripts/install-hooks.sh +4 -4
  337. package/src/scripts/install.sh +5 -4
  338. package/src/scripts/install.ts +264 -23
  339. package/src/scripts/iron_law_sha.ts +3 -12
  340. package/src/scripts/learning_sidecar.ts +0 -0
  341. package/src/scripts/lint_budget_ownership.ts +89 -0
  342. package/src/scripts/lint_command_routing.ts +35 -5
  343. package/src/scripts/lint_command_verbs.ts +42 -9
  344. package/src/scripts/lint_consumer_internal_refs.ts +211 -0
  345. package/src/scripts/lint_discovery_vocabulary.ts +2 -0
  346. package/src/scripts/lint_documented_commands.ts +670 -0
  347. package/src/scripts/lint_framework_leakage.ts +17 -3
  348. package/src/scripts/lint_framework_leakage_allowlist.json +32 -0
  349. package/src/scripts/lint_governed_writes.ts +335 -0
  350. package/src/scripts/lint_hidden_unicode.ts +6 -0
  351. package/src/scripts/lint_mcp_registry_manifest.ts +26 -1
  352. package/src/scripts/lint_memory_tripwire.ts +186 -0
  353. package/src/scripts/lint_override_kernel_guard.ts +267 -0
  354. package/src/scripts/lint_persistence.ts +171 -0
  355. package/src/scripts/lint_pre_migration_refs.ts +106 -0
  356. package/src/scripts/lint_provenance.ts +547 -0
  357. package/src/scripts/lint_provenance_vocabulary.ts +437 -0
  358. package/src/scripts/lint_spawn_payload.ts +283 -0
  359. package/src/scripts/lint_store_boundary.ts +152 -0
  360. package/src/scripts/lint_versioned_cache.ts +7 -1
  361. package/src/scripts/mcp_server/__main__.ts +7 -2
  362. package/src/scripts/mcp_server/catalog.ts +23 -1
  363. package/src/scripts/mcp_server/consumer_tool_catalog.json +563 -193
  364. package/src/scripts/mcp_server/prompts.ts +6 -0
  365. package/src/scripts/mcp_server/tool_catalog_source.ts +332 -0
  366. package/src/scripts/mcp_server/tools.ts +56 -5
  367. package/src/scripts/mcp_telemetry_query.ts +2 -33
  368. package/src/scripts/mcp_telemetry_store.ts +64 -34
  369. package/src/scripts/measure_rule_budget.ts +3 -12
  370. package/src/scripts/memory_learn_hook.ts +126 -0
  371. package/src/scripts/memory_lookup.ts +0 -0
  372. package/src/scripts/memory_replay_24.ts +312 -0
  373. package/src/scripts/memory_report.ts +16 -3
  374. package/src/scripts/memory_signal.ts +48 -0
  375. package/src/scripts/memory_status.ts +6 -0
  376. package/src/scripts/minimal_safe_diff_hook.ts +8 -5
  377. package/src/scripts/onboarding_gate_hook.ts +8 -5
  378. package/src/scripts/orchestration_record.ts +16 -0
  379. package/src/scripts/pr_url_reminder_hook.ts +8 -1
  380. package/src/scripts/prepack-check.mjs +17 -0
  381. package/src/scripts/prepack_lifecycle_check.d.mts +8 -0
  382. package/src/scripts/prepack_lifecycle_check.mjs +82 -0
  383. package/src/scripts/profile_staleness_hook.ts +8 -7
  384. package/src/scripts/reach_doctor.ts +1651 -0
  385. package/src/scripts/release.ts +24 -3
  386. package/src/scripts/report_install_drift.ts +109 -0
  387. package/src/scripts/risk_escalation_shadow.ts +160 -0
  388. package/src/scripts/roadmap_progress_hook.ts +8 -5
  389. package/src/scripts/schemas/agent-settings.schema.json +23 -0
  390. package/src/scripts/schemas/license-policy.schema.json +89 -0
  391. package/src/scripts/schemas/provenance-borrow.schema.json +46 -0
  392. package/src/scripts/schemas/reach-channels.schema.json +134 -0
  393. package/src/scripts/schemas/reach-doctor-payload.schema.json +220 -0
  394. package/src/scripts/schemas/rule.schema.json +20 -0
  395. package/src/scripts/self_review_gate.test.ts +173 -1
  396. package/src/scripts/self_review_gate.ts +155 -15
  397. package/src/scripts/session_canary_hook.ts +182 -0
  398. package/src/scripts/skill_linter.ts +55 -0
  399. package/src/scripts/smoke_quickstart.ts +2 -2
  400. package/src/scripts/surface_probe_hook.ts +8 -7
  401. package/src/scripts/sync_gitattributes.ts +310 -0
  402. package/src/scripts/team_review_gate_hook.ts +13 -16
  403. package/src/scripts/validate_reach_prescriptions.ts +751 -0
  404. package/src/scripts/verify_before_complete_hook.ts +8 -5
  405. package/src/scripts/wrapper_freshness_hook.ts +8 -7
  406. package/src/server/schemas/settings.ts +24 -2
  407. package/src/shared/capabilities.test.ts +43 -0
  408. package/src/shared/capabilities.ts +75 -0
  409. package/src/templates/minimal/agents-overrides-readme.md +20 -0
  410. package/dist/ui/assets/index-BPFMZWUs.css +0 -1
  411. package/dist/ui/assets/index-BiEZiZ31.js +0 -40
  412. package/dist/ui/assets/index-BiEZiZ31.js.map +0 -1
  413. package/docs/CLAIMS.md +0 -261
  414. package/docs/DISTRIBUTION_CHECKLIST.md +0 -170
  415. package/docs/RELEASE_STORY_TEMPLATE.md +0 -37
  416. package/docs/SKILL_CENSUS.md +0 -352
  417. package/docs/adrs/cost/0001-hard-stop-hook.md +0 -114
  418. package/docs/adrs/cost/README.md +0 -9
  419. package/docs/adrs/memory/0001-consumer-side-snapshot.md +0 -119
  420. package/docs/adrs/memory/README.md +0 -10
  421. package/docs/adrs/router/0001-three-tier-routing.md +0 -119
  422. package/docs/adrs/router/README.md +0 -9
  423. package/docs/adrs/schema/0001-json-schema-frontmatter.md +0 -102
  424. package/docs/adrs/schema/README.md +0 -9
  425. package/docs/adrs/smoke/0001-per-tier-smoke-scripts.md +0 -99
  426. package/docs/adrs/smoke/README.md +0 -9
  427. package/docs/adrs/telegraph/0001-default-off-until-bench.md +0 -93
  428. package/docs/adrs/telegraph/README.md +0 -9
  429. package/docs/announcements/2026-05-non-dev-launch.md +0 -79
  430. package/docs/announcements/2026-07-honest-cost-sweep-launch.md +0 -84
  431. package/docs/anti-reskin-gate.md +0 -60
  432. package/docs/architecture/augment-projection.md +0 -70
  433. package/docs/architecture/claude-bundle.md +0 -77
  434. package/docs/architecture/current-onboard-baseline.md +0 -126
  435. package/docs/architecture/current-safety-behavior.md +0 -137
  436. package/docs/architecture/multi-tool-projection.md +0 -125
  437. package/docs/architecture/setup-vs-settings-shared-surface.md +0 -114
  438. package/docs/architecture/source-projection.md +0 -85
  439. package/docs/architecture.md +0 -390
  440. package/docs/archive/CHANGELOG-6.0.0-overview.md +0 -953
  441. package/docs/archive/CHANGELOG-7.0.0.md +0 -419
  442. package/docs/archive/CHANGELOG-pre-2.11.0.md +0 -141
  443. package/docs/archive/CHANGELOG-pre-2.15.0.md +0 -244
  444. package/docs/archive/CHANGELOG-pre-2.16.0.md +0 -48
  445. package/docs/archive/CHANGELOG-pre-2.17.0.md +0 -63
  446. package/docs/archive/CHANGELOG-pre-2.2.0.md +0 -2138
  447. package/docs/archive/CHANGELOG-pre-2.20.0.md +0 -159
  448. package/docs/archive/CHANGELOG-pre-2.25.0.md +0 -191
  449. package/docs/archive/CHANGELOG-pre-2.7.0.md +0 -185
  450. package/docs/archive/CHANGELOG-pre-3.0.0.md +0 -130
  451. package/docs/archive/CHANGELOG-pre-3.1.0.md +0 -167
  452. package/docs/archive/CHANGELOG-pre-3.2.0.md +0 -268
  453. package/docs/archive/CHANGELOG-pre-4.0.0.md +0 -80
  454. package/docs/archive/CHANGELOG-pre-4.5.0.md +0 -289
  455. package/docs/archive/CHANGELOG-pre-5.4.0.md +0 -260
  456. package/docs/archive/CHANGELOG-pre-5.9.0.md +0 -270
  457. package/docs/archive/CHANGELOG-pre-6.0.0.md +0 -473
  458. package/docs/archive/CHANGELOG-pre-7.0.0.md +0 -126
  459. package/docs/archive/CHANGELOG-pre-8.0.0.md +0 -301
  460. package/docs/archive/CHANGELOG-pre-8.1.0.md +0 -316
  461. package/docs/archive/CHANGELOG-pre-8.12.0.md +0 -304
  462. package/docs/archive/CHANGELOG-pre-8.9.0.md +0 -306
  463. package/docs/archive/CHANGELOG-pre-9.2.0.md +0 -276
  464. package/docs/artefact-census.md +0 -71
  465. package/docs/benchmark.md +0 -648
  466. package/docs/benchmark.pinned.yml +0 -31
  467. package/docs/benchmarks.md +0 -85
  468. package/docs/capability-matrix.md +0 -33
  469. package/docs/case-studies/_template.md +0 -60
  470. package/docs/case-studies/frontend-design-positioning.md +0 -86
  471. package/docs/catalog.md +0 -721
  472. package/docs/command-flows.md +0 -272
  473. package/docs/command-naming-audit.md +0 -60
  474. package/docs/comparison.yaml +0 -45
  475. package/docs/contracts/CHANGELOG-conventions.md +0 -149
  476. package/docs/contracts/STABILITY.md +0 -188
  477. package/docs/contracts/adoption-signal-floor.md +0 -127
  478. package/docs/contracts/adr-architectural-consensus-mechanism.md +0 -68
  479. package/docs/contracts/adr-chat-history-split.md +0 -140
  480. package/docs/contracts/adr-command-suggestion.md +0 -144
  481. package/docs/contracts/adr-forecast-construction-shape.md +0 -90
  482. package/docs/contracts/adr-gtm-context-spine.md +0 -116
  483. package/docs/contracts/adr-implement-ticket-runtime.md +0 -121
  484. package/docs/contracts/adr-install-user-type-axis.md +0 -107
  485. package/docs/contracts/adr-layout.md +0 -107
  486. package/docs/contracts/adr-level-6-productization.md +0 -145
  487. package/docs/contracts/adr-mcp-runtime.md +0 -128
  488. package/docs/contracts/adr-product-ui-track.md +0 -381
  489. package/docs/contracts/adr-prompt-driven-execution.md +0 -186
  490. package/docs/contracts/adr-settings-sync-engine.md +0 -128
  491. package/docs/contracts/adr-user-types-axis.md +0 -127
  492. package/docs/contracts/adr-wing4-context-spine.md +0 -126
  493. package/docs/contracts/agent-user-schema.md +0 -170
  494. package/docs/contracts/agents-layout.md +0 -148
  495. package/docs/contracts/agents-md-tech-stack.md +0 -75
  496. package/docs/contracts/ai-council-config.md +0 -829
  497. package/docs/contracts/ai-team-config.md +0 -224
  498. package/docs/contracts/analysis-memory-loop.md +0 -149
  499. package/docs/contracts/at-rest-encryption.md +0 -191
  500. package/docs/contracts/audit-log-v1.md +0 -150
  501. package/docs/contracts/auto-orchestration-v1.md +0 -70
  502. package/docs/contracts/benchmark-ab-contract.md +0 -106
  503. package/docs/contracts/benchmark-corpus-spec.md +0 -125
  504. package/docs/contracts/benchmark-report-schema.md +0 -113
  505. package/docs/contracts/branch-protection-policy.md +0 -139
  506. package/docs/contracts/brand-token-consumption.md +0 -74
  507. package/docs/contracts/capability-boundary.md +0 -69
  508. package/docs/contracts/capability-packs.md +0 -217
  509. package/docs/contracts/ci-cost-budget.md +0 -111
  510. package/docs/contracts/ci-green-floor.md +0 -141
  511. package/docs/contracts/command-category-governance.md +0 -84
  512. package/docs/contracts/command-clusters.md +0 -399
  513. package/docs/contracts/command-surface-tiers.md +0 -176
  514. package/docs/contracts/command-taxonomy.md +0 -137
  515. package/docs/contracts/condensation-default-kill-criterion.md +0 -116
  516. package/docs/contracts/config-presets.md +0 -144
  517. package/docs/contracts/conformance.md +0 -84
  518. package/docs/contracts/consumer-bridge.md +0 -73
  519. package/docs/contracts/context-paths.md +0 -101
  520. package/docs/contracts/context-spine.md +0 -179
  521. package/docs/contracts/cost-dashboard.md +0 -143
  522. package/docs/contracts/cost-enforcement.md +0 -134
  523. package/docs/contracts/cost-profile-defaults.md +0 -110
  524. package/docs/contracts/cost-summary-schema.md +0 -107
  525. package/docs/contracts/creative-pack-boundary.md +0 -63
  526. package/docs/contracts/cross-repo-retrieval.md +0 -64
  527. package/docs/contracts/cross-wing-handoff.md +0 -134
  528. package/docs/contracts/daily-workspace.md +0 -147
  529. package/docs/contracts/decision-engine-gates.md +0 -120
  530. package/docs/contracts/decision-trace-v1.md +0 -177
  531. package/docs/contracts/design-artifact-lifecycle.md +0 -93
  532. package/docs/contracts/design-artifact-verification.md +0 -153
  533. package/docs/contracts/discovery-manifest.md +0 -209
  534. package/docs/contracts/discovery-manifest.schema.json +0 -254
  535. package/docs/contracts/evidence-based-pruning.md +0 -102
  536. package/docs/contracts/explain-modes.md +0 -187
  537. package/docs/contracts/explain-trace.schema.json +0 -144
  538. package/docs/contracts/file-ownership-matrix.json +0 -13941
  539. package/docs/contracts/file-ownership-matrix.md +0 -135
  540. package/docs/contracts/frontmatter-contract.md +0 -140
  541. package/docs/contracts/ghostwriter-schema.md +0 -337
  542. package/docs/contracts/governance-enforcement-projection.md +0 -159
  543. package/docs/contracts/gui-wizard.md +0 -350
  544. package/docs/contracts/harness-expectations.md +0 -128
  545. package/docs/contracts/hook-architecture-v1.md +0 -325
  546. package/docs/contracts/host-agent-protocol.md +0 -110
  547. package/docs/contracts/implement-ticket-flow.md +0 -625
  548. package/docs/contracts/init-telemetry.md +0 -132
  549. package/docs/contracts/injected-block-authenticity-model.md +0 -66
  550. package/docs/contracts/install-layout.md +0 -249
  551. package/docs/contracts/install-scopes.md +0 -82
  552. package/docs/contracts/installed-tools-lockfile.md +0 -144
  553. package/docs/contracts/installer-agent-mode.md +0 -137
  554. package/docs/contracts/iron-law-overrides.txt +0 -26
  555. package/docs/contracts/kernel-membership.md +0 -339
  556. package/docs/contracts/linear-ai-rules-inclusion.md +0 -143
  557. package/docs/contracts/linear-ai-three-layers.md +0 -130
  558. package/docs/contracts/linter-structural-model.md +0 -181
  559. package/docs/contracts/load-context-budget-model.md +0 -259
  560. package/docs/contracts/load-context-schema.md +0 -220
  561. package/docs/contracts/local-analytics.md +0 -160
  562. package/docs/contracts/local-knowledge-ingestion.md +0 -96
  563. package/docs/contracts/local-server-api.md +0 -134
  564. package/docs/contracts/low-impact-corpus-format.md +0 -95
  565. package/docs/contracts/mcp-beta-criteria.md +0 -130
  566. package/docs/contracts/mcp-cloud-scope.md +0 -355
  567. package/docs/contracts/mcp-discovery-phase-notice.md +0 -60
  568. package/docs/contracts/mcp-phase-1-scope.md +0 -272
  569. package/docs/contracts/mcp-registry-manifest.schema.json +0 -129
  570. package/docs/contracts/mcp-tool-inventory.md +0 -64
  571. package/docs/contracts/mcp-tool-stub-envelope.md +0 -78
  572. package/docs/contracts/measurement-baseline.md +0 -103
  573. package/docs/contracts/memory-visibility-v1.md +0 -160
  574. package/docs/contracts/mental-models.md +0 -336
  575. package/docs/contracts/migrate-command.md +0 -233
  576. package/docs/contracts/multi-tool-projection-fidelity.md +0 -134
  577. package/docs/contracts/namespace.md +0 -125
  578. package/docs/contracts/no-runtime-boundary.md +0 -61
  579. package/docs/contracts/one-off-script-lifecycle.md +0 -110
  580. package/docs/contracts/orchestration-dsl-v1.md +0 -153
  581. package/docs/contracts/package-self-orientation.md +0 -163
  582. package/docs/contracts/pilot/agent-authority.md +0 -24
  583. package/docs/contracts/pilot/direct-answers.md +0 -70
  584. package/docs/contracts/pilot/language-and-tone.md +0 -63
  585. package/docs/contracts/plain-language-surface.md +0 -117
  586. package/docs/contracts/prelaunch-diagnostics.md +0 -151
  587. package/docs/contracts/profile-system.md +0 -167
  588. package/docs/contracts/reasoning-discipline-protocol.md +0 -83
  589. package/docs/contracts/release-pr-gating.md +0 -151
  590. package/docs/contracts/release-sizing.md +0 -107
  591. package/docs/contracts/release-trunk-sync.md +0 -105
  592. package/docs/contracts/review-lens-schema.md +0 -64
  593. package/docs/contracts/roadmap-complexity-standard.md +0 -138
  594. package/docs/contracts/role-experience.md +0 -125
  595. package/docs/contracts/router-blending.md +0 -71
  596. package/docs/contracts/rule-classification.md +0 -171
  597. package/docs/contracts/rule-interactions.md +0 -132
  598. package/docs/contracts/rule-interactions.yml +0 -260
  599. package/docs/contracts/rule-priority-hierarchy.md +0 -88
  600. package/docs/contracts/rule-router.md +0 -287
  601. package/docs/contracts/safety-model.md +0 -129
  602. package/docs/contracts/session-profile-overlay.md +0 -157
  603. package/docs/contracts/settings-api.md +0 -264
  604. package/docs/contracts/settings-gui-agent-mode.schema.json +0 -128
  605. package/docs/contracts/settings-sync-yaml-subset.md +0 -139
  606. package/docs/contracts/skill-bundled-assets.md +0 -62
  607. package/docs/contracts/skill-discovery.md +0 -80
  608. package/docs/contracts/skill-distribution-channels.md +0 -66
  609. package/docs/contracts/skill-domains.md +0 -144
  610. package/docs/contracts/skill-dry-run.md +0 -47
  611. package/docs/contracts/skill-family-map.yml +0 -915
  612. package/docs/contracts/smoke-contracts.md +0 -144
  613. package/docs/contracts/subagent-boundary.md +0 -59
  614. package/docs/contracts/surface-agent-contracts.md +0 -153
  615. package/docs/contracts/surface-matrix.md +0 -108
  616. package/docs/contracts/surface-tiers.md +0 -81
  617. package/docs/contracts/telegraph-telemetry.md +0 -83
  618. package/docs/contracts/ticket-bundle-format.md +0 -233
  619. package/docs/contracts/tier-3-contrib-plugin.md +0 -137
  620. package/docs/contracts/trust-and-safety.md +0 -144
  621. package/docs/contracts/ui-stack-extension.md +0 -237
  622. package/docs/contracts/ui-track-flow.md +0 -329
  623. package/docs/contracts/universal-skills.md +0 -91
  624. package/docs/contracts/user-type-schema.md +0 -146
  625. package/docs/contracts/value-dashboard-spec.md +0 -378
  626. package/docs/contracts/value-report-schema.md +0 -168
  627. package/docs/contracts/workflow-packs.md +0 -121
  628. package/docs/contracts/workspace-boundary.md +0 -84
  629. package/docs/contracts/workspace-documents.md +0 -144
  630. package/docs/contracts/write-engine.md +0 -182
  631. package/docs/cookbook.md +0 -152
  632. package/docs/customization.md +0 -685
  633. package/docs/decisions/ADR-001-kernel-swap-deferred.md +0 -109
  634. package/docs/decisions/ADR-002-kernel-bucket-overrides.md +0 -135
  635. package/docs/decisions/ADR-003-flat-cluster-subs-and-colon-syntax.md +0 -137
  636. package/docs/decisions/ADR-004-rule-governance-pruning.md +0 -240
  637. package/docs/decisions/ADR-005-subagent-worktrees.md +0 -120
  638. package/docs/decisions/ADR-006-skill-tools-python-pilot.md +0 -114
  639. package/docs/decisions/ADR-007-agent-discovery-scopes.md +0 -371
  640. package/docs/decisions/ADR-008-installed-tools-manifest.md +0 -160
  641. package/docs/decisions/ADR-009-event4u-namespace.md +0 -188
  642. package/docs/decisions/ADR-010-profile-pack-preset-boundary.md +0 -168
  643. package/docs/decisions/ADR-011-domain-pack-readiness.md +0 -213
  644. package/docs/decisions/ADR-012-typescript-cli-shell.md +0 -162
  645. package/docs/decisions/ADR-013-discovery-frontmatter-contract.md +0 -342
  646. package/docs/decisions/ADR-014-gui-framework-choice.md +0 -136
  647. package/docs/decisions/ADR-015-discovery-manifest-contract.md +0 -146
  648. package/docs/decisions/ADR-016-installer-architecture.md +0 -189
  649. package/docs/decisions/ADR-017-monorepo-physical-layout.md +0 -261
  650. package/docs/decisions/ADR-018-trust-and-safety-layer.md +0 -159
  651. package/docs/decisions/ADR-019-router-json-dist-location.md +0 -124
  652. package/docs/decisions/ADR-020-global-only-consumer-scope.md +0 -213
  653. package/docs/decisions/ADR-021-deployment-shape.md +0 -153
  654. package/docs/decisions/ADR-022-daily-workspace-decomposition.md +0 -140
  655. package/docs/decisions/ADR-023-host-agent-protocol.md +0 -129
  656. package/docs/decisions/ADR-024-workspace-v0-feature-floor.md +0 -126
  657. package/docs/decisions/ADR-025-workspace-chrome.md +0 -119
  658. package/docs/decisions/ADR-026-explain-mode-translation.md +0 -117
  659. package/docs/decisions/ADR-027-changelog-machine-vs-manual.md +0 -129
  660. package/docs/decisions/ADR-028-root-layout.md +0 -147
  661. package/docs/decisions/ADR-029-multi-workspace-deferred.md +0 -122
  662. package/docs/decisions/ADR-030-claude-code-command-projection.md +0 -147
  663. package/docs/decisions/ADR-031-validation-severity-tiers-and-projection-roundtrip.md +0 -97
  664. package/docs/decisions/ADR-032-linked-projects-scope.md +0 -122
  665. package/docs/decisions/ADR-033-distribution-identity-npm-primary.md +0 -81
  666. package/docs/decisions/ADR-034-per-skill-model-recommendation-transport.md +0 -63
  667. package/docs/decisions/ADR-035-model-capability-tiers.md +0 -104
  668. package/docs/decisions/ADR-036-global-install-browser-wizard-handoff.md +0 -106
  669. package/docs/decisions/ADR-037-cost-profile-untangle.md +0 -117
  670. package/docs/decisions/ADR-038-canonical-settings-path.md +0 -96
  671. package/docs/decisions/ADR-039-claude-skills-untracked.md +0 -139
  672. package/docs/decisions/ADR-040-execution-model-projection-time-filtering.md +0 -244
  673. package/docs/decisions/ADR-041-controlled-command-verbs.md +0 -133
  674. package/docs/decisions/ADR-042-runtime-resolver-decision-gate.md +0 -113
  675. package/docs/decisions/ADR-043-monorepo-collapse-to-src-domains.md +0 -128
  676. package/docs/decisions/ADR-044-command-naming-scheme-hyphenated.md +0 -250
  677. package/docs/decisions/ADR-045-src-source-layout-and-profiles-as-views.md +0 -111
  678. package/docs/decisions/ADR-046-thin-command-principle.md +0 -93
  679. package/docs/decisions/ADR-047-framework-neutral-stack-adaptive-commands.md +0 -94
  680. package/docs/decisions/ADR-048-command-justification-rule.md +0 -106
  681. package/docs/decisions/ADR-049-configuration-trust-boundary.md +0 -132
  682. package/docs/decisions/ADR-050-workspace-vs-package-root-boundary.md +0 -121
  683. package/docs/decisions/ADR-051-uncondensed-source-container-relocation.md +0 -114
  684. package/docs/decisions/ADR-052-packages-removal-and-pack-home-migration.md +0 -86
  685. package/docs/decisions/ADR-053-agents-namespace-dual-role-resolution.md +0 -132
  686. package/docs/decisions/ADR-054-rule-adherence-decay-triggered-restate.md +0 -143
  687. package/docs/decisions/ADR-055-flow-layer-data-model.md +0 -235
  688. package/docs/decisions/ADR-056-unvalidated-video-adapters-disposition.md +0 -124
  689. package/docs/decisions/ADR-057-consolidation-evidence-gate-outcomes.md +0 -135
  690. package/docs/decisions/ADR-058-condensed-output-relocation-to-dist.md +0 -94
  691. package/docs/decisions/ADR-059-render-resume-filesystem-as-state.md +0 -161
  692. package/docs/decisions/ADR-060-comfyui-sandbox-model.md +0 -154
  693. package/docs/decisions/ADR-061-corpus-grounding-layer.md +0 -230
  694. package/docs/decisions/ADR-062-encrypt-at-rest-store-architecture.md +0 -121
  695. package/docs/decisions/ADR-063-append-jsonl-encryption-deferred.md +0 -83
  696. package/docs/decisions/ADR-064-append-jsonl-per-record-encryption.md +0 -113
  697. package/docs/decisions/ADR-065-tier3-inbox-handoff-v0.md +0 -86
  698. package/docs/decisions/ADR-066-skill-body-prerendering.md +0 -93
  699. package/docs/decisions/ADR-067-glama-registry-listing.md +0 -259
  700. package/docs/decisions/ADR-068-host-tier-detection.md +0 -90
  701. package/docs/decisions/ADR-069-prompt-renderer.md +0 -97
  702. package/docs/decisions/ADR-070-tier1-drive-loop.md +0 -94
  703. package/docs/decisions/ADR-071-launch-drive-integration.md +0 -95
  704. package/docs/decisions/ADR-072-codex-gemini-drive-configs.md +0 -90
  705. package/docs/decisions/ADR-073-drive-health-kill-switch.md +0 -81
  706. package/docs/decisions/ADR-074-drive-kill-switch-auto-recovery.md +0 -84
  707. package/docs/decisions/ADR-075-workspace-gui-drive.md +0 -83
  708. package/docs/decisions/ADR-076-workspace-multi-turn.md +0 -92
  709. package/docs/decisions/ADR-077-workspace-followup-gui.md +0 -70
  710. package/docs/decisions/ADR-078-drive-health-panel.md +0 -70
  711. package/docs/decisions/ADR-079-workspace-host-picker.md +0 -81
  712. package/docs/decisions/ADR-080-host-session-expired-410.md +0 -92
  713. package/docs/decisions/ADR-081-drive-health-reset-and-410-affordance.md +0 -71
  714. package/docs/decisions/ADR-082-410-one-click-relaunch.md +0 -58
  715. package/docs/decisions/ADR-083-session-thread-and-arbitrary-continuation.md +0 -85
  716. package/docs/decisions/ADR-084-drive-health-refresh-on-drive.md +0 -52
  717. package/docs/decisions/ADR-085-mcp-stdio-end-user-distribution-shape.md +0 -158
  718. package/docs/decisions/ADR-086-read-only-cross-agent-mcp-discovery-helper.md +0 -171
  719. package/docs/decisions/ADR-087-installer-e2e-test-strategy.md +0 -111
  720. package/docs/decisions/ADR-088-no-external-runtime-federation.md +0 -144
  721. package/docs/decisions/ADR-089-lean-local-plugin-install.md +0 -111
  722. package/docs/decisions/ADR-090-visibility-command-frontmatter-field.md +0 -95
  723. package/docs/decisions/ADR-091-split-meta-capability-packs.md +0 -113
  724. package/docs/decisions/ADR-092-defer-command-tier-alias-removal.md +0 -117
  725. package/docs/decisions/ADR-093-ai-council-config-user-global.md +0 -117
  726. package/docs/decisions/ADR-094-agent-memory-layer-removal.md +0 -94
  727. package/docs/decisions/ADR-095-workspace-boundary-contract.md +0 -108
  728. package/docs/decisions/ADR-096-analysis-workbench.md +0 -110
  729. package/docs/decisions/ADR-097-mission-recipe-privilege-boundary.md +0 -121
  730. package/docs/decisions/ADR-098-evidence-first-structure-discovery.md +0 -154
  731. package/docs/decisions/ADR-099-file-first-pattern-library.md +0 -87
  732. package/docs/decisions/ADR-100-global-knowledge-card-sharing.md +0 -140
  733. package/docs/decisions/ADR-101-ticket-bundle-emission.md +0 -109
  734. package/docs/decisions/ADR-102-ticket-handoff-paste-and-mcp.md +0 -72
  735. package/docs/decisions/ADR-103-global-knowledge-default-off-until-measured.md +0 -92
  736. package/docs/decisions/ADR-104-ai-council-config-global-only.md +0 -119
  737. package/docs/decisions/ADR-105-automatic-subagent-orchestration.md +0 -108
  738. package/docs/decisions/ADR-106-recursive-verification-benchmark-gate.md +0 -126
  739. package/docs/decisions/ADR-107-legal-domain-pack-adoption.md +0 -70
  740. package/docs/decisions/ADR-108-open-source-forever-no-commercial-tier.md +0 -46
  741. package/docs/decisions/ADR-109-subagent-v1-contract.md +0 -246
  742. package/docs/decisions/ADR-110-discipline-profile-resolution-locus.md +0 -110
  743. package/docs/decisions/ADR-111-canonical-glama-listing.md +0 -97
  744. package/docs/decisions/ADR-112-stdio-lite-stays-read-only.md +0 -92
  745. package/docs/decisions/ADR-113-ci-native-release-label-trigger.md +0 -201
  746. package/docs/decisions/ADR-114-commit-policy-iron-law-override.md +0 -85
  747. package/docs/decisions/ADR-115-command-cluster-consolidation-phase-4.md +0 -91
  748. package/docs/decisions/ADR-116-memory-tripwire-activation-path.md +0 -144
  749. package/docs/decisions/ADR-117-subagents-auto-default-on.md +0 -89
  750. package/docs/decisions/ADR-118-loop-engineering-boundaries.md +0 -162
  751. package/docs/decisions/ADR-119-global-knowledge-default-on.md +0 -104
  752. package/docs/decisions/ADR-120-council-chairman-mode.md +0 -70
  753. package/docs/decisions/ADR-121-knowledge-sensitivity-classes.md +0 -90
  754. package/docs/decisions/ADR-122-adversarial-verification-council.md +0 -166
  755. package/docs/decisions/ADR-123-runtime-security-scope-and-spawn-hardening.md +0 -142
  756. package/docs/decisions/ADR-200-python-to-typescript-migration.md +0 -203
  757. package/docs/decisions/ADR-rule-kernel-and-router.md +0 -133
  758. package/docs/decisions/INDEX.md +0 -136
  759. package/docs/deploy/connector-setup.md +0 -129
  760. package/docs/deploy/env-vars.md +0 -70
  761. package/docs/deploy/policy-cookbook.md +0 -130
  762. package/docs/deploy/quickstart.md +0 -112
  763. package/docs/deploy/small-team-recipe.md +0 -148
  764. package/docs/deploy/team-deployment-posture.md +0 -111
  765. package/docs/design/adversarial-council-eval.md +0 -106
  766. package/docs/design/council-vs-solo-baseline.md +0 -92
  767. package/docs/design/cross-model-parity-eval.md +0 -82
  768. package/docs/design/length-neutral-judge-rerun.md +0 -92
  769. package/docs/design/utilization-window-criteria.md +0 -51
  770. package/docs/development.md +0 -230
  771. package/docs/distribution/awesome-list-submission.md +0 -46
  772. package/docs/distribution/consumer-matrix.md +0 -96
  773. package/docs/distribution/launch-story-draft.md +0 -58
  774. package/docs/distribution/mcp-submission-checklist.md +0 -95
  775. package/docs/distribution/public-install-smoke.md +0 -68
  776. package/docs/distribution/registries.md +0 -117
  777. package/docs/distribution/registry-submissions.md +0 -85
  778. package/docs/distribution/telemetry-privacy.md +0 -128
  779. package/docs/distribution/telemetry-schema.md +0 -174
  780. package/docs/distribution/topics-equivalents-decay-policy.md +0 -51
  781. package/docs/end-to-end-walkthroughs.md +0 -165
  782. package/docs/enforcement-by-host.md +0 -44
  783. package/docs/examples/agent-user.example.md +0 -22
  784. package/docs/experiences/agency.md +0 -49
  785. package/docs/experiences/content_creator.md +0 -49
  786. package/docs/experiences/developer.md +0 -49
  787. package/docs/experiences/finance.md +0 -50
  788. package/docs/experiences/founder.md +0 -49
  789. package/docs/experiences/ops.md +0 -49
  790. package/docs/featured-commands.md +0 -27
  791. package/docs/featured-skills.md +0 -95
  792. package/docs/flows.md +0 -67
  793. package/docs/getting-started-by-role.md +0 -190
  794. package/docs/getting-started-laravel.md +0 -72
  795. package/docs/getting-started-local-stdio.md +0 -77
  796. package/docs/getting-started.md +0 -254
  797. package/docs/github-topics.md +0 -93
  798. package/docs/governance-advantage.md +0 -72
  799. package/docs/governance.md +0 -96
  800. package/docs/guides/cross-repo-linked-projects.md +0 -93
  801. package/docs/guides/cross-repo-retrieval.md +0 -61
  802. package/docs/guides/frontend-design-corpus-refresh.md +0 -83
  803. package/docs/guides/local-analytics.md +0 -125
  804. package/docs/guides/local-knowledge.md +0 -127
  805. package/docs/guides/skill-discovery.md +0 -71
  806. package/docs/guides/skill-preview.md +0 -71
  807. package/docs/hook-payload-capture.md +0 -221
  808. package/docs/install-friction-report.md +0 -66
  809. package/docs/installation.md +0 -959
  810. package/docs/maintainers/branch-protection.md +0 -105
  811. package/docs/maintainers/dev-mode.md +0 -106
  812. package/docs/maintainers/optional-media-deps.md +0 -50
  813. package/docs/maintainers/system-map.md +0 -85
  814. package/docs/mcp-registries.md +0 -94
  815. package/docs/mcp-server.md +0 -175
  816. package/docs/mcp.md +0 -147
  817. package/docs/media/proof-demo.cast +0 -14
  818. package/docs/media/proof-demo.gif +0 -0
  819. package/docs/migration/consumer-template-consumption-model.md +0 -145
  820. package/docs/migration/divergences/README.md +0 -55
  821. package/docs/migration/divergences/_template.md +0 -50
  822. package/docs/migration/divergences/bench-stats-float-precision.md +0 -72
  823. package/docs/migration/divergences/mcp-telemetry-node-sqlite.md +0 -61
  824. package/docs/migration/divergences/pack-mcp-content-gzip-body.md +0 -53
  825. package/docs/migration/divergences/src-scripts-build_cloud_bundle.md +0 -63
  826. package/docs/migration/divergences/src-scripts-check_memory.md +0 -91
  827. package/docs/migration/divergences/src-scripts-inventory_abstraction_budget.md +0 -65
  828. package/docs/migration/divergences/src-scripts-lint_marketplace.md +0 -57
  829. package/docs/migration/divergences/src-scripts-lint_mcp_registry_manifest.md +0 -70
  830. package/docs/migration/divergences/src-scripts-spotcheck_thin_root.md +0 -60
  831. package/docs/migration/divergences/src-scripts-validate_agent_settings.md +0 -58
  832. package/docs/migration/node-floor.md +0 -86
  833. package/docs/migration/v1-to-v2.md +0 -156
  834. package/docs/migration/yaml-roundtrip-spike.md +0 -163
  835. package/docs/migrations/commands-1.15.0.md +0 -117
  836. package/docs/parity/bench-external.json +0 -58
  837. package/docs/parity/bench.json +0 -41
  838. package/docs/parity/command-frontmatter.md +0 -60
  839. package/docs/parity/external-runtime.md +0 -46
  840. package/docs/personas.md +0 -178
  841. package/docs/positioning-evidence.md +0 -86
  842. package/docs/profiles.md +0 -108
  843. package/docs/proof.md +0 -176
  844. package/docs/quality.md +0 -98
  845. package/docs/readme-split-plan.md +0 -102
  846. package/docs/recruits/_template.md +0 -81
  847. package/docs/release-runbook.md +0 -141
  848. package/docs/role-experiences.md +0 -19
  849. package/docs/safety.md +0 -30
  850. package/docs/second-brain-scope.md +0 -116
  851. package/docs/self-review-gate.md +0 -65
  852. package/docs/setup/enterprise-and-offline.md +0 -201
  853. package/docs/setup/mcp-client-config.md +0 -358
  854. package/docs/setup/mcp-cloud-endpoints.md +0 -116
  855. package/docs/setup/mcp-cloud-registry-listing.md +0 -99
  856. package/docs/setup/mcp-cloud-setup.md +0 -183
  857. package/docs/setup/mcp-r2-bootstrap.md +0 -82
  858. package/docs/setup/mcp-server-docker.md +0 -101
  859. package/docs/setup/per-ide/aider.md +0 -48
  860. package/docs/setup/per-ide/antigravity.md +0 -68
  861. package/docs/setup/per-ide/augment.md +0 -89
  862. package/docs/setup/per-ide/claude-code.md +0 -97
  863. package/docs/setup/per-ide/claude-desktop.md +0 -207
  864. package/docs/setup/per-ide/cline.md +0 -43
  865. package/docs/setup/per-ide/codebuddy.md +0 -63
  866. package/docs/setup/per-ide/codex.md +0 -46
  867. package/docs/setup/per-ide/continue.md +0 -68
  868. package/docs/setup/per-ide/copilot.md +0 -80
  869. package/docs/setup/per-ide/cursor.md +0 -125
  870. package/docs/setup/per-ide/droid.md +0 -65
  871. package/docs/setup/per-ide/gemini-cli.md +0 -45
  872. package/docs/setup/per-ide/jetbrains.md +0 -76
  873. package/docs/setup/per-ide/kilocode.md +0 -66
  874. package/docs/setup/per-ide/kiro.md +0 -72
  875. package/docs/setup/per-ide/opencode.md +0 -62
  876. package/docs/setup/per-ide/qoder.md +0 -63
  877. package/docs/setup/per-ide/roocode.md +0 -68
  878. package/docs/setup/per-ide/trae.md +0 -63
  879. package/docs/setup/per-ide/warp.md +0 -63
  880. package/docs/setup/per-ide/windsurf.md +0 -109
  881. package/docs/setup/per-ide/zed.md +0 -73
  882. package/docs/showcase.md +0 -209
  883. package/docs/skill-duplication-findings.md +0 -91
  884. package/docs/skills-catalog.md +0 -265
  885. package/docs/skills-taxonomy.md +0 -90
  886. package/docs/spawn-site-policy.md +0 -72
  887. package/docs/succession.md +0 -80
  888. package/docs/threat-model.md +0 -29
  889. package/docs/troubleshooting.md +0 -155
  890. package/docs/ui-track-mental-model.md +0 -121
  891. package/docs/us-vs-the-category.md +0 -38
  892. package/docs/value.md +0 -86
  893. package/docs/walkthroughs/assets/workspace-role-grid.png +0 -0
  894. package/docs/walkthroughs/assets/workspace-session-started.png +0 -0
  895. package/docs/walkthroughs/assets/workspace-task-picker.png +0 -0
  896. package/docs/walkthroughs/daily-workspace-a11y.md +0 -87
  897. package/docs/walkthroughs/daily-workspace.md +0 -127
  898. package/docs/wedge/production-validator/README.md +0 -81
  899. package/docs/wedge/production-validator/first-run-check.sh +0 -42
  900. package/docs/wedge/production-validator/production-validator.md +0 -83
  901. package/docs/wizard.md +0 -173
@@ -4,10 +4,13 @@
4
4
  * (token-saving Phase 3).
5
5
  *
6
6
  * Converts RTK from advisory to DETERMINISTIC: instead of trusting a
7
- * self-reported flag, this hook keys off a live `which rtk` probe. When rtk is
8
- * actually installed AND the agent is about to run a single verbose CLI command
9
- * that is NOT completeness-critical, it surfaces (warn) "re-run wrapped with
10
- * rtk" so the 60–90% output-token saving is captured. It NEVER blocks (the v1
7
+ * self-reported flag, this hook keys off a live probe — PATH presence PLUS an
8
+ * `rtk gain` identity check (the binary name collides with the unrelated Rust
9
+ * Type Kit; see src/install/rtkDetection.ts). When a VERIFIED Rust Token
10
+ * Killer is installed AND the agent is about to run a single verbose CLI
11
+ * command that is NOT completeness-critical, it surfaces (warn) "re-run
12
+ * wrapped with rtk" so the upstream-reported 60–90% output-token saving is
13
+ * captured. It NEVER blocks (the v1
11
14
  * dispatcher contract is allow/block/warn — there is no transparent
12
15
  * `updatedInput` rewrite — and, like `injection_scan_hook`, warn preserves
13
16
  * agency). It NEVER fires when rtk is absent (silent plain-command fallback,
@@ -35,6 +38,8 @@ import {
35
38
  _split_subcommands,
36
39
  _is_env_assignment,
37
40
  } from "./block_no_verify.js";
41
+ import { readHookStdin } from "./hook_stdin.js";
42
+ import { detectRtkCached } from "../../install/rtkDetection.js";
38
43
 
39
44
  const SETTINGS_FILE = ".agent-settings.yml";
40
45
  const EXIT_ALLOW = 0;
@@ -171,12 +176,7 @@ export function classify(command: string): Eligibility {
171
176
  }
172
177
 
173
178
  function _readStdin(): string {
174
- try {
175
- if (process.stdin.isTTY) return "";
176
- return fs.readFileSync(0, "utf-8");
177
- } catch {
178
- return "";
179
- }
179
+ return readHookStdin();
180
180
  }
181
181
 
182
182
  function _jsonReason(reason: string): string {
@@ -203,8 +203,16 @@ export function main(): number {
203
203
  : ".";
204
204
  if (!_enabled(root)) return EXIT_ALLOW;
205
205
 
206
- // Deterministic gate: the live probe, NOT a self-reported flag.
206
+ // Deterministic gate: the live probe, NOT a self-reported flag — and an
207
+ // IDENTITY probe, not bare presence: the `rtk` binary name collides with
208
+ // the unrelated Rust Type Kit, and nudging the agent to wrap commands with
209
+ // the wrong tool would be a second wrong answer. Only a verified Rust
210
+ // Token Killer activates the nudge; `unverified` (broken/slow probe) does
211
+ // NOT — fail closed for behavior, fail open for the command itself.
212
+ // Identity is cached user-globally keyed on the binary's path+mtime+size,
213
+ // so the `rtk gain` probe runs once per installed binary, not per command.
207
214
  if (!rtk_available()) return EXIT_ALLOW;
215
+ if (detectRtkCached().identity !== "token-killer") return EXIT_ALLOW;
208
216
 
209
217
  const command = _extract_command(envelope);
210
218
  if (!command) return EXIT_ALLOW;
@@ -213,14 +221,20 @@ export function main(): number {
213
221
  if (!verdict.eligible) return EXIT_ALLOW;
214
222
 
215
223
  const reason =
216
- `rtk is installed and wraps verbose CLI output (60–90% fewer output tokens). ` +
224
+ `rtk is installed and wraps verbose CLI output (upstream reports 60–90% fewer output tokens). ` +
217
225
  `Re-run wrapped: \`rtk ${command.trim()}\`. ` +
218
226
  `(Skip for completeness-critical output like \`git diff\`.)`;
219
227
  process.stdout.write(`${_jsonReason(reason)}\n`);
220
228
  return EXIT_WARN;
221
229
  }
222
230
 
231
+ // Bundle-safety: never auto-run when inlined into an esbuild bundle, where
232
+ // every module shares the bundle's `import.meta.url` (see cmd_migrate.ts).
233
+ declare const __AGENT_CONFIG_BUNDLE__: boolean | undefined;
223
234
  function _isCliEntry(): boolean {
235
+ if (typeof __AGENT_CONFIG_BUNDLE__ !== 'undefined' && __AGENT_CONFIG_BUNDLE__) {
236
+ return false;
237
+ }
224
238
  if (process.argv[1] === undefined) {
225
239
  return false;
226
240
  }
@@ -37,6 +37,7 @@ import { fileURLToPath } from 'node:url';
37
37
 
38
38
  import { hardenedSpawnEnv } from './_lib/spawn_env.js';
39
39
  import { redact_low_impact_entry } from './ai_council/redact_low_impact_entry.js';
40
+ import { readHookStdin } from './hooks/hook_stdin.js';
40
41
 
41
42
  export const HOT_CONTEXT_REL = path.join('agents', 'runtime', 'state', 'hot-context.md');
42
43
 
@@ -350,11 +351,7 @@ function _session_index_block_or_null(root: string): string | null {
350
351
  // ---------------------------------------------------------------------
351
352
 
352
353
  function _read_stdin(): string {
353
- try {
354
- return fs.readFileSync(0, 'utf-8');
355
- } catch {
356
- return '';
357
- }
354
+ return readHookStdin();
358
355
  }
359
356
 
360
357
  export function main(): number {
@@ -414,6 +411,10 @@ export function main(): number {
414
411
  return 0; // never blocks
415
412
  }
416
413
 
417
- if (fileURLToPath(import.meta.url) === path.resolve(process.argv[1] ?? '')) {
414
+ // Bundle-safety: never auto-run when inlined into an esbuild bundle, where
415
+ // every module shares the bundle's `import.meta.url` (see cmd_migrate.ts).
416
+ declare const __AGENT_CONFIG_BUNDLE__: boolean | undefined;
417
+ const _bundled = typeof __AGENT_CONFIG_BUNDLE__ !== 'undefined' && __AGENT_CONFIG_BUNDLE__;
418
+ if (!_bundled && fileURLToPath(import.meta.url) === path.resolve(process.argv[1] ?? '')) {
418
419
  process.exit(main());
419
420
  }
@@ -30,6 +30,8 @@ import fs from "node:fs";
30
30
  import path from "node:path";
31
31
  import { fileURLToPath, pathToFileURL } from "node:url";
32
32
 
33
+ import { readHookStdin } from "./hooks/hook_stdin.js";
34
+
33
35
  const SETTINGS_FILE = ".agent-settings.yml";
34
36
  const EXIT_ALLOW = 0;
35
37
  const EXIT_WARN = 2;
@@ -274,10 +276,16 @@ function _pyTruthy(v: JsonValue | undefined): boolean {
274
276
  }
275
277
 
276
278
  function _readStdin(): string {
277
- return fs.readFileSync(0, "utf-8");
279
+ return readHookStdin();
278
280
  }
279
281
 
282
+ // Bundle-safety: never auto-run when inlined into an esbuild bundle, where
283
+ // every module shares the bundle's `import.meta.url` (see cmd_migrate.ts).
284
+ declare const __AGENT_CONFIG_BUNDLE__: boolean | undefined;
280
285
  function _isCliEntry(): boolean {
286
+ if (typeof __AGENT_CONFIG_BUNDLE__ !== 'undefined' && __AGENT_CONFIG_BUNDLE__) {
287
+ return false;
288
+ }
281
289
  if (process.argv[1] === undefined) {
282
290
  return false;
283
291
  }
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # Orchestrates the two stages:
5
5
  # 1. scripts/install.sh — payload sync (copy rules, symlink skills/commands)
6
- # 2. scripts/install.py — bridge files (.agent-settings, VSCode/Augment JSONs)
6
+ # 2. scripts/install.ts — bridge files (.agent-settings, VSCode/Augment JSONs)
7
7
  #
8
8
  # This is the only installer a consumer needs to invoke. The underlying
9
9
  # scripts remain callable directly for advanced use; see their --help.
@@ -35,7 +35,7 @@
35
35
  # --verbose Detailed payload sync output
36
36
  # --quiet Suppress non-error output
37
37
  # --skip-sync Skip payload sync (install.sh)
38
- # --skip-bridges Skip bridge files (install.py)
38
+ # --skip-bridges Skip bridge files (install.ts)
39
39
  # --global Install to user-scope paths (~/.claude/, ~/.cursor/, …)
40
40
  # instead of project-locally. Implies --skip-sync (the
41
41
  # payload sync stage is project-only). See ADR-007.
@@ -100,7 +100,7 @@ FLEET_CONFIG=""
100
100
  USER_TYPE=""
101
101
  NO_UI=false
102
102
 
103
- # Single source of truth for valid tool IDs (also referenced by install.sh / install.py).
103
+ # Single source of truth for valid tool IDs (also referenced by install.sh / install.ts).
104
104
  VALID_TOOLS="claude-code claude-desktop cursor windsurf cline gemini-cli copilot augment aider codex roocode continue kilocode zed jetbrains kiro all"
105
105
 
106
106
  show_help() {
@@ -214,9 +214,9 @@ fi
214
214
  # (and its --scope project / --scope=project / SCOPE shorthand) is the
215
215
  # maintainer-only escape hatch behind AGENT_CONFIG_DEV_MODE=1. Without
216
216
  # the env flag we refuse here so the bash orchestrator fails fast with
217
- # a directive error pointing at the maintainer doc — install.py's
217
+ # a directive error pointing at the maintainer doc — install.ts's
218
218
  # Python-side _enforce_consumer_global_only still backstops the same
219
- # check for direct python3 scripts/install.py invocations.
219
+ # check for legacy direct python3 installer invocations (retired install.py).
220
220
  if [[ "${SCOPE:-}" == "project" && "${AGENT_CONFIG_DEV_MODE:-}" != "1" ]]; then
221
221
  err "--scope=project is reserved for maintainers (ADR-020 — consumer installs are global-only). Set AGENT_CONFIG_DEV_MODE=1 to opt in. See docs/maintainers/dev-mode.md."
222
222
  exit 1
@@ -296,7 +296,7 @@ prompt_tools() {
296
296
  # When an interactive global install will hand off to the browser wizard,
297
297
  # the wizard is the single tool-selection surface — skip the terminal
298
298
  # picker so it does not pre-empt (and, via TOOLS_EXPLICIT, suppress) the
299
- # GUI. Mirrors install.py::_wizard_should_launch (the --no-ui flag is
299
+ # GUI. Mirrors install.ts wizard_should_launch (the --no-ui flag is
300
300
  # handled here too — it suppresses both the wizard and the picker).
301
301
  # Headless paths (no TTY / CI / AGENT_CONFIG_NO_UI) still get the picker.
302
302
  wizard_will_handle_tools=false
@@ -91,7 +91,7 @@ fi
91
91
  EOF
92
92
 
93
93
  chmod +x "$HOOKS_DIR/pre-push"
94
- echo "✅ Pre-push hook installed."
94
+ echo "✅ Pre-push hook installed." >&2
95
95
 
96
96
  # Pre-commit: marketplace consistency -----------------------------------------
97
97
  #
@@ -184,7 +184,7 @@ fi
184
184
  EOF
185
185
 
186
186
  chmod +x "$HOOKS_DIR/pre-commit"
187
- echo "✅ Pre-commit hook installed."
187
+ echo "✅ Pre-commit hook installed." >&2
188
188
 
189
189
  # Chat-history bridge hooks ----------------------------------------------------
190
190
  #
@@ -218,7 +218,7 @@ fi
218
218
  # command above is guarded by "|| true", so the implicit exit is 0.
219
219
  EOF
220
220
  chmod +x "$HOOKS_DIR/$name"
221
- echo "✅ $name hook installed."
221
+ echo "✅ $name hook installed." >&2
222
222
  }
223
223
 
224
224
  write_chat_history_hook "post-commit" "git:post-commit"
@@ -275,4 +275,4 @@ EOF
275
275
 
276
276
  append_auto_sync_block "post-merge" "1"
277
277
  append_auto_sync_block "post-checkout" "3"
278
- echo "✅ Auto-sync block appended to post-merge / post-checkout hooks."
278
+ echo "✅ Auto-sync block appended to post-merge / post-checkout hooks." >&2
@@ -8,7 +8,8 @@
8
8
  # Creates tool-specific directories for Claude Code, Cursor, Cline, Windsurf, Gemini.
9
9
  #
10
10
  # Does NOT render .agent-settings.yml or bridge JSONs — that is the job of
11
- # scripts/install.py. The primary entry point scripts/install orchestrates both.
11
+ # scripts/install.ts (run via the bundled dist/install/install.mjs). The
12
+ # primary entry point scripts/install orchestrates both.
12
13
  # Running this script on its own installs the payload only.
13
14
  #
14
15
  # Usage:
@@ -50,7 +51,7 @@ SKIP_GITIGNORE=false
50
51
  # that require both channels.
51
52
  LEGACY_BOTH=false
52
53
  # When true, skip payload sync entirely and only install the project-local
53
- # `./agent-config` wrapper (Step 7 Phase 2). The bridge stage (install.py)
54
+ # `./agent-config` wrapper (Step 7 Phase 2). The bridge stage (install.ts)
54
55
  # handles the .agent-settings.yml stub + nested-install guard.
55
56
  MINIMAL=false
56
57
  # Comma-separated tool IDs (default: all). Set by --tools or the
@@ -91,7 +92,7 @@ parse_args() {
91
92
  --skip-gitignore) SKIP_GITIGNORE=true; shift ;;
92
93
  --tools) TOOLS="$2"; shift 2 ;;
93
94
  --tools=*) TOOLS="${1#*=}"; shift ;;
94
- # --user-type is consumed by install.py (settings persistence).
95
+ # --user-type is consumed by install.ts (settings persistence).
95
96
  # Accepted here so direct `bash scripts/install.sh --user-type=...`
96
97
  # invocations from the `install` wrapper / standalone users do not
97
98
  # trip the "Unknown argument" guard. Value is intentionally unused
@@ -1171,7 +1172,7 @@ main() {
1171
1172
 
1172
1173
  # Minimal-init short-circuit (Step 7 Phase 2): skip every payload-sync
1173
1174
  # stage and only install the project-local `./agent-config` wrapper.
1174
- # The bridge stage (install.py) handles the .agent-settings.yml stub
1175
+ # The bridge stage (install.ts) handles the .agent-settings.yml stub
1175
1176
  # + nested-install guard. No .augment/, no AGENTS.md, no symlinks.
1176
1177
  if $MINIMAL; then
1177
1178
  if ! $QUIET; then
@@ -77,6 +77,7 @@ import * as installed_lock from './_lib/installed_lock.js';
77
77
  import * as surface_tiers from './_lib/surface_tiers.js';
78
78
  import * as global_deploy_inventory from './_lib/global_deploy_inventory.js';
79
79
  import * as installed_tools from './_lib/installed_tools.js';
80
+ import { collect_drift, format_drift_report } from './_lib/install_drift.js';
80
81
  import * as user_global_paths from './_lib/user_global_paths.js';
81
82
  import * as claude_desktop_bundler from './_lib/claude_desktop_bundler.js';
82
83
  import * as claude_settings_hooks from './_lib/claude_settings_hooks.js';
@@ -2892,7 +2893,11 @@ export function _apply_claude_flat_command_wrappers(
2892
2893
  current_files.delete(`commands/${fname}`);
2893
2894
  reserved.push(slug);
2894
2895
  }
2895
- // Tier-0/1 visible command slugs from the locked discovery manifest.
2896
+ // Visible command slugs from the locked discovery manifest. `visibility`
2897
+ // is the source of truth (ADR-090/092); the integer `tier` stays only as
2898
+ // the fallback for a manifest published before `visibility` was emitted,
2899
+ // so an older locked manifest keeps resolving. Neither key present → the
2900
+ // artefact is skipped rather than silently treated as visible.
2896
2901
  const eligible = new Set<string>(_CLAUDE_FLAT_WRAPPER_EXTRA);
2897
2902
  try {
2898
2903
  const manifest = JSON.parse(
@@ -2900,7 +2905,13 @@ export function _apply_claude_flat_command_wrappers(
2900
2905
  ) as { artefacts?: Array<{ category?: string; slug?: string; tier?: number; visibility?: string }> };
2901
2906
  for (const a of manifest.artefacts ?? []) {
2902
2907
  if (a.category !== 'command' || typeof a.slug !== 'string') continue;
2903
- if ((a.tier ?? 2) <= 1 && a.visibility !== 'internal') eligible.add(a.slug);
2908
+ const visible =
2909
+ typeof a.visibility === 'string'
2910
+ ? a.visibility !== 'internal'
2911
+ : typeof a.tier === 'number'
2912
+ ? a.tier <= 1
2913
+ : false;
2914
+ if (visible) eligible.add(a.slug);
2904
2915
  }
2905
2916
  } catch {
2906
2917
  // No manifest → wrap only the hardcoded essentials.
@@ -3136,34 +3147,36 @@ function _verify_deploy_targets(anchor: string, plan: ReadonlyArray<readonly [st
3136
3147
  }
3137
3148
 
3138
3149
  /**
3139
- * Remove lab-tier skills/commands from a completed deploy (core-only).
3150
+ * Remove skills/commands matching `is_pruned` from a completed deploy.
3140
3151
  *
3141
- * road-to-install-contract-stability Phase 2 Step 2. Skills are pruned by
3142
- * whole directory (tier decided by the skill's `SKILL.md` frontmatter);
3143
- * commands by file (own frontmatter). Rules / personas / contexts / templates
3144
- * are core/shared and left intact. Returns `[pruned_count, adjusted_results]`
3145
- * with the lab paths removed from each tool's `written_paths` so the manifest
3146
- * never records them.
3152
+ * road-to-install-contract-stability Phase 2 Step 2 (generalized in
3153
+ * road-to-credible-install Phase 2 to back both the core-only lab prune and
3154
+ * the scoped-projection pack prune off the same mechanics). Skills are
3155
+ * pruned by whole directory (tier decided by the skill's `SKILL.md`
3156
+ * frontmatter); commands by file (own frontmatter). Rules / personas /
3157
+ * contexts / templates are core/shared and left intact. Returns
3158
+ * `[pruned_count, adjusted_results]` with the pruned paths removed from each
3159
+ * tool's `written_paths` so the manifest never records them.
3147
3160
  */
3148
- function _prune_lab_modules(
3161
+ function _prune_modules_by(
3149
3162
  deploy_results: Record<string, DeployResult>,
3150
- lab_ids: Set<string>,
3163
+ is_pruned: (md_path: string) => boolean,
3151
3164
  ): [number, Record<string, DeployResult>] {
3152
3165
  let pruned = 0;
3153
3166
  const adjusted: Record<string, DeployResult> = {};
3154
3167
  for (const tool_id of Object.keys(deploy_results)) {
3155
3168
  const [written, skipped, status, paths] = deploy_results[tool_id] as DeployResult;
3156
- const lab_skill_dirs = new Set<string>();
3169
+ const pruned_skill_dirs = new Set<string>();
3157
3170
  for (const p of paths) {
3158
3171
  const parts = p.split(path.sep);
3159
3172
  if (parts.includes('skills')) {
3160
3173
  const i = parts.indexOf('skills');
3161
3174
  if (i + 1 < parts.length) {
3162
3175
  const skill_root = parts.slice(0, i + 2).join(path.sep);
3163
- if (!lab_skill_dirs.has(skill_root)) {
3176
+ if (!pruned_skill_dirs.has(skill_root)) {
3164
3177
  const skillmd = path.join(skill_root, 'SKILL.md');
3165
- if (pathExists(skillmd) && surface_tiers.is_lab_artefact(skillmd, lab_ids)) {
3166
- lab_skill_dirs.add(skill_root);
3178
+ if (pathExists(skillmd) && is_pruned(skillmd)) {
3179
+ pruned_skill_dirs.add(skill_root);
3167
3180
  }
3168
3181
  }
3169
3182
  }
@@ -3173,22 +3186,22 @@ function _prune_lab_modules(
3173
3186
  const delete_files: string[] = [];
3174
3187
  for (const p of paths) {
3175
3188
  const parts = p.split(path.sep);
3176
- let is_lab = false;
3189
+ let is_target = false;
3177
3190
  if (parts.includes('skills')) {
3178
3191
  const i = parts.indexOf('skills');
3179
- if (i + 1 < parts.length && lab_skill_dirs.has(parts.slice(0, i + 2).join(path.sep))) {
3180
- is_lab = true;
3192
+ if (i + 1 < parts.length && pruned_skill_dirs.has(parts.slice(0, i + 2).join(path.sep))) {
3193
+ is_target = true;
3181
3194
  }
3182
3195
  } else if (
3183
3196
  parts.includes('commands') &&
3184
3197
  path.extname(p) === '.md' &&
3185
- surface_tiers.is_lab_artefact(p, lab_ids)
3198
+ is_pruned(p)
3186
3199
  ) {
3187
- is_lab = true;
3200
+ is_target = true;
3188
3201
  }
3189
- (is_lab ? delete_files : keep).push(p);
3202
+ (is_target ? delete_files : keep).push(p);
3190
3203
  }
3191
- for (const d of lab_skill_dirs) {
3204
+ for (const d of pruned_skill_dirs) {
3192
3205
  fs.rmSync(d, { recursive: true, force: true });
3193
3206
  }
3194
3207
  for (const p of delete_files) {
@@ -3206,6 +3219,175 @@ function _prune_lab_modules(
3206
3219
  return [pruned, adjusted];
3207
3220
  }
3208
3221
 
3222
+ /**
3223
+ * Remove lab-tier skills/commands from a completed deploy (core-only).
3224
+ *
3225
+ * road-to-install-contract-stability Phase 2 Step 2. Thin wrapper over
3226
+ * `_prune_modules_by` — see that function for the mechanics.
3227
+ */
3228
+ function _prune_lab_modules(
3229
+ deploy_results: Record<string, DeployResult>,
3230
+ lab_ids: Set<string>,
3231
+ ): [number, Record<string, DeployResult>] {
3232
+ return _prune_modules_by(deploy_results, (p) => surface_tiers.is_lab_artefact(p, lab_ids));
3233
+ }
3234
+
3235
+ // --- Scoped-projection prune (road-to-credible-install Phase 2) ----------
3236
+ //
3237
+ // `projection.mode: scoped` narrows a GLOBAL deploy to the active profile's
3238
+ // packs (workspaces `engineering` + `agent-config-maintainer` by default,
3239
+ // unioned with a `runtime.active_packs` overlay, expanded over the packs.yml
3240
+ // `requires` graph). Mirrors the core-only lab prune above — same
3241
+ // `_prune_modules_by` mechanics, a different predicate.
3242
+
3243
+ /** `workspaces` values whose packs are ALWAYS active under `scoped` mode. */
3244
+ const SCOPED_ACTIVE_WORKSPACES: ReadonlySet<string> = new Set(['engineering', 'agent-config-maintainer']);
3245
+
3246
+ interface PackRecord {
3247
+ id: string;
3248
+ workspaces: string[];
3249
+ requires: string[];
3250
+ }
3251
+
3252
+ /**
3253
+ * Parse `src/config/discovery/packs.yml` into `{id, workspaces, requires}`
3254
+ * records. `requires` falls back to the legacy `requires_hint` field name
3255
+ * when `requires` is absent.
3256
+ *
3257
+ * Deliberately THROWS on a missing file or a parse result that is not a
3258
+ * list — an empty active-pack set would be the LEAST safe fallback here
3259
+ * (it would prune every tagged artefact, the opposite of the fail-safe
3260
+ * contract). The caller wraps this in a try/catch that restores the full
3261
+ * tree on any error instead.
3262
+ */
3263
+ function _load_packs_registry(package_root: string): PackRecord[] {
3264
+ const vocab_path = path.join(package_root, 'src', 'config', 'discovery', 'packs.yml');
3265
+ const data = yamlSafeLoad(readText(vocab_path));
3266
+ if (!Array.isArray(data)) {
3267
+ throw new Error(`packs.yml did not parse to a list: ${vocab_path}`);
3268
+ }
3269
+ const out: PackRecord[] = [];
3270
+ for (const entry of data) {
3271
+ if (!_isPlainObject(entry)) continue;
3272
+ const id = entry['id'];
3273
+ if (typeof id !== 'string' || id === '') continue;
3274
+ const workspaces_raw = entry['workspaces'];
3275
+ const workspaces = Array.isArray(workspaces_raw)
3276
+ ? workspaces_raw.filter((w): w is string => typeof w === 'string')
3277
+ : [];
3278
+ const requires_raw = entry['requires'] ?? entry['requires_hint'];
3279
+ const requires = Array.isArray(requires_raw)
3280
+ ? requires_raw.filter((r): r is string => typeof r === 'string')
3281
+ : [];
3282
+ out.push({ id, workspaces, requires });
3283
+ }
3284
+ return out;
3285
+ }
3286
+
3287
+ /**
3288
+ * Active pack id set for `scoped` mode: every pack whose `workspaces`
3289
+ * intersects `SCOPED_ACTIVE_WORKSPACES`, unioned with `runtime_active_packs`,
3290
+ * expanded over the `requires` graph (transitive closure).
3291
+ */
3292
+ function _compute_active_pack_ids(
3293
+ packs: readonly PackRecord[],
3294
+ runtime_active_packs: readonly string[],
3295
+ ): Set<string> {
3296
+ const by_id = new Map<string, PackRecord>();
3297
+ for (const p of packs) by_id.set(p.id, p);
3298
+
3299
+ const active = new Set<string>();
3300
+ for (const p of packs) {
3301
+ if (p.workspaces.some((w) => SCOPED_ACTIVE_WORKSPACES.has(w))) {
3302
+ active.add(p.id);
3303
+ }
3304
+ }
3305
+ for (const id of runtime_active_packs) {
3306
+ active.add(id);
3307
+ }
3308
+
3309
+ let frontier = [...active];
3310
+ while (frontier.length > 0) {
3311
+ const next: string[] = [];
3312
+ for (const id of frontier) {
3313
+ const rec = by_id.get(id);
3314
+ if (rec === undefined) continue;
3315
+ for (const dep of rec.requires) {
3316
+ if (!active.has(dep)) {
3317
+ active.add(dep);
3318
+ next.push(dep);
3319
+ }
3320
+ }
3321
+ }
3322
+ frontier = next;
3323
+ }
3324
+ return active;
3325
+ }
3326
+
3327
+ /**
3328
+ * Read the GLOBAL settings document that governs a global deploy, if one
3329
+ * already exists on disk — the wizard's canonical typed-subdir location
3330
+ * (`<event4u_root>/settings/.agent-settings.yml`, matching
3331
+ * `src/server/routes/settings.ts`'s `SETTINGS_RELATIVE`) first, the legacy
3332
+ * flat root (`<event4u_root>/.agent-settings.yml`) second. Returns `null`
3333
+ * when neither exists — a genuinely fresh machine with no prior settings
3334
+ * artefact of any kind.
3335
+ */
3336
+ function _resolve_global_settings_doc(): Record<string, unknown> | null {
3337
+ const root = user_global_paths.event4u_root();
3338
+ const canonical = path.join(root, 'settings', SETTINGS_FILE);
3339
+ if (pathExists(canonical)) return _load_yaml_doc(canonical);
3340
+ const legacy = path.join(root, SETTINGS_FILE);
3341
+ if (pathExists(legacy)) return _load_yaml_doc(legacy);
3342
+ return null;
3343
+ }
3344
+
3345
+ /**
3346
+ * Resolve the effective `projection.mode` + `runtime.active_packs` overlay
3347
+ * for THIS global install.
3348
+ *
3349
+ * An EXISTING global settings file (any prior install, wizard-written or
3350
+ * hand-edited) is authoritative: a missing `projection.mode` key, an
3351
+ * unreadable file, or an explicit non-`scoped` value ALL resolve to
3352
+ * `legacy-all` — the upgrade-compat contract (an install that never opted in
3353
+ * stays unscoped). Only when NO global settings file exists yet — before the
3354
+ * wizard's `/api/v1/wizard/finish` route has ever written one on this
3355
+ * machine — does resolution fall through to the packaged template's own
3356
+ * default, the value a fresh install is about to receive.
3357
+ */
3358
+ function _resolve_scoped_projection(
3359
+ package_root: string,
3360
+ ): { mode: 'scoped' | 'legacy-all'; active_packs: string[] } {
3361
+ const doc = _resolve_global_settings_doc() ?? _load_default_settings(package_root);
3362
+ const projection = _isPlainObject(doc['projection']) ? (doc['projection'] as Record<string, unknown>) : {};
3363
+ const mode: 'scoped' | 'legacy-all' = projection['mode'] === 'scoped' ? 'scoped' : 'legacy-all';
3364
+ const runtime = _isPlainObject(doc['runtime']) ? (doc['runtime'] as Record<string, unknown>) : {};
3365
+ const active_packs_raw = runtime['active_packs'];
3366
+ const active_packs = Array.isArray(active_packs_raw)
3367
+ ? active_packs_raw.filter((v): v is string => typeof v === 'string')
3368
+ : [];
3369
+ return { mode, active_packs };
3370
+ }
3371
+
3372
+ /**
3373
+ * Prune every skill/command artefact whose `packs:` frontmatter is
3374
+ * non-empty AND has no intersection with `active_ids`. Untagged artefacts
3375
+ * (empty `packs:` frontmatter) are core/shared and always kept.
3376
+ */
3377
+ function _prune_scoped_modules(
3378
+ deploy_results: Record<string, DeployResult>,
3379
+ active_ids: ReadonlySet<string>,
3380
+ ): [number, Record<string, DeployResult>] {
3381
+ return _prune_modules_by(deploy_results, (p) => {
3382
+ const packs = surface_tiers.frontmatter_packs(p);
3383
+ if (packs.size === 0) return false;
3384
+ for (const id of packs) {
3385
+ if (active_ids.has(id)) return false;
3386
+ }
3387
+ return true;
3388
+ });
3389
+ }
3390
+
3209
3391
  function install_global(
3210
3392
  tools: Set<string>,
3211
3393
  force: boolean,
@@ -3283,6 +3465,27 @@ function install_global(
3283
3465
  info(` tools=${merged_tools.join(',')}`);
3284
3466
  }
3285
3467
 
3468
+ // Installer drift report (measurement only, never a gate — see
3469
+ // `_lib/install_drift.ts`). Printed here because this is the only
3470
+ // moment the information is actionable: right before the redeploy below
3471
+ // overwrites whatever the consumer may have locally edited since the
3472
+ // last install. Same project-scoping the manifest update further below
3473
+ // uses (skipped inside the agent-config source repo itself, where the
3474
+ // manifest would be untracked noise).
3475
+ if (
3476
+ project_root !== null &&
3477
+ pathExists(_resolve_settings_read(project_root)) &&
3478
+ !isDir(path.join(project_root, '.agent-src.uncondensed'))
3479
+ ) {
3480
+ const drift = collect_drift(project_root);
3481
+ if (!state.QUIET) {
3482
+ process.stdout.write('\n');
3483
+ for (const line of format_drift_report(drift).replace(/\n$/, '').split('\n')) {
3484
+ info(line);
3485
+ }
3486
+ }
3487
+ }
3488
+
3286
3489
  const package_root = _resolve_package_root_for_global();
3287
3490
  let deploy_results = _deploy_global_content(tools, force, package_root, written);
3288
3491
 
@@ -3303,6 +3506,35 @@ function install_global(
3303
3506
  }
3304
3507
  }
3305
3508
 
3509
+ // Scoped-projection prune (road-to-credible-install Phase 2 default
3510
+ // flip): when the GLOBAL settings governing this install resolve to
3511
+ // `projection.mode: scoped` (fresh installs; an EXISTING install without
3512
+ // the key, or with any other value, stays untouched — see
3513
+ // `_resolve_scoped_projection`), drop every skill/command artefact whose
3514
+ // `packs:` frontmatter carries no intersection with the active pack set.
3515
+ // A failed resolution (corrupt packs.yml, any thrown error) is caught
3516
+ // here and restores the full tree — never a partial or crashed prune.
3517
+ try {
3518
+ const { mode, active_packs } = _resolve_scoped_projection(package_root);
3519
+ if (mode === 'scoped') {
3520
+ const packs_registry = _load_packs_registry(package_root);
3521
+ const active_ids = _compute_active_pack_ids(packs_registry, active_packs);
3522
+ let scoped_pruned: number;
3523
+ [scoped_pruned, deploy_results] = _prune_scoped_modules(deploy_results, active_ids);
3524
+ if (!state.QUIET) {
3525
+ info(
3526
+ `🧹 Scoped install: pruned ${scoped_pruned} non-active-pack artefact(s) ` +
3527
+ `(active packs: ${[...active_ids].sort().join(', ') || '(none)'}). ` +
3528
+ 'Set projection.mode: legacy-all in .agent-settings.yml to restore the full surface.',
3529
+ );
3530
+ }
3531
+ }
3532
+ } catch (e) {
3533
+ if (!state.QUIET) {
3534
+ warn(`Scoped-projection prune failed — restoring full tree (${String(e)}).`);
3535
+ }
3536
+ }
3537
+
3306
3538
  const failed_tools = new Set<string>(
3307
3539
  Object.keys(deploy_results).filter(
3308
3540
  (tool_id) => (deploy_results[tool_id] as DeployResult)[2] === 'deploy_failed',
@@ -4794,5 +5026,14 @@ export {
4794
5026
  ensure_cline_bridge,
4795
5027
  ensure_windsurf_bridge,
4796
5028
  ensure_gemini_bridge,
5029
+ // road-to-credible-install Phase 2: exported for the scoped-projection
5030
+ // prune unit tests.
5031
+ _prune_modules_by,
5032
+ _prune_lab_modules,
5033
+ _prune_scoped_modules,
5034
+ _load_packs_registry,
5035
+ _compute_active_pack_ids,
5036
+ _resolve_global_settings_doc,
5037
+ _resolve_scoped_projection,
4797
5038
  };
4798
- export type { Options };
5039
+ export type { Options, PackRecord, DeployResult };
@@ -26,6 +26,7 @@ import * as path from 'node:path';
26
26
  import { fileURLToPath, pathToFileURL } from 'node:url';
27
27
 
28
28
  import { artefact_roots } from './_lib/agent_src.js';
29
+ import { KERNEL_RULE_IDS } from './_lib/kernel_rules.js';
29
30
 
30
31
  const _HERE = fileURLToPath(import.meta.url);
31
32
 
@@ -60,18 +61,8 @@ function _isFile(p: string): boolean {
60
61
  }
61
62
  }
62
63
 
63
- // Locked kernel set — kept in sync with measure_rule_budget.KERNEL_RULES.
64
- const KERNEL_RULES: readonly string[] = [
65
- 'agent-authority',
66
- 'ask-when-uncertain',
67
- 'commit-policy',
68
- 'direct-answers',
69
- 'language-and-tone',
70
- 'no-cheap-questions',
71
- 'non-destructive-by-default',
72
- 'scope-control',
73
- 'verify-before-complete',
74
- ];
64
+ // Locked kernel set — single-sourced in _lib/kernel_rules.ts.
65
+ const KERNEL_RULES: readonly string[] = KERNEL_RULE_IDS;
75
66
 
76
67
  // Python: re.compile(r"```(?:[^\n]*\n)([\s\S]*?)```")
77
68
  const _FENCE_RE = /```(?:[^\n]*\n)([\s\S]*?)```/g;
Binary file