@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,518 @@
1
+ /**
2
+ * `refine` step — deterministic gate in front of the refinement skills.
3
+ *
4
+ * TypeScript twin of `work_engine/directives/backend/refine.py` (ADR-200
5
+ * py2ts Phase 1 — work_engine directive sets). Public API names stay
6
+ * snake_case to mirror the Python module 1:1 (per ADR-200 — Python style is
7
+ * part of the contract).
8
+ *
9
+ * The step never calls an LLM. It inspects `state.ticket` (which carries
10
+ * `input.data` after the CLI projection) and routes on shape:
11
+ *
12
+ * - **Ticket envelope** (`id`, `title`, `acceptance_criteria`) — the
13
+ * R1 path. Validates the minimum viable shape and either returns
14
+ * `SUCCESS` or `BLOCKED` with numbered options pointing at
15
+ * `/refine-ticket`.
16
+ * - **Prompt envelope** (`raw` key present, `reconstructed_ac` /
17
+ * `assumptions` slots) — the R2 path. On the first pass the gate
18
+ * delegates to the `refine-prompt` skill via an `@agent-directive:`
19
+ * halt; on the rebound it scores the reconstructed envelope and routes
20
+ * the resulting confidence band:
21
+ *
22
+ * - `high` → `SUCCESS` (silent proceed, breakdown logged for the report)
23
+ * - `medium` → `PARTIAL` with an assumptions-report halt
24
+ * - `low` → `BLOCKED` with one clarifying question targeted at the
25
+ * weakest dimension
26
+ *
27
+ * The checks live here (rather than inside the refinement skills) because
28
+ * the dispatcher is synchronous Python: it cannot "delegate" to an agent
29
+ * skill mid-loop. Making the gate deterministic keeps the contract "block
30
+ * on ambiguity, never guess" enforceable from code, and ensures the band
31
+ * the dispatcher routes on is always engine-computed — the skill produces
32
+ * AC + assumptions, the engine decides.
33
+ */
34
+
35
+ import type { DeliveryState} from '../../delivery_state.js';
36
+ import { type Any, Outcome, StepResult, agent_directive } from '../../delivery_state.js';
37
+ import type { ConfidenceScore} from '../../scoring/confidence.js';
38
+ import { DIMENSION_NAMES, score as _confidence_score } from '../../scoring/confidence.js';
39
+
40
+ const _MIN_TITLE_LEN = 3;
41
+ const _MIN_AC_LEN = 10;
42
+
43
+ export const AMBIGUITIES: ReadonlyArray<Record<string, string>> = [
44
+ {
45
+ code: 'missing_id',
46
+ trigger: 'ticket has no `id` field (or only whitespace)',
47
+ resolution: 'run `/refine-ticket` or paste the ticket id in chat',
48
+ },
49
+ {
50
+ code: 'trivial_title',
51
+ trigger: `title missing or shorter than ${_MIN_TITLE_LEN} chars`,
52
+ resolution: 'run `/refine-ticket` to rewrite the title',
53
+ },
54
+ {
55
+ code: 'missing_or_vague_ac',
56
+ trigger: `acceptance_criteria empty, non-list, or any item under ${_MIN_AC_LEN} chars`,
57
+ resolution: 'run `/refine-ticket` to add concrete acceptance criteria',
58
+ },
59
+ {
60
+ code: 'prompt_unrefined',
61
+ trigger:
62
+ 'prompt envelope present but `reconstructed_ac` is empty — ' +
63
+ 'the deterministic gate has nothing to score yet',
64
+ resolution:
65
+ 'agent directive `refine-prompt` → run the skill, ' +
66
+ 'write AC + assumptions back into `state.ticket`',
67
+ },
68
+ {
69
+ code: 'prompt_medium_confidence',
70
+ trigger:
71
+ 'scored band is `medium` and the user has not confirmed the ' +
72
+ 'assumptions report yet',
73
+ resolution:
74
+ 'user confirms the reconstructed AC + assumptions, ' +
75
+ 'or refines them; agent flips `confidence_confirmed=True` to ' +
76
+ 'release the gate',
77
+ },
78
+ {
79
+ code: 'prompt_low_confidence',
80
+ trigger:
81
+ 'scored band is `low` — too little signal to plan against, ' +
82
+ 'even after reconstruction',
83
+ resolution:
84
+ 'user answers one clarifying question; the agent ' +
85
+ 're-runs `refine-prompt` against the refreshed prompt',
86
+ },
87
+ {
88
+ code: 'prompt_ui_intent',
89
+ trigger:
90
+ 'scorer flagged `ui_intent=True` — the prompt reads as UI ' +
91
+ 'work and the backend track cannot ship it cleanly',
92
+ resolution:
93
+ 'user re-frames the prompt as backend-only, parks ' +
94
+ 'it for Roadmap 3 (`road-to-product-ui-track.md`), or aborts',
95
+ },
96
+ ];
97
+ /** Declared ambiguity surfaces. Every BLOCKED / PARTIAL return maps to one code. */
98
+
99
+ /** Route on envelope shape: ticket path or prompt path. */
100
+ export function run(state: DeliveryState): StepResult {
101
+ const data = state.ticket || {};
102
+ if (_is_prompt_envelope(data)) {
103
+ return _run_prompt(state, data);
104
+ }
105
+
106
+ const deficiencies = _diagnose(data);
107
+ if (deficiencies.length === 0) {
108
+ return new StepResult({ outcome: Outcome.SUCCESS });
109
+ }
110
+
111
+ const ticket_id = _pyTruthy(data.id) ? _pyStr(data.id) : '(no id)';
112
+ const questions = _format_questions(ticket_id, deficiencies);
113
+ return new StepResult({
114
+ outcome: Outcome.BLOCKED,
115
+ questions,
116
+ message: `Ticket ${ticket_id} is not refined enough to plan against: ` + deficiencies.join('; '),
117
+ });
118
+ }
119
+
120
+ /**
121
+ * True when `state.ticket` carries a prompt envelope.
122
+ *
123
+ * The presence of a string-valued `raw` key is unambiguous: ticket
124
+ * payloads never carry `raw`, and prompt envelopes always do (the
125
+ * resolver writes it before any handler sees the state).
126
+ */
127
+ function _is_prompt_envelope(data: Record<string, Any>): boolean {
128
+ if (!_isPlainObject(data)) {
129
+ return false;
130
+ }
131
+ const raw = data.raw;
132
+ return typeof raw === 'string' && Boolean(raw.trim());
133
+ }
134
+
135
+ /**
136
+ * Return a human-readable list of what's missing from the ticket.
137
+ *
138
+ * Order matches what a reader needs first (identity → summary →
139
+ * acceptance criteria) so the surfaced questions read naturally.
140
+ */
141
+ function _diagnose(ticket: Record<string, Any>): string[] {
142
+ const issues: string[] = [];
143
+
144
+ const ticket_id = ticket.id;
145
+ if (typeof ticket_id !== 'string' || !ticket_id.trim()) {
146
+ issues.push('missing ticket id');
147
+ }
148
+
149
+ const title = ticket.title;
150
+ if (typeof title !== 'string' || title.trim().length < _MIN_TITLE_LEN) {
151
+ issues.push('missing or trivial title');
152
+ }
153
+
154
+ const ac = ticket.acceptance_criteria;
155
+ if (!Array.isArray(ac) || ac.length === 0) {
156
+ issues.push('no acceptance criteria');
157
+ } else {
158
+ const weak_indices: number[] = [];
159
+ ac.forEach((item, idx) => {
160
+ if (!_is_concrete_ac(item)) {
161
+ weak_indices.push(idx + 1);
162
+ }
163
+ });
164
+ if (weak_indices.length > 0) {
165
+ issues.push('vague acceptance criteria at position(s) ' + weak_indices.map((i) => String(i)).join(', '));
166
+ }
167
+ }
168
+
169
+ return issues;
170
+ }
171
+
172
+ /**
173
+ * An AC is concrete when it is a non-empty string above the length floor.
174
+ *
175
+ * The floor is deliberately loose: refine is a gate, not a style
176
+ * judge. The heavy lifting (measurability, testability, tone) is
177
+ * owned by the `refine-ticket` skill on the rebound.
178
+ */
179
+ function _is_concrete_ac(item: Any): boolean {
180
+ if (typeof item !== 'string') {
181
+ return false;
182
+ }
183
+ return item.trim().length >= _MIN_AC_LEN;
184
+ }
185
+
186
+ /**
187
+ * Render the numbered options shown to the user when BLOCKED.
188
+ *
189
+ * Three options, ordered by likely next action: run the existing
190
+ * refinement skill, paste the missing data in chat, or abandon the
191
+ * ticket entirely. `user-interaction` requires numbered, prose-
192
+ * free options; the deficiency list is rendered as a headnote.
193
+ */
194
+ function _format_questions(ticket_id: string, deficiencies: string[]): string[] {
195
+ const headnote = '> Ticket ' + ticket_id + ' is missing: ' + deficiencies.join('; ') + '.';
196
+ return [
197
+ headnote,
198
+ `> 1. Run \`/refine-ticket ${ticket_id}\` and re-invoke \`/implement-ticket\``,
199
+ "> 2. Provide the missing details in chat — I'll merge them into the ticket",
200
+ '> 3. Abandon this ticket — too vague to implement',
201
+ ];
202
+ }
203
+
204
+ /**
205
+ * Score the prompt envelope and route on the resulting band.
206
+ *
207
+ * First pass (no AC reconstructed yet) → delegate to `refine-prompt`.
208
+ * Second pass → score and branch:
209
+ *
210
+ * - `high` → `SUCCESS`; the breakdown is recorded on
211
+ * `state.ticket['confidence']` so the report renderer can include
212
+ * it without re-scoring.
213
+ * - `medium` → `PARTIAL` with an assumptions-report halt unless
214
+ * the agent has flipped `confidence_confirmed=True` after the
215
+ * user signed off. `low` band can never be released this way.
216
+ * - `low` → `BLOCKED` with one clarifying question targeted at
217
+ * the weakest dimension (lowest score wins; ties prefer the order
218
+ * declared in `work_engine.scoring.confidence.DIMENSION_NAMES`).
219
+ */
220
+ function _run_prompt(state: DeliveryState, data: Record<string, Any>): StepResult {
221
+ const raw = (_pyTruthy(data.raw) ? data.raw : '') as string;
222
+ const ac: Any[] = Array.isArray(data.reconstructed_ac) ? data.reconstructed_ac : [];
223
+ const assumptions: Any[] = Array.isArray(data.assumptions) ? data.assumptions : [];
224
+
225
+ if (ac.length === 0) {
226
+ return _delegate_to_refine_prompt(raw);
227
+ }
228
+
229
+ const result = _confidence_score({ raw, ac: ac as string[], assumptions: assumptions as string[] });
230
+ data.confidence = {
231
+ band: result.band,
232
+ score: result.score,
233
+ dimensions: { ...result.dimensions },
234
+ reasons: [...result.reasons],
235
+ ui_intent: result.ui_intent,
236
+ };
237
+ // Mirror reconstructed AC into the legacy slot every downstream gate
238
+ // (analyze, plan, implement) reads. Prompt envelopes carry AC under
239
+ // `reconstructed_ac`; without this projection `analyze` blocks with
240
+ // "ticket lost its acceptance criteria" the moment `refine` succeeds.
241
+ data.acceptance_criteria = [...ac];
242
+
243
+ if (result.ui_intent) {
244
+ return _halt_ui_intent(raw, result);
245
+ }
246
+
247
+ if (result.band === 'high') {
248
+ return new StepResult({ outcome: Outcome.SUCCESS });
249
+ }
250
+
251
+ if (result.band === 'medium') {
252
+ if (data.confidence_confirmed === true) {
253
+ return new StepResult({ outcome: Outcome.SUCCESS });
254
+ }
255
+ return _halt_medium(raw, ac, assumptions, result);
256
+ }
257
+
258
+ return _halt_low(raw, result);
259
+ }
260
+
261
+ /** Halt with an agent directive so the orchestrator runs `refine-prompt`. */
262
+ function _delegate_to_refine_prompt(raw: string): StepResult {
263
+ const preview = _preview(raw);
264
+ return new StepResult({
265
+ outcome: Outcome.BLOCKED,
266
+ questions: [
267
+ agent_directive('refine-prompt'),
268
+ `> Prompt received: ${preview}`,
269
+ '> No reconstructed acceptance criteria yet — running ' + '`refine-prompt` and resuming.',
270
+ '> 1. Continue — let the skill reconstruct AC + assumptions',
271
+ '> 2. Abort — the prompt is not what I meant',
272
+ ],
273
+ message: 'Prompt envelope present but unrefined; delegating to refine-prompt.',
274
+ });
275
+ }
276
+
277
+ /** PARTIAL halt — assumptions report, one user round-trip. */
278
+ function _halt_medium(raw: string, ac: Any[], assumptions: Any[], result: ConfidenceScore): StepResult {
279
+ const preview = _preview(raw);
280
+ const ac_lines = ac.map((item, i) => `> ${i + 1}. ${_pyStr(item)}`);
281
+ const asm_lines = assumptions.length > 0 ? assumptions.map((item) => `> - ${_pyStr(item)}`) : ['> - (none recorded)'];
282
+ const questions = [
283
+ `> Prompt: ${preview}`,
284
+ `> Confidence: **medium** (score ${_pyFormat2f(result.score)}). ` + 'Assumptions worth confirming before I plan.',
285
+ '> Reconstructed AC:',
286
+ ...ac_lines,
287
+ '> Assumptions:',
288
+ ...asm_lines,
289
+ '> 1. Continue as-is — the AC + assumptions are good enough',
290
+ "> 2. Refine — I'll send a corrected prompt and re-run " + '`refine-prompt`',
291
+ '> 3. Abort — pause this `/work` cycle',
292
+ ];
293
+ return new StepResult({
294
+ outcome: Outcome.PARTIAL,
295
+ questions,
296
+ message: `Prompt scored medium (${_pyFormat2f(result.score)}); ` + 'halting for assumptions confirmation.',
297
+ });
298
+ }
299
+
300
+ /** BLOCKED halt — one targeted question on the weakest dimension. */
301
+ function _halt_low(raw: string, result: ConfidenceScore): StepResult {
302
+ const preview = _preview(raw);
303
+ const [weakest_idx, weakest_name] = _weakest_dimension(result.dimensions);
304
+ const reason = weakest_idx < result.reasons.length ? result.reasons[weakest_idx] : '';
305
+ const prompts: Record<string, string> = {
306
+ goal_clarity: 'What is the single observable outcome you want?',
307
+ scope_boundary: 'Which file, class, or module should I touch?',
308
+ ac_evidence: 'What concrete behaviour proves it works?',
309
+ stack_data: 'Which table, column, or migration target is involved?',
310
+ reversibility: 'Is this change destructive — should I work behind a flag?',
311
+ };
312
+ const question = weakest_name in prompts ? prompts[weakest_name] : 'Can you tighten the prompt?';
313
+ return new StepResult({
314
+ outcome: Outcome.BLOCKED,
315
+ questions: [
316
+ `> Prompt: ${preview}`,
317
+ `> Confidence: **low** (score ${_pyFormat2f(result.score)}). ` + `Weakest dimension: \`${weakest_name}\` — ${reason}`,
318
+ `> ${question}`,
319
+ "> 1. I'll answer — paste the answer in chat and re-invoke `/work`",
320
+ '> 2. Abort — drop this prompt',
321
+ ],
322
+ message: `Prompt scored low (${_pyFormat2f(result.score)}); blocking on ` + `\`${weakest_name}\` clarification.`,
323
+ });
324
+ }
325
+
326
+ /**
327
+ * BLOCKED halt — UI-shaped prompts await the R3 dispatch track.
328
+ *
329
+ * The backend `directives/backend/` set has no UI capability; routing a
330
+ * UI prompt through it would either ship a backend stub or guess at a
331
+ * component. Both are worse than a clean refusal with a pointer to the
332
+ * deferred R3 track. The halt is band-independent — even a high-band
333
+ * UI prompt blocks here, because confidence on the *reconstruction* says
334
+ * nothing about whether the *dispatcher* can deliver it.
335
+ */
336
+ function _halt_ui_intent(raw: string, result: ConfidenceScore): StepResult {
337
+ const preview = _preview(raw);
338
+ return new StepResult({
339
+ outcome: Outcome.BLOCKED,
340
+ questions: [
341
+ `> Prompt: ${preview}`,
342
+ '> This prompt reads as **UI work** — the backend dispatch ' + "track can't ship it cleanly.",
343
+ '> UI dispatch is deferred to Roadmap 3 ' + '(`road-to-product-ui-track.md`); until it lands, `/work` ' + 'only handles backend-shaped prompts.',
344
+ "> 1. Re-frame as a backend-only prompt — I'll re-score and proceed",
345
+ '> 2. Park this prompt — wait for R3 and re-invoke `/work` then',
346
+ '> 3. Abort — drop this prompt',
347
+ ],
348
+ message: `Prompt flagged as UI-intent (band=${result.band}, ` + `score=${_pyFormat2f(result.score)}); blocked pending R3 UI track.`,
349
+ });
350
+ }
351
+
352
+ /**
353
+ * Return `[index, name]` of the lowest-scoring dimension.
354
+ *
355
+ * Ties are broken by `_confidence.DIMENSION_NAMES` order so the
356
+ * same input always produces the same question (replay determinism).
357
+ */
358
+ function _weakest_dimension(dimensions: Record<string, number>): [number, string] {
359
+ const ordered: string[] = [...DIMENSION_NAMES];
360
+ // Python `min(ordered, key=lambda n: (dimensions.get(n, 0), ordered.index(n)))`
361
+ // — lowest score wins; ties broken by declared order (stable, first wins).
362
+ let weakest_name = ordered[0] ?? '';
363
+ let weakest_key: [number, number] = [dimensions[weakest_name] ?? 0, 0];
364
+ for (let i = 1; i < ordered.length; i += 1) {
365
+ const name = ordered[i] ?? '';
366
+ const key: [number, number] = [dimensions[name] ?? 0, i];
367
+ if (key[0] < weakest_key[0] || (key[0] === weakest_key[0] && key[1] < weakest_key[1])) {
368
+ weakest_name = name;
369
+ weakest_key = key;
370
+ }
371
+ }
372
+ return [ordered.indexOf(weakest_name), weakest_name];
373
+ }
374
+
375
+ /** Trim a raw prompt for inline display in halts. */
376
+ function _preview(raw: string, max_chars = 80): string {
377
+ // `" ".join((raw or "").split())` — Python `str.split()` splits on
378
+ // whitespace runs and drops empties; join with single spaces.
379
+ const text = (raw || '').split(/\s+/u).filter((t) => t.length > 0).join(' ');
380
+ if (text.length <= max_chars) {
381
+ return text;
382
+ }
383
+ // `text[:max_chars - 1].rstrip() + "…"`
384
+ return text.slice(0, max_chars - 1).replace(/\s+$/u, '') + '…';
385
+ }
386
+
387
+ /**
388
+ * Python `f"{value:.2f}"` — fixed two-decimal formatting with
389
+ * round-half-to-even. `score` values are normalised to 4 decimals by the
390
+ * scorer, so the standard `toFixed(2)` round-half-away-from-zero and Python's
391
+ * banker's rounding agree on every value the scorer can emit; the explicit
392
+ * even-rounding path below keeps parity for any exact-half edge case.
393
+ */
394
+ function _pyFormat2f(value: number): string {
395
+ if (!Number.isFinite(value)) {
396
+ // Python renders inf/nan as 'inf'/'nan'; the scorer never emits these.
397
+ return value > 0 ? 'inf' : value < 0 ? '-inf' : 'nan';
398
+ }
399
+ const sign = value < 0 ? '-' : '';
400
+ const abs = Math.abs(value);
401
+ const scaled = abs * 100;
402
+ const floor = Math.floor(scaled);
403
+ const frac = scaled - floor;
404
+ let rounded: number;
405
+ const eps = 1e-9;
406
+ if (frac > 0.5 + eps) {
407
+ rounded = floor + 1;
408
+ } else if (frac < 0.5 - eps) {
409
+ rounded = floor;
410
+ } else {
411
+ // exact half → round to even
412
+ rounded = floor % 2 === 0 ? floor : floor + 1;
413
+ }
414
+ const intPart = Math.floor(rounded / 100);
415
+ const fracPart = rounded - intPart * 100;
416
+ return `${sign}${intPart}.${String(fracPart).padStart(2, '0')}`;
417
+ }
418
+
419
+ /** `(value or "")` style truthiness, Python semantics. */
420
+ function _pyTruthy(value: unknown): boolean {
421
+ if (value === null || value === undefined || value === false) {
422
+ return false;
423
+ }
424
+ if (value === true) {
425
+ return true;
426
+ }
427
+ if (typeof value === 'number') {
428
+ return value !== 0;
429
+ }
430
+ if (typeof value === 'string') {
431
+ return value.length !== 0;
432
+ }
433
+ if (Array.isArray(value)) {
434
+ return value.length !== 0;
435
+ }
436
+ if (value instanceof Set || value instanceof Map) {
437
+ return value.size !== 0;
438
+ }
439
+ if (typeof value === 'object') {
440
+ return Object.keys(value as Record<string, unknown>).length !== 0;
441
+ }
442
+ return true;
443
+ }
444
+
445
+ /** True for a dict-like value (mirrors Python `isinstance(x, dict)`). */
446
+ function _isPlainObject(value: unknown): value is Record<string, unknown> {
447
+ return (
448
+ typeof value === 'object' &&
449
+ value !== null &&
450
+ !Array.isArray(value) &&
451
+ !(value instanceof Set) &&
452
+ !(value instanceof Map)
453
+ );
454
+ }
455
+
456
+ /**
457
+ * Python `str(value)` for the scalar / container kinds the halts render.
458
+ *
459
+ * Strings render as-is; `None`/booleans use Python spelling; numbers as-is;
460
+ * dict / list use Python's `repr`-style bracketing so a `str(item)` fallback
461
+ * (a non-string AC or assumption entry) matches the Python output.
462
+ */
463
+ function _pyStr(value: unknown): string {
464
+ if (value === null || value === undefined) {
465
+ return 'None';
466
+ }
467
+ if (value === true) {
468
+ return 'True';
469
+ }
470
+ if (value === false) {
471
+ return 'False';
472
+ }
473
+ if (typeof value === 'string') {
474
+ return value;
475
+ }
476
+ if (typeof value === 'number') {
477
+ return String(value);
478
+ }
479
+ if (Array.isArray(value)) {
480
+ return '[' + value.map((v) => _pyReprInner(v)).join(', ') + ']';
481
+ }
482
+ if (_isPlainObject(value)) {
483
+ const parts = Object.entries(value as Record<string, unknown>).map(
484
+ ([k, v]) => `${_pyReprInner(k)}: ${_pyReprInner(v)}`,
485
+ );
486
+ return '{' + parts.join(', ') + '}';
487
+ }
488
+ return String(value);
489
+ }
490
+
491
+ /** Python `repr()` for values nested inside a `str(container)` render. */
492
+ function _pyReprInner(value: unknown): string {
493
+ if (value === null || value === undefined) {
494
+ return 'None';
495
+ }
496
+ if (value === true) {
497
+ return 'True';
498
+ }
499
+ if (value === false) {
500
+ return 'False';
501
+ }
502
+ if (typeof value === 'string') {
503
+ return `'${value}'`;
504
+ }
505
+ if (typeof value === 'number') {
506
+ return String(value);
507
+ }
508
+ if (Array.isArray(value)) {
509
+ return '[' + value.map((v) => _pyReprInner(v)).join(', ') + ']';
510
+ }
511
+ if (_isPlainObject(value)) {
512
+ const parts = Object.entries(value as Record<string, unknown>).map(
513
+ ([k, v]) => `${_pyReprInner(k)}: ${_pyReprInner(v)}`,
514
+ );
515
+ return '{' + parts.join(', ') + '}';
516
+ }
517
+ return String(value);
518
+ }