@event4u/agent-config 8.4.0 → 8.5.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 (682) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/CHANGELOG.md +73 -0
  3. package/README.md +17 -5
  4. package/dist/agent-src/README.md +1 -1
  5. package/dist/agent-src/commands/{analyze-reference-repo.md → analyze/reference-repo.md} +3 -1
  6. package/dist/agent-src/commands/analyze.md +9 -6
  7. package/dist/agent-src/commands/{bug-fix.md → bug/fix.md} +3 -1
  8. package/dist/agent-src/commands/{bug-investigate.md → bug/investigate.md} +4 -2
  9. package/dist/agent-src/commands/bug.md +59 -0
  10. package/dist/agent-src/commands/{set-cost-profile.md → cost/profile.md} +9 -6
  11. package/dist/agent-src/commands/{cost-report.md → cost/report.md} +18 -17
  12. package/dist/agent-src/commands/cost.md +57 -0
  13. package/dist/agent-src/commands/evals/{review-changes.json → review.json} +12 -8
  14. package/dist/agent-src/commands/{quality-fix.md → fix/quality.md} +5 -2
  15. package/dist/agent-src/commands/fix.md +7 -4
  16. package/dist/agent-src/commands/optimize/project.md +250 -0
  17. package/dist/agent-src/commands/{optimize-prompt.md → optimize/prompt.md} +3 -2
  18. package/dist/agent-src/commands/optimize.md +17 -12
  19. package/dist/agent-src/commands/{package-reset.md → package/reset.md} +2 -0
  20. package/dist/agent-src/commands/{package-test.md → package/test.md} +3 -1
  21. package/dist/agent-src/commands/package.md +56 -0
  22. package/dist/agent-src/commands/{project-analyze.md → project/analyze.md} +10 -8
  23. package/dist/agent-src/commands/{project-health.md → project/health.md} +2 -0
  24. package/dist/agent-src/commands/project.md +60 -0
  25. package/dist/agent-src/commands/{review-changes.md → review/changes.md} +26 -24
  26. package/dist/agent-src/commands/{review-routing.md → review/routing.md} +21 -17
  27. package/dist/agent-src/commands/review.md +61 -0
  28. package/dist/agent-src/commands/security-audit-config.md +24 -23
  29. package/dist/agent-src/commands/{sync-agent-settings.md → sync/agent-settings.md} +11 -7
  30. package/dist/agent-src/commands/{sync-gitignore → sync/gitignore}/fix.md +36 -27
  31. package/dist/agent-src/commands/{sync-gitignore.md → sync/gitignore.md} +22 -21
  32. package/dist/agent-src/commands/sync.md +58 -0
  33. package/dist/agent-src/commands/{e2e-heal.md → tests/e2e-heal.md} +5 -2
  34. package/dist/agent-src/commands/{e2e-plan.md → tests/e2e-plan.md} +5 -2
  35. package/dist/agent-src/commands/tests.md +11 -5
  36. package/dist/agent-src/contexts/augment-infrastructure.md +3 -3
  37. package/dist/agent-src/contexts/execution/toolchain-resolver.md +1 -1
  38. package/dist/agent-src/contexts/skills-and-commands.md +2 -2
  39. package/dist/agent-src/rules/external-reference-deep-dive.md +1 -1
  40. package/dist/agent-src/skills/finishing-a-development-branch/SKILL.md +2 -2
  41. package/dist/agent-src/skills/judge-artifact-completeness/SKILL.md +1 -1
  42. package/dist/agent-src/skills/judge-bug-hunter/SKILL.md +1 -1
  43. package/dist/agent-src/skills/judge-code-quality/SKILL.md +1 -1
  44. package/dist/agent-src/skills/judge-security-auditor/SKILL.md +1 -1
  45. package/dist/agent-src/skills/judge-synthesis/SKILL.md +1 -1
  46. package/dist/agent-src/skills/judge-test-coverage/SKILL.md +1 -1
  47. package/dist/agent-src/skills/markitdown/SKILL.md +1 -1
  48. package/dist/agent-src/skills/mobile-e2e-strategy/SKILL.md +5 -5
  49. package/dist/agent-src/skills/prompt-optimizer/SKILL.md +2 -2
  50. package/dist/agent-src/skills/quality-tools/SKILL.md +1 -1
  51. package/dist/agent-src/skills/repomix-packer/SKILL.md +1 -1
  52. package/dist/agent-src/skills/requesting-code-review/SKILL.md +2 -2
  53. package/dist/agent-src/skills/verify-repair-loop/SKILL.md +2 -2
  54. package/dist/agent-src/templates/agent-settings.md +1 -1
  55. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +2 -2
  56. package/dist/agent-src/templates/scripts/work_engine/stack/runner.ts +1 -1
  57. package/dist/cli/commands/config.js +44 -0
  58. package/dist/cli/commands/config.js.map +1 -0
  59. package/dist/cli/commands/uiServe.js +1 -0
  60. package/dist/cli/commands/uiServe.js.map +1 -1
  61. package/dist/cli/help.js +38 -0
  62. package/dist/cli/help.js.map +1 -0
  63. package/dist/cli/initRouting.js +16 -1
  64. package/dist/cli/initRouting.js.map +1 -1
  65. package/dist/cli/main.js +43 -37
  66. package/dist/cli/main.js.map +1 -1
  67. package/dist/cli/registry.js +45 -44
  68. package/dist/cli/registry.js.map +1 -1
  69. package/dist/discovery/deprecation-report.md +1 -1
  70. package/dist/discovery/discovery-manifest.json +419 -210
  71. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  72. package/dist/discovery/discovery-manifest.summary.md +4 -4
  73. package/dist/discovery/orphan-report.md +1 -1
  74. package/dist/discovery/packs.json +31 -25
  75. package/dist/discovery/trust-report.md +2 -2
  76. package/dist/discovery/workspaces.json +30 -24
  77. package/dist/install/install.mjs +6064 -159
  78. package/dist/install/selectedTools.js +39 -10
  79. package/dist/install/selectedTools.js.map +1 -1
  80. package/dist/mcp/registry-manifest.json +3 -3
  81. package/dist/server/app.js +15 -3
  82. package/dist/server/app.js.map +1 -1
  83. package/dist/server/routes/ping.js +16 -0
  84. package/dist/server/routes/ping.js.map +1 -1
  85. package/dist/server/routes/settings.js +42 -6
  86. package/dist/server/routes/settings.js.map +1 -1
  87. package/dist/server/routes/settingsChanges.js +55 -0
  88. package/dist/server/routes/settingsChanges.js.map +1 -0
  89. package/dist/server/routes/userMd.js +7 -2
  90. package/dist/server/routes/userMd.js.map +1 -1
  91. package/dist/server/routes/wizard.js +76 -14
  92. package/dist/server/routes/wizard.js.map +1 -1
  93. package/dist/server/writeRoot.js +17 -0
  94. package/dist/server/writeRoot.js.map +1 -1
  95. package/dist/shared/settingsSurface.js +120 -0
  96. package/dist/shared/settingsSurface.js.map +1 -0
  97. package/dist/ui/assets/index-BPFMZWUs.css +1 -0
  98. package/dist/ui/assets/index-BiEZiZ31.js +40 -0
  99. package/dist/ui/assets/index-BiEZiZ31.js.map +1 -0
  100. package/dist/ui/index.html +15 -2
  101. package/docs/CLAIMS.md +20 -15
  102. package/docs/architecture.md +1 -1
  103. package/docs/catalog.md +37 -31
  104. package/docs/command-flows.md +22 -16
  105. package/docs/contracts/command-clusters.md +39 -9
  106. package/docs/contracts/file-ownership-matrix.json +21 -0
  107. package/docs/contracts/frontmatter-contract.md +1 -1
  108. package/docs/contracts/gui-wizard.md +16 -4
  109. package/docs/contracts/iron-law-overrides.txt +1 -0
  110. package/docs/contracts/rule-classification.md +2 -2
  111. package/docs/contracts/settings-api.md +58 -2
  112. package/docs/contracts/surface-matrix.md +5 -0
  113. package/docs/cookbook.md +7 -7
  114. package/docs/decisions/ADR-114-commit-policy-iron-law-override.md +74 -0
  115. package/docs/decisions/ADR-115-command-cluster-consolidation-phase-4.md +91 -0
  116. package/docs/decisions/INDEX.md +2 -0
  117. package/docs/featured-commands.md +1 -1
  118. package/docs/featured-skills.md +4 -4
  119. package/docs/flows.md +2 -2
  120. package/docs/getting-started-by-role.md +1 -1
  121. package/docs/getting-started-laravel.md +1 -1
  122. package/docs/getting-started.md +6 -3
  123. package/docs/governance-advantage.md +1 -1
  124. package/docs/guidelines/agent-infra/5w2h-analysis.md +1 -1
  125. package/docs/guidelines/agent-infra/ios-simulator-guide.md +1 -1
  126. package/docs/proof.md +11 -2
  127. package/package.json +6 -1
  128. package/src/agent-src/README.md +64 -0
  129. package/src/agent-src/scripts/archive_completed_roadmaps.ts +497 -0
  130. package/src/agent-src/scripts/scan-seeder-violations.php +145 -0
  131. package/src/agent-src/scripts/update_roadmap_progress.ts +1087 -0
  132. package/src/agent-src/templates/AGENTS.md +34 -0
  133. package/src/agent-src/templates/scripts/README.md +195 -0
  134. package/src/agent-src/templates/scripts/check_memory.ts +662 -0
  135. package/src/agent-src/templates/scripts/check_memory_proposal.ts +370 -0
  136. package/src/agent-src/templates/scripts/historical-bug-patterns.example.yml +84 -0
  137. package/src/agent-src/templates/scripts/implement_ticket/__main__.ts +27 -0
  138. package/src/agent-src/templates/scripts/memory_hash.ts +355 -0
  139. package/src/agent-src/templates/scripts/memory_lookup.ts +1089 -0
  140. package/src/agent-src/templates/scripts/memory_report.ts +868 -0
  141. package/src/agent-src/templates/scripts/memory_signal.ts +444 -0
  142. package/src/agent-src/templates/scripts/memory_status.ts +215 -0
  143. package/src/agent-src/templates/scripts/ownership-map.example.yml +87 -0
  144. package/src/agent-src/templates/scripts/pr-risk-config.example.yml +76 -0
  145. package/src/agent-src/templates/scripts/pr_review_routing.ts +544 -0
  146. package/src/agent-src/templates/scripts/pr_risk_review.ts +0 -0
  147. package/src/agent-src/templates/scripts/telemetry/aggregator.ts +0 -0
  148. package/src/agent-src/templates/scripts/telemetry/boundary.ts +164 -0
  149. package/src/agent-src/templates/scripts/telemetry/engagement.ts +479 -0
  150. package/src/agent-src/templates/scripts/telemetry/report_renderer.ts +394 -0
  151. package/src/agent-src/templates/scripts/telemetry/settings.ts +210 -0
  152. package/src/agent-src/templates/scripts/telemetry_record.ts +276 -0
  153. package/src/agent-src/templates/scripts/telemetry_report.ts +211 -0
  154. package/src/agent-src/templates/scripts/telemetry_status.ts +333 -0
  155. package/src/agent-src/templates/scripts/tier_usage_report.ts +619 -0
  156. package/src/agent-src/templates/scripts/work_engine/__main__.ts +14 -0
  157. package/src/agent-src/templates/scripts/work_engine/_lib/agent_settings.ts +1261 -0
  158. package/src/agent-src/templates/scripts/work_engine/_lib/user_global_paths.ts +329 -0
  159. package/src/agent-src/templates/scripts/work_engine/cli.ts +206 -0
  160. package/src/agent-src/templates/scripts/work_engine/cli_args.ts +249 -0
  161. package/src/agent-src/templates/scripts/work_engine/delivery_state.ts +225 -0
  162. package/src/agent-src/templates/scripts/work_engine/directives/backend/analyze.ts +125 -0
  163. package/src/agent-src/templates/scripts/work_engine/directives/backend/implement.ts +189 -0
  164. package/src/agent-src/templates/scripts/work_engine/directives/backend/index.ts +94 -0
  165. package/src/agent-src/templates/scripts/work_engine/directives/backend/memory.ts +193 -0
  166. package/src/agent-src/templates/scripts/work_engine/directives/backend/plan.ts +267 -0
  167. package/src/agent-src/templates/scripts/work_engine/directives/backend/refine.ts +518 -0
  168. package/src/agent-src/templates/scripts/work_engine/directives/backend/report.ts +379 -0
  169. package/src/agent-src/templates/scripts/work_engine/directives/backend/test.ts +268 -0
  170. package/src/agent-src/templates/scripts/work_engine/directives/backend/verify.ts +258 -0
  171. package/src/agent-src/templates/scripts/work_engine/directives/index.ts +32 -0
  172. package/src/agent-src/templates/scripts/work_engine/directives/mixed/contract.ts +243 -0
  173. package/src/agent-src/templates/scripts/work_engine/directives/mixed/index.ts +108 -0
  174. package/src/agent-src/templates/scripts/work_engine/directives/mixed/stitch.ts +259 -0
  175. package/src/agent-src/templates/scripts/work_engine/directives/mixed/ui.ts +216 -0
  176. package/src/agent-src/templates/scripts/work_engine/directives/ui/_passthrough.ts +40 -0
  177. package/src/agent-src/templates/scripts/work_engine/directives/ui/app_spec.ts +241 -0
  178. package/src/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +216 -0
  179. package/src/agent-src/templates/scripts/work_engine/directives/ui/audit.ts +506 -0
  180. package/src/agent-src/templates/scripts/work_engine/directives/ui/design.ts +325 -0
  181. package/src/agent-src/templates/scripts/work_engine/directives/ui/index.ts +102 -0
  182. package/src/agent-src/templates/scripts/work_engine/directives/ui/polish.ts +462 -0
  183. package/src/agent-src/templates/scripts/work_engine/directives/ui/review.ts +474 -0
  184. package/src/agent-src/templates/scripts/work_engine/directives/ui/scaffold.ts +352 -0
  185. package/src/agent-src/templates/scripts/work_engine/directives/ui_trivial/_skipped.ts +33 -0
  186. package/src/agent-src/templates/scripts/work_engine/directives/ui_trivial/apply.ts +213 -0
  187. package/src/agent-src/templates/scripts/work_engine/directives/ui_trivial/index.ts +111 -0
  188. package/src/agent-src/templates/scripts/work_engine/directives/ui_trivial/refine.ts +126 -0
  189. package/src/agent-src/templates/scripts/work_engine/directives/ui_trivial/report.ts +112 -0
  190. package/src/agent-src/templates/scripts/work_engine/directives/ui_trivial/test.ts +164 -0
  191. package/src/agent-src/templates/scripts/work_engine/dispatcher.ts +515 -0
  192. package/src/agent-src/templates/scripts/work_engine/emitters.ts +119 -0
  193. package/src/agent-src/templates/scripts/work_engine/errors.ts +24 -0
  194. package/src/agent-src/templates/scripts/work_engine/hook_bootstrap.ts +104 -0
  195. package/src/agent-src/templates/scripts/work_engine/hooks/builtin/_chat_history_base.ts +189 -0
  196. package/src/agent-src/templates/scripts/work_engine/hooks/builtin/chat_history_append.ts +41 -0
  197. package/src/agent-src/templates/scripts/work_engine/hooks/builtin/chat_history_halt_append.ts +89 -0
  198. package/src/agent-src/templates/scripts/work_engine/hooks/builtin/decision_gate.ts +193 -0
  199. package/src/agent-src/templates/scripts/work_engine/hooks/builtin/decision_trace.ts +304 -0
  200. package/src/agent-src/templates/scripts/work_engine/hooks/builtin/directive_set_guard.ts +110 -0
  201. package/src/agent-src/templates/scripts/work_engine/hooks/builtin/halt_surface_audit.ts +118 -0
  202. package/src/agent-src/templates/scripts/work_engine/hooks/builtin/index.ts +17 -0
  203. package/src/agent-src/templates/scripts/work_engine/hooks/builtin/memory_visibility.ts +161 -0
  204. package/src/agent-src/templates/scripts/work_engine/hooks/builtin/state_shape_validation.ts +45 -0
  205. package/src/agent-src/templates/scripts/work_engine/hooks/builtin/trace.ts +134 -0
  206. package/src/agent-src/templates/scripts/work_engine/hooks/context.ts +94 -0
  207. package/src/agent-src/templates/scripts/work_engine/hooks/events.ts +58 -0
  208. package/src/agent-src/templates/scripts/work_engine/hooks/exceptions.ts +85 -0
  209. package/src/agent-src/templates/scripts/work_engine/hooks/index.ts +27 -0
  210. package/src/agent-src/templates/scripts/work_engine/hooks/registry.ts +66 -0
  211. package/src/agent-src/templates/scripts/work_engine/hooks/runner.ts +90 -0
  212. package/src/agent-src/templates/scripts/work_engine/hooks/settings.ts +260 -0
  213. package/src/agent-src/templates/scripts/work_engine/input_builders.ts +260 -0
  214. package/src/agent-src/templates/scripts/work_engine/intent/classify.ts +466 -0
  215. package/src/agent-src/templates/scripts/work_engine/migration/v0_to_v1.ts +531 -0
  216. package/src/agent-src/templates/scripts/work_engine/orchestration.ts +366 -0
  217. package/src/agent-src/templates/scripts/work_engine/persona_policy.ts +97 -0
  218. package/src/agent-src/templates/scripts/work_engine/resolvers/diff.ts +135 -0
  219. package/src/agent-src/templates/scripts/work_engine/resolvers/file.ts +175 -0
  220. package/src/agent-src/templates/scripts/work_engine/resolvers/prompt.ts +115 -0
  221. package/src/agent-src/templates/scripts/work_engine/scoring/confidence.ts +415 -0
  222. package/src/agent-src/templates/scripts/work_engine/scoring/decision_engine.ts +466 -0
  223. package/src/agent-src/templates/scripts/work_engine/scoring/decision_trace.ts +298 -0
  224. package/src/agent-src/templates/scripts/work_engine/scoring/memory_visibility.ts +444 -0
  225. package/src/agent-src/templates/scripts/work_engine/stack/detect.ts +252 -0
  226. package/src/agent-src/templates/scripts/work_engine/stack/runner.ts +745 -0
  227. package/src/agent-src/templates/scripts/work_engine/state.ts +1151 -0
  228. package/src/agent-src/templates/scripts/work_engine/state_io.ts +413 -0
  229. package/src/config/agent-settings.template.yml +1 -1
  230. package/src/install/atomic.ts +111 -0
  231. package/src/install/conflict.ts +226 -0
  232. package/src/install/detect.ts +280 -0
  233. package/src/install/paths.ts +90 -0
  234. package/src/install/plan.ts +205 -0
  235. package/src/install/preflight.ts +210 -0
  236. package/src/install/selectedTools.ts +80 -0
  237. package/src/install/toolDetection.ts +120 -0
  238. package/src/install/txlog.ts +161 -0
  239. package/src/install/types.ts +175 -0
  240. package/src/install/wizard-plan.ts +216 -0
  241. package/src/scripts/_cli/cmd_converge.ts +38 -0
  242. package/src/scripts/_cli/cmd_doctor.ts +113 -2
  243. package/src/scripts/_cli/cmd_explain.ts +2 -2
  244. package/src/scripts/_cli/cmd_export.ts +3 -3
  245. package/src/scripts/_cli/cmd_fleet.ts +13 -1
  246. package/src/scripts/_cli/cmd_migrate.ts +3 -3
  247. package/src/scripts/_cli/cmd_prune.ts +2 -2
  248. package/src/scripts/_cli/cmd_refresh.ts +4 -4
  249. package/src/scripts/_cli/cmd_settings_check.ts +2 -2
  250. package/src/scripts/_cli/cmd_settings_migrate.ts +2 -2
  251. package/src/scripts/_cli/cmd_sync.ts +2 -2
  252. package/src/scripts/_cli/cmd_uninstall.ts +2 -2
  253. package/src/scripts/_cli/cmd_update.ts +8 -8
  254. package/src/scripts/_cli/cmd_upgrade.ts +4 -3
  255. package/src/scripts/_cli/cmd_validate.ts +3 -3
  256. package/src/scripts/_cli/cmd_versions.ts +2 -2
  257. package/src/scripts/_cli/explain_last/assumptions.ts +2 -2
  258. package/src/scripts/_cli/explain_last/council.ts +2 -2
  259. package/src/scripts/_cli/explain_last/halt.ts +2 -2
  260. package/src/scripts/_cli/explain_last/index.ts +2 -2
  261. package/src/scripts/_cli/explain_last/inputs.ts +4 -4
  262. package/src/scripts/_cli/explain_last/memory.ts +2 -2
  263. package/src/scripts/_cli/explain_last/provider.ts +2 -2
  264. package/src/scripts/_cli/explain_last/render.ts +2 -2
  265. package/src/scripts/_cli/explain_last/route.ts +2 -2
  266. package/src/scripts/_cli/explain_last/scrubber.ts +2 -2
  267. package/src/scripts/_cli/explain_last/sections/assumptions.ts +2 -2
  268. package/src/scripts/_cli/explain_last/sections/council.ts +2 -2
  269. package/src/scripts/_cli/explain_last/sections/halt.ts +2 -2
  270. package/src/scripts/_cli/explain_last/sections/header.ts +2 -2
  271. package/src/scripts/_cli/explain_last/sections/index.ts +1 -1
  272. package/src/scripts/_cli/explain_last/sections/inputs.ts +2 -2
  273. package/src/scripts/_cli/explain_last/sections/memory.ts +2 -2
  274. package/src/scripts/_cli/explain_last/sections/pack.ts +2 -2
  275. package/src/scripts/_cli/explain_last/sections/provider.ts +2 -2
  276. package/src/scripts/_cli/explain_last/sections/route.ts +2 -2
  277. package/src/scripts/_cli/explain_last/state_loader.ts +2 -2
  278. package/src/scripts/_dispatch.bash +20 -1
  279. package/src/scripts/_lib/agent_settings.ts +1 -1
  280. package/src/scripts/_lib/agent_src.ts +7 -7
  281. package/src/scripts/_lib/agents_overlay.ts +1 -1
  282. package/src/scripts/_lib/bench_ab_cache.ts +1 -1
  283. package/src/scripts/_lib/bench_ab_scoring.ts +1 -1
  284. package/src/scripts/_lib/bench_ab_scoring_v2.ts +3 -3
  285. package/src/scripts/_lib/bench_cost.ts +1 -1
  286. package/src/scripts/_lib/bench_quality.ts +3 -3
  287. package/src/scripts/_lib/bench_report.ts +4 -4
  288. package/src/scripts/_lib/bench_telegraph.ts +1 -1
  289. package/src/scripts/_lib/bench_telegraph_report.ts +4 -4
  290. package/src/scripts/_lib/changelog_eras.ts +1 -1
  291. package/src/scripts/_lib/claude_desktop_bundler.ts +1 -1
  292. package/src/scripts/_lib/cli_wrapper.ts +1 -1
  293. package/src/scripts/_lib/fs_atomic.ts +1 -1
  294. package/src/scripts/_lib/global_deploy_inventory.ts +1 -1
  295. package/src/scripts/_lib/install_layout.ts +1 -1
  296. package/src/scripts/_lib/install_regenerator.ts +1 -1
  297. package/src/scripts/_lib/installed_lock.ts +1 -1
  298. package/src/scripts/_lib/installed_tools.ts +1 -1
  299. package/src/scripts/_lib/json_pointers.ts +1 -1
  300. package/src/scripts/_lib/knowledge_global.ts +1 -1
  301. package/src/scripts/_lib/knowledge_global_promote.ts +2 -2
  302. package/src/scripts/_lib/knowledge_global_redaction.ts +2 -2
  303. package/src/scripts/_lib/link_crypto.ts +4 -4
  304. package/src/scripts/_lib/linked_projects.ts +4 -4
  305. package/src/scripts/_lib/model_tier.ts +1 -1
  306. package/src/scripts/_lib/module_detection.ts +2 -2
  307. package/src/scripts/_lib/pin_resolver.ts +1 -1
  308. package/src/scripts/_lib/script_output.ts +1 -1
  309. package/src/scripts/_lib/security_lint.ts +1 -1
  310. package/src/scripts/_lib/surface_tiers.ts +1 -1
  311. package/src/scripts/_lib/text_similarity.ts +1 -1
  312. package/src/scripts/_lib/update_check.ts +2 -2
  313. package/src/scripts/_lib/user_global_paths.ts +1 -1
  314. package/src/scripts/_lib/value_ladder.ts +1 -1
  315. package/src/scripts/_lib/value_report.ts +1 -1
  316. package/src/scripts/_lib/zip_min.ts +2 -2
  317. package/src/scripts/adoption_report.ts +3 -3
  318. package/src/scripts/adoption_snapshot.ts +3 -3
  319. package/src/scripts/adoption_status.ts +2 -2
  320. package/src/scripts/adr/regenerate_index.ts +3 -3
  321. package/src/scripts/ai_council/_default_prices.ts +2 -3
  322. package/src/scripts/ai_council/advisors.ts +1 -1
  323. package/src/scripts/ai_council/airgap.ts +1 -1
  324. package/src/scripts/ai_council/budget_guard.ts +1 -1
  325. package/src/scripts/ai_council/bundler.ts +1 -1
  326. package/src/scripts/ai_council/cli_hints.ts +1 -1
  327. package/src/scripts/ai_council/clients.ts +5 -5
  328. package/src/scripts/ai_council/compile_corpus.ts +1 -1
  329. package/src/scripts/ai_council/confidence_gate.ts +1 -1
  330. package/src/scripts/ai_council/config.ts +1 -1
  331. package/src/scripts/ai_council/consensus.ts +1 -1
  332. package/src/scripts/ai_council/events_log.ts +1 -1
  333. package/src/scripts/ai_council/learn_low_impact_preview.ts +1 -1
  334. package/src/scripts/ai_council/low_impact_corpus.ts +1 -1
  335. package/src/scripts/ai_council/low_impact_intake.ts +1 -1
  336. package/src/scripts/ai_council/modes.ts +1 -1
  337. package/src/scripts/ai_council/orchestrator.ts +3 -3
  338. package/src/scripts/ai_council/pricing.ts +2 -2
  339. package/src/scripts/ai_council/probation_gate.ts +2 -2
  340. package/src/scripts/ai_council/project_context.ts +1 -1
  341. package/src/scripts/ai_council/prompts.ts +1 -1
  342. package/src/scripts/ai_council/redact_low_impact_entry.ts +2 -2
  343. package/src/scripts/ai_council/session.ts +1 -1
  344. package/src/scripts/ai_council/shadow_dispatch.ts +1 -1
  345. package/src/scripts/ai_council/solo_dispatch.ts +1 -1
  346. package/src/scripts/analysis_freshness.ts +2 -2
  347. package/src/scripts/annotate_discovery.ts +2 -2
  348. package/src/scripts/apply_modules_config.ts +2 -2
  349. package/src/scripts/audit_adr_coverage.ts +3 -3
  350. package/src/scripts/audit_auto_rules.ts +2 -2
  351. package/src/scripts/audit_cloud_compatibility.ts +3 -3
  352. package/src/scripts/audit_command_surface.ts +2 -2
  353. package/src/scripts/audit_initial_context.ts +7 -6
  354. package/src/scripts/audit_likelihood.ts +5 -5
  355. package/src/scripts/audit_mcp_tools.ts +3 -3
  356. package/src/scripts/audit_overlap.ts +2 -2
  357. package/src/scripts/audit_skill_descriptions.ts +2 -2
  358. package/src/scripts/audit_skill_overlap.ts +5 -5
  359. package/src/scripts/audit_user_type_axis.ts +4 -4
  360. package/src/scripts/backfill_model_tier.ts +1 -1
  361. package/src/scripts/bench_ab_cache_dispatch.ts +2 -2
  362. package/src/scripts/bench_ab_clone.ts +2 -2
  363. package/src/scripts/bench_ab_diff.ts +3 -3
  364. package/src/scripts/bench_ab_integrity.ts +2 -2
  365. package/src/scripts/bench_ab_run.ts +4 -4
  366. package/src/scripts/bench_ab_task_runner.ts +1 -1
  367. package/src/scripts/bench_ab_tracka_run.ts +2 -2
  368. package/src/scripts/bench_ab_v2_run.ts +1 -1
  369. package/src/scripts/bench_ab_v2_stats.ts +2 -2
  370. package/src/scripts/bench_baseline_ready.ts +1 -1
  371. package/src/scripts/bench_condense_memory.ts +4 -4
  372. package/src/scripts/bench_drift_check.ts +3 -3
  373. package/src/scripts/bench_per_tool.ts +1 -1
  374. package/src/scripts/bench_rtk_savings.ts +4 -4
  375. package/src/scripts/bench_run.ts +4 -4
  376. package/src/scripts/bench_runner.ts +1 -1
  377. package/src/scripts/build_cloud_bundle.ts +3 -3
  378. package/src/scripts/build_discovery_manifest.ts +13 -15
  379. package/src/scripts/build_linear_digest.ts +2 -2
  380. package/src/scripts/build_mcp_registry_manifest.ts +3 -3
  381. package/src/scripts/build_proof.ts +6 -0
  382. package/src/scripts/build_rule_trigger_matrix.ts +2 -2
  383. package/src/scripts/capture_showcase_session.ts +3 -3
  384. package/src/scripts/chat_history.ts +1 -1
  385. package/src/scripts/check_always_budget.ts +1 -1
  386. package/src/scripts/check_artefact_checksums.ts +4 -4
  387. package/src/scripts/check_artefact_count_messaging.ts +197 -0
  388. package/src/scripts/check_augment_description_cap.ts +3 -3
  389. package/src/scripts/check_augmentignore.ts +1 -1
  390. package/src/scripts/check_beta_review_markers.ts +3 -3
  391. package/src/scripts/check_bite_sized_granularity.ts +1 -1
  392. package/src/scripts/check_cluster_patterns.ts +47 -3
  393. package/src/scripts/check_command_count_messaging.ts +2 -2
  394. package/src/scripts/check_condensation.ts +2 -2
  395. package/src/scripts/check_condensed_paths.ts +6 -6
  396. package/src/scripts/check_context_paths.ts +1 -1
  397. package/src/scripts/check_council_config_location.ts +3 -3
  398. package/src/scripts/check_council_layout.ts +2 -2
  399. package/src/scripts/check_council_references.ts +2 -2
  400. package/src/scripts/check_discovery_determinism.ts +3 -3
  401. package/src/scripts/check_gate_paths.ts +4 -4
  402. package/src/scripts/check_iron_law_prominence.ts +2 -2
  403. package/src/scripts/check_kernel_rule_bundle.ts +3 -3
  404. package/src/scripts/check_knowledge_cards.ts +4 -4
  405. package/src/scripts/check_knowledge_pages.ts +1 -1
  406. package/src/scripts/check_md_language.ts +3 -3
  407. package/src/scripts/check_memory.ts +3 -3
  408. package/src/scripts/check_memory_proposal.ts +2 -2
  409. package/src/scripts/check_module_management_neutral.ts +1 -1
  410. package/src/scripts/check_no_conflict_markers.ts +1 -1
  411. package/src/scripts/check_no_external_sources.ts +1 -1
  412. package/src/scripts/check_no_local_settings_committed.ts +2 -2
  413. package/src/scripts/check_no_new_legacy_path.ts +3 -3
  414. package/src/scripts/check_no_roadmap_refs.ts +3 -3
  415. package/src/scripts/check_one_off_location.ts +3 -3
  416. package/src/scripts/check_overlay_cascade_subdirs.ts +3 -3
  417. package/src/scripts/check_portability.ts +3 -3
  418. package/src/scripts/check_proposal.ts +0 -0
  419. package/src/scripts/check_public_catalog_links.ts +1 -1
  420. package/src/scripts/check_public_links.ts +2 -2
  421. package/src/scripts/check_references.ts +3 -3
  422. package/src/scripts/check_release_includes_discovery.ts +2 -2
  423. package/src/scripts/check_release_pr_shape.ts +2 -2
  424. package/src/scripts/check_release_published.ts +1 -1
  425. package/src/scripts/check_release_trunk_sync.ts +3 -3
  426. package/src/scripts/check_reply_consistency.ts +1 -1
  427. package/src/scripts/check_roadmap_trackable.ts +2 -2
  428. package/src/scripts/check_role_doc_links.ts +2 -2
  429. package/src/scripts/check_safety_floor_untouched.ts +3 -3
  430. package/src/scripts/check_skill_requires.ts +2 -2
  431. package/src/scripts/check_structural_breaking.ts +2 -2
  432. package/src/scripts/check_surface_tiers.ts +2 -2
  433. package/src/scripts/check_template_pin_drift.ts +1 -1
  434. package/src/scripts/check_test_coverage_diff.ts +2 -2
  435. package/src/scripts/check_token_optimizer_freshness.ts +3 -3
  436. package/src/scripts/check_trigger_evals.ts +2 -2
  437. package/src/scripts/check_update_banner.ts +1 -1
  438. package/src/scripts/ci_status.ts +0 -0
  439. package/src/scripts/ci_summary.ts +3 -3
  440. package/src/scripts/ci_time_ratio.ts +1 -1
  441. package/src/scripts/command_suggester/cooldown.ts +1 -1
  442. package/src/scripts/command_suggester/index.ts +1 -1
  443. package/src/scripts/command_suggester/loader.ts +1 -1
  444. package/src/scripts/command_suggester/match.ts +1 -1
  445. package/src/scripts/command_suggester/rank.ts +1 -1
  446. package/src/scripts/command_suggester/render.ts +1 -1
  447. package/src/scripts/command_suggester/sanitize.ts +1 -1
  448. package/src/scripts/command_suggester/settings.ts +1 -1
  449. package/src/scripts/command_suggester/types.ts +0 -0
  450. package/src/scripts/compile_router.ts +4 -4
  451. package/src/scripts/condense.ts +3 -3
  452. package/src/scripts/condense_memory.ts +1 -1
  453. package/src/scripts/config/index.ts +1 -1
  454. package/src/scripts/config/packs.ts +1 -1
  455. package/src/scripts/config/presets.ts +1 -1
  456. package/src/scripts/config/profile_explain.ts +1 -1
  457. package/src/scripts/config/profiles.ts +1 -1
  458. package/src/scripts/config/session_profiles.ts +1 -1
  459. package/src/scripts/context_hygiene_hook.ts +2 -2
  460. package/src/scripts/cost_by_conversation.ts +1 -1
  461. package/src/scripts/cost_summary.ts +2 -2
  462. package/src/scripts/council_cli.ts +1 -1
  463. package/src/scripts/council_prune.ts +1 -1
  464. package/src/scripts/cross_repo_retrieve.ts +2 -2
  465. package/src/scripts/discovery_stats.ts +3 -3
  466. package/src/scripts/evidence_report.ts +4 -4
  467. package/src/scripts/extract_audit_patterns.ts +2 -2
  468. package/src/scripts/first_run_gate_hook.ts +1 -1
  469. package/src/scripts/gen_discovery_baseline.ts +2 -2
  470. package/src/scripts/generate_capabilities_index.ts +2 -2
  471. package/src/scripts/generate_capability_matrix.ts +2 -2
  472. package/src/scripts/generate_catalog.ts +2 -2
  473. package/src/scripts/generate_command_flows.ts +2 -2
  474. package/src/scripts/generate_cookbook.ts +1 -1
  475. package/src/scripts/generate_index.ts +3 -3
  476. package/src/scripts/generate_ownership_matrix.ts +2 -2
  477. package/src/scripts/generate_pack_manifests.ts +2 -2
  478. package/src/scripts/generate_role_experiences_catalog.ts +3 -3
  479. package/src/scripts/hooks/block_no_verify.ts +2 -2
  480. package/src/scripts/hooks/dispatch_hook.ts +2 -2
  481. package/src/scripts/hooks/dispatch_issues.ts +1 -1
  482. package/src/scripts/hooks/envelope.ts +1 -1
  483. package/src/scripts/hooks/replay_hook.ts +1 -1
  484. package/src/scripts/hooks/state_io.ts +1 -1
  485. package/src/scripts/hooks_doctor.ts +1 -1
  486. package/src/scripts/hooks_status.ts +1 -1
  487. package/src/scripts/injection_scan_hook.ts +1 -1
  488. package/src/scripts/install.ts +145 -3
  489. package/src/scripts/inventory_abstraction_budget.ts +5 -5
  490. package/src/scripts/inventory_frontmatter.ts +1 -1
  491. package/src/scripts/inventory_meta_layers.ts +1 -1
  492. package/src/scripts/iron_law_sha.ts +1 -1
  493. package/src/scripts/knowledge_global_cli.ts +3 -3
  494. package/src/scripts/linked_projects_list.ts +1 -1
  495. package/src/scripts/lint_agent_security.ts +4 -4
  496. package/src/scripts/lint_agent_skill_names.ts +1 -1
  497. package/src/scripts/lint_agents_layout.ts +2 -2
  498. package/src/scripts/lint_agents_md.ts +3 -3
  499. package/src/scripts/lint_archived_skills.ts +2 -2
  500. package/src/scripts/lint_artefact_frontmatter.ts +2 -2
  501. package/src/scripts/lint_bench_ab.ts +2 -2
  502. package/src/scripts/lint_bench_corpus.ts +1 -1
  503. package/src/scripts/lint_command_flow_coverage.ts +1 -1
  504. package/src/scripts/lint_command_routing.ts +2 -2
  505. package/src/scripts/lint_command_tiers.ts +1 -1
  506. package/src/scripts/lint_command_verbs.ts +4 -4
  507. package/src/scripts/lint_commit_subjects.ts +2 -2
  508. package/src/scripts/lint_context_spine_usage.ts +3 -3
  509. package/src/scripts/lint_discovery_manifest.ts +4 -4
  510. package/src/scripts/lint_discovery_vocabulary.ts +2 -2
  511. package/src/scripts/lint_empty_roadmaps.ts +3 -3
  512. package/src/scripts/lint_eval_freshness.ts +2 -2
  513. package/src/scripts/lint_examples.ts +2 -2
  514. package/src/scripts/lint_explain_trace.ts +2 -2
  515. package/src/scripts/lint_featured_skills.ts +0 -0
  516. package/src/scripts/lint_flows.ts +5 -5
  517. package/src/scripts/lint_framework_leakage.ts +1 -1
  518. package/src/scripts/lint_framework_leakage_allowlist.json +10 -2
  519. package/src/scripts/lint_frontmatter_boilerplate.ts +2 -2
  520. package/src/scripts/lint_ghostwriter_source.ts +3 -3
  521. package/src/scripts/lint_global_paths.ts +1 -1
  522. package/src/scripts/lint_handoffs.ts +1 -1
  523. package/src/scripts/lint_hidden_unicode.ts +1 -1
  524. package/src/scripts/lint_hook_concern_budget.ts +2 -2
  525. package/src/scripts/lint_hook_manifest.ts +2 -2
  526. package/src/scripts/lint_instruction_smuggling.ts +1 -1
  527. package/src/scripts/lint_load_context.ts +2 -2
  528. package/src/scripts/lint_marketplace.ts +1 -1
  529. package/src/scripts/lint_marketplace_install_completeness.ts +2 -2
  530. package/src/scripts/lint_mcp_config_security.ts +1 -1
  531. package/src/scripts/lint_mcp_registry_manifest.ts +1 -1
  532. package/src/scripts/lint_media_policy_linkage.ts +3 -3
  533. package/src/scripts/lint_missions.ts +3 -3
  534. package/src/scripts/lint_model_tier_coverage.ts +3 -3
  535. package/src/scripts/lint_namespace.ts +2 -2
  536. package/src/scripts/lint_namespace_collisions.ts +2 -2
  537. package/src/scripts/lint_new_skill_gate.ts +3 -3
  538. package/src/scripts/lint_no_new_atomic_commands.ts +9 -6
  539. package/src/scripts/lint_no_python_twin_rationale.ts +102 -0
  540. package/src/scripts/lint_one_off_age.ts +2 -2
  541. package/src/scripts/lint_orchestration_dsl.ts +3 -3
  542. package/src/scripts/lint_orchestrator_auto_detect.ts +1 -1
  543. package/src/scripts/lint_pack_boundaries.ts +2 -2
  544. package/src/scripts/lint_pack_dependencies.ts +2 -2
  545. package/src/scripts/lint_pack_first_win.ts +2 -2
  546. package/src/scripts/lint_persona_governance.ts +3 -3
  547. package/src/scripts/lint_positioning.ts +1 -1
  548. package/src/scripts/lint_profile_overlay_set_only.ts +2 -2
  549. package/src/scripts/lint_readme_jargon.ts +2 -2
  550. package/src/scripts/lint_readme_size.ts +2 -2
  551. package/src/scripts/lint_regression.ts +3 -3
  552. package/src/scripts/lint_roadmap_ci_steps.ts +3 -3
  553. package/src/scripts/lint_roadmap_complexity.ts +1 -1
  554. package/src/scripts/lint_roadmap_later_disposition.ts +2 -2
  555. package/src/scripts/lint_role_experiences.ts +2 -2
  556. package/src/scripts/lint_rule_interactions.ts +1 -1
  557. package/src/scripts/lint_rule_tiers.ts +1 -1
  558. package/src/scripts/lint_showcase_sessions.ts +2 -2
  559. package/src/scripts/lint_skill_frontmatter_safety.ts +1 -1
  560. package/src/scripts/lint_skill_originality.ts +1 -1
  561. package/src/scripts/lint_skill_tools.ts +3 -3
  562. package/src/scripts/lint_ticket_buildable.ts +2 -2
  563. package/src/scripts/lint_topics_yaml.ts +3 -3
  564. package/src/scripts/lint_trust_coherence.ts +3 -3
  565. package/src/scripts/lint_value_dashboard.ts +3 -3
  566. package/src/scripts/lint_workflow_security.ts +3 -3
  567. package/src/scripts/lint_workspace_boundary.ts +2 -2
  568. package/src/scripts/mcp_parity_smoke.ts +1 -1
  569. package/src/scripts/mcp_render.ts +1 -1
  570. package/src/scripts/mcp_server/catalog.ts +1 -1
  571. package/src/scripts/mcp_server/index.ts +1 -1
  572. package/src/scripts/mcp_server/metadata.ts +1 -1
  573. package/src/scripts/mcp_server/prompts.ts +1 -1
  574. package/src/scripts/mcp_server/resources.ts +1 -1
  575. package/src/scripts/mcp_server/server.ts +1 -1
  576. package/src/scripts/mcp_server/telemetry.ts +1 -1
  577. package/src/scripts/mcp_server/tools.ts +1 -1
  578. package/src/scripts/mcp_telemetry_health.ts +1 -1
  579. package/src/scripts/mcp_telemetry_query.ts +3 -3
  580. package/src/scripts/mcp_telemetry_store.ts +3 -3
  581. package/src/scripts/measure_augment_budget.ts +2 -2
  582. package/src/scripts/measure_density.ts +2 -2
  583. package/src/scripts/measure_frugality_savings.ts +3 -3
  584. package/src/scripts/measure_markitdown_lift.ts +1 -1
  585. package/src/scripts/measure_patterns.ts +1 -1
  586. package/src/scripts/measure_projection_bytes.ts +1 -1
  587. package/src/scripts/measure_rule_budget.ts +1 -1
  588. package/src/scripts/measure_skill_reduction.ts +1 -1
  589. package/src/scripts/memory_hash.ts +1 -1
  590. package/src/scripts/memory_lookup.ts +6 -6
  591. package/src/scripts/memory_report.ts +1 -1
  592. package/src/scripts/memory_signal.ts +1 -1
  593. package/src/scripts/memory_status.ts +2 -2
  594. package/src/scripts/migrate_command_suggestions.ts +1 -1
  595. package/src/scripts/migrate_frontmatter_defaults.ts +1 -1
  596. package/src/scripts/mine_session.ts +3 -3
  597. package/src/scripts/minimal_safe_diff_hook.ts +2 -2
  598. package/src/scripts/move_artefact.ts +3 -3
  599. package/src/scripts/new_skill.ts +3 -3
  600. package/src/scripts/onboarding_gate_hook.ts +2 -2
  601. package/src/scripts/pack_mcp_content.ts +1 -1
  602. package/src/scripts/parity/replay.ts +3 -2
  603. package/src/scripts/pattern_share.ts +2 -2
  604. package/src/scripts/plan_physical_move.ts +3 -3
  605. package/src/scripts/prediction-pool/poisson_sim.ts +2 -2
  606. package/src/scripts/prediction-pool/pool_winsim.ts +2 -2
  607. package/src/scripts/prediction-pool/score_ev.ts +2 -2
  608. package/src/scripts/prepack-check.mjs +108 -5
  609. package/src/scripts/print_required_checks.ts +2 -2
  610. package/src/scripts/probe_projection_fidelity.ts +2 -2
  611. package/src/scripts/probe_skill_registration.ts +2 -2
  612. package/src/scripts/profile_staleness_hook.ts +2 -2
  613. package/src/scripts/profile_use.ts +2 -2
  614. package/src/scripts/project_thin_rules.ts +3 -3
  615. package/src/scripts/propose_modules_config.ts +2 -2
  616. package/src/scripts/prototype_lint_contradictions.ts +2 -2
  617. package/src/scripts/prove_pack_extractable.ts +1 -1
  618. package/src/scripts/readme_linter.ts +4 -4
  619. package/src/scripts/redact_hook_capture.ts +2 -2
  620. package/src/scripts/refine_ticket_detect.ts +1 -1
  621. package/src/scripts/release.ts +30 -19
  622. package/src/scripts/render_benchmark_md.ts +2 -2
  623. package/src/scripts/render_value_md.ts +2 -2
  624. package/src/scripts/roadmap_progress_hook.ts +1 -1
  625. package/src/scripts/router_telemetry.ts +1 -1
  626. package/src/scripts/run_skill_evals.ts +2 -2
  627. package/src/scripts/runtime_dispatcher.ts +1 -1
  628. package/src/scripts/runtime_handler.ts +1 -1
  629. package/src/scripts/runtime_registry.ts +3 -3
  630. package/src/scripts/score_skill_selection.ts +1 -1
  631. package/src/scripts/security_audit_config.ts +2 -2
  632. package/src/scripts/skill_collision_clusters.ts +1 -1
  633. package/src/scripts/skill_discovery.ts +1 -1
  634. package/src/scripts/skill_linter.ts +8 -7
  635. package/src/scripts/skill_overlap.ts +2 -2
  636. package/src/scripts/skill_preview.ts +1 -1
  637. package/src/scripts/skill_tools/audit_persona_coverage.ts +3 -3
  638. package/src/scripts/skill_tools/audit_user_type_coverage.ts +3 -3
  639. package/src/scripts/skill_tools/index.ts +1 -1
  640. package/src/scripts/skill_tools/run_block_d_eval.ts +3 -3
  641. package/src/scripts/skill_tools/score_skill_relevance.ts +3 -3
  642. package/src/scripts/skill_tools/suggest_skill_for_task.ts +3 -3
  643. package/src/scripts/skill_trigger_eval.ts +2 -2
  644. package/src/scripts/skill_usage_collect.ts +2 -2
  645. package/src/scripts/skill_usage_report.ts +2 -2
  646. package/src/scripts/smoke_path_resolution.ts +2 -2
  647. package/src/scripts/smoke_quickstart.ts +4 -4
  648. package/src/scripts/snapshot_agent_outputs.ts +2 -2
  649. package/src/scripts/spotcheck_thin_root.ts +2 -2
  650. package/src/scripts/surface-tiers.yml +1 -0
  651. package/src/scripts/sync_agent_settings.ts +2 -2
  652. package/src/scripts/sync_github_metadata.ts +4 -4
  653. package/src/scripts/sync_gitignore.ts +3 -3
  654. package/src/scripts/sync_yaml_rt.ts +2 -2
  655. package/src/scripts/telegraph_stats.ts +1 -1
  656. package/src/scripts/tool_registry.ts +2 -2
  657. package/src/scripts/tools/adapter_errors.ts +1 -1
  658. package/src/scripts/tools/base_adapter.ts +1 -1
  659. package/src/scripts/tools/github_adapter.ts +1 -1
  660. package/src/scripts/tools/jira_adapter.ts +1 -1
  661. package/src/scripts/trigger_coverage.ts +2 -2
  662. package/src/scripts/update_counts.ts +68 -6
  663. package/src/scripts/update_prices.ts +3 -3
  664. package/src/scripts/validate_agent_settings.ts +3 -3
  665. package/src/scripts/validate_decision_engine.ts +2 -2
  666. package/src/scripts/validate_discovery_manifest.ts +3 -3
  667. package/src/scripts/validate_frontmatter.ts +5 -5
  668. package/src/scripts/validate_pack_yaml.ts +0 -0
  669. package/src/scripts/validate_safe_paths.ts +2 -2
  670. package/src/scripts/validate_telegraph_carveouts.ts +3 -3
  671. package/src/scripts/verify_before_complete_hook.ts +2 -2
  672. package/src/scripts/verify_physical_move.ts +2 -2
  673. package/src/scripts/wrapper_freshness_hook.ts +3 -3
  674. package/src/server/schemas/settings.ts +426 -0
  675. package/src/shared/settingsSurface.ts +184 -0
  676. package/src/shared/userMd/formAdapter.ts +86 -0
  677. package/src/shared/userMd/schema.ts +59 -0
  678. package/src/shared/userMd/utils.ts +91 -0
  679. package/dist/agent-src/commands/optimize-project.md +0 -243
  680. package/dist/ui/assets/index-BbWWuFrF.css +0 -1
  681. package/dist/ui/assets/index-UjcTG_9O.js +0 -40
  682. package/dist/ui/assets/index-UjcTG_9O.js.map +0 -1
@@ -0,0 +1,413 @@
1
+ /**
2
+ * State-file I/O helpers for the CLI entry point.
3
+ *
4
+ * TypeScript twin of `work_engine/state_io.py` (ADR-200 py2ts Phase 1 —
5
+ * work_engine foundation). Public API names stay snake_case to mirror the
6
+ * Python module 1:1 (per ADR-200 — Python style is part of the contract).
7
+ *
8
+ * Extracted from `cli.py` in P2.3 of `road-to-post-pr29-optimize.md`. Holds
9
+ * the format-preserving load/save pair, the v0 legacy serialiser, the JSON
10
+ * reader, the `DeliveryState` projection helpers, and the legacy-file
11
+ * migration hint. Behaviour is byte-identical to the pre-split version —
12
+ * Goldens stay green.
13
+ */
14
+
15
+ import * as fs from 'node:fs';
16
+ import * as path from 'node:path';
17
+
18
+ import { DEFAULT_STATE_FILE, LEGACY_STATE_FILE, _FMT_V0, _FMT_V1 } from './cli_args.js';
19
+ import {
20
+ DeliveryState,
21
+ type Any as DeliveryAny,
22
+ } from './delivery_state.js';
23
+ import { _CLIError } from './errors.js';
24
+ import type {
25
+ WorkState} from './state.js';
26
+ import {
27
+ DEFAULT_DIRECTIVE_SET,
28
+ DEFAULT_INTENT,
29
+ SCHEMA_VERSION,
30
+ SchemaError,
31
+ type Dict,
32
+ type JsonValue,
33
+ from_dict as _state_from_dict,
34
+ to_dict as _state_to_dict,
35
+ } from './state.js';
36
+
37
+ /**
38
+ * Surface a migration hint when only the pre-1.15.0 file is present.
39
+ *
40
+ * The dispatcher renamed the default state file from
41
+ * `.implement-ticket-state.json` to `.work-state.json` in 1.15.0
42
+ * (alongside the `implement_ticket → work_engine` package move).
43
+ * Existing checkouts that still carry the legacy file would otherwise
44
+ * fail with a generic "no state file" message. This helper detects
45
+ * the legacy file in the same directory and points the user at the
46
+ * one-shot migration command instead.
47
+ *
48
+ * Only fires when `state_file` has the canonical default name and
49
+ * sits next to a legacy file — explicit `--state-file` overrides
50
+ * bypass the hint so power users can carry their own naming scheme.
51
+ */
52
+ export function _maybe_raise_legacy_hint(state_file: string): void {
53
+ // Python compares `state_file.name` (the basename) against the default's
54
+ // basename. The constants are plain strings (no directory part), so
55
+ // `path.basename(state_file)` vs the constant matches `Path.name`.
56
+ if (path.basename(state_file) !== path.basename(DEFAULT_STATE_FILE)) {
57
+ return;
58
+ }
59
+ // `state_file.with_name(LEGACY_STATE_FILE.name)` — same directory, legacy
60
+ // basename.
61
+ const legacy_candidate = path.join(path.dirname(state_file), path.basename(LEGACY_STATE_FILE));
62
+ if (!_isFile(legacy_candidate)) {
63
+ return;
64
+ }
65
+ throw new _CLIError(
66
+ `Found legacy state file ${legacy_candidate} but no ` +
67
+ `${state_file}. The default state file was renamed in 1.15.0. ` +
68
+ `Run \`node node_modules/.bin/tsx work_engine/migration/v0_to_v1.ts ` +
69
+ `${legacy_candidate}\` to migrate, or pass \`--state-file ` +
70
+ `${legacy_candidate}\` to keep using the old name. See ` +
71
+ 'docs/MIGRATION.md.',
72
+ );
73
+ }
74
+
75
+ /** Load `state_file` and tag it with the wire format detected. */
76
+ export function _load(state_file: string): [WorkState, string] {
77
+ const data = _read_json(state_file);
78
+ if (!_isPlainDict(data)) {
79
+ throw new _CLIError(
80
+ `State file ${state_file} must carry a JSON object; ` +
81
+ `got ${_pyTypeName(data)}.`,
82
+ );
83
+ }
84
+ const d = data as Record<string, JsonValue>;
85
+
86
+ // v1 declares `version`; v0 has none. Anything else is invalid.
87
+ if (_get(d, 'version', undefined) === SCHEMA_VERSION) {
88
+ try {
89
+ return [_state_from_dict(d as JsonValue), _FMT_V1];
90
+ } catch (exc) {
91
+ if (exc instanceof SchemaError) {
92
+ throw new _CLIError(`State file shape is invalid: ${exc.message}`);
93
+ }
94
+ throw exc;
95
+ }
96
+ }
97
+ if ('version' in d) {
98
+ throw new _CLIError(
99
+ `State file shape is invalid: unsupported version ` +
100
+ `${_pyRepr(_get(d, 'version', undefined))}; expected ${SCHEMA_VERSION}`,
101
+ );
102
+ }
103
+ if (!('ticket' in d)) {
104
+ throw new _CLIError(
105
+ "State file shape is invalid: missing 'ticket' (v0) or " +
106
+ "'version' (v1) — file is neither shape.",
107
+ );
108
+ }
109
+ try {
110
+ const migrated = migrate_payload(d);
111
+ return [_state_from_dict(migrated as JsonValue), _FMT_V0];
112
+ } catch (exc) {
113
+ if (exc instanceof SchemaError) {
114
+ throw new _CLIError(`State file shape is invalid: ${exc.message}`);
115
+ }
116
+ throw exc;
117
+ }
118
+ }
119
+
120
+ /**
121
+ * Project `work` into a `DeliveryState` for handler dispatch.
122
+ *
123
+ * R1 P4 S1 (Option A2): handlers continue to consume `DeliveryState`
124
+ * with `state.ticket`; the `WorkState` wrapper exists at the CLI
125
+ * boundary so the dispatcher's directive-set selection has a v1
126
+ * state object to read `directive_set` from. Mutable containers
127
+ * (`memory`, `changes`, `outcomes`, `questions`) are passed
128
+ * by reference — in-place mutations land on both objects without an
129
+ * explicit sync. Reassignments (`state.plan = …`, `state.report = …`)
130
+ * are mirrored back by {@link _sync_back}.
131
+ */
132
+ export function _to_delivery(work: WorkState): DeliveryState {
133
+ return new DeliveryState({
134
+ ticket: work.input.data as Record<string, DeliveryAny>,
135
+ persona: work.persona,
136
+ memory: work.memory as Array<Record<string, DeliveryAny>>,
137
+ plan: work.plan,
138
+ changes: work.changes as Array<Record<string, DeliveryAny>>,
139
+ tests: work.tests,
140
+ verify: work.verify,
141
+ outcomes: work.outcomes,
142
+ questions: work.questions,
143
+ report: work.report,
144
+ ui_audit: work.ui_audit as Record<string, DeliveryAny> | null,
145
+ app_spec: work.app_spec as Record<string, DeliveryAny> | null,
146
+ ui_design: work.ui_design as Record<string, DeliveryAny> | null,
147
+ ui_scaffold: work.ui_scaffold as Record<string, DeliveryAny> | null,
148
+ ui_review: work.ui_review as Record<string, DeliveryAny> | null,
149
+ ui_polish: work.ui_polish as Record<string, DeliveryAny> | null,
150
+ contract: work.contract as Record<string, DeliveryAny> | null,
151
+ stitch: work.stitch as Record<string, DeliveryAny> | null,
152
+ stack: work.stack as Record<string, DeliveryAny> | null,
153
+ });
154
+ }
155
+
156
+ /**
157
+ * Mirror handler mutations from `delivery` back into `work`.
158
+ *
159
+ * Container fields are shared by reference (see {@link _to_delivery})
160
+ * so the assignment is a no-op for those — we still mirror them
161
+ * defensively to cover the case where a handler reassigned the
162
+ * attribute (`state.memory = [new_list]`) instead of mutating in
163
+ * place.
164
+ */
165
+ export function _sync_back(work: WorkState, delivery: DeliveryState): void {
166
+ work.input.data = delivery.ticket as Dict;
167
+ work.persona = delivery.persona;
168
+ work.memory = delivery.memory as Dict[];
169
+ work.plan = delivery.plan as JsonValue;
170
+ work.changes = delivery.changes as Dict[];
171
+ work.tests = delivery.tests as JsonValue;
172
+ work.verify = delivery.verify as JsonValue;
173
+ work.outcomes = delivery.outcomes;
174
+ work.questions = delivery.questions;
175
+ work.report = delivery.report;
176
+ work.ui_audit = delivery.ui_audit as Dict | null;
177
+ work.app_spec = delivery.app_spec as Dict | null;
178
+ work.ui_design = delivery.ui_design as Dict | null;
179
+ work.ui_scaffold = delivery.ui_scaffold as Dict | null;
180
+ work.ui_review = delivery.ui_review as Dict | null;
181
+ work.ui_polish = delivery.ui_polish as Dict | null;
182
+ work.contract = delivery.contract as Dict | null;
183
+ work.stitch = delivery.stitch as Dict | null;
184
+ work.stack = delivery.stack as Dict | null;
185
+ }
186
+
187
+ /**
188
+ * Persist `work` in the wire format it was loaded with.
189
+ *
190
+ * v1 emits the canonical envelope via {@link _state_to_dict}; v0 emits the
191
+ * legacy flat shape that `DeliveryState.asdict` used to produce, byte-identical
192
+ * to the pre-Phase-4 output so the Golden Transcript replay stays green.
193
+ */
194
+ export function _save(state_file: string, work: WorkState, fmt: string): void {
195
+ fs.mkdirSync(path.dirname(state_file), { recursive: true });
196
+ const payload = fmt === _FMT_V1 ? _state_to_dict(work) : _to_v0_dict(work);
197
+ fs.writeFileSync(
198
+ state_file,
199
+ _jsonDumps(payload) + '\n',
200
+ 'utf-8',
201
+ );
202
+ }
203
+
204
+ /**
205
+ * Serialise `work` in the legacy v0 wire format.
206
+ *
207
+ * Field order matches `DeliveryState` declaration order so
208
+ * pre-Phase-4 state files round-trip byte-equal.
209
+ */
210
+ export function _to_v0_dict(work: WorkState): Dict {
211
+ return {
212
+ ticket: work.input.data,
213
+ persona: work.persona,
214
+ memory: work.memory,
215
+ plan: work.plan,
216
+ changes: work.changes,
217
+ tests: work.tests,
218
+ verify: work.verify,
219
+ outcomes: work.outcomes,
220
+ questions: work.questions,
221
+ report: work.report,
222
+ };
223
+ }
224
+
225
+ export function _read_json(p: string): JsonValue {
226
+ let raw: string;
227
+ try {
228
+ raw = fs.readFileSync(p, 'utf-8');
229
+ } catch (exc) {
230
+ // Python `OSError` → "Cannot read {path}: {exc}".
231
+ throw new _CLIError(`Cannot read ${p}: ${_osErrorText(exc, p)}`);
232
+ }
233
+ try {
234
+ return JSON.parse(raw) as JsonValue;
235
+ } catch (exc) {
236
+ // Python `json.JSONDecodeError` → "Invalid JSON in {path}: {exc}".
237
+ throw new _CLIError(`Invalid JSON in ${p}: ${(exc as Error).message}`);
238
+ }
239
+ }
240
+
241
+ // ── Inlined v0→v1 payload migration ──────────────────────────────────────
242
+ //
243
+ // The Python source imports `migrate_payload` from
244
+ // `work_engine.migration.v0_to_v1`. A `.ts` twin may not import a `.py`
245
+ // (ADR-200), and the full `v0_to_v1` module (with its CLI / `migrate_file`
246
+ // surface) lands in a later phase. The `migrate_payload` slice `_load` needs
247
+ // is reproduced here verbatim so the load path stays byte-identical; when the
248
+ // `v0_to_v1.ts` twin lands it can re-export this or replace it 1:1.
249
+
250
+ /**
251
+ * Return the v1 form of `payload`.
252
+ *
253
+ * A payload that already declares `version: 1` is returned unchanged
254
+ * (deep-copied via `JSON.parse(JSON.stringify(...))` so the caller cannot
255
+ * accidentally mutate the input). Anything else is treated as v0 and wrapped:
256
+ * `ticket` becomes `input.data`, `input.kind` is set to `"ticket"`, and the
257
+ * engine defaults are filled in.
258
+ *
259
+ * @throws SchemaError If the payload is not a dict, declares a higher version
260
+ * than this migration knows about, or lacks a `ticket` key.
261
+ */
262
+ export function migrate_payload(payload: JsonValue): Dict {
263
+ if (!_isPlainDict(payload)) {
264
+ throw new SchemaError(
265
+ `v0 state must be a JSON object; got ${_pyTypeName(payload)}`,
266
+ );
267
+ }
268
+ const p = payload as Record<string, JsonValue>;
269
+
270
+ const declared_version = _get(p, 'version', undefined);
271
+ if (declared_version === SCHEMA_VERSION) {
272
+ return JSON.parse(JSON.stringify(p)) as Dict;
273
+ }
274
+ if (declared_version !== undefined && declared_version !== null) {
275
+ throw new SchemaError(
276
+ `cannot migrate from version ${_pyRepr(declared_version)} to ` +
277
+ `${SCHEMA_VERSION}; this script only handles v0 (no version key)`,
278
+ );
279
+ }
280
+
281
+ if (!('ticket' in p)) {
282
+ throw new SchemaError(
283
+ "v0 state must carry a 'ticket' key; got keys: " +
284
+ _pyReprList(_sortedStr(Object.keys(p))),
285
+ );
286
+ }
287
+ const ticket = p['ticket'];
288
+ if (!_isPlainDict(ticket)) {
289
+ throw new SchemaError(
290
+ `v0 state.ticket must be a JSON object; got ${_pyTypeName(ticket)}`,
291
+ );
292
+ }
293
+
294
+ return {
295
+ version: SCHEMA_VERSION,
296
+ input: { kind: 'ticket', data: ticket },
297
+ intent: DEFAULT_INTENT,
298
+ directive_set: DEFAULT_DIRECTIVE_SET,
299
+ persona: _get(p, 'persona', 'senior-engineer') as JsonValue,
300
+ memory: [...((_get(p, 'memory', []) as JsonValue[]) ?? [])],
301
+ plan: _get(p, 'plan', null) as JsonValue,
302
+ changes: [...((_get(p, 'changes', []) as JsonValue[]) ?? [])],
303
+ tests: _get(p, 'tests', null) as JsonValue,
304
+ verify: _get(p, 'verify', null) as JsonValue,
305
+ outcomes: { ...((_get(p, 'outcomes', {}) as Dict) ?? {}) },
306
+ questions: [...((_get(p, 'questions', []) as JsonValue[]) ?? [])],
307
+ report: _get(p, 'report', '') as JsonValue,
308
+ };
309
+ }
310
+
311
+ // ── Python-parity primitives ────────────────────────────────────────────
312
+
313
+ /**
314
+ * Mirror Python `json.dumps(obj, indent=2, ensure_ascii=False)`.
315
+ *
316
+ * For round-tripped JSON, `JSON.stringify` with a 2-space indent matches
317
+ * CPython byte-for-byte: 2-space indent, `": "` key separator, `{}` / `[]`
318
+ * for empties, non-ASCII verbatim. Same rationale as `state.ts::jsonDumps`:
319
+ * no float/int tag survives JSON parsing, so the CPython `N.0` divergence
320
+ * cannot arise here.
321
+ */
322
+ function _jsonDumps(obj: Dict): string {
323
+ return JSON.stringify(obj, null, 2);
324
+ }
325
+
326
+ /** `dict.get(key, default)`. */
327
+ function _get(obj: Record<string, JsonValue>, key: string, dflt: unknown): unknown {
328
+ return key in obj ? obj[key] : dflt;
329
+ }
330
+
331
+ /** Python `isinstance(x, dict)` — plain object only (not array, not null). */
332
+ function _isPlainDict(value: unknown): boolean {
333
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
334
+ }
335
+
336
+ function _isFile(p: string): boolean {
337
+ try {
338
+ return fs.statSync(p).isFile();
339
+ } catch {
340
+ return false;
341
+ }
342
+ }
343
+
344
+ /** Python `type(x).__name__` for the JSON value shapes the messages emit. */
345
+ function _pyTypeName(value: unknown): string {
346
+ if (value === null || value === undefined) {
347
+ return 'NoneType';
348
+ }
349
+ if (Array.isArray(value)) {
350
+ return 'list';
351
+ }
352
+ switch (typeof value) {
353
+ case 'string':
354
+ return 'str';
355
+ case 'boolean':
356
+ return 'bool';
357
+ case 'number':
358
+ return Number.isInteger(value) ? 'int' : 'float';
359
+ case 'object':
360
+ return 'dict';
361
+ default:
362
+ return typeof value;
363
+ }
364
+ }
365
+
366
+ /** Python `repr(x)` for the scalar shapes interpolated via `{value!r}`. */
367
+ function _pyRepr(value: unknown): string {
368
+ if (value === null || value === undefined) {
369
+ return 'None';
370
+ }
371
+ if (value === true) {
372
+ return 'True';
373
+ }
374
+ if (value === false) {
375
+ return 'False';
376
+ }
377
+ if (typeof value === 'string') {
378
+ return `'${value.replace(/\\/g, '\\\\').replace(/'/g, "\\'")}'`;
379
+ }
380
+ return String(value);
381
+ }
382
+
383
+ /** Python `repr(list_of_str)` — `['a', 'b']`. */
384
+ function _pyReprList(values: string[]): string {
385
+ return '[' + values.map((v) => _pyRepr(v)).join(', ') + ']';
386
+ }
387
+
388
+ /** Python `sorted(list_of_str)` — code-point ascending. */
389
+ function _sortedStr(values: string[]): string[] {
390
+ return [...values].sort((a, b) => (a < b ? -1 : a > b ? 1 : 0));
391
+ }
392
+
393
+ /**
394
+ * Approximate the text of Python's `OSError` for a failed read. Python
395
+ * formats `errno`-based messages like "[Errno 2] No such file or directory:
396
+ * 'path'". Node's error `.message` is shaped differently, so this is one of
397
+ * the few non-byte-identical surfaces — the error *channel* (exit 2 via
398
+ * `_CLIError`) and the *prefix* ("Cannot read <path>: ") stay identical;
399
+ * only the trailing OS detail differs. Tests normalise this trailing detail.
400
+ */
401
+ function _osErrorText(exc: unknown, p: string): string {
402
+ const e = exc as NodeJS.ErrnoException;
403
+ if (e && e.code === 'ENOENT') {
404
+ return `[Errno 2] No such file or directory: '${p}'`;
405
+ }
406
+ if (e && e.code === 'EISDIR') {
407
+ return `[Errno 21] Is a directory: '${p}'`;
408
+ }
409
+ if (e && e.code === 'EACCES') {
410
+ return `[Errno 13] Permission denied: '${p}'`;
411
+ }
412
+ return e && e.message ? e.message : String(exc);
413
+ }
@@ -460,7 +460,7 @@ quality:
460
460
  # tokens. The user runs quality tools manually; remote CI is
461
461
  # the authoritative gate. The agent runs a quality tool ONLY
462
462
  # when one of three triggers fires:
463
- # 1. the user explicitly asks this turn (e.g. /quality-fix),
463
+ # 1. the user explicitly asks this turn (e.g. /fix quality),
464
464
  # 2. CI / the remote pipeline reports a concrete failure —
465
465
  # then run exactly that failing check to reproduce + fix,
466
466
  # 3. the new-gate carve-out below.
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Atomic file writer — Phase A4 primitive.
3
+ *
4
+ * 1:1 port of the `tempfile.mkstemp` + `os.replace` pattern used across
5
+ * `scripts/install.py` (see `_write_consumer_bridge_marker` ~line 3036).
6
+ *
7
+ * Contract:
8
+ * 1. Open a sibling `.tmp.<rand>` file in the destination directory
9
+ * so the rename below is a same-filesystem operation (POSIX rename
10
+ * atomicity guarantee).
11
+ * 2. Write the payload, `fsync` to durable storage.
12
+ * 3. `rename()` to the final target — atomic on POSIX and Windows
13
+ * (Node's `fs.renameSync` maps to `MoveFileExA` with REPLACE).
14
+ * 4. On any failure between (1) and (3), unlink the temp file so we
15
+ * do not leak `.tmp.*` siblings.
16
+ *
17
+ * Sync API on purpose — the apply phase is fundamentally sequential
18
+ * (transaction-log ordering matters) and async I/O would add a real
19
+ * cost without any throughput win on the workloads we hit (≤ a few
20
+ * thousand small files per install).
21
+ */
22
+
23
+ import {
24
+ closeSync,
25
+ fsyncSync,
26
+ mkdirSync,
27
+ openSync,
28
+ readFileSync,
29
+ renameSync,
30
+ unlinkSync,
31
+ writeSync,
32
+ } from 'node:fs';
33
+ import { dirname, join } from 'node:path';
34
+
35
+ /** Options accepted by {@link atomicWriteFile}. */
36
+ export interface AtomicWriteOptions {
37
+ /** POSIX file mode (default `0o644`). Ignored on Windows. */
38
+ readonly mode?: number;
39
+ }
40
+
41
+ /**
42
+ * Write `data` to `target` atomically.
43
+ *
44
+ * Throws on any I/O failure — the caller (apply phase) catches and
45
+ * surfaces an `E_DISK_FULL` / `E_PERM` SSE error frame (Phase B1).
46
+ *
47
+ * Parent directory is created with `recursive: true` so callers do not
48
+ * have to pre-mkdir each subtree.
49
+ */
50
+ export function atomicWriteFile(
51
+ target: string,
52
+ data: Buffer | string,
53
+ options: AtomicWriteOptions = {},
54
+ ): void {
55
+ const mode = options.mode ?? 0o644;
56
+ const parent = dirname(target);
57
+ mkdirSync(parent, { recursive: true });
58
+
59
+ const tmp = join(parent, `.tmp.${process.pid}.${randSuffix()}`);
60
+ let fd: number | null = null;
61
+ try {
62
+ fd = openSync(tmp, 'w', mode);
63
+ const buf = typeof data === 'string' ? Buffer.from(data, 'utf8') : data;
64
+ writeSync(fd, buf, 0, buf.length, 0);
65
+ fsyncSync(fd);
66
+ closeSync(fd);
67
+ fd = null;
68
+ renameSync(tmp, target);
69
+ } catch (err) {
70
+ if (fd !== null) {
71
+ try {
72
+ closeSync(fd);
73
+ } catch {
74
+ /* swallow — outer error wins */
75
+ }
76
+ }
77
+ try {
78
+ unlinkSync(tmp);
79
+ } catch {
80
+ /* file may not exist yet — swallow */
81
+ }
82
+ throw err;
83
+ }
84
+ }
85
+
86
+ /**
87
+ * Append `line` to `target` atomically (read-modify-write).
88
+ *
89
+ * Wraps {@link atomicWriteFile} after a read of the current contents.
90
+ * Used by the transaction-log writer (`txlog.ts`) to grow the JSONL
91
+ * file one entry at a time without leaving a half-written line on
92
+ * crash. Newline is enforced — caller passes the bare payload.
93
+ */
94
+ export function atomicAppendLine(target: string, line: string): void {
95
+ let existing = '';
96
+ try {
97
+ existing = readFileSync(target, 'utf8');
98
+ } catch {
99
+ existing = '';
100
+ }
101
+ const sep = existing.length > 0 && !existing.endsWith('\n') ? '\n' : '';
102
+ atomicWriteFile(target, `${existing}${sep}${line}\n`);
103
+ }
104
+
105
+ function randSuffix(): string {
106
+ // 12 hex chars — sufficient to avoid collisions under concurrent
107
+ // installs (we do not run them in production, but tests do).
108
+ return Math.floor(Math.random() * 0xffffffffffff)
109
+ .toString(16)
110
+ .padStart(12, '0');
111
+ }