@event4u/agent-config 9.8.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 (817) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +278 -298
  3. package/CONTRIBUTING.md +23 -7
  4. package/MIGRATION.md +20 -0
  5. package/README.md +55 -9
  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/fix/portability.md +2 -2
  12. package/dist/agent-src/commands/fix/pr-comments-loop.md +136 -0
  13. package/dist/agent-src/commands/fix/refs.md +2 -2
  14. package/dist/agent-src/commands/fix/route.md +4 -3
  15. package/dist/agent-src/commands/fix.md +9 -6
  16. package/dist/agent-src/commands/ghostwriter.md +1 -1
  17. package/dist/agent-src/commands/image.md +1 -1
  18. package/dist/agent-src/commands/optimize/augmentignore.md +1 -1
  19. package/dist/agent-src/commands/optimize/skills.md +2 -2
  20. package/dist/agent-src/commands/post-as.md +1 -1
  21. package/dist/agent-src/commands/research.md +1 -1
  22. package/dist/agent-src/commands/roadmap/ai-council.md +1 -1
  23. package/dist/agent-src/commands/security-audit-config.md +1 -1
  24. package/dist/agent-src/commands/team/delegate.md +4 -0
  25. package/dist/agent-src/commands/video.md +1 -1
  26. package/dist/agent-src/contexts/authority/kernel-rule-edits.md +1 -1
  27. package/dist/agent-src/contexts/contracts/emergency-triage-block.md +2 -2
  28. package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +48 -2
  29. package/dist/agent-src/contexts/execution/orchestration-telemetry.md +10 -0
  30. package/dist/agent-src/contexts/execution/subagent-modes-detail.md +109 -8
  31. package/dist/agent-src/contexts/execution/subagent-response-contract.md +20 -0
  32. package/dist/agent-src/contexts/execution/subagent-spawn-contract.md +53 -3
  33. package/dist/agent-src/rules/code-provenance.md +112 -0
  34. package/dist/agent-src/rules/external-code-graph-interop.md +4 -4
  35. package/dist/agent-src/rules/history-discipline.md +80 -0
  36. package/dist/agent-src/rules/no-roadmap-references.md +1 -1
  37. package/dist/agent-src/rules/php-coding.md +1 -0
  38. package/dist/agent-src/rules/reviewer-awareness.md +1 -0
  39. package/dist/agent-src/rules/roadmap-ci-steps-policy.md +1 -0
  40. package/dist/agent-src/rules/roadmap-progress-sync.md +7 -0
  41. package/dist/agent-src/rules/scale-discipline.md +92 -0
  42. package/dist/agent-src/rules/security-sensitive-stop.md +10 -0
  43. package/dist/agent-src/rules/session-canary.md +77 -0
  44. package/dist/agent-src/rules/token-optimizer-maintenance.md +1 -1
  45. package/dist/agent-src/rules/tool-safety.md +3 -1
  46. package/dist/agent-src/rules/untrusted-input-defense.md +10 -0
  47. package/dist/agent-src/skills/agent-security-review/SKILL.md +1 -1
  48. package/dist/agent-src/skills/code-intelligence/SKILL.md +17 -14
  49. package/dist/agent-src/skills/condense-memory/SKILL.md +1 -1
  50. package/dist/agent-src/skills/corpus-grounding/SKILL.md +0 -3
  51. package/dist/agent-src/skills/description-assist/SKILL.md +1 -1
  52. package/dist/agent-src/skills/design-review/SKILL.md +5 -6
  53. package/dist/agent-src/skills/design-tokens/SKILL.md +0 -1
  54. package/dist/agent-src/skills/history-design/SKILL.md +101 -0
  55. package/dist/agent-src/skills/history-design/evals/triggers.json +17 -0
  56. package/dist/agent-src/skills/humanizer/SKILL.md +3 -3
  57. package/dist/agent-src/skills/image-editing/SKILL.md +1 -1
  58. package/dist/agent-src/skills/image-generation/SKILL.md +2 -1
  59. package/dist/agent-src/skills/image-provider-routing/SKILL.md +2 -2
  60. package/dist/agent-src/skills/launch-readiness/SKILL.md +1 -1
  61. package/dist/agent-src/skills/license-compliance-audit/SKILL.md +161 -0
  62. package/dist/agent-src/skills/license-compliance-audit/evals/triggers.json +52 -0
  63. package/dist/agent-src/skills/license-compliance-borrow-check/SKILL.md +145 -0
  64. package/dist/agent-src/skills/license-compliance-borrow-check/evals/triggers.json +52 -0
  65. package/dist/agent-src/skills/license-compliance-credits/SKILL.md +97 -0
  66. package/dist/agent-src/skills/license-compliance-credits/evals/triggers.json +52 -0
  67. package/dist/agent-src/skills/md-language-check/SKILL.md +1 -1
  68. package/dist/agent-src/skills/override-management/SKILL.md +1 -1
  69. package/dist/agent-src/skills/prediction-pool-optimizer/SKILL.md +7 -7
  70. package/dist/agent-src/skills/project-analysis-core/SKILL.md +1 -1
  71. package/dist/agent-src/skills/prompt-engineering-image/SKILL.md +3 -2
  72. package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +2 -2
  73. package/dist/agent-src/skills/recursive-verification/SKILL.md +6 -0
  74. package/dist/agent-src/skills/refine-ticket/SKILL.md +3 -3
  75. package/dist/agent-src/skills/roadmap-writing/SKILL.md +4 -0
  76. package/dist/agent-src/skills/rtk-output-filtering/SKILL.md +31 -12
  77. package/dist/agent-src/skills/rule-refactor/SKILL.md +3 -3
  78. package/dist/agent-src/skills/schema-review/SKILL.md +92 -0
  79. package/dist/agent-src/skills/schema-review/evals/triggers.json +17 -0
  80. package/dist/agent-src/skills/secrets-management/SKILL.md +3 -4
  81. package/dist/agent-src/skills/security-audit/SKILL.md +1 -1
  82. package/dist/agent-src/skills/security-maturity-assessment/SKILL.md +1 -1
  83. package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +3 -3
  84. package/dist/agent-src/skills/skill-writing/SKILL.md +2 -2
  85. package/dist/agent-src/skills/source-discovery/SKILL.md +5 -5
  86. package/dist/agent-src/skills/subagent-orchestration/SKILL.md +45 -85
  87. package/dist/agent-src/skills/subagent-orchestration/prompts/README.md +5 -4
  88. package/dist/agent-src/skills/systematic-debugging/SKILL.md +2 -2
  89. package/dist/agent-src/skills/tailwind-engineer/SKILL.md +2 -3
  90. package/dist/agent-src/skills/token-optimizer/SKILL.md +4 -4
  91. package/dist/agent-src/skills/verify-repair-loop/SKILL.md +1 -1
  92. package/dist/agent-src/skills/worktree-lifecycle/SKILL.md +2 -3
  93. package/dist/agent-src/templates/AGENTS.md +1 -1
  94. package/dist/agent-src/templates/agents/.gitattributes.fragment +25 -6
  95. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  96. package/dist/agent-src/templates/command.md +3 -3
  97. package/dist/agent-src/templates/persona.md +2 -2
  98. package/dist/agent-src/templates/rule.md +2 -2
  99. package/dist/agent-src/templates/scripts/telemetry/engagement.ts +77 -0
  100. package/dist/agent-src/templates/scripts/telemetry_record.ts +33 -1
  101. package/dist/cli/commands/doctorShell.js +20 -0
  102. package/dist/cli/commands/doctorShell.js.map +1 -1
  103. package/dist/cli/commands/rtkDetect.js +58 -0
  104. package/dist/cli/commands/rtkDetect.js.map +1 -0
  105. package/dist/cli/firstRunNotice.js +70 -0
  106. package/dist/cli/firstRunNotice.js.map +1 -0
  107. package/dist/cli/main.js +35 -3
  108. package/dist/cli/main.js.map +1 -1
  109. package/dist/cli/registry.js +7 -1
  110. package/dist/cli/registry.js.map +1 -1
  111. package/dist/discovery/deprecation-report.md +1 -1
  112. package/dist/discovery/discovery-manifest.json +362 -78
  113. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  114. package/dist/discovery/discovery-manifest.summary.md +6 -4
  115. package/dist/discovery/orphan-report.md +1 -1
  116. package/dist/discovery/packs.json +90 -8
  117. package/dist/discovery/trust-report.md +11 -11
  118. package/dist/discovery/workspaces.json +31 -7
  119. package/dist/hooks/dispatch.js +19475 -0
  120. package/dist/install/agentSwitchDetection.js +75 -0
  121. package/dist/install/agentSwitchDetection.js.map +1 -0
  122. package/dist/install/agentSwitchProfile.js +117 -0
  123. package/dist/install/agentSwitchProfile.js.map +1 -0
  124. package/dist/install/atomic.js +1 -1
  125. package/dist/install/detect.js +1 -1
  126. package/dist/install/install.mjs +775 -486
  127. package/dist/install/rtkDetection.js +213 -0
  128. package/dist/install/rtkDetection.js.map +1 -0
  129. package/dist/install/rule_scope.js +2 -1
  130. package/dist/install/rule_scope.js.map +1 -1
  131. package/dist/install/types.js +2 -2
  132. package/dist/install/wizard-plan.js +1 -1
  133. package/dist/install/wizardDismissals.js +58 -0
  134. package/dist/install/wizardDismissals.js.map +1 -0
  135. package/dist/mcp/awesome-mcp-servers.row.md +1 -1
  136. package/dist/mcp/mcp-cloudflare-catalogue.json +1 -1
  137. package/dist/mcp/registry-manifest.json +15 -4
  138. package/dist/mcp/server.json +20 -0
  139. package/dist/mcp/server.mjs +44292 -0
  140. package/dist/router.json +1 -1
  141. package/dist/scripts/condense.js +14 -7
  142. package/dist/scripts/condense.js.map +1 -1
  143. package/dist/server/app.js +4 -2
  144. package/dist/server/app.js.map +1 -1
  145. package/dist/server/io/sharedWriteCheck.js +101 -0
  146. package/dist/server/io/sharedWriteCheck.js.map +1 -0
  147. package/dist/server/routes/ping.js +14 -0
  148. package/dist/server/routes/ping.js.map +1 -1
  149. package/dist/server/routes/settings.js +21 -4
  150. package/dist/server/routes/settings.js.map +1 -1
  151. package/dist/server/routes/userMd.js +21 -4
  152. package/dist/server/routes/userMd.js.map +1 -1
  153. package/dist/server/routes/wizard.js +68 -25
  154. package/dist/server/routes/wizard.js.map +1 -1
  155. package/dist/server/schemas/settings.js +4 -2
  156. package/dist/server/schemas/settings.js.map +1 -1
  157. package/dist/ui/assets/index-BpSQt5vm.js +40 -0
  158. package/dist/ui/assets/index-BpSQt5vm.js.map +1 -0
  159. package/dist/ui/assets/index-jSfMW8_t.css +1 -0
  160. package/dist/ui/index.html +2 -2
  161. package/docs/MIGRATION.md +16 -0
  162. package/docs/guidelines/component-oriented-and-oop-development.md +4 -2
  163. package/package.json +21 -11
  164. package/src/agent-src/templates/AGENTS.md +1 -1
  165. package/src/agent-src/templates/scripts/telemetry/engagement.ts +77 -0
  166. package/src/agent-src/templates/scripts/telemetry_record.ts +33 -1
  167. package/src/config/agent-settings.template.yml +52 -14
  168. package/src/config/discovery/packs.yml +22 -0
  169. package/src/config/discovery/workspaces.yml +1 -1
  170. package/src/config/evaluator-budgets.json +47 -0
  171. package/src/config/hook-latency-budget.json +20 -0
  172. package/src/install/agentSwitchDetection.ts +90 -0
  173. package/src/install/agentSwitchProfile.ts +131 -0
  174. package/src/install/atomic.ts +1 -1
  175. package/src/install/detect.ts +1 -1
  176. package/src/install/rtkDetection.ts +274 -0
  177. package/src/install/rule_scope.ts +9 -2
  178. package/src/install/types.ts +2 -2
  179. package/src/install/wizard-plan.ts +1 -1
  180. package/src/install/wizardDismissals.ts +60 -0
  181. package/src/scripts/_cli/cmd_doctor.ts +62 -1
  182. package/src/scripts/_cli/cmd_memory_get.ts +197 -0
  183. package/src/scripts/_cli/cmd_refresh.ts +30 -0
  184. package/src/scripts/_dispatch.bash +81 -0
  185. package/src/scripts/_lib/auto_dispatch.corpus.test.ts +64 -1
  186. package/src/scripts/_lib/auto_dispatch.ts +76 -0
  187. package/src/scripts/_lib/detect_target_license.ts +714 -0
  188. package/src/scripts/_lib/fixtures/secret-detector/negatives.txt +5 -0
  189. package/src/scripts/_lib/fixtures/secret-detector/positives.txt +4 -0
  190. package/src/scripts/_lib/install_drift.ts +194 -0
  191. package/src/scripts/_lib/memory_fts_index.ts +390 -0
  192. package/src/scripts/_lib/orchestration_record.ts +91 -2
  193. package/src/scripts/_lib/persistence/adapter_raw_sql.ts +443 -0
  194. package/src/scripts/_lib/persistence/detect_audit_coverage.ts +423 -0
  195. package/src/scripts/_lib/persistence/detect_bounded_reads.ts +154 -0
  196. package/src/scripts/_lib/persistence/detect_index_parity.ts +576 -0
  197. package/src/scripts/_lib/persistence/detect_n1_eloquent.ts +226 -0
  198. package/src/scripts/_lib/persistence/detect_offload.ts +441 -0
  199. package/src/scripts/_lib/persistence/detect_prisma_growth.ts +74 -0
  200. package/src/scripts/_lib/persistence/offload_catalog.ts +73 -0
  201. package/src/scripts/_lib/persistence/types.ts +109 -0
  202. package/src/scripts/_lib/rtk_allowlist.ts +44 -0
  203. package/src/scripts/_lib/secret_detector.test.ts +5 -0
  204. package/src/scripts/_lib/secret_detector.ts +9 -0
  205. package/src/scripts/_lib/secret_detector_adversarial.test.ts +116 -0
  206. package/src/scripts/_lib/spawn_env.ts +7 -0
  207. package/src/scripts/_lib/sqlite_guard.ts +191 -0
  208. package/src/scripts/_lib/subagent_spawn.ts +53 -0
  209. package/src/scripts/_lib/worker_budget.ts +107 -0
  210. package/src/scripts/ai_council/blind_review.ts +0 -0
  211. package/src/scripts/ai_council/config.ts +12 -6
  212. package/src/scripts/ai_council/orchestrator.ts +73 -3
  213. package/src/scripts/ai_team/review_gate.ts +8 -10
  214. package/src/scripts/ai_team/team_dispatch.ts +48 -0
  215. package/src/scripts/audit_initial_context.ts +1 -1
  216. package/src/scripts/bench_cross_source_eval.ts +400 -0
  217. package/src/scripts/bench_honesty_score.ts +1093 -0
  218. package/src/scripts/bench_hook_latency.ts +218 -0
  219. package/src/scripts/build_mcp_catalog.ts +275 -0
  220. package/src/scripts/build_mcp_registry_manifest.ts +46 -0
  221. package/src/scripts/build_proof.ts +45 -0
  222. package/src/scripts/chat_history.ts +8 -5
  223. package/src/scripts/check_backstop_debt.ts +23 -13
  224. package/src/scripts/check_bundle_path_leakage.ts +343 -0
  225. package/src/scripts/check_evaluator_budgets.ts +99 -0
  226. package/src/scripts/check_knowledge_sharing.ts +12 -1
  227. package/src/scripts/check_no_external_sources.ts +2 -2
  228. package/src/scripts/check_source_pointer_freshness.ts +28 -3
  229. package/src/scripts/code_graph/build.ts +0 -0
  230. package/src/scripts/code_graph/cli.ts +181 -9
  231. package/src/scripts/code_graph/detect.ts +52 -0
  232. package/src/scripts/code_graph/intent.ts +45 -0
  233. package/src/scripts/code_graph/query.ts +143 -29
  234. package/src/scripts/code_graph/sqlite_store.ts +174 -0
  235. package/src/scripts/condense.ts +14 -6
  236. package/src/scripts/context_hygiene_hook.ts +8 -5
  237. package/src/scripts/council_cli.ts +126 -12
  238. package/src/scripts/detect_target_license.ts +203 -0
  239. package/src/scripts/evaluator_umbrella.sh +145 -0
  240. package/src/scripts/external_sources_denylist.json +5 -3
  241. package/src/scripts/first_run_gate_hook.ts +9 -5
  242. package/src/scripts/hermetic-install.sh +3 -3
  243. package/src/scripts/hook_manifest.yaml +55 -16
  244. package/src/scripts/hooks/block_kernel_rule_writes.ts +212 -0
  245. package/src/scripts/hooks/block_no_verify.ts +9 -9
  246. package/src/scripts/hooks/code_graph_nudge_hook.ts +11 -4
  247. package/src/scripts/hooks/concern_registry.ts +75 -0
  248. package/src/scripts/hooks/design_slop_hook.ts +8 -5
  249. package/src/scripts/hooks/dispatch_entry.ts +37 -0
  250. package/src/scripts/hooks/dispatch_hook.ts +176 -3
  251. package/src/scripts/hooks/hook_stdin.ts +42 -0
  252. package/src/scripts/hooks/rtk_wrap_hook.ts +26 -12
  253. package/src/scripts/hot_context_hook.ts +7 -6
  254. package/src/scripts/injection_scan_hook.ts +9 -1
  255. package/src/scripts/install +6 -6
  256. package/src/scripts/install-hooks.sh +4 -4
  257. package/src/scripts/install.sh +5 -4
  258. package/src/scripts/install.ts +264 -23
  259. package/src/scripts/learning_sidecar.ts +0 -0
  260. package/src/scripts/lint_budget_ownership.ts +89 -0
  261. package/src/scripts/lint_command_routing.ts +35 -5
  262. package/src/scripts/lint_command_verbs.ts +42 -9
  263. package/src/scripts/lint_consumer_internal_refs.ts +211 -0
  264. package/src/scripts/lint_discovery_vocabulary.ts +2 -0
  265. package/src/scripts/lint_documented_commands.ts +670 -0
  266. package/src/scripts/lint_framework_leakage.ts +17 -3
  267. package/src/scripts/lint_framework_leakage_allowlist.json +32 -0
  268. package/src/scripts/lint_governed_writes.ts +335 -0
  269. package/src/scripts/lint_hidden_unicode.ts +6 -0
  270. package/src/scripts/lint_mcp_registry_manifest.ts +26 -1
  271. package/src/scripts/lint_memory_tripwire.ts +186 -0
  272. package/src/scripts/lint_override_kernel_guard.ts +74 -26
  273. package/src/scripts/lint_persistence.ts +171 -0
  274. package/src/scripts/lint_pre_migration_refs.ts +106 -0
  275. package/src/scripts/lint_provenance.ts +547 -0
  276. package/src/scripts/lint_provenance_vocabulary.ts +437 -0
  277. package/src/scripts/lint_spawn_payload.ts +283 -0
  278. package/src/scripts/lint_store_boundary.ts +152 -0
  279. package/src/scripts/lint_versioned_cache.ts +7 -1
  280. package/src/scripts/mcp_server/__main__.ts +7 -2
  281. package/src/scripts/mcp_server/catalog.ts +23 -1
  282. package/src/scripts/mcp_server/consumer_tool_catalog.json +563 -193
  283. package/src/scripts/mcp_server/prompts.ts +6 -0
  284. package/src/scripts/mcp_server/tool_catalog_source.ts +332 -0
  285. package/src/scripts/mcp_server/tools.ts +56 -5
  286. package/src/scripts/mcp_telemetry_query.ts +2 -33
  287. package/src/scripts/mcp_telemetry_store.ts +64 -34
  288. package/src/scripts/memory_learn_hook.ts +126 -0
  289. package/src/scripts/memory_lookup.ts +0 -0
  290. package/src/scripts/memory_replay_24.ts +312 -0
  291. package/src/scripts/memory_report.ts +16 -3
  292. package/src/scripts/memory_signal.ts +48 -0
  293. package/src/scripts/memory_status.ts +6 -0
  294. package/src/scripts/minimal_safe_diff_hook.ts +8 -5
  295. package/src/scripts/onboarding_gate_hook.ts +8 -5
  296. package/src/scripts/orchestration_record.ts +16 -0
  297. package/src/scripts/pr_url_reminder_hook.ts +8 -1
  298. package/src/scripts/prepack-check.mjs +17 -0
  299. package/src/scripts/prepack_lifecycle_check.d.mts +8 -0
  300. package/src/scripts/prepack_lifecycle_check.mjs +82 -0
  301. package/src/scripts/profile_staleness_hook.ts +8 -7
  302. package/src/scripts/report_install_drift.ts +109 -0
  303. package/src/scripts/roadmap_progress_hook.ts +8 -5
  304. package/src/scripts/schemas/license-policy.schema.json +89 -0
  305. package/src/scripts/schemas/provenance-borrow.schema.json +46 -0
  306. package/src/scripts/schemas/rule.schema.json +10 -0
  307. package/src/scripts/self_review_gate.test.ts +173 -1
  308. package/src/scripts/self_review_gate.ts +155 -15
  309. package/src/scripts/session_canary_hook.ts +182 -0
  310. package/src/scripts/smoke_quickstart.ts +2 -2
  311. package/src/scripts/surface_probe_hook.ts +8 -7
  312. package/src/scripts/sync_gitattributes.ts +310 -0
  313. package/src/scripts/team_review_gate_hook.ts +13 -16
  314. package/src/scripts/verify_before_complete_hook.ts +8 -5
  315. package/src/scripts/wrapper_freshness_hook.ts +8 -7
  316. package/src/server/schemas/settings.ts +8 -2
  317. package/dist/ui/assets/index-BPFMZWUs.css +0 -1
  318. package/dist/ui/assets/index-CrmZ34Rg.js +0 -40
  319. package/dist/ui/assets/index-CrmZ34Rg.js.map +0 -1
  320. package/docs/CLAIMS.md +0 -286
  321. package/docs/DISTRIBUTION_CHECKLIST.md +0 -170
  322. package/docs/RELEASE_STORY_TEMPLATE.md +0 -37
  323. package/docs/SKILL_CENSUS.md +0 -352
  324. package/docs/adrs/cost/0001-hard-stop-hook.md +0 -114
  325. package/docs/adrs/cost/README.md +0 -9
  326. package/docs/adrs/memory/0001-consumer-side-snapshot.md +0 -119
  327. package/docs/adrs/memory/README.md +0 -10
  328. package/docs/adrs/router/0001-three-tier-routing.md +0 -119
  329. package/docs/adrs/router/README.md +0 -9
  330. package/docs/adrs/schema/0001-json-schema-frontmatter.md +0 -102
  331. package/docs/adrs/schema/README.md +0 -9
  332. package/docs/adrs/smoke/0001-per-tier-smoke-scripts.md +0 -99
  333. package/docs/adrs/smoke/README.md +0 -9
  334. package/docs/adrs/telegraph/0001-default-off-until-bench.md +0 -93
  335. package/docs/adrs/telegraph/README.md +0 -9
  336. package/docs/announcements/2026-05-non-dev-launch.md +0 -79
  337. package/docs/announcements/2026-07-honest-cost-sweep-launch.md +0 -84
  338. package/docs/anti-reskin-gate.md +0 -60
  339. package/docs/architecture/augment-projection.md +0 -70
  340. package/docs/architecture/claude-bundle.md +0 -77
  341. package/docs/architecture/current-onboard-baseline.md +0 -126
  342. package/docs/architecture/current-safety-behavior.md +0 -137
  343. package/docs/architecture/multi-tool-projection.md +0 -125
  344. package/docs/architecture/setup-vs-settings-shared-surface.md +0 -114
  345. package/docs/architecture/source-projection.md +0 -85
  346. package/docs/architecture.md +0 -390
  347. package/docs/archive/CHANGELOG-6.0.0-overview.md +0 -953
  348. package/docs/archive/CHANGELOG-7.0.0.md +0 -419
  349. package/docs/archive/CHANGELOG-pre-2.11.0.md +0 -141
  350. package/docs/archive/CHANGELOG-pre-2.15.0.md +0 -244
  351. package/docs/archive/CHANGELOG-pre-2.16.0.md +0 -48
  352. package/docs/archive/CHANGELOG-pre-2.17.0.md +0 -63
  353. package/docs/archive/CHANGELOG-pre-2.2.0.md +0 -2138
  354. package/docs/archive/CHANGELOG-pre-2.20.0.md +0 -159
  355. package/docs/archive/CHANGELOG-pre-2.25.0.md +0 -191
  356. package/docs/archive/CHANGELOG-pre-2.7.0.md +0 -185
  357. package/docs/archive/CHANGELOG-pre-3.0.0.md +0 -130
  358. package/docs/archive/CHANGELOG-pre-3.1.0.md +0 -167
  359. package/docs/archive/CHANGELOG-pre-3.2.0.md +0 -268
  360. package/docs/archive/CHANGELOG-pre-4.0.0.md +0 -80
  361. package/docs/archive/CHANGELOG-pre-4.5.0.md +0 -289
  362. package/docs/archive/CHANGELOG-pre-5.4.0.md +0 -260
  363. package/docs/archive/CHANGELOG-pre-5.9.0.md +0 -270
  364. package/docs/archive/CHANGELOG-pre-6.0.0.md +0 -473
  365. package/docs/archive/CHANGELOG-pre-7.0.0.md +0 -126
  366. package/docs/archive/CHANGELOG-pre-8.0.0.md +0 -301
  367. package/docs/archive/CHANGELOG-pre-8.1.0.md +0 -316
  368. package/docs/archive/CHANGELOG-pre-8.12.0.md +0 -304
  369. package/docs/archive/CHANGELOG-pre-8.9.0.md +0 -306
  370. package/docs/archive/CHANGELOG-pre-9.2.0.md +0 -276
  371. package/docs/artefact-census.md +0 -71
  372. package/docs/benchmark.md +0 -785
  373. package/docs/benchmark.pinned.yml +0 -31
  374. package/docs/benchmarks.md +0 -85
  375. package/docs/capability-matrix.md +0 -33
  376. package/docs/case-studies/_template.md +0 -60
  377. package/docs/case-studies/frontend-design-positioning.md +0 -86
  378. package/docs/catalog.md +0 -726
  379. package/docs/command-flows.md +0 -272
  380. package/docs/command-naming-audit.md +0 -60
  381. package/docs/comparison.yaml +0 -87
  382. package/docs/contracts/CHANGELOG-conventions.md +0 -149
  383. package/docs/contracts/STABILITY.md +0 -188
  384. package/docs/contracts/adoption-signal-floor.md +0 -127
  385. package/docs/contracts/adr-architectural-consensus-mechanism.md +0 -68
  386. package/docs/contracts/adr-chat-history-split.md +0 -140
  387. package/docs/contracts/adr-command-suggestion.md +0 -144
  388. package/docs/contracts/adr-forecast-construction-shape.md +0 -90
  389. package/docs/contracts/adr-gtm-context-spine.md +0 -116
  390. package/docs/contracts/adr-implement-ticket-runtime.md +0 -121
  391. package/docs/contracts/adr-install-user-type-axis.md +0 -107
  392. package/docs/contracts/adr-layout.md +0 -107
  393. package/docs/contracts/adr-level-6-productization.md +0 -145
  394. package/docs/contracts/adr-mcp-runtime.md +0 -128
  395. package/docs/contracts/adr-product-ui-track.md +0 -381
  396. package/docs/contracts/adr-prompt-driven-execution.md +0 -186
  397. package/docs/contracts/adr-settings-sync-engine.md +0 -128
  398. package/docs/contracts/adr-user-types-axis.md +0 -127
  399. package/docs/contracts/adr-wing4-context-spine.md +0 -126
  400. package/docs/contracts/agent-user-schema.md +0 -170
  401. package/docs/contracts/agents-layout.md +0 -148
  402. package/docs/contracts/agents-md-tech-stack.md +0 -75
  403. package/docs/contracts/ai-council-config.md +0 -829
  404. package/docs/contracts/ai-team-config.md +0 -224
  405. package/docs/contracts/analysis-memory-loop.md +0 -149
  406. package/docs/contracts/at-rest-encryption.md +0 -191
  407. package/docs/contracts/audit-log-v1.md +0 -150
  408. package/docs/contracts/auto-orchestration-v1.md +0 -70
  409. package/docs/contracts/benchmark-ab-contract.md +0 -106
  410. package/docs/contracts/benchmark-corpus-spec.md +0 -125
  411. package/docs/contracts/benchmark-report-schema.md +0 -113
  412. package/docs/contracts/branch-protection-policy.md +0 -139
  413. package/docs/contracts/brand-token-consumption.md +0 -74
  414. package/docs/contracts/capability-boundary.md +0 -69
  415. package/docs/contracts/capability-packs.md +0 -217
  416. package/docs/contracts/ci-cost-budget.md +0 -111
  417. package/docs/contracts/ci-green-floor.md +0 -141
  418. package/docs/contracts/command-category-governance.md +0 -84
  419. package/docs/contracts/command-clusters.md +0 -399
  420. package/docs/contracts/command-surface-tiers.md +0 -176
  421. package/docs/contracts/command-taxonomy.md +0 -137
  422. package/docs/contracts/condensation-default-kill-criterion.md +0 -116
  423. package/docs/contracts/config-presets.md +0 -144
  424. package/docs/contracts/conformance.md +0 -84
  425. package/docs/contracts/consumer-bridge.md +0 -73
  426. package/docs/contracts/context-paths.md +0 -101
  427. package/docs/contracts/context-spine.md +0 -179
  428. package/docs/contracts/cost-dashboard.md +0 -143
  429. package/docs/contracts/cost-enforcement.md +0 -134
  430. package/docs/contracts/cost-profile-defaults.md +0 -110
  431. package/docs/contracts/cost-summary-schema.md +0 -107
  432. package/docs/contracts/creative-pack-boundary.md +0 -63
  433. package/docs/contracts/cross-repo-retrieval.md +0 -64
  434. package/docs/contracts/cross-wing-handoff.md +0 -134
  435. package/docs/contracts/daily-workspace.md +0 -147
  436. package/docs/contracts/decision-engine-gates.md +0 -120
  437. package/docs/contracts/decision-trace-v1.md +0 -177
  438. package/docs/contracts/design-artifact-lifecycle.md +0 -93
  439. package/docs/contracts/design-artifact-verification.md +0 -153
  440. package/docs/contracts/discovery-manifest.md +0 -209
  441. package/docs/contracts/discovery-manifest.schema.json +0 -254
  442. package/docs/contracts/evidence-based-pruning.md +0 -102
  443. package/docs/contracts/explain-modes.md +0 -187
  444. package/docs/contracts/explain-trace.schema.json +0 -144
  445. package/docs/contracts/file-ownership-matrix.json +0 -13941
  446. package/docs/contracts/file-ownership-matrix.md +0 -135
  447. package/docs/contracts/frontmatter-contract.md +0 -140
  448. package/docs/contracts/ghostwriter-schema.md +0 -337
  449. package/docs/contracts/governance-enforcement-projection.md +0 -159
  450. package/docs/contracts/gui-wizard.md +0 -350
  451. package/docs/contracts/harness-expectations.md +0 -128
  452. package/docs/contracts/hook-architecture-v1.md +0 -325
  453. package/docs/contracts/host-agent-protocol.md +0 -110
  454. package/docs/contracts/implement-ticket-flow.md +0 -625
  455. package/docs/contracts/init-telemetry.md +0 -132
  456. package/docs/contracts/injected-block-authenticity-model.md +0 -66
  457. package/docs/contracts/install-layout.md +0 -249
  458. package/docs/contracts/install-scopes.md +0 -82
  459. package/docs/contracts/installed-tools-lockfile.md +0 -144
  460. package/docs/contracts/installer-agent-mode.md +0 -137
  461. package/docs/contracts/iron-law-overrides.txt +0 -26
  462. package/docs/contracts/kernel-membership.md +0 -339
  463. package/docs/contracts/linear-ai-rules-inclusion.md +0 -143
  464. package/docs/contracts/linear-ai-three-layers.md +0 -130
  465. package/docs/contracts/linter-structural-model.md +0 -181
  466. package/docs/contracts/load-context-budget-model.md +0 -259
  467. package/docs/contracts/load-context-schema.md +0 -220
  468. package/docs/contracts/local-analytics.md +0 -160
  469. package/docs/contracts/local-knowledge-ingestion.md +0 -96
  470. package/docs/contracts/local-server-api.md +0 -134
  471. package/docs/contracts/local-server-ports.md +0 -53
  472. package/docs/contracts/low-impact-corpus-format.md +0 -95
  473. package/docs/contracts/mcp-beta-criteria.md +0 -130
  474. package/docs/contracts/mcp-cloud-scope.md +0 -355
  475. package/docs/contracts/mcp-discovery-phase-notice.md +0 -60
  476. package/docs/contracts/mcp-phase-1-scope.md +0 -272
  477. package/docs/contracts/mcp-registry-manifest.schema.json +0 -129
  478. package/docs/contracts/mcp-tool-inventory.md +0 -64
  479. package/docs/contracts/mcp-tool-stub-envelope.md +0 -78
  480. package/docs/contracts/measurement-baseline.md +0 -103
  481. package/docs/contracts/memory-visibility-v1.md +0 -160
  482. package/docs/contracts/mental-models.md +0 -336
  483. package/docs/contracts/migrate-command.md +0 -233
  484. package/docs/contracts/multi-tool-projection-fidelity.md +0 -134
  485. package/docs/contracts/namespace.md +0 -125
  486. package/docs/contracts/no-runtime-boundary.md +0 -61
  487. package/docs/contracts/one-off-script-lifecycle.md +0 -110
  488. package/docs/contracts/orchestration-dsl-v1.md +0 -153
  489. package/docs/contracts/package-self-orientation.md +0 -163
  490. package/docs/contracts/pilot/agent-authority.md +0 -24
  491. package/docs/contracts/pilot/direct-answers.md +0 -70
  492. package/docs/contracts/pilot/language-and-tone.md +0 -63
  493. package/docs/contracts/plain-language-surface.md +0 -117
  494. package/docs/contracts/prelaunch-diagnostics.md +0 -151
  495. package/docs/contracts/profile-system.md +0 -167
  496. package/docs/contracts/reasoning-discipline-protocol.md +0 -83
  497. package/docs/contracts/release-pr-gating.md +0 -151
  498. package/docs/contracts/release-sizing.md +0 -107
  499. package/docs/contracts/release-trunk-sync.md +0 -105
  500. package/docs/contracts/review-lens-schema.md +0 -64
  501. package/docs/contracts/roadmap-complexity-standard.md +0 -138
  502. package/docs/contracts/role-experience.md +0 -125
  503. package/docs/contracts/router-blending.md +0 -71
  504. package/docs/contracts/rule-classification.md +0 -171
  505. package/docs/contracts/rule-interactions.md +0 -132
  506. package/docs/contracts/rule-interactions.yml +0 -260
  507. package/docs/contracts/rule-priority-hierarchy.md +0 -88
  508. package/docs/contracts/rule-router.md +0 -287
  509. package/docs/contracts/safety-model.md +0 -129
  510. package/docs/contracts/session-profile-overlay.md +0 -157
  511. package/docs/contracts/settings-api.md +0 -264
  512. package/docs/contracts/settings-gui-agent-mode.schema.json +0 -128
  513. package/docs/contracts/settings-sync-yaml-subset.md +0 -139
  514. package/docs/contracts/skill-bundled-assets.md +0 -62
  515. package/docs/contracts/skill-discovery.md +0 -80
  516. package/docs/contracts/skill-distribution-channels.md +0 -66
  517. package/docs/contracts/skill-domains.md +0 -144
  518. package/docs/contracts/skill-dry-run.md +0 -47
  519. package/docs/contracts/skill-family-map.yml +0 -915
  520. package/docs/contracts/smoke-contracts.md +0 -144
  521. package/docs/contracts/subagent-boundary.md +0 -74
  522. package/docs/contracts/surface-agent-contracts.md +0 -153
  523. package/docs/contracts/surface-matrix.md +0 -108
  524. package/docs/contracts/surface-tiers.md +0 -81
  525. package/docs/contracts/telegraph-telemetry.md +0 -83
  526. package/docs/contracts/ticket-bundle-format.md +0 -233
  527. package/docs/contracts/tier-3-contrib-plugin.md +0 -137
  528. package/docs/contracts/trust-and-safety.md +0 -144
  529. package/docs/contracts/ui-stack-extension.md +0 -237
  530. package/docs/contracts/ui-track-flow.md +0 -329
  531. package/docs/contracts/universal-skills.md +0 -91
  532. package/docs/contracts/user-type-schema.md +0 -146
  533. package/docs/contracts/value-dashboard-spec.md +0 -378
  534. package/docs/contracts/value-report-schema.md +0 -168
  535. package/docs/contracts/workflow-packs.md +0 -121
  536. package/docs/contracts/workspace-boundary.md +0 -84
  537. package/docs/contracts/workspace-documents.md +0 -144
  538. package/docs/contracts/write-engine.md +0 -182
  539. package/docs/cookbook.md +0 -152
  540. package/docs/customization.md +0 -696
  541. package/docs/decisions/ADR-001-kernel-swap-deferred.md +0 -109
  542. package/docs/decisions/ADR-002-kernel-bucket-overrides.md +0 -135
  543. package/docs/decisions/ADR-003-flat-cluster-subs-and-colon-syntax.md +0 -137
  544. package/docs/decisions/ADR-004-rule-governance-pruning.md +0 -240
  545. package/docs/decisions/ADR-005-subagent-worktrees.md +0 -120
  546. package/docs/decisions/ADR-006-skill-tools-python-pilot.md +0 -114
  547. package/docs/decisions/ADR-007-agent-discovery-scopes.md +0 -371
  548. package/docs/decisions/ADR-008-installed-tools-manifest.md +0 -160
  549. package/docs/decisions/ADR-009-event4u-namespace.md +0 -188
  550. package/docs/decisions/ADR-010-profile-pack-preset-boundary.md +0 -168
  551. package/docs/decisions/ADR-011-domain-pack-readiness.md +0 -213
  552. package/docs/decisions/ADR-012-typescript-cli-shell.md +0 -162
  553. package/docs/decisions/ADR-013-discovery-frontmatter-contract.md +0 -342
  554. package/docs/decisions/ADR-014-gui-framework-choice.md +0 -136
  555. package/docs/decisions/ADR-015-discovery-manifest-contract.md +0 -146
  556. package/docs/decisions/ADR-016-installer-architecture.md +0 -191
  557. package/docs/decisions/ADR-017-monorepo-physical-layout.md +0 -261
  558. package/docs/decisions/ADR-018-trust-and-safety-layer.md +0 -159
  559. package/docs/decisions/ADR-019-router-json-dist-location.md +0 -124
  560. package/docs/decisions/ADR-020-global-only-consumer-scope.md +0 -213
  561. package/docs/decisions/ADR-021-deployment-shape.md +0 -153
  562. package/docs/decisions/ADR-022-daily-workspace-decomposition.md +0 -140
  563. package/docs/decisions/ADR-023-host-agent-protocol.md +0 -129
  564. package/docs/decisions/ADR-024-workspace-v0-feature-floor.md +0 -126
  565. package/docs/decisions/ADR-025-workspace-chrome.md +0 -119
  566. package/docs/decisions/ADR-026-explain-mode-translation.md +0 -117
  567. package/docs/decisions/ADR-027-changelog-machine-vs-manual.md +0 -129
  568. package/docs/decisions/ADR-028-root-layout.md +0 -147
  569. package/docs/decisions/ADR-029-multi-workspace-deferred.md +0 -122
  570. package/docs/decisions/ADR-030-claude-code-command-projection.md +0 -147
  571. package/docs/decisions/ADR-031-validation-severity-tiers-and-projection-roundtrip.md +0 -97
  572. package/docs/decisions/ADR-032-linked-projects-scope.md +0 -122
  573. package/docs/decisions/ADR-033-distribution-identity-npm-primary.md +0 -81
  574. package/docs/decisions/ADR-034-per-skill-model-recommendation-transport.md +0 -63
  575. package/docs/decisions/ADR-035-model-capability-tiers.md +0 -104
  576. package/docs/decisions/ADR-036-global-install-browser-wizard-handoff.md +0 -106
  577. package/docs/decisions/ADR-037-cost-profile-untangle.md +0 -117
  578. package/docs/decisions/ADR-038-canonical-settings-path.md +0 -96
  579. package/docs/decisions/ADR-039-claude-skills-untracked.md +0 -139
  580. package/docs/decisions/ADR-040-execution-model-projection-time-filtering.md +0 -244
  581. package/docs/decisions/ADR-041-controlled-command-verbs.md +0 -133
  582. package/docs/decisions/ADR-042-runtime-resolver-decision-gate.md +0 -113
  583. package/docs/decisions/ADR-043-monorepo-collapse-to-src-domains.md +0 -128
  584. package/docs/decisions/ADR-044-command-naming-scheme-hyphenated.md +0 -250
  585. package/docs/decisions/ADR-045-src-source-layout-and-profiles-as-views.md +0 -111
  586. package/docs/decisions/ADR-046-thin-command-principle.md +0 -93
  587. package/docs/decisions/ADR-047-framework-neutral-stack-adaptive-commands.md +0 -94
  588. package/docs/decisions/ADR-048-command-justification-rule.md +0 -106
  589. package/docs/decisions/ADR-049-configuration-trust-boundary.md +0 -132
  590. package/docs/decisions/ADR-050-workspace-vs-package-root-boundary.md +0 -121
  591. package/docs/decisions/ADR-051-uncondensed-source-container-relocation.md +0 -114
  592. package/docs/decisions/ADR-052-packages-removal-and-pack-home-migration.md +0 -86
  593. package/docs/decisions/ADR-053-agents-namespace-dual-role-resolution.md +0 -132
  594. package/docs/decisions/ADR-054-rule-adherence-decay-triggered-restate.md +0 -143
  595. package/docs/decisions/ADR-055-flow-layer-data-model.md +0 -235
  596. package/docs/decisions/ADR-056-unvalidated-video-adapters-disposition.md +0 -124
  597. package/docs/decisions/ADR-057-consolidation-evidence-gate-outcomes.md +0 -135
  598. package/docs/decisions/ADR-058-condensed-output-relocation-to-dist.md +0 -94
  599. package/docs/decisions/ADR-059-render-resume-filesystem-as-state.md +0 -161
  600. package/docs/decisions/ADR-060-comfyui-sandbox-model.md +0 -154
  601. package/docs/decisions/ADR-061-corpus-grounding-layer.md +0 -230
  602. package/docs/decisions/ADR-062-encrypt-at-rest-store-architecture.md +0 -121
  603. package/docs/decisions/ADR-063-append-jsonl-encryption-deferred.md +0 -83
  604. package/docs/decisions/ADR-064-append-jsonl-per-record-encryption.md +0 -113
  605. package/docs/decisions/ADR-065-tier3-inbox-handoff-v0.md +0 -86
  606. package/docs/decisions/ADR-066-skill-body-prerendering.md +0 -93
  607. package/docs/decisions/ADR-067-glama-registry-listing.md +0 -259
  608. package/docs/decisions/ADR-068-host-tier-detection.md +0 -90
  609. package/docs/decisions/ADR-069-prompt-renderer.md +0 -97
  610. package/docs/decisions/ADR-070-tier1-drive-loop.md +0 -94
  611. package/docs/decisions/ADR-071-launch-drive-integration.md +0 -95
  612. package/docs/decisions/ADR-072-codex-gemini-drive-configs.md +0 -90
  613. package/docs/decisions/ADR-073-drive-health-kill-switch.md +0 -81
  614. package/docs/decisions/ADR-074-drive-kill-switch-auto-recovery.md +0 -84
  615. package/docs/decisions/ADR-075-workspace-gui-drive.md +0 -83
  616. package/docs/decisions/ADR-076-workspace-multi-turn.md +0 -92
  617. package/docs/decisions/ADR-077-workspace-followup-gui.md +0 -70
  618. package/docs/decisions/ADR-078-drive-health-panel.md +0 -70
  619. package/docs/decisions/ADR-079-workspace-host-picker.md +0 -81
  620. package/docs/decisions/ADR-080-host-session-expired-410.md +0 -92
  621. package/docs/decisions/ADR-081-drive-health-reset-and-410-affordance.md +0 -71
  622. package/docs/decisions/ADR-082-410-one-click-relaunch.md +0 -58
  623. package/docs/decisions/ADR-083-session-thread-and-arbitrary-continuation.md +0 -85
  624. package/docs/decisions/ADR-084-drive-health-refresh-on-drive.md +0 -52
  625. package/docs/decisions/ADR-085-mcp-stdio-end-user-distribution-shape.md +0 -158
  626. package/docs/decisions/ADR-086-read-only-cross-agent-mcp-discovery-helper.md +0 -171
  627. package/docs/decisions/ADR-087-installer-e2e-test-strategy.md +0 -111
  628. package/docs/decisions/ADR-088-no-external-runtime-federation.md +0 -144
  629. package/docs/decisions/ADR-089-lean-local-plugin-install.md +0 -111
  630. package/docs/decisions/ADR-090-visibility-command-frontmatter-field.md +0 -95
  631. package/docs/decisions/ADR-091-split-meta-capability-packs.md +0 -113
  632. package/docs/decisions/ADR-092-defer-command-tier-alias-removal.md +0 -117
  633. package/docs/decisions/ADR-093-ai-council-config-user-global.md +0 -117
  634. package/docs/decisions/ADR-094-agent-memory-layer-removal.md +0 -94
  635. package/docs/decisions/ADR-095-workspace-boundary-contract.md +0 -108
  636. package/docs/decisions/ADR-096-analysis-workbench.md +0 -110
  637. package/docs/decisions/ADR-097-mission-recipe-privilege-boundary.md +0 -121
  638. package/docs/decisions/ADR-098-evidence-first-structure-discovery.md +0 -154
  639. package/docs/decisions/ADR-099-file-first-pattern-library.md +0 -87
  640. package/docs/decisions/ADR-100-global-knowledge-card-sharing.md +0 -140
  641. package/docs/decisions/ADR-101-ticket-bundle-emission.md +0 -109
  642. package/docs/decisions/ADR-102-ticket-handoff-paste-and-mcp.md +0 -72
  643. package/docs/decisions/ADR-103-global-knowledge-default-off-until-measured.md +0 -92
  644. package/docs/decisions/ADR-104-ai-council-config-global-only.md +0 -119
  645. package/docs/decisions/ADR-105-automatic-subagent-orchestration.md +0 -108
  646. package/docs/decisions/ADR-106-recursive-verification-benchmark-gate.md +0 -126
  647. package/docs/decisions/ADR-107-legal-domain-pack-adoption.md +0 -70
  648. package/docs/decisions/ADR-108-open-source-forever-no-commercial-tier.md +0 -46
  649. package/docs/decisions/ADR-109-subagent-v1-contract.md +0 -248
  650. package/docs/decisions/ADR-110-discipline-profile-resolution-locus.md +0 -112
  651. package/docs/decisions/ADR-111-canonical-glama-listing.md +0 -97
  652. package/docs/decisions/ADR-112-stdio-lite-stays-read-only.md +0 -92
  653. package/docs/decisions/ADR-113-ci-native-release-label-trigger.md +0 -209
  654. package/docs/decisions/ADR-114-commit-policy-iron-law-override.md +0 -85
  655. package/docs/decisions/ADR-115-command-cluster-consolidation-phase-4.md +0 -91
  656. package/docs/decisions/ADR-116-memory-tripwire-activation-path.md +0 -144
  657. package/docs/decisions/ADR-117-subagents-auto-default-on.md +0 -89
  658. package/docs/decisions/ADR-118-loop-engineering-boundaries.md +0 -162
  659. package/docs/decisions/ADR-119-global-knowledge-default-on.md +0 -104
  660. package/docs/decisions/ADR-120-council-chairman-mode.md +0 -70
  661. package/docs/decisions/ADR-121-knowledge-sensitivity-classes.md +0 -90
  662. package/docs/decisions/ADR-122-adversarial-verification-council.md +0 -166
  663. package/docs/decisions/ADR-123-runtime-security-scope-and-spawn-hardening.md +0 -142
  664. package/docs/decisions/ADR-124-embedded-engine-doctrine.md +0 -255
  665. package/docs/decisions/ADR-125-doc-screenshot-anonymization.md +0 -131
  666. package/docs/decisions/ADR-126-internet-reach-operator-tooling.md +0 -254
  667. package/docs/decisions/ADR-127-enforcement-claims-must-resolve.md +0 -150
  668. package/docs/decisions/ADR-128-executable-evidence-and-measured-escalation.md +0 -201
  669. package/docs/decisions/ADR-200-python-to-typescript-migration.md +0 -203
  670. package/docs/decisions/ADR-rule-kernel-and-router.md +0 -133
  671. package/docs/decisions/INDEX.md +0 -157
  672. package/docs/decisions/engine-reclassification-2026-07.md +0 -104
  673. package/docs/deploy/connector-setup.md +0 -129
  674. package/docs/deploy/env-vars.md +0 -70
  675. package/docs/deploy/policy-cookbook.md +0 -130
  676. package/docs/deploy/quickstart.md +0 -112
  677. package/docs/deploy/small-team-recipe.md +0 -148
  678. package/docs/deploy/team-deployment-posture.md +0 -111
  679. package/docs/design/adversarial-council-eval.md +0 -106
  680. package/docs/design/council-vs-solo-baseline.md +0 -92
  681. package/docs/design/cross-model-parity-eval.md +0 -82
  682. package/docs/design/length-neutral-judge-rerun.md +0 -92
  683. package/docs/design/utilization-window-criteria.md +0 -51
  684. package/docs/development.md +0 -230
  685. package/docs/distribution/awesome-list-submission.md +0 -46
  686. package/docs/distribution/consumer-matrix.md +0 -96
  687. package/docs/distribution/launch-story-draft.md +0 -58
  688. package/docs/distribution/mcp-submission-checklist.md +0 -95
  689. package/docs/distribution/public-install-smoke.md +0 -68
  690. package/docs/distribution/registries.md +0 -126
  691. package/docs/distribution/registry-submissions.md +0 -85
  692. package/docs/distribution/telemetry-privacy.md +0 -128
  693. package/docs/distribution/telemetry-schema.md +0 -174
  694. package/docs/distribution/topics-equivalents-decay-policy.md +0 -51
  695. package/docs/end-to-end-walkthroughs.md +0 -165
  696. package/docs/enforcement-by-host.md +0 -51
  697. package/docs/examples/agent-user.example.md +0 -22
  698. package/docs/experiences/agency.md +0 -49
  699. package/docs/experiences/content_creator.md +0 -49
  700. package/docs/experiences/developer.md +0 -49
  701. package/docs/experiences/finance.md +0 -50
  702. package/docs/experiences/founder.md +0 -49
  703. package/docs/experiences/ops.md +0 -49
  704. package/docs/featured-commands.md +0 -27
  705. package/docs/featured-skills.md +0 -95
  706. package/docs/flows.md +0 -67
  707. package/docs/getting-started-by-role.md +0 -190
  708. package/docs/getting-started-laravel.md +0 -72
  709. package/docs/getting-started-local-stdio.md +0 -77
  710. package/docs/getting-started.md +0 -254
  711. package/docs/github-topics.md +0 -93
  712. package/docs/governance-advantage.md +0 -72
  713. package/docs/governance.md +0 -96
  714. package/docs/guides/cross-repo-linked-projects.md +0 -93
  715. package/docs/guides/cross-repo-retrieval.md +0 -61
  716. package/docs/guides/frontend-design-corpus-refresh.md +0 -83
  717. package/docs/guides/gated-platform-reads.md +0 -221
  718. package/docs/guides/local-analytics.md +0 -125
  719. package/docs/guides/local-knowledge.md +0 -127
  720. package/docs/guides/skill-discovery.md +0 -71
  721. package/docs/guides/skill-preview.md +0 -71
  722. package/docs/hook-payload-capture.md +0 -221
  723. package/docs/install-friction-report.md +0 -66
  724. package/docs/installation.md +0 -959
  725. package/docs/maintainers/branch-protection.md +0 -105
  726. package/docs/maintainers/dev-mode.md +0 -106
  727. package/docs/maintainers/optional-media-deps.md +0 -50
  728. package/docs/maintainers/system-map.md +0 -85
  729. package/docs/mcp-registries.md +0 -94
  730. package/docs/mcp-server.md +0 -175
  731. package/docs/mcp.md +0 -147
  732. package/docs/media/proof-demo.cast +0 -14
  733. package/docs/media/proof-demo.gif +0 -0
  734. package/docs/migration/consumer-template-consumption-model.md +0 -145
  735. package/docs/migration/divergences/README.md +0 -55
  736. package/docs/migration/divergences/_template.md +0 -50
  737. package/docs/migration/divergences/bench-stats-float-precision.md +0 -72
  738. package/docs/migration/divergences/mcp-telemetry-node-sqlite.md +0 -61
  739. package/docs/migration/divergences/pack-mcp-content-gzip-body.md +0 -53
  740. package/docs/migration/divergences/src-scripts-build_cloud_bundle.md +0 -63
  741. package/docs/migration/divergences/src-scripts-check_memory.md +0 -91
  742. package/docs/migration/divergences/src-scripts-inventory_abstraction_budget.md +0 -65
  743. package/docs/migration/divergences/src-scripts-lint_marketplace.md +0 -57
  744. package/docs/migration/divergences/src-scripts-lint_mcp_registry_manifest.md +0 -70
  745. package/docs/migration/divergences/src-scripts-spotcheck_thin_root.md +0 -60
  746. package/docs/migration/divergences/src-scripts-validate_agent_settings.md +0 -58
  747. package/docs/migration/node-floor.md +0 -86
  748. package/docs/migration/v1-to-v2.md +0 -156
  749. package/docs/migration/yaml-roundtrip-spike.md +0 -163
  750. package/docs/migrations/commands-1.15.0.md +0 -117
  751. package/docs/parity/bench-external.json +0 -58
  752. package/docs/parity/bench.json +0 -41
  753. package/docs/parity/command-frontmatter.md +0 -60
  754. package/docs/parity/external-runtime.md +0 -46
  755. package/docs/personas.md +0 -178
  756. package/docs/positioning-evidence.md +0 -86
  757. package/docs/profiles.md +0 -108
  758. package/docs/proof.md +0 -252
  759. package/docs/quality.md +0 -98
  760. package/docs/readme-split-plan.md +0 -102
  761. package/docs/recruits/_template.md +0 -81
  762. package/docs/release-runbook.md +0 -141
  763. package/docs/role-experiences.md +0 -19
  764. package/docs/safety.md +0 -30
  765. package/docs/second-brain-scope.md +0 -116
  766. package/docs/self-review-gate.md +0 -65
  767. package/docs/setup/enterprise-and-offline.md +0 -201
  768. package/docs/setup/mcp-client-config.md +0 -358
  769. package/docs/setup/mcp-cloud-endpoints.md +0 -116
  770. package/docs/setup/mcp-cloud-registry-listing.md +0 -99
  771. package/docs/setup/mcp-cloud-setup.md +0 -183
  772. package/docs/setup/mcp-r2-bootstrap.md +0 -82
  773. package/docs/setup/mcp-server-docker.md +0 -101
  774. package/docs/setup/per-ide/aider.md +0 -48
  775. package/docs/setup/per-ide/antigravity.md +0 -68
  776. package/docs/setup/per-ide/augment.md +0 -89
  777. package/docs/setup/per-ide/claude-code.md +0 -97
  778. package/docs/setup/per-ide/claude-desktop.md +0 -207
  779. package/docs/setup/per-ide/cline.md +0 -43
  780. package/docs/setup/per-ide/codebuddy.md +0 -63
  781. package/docs/setup/per-ide/codex.md +0 -46
  782. package/docs/setup/per-ide/continue.md +0 -68
  783. package/docs/setup/per-ide/copilot.md +0 -80
  784. package/docs/setup/per-ide/cursor.md +0 -125
  785. package/docs/setup/per-ide/droid.md +0 -65
  786. package/docs/setup/per-ide/gemini-cli.md +0 -45
  787. package/docs/setup/per-ide/jetbrains.md +0 -76
  788. package/docs/setup/per-ide/kilocode.md +0 -66
  789. package/docs/setup/per-ide/kiro.md +0 -72
  790. package/docs/setup/per-ide/opencode.md +0 -62
  791. package/docs/setup/per-ide/qoder.md +0 -63
  792. package/docs/setup/per-ide/roocode.md +0 -68
  793. package/docs/setup/per-ide/trae.md +0 -63
  794. package/docs/setup/per-ide/warp.md +0 -63
  795. package/docs/setup/per-ide/windsurf.md +0 -109
  796. package/docs/setup/per-ide/zed.md +0 -73
  797. package/docs/showcase.md +0 -209
  798. package/docs/skill-duplication-findings.md +0 -91
  799. package/docs/skills-catalog.md +0 -265
  800. package/docs/skills-taxonomy.md +0 -90
  801. package/docs/spawn-site-policy.md +0 -72
  802. package/docs/succession.md +0 -80
  803. package/docs/threat-model.md +0 -30
  804. package/docs/troubleshooting.md +0 -155
  805. package/docs/ui-track-mental-model.md +0 -121
  806. package/docs/us-vs-the-category.md +0 -38
  807. package/docs/value.md +0 -86
  808. package/docs/walkthroughs/assets/workspace-role-grid.png +0 -0
  809. package/docs/walkthroughs/assets/workspace-session-started.png +0 -0
  810. package/docs/walkthroughs/assets/workspace-task-picker.png +0 -0
  811. package/docs/walkthroughs/daily-workspace-a11y.md +0 -87
  812. package/docs/walkthroughs/daily-workspace.md +0 -127
  813. package/docs/wedge/production-validator/README.md +0 -81
  814. package/docs/wedge/production-validator/first-run-check.sh +0 -42
  815. package/docs/wedge/production-validator/production-validator.md +0 -83
  816. package/docs/wizard.md +0 -173
  817. package/src/scripts/postinstall_gui.ts +0 -129
@@ -0,0 +1,20 @@
1
+ {
2
+ "_comment": "Pre-registered hook-latency budget (road-to-credible-install Phase 1). Committed BEFORE the first optimization landed, per the roadmap's pre-registration discipline: the numbers below are the acceptance bar the precompile + single-process work is measured against, not a post-hoc fit. Consumed by the bench harness (scripts/bench_hook_latency) and its CI gate. Every budget carries an owner and a review date per the Phase-6 budget-ownership lint.",
3
+ "schema_version": 1,
4
+ "registered_at": "2026-07-27",
5
+ "owner": "maintainer",
6
+ "review_by": "2027-07-27",
7
+ "hardware_reference": {
8
+ "ci": "GitHub-hosted ubuntu-latest runner (the numbers the gate enforces)",
9
+ "floor": "1 vCPU reference container (documented ceiling, not CI-enforced)"
10
+ },
11
+ "budgets_ms": {
12
+ "pre_tool_use": { "p95_ci": 150, "p95_1vcpu": 400 },
13
+ "any_hook_event": { "p95_ci": 250 }
14
+ },
15
+ "regression_gate": {
16
+ "max_regression_pct": 200,
17
+ "_comment": "Pathology net only — the ABSOLUTE budgets above are the binding gate for wall-clock. The original 20% window was falsified by measured GitHub-runner variance: two CI runs of IDENTICAL code measured p95 77-89 ms and 92-103 ms (+23% run-to-run, 2026-07-27, runs 30303438480 / round-2 tests.yml). Same rationale as the regression_pct 200 override on the evaluator timing budgets: a tight creep rule on shared-runner wall-clock flaps; sizes/counts keep tight windows, timings get absolute caps."
18
+ },
19
+ "honest_null_consequence": "If the budget is missed after precompile + single-process + lazy I/O, hooks ship default-off with an explicit opt-in flag and the measured numbers published under a 'known cost' heading. A resident-dispatcher daemon is NOT improvised as a rescue (council 2026-07-26)."
20
+ }
@@ -0,0 +1,90 @@
1
+ /**
2
+ * agent-switch detection — passive wizard recommendation (S0.1 honest-null
3
+ * council verdict, 2026-07-28: PASSIVE ROW ONLY, never a proactive card).
4
+ *
5
+ * agent-switch (https://github.com/event4u-app/agent-switch,
6
+ * `@event4u/agent-switch` on npm) isolates multiple agent accounts into
7
+ * per-account profiles (`CLAUDE_CONFIG_DIR`) so switching accounts never
8
+ * requires a re-login. Unlike rtk, the install command is npm-global and
9
+ * identical on every OS — no per-OS command map, no name collision to
10
+ * disambiguate.
11
+ *
12
+ * Two independent installed-signals, either is sufficient:
13
+ * - the `agent-switch` binary is resolvable on PATH (the documented
14
+ * npm-global install), OR
15
+ * - `~/.agent-switch/` exists — a user who installed it another way must
16
+ * never be told to install it again.
17
+ *
18
+ * Version is only probed when the binary is on PATH (the directory-only
19
+ * signal carries no version information — reported as `null`). There is
20
+ * deliberately NO version-currency check and NO network call here — the
21
+ * wizard only ever answers "installed or not", never "up to date" (roadmap
22
+ * acceptance criterion: this module does not report on agent-switch's
23
+ * version currency).
24
+ */
25
+ import { spawnSync } from 'node:child_process';
26
+ import { existsSync } from 'node:fs';
27
+ import { homedir } from 'node:os';
28
+ import { join } from 'node:path';
29
+ import { resolveBinaryOnPath } from './rtkDetection.js';
30
+
31
+ export const AGENT_SWITCH_REPO = 'event4u-app/agent-switch';
32
+ export const AGENT_SWITCH_NPM = '@event4u/agent-switch';
33
+ export const AGENT_SWITCH_INSTALL_COMMAND = 'npm install -g @event4u/agent-switch';
34
+
35
+ export interface AgentSwitchDetection {
36
+ installed: boolean;
37
+ version: string | null;
38
+ }
39
+
40
+ export interface DetectAgentSwitchOptions {
41
+ /** Override the home directory (tests). */
42
+ home?: string;
43
+ /** Override PATH (tests). */
44
+ pathEnv?: string;
45
+ /** Override the version probe (tests). Receives the resolved binary path. */
46
+ probeVersion?: (bin: string) => string | null;
47
+ }
48
+
49
+ const PROBE_TIMEOUT_MS = 2000;
50
+
51
+ /** First dotted-number token in `output`, or `null` when none is present. */
52
+ export function parseVersionOutput(output: string): string | null {
53
+ const m = /(\d+\.\d+(?:\.\d+)?)/.exec(output);
54
+ return m?.[1] ?? null;
55
+ }
56
+
57
+ function defaultProbeVersion(bin: string): string | null {
58
+ try {
59
+ const res = spawnSync(bin, ['--version'], {
60
+ timeout: PROBE_TIMEOUT_MS,
61
+ encoding: 'utf-8',
62
+ windowsHide: true,
63
+ });
64
+ if (res.error !== undefined || res.signal !== null) return null;
65
+ return parseVersionOutput(`${res.stdout ?? ''}\n${res.stderr ?? ''}`);
66
+ } catch {
67
+ return null;
68
+ }
69
+ }
70
+
71
+ /**
72
+ * Detect agent-switch installation. Never throws — every failure mode
73
+ * (spawn error, timeout, unparsable output) collapses to `version: null`.
74
+ */
75
+ export function detectAgentSwitch(options: DetectAgentSwitchOptions = {}): AgentSwitchDetection {
76
+ const binPath = resolveBinaryOnPath('agent-switch', options.pathEnv);
77
+ if (binPath !== null) {
78
+ const probe = options.probeVersion ?? defaultProbeVersion;
79
+ let version: string | null;
80
+ try {
81
+ version = probe(binPath);
82
+ } catch {
83
+ version = null;
84
+ }
85
+ return { installed: true, version };
86
+ }
87
+ const home = options.home ?? homedir();
88
+ const dirInstalled = existsSync(join(home, '.agent-switch'));
89
+ return { installed: dirInstalled, version: null };
90
+ }
@@ -0,0 +1,131 @@
1
+ /**
2
+ * Detect whether AC is currently running under an agent-switch (AS)
3
+ * profile (`road-to-reciprocal-ecosystem.md` Phase 2 — correctness
4
+ * work, not the Phase 1 promotion card).
5
+ *
6
+ * Pure and injectable: reads only the supplied environment map, no
7
+ * filesystem I/O. Detection is deliberately topology-free — it never
8
+ * needs to understand AS's on-disk share model (that lives in
9
+ * `sharedWriteCheck.ts`, which DOES touch disk via `lstat`).
10
+ *
11
+ * AS root resolution mirrors `agent-switch/src/profiles.ts:11`:
12
+ * `AGENT_SWITCH_HOME` env override, else `~/.agent-switch`. Profile
13
+ * config dirs live at `<ROOT>/<provider>/<name>/config` (profiles.ts
14
+ * :143-145). Provider env vars mirror `agent-switch/src/providers.ts`:
15
+ * claude → `CLAUDE_CONFIG_DIR`, codex → `CODEX_HOME`. `HOME`
16
+ * (antigravity's provider var) is deliberately NOT checked here — it
17
+ * is set on every process, so treating it as an AS signal would
18
+ * false-positive constantly; antigravity profile detection is left to
19
+ * a future, more specific probe.
20
+ */
21
+ import { homedir } from 'node:os';
22
+ import * as path from 'node:path';
23
+
24
+ export interface AgentSwitchProfile {
25
+ active: boolean;
26
+ provider: string | null;
27
+ profile: string | null;
28
+ }
29
+
30
+ const INACTIVE: AgentSwitchProfile = { active: false, provider: null, profile: null };
31
+
32
+ /** Provider env vars checked, in priority order (claude wins on a tie). */
33
+ const PROVIDER_ENV_VARS: readonly string[] = ['CLAUDE_CONFIG_DIR', 'CODEX_HOME'];
34
+
35
+ interface AgentSwitchMatch {
36
+ /** The resolved AS root implied by the matching env var. */
37
+ root: string;
38
+ /** Path segments below `root` (e.g. `[provider, profile, 'config']`). */
39
+ afterRoot: string[];
40
+ }
41
+
42
+ /** Expand a leading `~` the way a shell would, for env values set programmatically. */
43
+ function expandTilde(p: string): string {
44
+ if (p === '~') return homedir();
45
+ if (p.startsWith('~/') || (process.platform === 'win32' && p.startsWith('~\\'))) {
46
+ return path.join(homedir(), p.slice(2));
47
+ }
48
+ return p;
49
+ }
50
+
51
+ function normalize(p: string): string {
52
+ return path.resolve(expandTilde(p));
53
+ }
54
+
55
+ function nonEmpty(v: string | undefined): v is string {
56
+ return typeof v === 'string' && v.trim() !== '';
57
+ }
58
+
59
+ /**
60
+ * Find the first provider env var whose (normalized) value lies
61
+ * inside the AS root, and return the root + the path segments below
62
+ * it. Shared by `detectAgentSwitchProfile` and `resolveAgentSwitchRoot`
63
+ * so both stay in lockstep with a single matching rule.
64
+ */
65
+ function resolveMatch(env: NodeJS.ProcessEnv): AgentSwitchMatch | null {
66
+ const overrideRaw = env['AGENT_SWITCH_HOME'];
67
+ const overrideRoot = nonEmpty(overrideRaw) ? normalize(overrideRaw) : null;
68
+
69
+ for (const varName of PROVIDER_ENV_VARS) {
70
+ const raw = env[varName];
71
+ if (!nonEmpty(raw)) continue;
72
+ const candidate = normalize(raw);
73
+
74
+ let root: string | null = null;
75
+ if (overrideRoot !== null) {
76
+ if (candidate === overrideRoot || candidate.startsWith(overrideRoot + path.sep)) {
77
+ root = overrideRoot;
78
+ }
79
+ } else {
80
+ const bareMarker = `${path.sep}.agent-switch`;
81
+ const nestedMarker = `${bareMarker}${path.sep}`;
82
+ if (candidate.endsWith(bareMarker)) {
83
+ root = candidate;
84
+ } else {
85
+ const idx = candidate.indexOf(nestedMarker);
86
+ if (idx !== -1) root = candidate.slice(0, idx + bareMarker.length);
87
+ }
88
+ }
89
+ if (root === null) continue;
90
+
91
+ const rest = candidate === root ? '' : candidate.slice(root.length + 1);
92
+ const afterRoot = rest === '' ? [] : rest.split(path.sep).filter((s) => s.length > 0);
93
+ return { root, afterRoot };
94
+ }
95
+ return null;
96
+ }
97
+
98
+ /**
99
+ * Detect the active AS profile (if any) from the current environment.
100
+ *
101
+ * - Not inside `.agent-switch` at all → `{ active: false, ... }`.
102
+ * - Inside the AS root, but the env var points AT the root itself
103
+ * (no `<provider>/<profile>` segments below it) → treated as
104
+ * inactive; an env var pointing at the bare root is not a profile
105
+ * directory.
106
+ * - Inside the AS root with only one segment below it (a provider dir
107
+ * with no profile name) → active, but unparseable (`provider`/
108
+ * `profile` both `null`).
109
+ * - Inside the AS root with `<provider>/<profile>/...` below it →
110
+ * active, with `provider`/`profile` parsed from the first two
111
+ * segments.
112
+ */
113
+ export function detectAgentSwitchProfile(env: NodeJS.ProcessEnv = process.env): AgentSwitchProfile {
114
+ const match = resolveMatch(env);
115
+ if (match === null) return INACTIVE;
116
+ if (match.afterRoot.length === 0) return INACTIVE;
117
+ if (match.afterRoot.length < 2) return { active: true, provider: null, profile: null };
118
+ // `length >= 2` guaranteed above — `??` only satisfies noUncheckedIndexedAccess.
119
+ return { active: true, provider: match.afterRoot[0] ?? null, profile: match.afterRoot[1] ?? null };
120
+ }
121
+
122
+ /**
123
+ * Resolve the AS root directory implied by the environment (the same
124
+ * matching rule `detectAgentSwitchProfile` uses), for callers that
125
+ * need a boundary to stop an upward filesystem walk at — see
126
+ * `sharedWriteCheck.ts`. Returns `null` when no provider env var
127
+ * resolves inside an AS tree.
128
+ */
129
+ export function resolveAgentSwitchRoot(env: NodeJS.ProcessEnv = process.env): string | null {
130
+ return resolveMatch(env)?.root ?? null;
131
+ }
@@ -2,7 +2,7 @@
2
2
  * Atomic file writer — Phase A4 primitive.
3
3
  *
4
4
  * 1:1 port of the `tempfile.mkstemp` + `os.replace` pattern used across
5
- * `scripts/install.py` (see `_write_consumer_bridge_marker` ~line 3036).
5
+ * the retired Python installer's `_write_consumer_bridge_marker` (ADR-200).
6
6
  *
7
7
  * Contract:
8
8
  * 1. Open a sibling `.tmp.<rand>` file in the destination directory
@@ -26,7 +26,7 @@ import type { InstallTarget } from './types.js';
26
26
  /**
27
27
  * Settings-file name used as the strongest project-scope signal.
28
28
  *
29
- * Matches `SETTINGS_FILE` in `scripts/install.py`. Presence in `cwd`
29
+ * Matches `SETTINGS_FILE` in the retired Python installer (ADR-200). Presence in `cwd`
30
30
  * short-circuits scope detection to `'project'` without consulting
31
31
  * the manifest / AI-tool lists.
32
32
  */
@@ -0,0 +1,274 @@
1
+ /**
2
+ * rtk (Rust Token Killer) detection — two-stage identity probe.
3
+ *
4
+ * rtk is a THIRD-PARTY Apache-2.0 tool (upstream: https://github.com/rtk-ai/rtk,
5
+ * not an event4u project). Its binary name collides with an unrelated crate —
6
+ * `reachingforthejack/rtk` (Rust Type Kit), which is also what the bare
7
+ * crates.io `rtk` crate resolves to. Upstream's INSTALL.md documents the
8
+ * collision and the discriminator: `rtk gain` renders the token-savings
9
+ * dashboard only on Rust Token Killer.
10
+ *
11
+ * Stage 1 — presence: an executable named `rtk` resolvable on PATH.
12
+ * Stage 2 — identity: run `rtk gain` (short timeout) and judge the OUTPUT
13
+ * SIGNATURE, not the exit code (upstream documents no exit-code contract for
14
+ * `rtk gain`, and `rtk --version` does not distinguish the two tools — both
15
+ * print `rtk <ver>`). The signature is the dashboard header "RTK Token
16
+ * Savings" (captured live from rtk 0.43.0, 2026-07-28).
17
+ *
18
+ * Four states, never a boolean — a broken RIGHT tool is not the WRONG tool:
19
+ * { present: false }
20
+ * { present: true, identity: 'token-killer', version } — signature matched
21
+ * { present: true, identity: 'unknown-rtk' } — probe ran, output
22
+ * clearly not Token Killer (e.g. unknown-subcommand / usage error)
23
+ * { present: true, identity: 'unverified' } — timeout, spawn
24
+ * failure, crash, or ambiguous (empty) output
25
+ *
26
+ * Consumers: the wizard `detect-rtk` endpoint, the `rtk:detect` CLI readout,
27
+ * and the `rtk_wrap` PreToolUse hook (which gates on
28
+ * `identity === 'token-killer'` — never on bare presence). Contract:
29
+ * docs/contracts/rtk-detection.md.
30
+ */
31
+ import { spawnSync } from 'node:child_process';
32
+ import { existsSync, statSync, readFileSync, writeFileSync, mkdirSync } from 'node:fs';
33
+ import { homedir } from 'node:os';
34
+ import { delimiter, join, dirname } from 'node:path';
35
+
36
+ export const RTK_UPSTREAM_REPO = 'https://github.com/rtk-ai/rtk';
37
+
38
+ export type RtkIdentity = 'token-killer' | 'unknown-rtk' | 'unverified';
39
+
40
+ export interface RtkDetection {
41
+ /** An executable named `rtk` is resolvable on PATH. */
42
+ present: boolean;
43
+ /** Only set when present. */
44
+ identity?: RtkIdentity;
45
+ /** Only set when identity === 'token-killer' (from `rtk --version`). */
46
+ version?: string;
47
+ /** Resolved binary path (diagnostic; only set when present). */
48
+ binPath?: string;
49
+ }
50
+
51
+ /**
52
+ * Output signature of Rust Token Killer's `rtk gain` savings dashboard.
53
+ * Rust Type Kit has no `gain` subcommand and errors with a usage message
54
+ * that never contains this header.
55
+ */
56
+ const TOKEN_KILLER_GAIN_SIGNATURE = /RTK Token Savings/;
57
+
58
+ /** Probe timeout — `rtk gain` renders from a local DB (sub-second upstream). */
59
+ const PROBE_TIMEOUT_MS = 3000;
60
+
61
+ /** Resolve the first executable named `name` on the given PATH string. */
62
+ export function resolveBinaryOnPath(name: string, pathEnv?: string): string | null {
63
+ const pathVar = pathEnv ?? process.env['PATH'] ?? '';
64
+ if (pathVar.length === 0) return null;
65
+ const suffixes = process.platform === 'win32' ? ['', '.exe', '.cmd', '.bat'] : [''];
66
+ for (const dir of pathVar.split(delimiter)) {
67
+ if (dir.length === 0) continue;
68
+ for (const suffix of suffixes) {
69
+ const candidate = join(dir, `${name}${suffix}`);
70
+ if (existsSync(candidate)) return candidate;
71
+ }
72
+ }
73
+ return null;
74
+ }
75
+
76
+ export interface ProbeResult {
77
+ /** Process completed (spawned and exited, regardless of exit code). */
78
+ completed: boolean;
79
+ stdout: string;
80
+ stderr: string;
81
+ }
82
+
83
+ type ProbeFn = (binPath: string) => ProbeResult;
84
+
85
+ function runGainProbe(binPath: string): ProbeResult {
86
+ try {
87
+ const res = spawnSync(binPath, ['gain'], {
88
+ timeout: PROBE_TIMEOUT_MS,
89
+ encoding: 'utf-8',
90
+ windowsHide: true,
91
+ });
92
+ // spawn error or timeout/signal kill → not a completed probe.
93
+ if (res.error !== undefined || res.signal !== null) {
94
+ return { completed: false, stdout: res.stdout ?? '', stderr: res.stderr ?? '' };
95
+ }
96
+ return { completed: true, stdout: res.stdout ?? '', stderr: res.stderr ?? '' };
97
+ } catch {
98
+ return { completed: false, stdout: '', stderr: '' };
99
+ }
100
+ }
101
+
102
+ function readVersion(binPath: string): string | undefined {
103
+ try {
104
+ const res = spawnSync(binPath, ['--version'], {
105
+ timeout: PROBE_TIMEOUT_MS,
106
+ encoding: 'utf-8',
107
+ windowsHide: true,
108
+ });
109
+ const m = /^rtk\s+(\S+)/m.exec(res.stdout ?? '');
110
+ return m?.[1];
111
+ } catch {
112
+ return undefined;
113
+ }
114
+ }
115
+
116
+ /** Judge identity from a finished probe — output signature, never exit code. */
117
+ export function classifyGainOutput(probe: ProbeResult): RtkIdentity {
118
+ if (!probe.completed) return 'unverified';
119
+ const combined = `${probe.stdout}\n${probe.stderr}`;
120
+ if (TOKEN_KILLER_GAIN_SIGNATURE.test(probe.stdout)) return 'token-killer';
121
+ // Probe ran and produced output that is clearly not the savings dashboard
122
+ // (Rust Type Kit answers `gain` with a usage/unknown-subcommand error).
123
+ if (combined.trim().length > 0) return 'unknown-rtk';
124
+ // Completed silently with no output — ambiguous, don't accuse the tool.
125
+ return 'unverified';
126
+ }
127
+
128
+ export interface DetectRtkOptions {
129
+ /** Override PATH (tests / isolated probes). */
130
+ pathEnv?: string;
131
+ /** Override the gain probe (tests). */
132
+ probe?: ProbeFn;
133
+ /** Override the version read (tests). */
134
+ versionReader?: (binPath: string) => string | undefined;
135
+ }
136
+
137
+ /**
138
+ * Two-stage rtk detection. Never throws; failure modes collapse into
139
+ * `unverified` (fail-open for diagnostics, fail-CLOSED for consumers that
140
+ * gate behavior — `rtk_wrap` activates only on `token-killer`).
141
+ */
142
+ export function detectRtk(options: DetectRtkOptions = {}): RtkDetection {
143
+ const binPath = resolveBinaryOnPath('rtk', options.pathEnv);
144
+ if (binPath === null) return { present: false };
145
+ const probe = options.probe ?? runGainProbe;
146
+ const identity = classifyGainOutput(probe(binPath));
147
+ if (identity !== 'token-killer') return { present: true, identity, binPath };
148
+ const version = (options.versionReader ?? readVersion)(binPath);
149
+ return version === undefined
150
+ ? { present: true, identity, binPath }
151
+ : { present: true, identity, version, binPath };
152
+ }
153
+
154
+ /* ------------------------------------------------------------------ */
155
+ /* Cached variant — for high-frequency callers (PreToolUse hook). */
156
+ /* ------------------------------------------------------------------ */
157
+
158
+ interface IdentityCacheEntry {
159
+ binPath: string;
160
+ mtimeMs: number;
161
+ size: number;
162
+ identity: RtkIdentity;
163
+ version?: string;
164
+ checkedAt: string;
165
+ }
166
+
167
+ function cacheFile(): string {
168
+ return join(homedir(), '.event4u', 'agent-config', 'state', 'rtk-identity.json');
169
+ }
170
+
171
+ /**
172
+ * `detectRtk` with a user-global identity cache keyed on the resolved binary's
173
+ * path + mtime + size — the probe re-runs only when the binary changes. An
174
+ * `unverified` verdict is never cached (transient by definition). Any cache
175
+ * I/O error falls through to a live probe (fail-open).
176
+ */
177
+ export function detectRtkCached(options: DetectRtkOptions = {}): RtkDetection {
178
+ const binPath = resolveBinaryOnPath('rtk', options.pathEnv);
179
+ if (binPath === null) return { present: false };
180
+
181
+ let stat: { mtimeMs: number; size: number } | null = null;
182
+ try {
183
+ const st = statSync(binPath);
184
+ stat = { mtimeMs: st.mtimeMs, size: st.size };
185
+ } catch {
186
+ stat = null;
187
+ }
188
+
189
+ const file = cacheFile();
190
+ if (stat !== null) {
191
+ try {
192
+ const cached = JSON.parse(readFileSync(file, 'utf-8')) as IdentityCacheEntry;
193
+ if (
194
+ cached.binPath === binPath &&
195
+ cached.mtimeMs === stat.mtimeMs &&
196
+ cached.size === stat.size
197
+ ) {
198
+ return cached.version === undefined
199
+ ? { present: true, identity: cached.identity, binPath }
200
+ : { present: true, identity: cached.identity, version: cached.version, binPath };
201
+ }
202
+ } catch {
203
+ /* no / stale / unreadable cache — fall through to a live probe */
204
+ }
205
+ }
206
+
207
+ const detection = detectRtk(options);
208
+ if (stat !== null && detection.identity !== undefined && detection.identity !== 'unverified') {
209
+ const entry: IdentityCacheEntry = {
210
+ binPath,
211
+ mtimeMs: stat.mtimeMs,
212
+ size: stat.size,
213
+ identity: detection.identity,
214
+ checkedAt: new Date().toISOString(),
215
+ };
216
+ if (detection.version !== undefined) entry.version = detection.version;
217
+ try {
218
+ mkdirSync(dirname(file), { recursive: true });
219
+ writeFileSync(file, `${JSON.stringify(entry, null, 2)}\n`, 'utf-8');
220
+ } catch {
221
+ /* cache write is best-effort */
222
+ }
223
+ }
224
+ return detection;
225
+ }
226
+
227
+ /* ------------------------------------------------------------------ */
228
+ /* Per-OS install commands — verified upstream paths only. */
229
+ /* ------------------------------------------------------------------ */
230
+
231
+ export interface RtkInstallCommands {
232
+ /** The primary copy-and-run command for this platform. */
233
+ recommended: string;
234
+ /** Human-readable label for the recommended path. */
235
+ recommendedLabel: string;
236
+ /** Secondary/manual path (only where a packaged one may be unavailable). */
237
+ manual?: string;
238
+ manualLabel?: string;
239
+ /** Caveat the UI must surface next to the command. */
240
+ note?: string;
241
+ }
242
+
243
+ /**
244
+ * Per-OS install commands from verified upstream paths. NEVER emit a bare
245
+ * `cargo install rtk` — the crates.io `rtk` crate is the colliding Rust Type
246
+ * Kit, not Rust Token Killer.
247
+ */
248
+ export function rtkInstallCommands(platform: NodeJS.Platform = process.platform): RtkInstallCommands {
249
+ switch (platform) {
250
+ case 'darwin':
251
+ return {
252
+ recommended: 'brew install rtk',
253
+ recommendedLabel: 'Homebrew (official homebrew-core formula)',
254
+ };
255
+ case 'win32':
256
+ return {
257
+ recommended: 'winget install rtk-ai.rtk',
258
+ recommendedLabel: 'Recommended (automated, winget)',
259
+ manual: `Download rtk-x86_64-pc-windows-msvc.zip from ${RTK_UPSTREAM_REPO}/releases and place rtk.exe on PATH`,
260
+ manualLabel: 'Manual (all Windows versions, incl. winget-less images)',
261
+ note:
262
+ 'ripgrep is a documented Windows runtime dependency: `winget install BurntSushi.ripgrep.MSVC`. ' +
263
+ 'The winget path is documented upstream (microsoft/winget-pkgs manifests) but has not been live-verified by agent-config — verify with `rtk gain` after install.',
264
+ };
265
+ default:
266
+ // linux + everything POSIX-ish: upstream's install.sh (errors out
267
+ // on unsupported platforms itself; installs to ~/.local/bin).
268
+ return {
269
+ recommended: `curl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/master/install.sh | sh`,
270
+ recommendedLabel: "Upstream install.sh (installs to ~/.local/bin)",
271
+ note: 'Ensure ~/.local/bin is on PATH.',
272
+ };
273
+ }
274
+ }
@@ -36,10 +36,16 @@ import { rule_in_scope } from '../scripts/condense.js';
36
36
  */
37
37
  export const COMPAT_ALWAYS_EXCLUDED: readonly string[] = ['source-of-truth.md'];
38
38
 
39
- /** Workspace/pack scope read from consumer settings. `null` axis = unset. */
39
+ /**
40
+ * Workspace/pack/role scope read from consumer settings. `null` axis =
41
+ * unset. `roles` is optional (additive — road-to-lean-agent-init Phase 4,
42
+ * the subagent role-scoping axis) so pre-existing `RuleScope` literals
43
+ * without the field keep compiling unchanged.
44
+ */
40
45
  export interface RuleScope {
41
46
  readonly workspaces: readonly string[] | null;
42
47
  readonly packs: readonly string[] | null;
48
+ readonly roles?: readonly string[] | null;
43
49
  }
44
50
 
45
51
  export const LEGACY_ALL: RuleScope = { workspaces: null, packs: null };
@@ -66,6 +72,7 @@ export function ruleScopeFromSettings(settings: Record<string, unknown>): RuleSc
66
72
  return {
67
73
  workspaces: _list(p['rule_workspaces']),
68
74
  packs: _list(p['rule_packs']),
75
+ roles: _list(p['rule_roles']),
69
76
  };
70
77
  }
71
78
 
@@ -85,7 +92,7 @@ export function ruleFileArrives(sourcePath: string, scope: RuleScope): boolean {
85
92
  if (COMPAT_ALWAYS_EXCLUDED.includes(basename)) {
86
93
  return false;
87
94
  }
88
- return rule_in_scope(sourcePath, scope.workspaces, scope.packs);
95
+ return rule_in_scope(sourcePath, scope.workspaces, scope.packs, scope.roles ?? null);
89
96
  }
90
97
 
91
98
  /**
@@ -2,7 +2,7 @@
2
2
  * Core types for the unified TypeScript install engine (v4.0.0).
3
3
  *
4
4
  * Mirrors the on-disk schema used by the legacy Python installer
5
- * (`scripts/install.py`) so the v4 engine reads/writes the same
5
+ * (the retired Python installer, ADR-200) so the v4 engine reads/writes the same
6
6
  * `~/.event4u/agent-config/` tree and v2 manifest entries without a
7
7
  * migration step.
8
8
  *
@@ -10,7 +10,7 @@
10
10
  * apply, and conflict-resolution modules. Pure types, no runtime
11
11
  * dependencies.
12
12
  *
13
- * Reference: `scripts/install.py`
13
+ * Reference: the retired Python installer (ADR-200)
14
14
  * - `_file_entry()` → {@link FileEntry}
15
15
  * - `class ConflictPolicy` → {@link ConflictPolicy}
16
16
  * - v2 manifest `files_by_tool` → {@link InstallPlan.filesByTool}
@@ -63,7 +63,7 @@ export const USER_SCOPE_PATHS: Readonly<Record<string, string>> = {
63
63
 
64
64
  /**
65
65
  * Universal Anthropic-shaped skill bundle deployed to markdown-skills
66
- * tools. Mirrors `_CLAUDE_SKILL_BUNDLE` in `scripts/install.py`.
66
+ * tools. Mirrors `_CLAUDE_SKILL_BUNDLE` in the retired Python installer (ADR-200).
67
67
  */
68
68
  const CLAUDE_SKILL_BUNDLE: ReadonlyArray<readonly [string, string]> = [
69
69
  ['dist/agent-src/rules', 'rules'],
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Permanent wizard-recommendation dismissals, persisted at
3
+ * `~/.event4u/agent-config/wizard-dismissals.json`.
4
+ *
5
+ * A dismissed recommendation (e.g. `"agent-switch"`) never returns — there
6
+ * is deliberately NO un-dismiss function (S0.1 council verdict, 2026-07-28:
7
+ * a passive row the user closed once stays closed). The file lives in the
8
+ * user-global config root, not inside the installed package, so a
9
+ * dismissal survives package updates.
10
+ *
11
+ * `AGENT_CONFIG_WIZARD_DISMISSALS` overrides the path (tests only).
12
+ */
13
+ import { readFileSync, writeFileSync, mkdirSync } from 'node:fs';
14
+ import { homedir } from 'node:os';
15
+ import { resolve, dirname } from 'node:path';
16
+
17
+ function wizardDismissalsPath(): string {
18
+ const override = process.env['AGENT_CONFIG_WIZARD_DISMISSALS'];
19
+ if (override !== undefined && override.length > 0) return override;
20
+ return resolve(homedir(), '.event4u', 'agent-config', 'wizard-dismissals.json');
21
+ }
22
+
23
+ interface DismissalsFile {
24
+ dismissed?: unknown;
25
+ }
26
+
27
+ /**
28
+ * Return the recorded dismissal ids, or `[]` when absent / unreadable.
29
+ * Best-effort: a missing or corrupted file behaves as "nothing dismissed
30
+ * yet" rather than throwing.
31
+ */
32
+ export function readDismissedRecommendations(): readonly string[] {
33
+ try {
34
+ const raw = readFileSync(wizardDismissalsPath(), 'utf8');
35
+ const parsed = JSON.parse(raw) as DismissalsFile;
36
+ return Array.isArray(parsed.dismissed)
37
+ ? parsed.dismissed.filter((d): d is string => typeof d === 'string')
38
+ : [];
39
+ } catch {
40
+ return [];
41
+ }
42
+ }
43
+
44
+ /**
45
+ * Record `id` as permanently dismissed. Idempotent — a repeat call for an
46
+ * already-dismissed id is a no-op.
47
+ */
48
+ export function dismissRecommendation(id: string): void {
49
+ try {
50
+ const existing = readDismissedRecommendations();
51
+ if (existing.includes(id)) return;
52
+ const path = wizardDismissalsPath();
53
+ mkdirSync(dirname(path), { recursive: true, mode: 0o700 });
54
+ const record = { dismissed: [...existing, id] };
55
+ writeFileSync(path, `${JSON.stringify(record, null, 2)}\n`, { encoding: 'utf8', mode: 0o600 });
56
+ } catch {
57
+ // Best-effort: a failed write just means the recommendation may
58
+ // resurface on the next load — never throw out of a dismiss action.
59
+ }
60
+ }