@event4u/agent-config 16.1.0 → 16.3.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 (467) hide show
  1. package/.augment-plugin/marketplace.json +3 -3
  2. package/.augment-plugin/plugin.json +1 -1
  3. package/.claude-plugin/marketplace.json +1 -1
  4. package/CHANGELOG.md +98 -257
  5. package/README.md +14 -12
  6. package/dist/agent-src/commands/analyze/inbox.md +1 -1
  7. package/dist/agent-src/commands/analyze/roadmap-repos.md +1 -1
  8. package/dist/agent-src/commands/bug/fix.md +17 -2
  9. package/dist/agent-src/commands/feature/plan.md +1 -1
  10. package/dist/agent-src/commands/feature/roadmap.md +1 -1
  11. package/dist/agent-src/commands/fix/ci.md +1 -1
  12. package/dist/agent-src/commands/implement-ticket.md +1 -1
  13. package/dist/agent-src/commands/jira-ticket.md +1 -1
  14. package/dist/agent-src/commands/roadmap/create.md +1 -1
  15. package/dist/agent-src/commands/roadmap/materialize.md +1 -1
  16. package/dist/agent-src/commands/roadmap/process-full.md +5 -5
  17. package/dist/agent-src/commands/roadmap/resolve-blockers.md +361 -0
  18. package/dist/agent-src/commands/roadmap/triage-parked.md +325 -0
  19. package/dist/agent-src/commands/roadmap.md +18 -4
  20. package/dist/agent-src/commands/tests/create.md +17 -3
  21. package/dist/agent-src/commands/tests/execute.md +22 -5
  22. package/dist/agent-src/commands/work.md +4 -0
  23. package/dist/agent-src/contexts/authority/decision-revisit-gate-enforcement.md +43 -0
  24. package/dist/agent-src/contexts/communication/rules-auto/design-fidelity-enforcement.md +24 -0
  25. package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +6 -6
  26. package/dist/agent-src/contexts/execution/autonomy-mechanics.md +4 -8
  27. package/dist/agent-src/contexts/execution/roadmap-process-loop.md +32 -2
  28. package/dist/agent-src/contexts/execution/session-canary-enforcement-history.md +67 -0
  29. package/dist/agent-src/contexts/execution/toolchain-resolver.md +101 -7
  30. package/dist/agent-src/rules/active-remediation.md +1 -1
  31. package/dist/agent-src/rules/autonomous-execution.md +1 -0
  32. package/dist/agent-src/rules/broken-access-control.md +1 -0
  33. package/dist/agent-src/rules/command-suggestion-policy.md +1 -0
  34. package/dist/agent-src/rules/context-hygiene.md +1 -1
  35. package/dist/agent-src/rules/decision-revisit-gate.md +16 -33
  36. package/dist/agent-src/rules/design-fidelity.md +13 -16
  37. package/dist/agent-src/rules/doc-screenshot-hygiene.md +1 -0
  38. package/dist/agent-src/rules/domain-safety-disclaimer.md +1 -0
  39. package/dist/agent-src/rules/domain-safety-pii.md +1 -0
  40. package/dist/agent-src/rules/domain-safety-retention.md +1 -0
  41. package/dist/agent-src/rules/engineering-safety-floor.md +1 -0
  42. package/dist/agent-src/rules/evaluator-independence.md +3 -2
  43. package/dist/agent-src/rules/fast-path-marker-visibility.md +1 -0
  44. package/dist/agent-src/rules/finance-safety-floor.md +1 -0
  45. package/dist/agent-src/rules/git-history-discipline.md +1 -0
  46. package/dist/agent-src/rules/image-likeness-and-rights.md +1 -0
  47. package/dist/agent-src/rules/legal-safety-floor.md +3 -2
  48. package/dist/agent-src/rules/lethal-trifecta-guard.md +1 -0
  49. package/dist/agent-src/rules/low-impact-corpus-privacy-floor.md +1 -0
  50. package/dist/agent-src/rules/media-governance-routing.md +14 -17
  51. package/dist/agent-src/rules/persona-governance.md +2 -2
  52. package/dist/agent-src/rules/provider-lifecycle-discipline.md +1 -1
  53. package/dist/agent-src/rules/question-not-instruction.md +1 -0
  54. package/dist/agent-src/rules/roadmap-progress-sync.md +1 -1
  55. package/dist/agent-src/rules/runtime-safety.md +1 -0
  56. package/dist/agent-src/rules/secret-vcs-guard.md +1 -0
  57. package/dist/agent-src/rules/security-sensitive-stop.md +3 -2
  58. package/dist/agent-src/rules/session-canary.md +8 -62
  59. package/dist/agent-src/rules/settings-ask-protocol.md +1 -0
  60. package/dist/agent-src/rules/source-confidentiality.md +1 -0
  61. package/dist/agent-src/rules/strategy-safety-floor.md +1 -0
  62. package/dist/agent-src/rules/tool-safety.md +1 -0
  63. package/dist/agent-src/rules/ui-audit-gate.md +1 -2
  64. package/dist/agent-src/rules/untrusted-input-defense.md +1 -0
  65. package/dist/agent-src/rules/user-interrupt-priority.md +1 -0
  66. package/dist/agent-src/scripts/archive_completed_roadmaps.ts +115 -20
  67. package/dist/agent-src/scripts/deferral_carry.ts +339 -0
  68. package/dist/agent-src/scripts/update_roadmap_progress.ts +4 -1
  69. package/dist/agent-src/skills/accessibility-auditor/data/aria-patterns.csv +1 -1
  70. package/dist/agent-src/skills/accessibility-auditor/data/manifest.json +2 -2
  71. package/dist/agent-src/skills/api-design/data/manifest.json +2 -2
  72. package/dist/agent-src/skills/api-testing/SKILL.md +17 -0
  73. package/dist/agent-src/skills/code-intelligence/SKILL.md +14 -2
  74. package/dist/agent-src/skills/design-review/SKILL.md +30 -4
  75. package/dist/agent-src/skills/design-review/references/verification-automation.md +32 -0
  76. package/dist/agent-src/skills/design-system-capture/references/import-procedure.md +1 -1
  77. package/dist/agent-src/skills/existing-ui-audit/SKILL.md +18 -3
  78. package/dist/agent-src/skills/existing-ui-audit/references/component-taxonomy-detection.md +56 -0
  79. package/dist/agent-src/skills/fe-design/SKILL.md +1 -1
  80. package/dist/agent-src/skills/iconography/SKILL.md +1 -1
  81. package/dist/agent-src/skills/js-library-packaging/SKILL.md +2 -2
  82. package/dist/agent-src/skills/markitdown/SKILL.md +4 -0
  83. package/dist/agent-src/skills/monorepo-workspace/SKILL.md +1 -1
  84. package/dist/agent-src/skills/playwright-testing/SKILL.md +30 -6
  85. package/dist/agent-src/skills/quality-tools/SKILL.md +11 -1
  86. package/dist/agent-src/skills/quality-tools/references/go-tools.md +76 -0
  87. package/dist/agent-src/skills/quality-tools/references/python-tools.md +104 -0
  88. package/dist/agent-src/skills/review-routing/SKILL.md +2 -2
  89. package/dist/agent-src/skills/skill-improvement-pipeline/SKILL.md +1 -1
  90. package/dist/agent-src/skills/storybook-workshop/SKILL.md +3 -3
  91. package/dist/agent-src/skills/tailwind-engineer/SKILL.md +1 -1
  92. package/dist/agent-src/skills/test-case-discovery/SKILL.md +7 -0
  93. package/dist/agent-src/skills/test-driven-development/SKILL.md +17 -0
  94. package/dist/agent-src/skills/test-performance/SKILL.md +19 -1
  95. package/dist/agent-src/skills/ui-component-architect/SKILL.md +25 -2
  96. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  97. package/dist/agent-src/templates/roadmaps.md +30 -0
  98. package/dist/agent-src/templates/scripts/work_engine/directives/ui/app_spec.ts +10 -4
  99. package/dist/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +302 -21
  100. package/dist/agent-src/templates/scripts/work_engine/directives/ui/audit.ts +22 -3
  101. package/dist/agent-src/templates/scripts/work_engine/directives/ui/scaffold.ts +6 -1
  102. package/dist/agent-src/templates/scripts/work_engine/stack/runner.ts +774 -109
  103. package/dist/agent-src/templates/scripts/work_engine/state.ts +57 -7
  104. package/dist/agent-src/templates/scripts/work_engine/taxonomy/detect.ts +500 -0
  105. package/dist/agent-src/templates/scripts/work_engine/taxonomy/place.ts +183 -0
  106. package/dist/cli/python/knowledge_ingest.js +1 -1
  107. package/dist/cli/python/workspace_drive.js +1 -1
  108. package/dist/cli/registry.js +1 -1
  109. package/dist/cli-delegate/archive_completed_roadmaps.js +92 -12
  110. package/dist/cli-delegate/check_update_banner.js +12 -1
  111. package/dist/cli-delegate/chunk-523HCFYO.js +90 -0
  112. package/dist/cli-delegate/{chunk-M2DPGFZ4.js → chunk-6V6TA25H.js} +22 -152
  113. package/dist/cli-delegate/chunk-7IQE3D5S.js +191 -0
  114. package/dist/cli-delegate/{chunk-6KFEC3G7.js → chunk-CQWX336L.js} +1 -1
  115. package/dist/cli-delegate/chunk-DEIV7XP7.js +108 -0
  116. package/dist/cli-delegate/chunk-EEHDXSYD.js +2040 -0
  117. package/dist/cli-delegate/{chunk-P6ZHP5W2.js → chunk-GKE7ZVFA.js} +4 -4
  118. package/dist/cli-delegate/chunk-JQOM7TTM.js +1201 -0
  119. package/dist/cli-delegate/{chunk-UNCRJBT3.js → chunk-JQVYKIZA.js} +41 -0
  120. package/dist/cli-delegate/{chunk-FC75PGJE.js → chunk-JY2I2DXV.js} +12 -1
  121. package/dist/cli-delegate/chunk-KB5FZ655.js +208 -0
  122. package/dist/cli-delegate/{chunk-YUM5KURG.js → chunk-KR6EM23A.js} +235 -1455
  123. package/dist/cli-delegate/{chunk-LTYVIY76.js → chunk-LIYTLH6O.js} +1 -1
  124. package/dist/cli-delegate/chunk-NQ7WT43P.js +2729 -0
  125. package/dist/cli-delegate/chunk-NXEILF2K.js +2160 -0
  126. package/dist/cli-delegate/{chunk-5R7HOLAF.js → chunk-NYX3L2PZ.js} +1 -1
  127. package/dist/cli-delegate/{chunk-4E2W63DA.js → chunk-OKJUIAPS.js} +62 -1
  128. package/dist/cli-delegate/{chunk-QAJS5YWY.js → chunk-PHD7OOLE.js} +2 -1
  129. package/dist/cli-delegate/{chunk-RGNIWTEA.js → chunk-QLDHIPWR.js} +1 -1
  130. package/dist/cli-delegate/{chunk-HDVVGPQW.js → chunk-RQNNW7IF.js} +1405 -567
  131. package/dist/cli-delegate/{chunk-S3VFXMTM.js → chunk-S4UMZNES.js} +1 -1
  132. package/dist/cli-delegate/{chunk-6KM6ORRY.js → chunk-S4YWNRKO.js} +24 -8
  133. package/dist/cli-delegate/{chunk-GJCBB2UG.js → chunk-TRI6DQZ6.js} +3054 -325
  134. package/dist/cli-delegate/chunk-ULQRUR23.js +208 -0
  135. package/dist/cli-delegate/{chunk-NUHLI2RX.js → chunk-YCU3TIXH.js} +2 -0
  136. package/dist/cli-delegate/chunk-ZBZV2G5R.js +210 -0
  137. package/dist/cli-delegate/{chunk-WGXTVKCQ.js → chunk-ZUZKZYCN.js} +5 -3
  138. package/dist/cli-delegate/cmd_analyze_session.js +1 -1
  139. package/dist/cli-delegate/cmd_brand_status.js +1 -1
  140. package/dist/cli-delegate/cmd_conformance.js +1862 -809
  141. package/dist/cli-delegate/cmd_doctor.js +13 -6
  142. package/dist/cli-delegate/cmd_doctor_neighbours.js +23 -0
  143. package/dist/cli-delegate/cmd_explain.js +5 -5
  144. package/dist/cli-delegate/cmd_export.js +11 -8
  145. package/dist/cli-delegate/cmd_fleet.js +3 -3
  146. package/dist/cli-delegate/cmd_handoff.js +10 -7
  147. package/dist/cli-delegate/cmd_mcp_available.js +1 -1
  148. package/dist/cli-delegate/cmd_memory_get.js +3 -1
  149. package/dist/cli-delegate/cmd_migrate.js +2 -2
  150. package/dist/cli-delegate/cmd_packs_active.js +3 -3
  151. package/dist/cli-delegate/cmd_preflight.js +6 -6
  152. package/dist/cli-delegate/cmd_prune.js +11 -8
  153. package/dist/cli-delegate/cmd_refresh.js +2 -1
  154. package/dist/cli-delegate/cmd_route_audit.js +8 -6
  155. package/dist/cli-delegate/cmd_route_explain.js +4 -4
  156. package/dist/cli-delegate/cmd_session_recycle.js +4 -3
  157. package/dist/cli-delegate/cmd_settings_get.js +1 -1
  158. package/dist/cli-delegate/cmd_settings_migrate.js +11 -8
  159. package/dist/cli-delegate/cmd_settings_set.js +4 -4
  160. package/dist/cli-delegate/cmd_sync.js +11 -8
  161. package/dist/cli-delegate/cmd_uninstall.js +11 -8
  162. package/dist/cli-delegate/cmd_update.js +1 -1
  163. package/dist/cli-delegate/cmd_upgrade.js +3 -2
  164. package/dist/cli-delegate/cmd_validate.js +11 -8
  165. package/dist/cli-delegate/cmd_versions.js +1 -1
  166. package/dist/cli-delegate/deferral_carry.js +16 -0
  167. package/dist/cli-delegate/gate_execute.js +2 -2
  168. package/dist/cli-delegate/roadmap_gates.js +5 -5
  169. package/dist/cli-delegate/update_roadmap_progress.js +1 -1
  170. package/dist/discovery/deprecation-report.md +1 -1
  171. package/dist/discovery/discovery-manifest.json +132 -80
  172. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  173. package/dist/discovery/discovery-manifest.summary.md +3 -3
  174. package/dist/discovery/dormancy-report.md +1 -1
  175. package/dist/discovery/orphan-report.md +1 -1
  176. package/dist/discovery/packs.json +7 -5
  177. package/dist/discovery/trust-report.md +2 -2
  178. package/dist/discovery/workspaces.json +6 -4
  179. package/dist/hooks/dispatch.js +7972 -5186
  180. package/dist/hooks/dispatch.sha256 +1 -0
  181. package/dist/install/claudePathsPlan.js +47 -6
  182. package/dist/install/claudeRuleRewrite.js +7 -0
  183. package/dist/install/emit_host_rules_cli.js +39 -36
  184. package/dist/install/globalRuleScope.js +87 -0
  185. package/dist/install/host_rule_ownership.js +160 -0
  186. package/dist/install/install.mjs +2226 -1055
  187. package/dist/install/installThinLayer.js +261 -0
  188. package/dist/install/installedRuleLinks.js +176 -0
  189. package/dist/install/wizard-plan.js +24 -0
  190. package/dist/mcp/registry-manifest.json +3 -3
  191. package/dist/mcp/server.json +2 -2
  192. package/dist/mcp/server.mjs +40913 -34865
  193. package/dist/scripts/_lib/agent_settings.js +11 -0
  194. package/dist/scripts/_lib/claude_settings_hooks.js +10 -8
  195. package/dist/scripts/_lib/installed_layer.js +378 -0
  196. package/dist/scripts/_lib/lean_projection_mode.js +218 -15
  197. package/dist/scripts/_lib/rule_consequence_class.js +45 -0
  198. package/dist/scripts/_lib/rule_injection.js +67 -10
  199. package/dist/scripts/_lib/rule_law_section.js +122 -0
  200. package/dist/scripts/_lib/thin_rules.js +458 -0
  201. package/dist/scripts/_lib/windsurf_render.js +60 -0
  202. package/dist/scripts/condense.js +14 -26
  203. package/dist/scripts/project_thin_rules.js +14 -294
  204. package/dist/server/schemas/settings.js +29 -0
  205. package/dist/shared/skillRanking.js +74 -13
  206. package/dist/ui/assets/index-Cwq4d0hX.js +23 -0
  207. package/dist/ui/assets/index-Cyjy8bWO.css +1 -0
  208. package/dist/ui/index.html +2 -2
  209. package/docs/contracts/settings-classes.md +10 -6
  210. package/package.json +4 -4
  211. package/src/agent-src/scripts/archive_completed_roadmaps.ts +115 -20
  212. package/src/agent-src/scripts/deferral_carry.ts +339 -0
  213. package/src/agent-src/scripts/update_roadmap_progress.ts +4 -1
  214. package/src/agent-src/templates/scripts/work_engine/directives/ui/app_spec.ts +10 -4
  215. package/src/agent-src/templates/scripts/work_engine/directives/ui/apply.ts +302 -21
  216. package/src/agent-src/templates/scripts/work_engine/directives/ui/audit.ts +22 -3
  217. package/src/agent-src/templates/scripts/work_engine/directives/ui/scaffold.ts +6 -1
  218. package/src/agent-src/templates/scripts/work_engine/stack/runner.ts +774 -109
  219. package/src/agent-src/templates/scripts/work_engine/state.ts +57 -7
  220. package/src/agent-src/templates/scripts/work_engine/taxonomy/detect.ts +500 -0
  221. package/src/agent-src/templates/scripts/work_engine/taxonomy/place.ts +183 -0
  222. package/src/config/agent-settings.template.yml +91 -22
  223. package/src/config/ci-local-parity.yml +18 -0
  224. package/src/config/continuity-surface.json +9 -2
  225. package/src/config/evaluator-budgets.json +4 -4
  226. package/src/config/gate-coverage.yml +327 -3
  227. package/src/config/gate-violation-baselines.json +21 -9
  228. package/src/config/hook-bundle-budget.json +25 -0
  229. package/src/config/hook-latency-budget.json +21 -0
  230. package/src/config/hook-token-budget.json +8 -3
  231. package/src/config/host-instruction-limits.json +33 -0
  232. package/src/config/metric-registry.yml +114 -0
  233. package/src/config/placeholder-drift-budget.json +10 -0
  234. package/src/config/routing-coverage-seed.json +38 -3
  235. package/src/config/rule-activation-census.json +7 -3
  236. package/src/config/rule-consequence-class.json +161 -0
  237. package/src/config/rule-law-ceilings.json +99 -0
  238. package/src/install/claudePathsPlan.ts +46 -4
  239. package/src/install/claudeRuleRewrite.ts +10 -1
  240. package/src/install/emit_host_rules_cli.ts +43 -34
  241. package/src/install/globalRuleScope.ts +109 -0
  242. package/src/install/host_rule_ownership.ts +170 -0
  243. package/src/install/installThinLayer.ts +312 -0
  244. package/src/install/installedRuleLinks.ts +220 -0
  245. package/src/install/wizard-plan.ts +24 -0
  246. package/src/scripts/_cli/cmd_doctor.ts +28 -90
  247. package/src/scripts/_cli/cmd_doctor_neighbours.ts +293 -0
  248. package/src/scripts/_cli/doctor_execution.ts +100 -17
  249. package/src/scripts/_cli/doctor_network_posture.ts +226 -0
  250. package/src/scripts/_dispatch.bash +16 -2
  251. package/src/scripts/_lib/agent_settings.ts +11 -0
  252. package/src/scripts/_lib/body_portable.ts +102 -0
  253. package/src/scripts/_lib/cc_transcript.ts +132 -1
  254. package/src/scripts/_lib/claude_settings_hooks.ts +10 -8
  255. package/src/scripts/_lib/concern_sla_window.ts +200 -0
  256. package/src/scripts/_lib/estate_offsets.ts +241 -0
  257. package/src/scripts/_lib/exemption_shape.ts +143 -0
  258. package/src/scripts/_lib/fnv.ts +23 -0
  259. package/src/scripts/_lib/foreign_scan.ts +106 -0
  260. package/src/scripts/_lib/forge_protection.ts +114 -0
  261. package/src/scripts/_lib/forge_reader.ts +558 -0
  262. package/src/scripts/_lib/gitignore_block.ts +314 -0
  263. package/src/scripts/_lib/global_deploy_inventory.ts +32 -0
  264. package/src/scripts/_lib/graph_feeder_record.ts +214 -0
  265. package/src/scripts/_lib/hook_settings.ts +73 -0
  266. package/src/scripts/_lib/host_capability.ts +40 -19
  267. package/src/scripts/_lib/host_env_write.ts +111 -0
  268. package/src/scripts/_lib/host_hook_merge.ts +165 -0
  269. package/src/scripts/_lib/installed_layer.ts +538 -0
  270. package/src/scripts/_lib/json_merge.ts +82 -0
  271. package/src/scripts/_lib/json_pointers.ts +93 -11
  272. package/src/scripts/_lib/lean_projection_mode.ts +275 -15
  273. package/src/scripts/_lib/llm_proposer_transport.ts +14 -4
  274. package/src/scripts/_lib/machine_wake.ts +16 -3
  275. package/src/scripts/_lib/neighbour_census.ts +760 -0
  276. package/src/scripts/_lib/neighbour_scan.ts +122 -0
  277. package/src/scripts/_lib/neighbour_tool_use.ts +189 -0
  278. package/src/scripts/_lib/obligations.ts +119 -8
  279. package/src/scripts/_lib/probe_inputs.ts +271 -0
  280. package/src/scripts/_lib/prompt_shape.ts +46 -0
  281. package/src/scripts/_lib/read_surface_scan.ts +322 -0
  282. package/src/scripts/_lib/release_highlights.ts +2 -1
  283. package/src/scripts/_lib/release_migration_gate.ts +19 -3
  284. package/src/scripts/_lib/reserved_name_sweep.ts +73 -0
  285. package/src/scripts/_lib/retrieval_sanitize.ts +77 -16
  286. package/src/scripts/_lib/review_coverage.ts +134 -0
  287. package/src/scripts/_lib/rule_consequence_class.ts +71 -0
  288. package/src/scripts/_lib/rule_injection.ts +130 -10
  289. package/src/scripts/_lib/rule_law_section.ts +147 -0
  290. package/src/scripts/_lib/rule_layer_overlap.ts +58 -0
  291. package/src/scripts/_lib/shell_write_shapes.ts +108 -0
  292. package/src/scripts/_lib/skill_origin.ts +254 -0
  293. package/src/scripts/_lib/structural_hiding.ts +622 -0
  294. package/src/scripts/_lib/structured_ask.ts +64 -21
  295. package/src/scripts/_lib/thin_rules.ts +540 -0
  296. package/src/scripts/_lib/touched_file_quality.ts +434 -0
  297. package/src/scripts/_lib/turn_end_refusals.ts +600 -4
  298. package/src/scripts/_lib/turn_end_transcript.ts +216 -0
  299. package/src/scripts/_lib/verification_command.ts +324 -0
  300. package/src/scripts/_lib/verification_evidence.ts +647 -0
  301. package/src/scripts/_lib/verify_clause.ts +280 -0
  302. package/src/scripts/_lib/windsurf_render.ts +63 -0
  303. package/src/scripts/ai_council/cli_call_budget.ts +13 -5
  304. package/src/scripts/ai_council/clients.ts +26 -57
  305. package/src/scripts/ai_council/config.ts +1 -1
  306. package/src/scripts/ai_council/vendor_defaults.ts +45 -0
  307. package/src/scripts/ai_team/team_dispatch.ts +4 -0
  308. package/src/scripts/audit_skill_overlap.ts +261 -0
  309. package/src/scripts/before_complete_hook.ts +573 -25
  310. package/src/scripts/bench_hook_latency.ts +412 -5
  311. package/src/scripts/bench_touched_file_quality.ts +238 -0
  312. package/src/scripts/cache_realization_report.ts +61 -1
  313. package/src/scripts/check_argument_hint.ts +287 -0
  314. package/src/scripts/check_claims.ts +125 -1
  315. package/src/scripts/check_enforcement_coverage.ts +38 -9
  316. package/src/scripts/check_enforcement_matrix.ts +621 -22
  317. package/src/scripts/check_estate_count.ts +130 -153
  318. package/src/scripts/check_finding_dispositions.ts +138 -7
  319. package/src/scripts/check_generator_sync.ts +71 -0
  320. package/src/scripts/check_hook_bundle_composition.ts +370 -0
  321. package/src/scripts/check_host_docs_digest.ts +786 -0
  322. package/src/scripts/check_host_format_column.ts +559 -0
  323. package/src/scripts/check_input_references.ts +228 -0
  324. package/src/scripts/check_inputs_parity.ts +235 -0
  325. package/src/scripts/check_kernel_edit_ratified.ts +89 -9
  326. package/src/scripts/check_kill_switch_table.ts +294 -0
  327. package/src/scripts/check_memory.ts +7 -1
  328. package/src/scripts/check_placeholder_drift.ts +221 -0
  329. package/src/scripts/check_read_surface_coverage.ts +515 -0
  330. package/src/scripts/check_release_highlights.ts +10 -0
  331. package/src/scripts/check_release_holds.ts +2 -1
  332. package/src/scripts/check_release_pr_shape.ts +38 -15
  333. package/src/scripts/check_routing_coverage.ts +378 -11
  334. package/src/scripts/check_standing_rule_delivery.ts +33 -13
  335. package/src/scripts/check_static_parity.ts +17 -0
  336. package/src/scripts/check_verify_expectation_delta.ts +521 -0
  337. package/src/scripts/ci_settle.ts +145 -19
  338. package/src/scripts/closure_scan.ts +115 -1
  339. package/src/scripts/code_graph/detect.ts +127 -7
  340. package/src/scripts/code_graph/foreign.ts +194 -0
  341. package/src/scripts/code_graph/query.ts +217 -4
  342. package/src/scripts/code_graph/types.ts +26 -2
  343. package/src/scripts/code_graph/validate.ts +3 -1
  344. package/src/scripts/code_graph/verbs.ts +103 -0
  345. package/src/scripts/compile_hook_manifest.ts +90 -14
  346. package/src/scripts/condense.ts +14 -27
  347. package/src/scripts/estate_exemption_shape.ts +202 -0
  348. package/src/scripts/external_sources_denylist.json +29 -4
  349. package/src/scripts/generate_host_cost_table.ts +1 -1
  350. package/src/scripts/hook_manifest.json +1 -1
  351. package/src/scripts/hook_manifest.yaml +192 -14
  352. package/src/scripts/hooks/block_config_weakening.ts +294 -4
  353. package/src/scripts/hooks/block_kernel_rule_writes.ts +9 -78
  354. package/src/scripts/hooks/block_plumbing_writes.ts +342 -0
  355. package/src/scripts/hooks/bundle_integrity.ts +291 -0
  356. package/src/scripts/hooks/chain_nudge_hook.ts +1 -2
  357. package/src/scripts/hooks/code_graph_context_hook.ts +253 -25
  358. package/src/scripts/hooks/comment_discipline_hook.ts +1 -3
  359. package/src/scripts/hooks/concern_failure_policy.ts +280 -0
  360. package/src/scripts/hooks/concern_registry.ts +2 -0
  361. package/src/scripts/hooks/concern_timings.ts +94 -0
  362. package/src/scripts/hooks/delegation_nudge_hook.ts +1 -2
  363. package/src/scripts/hooks/design_pass_hook.ts +100 -9
  364. package/src/scripts/hooks/design_slop_hook.ts +1 -2
  365. package/src/scripts/hooks/dispatch_hook.ts +77 -71
  366. package/src/scripts/hooks/edit_shape_hook.ts +1 -2
  367. package/src/scripts/hooks/end_review_nudge_hook.ts +1 -1
  368. package/src/scripts/hooks/evidence_independence.ts +1 -2
  369. package/src/scripts/hooks/exit_codes.ts +129 -0
  370. package/src/scripts/hooks/host_lowering.json +1 -0
  371. package/src/scripts/hooks/host_lowering.ts +146 -3
  372. package/src/scripts/hooks/host_lowering.yaml +262 -46
  373. package/src/scripts/hooks/host_semantics.ts +30 -2
  374. package/src/scripts/hooks/injection_budget.ts +9 -2
  375. package/src/scripts/hooks/interruption_ledger_hook.ts +1 -2
  376. package/src/scripts/hooks/journal_record_hook.ts +1 -2
  377. package/src/scripts/hooks/memory_recall_hook.ts +1 -2
  378. package/src/scripts/hooks/obligation_settle_hook.ts +151 -5
  379. package/src/scripts/hooks/one_question_per_ask_hook.ts +43 -6
  380. package/src/scripts/hooks/orchestration_record_hook.ts +1 -2
  381. package/src/scripts/hooks/payload_stub.ts +10 -1
  382. package/src/scripts/hooks/permission_gate.ts +1 -2
  383. package/src/scripts/hooks/push_settle_hook.ts +1 -3
  384. package/src/scripts/hooks/replay_hook.ts +2 -1
  385. package/src/scripts/hooks/reread_guard_hook.ts +1 -2
  386. package/src/scripts/hooks/review_baseline_hook.ts +1 -2
  387. package/src/scripts/hooks/rtk_wrap_hook.ts +1 -2
  388. package/src/scripts/hooks/rule_inject_hook.ts +765 -68
  389. package/src/scripts/hooks/run_continuation_hook.ts +13 -15
  390. package/src/scripts/hooks/skill_route_hook.ts +1 -2
  391. package/src/scripts/hooks/source_first_gate_hook.ts +1 -2
  392. package/src/scripts/hooks/spawn_guard_shadow_hook.ts +1 -2
  393. package/src/scripts/hooks/subagent_ledger_hook.ts +1 -2
  394. package/src/scripts/hooks/suggestion_capture_hook.ts +1 -1
  395. package/src/scripts/hooks/table_fingerprint.ts +70 -0
  396. package/src/scripts/hooks/telemetry_flush_hook.ts +1 -2
  397. package/src/scripts/hooks/telemetry_usage_hook.ts +65 -10
  398. package/src/scripts/hooks/tool_result_bytes_hook.ts +93 -9
  399. package/src/scripts/hooks/turn_end_gate_hook.ts +421 -324
  400. package/src/scripts/hooks/ui_route_nudge_hook.ts +1 -2
  401. package/src/scripts/hooks_status.ts +112 -0
  402. package/src/scripts/injection_scan_hook.ts +7 -0
  403. package/src/scripts/install.ts +75 -189
  404. package/src/scripts/installed_layer_report.ts +103 -0
  405. package/src/scripts/language_mirror_hook.ts +15 -6
  406. package/src/scripts/learning_sidecar.ts +119 -8
  407. package/src/scripts/lint_deny_text.ts +419 -0
  408. package/src/scripts/lint_exit_codes.ts +262 -0
  409. package/src/scripts/lint_hook_manifest.ts +108 -0
  410. package/src/scripts/lint_major_migration_sections.ts +156 -26
  411. package/src/scripts/lint_pack_boundaries.ts +63 -5
  412. package/src/scripts/lint_roadmap_blockers.ts +78 -12
  413. package/src/scripts/lint_rule_law_section.ts +517 -0
  414. package/src/scripts/lint_skill_descriptions.ts +1 -1
  415. package/src/scripts/lint_skill_scripts_readonly.ts +1 -1
  416. package/src/scripts/lint_workflow_security.ts +161 -5
  417. package/src/scripts/mcp_server/consumer_tool_catalog.json +53 -0
  418. package/src/scripts/mcp_server/graph_tools.ts +72 -3
  419. package/src/scripts/mcp_server/prompts.ts +142 -1
  420. package/src/scripts/measure_routing_signal.ts +54 -16
  421. package/src/scripts/measure_skill_ranker_baseline.ts +515 -53
  422. package/src/scripts/measure_turn_end_gate.ts +193 -0
  423. package/src/scripts/memory_learn_hook.ts +91 -6
  424. package/src/scripts/memory_lookup.ts +1 -1
  425. package/src/scripts/model_rule_injection.ts +52 -5
  426. package/src/scripts/prepack-check.mjs +53 -0
  427. package/src/scripts/project_thin_rules.ts +34 -327
  428. package/src/scripts/release_publication.ts +13 -1
  429. package/src/scripts/report_evidence_temperature.ts +657 -0
  430. package/src/scripts/report_installed_rule_links.ts +157 -0
  431. package/src/scripts/report_invocation_surface.ts +383 -0
  432. package/src/scripts/report_label_agreement.ts +233 -0
  433. package/src/scripts/report_obligation_carriers.ts +699 -0
  434. package/src/scripts/report_obligation_mechanism.ts +230 -0
  435. package/src/scripts/report_obligation_writer_split.ts +236 -0
  436. package/src/scripts/report_single_token_triggers.ts +277 -0
  437. package/src/scripts/report_skill_menu_census.ts +208 -0
  438. package/src/scripts/report_skill_ranker_confusion.ts +442 -0
  439. package/src/scripts/report_standing_payload_by_host.ts +188 -15
  440. package/src/scripts/report_verification_record_coverage.ts +306 -0
  441. package/src/scripts/roadmap_verify_share.ts +213 -0
  442. package/src/scripts/rule_activation_census.ts +5 -2
  443. package/src/scripts/rule_trigger_eval.ts +9 -9
  444. package/src/scripts/schemas/command.schema.json +44 -0
  445. package/src/scripts/schemas/review-findings.schema.json +7 -2
  446. package/src/scripts/schemas/rule.schema.json +5 -0
  447. package/src/scripts/schemas/skill.schema.json +44 -0
  448. package/src/scripts/self_review_gate.ts +421 -17
  449. package/src/scripts/semantic_parity_census.ts +314 -0
  450. package/src/scripts/session_eol_report.ts +54 -1
  451. package/src/scripts/skill_tools/score_skill_relevance.ts +290 -25
  452. package/src/scripts/sweep_dead_scan_roots.ts +1 -1
  453. package/src/scripts/sweep_skill_ranker_signals.ts +129 -0
  454. package/src/scripts/sync_gitignore.ts +29 -235
  455. package/src/scripts/trigger_eval_grandfather.json +0 -7
  456. package/src/scripts/trigger_eval_rotation.ts +122 -27
  457. package/src/scripts/ui_conformance_probe.ts +156 -4
  458. package/src/scripts/update_prices.ts +85 -3
  459. package/src/scripts/write_bundle_digest.mjs +74 -0
  460. package/src/server/schemas/settings.ts +41 -0
  461. package/src/shared/skillRanking.ts +117 -11
  462. package/src/templates/consumer-settings/ONBOARDING.md +1 -0
  463. package/dist/cli-delegate/chunk-FXYUYU4N.js +0 -4416
  464. package/dist/cli-delegate/chunk-QJWAUMJW.js +0 -1072
  465. package/dist/cli-delegate/chunk-YDPILCOL.js +0 -152
  466. package/dist/ui/assets/index-DH1xc62v.js +0 -29
  467. package/dist/ui/assets/index-jSfMW8_t.css +0 -1
@@ -0,0 +1,208 @@
1
+ import { createRequire as __acCreateRequire } from 'node:module'; const require = globalThis.require ?? __acCreateRequire(import.meta.url);
2
+
3
+ // src/scripts/_lib/gitignore_block.ts
4
+ import * as fs from "node:fs";
5
+ import * as path from "node:path";
6
+ import { fileURLToPath } from "node:url";
7
+ var SECTION_HEADER = "# event4u/agent-config";
8
+ var SECTION_FOOTER = "# event4u/agent-config \u2014 END";
9
+ var DEFAULT_GITIGNORE = ".gitignore";
10
+ var _HERE = fileURLToPath(import.meta.url);
11
+ var DEFAULT_TEMPLATE = path.join(
12
+ path.dirname(_HERE),
13
+ "..",
14
+ "..",
15
+ "..",
16
+ "src",
17
+ "config",
18
+ "gitignore-block.txt"
19
+ );
20
+ var LEGACY_PATTERNS = [
21
+ ".agent-chat-history",
22
+ ".agent-chat-history.bak",
23
+ ".agent-chat-history.*.bak",
24
+ ".agent-prices.md",
25
+ ".council-tmp/",
26
+ // 2.x intermediate: prices cache lived directly under agents/ before
27
+ // consolidating under agents/runtime/.
28
+ "agents/.agent-prices.md",
29
+ // Budget history JSONLs — previously listed explicitly at project
30
+ // root or under agents/; now covered by the /agents/runtime/
31
+ // catch-all in the managed block.
32
+ ".augment-budget-history.jsonl",
33
+ ".rule-budget-history.jsonl",
34
+ "agents/.augment-budget-history.jsonl",
35
+ "agents/.rule-budget-history.jsonl"
36
+ ];
37
+ function _strip(ln) {
38
+ return ln.replace(/\n+$/, "").replace(/\s+$/, "");
39
+ }
40
+ function _is_entry(ln) {
41
+ const s = _strip(ln).replace(/^\s+/, "");
42
+ return Boolean(s) && !s.startsWith("#");
43
+ }
44
+ var TemplateNotFoundError = class extends Error {
45
+ constructor(p) {
46
+ super(`template not found: ${p}`);
47
+ this.name = "TemplateNotFoundError";
48
+ }
49
+ };
50
+ function _isFile(p) {
51
+ try {
52
+ return fs.statSync(p).isFile();
53
+ } catch {
54
+ return false;
55
+ }
56
+ }
57
+ function _splitlines(text) {
58
+ if (text === "") return [];
59
+ const parts = text.split(/\r\n|\r|\n/);
60
+ if (parts.length > 0 && parts[parts.length - 1] === "") parts.pop();
61
+ return parts;
62
+ }
63
+ function load_template(p) {
64
+ if (!_isFile(p)) {
65
+ throw new TemplateNotFoundError(p);
66
+ }
67
+ const text = fs.readFileSync(p, "utf-8");
68
+ return _splitlines(text).map(_strip);
69
+ }
70
+ function find_block(lines) {
71
+ for (let i = 0; i < lines.length; i += 1) {
72
+ if (_strip(lines[i]) === SECTION_HEADER) {
73
+ const start = i;
74
+ for (let j = i + 1; j < lines.length; j += 1) {
75
+ if (_strip(lines[j]) === SECTION_FOOTER) {
76
+ return [start, j + 1];
77
+ }
78
+ }
79
+ let end = lines.length;
80
+ for (let j = i + 1; j < lines.length; j += 1) {
81
+ const s = _strip(lines[j]).replace(/^\s+/, "");
82
+ if (s.startsWith("#") && !s.startsWith("# Agent config") && s !== SECTION_HEADER) {
83
+ end = j;
84
+ while (end > i + 1 && _strip(lines[end - 1]) === "") {
85
+ end -= 1;
86
+ }
87
+ break;
88
+ }
89
+ }
90
+ return [start, end];
91
+ }
92
+ }
93
+ return null;
94
+ }
95
+ function block_entries(block_lines) {
96
+ return block_lines.filter((ln) => _is_entry(ln)).map((ln) => _strip(ln).replace(/^\s+/, ""));
97
+ }
98
+ function template_entries(template_lines) {
99
+ return template_lines.filter((ln) => _is_entry(ln)).map((ln) => ln.replace(/^\s+/, ""));
100
+ }
101
+ function build_fresh_block(template_lines) {
102
+ return [SECTION_HEADER, ...template_lines, SECTION_FOOTER];
103
+ }
104
+ function sync_block(existing_lines, template_lines, options = {}) {
105
+ const replace = options.replace ?? false;
106
+ const loc = find_block(existing_lines);
107
+ const fresh = build_fresh_block(template_lines);
108
+ if (loc === null) {
109
+ const newLines = [...existing_lines];
110
+ if (newLines.length > 0 && _strip(newLines[newLines.length - 1]) !== "") {
111
+ newLines.push("");
112
+ }
113
+ newLines.push(...fresh);
114
+ return [newLines, template_entries(template_lines)];
115
+ }
116
+ const [start, end] = loc;
117
+ const head = existing_lines.slice(0, start);
118
+ let block = existing_lines.slice(start, end);
119
+ const tail = existing_lines.slice(end);
120
+ if (replace) {
121
+ const existing = new Set(block_entries(block));
122
+ const added = template_entries(template_lines).filter((e) => !existing.has(e));
123
+ return [[...head, ...fresh, ...tail], added];
124
+ }
125
+ const existing_entries = new Set(block_entries(block));
126
+ const missing = template_entries(template_lines).filter((e) => !existing_entries.has(e));
127
+ if (missing.length === 0) {
128
+ return [[...existing_lines], []];
129
+ }
130
+ let insert_at;
131
+ if (block.length > 0 && _strip(block[block.length - 1]) === SECTION_FOOTER) {
132
+ insert_at = block.length - 1;
133
+ } else {
134
+ block = [...block, SECTION_FOOTER];
135
+ insert_at = block.length - 1;
136
+ }
137
+ const new_block = [...block.slice(0, insert_at), ...missing, ...block.slice(insert_at)];
138
+ return [[...head, ...new_block, ...tail], missing];
139
+ }
140
+ function cleanup_legacy(lines) {
141
+ const legacy = new Set(LEGACY_PATTERNS);
142
+ const kept = [];
143
+ const removed = [];
144
+ for (const ln of lines) {
145
+ const s = _strip(ln).replace(/^\s+/, "");
146
+ if (legacy.has(s) || s.startsWith("/") && legacy.has(s.slice(1))) {
147
+ removed.push(s);
148
+ continue;
149
+ }
150
+ kept.push(ln);
151
+ }
152
+ return [kept, removed];
153
+ }
154
+ function format_file(lines) {
155
+ const text = lines.join("\n");
156
+ return text.replace(/\n+$/, "") + "\n";
157
+ }
158
+ function write_managed_block(project_root, dry_run) {
159
+ const target = path.join(project_root, DEFAULT_GITIGNORE);
160
+ let template;
161
+ try {
162
+ template = load_template(DEFAULT_TEMPLATE);
163
+ } catch {
164
+ return 0;
165
+ }
166
+ let existing = [];
167
+ if (_isFile(target)) {
168
+ existing = _splitlines(fs.readFileSync(target, "utf-8"));
169
+ } else if (!_isFile(path.join(project_root, ".git")) && !_isDir(path.join(project_root, ".git"))) {
170
+ return 0;
171
+ }
172
+ const [lines, added] = sync_block(existing, template);
173
+ if (added.length === 0 || dry_run) return added.length;
174
+ try {
175
+ fs.writeFileSync(target, format_file(lines), "utf-8");
176
+ } catch {
177
+ return 0;
178
+ }
179
+ return added.length;
180
+ }
181
+ function _isDir(p) {
182
+ try {
183
+ return fs.statSync(p).isDirectory();
184
+ } catch {
185
+ return false;
186
+ }
187
+ }
188
+
189
+ export {
190
+ SECTION_HEADER,
191
+ SECTION_FOOTER,
192
+ DEFAULT_GITIGNORE,
193
+ DEFAULT_TEMPLATE,
194
+ LEGACY_PATTERNS,
195
+ _strip,
196
+ TemplateNotFoundError,
197
+ _isFile,
198
+ _splitlines,
199
+ load_template,
200
+ find_block,
201
+ block_entries,
202
+ template_entries,
203
+ build_fresh_block,
204
+ sync_block,
205
+ cleanup_legacy,
206
+ format_file,
207
+ write_managed_block
208
+ };
@@ -28,6 +28,7 @@ function _deriveRoots(root) {
28
28
  };
29
29
  }
30
30
  var _roots = _deriveRoots(_DEFAULT_ROOT);
31
+ var SRC_SKILLS = () => _roots.SRC_SKILLS;
31
32
  function _isDir(p) {
32
33
  try {
33
34
  return fs.statSync(p).isDirectory();
@@ -76,5 +77,6 @@ function artefact_roots() {
76
77
  }
77
78
 
78
79
  export {
80
+ SRC_SKILLS,
79
81
  artefact_roots
80
82
  };
@@ -0,0 +1,210 @@
1
+ import { createRequire as __acCreateRequire } from 'node:module'; const require = globalThis.require ?? __acCreateRequire(import.meta.url);
2
+
3
+ // src/scripts/_lib/lexical_index.ts
4
+ var BM25_K1 = 1.5;
5
+ var BM25_B = 0.75;
6
+ var MIN_TOKEN_LEN = 2;
7
+ function tokenize(s) {
8
+ const out = [];
9
+ for (const raw of s.toLowerCase().split(/[^a-z0-9]+/)) {
10
+ if (raw.length >= MIN_TOKEN_LEN) out.push(raw);
11
+ }
12
+ return out;
13
+ }
14
+ function trigrams(s) {
15
+ const norm = s.toLowerCase().replace(/[^a-z0-9]+/g, " ").trim();
16
+ const out = /* @__PURE__ */ new Set();
17
+ if (norm.length < 3) {
18
+ if (norm.length > 0) out.add(norm);
19
+ return out;
20
+ }
21
+ for (let i = 0; i + 3 <= norm.length; i++) {
22
+ out.add(norm.slice(i, i + 3));
23
+ }
24
+ return out;
25
+ }
26
+ var LexicalIndex = class {
27
+ docs = /* @__PURE__ */ new Map();
28
+ df = /* @__PURE__ */ new Map();
29
+ n;
30
+ avgdl;
31
+ constructor(documents) {
32
+ let totalLen = 0;
33
+ for (const d of documents) {
34
+ const tokens = tokenize(d.text);
35
+ const tf = /* @__PURE__ */ new Map();
36
+ for (const t of tokens) tf.set(t, (tf.get(t) ?? 0) + 1);
37
+ for (const t of tf.keys()) this.df.set(t, (this.df.get(t) ?? 0) + 1);
38
+ this.docs.set(d.id, { id: d.id, len: tokens.length, tf, trigrams: trigrams(d.text) });
39
+ totalLen += tokens.length;
40
+ }
41
+ this.n = documents.length;
42
+ this.avgdl = this.n > 0 ? totalLen / this.n : 0;
43
+ }
44
+ /** Robertson–Spärck-Jones IDF, floored at 0 so common terms never subtract. */
45
+ idf(term) {
46
+ const df = this.df.get(term) ?? 0;
47
+ if (df === 0) return 0;
48
+ return Math.max(0, Math.log(1 + (this.n - df + 0.5) / (df + 0.5)));
49
+ }
50
+ /**
51
+ * BM25 score of one document against the tokenised query terms, weighted by
52
+ * **term coverage**: the raw BM25 sum is multiplied by `coverage²`, where
53
+ * `coverage = distinct-query-terms-matched / distinct-query-terms`. This
54
+ * stops a single generic, high-TF term match from outranking a document that
55
+ * matches several rarer query terms once each (Phase 1 refinement). A
56
+ * single-term query has `coverage == 1`, so its score is unchanged — the
57
+ * weighting only re-orders genuinely multi-term queries.
58
+ */
59
+ score(queryTerms, docId) {
60
+ const doc = this.docs.get(docId);
61
+ if (doc === void 0 || doc.len === 0) return 0;
62
+ let s = 0;
63
+ const matched = /* @__PURE__ */ new Set();
64
+ for (const term of queryTerms) {
65
+ const tf = doc.tf.get(term);
66
+ if (tf === void 0) continue;
67
+ const idf = this.idf(term);
68
+ if (idf === 0) continue;
69
+ const denom = tf + BM25_K1 * (1 - BM25_B + BM25_B * doc.len / (this.avgdl || 1));
70
+ s += idf * (tf * (BM25_K1 + 1)) / denom;
71
+ matched.add(term);
72
+ }
73
+ if (s === 0) return 0;
74
+ const distinctQuery = new Set(queryTerms).size;
75
+ const coverage = distinctQuery > 0 ? matched.size / distinctQuery : 1;
76
+ return s * coverage * coverage;
77
+ }
78
+ /**
79
+ * Rank documents for a set of query keys (phrases are tokenised). A
80
+ * character-trigram prefilter selects candidates cheaply; the guard keeps
81
+ * any doc sharing a query TOKEN even when no trigram overlaps, so the
82
+ * prefilter never drops a genuine lexical match. Ties break by id for a
83
+ * stable, deterministic order.
84
+ */
85
+ rank(queryKeys) {
86
+ const queryText = queryKeys.join(" ");
87
+ const qTerms = tokenize(queryText);
88
+ const qTermSet = new Set(qTerms);
89
+ const qTrigrams = trigrams(queryText);
90
+ const candidates = [];
91
+ for (const [id, doc] of this.docs) {
92
+ let hit = false;
93
+ for (const t of qTrigrams) {
94
+ if (doc.trigrams.has(t)) {
95
+ hit = true;
96
+ break;
97
+ }
98
+ }
99
+ if (!hit) {
100
+ for (const t of qTermSet) {
101
+ if (doc.tf.has(t)) {
102
+ hit = true;
103
+ break;
104
+ }
105
+ }
106
+ }
107
+ if (hit) candidates.push(id);
108
+ }
109
+ const scored = candidates.map((id) => ({ id, score: this.score(qTerms, id) })).filter((r) => r.score > 0);
110
+ scored.sort((a, b) => b.score - a.score || (a.id < b.id ? -1 : a.id > b.id ? 1 : 0));
111
+ return scored;
112
+ }
113
+ /** Document count — for the caller's tripwire / diagnostics. */
114
+ get size() {
115
+ return this.n;
116
+ }
117
+ };
118
+
119
+ // src/scripts/_lib/sqlite_guard.ts
120
+ import { createRequire } from "node:module";
121
+ var SqliteUnavailableError = class extends Error {
122
+ constructor(callerName, cause) {
123
+ super(
124
+ `node:sqlite is unavailable in this runtime (${cause}). ${callerName} requires Node with the built-in SQLite module.`
125
+ );
126
+ this.name = "SqliteUnavailableError";
127
+ }
128
+ };
129
+ var _sqliteWarningSilenced = false;
130
+ function _silenceSqliteExperimentalWarning() {
131
+ if (_sqliteWarningSilenced) return;
132
+ _sqliteWarningSilenced = true;
133
+ const orig = process.emitWarning.bind(process);
134
+ process.emitWarning = ((warning, ...rest) => {
135
+ const text = typeof warning === "string" ? warning : warning?.message ?? "";
136
+ if (/SQLite is an experimental/i.test(text)) return;
137
+ orig(warning, ...rest);
138
+ });
139
+ }
140
+ var _require;
141
+ function _syncRequire() {
142
+ if (_require === void 0) {
143
+ _require = createRequire(import.meta.url);
144
+ }
145
+ return _require;
146
+ }
147
+ function loadSqliteSync(callerName) {
148
+ _silenceSqliteExperimentalWarning();
149
+ try {
150
+ return _syncRequire()("node:sqlite");
151
+ } catch (exc) {
152
+ const message = exc instanceof Error ? exc.message : String(exc);
153
+ throw new SqliteUnavailableError(callerName, message);
154
+ }
155
+ }
156
+ function isSqliteAvailableSync() {
157
+ _silenceSqliteExperimentalWarning();
158
+ try {
159
+ _syncRequire()("node:sqlite");
160
+ return true;
161
+ } catch {
162
+ return false;
163
+ }
164
+ }
165
+ function probeFts5Sync() {
166
+ let sqlite;
167
+ try {
168
+ sqlite = loadSqliteSync("sqlite_guard.probeFts5Sync");
169
+ } catch {
170
+ return false;
171
+ }
172
+ let conn = null;
173
+ try {
174
+ conn = new sqlite.DatabaseSync(":memory:");
175
+ conn.exec("CREATE VIRTUAL TABLE _fts5_probe USING fts5(body)");
176
+ conn.exec("INSERT INTO _fts5_probe(body) VALUES ('probe')");
177
+ const row = conn.prepare("SELECT body FROM _fts5_probe WHERE _fts5_probe MATCH 'probe'").get();
178
+ return row !== void 0;
179
+ } catch {
180
+ return false;
181
+ } finally {
182
+ try {
183
+ conn?.close();
184
+ } catch {
185
+ }
186
+ }
187
+ }
188
+ function readUserVersion(conn) {
189
+ const row = conn.prepare("PRAGMA user_version").get();
190
+ const v = row?.["user_version"];
191
+ if (typeof v === "bigint") return Number(v);
192
+ if (typeof v === "number") return v;
193
+ return 0;
194
+ }
195
+ function stampUserVersion(conn, version) {
196
+ if (!Number.isInteger(version) || version < 0 || version > 2 ** 31 - 1) {
197
+ throw new RangeError(`stampUserVersion: version out of range: ${version}`);
198
+ }
199
+ conn.exec(`PRAGMA user_version = ${version}`);
200
+ }
201
+
202
+ export {
203
+ tokenize,
204
+ LexicalIndex,
205
+ loadSqliteSync,
206
+ isSqliteAvailableSync,
207
+ probeFts5Sync,
208
+ readUserVersion,
209
+ stampUserVersion
210
+ };
@@ -1,13 +1,15 @@
1
1
  import { createRequire as __acCreateRequire } from 'node:module'; const require = globalThis.require ?? __acCreateRequire(import.meta.url);
2
2
  import {
3
3
  buildInstallPlan,
4
- classifyOwnership,
5
- recordedHashesForRoot,
6
4
  sha256File
7
- } from "./chunk-YDPILCOL.js";
5
+ } from "./chunk-523HCFYO.js";
8
6
  import {
9
7
  detectToolPresence
10
8
  } from "./chunk-A4QJ6ENT.js";
9
+ import {
10
+ classifyOwnership,
11
+ recordedHashesForRoot
12
+ } from "./chunk-OKJUIAPS.js";
11
13
 
12
14
  // src/install/preflight.ts
13
15
  import { accessSync, constants, existsSync as existsSync2, statSync } from "node:fs";
@@ -7,7 +7,7 @@ import {
7
7
  import {
8
8
  ProjectRootError,
9
9
  resolve_project_root
10
- } from "./chunk-FC75PGJE.js";
10
+ } from "./chunk-JY2I2DXV.js";
11
11
  import "./chunk-NDJLNC6Q.js";
12
12
  import "./chunk-J55WI3RR.js";
13
13
 
@@ -1,7 +1,7 @@
1
1
  import { createRequire as __acCreateRequire } from 'node:module'; const require = globalThis.require ?? __acCreateRequire(import.meta.url);
2
2
  import {
3
3
  resolve_project_root
4
- } from "./chunk-FC75PGJE.js";
4
+ } from "./chunk-JY2I2DXV.js";
5
5
  import "./chunk-NDJLNC6Q.js";
6
6
  import "./chunk-J55WI3RR.js";
7
7