@rulemetric/cli 0.17.0 → 0.17.2

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 (270) hide show
  1. package/dist/base-command.js +1 -1
  2. package/dist/{chunk-GGUXEZC3.js → chunk-274MXEKI.js} +1 -1
  3. package/dist/{chunk-EFEPD4AZ.js → chunk-2C7CFCMM.js} +1 -1
  4. package/dist/{chunk-KEVDLLHT.js → chunk-3EZZGA72.js} +1 -1
  5. package/dist/{chunk-F5GSKVF2.js → chunk-3ZHBOILE.js} +1 -1
  6. package/dist/chunk-43TRZXJP.js +1 -0
  7. package/dist/{chunk-KR36ZDGN.js → chunk-4GM4OEQY.js} +1 -1
  8. package/dist/chunk-4LVSD2XZ.js +2 -0
  9. package/dist/{chunk-T7HZZ4DJ.js → chunk-55HFAX5Y.js} +1 -1
  10. package/dist/{chunk-WL5ZWQAS.js → chunk-5LTJNYCP.js} +1 -1
  11. package/dist/{chunk-5TM7AOH2.js → chunk-5U5SHJJA.js} +1 -1
  12. package/dist/chunk-5VWVQCNR.js +1 -0
  13. package/dist/{chunk-UVCVJKEN.js → chunk-7J7H7YFQ.js} +1 -1
  14. package/dist/{chunk-7LE2W3WP.js → chunk-7N55TWYQ.js} +1 -1
  15. package/dist/{chunk-GLBWNB2N.js → chunk-A2JFQUDW.js} +1 -1
  16. package/dist/{chunk-FZMO7XSN.js → chunk-A6XQSO62.js} +1 -1
  17. package/dist/chunk-ANLPPIMS.js +3 -0
  18. package/dist/{chunk-CVPAKEEZ.js → chunk-AZRGURHR.js} +1 -1
  19. package/dist/{chunk-FXQS7AEZ.js → chunk-AZWY2DOT.js} +1 -1
  20. package/dist/{chunk-Q7IDLOSP.js → chunk-BCPIY47G.js} +1 -1
  21. package/dist/chunk-BDWQ6J4V.js +1 -0
  22. package/dist/chunk-BOYWPUV2.js +12 -0
  23. package/dist/{chunk-STUNT4N3.js → chunk-BQVUZ6VE.js} +1 -1
  24. package/dist/{chunk-6QMIDH6X.js → chunk-BV3JMD3A.js} +1 -1
  25. package/dist/{chunk-DANMUHNW.js → chunk-C3XWDYZJ.js} +1 -1
  26. package/dist/{chunk-ISYU5BMU.js → chunk-CAQLSYOK.js} +1 -1
  27. package/dist/chunk-D7L7IMJQ.js +1 -0
  28. package/dist/{chunk-65LFPUDB.js → chunk-DOEPIICK.js} +1 -1
  29. package/dist/{chunk-ZKPURXUS.js → chunk-DZRBB34J.js} +1 -1
  30. package/dist/{chunk-PJ4RIUI3.js → chunk-EKTNI6RV.js} +1 -1
  31. package/dist/{chunk-ZBTJ5R7C.js → chunk-ENW5SUQJ.js} +1 -1
  32. package/dist/{chunk-TSLBCZ5P.js → chunk-FD53AP7T.js} +1 -1
  33. package/dist/chunk-FLXWL4F4.js +8 -0
  34. package/dist/{chunk-TQM7MF5C.js → chunk-FTCC4OZ4.js} +1 -1
  35. package/dist/{chunk-5CVP5NFH.js → chunk-GBSIOACS.js} +1 -1
  36. package/dist/{chunk-VUNJGZPP.js → chunk-GQYF2WVE.js} +1 -1
  37. package/dist/chunk-GWQ24FQP.js +9 -0
  38. package/dist/{chunk-WL34G6IR.js → chunk-H4VIQHBV.js} +1 -1
  39. package/dist/{chunk-LJE5J3EW.js → chunk-HBJMELKB.js} +1 -1
  40. package/dist/{chunk-BDQTVYYF.js → chunk-HNPC5U3C.js} +1 -1
  41. package/dist/{chunk-KGU2IW54.js → chunk-ICLAHFKK.js} +1 -1
  42. package/dist/{chunk-AKCCNLHL.js → chunk-IPNBW7ZW.js} +1 -1
  43. package/dist/{chunk-QPVUGTDP.js → chunk-JCZOEIL7.js} +1 -1
  44. package/dist/chunk-JGJU4JX5.js +1 -0
  45. package/dist/{chunk-ISEUEYSC.js → chunk-KR32Y5Q5.js} +1 -1
  46. package/dist/chunk-LARY6ZFT.js +1 -0
  47. package/dist/chunk-LELSVLNK.js +1 -0
  48. package/dist/chunk-LZPE6424.js +5 -0
  49. package/dist/chunk-MHLHLJ5T.js +48 -0
  50. package/dist/{chunk-7YZURVZD.js → chunk-MJLW5KN2.js} +1 -1
  51. package/dist/{chunk-USKRCVX3.js → chunk-N2PUNIWM.js} +1 -1
  52. package/dist/chunk-NLUHMHPM.js +1 -0
  53. package/dist/{chunk-NWV66NMA.js → chunk-NMCQ7JZZ.js} +1 -1
  54. package/dist/{chunk-QPAOX7P2.js → chunk-NSO2EBYE.js} +1 -1
  55. package/dist/{chunk-IMN4BWAR.js → chunk-OWXGXKK7.js} +1 -1
  56. package/dist/{chunk-5A6TMSRO.js → chunk-QJZ4DMVQ.js} +1 -1
  57. package/dist/{chunk-GIQ2HK3W.js → chunk-QRKMRG6W.js} +1 -1
  58. package/dist/chunk-RQBN7WNS.js +28 -0
  59. package/dist/{chunk-QXPGTEMO.js → chunk-RRBFKVCI.js} +1 -1
  60. package/dist/{chunk-4ZDE63UG.js → chunk-RWQG25JU.js} +1 -1
  61. package/dist/chunk-SVZYRGO5.js +4 -0
  62. package/dist/{chunk-EMZFZCS4.js → chunk-TBLUJ6AW.js} +1 -1
  63. package/dist/{chunk-PDXHRF4E.js → chunk-TL57YUJV.js} +1 -1
  64. package/dist/{chunk-WUCACPGC.js → chunk-TQFHRD5B.js} +1 -1
  65. package/dist/{chunk-FG343JM3.js → chunk-U6AASXY3.js} +1 -1
  66. package/dist/{chunk-FADINV4H.js → chunk-UGA2NFRG.js} +1 -1
  67. package/dist/{chunk-YXMAGC53.js → chunk-ULFSGFT2.js} +1 -1
  68. package/dist/{chunk-SFZPFNC6.js → chunk-UROUVE3D.js} +1 -1
  69. package/dist/chunk-URUHD4OI.js +2 -0
  70. package/dist/chunk-VCWT5KZL.js +8 -0
  71. package/dist/{chunk-HBDKOU2N.js → chunk-VNGJRYBD.js} +7 -6
  72. package/dist/chunk-VZYNZS5U.js +1 -0
  73. package/dist/{chunk-RDQXK5LG.js → chunk-WLLIFRRE.js} +1 -1
  74. package/dist/{chunk-E4CIJ67Z.js → chunk-WSUKOU3X.js} +1 -1
  75. package/dist/chunk-WULEBQPI.js +1 -0
  76. package/dist/{chunk-DX6IPDED.js → chunk-XAGNGQL3.js} +1 -1
  77. package/dist/{chunk-MYGVN6X4.js → chunk-XCN2YPWI.js} +1 -1
  78. package/dist/chunk-YGFZ6BLU.js +15 -0
  79. package/dist/{chunk-QNSIBPWG.js → chunk-YLEXR62G.js} +1 -1
  80. package/dist/{chunk-3H44B6PB.js → chunk-YT25HLWB.js} +1 -1
  81. package/dist/chunk-ZJABRHIP.js +1 -0
  82. package/dist/commands/antigravity/backfill.js +1 -1
  83. package/dist/commands/auth/create-key.js +1 -1
  84. package/dist/commands/auth/login.js +1 -1
  85. package/dist/commands/auth/logout.js +1 -1
  86. package/dist/commands/auth/revoke-key.js +1 -1
  87. package/dist/commands/auth/signup.js +1 -1
  88. package/dist/commands/auth/status.js +1 -1
  89. package/dist/commands/capture/scope.js +1 -1
  90. package/dist/commands/catalog/index.js +1 -1
  91. package/dist/commands/catalog/recommend.js +1 -1
  92. package/dist/commands/crons/list.js +1 -1
  93. package/dist/commands/crons/run.js +1 -1
  94. package/dist/commands/dashboard.js +1 -1
  95. package/dist/commands/diagnostics.js +1 -1
  96. package/dist/commands/eval-targets/create.js +1 -1
  97. package/dist/commands/eval-targets/list.js +1 -1
  98. package/dist/commands/evals/agent.js +1 -1
  99. package/dist/commands/evals/auto-run.js +1 -1
  100. package/dist/commands/evals/benchmark.js +1 -1
  101. package/dist/commands/evals/compare.js +1 -1
  102. package/dist/commands/evals/create.js +1 -1
  103. package/dist/commands/evals/optimize-description.js +1 -1
  104. package/dist/commands/evals/optimize.js +1 -1
  105. package/dist/commands/evals/refine-cases.js +1 -1
  106. package/dist/commands/evals/run.js +1 -1
  107. package/dist/commands/evals/validate-judge.js +1 -1
  108. package/dist/commands/experiments/list.js +1 -1
  109. package/dist/commands/gateway/ensure.js +1 -1
  110. package/dist/commands/hooks/install.js +1 -1
  111. package/dist/commands/hooks/run.js +1 -1
  112. package/dist/commands/hooks/uninstall.js +1 -1
  113. package/dist/commands/instructions/create.js +1 -1
  114. package/dist/commands/instructions/dedupe.js +1 -1
  115. package/dist/commands/instructions/delete.js +1 -1
  116. package/dist/commands/instructions/fork.js +1 -1
  117. package/dist/commands/instructions/get.js +1 -1
  118. package/dist/commands/instructions/list.js +1 -1
  119. package/dist/commands/instructions/promote.js +1 -1
  120. package/dist/commands/instructions/pull.js +1 -1
  121. package/dist/commands/instructions/restore.js +1 -1
  122. package/dist/commands/instructions/retract.js +1 -1
  123. package/dist/commands/instructions/upstream.js +1 -1
  124. package/dist/commands/instructions/versions.js +1 -1
  125. package/dist/commands/launcher.js +1 -1
  126. package/dist/commands/local/down.js +1 -1
  127. package/dist/commands/local/up.js +1 -1
  128. package/dist/commands/org/current.js +1 -1
  129. package/dist/commands/org/list.js +1 -1
  130. package/dist/commands/org/switch.js +1 -1
  131. package/dist/commands/packs/add-instruction.js +1 -1
  132. package/dist/commands/packs/apply.js +1 -1
  133. package/dist/commands/packs/create.js +1 -1
  134. package/dist/commands/packs/fork.js +1 -1
  135. package/dist/commands/packs/get.js +1 -1
  136. package/dist/commands/packs/list.js +1 -1
  137. package/dist/commands/packs/remove-instruction.js +1 -1
  138. package/dist/commands/proxy/env.js +1 -1
  139. package/dist/commands/proxy/logs.js +1 -1
  140. package/dist/commands/proxy/restart.js +1 -1
  141. package/dist/commands/proxy/setup.js +1 -1
  142. package/dist/commands/proxy/start.js +1 -1
  143. package/dist/commands/proxy/status.js +1 -1
  144. package/dist/commands/proxy/stop.js +1 -1
  145. package/dist/commands/research/backfill.js +1 -1
  146. package/dist/commands/research/resume-scoped-outcomes.js +1 -1
  147. package/dist/commands/research/tail-transcript.js +1 -1
  148. package/dist/commands/service/install.js +1 -1
  149. package/dist/commands/service/status.js +1 -1
  150. package/dist/commands/service/uninstall.js +1 -1
  151. package/dist/commands/sessions/analyze.js +1 -1
  152. package/dist/commands/sessions/delete.js +1 -1
  153. package/dist/commands/sessions/end.js +1 -1
  154. package/dist/commands/sessions/import.js +1 -1
  155. package/dist/commands/sessions/list.js +1 -1
  156. package/dist/commands/sessions/start.js +1 -1
  157. package/dist/commands/setup.js +1 -1
  158. package/dist/commands/skills/export-approved.js +1 -1
  159. package/dist/commands/skills/install.js +1 -1
  160. package/dist/commands/skills/list.js +1 -1
  161. package/dist/commands/skills/publish.js +1 -1
  162. package/dist/commands/skills/search.js +1 -1
  163. package/dist/commands/skills/update.js +1 -1
  164. package/dist/commands/suggestions/accept.js +1 -1
  165. package/dist/commands/suggestions/auto.js +1 -1
  166. package/dist/commands/suggestions/dismiss.js +1 -1
  167. package/dist/commands/suggestions/list.js +1 -1
  168. package/dist/commands/suggestions/refresh.js +1 -1
  169. package/dist/commands/suggestions/undo.js +1 -1
  170. package/dist/dashboard/Dashboard.js +1 -1
  171. package/dist/dashboard/data.js +1 -1
  172. package/dist/dashboard/launcher/LauncherOverlay.js +1 -1
  173. package/dist/dashboard/launcher/api.js +1 -1
  174. package/dist/dashboard/launcher/useLaunchJobs.js +1 -1
  175. package/dist/dashboard/panels/measurement.js +1 -1
  176. package/dist/dist-ZJY72TUD.js +1 -0
  177. package/dist/lib/active-org-refresh.js +1 -1
  178. package/dist/lib/actor-env.js +1 -0
  179. package/dist/lib/agent-loop.js +1 -1
  180. package/dist/lib/agent-presence.js +1 -1
  181. package/dist/lib/antigravity-transcript.js +1 -1
  182. package/dist/lib/api-client.js +1 -1
  183. package/dist/lib/codex-exec.js +1 -1
  184. package/dist/lib/ensure-api-key.js +1 -1
  185. package/dist/lib/ensure-fresh-token.js +1 -1
  186. package/dist/lib/eval-analyzer.js +1 -1
  187. package/dist/lib/eval-benchmark.js +1 -1
  188. package/dist/lib/eval-candidate-run.js +1 -1
  189. package/dist/lib/eval-case-generator.js +1 -1
  190. package/dist/lib/eval-conversation-handler.js +1 -1
  191. package/dist/lib/eval-executor.js +1 -1
  192. package/dist/lib/eval-grader.js +1 -1
  193. package/dist/lib/eval-meta-judge.js +1 -1
  194. package/dist/lib/eval-resume.js +1 -1
  195. package/dist/lib/eval-run-batch.js +1 -1
  196. package/dist/lib/eval-trigger-tester.js +1 -1
  197. package/dist/lib/evolution-enrolment.js +1 -1
  198. package/dist/lib/insights/generation/installed-asks.js +1 -1
  199. package/dist/lib/insights/generation/project-evidence.js +1 -1
  200. package/dist/lib/insights/generation/quality-review.js +1 -0
  201. package/dist/lib/insights/nomination/nominate.js +1 -1
  202. package/dist/lib/instruction-proposer.js +1 -1
  203. package/dist/lib/instruction-restoration.js +1 -1
  204. package/dist/lib/instructions/acceptance/accept-events.js +1 -1
  205. package/dist/lib/instructions/acceptance/accept-hook.js +1 -1
  206. package/dist/lib/instructions/acceptance/hook-install.js +1 -1
  207. package/dist/lib/instructions/acceptance/reverse-applications.js +1 -1
  208. package/dist/lib/instructions/acceptance/suggestion-accept.js +1 -1
  209. package/dist/lib/jobs/handlers/cron-auto-accept-suggestions.js +1 -1
  210. package/dist/lib/jobs/handlers/cron-eval-autorun.js +1 -1
  211. package/dist/lib/jobs/handlers/cron-instruction-evolution.js +1 -1
  212. package/dist/lib/jobs/handlers/cron-instruction-training.js +1 -1
  213. package/dist/lib/jobs/handlers/cron-reconcile-attribution.js +1 -1
  214. package/dist/lib/jobs/handlers/cron-refine-cases.js +1 -1
  215. package/dist/lib/jobs/handlers/cron-refresh-pricing.js +1 -1
  216. package/dist/lib/jobs/handlers/cron-retire-unused-skills.js +1 -1
  217. package/dist/lib/jobs/handlers/cron-suggest-instructions.js +1 -1
  218. package/dist/lib/jobs/handlers/distill-memories.js +1 -1
  219. package/dist/lib/jobs/handlers/finalize-scoped-launch.js +1 -1
  220. package/dist/lib/jobs/handlers/harbor-ab.js +1 -1
  221. package/dist/lib/jobs/handlers/prepare-suggestion-live.js +1 -1
  222. package/dist/lib/jobs/handlers/process-changelog.js +1 -1
  223. package/dist/lib/jobs/handlers/process-conversation.js +1 -1
  224. package/dist/lib/jobs/handlers/process-eval.js +1 -1
  225. package/dist/lib/jobs/handlers/process-insights.js +1 -1
  226. package/dist/lib/jobs/handlers/process-judge-review.js +1 -1
  227. package/dist/lib/jobs/handlers/process-launch.js +1 -1
  228. package/dist/lib/jobs/handlers/process-memory-ab.js +1 -1
  229. package/dist/lib/jobs/handlers/process-run-cleanup.js +1 -1
  230. package/dist/lib/jobs/handlers/process-session-goal.js +1 -1
  231. package/dist/lib/jobs/handlers/process-suggestion-adoption.js +1 -0
  232. package/dist/lib/jobs/handlers/process-suggestion-eval.js +1 -1
  233. package/dist/lib/jobs/shed-retry.js +1 -1
  234. package/dist/lib/judge-review-runner.js +1 -1
  235. package/dist/lib/llm-client.js +1 -1
  236. package/dist/lib/manual-tasks.js +1 -1
  237. package/dist/lib/measurement-llm.js +1 -1
  238. package/dist/lib/projects/workspace/eval-workspace.js +1 -1
  239. package/dist/lib/projects/workspace/worktree.js +1 -1
  240. package/dist/lib/refine-cases.js +1 -1
  241. package/dist/lib/repository-capabilities.js +1 -0
  242. package/dist/lib/research-client.js +1 -1
  243. package/dist/lib/retraction.js +1 -1
  244. package/dist/lib/setup-steps.js +1 -1
  245. package/dist/lib/telemetry.js +1 -1
  246. package/dist/lib/terminal-target-heartbeat.js +1 -1
  247. package/dist/lib/transcript-sync.js +1 -1
  248. package/dist/lib/work-report.js +1 -1
  249. package/oclif.manifest.json +1 -1
  250. package/package.json +6 -6
  251. package/dist/chunk-2PO5I3XR.js +0 -1
  252. package/dist/chunk-3MYCWZ63.js +0 -1
  253. package/dist/chunk-4GOXEEXZ.js +0 -1
  254. package/dist/chunk-CDSSOOIG.js +0 -1
  255. package/dist/chunk-CPDW7WW2.js +0 -28
  256. package/dist/chunk-CQD2R3BA.js +0 -3
  257. package/dist/chunk-DHIEGG4T.js +0 -9
  258. package/dist/chunk-FCALFMZV.js +0 -1
  259. package/dist/chunk-FHRBW4AQ.js +0 -12
  260. package/dist/chunk-GIXHG5FK.js +0 -1
  261. package/dist/chunk-HTAHNQZJ.js +0 -1
  262. package/dist/chunk-J4W6GNCF.js +0 -2
  263. package/dist/chunk-JNLDISBA.js +0 -4
  264. package/dist/chunk-KE5K3F7J.js +0 -1
  265. package/dist/chunk-KOORMTZO.js +0 -15
  266. package/dist/chunk-KUW6AVSI.js +0 -1
  267. package/dist/chunk-SWSOEYC7.js +0 -1
  268. package/dist/chunk-X6CF5KTW.js +0 -48
  269. package/dist/chunk-ZLBYYLJZ.js +0 -3
  270. package/dist/dist-5647V2E7.js +0 -1
@@ -1 +1 @@
1
- import{a}from"./chunk-WUCACPGC.js";import"./chunk-IZTIYR5Q.js";import"./chunk-WL5ZWQAS.js";import"./chunk-KEVDLLHT.js";import"./chunk-DX6IPDED.js";import"./chunk-3AV3GTMP.js";import"./chunk-GIXHG5FK.js";import"./chunk-X6CF5KTW.js";import"./chunk-XQYAVSUQ.js";import"./chunk-PZNWH4VQ.js";import"./chunk-ZLLER3HP.js";export{a as BaseCommand};
1
+ import{a}from"./chunk-TQFHRD5B.js";import"./chunk-IZTIYR5Q.js";import"./chunk-5LTJNYCP.js";import"./chunk-3EZZGA72.js";import"./chunk-XAGNGQL3.js";import"./chunk-3AV3GTMP.js";import"./chunk-5VWVQCNR.js";import"./chunk-MHLHLJ5T.js";import"./chunk-XQYAVSUQ.js";import"./chunk-PZNWH4VQ.js";import"./chunk-ZLLER3HP.js";export{a as BaseCommand};
@@ -1 +1 @@
1
- import{e as g,f as m}from"./chunk-GIXHG5FK.js";import{a as l}from"./chunk-ZLLER3HP.js";async function f(c,p){let r=l(e=>p?.logger?.info?.(e)??console.log(e),"log"),{projectPath:o}=c,i=`[cron_instruction_training] ${o}`;if(!o)return{skipped:"no-project-path"};let n=await m("/api/instruction-experiments/settle",{projectPath:o}),a=n.settled.map(e=>e.outcome),d=a.filter(e=>e==="graduated").length;for(let e of n.settled)r(`${i}: experiment ${e.experimentId} \u2192 ${e.outcome}`);n.examined>0&&r(`${i}: examined ${n.examined} running experiment(s) \u2014 ${n.settled.length} settled (${d} graduated), ${n.stillRunning} still gathering`);let t=await g(`/api/instruction-suggestions/trialable?projectPath=${encodeURIComponent(o)}`);for(let e of t.refused)r(`${i}: not trialling "${e.name}" \u2014 ${e.reason}`);if(t.candidates.length===0)return r(`${i}: no new trial started (${t.running}/${t.limits.maxConcurrent} running, ${t.slots} slot(s) free)`),{examined:n.examined,settled:n.settled.length,graduated:d,nominated:0,running:t.running,outcomes:a};let u=0;for(let e of t.candidates)try{let s=await m(`/api/instruction-suggestions/${e.id}/test`,{});if(s.existing){r(`${i}: comparison already recorded for "${e.name}" (${s.evalJobId})`);continue}u+=1,r(`${i}: queued bounded comparison and live-study preparation for "${e.name}"`)}catch(s){r(`${i}: could not measure "${e.name}" \u2014 ${s instanceof Error?s.message:String(s)}`)}return{examined:n.examined,settled:n.settled.length,graduated:d,nominated:u,queued:u,running:t.running,outcomes:a}}l(f,"cronInstructionTraining");export{f as a};
1
+ import{e as g,f as m}from"./chunk-5VWVQCNR.js";import{a as l}from"./chunk-ZLLER3HP.js";async function f(c,p){let r=l(e=>p?.logger?.info?.(e)??console.log(e),"log"),{projectPath:o}=c,i=`[cron_instruction_training] ${o}`;if(!o)return{skipped:"no-project-path"};let n=await m("/api/instruction-experiments/settle",{projectPath:o}),a=n.settled.map(e=>e.outcome),d=a.filter(e=>e==="graduated").length;for(let e of n.settled)r(`${i}: experiment ${e.experimentId} \u2192 ${e.outcome}`);n.examined>0&&r(`${i}: examined ${n.examined} running experiment(s) \u2014 ${n.settled.length} settled (${d} graduated), ${n.stillRunning} still gathering`);let t=await g(`/api/instruction-suggestions/trialable?projectPath=${encodeURIComponent(o)}`);for(let e of t.refused)r(`${i}: not trialling "${e.name}" \u2014 ${e.reason}`);if(t.candidates.length===0)return r(`${i}: no new trial started (${t.running}/${t.limits.maxConcurrent} running, ${t.slots} slot(s) free)`),{examined:n.examined,settled:n.settled.length,graduated:d,nominated:0,running:t.running,outcomes:a};let u=0;for(let e of t.candidates)try{let s=await m(`/api/instruction-suggestions/${e.id}/test`,{});if(s.existing){r(`${i}: comparison already recorded for "${e.name}" (${s.evalJobId})`);continue}u+=1,r(`${i}: queued bounded comparison and live-study preparation for "${e.name}"`)}catch(s){r(`${i}: could not measure "${e.name}" \u2014 ${s instanceof Error?s.message:String(s)}`)}return{examined:n.examined,settled:n.settled.length,graduated:d,nominated:u,queued:u,running:t.running,outcomes:a}}l(f,"cronInstructionTraining");export{f as a};
@@ -1 +1 @@
1
- import{c as X}from"./chunk-HOQPVOMF.js";import{b as D}from"./chunk-GIRPEMTW.js";import{a as x}from"./chunk-MODXEGCU.js";import{e as J,g as B}from"./chunk-DHIEGG4T.js";import{e as w,f as R}from"./chunk-GIXHG5FK.js";import{c as H,d as U}from"./chunk-X6CF5KTW.js";import{a as u}from"./chunk-ZLLER3HP.js";import{readFileSync as q,realpathSync as V}from"node:fs";import y from"node:path";import A from"node:os";function Q(s){let n=y.resolve(s);if(n===y.resolve(A.homedir()))return!1;let a=y.parse(n).root;if(n===a)return!1;try{let o=V(A.tmpdir());if(V(n)===o)return!1}catch{}return!0}u(Q,"isScorableProjectPath");var Z=5,ee=Number(process.env.RULEMETRIC_MAX_SUGGESTION_PROJECTS??10),te=48,ne=.5,O=400,oe=3,re=.6,se=1;function ae(s){let n=s.bloated??[],a=new Set([...s.harmful.map(o=>o.id),...s.candidates.map(o=>o.id)]);return n.filter(o=>!a.has(o.id)).slice(0,se).map(o=>({instructionId:o.id,estimatedTokens:o.estimatedTokens,topProjectId:o.topProjectId??null,score:.55,reason:`Costs ~${o.estimatedTokens} tokens every session and measures neutral across ${o.exposures} exposed session(s) \u2014 enough data to detect an effect, and none found. Consider shortening "${o.name}" rather than removing it.`+(o.containsSafetyLanguage?" CAUTION: it contains guardrail language (destructive-command or credential rules) \u2014 preserve those lines when shortening.":"")}))}u(ae,"buildTrimProposals");async function ie(s,n,a){let o=[],i=0;for(let d of s)try{await a("/api/instruction-experiments",{instructionId:d.instructionId,projectPath:n,source:"groom"}),i++}catch(g){let m=g instanceof Error?g.message:String(g);o.push({...d,reason:`${d.reason} (not measurable by withholding: ${m})`})}return{nominated:i,unmeasurable:o}}u(ie,"nominateRemovals");function ce(s){let n=[];for(let o of s.harmful){let i=o.verdict.delta;n.push({instructionId:o.id,score:Math.min(.95,.75+Math.abs(i)),topProjectId:o.topProjectId??null,reason:`Measured harmful: sessions using "${o.name}" scored ${(i*100).toFixed(1)}pp worse across ${o.exposures} exposed session(s). Observational \u2014 review before archiving.`})}let a=new Set(s.harmful.map(o=>o.id));for(let o of s.candidates)a.has(o.id)||n.push({instructionId:o.id,score:re,topProjectId:o.topProjectId??null,reason:`Unused: "${o.name}" is ${o.reason} (${o.totalExposures} lifetime exposure(s)) but still costs context budget every session.`});return n.slice(0,oe)}u(ce,"buildRemovalProposals");function le(){let s=y.join(A.homedir(),".config","rulemetric","skills-registry.json");try{let n=q(s,"utf-8"),a=JSON.parse(n),o=new Date(a.generatedAt).getTime();return Number.isNaN(o)?"unknown":Date.now()-o>te*60*60*1e3?"stale":"fresh"}catch{return"unknown"}}u(le,"observeSkillsRegistry");var Re=u(async(s,n)=>{let a=J(),o=a!=="none";o?n.logger.info(`Scoring backend: ${a}`):n.logger.warn("No LLM backend available (claude CLI missing and ANTHROPIC_API_KEY unset); skipping relevance scoring. Removal/trim proposals still run \u2014 they need no LLM.");let i;try{i=(await w("/api/sessions/project-paths?limit="+ee)).projectPaths}catch(e){n.logger.warn(`Failed to fetch project paths: ${e instanceof Error?e.message:String(e)}`);return}if(i.length===0){n.logger.info("No recent project paths; nothing to score");return}let d=new Map;try{let e=await w("/api/projects?limit=200");for(let t of e.projects??[])t.primaryCheckoutPath&&d.set(x(t.primaryCheckoutPath),t.id)}catch(e){n.logger.warn(`Failed to fetch projects for id resolution: ${e instanceof Error?e.message:String(e)}`)}let g=new Map;try{let e=await w(`/api/catalog?limit=200&proposable=1&contentPreview=${O}`);for(let t of e)g.set(t.id,{id:t.id,name:t.name,description:t.description??"",tags:t.tags??[],contentPreview:(t.contentPreview??"").slice(0,O)})}catch(e){n.logger.warn(`Failed to fetch catalog: ${e instanceof Error?e.message:String(e)}`)}try{let e=await w("/api/instructions?limit=100");for(let t of e.instructions??[])g.has(t.id)||g.set(t.id,{id:t.id,name:t.name,description:t.description??"",tags:t.tags??[],contentPreview:(t.content??"").slice(0,O)})}catch(e){n.logger.warn(`Failed to fetch personal instructions: ${e instanceof Error?e.message:String(e)}`)}let m=[],p=[];try{let e=await w("/api/insights/groom-candidates");if(!e.captureHealthy)n.logger.info(`Grooming paused: ${e.reason??"capture unhealthy"}`);else{m=ce(e),p=ae(e);let t=e.safetyGuarded+e.harmfulSafetyGuarded;n.logger.info(`Removal proposals: ${m.length} (${e.harmful.length} measured-harmful, ${e.candidates.length} never-used, ${t} withheld by the safety allowlist); trim proposals: ${p.length} (${(e.bloated??[]).length} measured-neutral and expensive, ${e.trimSafetyFlagged??0} flagged as containing guardrail language)`)}}catch(e){n.logger.warn(`Failed to fetch groom candidates: ${e instanceof Error?e.message:String(e)}`)}let b=[...g.values()];if(b.length===0&&m.length===0&&p.length===0){n.logger.info("No candidate instructions and nothing to retire; nothing to score");return}n.logger.info(`Scoring ${b.length} candidates across ${i.length} project(s)`);let M=0,l=null,I=new Set;for(let e of i)try{let t=x(e);if(!Q(t)){n.logger.info(`Skipping ${t}: not a project directory (home/root)`);continue}let f=D(t),k=o&&f.length>0;f.length===0&&n.logger.info(`${t}: insufficient language signals; removal/trim only`);let v=X(t),z={name:y.basename(t),description:v.description,languages:f,topics:v.topics,dependencies:v.dependencies},E=k?U(b):[];k&&n.logger.info(`Scoring ${b.length} candidates for ${t} in ${E.length} batch(es)`);let C=[],$=0;for(let r of E)try{let c=await B(H(z,r),"",4096);if(!c){$++;continue}let T=c.recommendations??[];for(let P of T)typeof P.instructionId=="string"&&typeof P.score=="number"&&typeof P.reason=="string"&&C.push({instructionId:P.instructionId,score:P.score,reason:P.reason})}catch(c){$++,n.logger.warn(`Batch failed for ${t}: ${c instanceof Error?c.message:String(c)}`)}$>0&&n.logger.warn(`${$}/${E.length} batch(es) failed for ${t} (backend ${a}); suggestions are partial`),k&&C.length===0&&n.logger.warn(`No usable LLM output for ${t} (backend ${a})`);let K=C.filter(r=>r.score>=ne).sort((r,c)=>c.score-r.score).slice(0,Z),_=d.get(t),W=l===null||l===t;l===null&&(l=t);let N=u(r=>r.topProjectId?r.topProjectId===_:W,"placeHere"),F=m.filter(N),{nominated:L,unmeasurable:G}=await ie(F,t,R);L>0&&n.logger.info(`${t}: ${L} removal candidate(s) nominated for randomised withholding instead of the feed`);let h=[...K.map(r=>({instructionId:r.instructionId,score:r.score,reason:r.reason,kind:"add"})),...G.map(({topProjectId:r,...c})=>({...c,kind:"remove"})),...p.filter(N).map(({estimatedTokens:r,topProjectId:c,...T})=>({...T,kind:"trim"}))];if(h.length===0){n.logger.info(`Nothing to suggest for ${t}`);continue}await R("/api/instruction-suggestions/batch-upsert",{projectPath:t,..._?{projectId:_}:{},suggestions:h}),n.logger.info(`${t}: ${h.filter(r=>r.kind==="add").length} add + ${h.filter(r=>r.kind==="remove").length} remove + ${h.filter(r=>r.kind==="trim").length} trim`);for(let r of h)r.kind!=="add"&&I.add(r.instructionId);let Y=new Set(G.map(r=>r.instructionId));for(let r of F)Y.has(r.instructionId)||I.add(r.instructionId);M++}catch(t){n.logger.warn(`Failed to score ${e}: ${t instanceof Error?t.message:String(t)}`)}let j=[...m.filter(e=>!I.has(e.instructionId)),...p.filter(e=>!I.has(e.instructionId)).map(({estimatedTokens:e,...t})=>t)];if(j.length>0&&l)try{let e=new Set(p.map(t=>t.instructionId));await R("/api/instruction-suggestions/batch-upsert",{projectPath:l,...d.get(l)?{projectId:d.get(l)}:{},suggestions:j.map(({topProjectId:t,...f})=>({...f,kind:e.has(f.instructionId)?"trim":"remove"}))}),n.logger.info(`Orphan sweep: ${j.length} proposal(s) whose project was not scored this run placed on ${l}`)}catch(e){n.logger.warn(`Orphan sweep failed: ${e instanceof Error?e.message:String(e)}`)}let S=le();if(S==="unknown")n.logger.warn("Skills registry unreadable or has no usable generatedAt; leaving suggestion staleness unchanged");else try{await R("/api/instruction-suggestions/mark-stale",{stale:S==="stale"}),S==="stale"?n.logger.warn("Skills registry is stale (>48h); marked catalog-skill suggestions stale"):n.logger.info("Skills registry is fresh; cleared staleness on catalog-skill suggestions")}catch{}n.logger.info(`Done: scored ${M}/${i.length} projects`)},"cronSuggestInstructions");export{Q as a,ae as b,ie as c,ce as d,Re as e};
1
+ import{c as X}from"./chunk-HOQPVOMF.js";import{b as D}from"./chunk-GIRPEMTW.js";import{a as x}from"./chunk-MODXEGCU.js";import{e as J,g as B}from"./chunk-GWQ24FQP.js";import{e as w,f as R}from"./chunk-5VWVQCNR.js";import{c as H,d as U}from"./chunk-MHLHLJ5T.js";import{a as u}from"./chunk-ZLLER3HP.js";import{readFileSync as q,realpathSync as V}from"node:fs";import y from"node:path";import A from"node:os";function Q(s){let n=y.resolve(s);if(n===y.resolve(A.homedir()))return!1;let a=y.parse(n).root;if(n===a)return!1;try{let o=V(A.tmpdir());if(V(n)===o)return!1}catch{}return!0}u(Q,"isScorableProjectPath");var Z=5,ee=Number(process.env.RULEMETRIC_MAX_SUGGESTION_PROJECTS??10),te=48,ne=.5,O=400,oe=3,re=.6,se=1;function ae(s){let n=s.bloated??[],a=new Set([...s.harmful.map(o=>o.id),...s.candidates.map(o=>o.id)]);return n.filter(o=>!a.has(o.id)).slice(0,se).map(o=>({instructionId:o.id,estimatedTokens:o.estimatedTokens,topProjectId:o.topProjectId??null,score:.55,reason:`Costs ~${o.estimatedTokens} tokens every session and measures neutral across ${o.exposures} exposed session(s) \u2014 enough data to detect an effect, and none found. Consider shortening "${o.name}" rather than removing it.`+(o.containsSafetyLanguage?" CAUTION: it contains guardrail language (destructive-command or credential rules) \u2014 preserve those lines when shortening.":"")}))}u(ae,"buildTrimProposals");async function ie(s,n,a){let o=[],i=0;for(let d of s)try{await a("/api/instruction-experiments",{instructionId:d.instructionId,projectPath:n,source:"groom"}),i++}catch(g){let m=g instanceof Error?g.message:String(g);o.push({...d,reason:`${d.reason} (not measurable by withholding: ${m})`})}return{nominated:i,unmeasurable:o}}u(ie,"nominateRemovals");function ce(s){let n=[];for(let o of s.harmful){let i=o.verdict.delta;n.push({instructionId:o.id,score:Math.min(.95,.75+Math.abs(i)),topProjectId:o.topProjectId??null,reason:`Measured harmful: sessions using "${o.name}" scored ${(i*100).toFixed(1)}pp worse across ${o.exposures} exposed session(s). Observational \u2014 review before archiving.`})}let a=new Set(s.harmful.map(o=>o.id));for(let o of s.candidates)a.has(o.id)||n.push({instructionId:o.id,score:re,topProjectId:o.topProjectId??null,reason:`Unused: "${o.name}" is ${o.reason} (${o.totalExposures} lifetime exposure(s)) but still costs context budget every session.`});return n.slice(0,oe)}u(ce,"buildRemovalProposals");function le(){let s=y.join(A.homedir(),".config","rulemetric","skills-registry.json");try{let n=q(s,"utf-8"),a=JSON.parse(n),o=new Date(a.generatedAt).getTime();return Number.isNaN(o)?"unknown":Date.now()-o>te*60*60*1e3?"stale":"fresh"}catch{return"unknown"}}u(le,"observeSkillsRegistry");var Re=u(async(s,n)=>{let a=J(),o=a!=="none";o?n.logger.info(`Scoring backend: ${a}`):n.logger.warn("No LLM backend available (claude CLI missing and ANTHROPIC_API_KEY unset); skipping relevance scoring. Removal/trim proposals still run \u2014 they need no LLM.");let i;try{i=(await w("/api/sessions/project-paths?limit="+ee)).projectPaths}catch(e){n.logger.warn(`Failed to fetch project paths: ${e instanceof Error?e.message:String(e)}`);return}if(i.length===0){n.logger.info("No recent project paths; nothing to score");return}let d=new Map;try{let e=await w("/api/projects?limit=200");for(let t of e.projects??[])t.primaryCheckoutPath&&d.set(x(t.primaryCheckoutPath),t.id)}catch(e){n.logger.warn(`Failed to fetch projects for id resolution: ${e instanceof Error?e.message:String(e)}`)}let g=new Map;try{let e=await w(`/api/catalog?limit=200&proposable=1&contentPreview=${O}`);for(let t of e)g.set(t.id,{id:t.id,name:t.name,description:t.description??"",tags:t.tags??[],contentPreview:(t.contentPreview??"").slice(0,O)})}catch(e){n.logger.warn(`Failed to fetch catalog: ${e instanceof Error?e.message:String(e)}`)}try{let e=await w("/api/instructions?limit=100");for(let t of e.instructions??[])g.has(t.id)||g.set(t.id,{id:t.id,name:t.name,description:t.description??"",tags:t.tags??[],contentPreview:(t.content??"").slice(0,O)})}catch(e){n.logger.warn(`Failed to fetch personal instructions: ${e instanceof Error?e.message:String(e)}`)}let m=[],p=[];try{let e=await w("/api/insights/groom-candidates");if(!e.captureHealthy)n.logger.info(`Grooming paused: ${e.reason??"capture unhealthy"}`);else{m=ce(e),p=ae(e);let t=e.safetyGuarded+e.harmfulSafetyGuarded;n.logger.info(`Removal proposals: ${m.length} (${e.harmful.length} measured-harmful, ${e.candidates.length} never-used, ${t} withheld by the safety allowlist); trim proposals: ${p.length} (${(e.bloated??[]).length} measured-neutral and expensive, ${e.trimSafetyFlagged??0} flagged as containing guardrail language)`)}}catch(e){n.logger.warn(`Failed to fetch groom candidates: ${e instanceof Error?e.message:String(e)}`)}let b=[...g.values()];if(b.length===0&&m.length===0&&p.length===0){n.logger.info("No candidate instructions and nothing to retire; nothing to score");return}n.logger.info(`Scoring ${b.length} candidates across ${i.length} project(s)`);let M=0,l=null,I=new Set;for(let e of i)try{let t=x(e);if(!Q(t)){n.logger.info(`Skipping ${t}: not a project directory (home/root)`);continue}let f=D(t),k=o&&f.length>0;f.length===0&&n.logger.info(`${t}: insufficient language signals; removal/trim only`);let v=X(t),z={name:y.basename(t),description:v.description,languages:f,topics:v.topics,dependencies:v.dependencies},E=k?U(b):[];k&&n.logger.info(`Scoring ${b.length} candidates for ${t} in ${E.length} batch(es)`);let C=[],$=0;for(let r of E)try{let c=await B(H(z,r),"",4096);if(!c){$++;continue}let T=c.recommendations??[];for(let P of T)typeof P.instructionId=="string"&&typeof P.score=="number"&&typeof P.reason=="string"&&C.push({instructionId:P.instructionId,score:P.score,reason:P.reason})}catch(c){$++,n.logger.warn(`Batch failed for ${t}: ${c instanceof Error?c.message:String(c)}`)}$>0&&n.logger.warn(`${$}/${E.length} batch(es) failed for ${t} (backend ${a}); suggestions are partial`),k&&C.length===0&&n.logger.warn(`No usable LLM output for ${t} (backend ${a})`);let K=C.filter(r=>r.score>=ne).sort((r,c)=>c.score-r.score).slice(0,Z),_=d.get(t),W=l===null||l===t;l===null&&(l=t);let N=u(r=>r.topProjectId?r.topProjectId===_:W,"placeHere"),F=m.filter(N),{nominated:L,unmeasurable:G}=await ie(F,t,R);L>0&&n.logger.info(`${t}: ${L} removal candidate(s) nominated for randomised withholding instead of the feed`);let h=[...K.map(r=>({instructionId:r.instructionId,score:r.score,reason:r.reason,kind:"add"})),...G.map(({topProjectId:r,...c})=>({...c,kind:"remove"})),...p.filter(N).map(({estimatedTokens:r,topProjectId:c,...T})=>({...T,kind:"trim"}))];if(h.length===0){n.logger.info(`Nothing to suggest for ${t}`);continue}await R("/api/instruction-suggestions/batch-upsert",{projectPath:t,..._?{projectId:_}:{},suggestions:h}),n.logger.info(`${t}: ${h.filter(r=>r.kind==="add").length} add + ${h.filter(r=>r.kind==="remove").length} remove + ${h.filter(r=>r.kind==="trim").length} trim`);for(let r of h)r.kind!=="add"&&I.add(r.instructionId);let Y=new Set(G.map(r=>r.instructionId));for(let r of F)Y.has(r.instructionId)||I.add(r.instructionId);M++}catch(t){n.logger.warn(`Failed to score ${e}: ${t instanceof Error?t.message:String(t)}`)}let j=[...m.filter(e=>!I.has(e.instructionId)),...p.filter(e=>!I.has(e.instructionId)).map(({estimatedTokens:e,...t})=>t)];if(j.length>0&&l)try{let e=new Set(p.map(t=>t.instructionId));await R("/api/instruction-suggestions/batch-upsert",{projectPath:l,...d.get(l)?{projectId:d.get(l)}:{},suggestions:j.map(({topProjectId:t,...f})=>({...f,kind:e.has(f.instructionId)?"trim":"remove"}))}),n.logger.info(`Orphan sweep: ${j.length} proposal(s) whose project was not scored this run placed on ${l}`)}catch(e){n.logger.warn(`Orphan sweep failed: ${e instanceof Error?e.message:String(e)}`)}let S=le();if(S==="unknown")n.logger.warn("Skills registry unreadable or has no usable generatedAt; leaving suggestion staleness unchanged");else try{await R("/api/instruction-suggestions/mark-stale",{stale:S==="stale"}),S==="stale"?n.logger.warn("Skills registry is stale (>48h); marked catalog-skill suggestions stale"):n.logger.info("Skills registry is fresh; cleared staleness on catalog-skill suggestions")}catch{}n.logger.info(`Done: scored ${M}/${i.length} projects`)},"cronSuggestInstructions");export{Q as a,ae as b,ie as c,ce as d,Re as e};
@@ -1 +1 @@
1
- import{c as l}from"./chunk-GIXHG5FK.js";import{c as a,l as u}from"./chunk-PZNWH4VQ.js";import{a as o}from"./chunk-ZLLER3HP.js";var c=120*1e3,t=null;async function k(){if(process.env.RULEMETRIC_API_KEY)return!0;let e=a(u());if(!e.isRefreshable(c))return!0;let r=e.loadToken();return r?.refreshToken?t||(t=f(e,r).finally(()=>{t=null}),t):!0}o(k,"ensureFreshToken");async function f(e,r){let s;try{s=await fetch(`${l()}/auth/refresh`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({refreshToken:r.refreshToken})})}catch{return!0}if(s.status===401)return e.clearToken(),!1;if(!s.ok)return!0;let n=await s.json().catch(()=>null);if(!n?.accessToken||!n.refreshToken)return!0;let i={accessToken:n.accessToken,refreshToken:n.refreshToken,expiresAt:n.expiresAt??r.expiresAt,email:n.email??r.email};return e.saveToken(i),e.saveEnvFile(i.accessToken),!0}o(f,"doRefresh");export{k as a};
1
+ import{c as l}from"./chunk-5VWVQCNR.js";import{c as a,l as u}from"./chunk-PZNWH4VQ.js";import{a as o}from"./chunk-ZLLER3HP.js";var c=120*1e3,t=null;async function k(){if(process.env.RULEMETRIC_API_KEY)return!0;let e=a(u());if(!e.isRefreshable(c))return!0;let r=e.loadToken();return r?.refreshToken?t||(t=f(e,r).finally(()=>{t=null}),t):!0}o(k,"ensureFreshToken");async function f(e,r){let s;try{s=await fetch(`${l()}/auth/refresh`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({refreshToken:r.refreshToken})})}catch{return!0}if(s.status===401)return e.clearToken(),!1;if(!s.ok)return!0;let n=await s.json().catch(()=>null);if(!n?.accessToken||!n.refreshToken)return!0;let i={accessToken:n.accessToken,refreshToken:n.refreshToken,expiresAt:n.expiresAt??r.expiresAt,email:n.email??r.email};return e.saveToken(i),e.saveEnvFile(i.accessToken),!0}o(f,"doRefresh");export{k as a};
@@ -1 +1 @@
1
- import{b as a,f as m}from"./chunk-GIXHG5FK.js";import{a as s}from"./chunk-ZLLER3HP.js";var R=new Set([408,429,502,503,504]),_=12e4,T=2e4,b=1e3,f=15e3;function l(t,e){try{t(JSON.stringify({ts:new Date().toISOString(),...e}))}catch{t(`[agent-loop] log_error event=${e.event}`)}}s(l,"structuredLog");function p(t,e){return e.aborted?Promise.resolve(!1):t<=0?Promise.resolve(!0):new Promise(r=>{let u=setTimeout(()=>{e.removeEventListener("abort",o),r(!0)},t),o=s(()=>{clearTimeout(u),e.removeEventListener("abort",o),r(!1)},"onAbort");e.addEventListener("abort",o,{once:!0})})}s(p,"abortableSleep");function d(t){return t instanceof a?R.has(t.statusCode):!0}s(d,"isRetryableReportError");function S(t){return t instanceof a&&t.statusCode===404}s(S,"isDefinitiveLeaseLoss");async function v(t,e,r){let u=Date.now()+r.budgetMs,o=b;for(let i=1;;i++)try{return await m(t,e),{ok:!0,attempts:i}}catch(n){let c=u-Date.now();if(!d(n)||c<=0||r.signal.aborted)return{ok:!1,attempts:i,error:n};if(l(r.log,{event:`${r.event}_retry`,jobId:r.jobId,attempt:i,status:n instanceof a?n.statusCode:void 0,error:n instanceof Error?n.message:String(n),retryInMs:Math.min(o,c)}),!await p(Math.min(o,c),r.signal))return{ok:!1,attempts:i,error:n};o=Math.min(o*2,f)}}s(v,"postReportWithRetry");export{R as a,_ as b,T as c,b as d,f as e,l as f,p as g,d as h,S as i,v as j};
1
+ import{b as a,f as m}from"./chunk-5VWVQCNR.js";import{a as s}from"./chunk-ZLLER3HP.js";var R=new Set([408,429,502,503,504]),_=12e4,T=2e4,b=1e3,f=15e3;function l(t,e){try{t(JSON.stringify({ts:new Date().toISOString(),...e}))}catch{t(`[agent-loop] log_error event=${e.event}`)}}s(l,"structuredLog");function p(t,e){return e.aborted?Promise.resolve(!1):t<=0?Promise.resolve(!0):new Promise(r=>{let u=setTimeout(()=>{e.removeEventListener("abort",o),r(!0)},t),o=s(()=>{clearTimeout(u),e.removeEventListener("abort",o),r(!1)},"onAbort");e.addEventListener("abort",o,{once:!0})})}s(p,"abortableSleep");function d(t){return t instanceof a?R.has(t.statusCode):!0}s(d,"isRetryableReportError");function S(t){return t instanceof a&&t.statusCode===404}s(S,"isDefinitiveLeaseLoss");async function v(t,e,r){let u=Date.now()+r.budgetMs,o=b;for(let i=1;;i++)try{return await m(t,e),{ok:!0,attempts:i}}catch(n){let c=u-Date.now();if(!d(n)||c<=0||r.signal.aborted)return{ok:!1,attempts:i,error:n};if(l(r.log,{event:`${r.event}_retry`,jobId:r.jobId,attempt:i,status:n instanceof a?n.statusCode:void 0,error:n instanceof Error?n.message:String(n),retryInMs:Math.min(o,c)}),!await p(Math.min(o,c),r.signal))return{ok:!1,attempts:i,error:n};o=Math.min(o*2,f)}}s(v,"postReportWithRetry");export{R as a,_ as b,T as c,b as d,f as e,l as f,p as g,d as h,S as i,v as j};
@@ -0,0 +1 @@
1
+ import{c as te}from"./chunk-5U5SHJJA.js";import{b as se}from"./chunk-IEQDLURA.js";import{d as ae,e as ie,f as le}from"./chunk-KINIFUZQ.js";import{a as G}from"./chunk-QRKMRG6W.js";import{a as x}from"./chunk-D7L7IMJQ.js";import{a as V}from"./chunk-BQVUZ6VE.js";import{a as F}from"./chunk-QJZ4DMVQ.js";import{a as $}from"./chunk-URUHD4OI.js";import{a as J}from"./chunk-YGFZ6BLU.js";import{a as X}from"./chunk-BCPIY47G.js";import{b as U}from"./chunk-NLUHMHPM.js";import{a as q}from"./chunk-FTCC4OZ4.js";import{a as Q}from"./chunk-WLLIFRRE.js";import{a as K}from"./chunk-ZYGBABMZ.js";import{b as B}from"./chunk-5RBLIVBF.js";import{a as re}from"./chunk-NSO2EBYE.js";import{e as T}from"./chunk-2C7CFCMM.js";import{b as Y}from"./chunk-WSUKOU3X.js";import{c as C}from"./chunk-A6XQSO62.js";import{a as j}from"./chunk-IPNBW7ZW.js";import{a as Z}from"./chunk-GQYF2WVE.js";import{a as ee}from"./chunk-274MXEKI.js";import{a as L}from"./chunk-ANLPPIMS.js";import{a as ne}from"./chunk-N2PUNIWM.js";import{a as z}from"./chunk-MJLW5KN2.js";import{d as P}from"./chunk-SW24KZ5C.js";import{a as oe}from"./chunk-RWQG25JU.js";import{b as A,c as W,f as o,g as E,i as O,j as b}from"./chunk-3ZHBOILE.js";import{k as N}from"./chunk-ICLAHFKK.js";import{d as M}from"./chunk-GPBN4ROE.js";import{b as y,e as H,f as D}from"./chunk-5VWVQCNR.js";import{a as l}from"./chunk-ZLLER3HP.js";var R=null,S=new Map,ge={process_eval:$,process_suggestion_eval:V,process_insights:J,process_launch:U,process_send_message:K,process_conversation:F,process_session_goal:G,distill_memories:Y,memory_ab:q,process_run_cleanup:Q,cron_refine_cases:ne,cron_retire_unused_skills:re,cron_reconcile_attribution:L,cron_suggest_instructions:T,cron_refresh_skills:P,cron_refresh_pricing:z,cron_eval_autorun:Z,process_suggestion_adoption:x,cron_auto_accept_suggestions:j,cron_instruction_training:ee,cron_instruction_evolution:N,process_judge_review:X,harbor_ab:C},de=500,ce=1e4,ue=Object.keys(ge),ke=new Set([]);function ve(e=process.env){return e.DATABASE_URL?ue:ue.filter(t=>!ke.has(t))}l(ve,"availableCapabilities");var we=3e4,he=3e4;async function be(e,t,s=M(),i){let d=[...s.claudeBin?["claude"]:[],...s.codexBin?["codex"]:[],...s.piBin?["pi"]:[]],c=`capabilities=${encodeURIComponent(e.join(","))}&waitMs=${t}&measurementProtocol=1&studyProtocol=1&scopedCollector=2&memorySnapshots=1&boundedAutorun=1&measurementEngines=${encodeURIComponent(d.join(","))}`,u=await H(`/api/work/next?${c}${i?`&launchMode=${i}`:""}`);return u==null||typeof u=="string"?null:u}l(be,"pollForWork");function Se(e,t,s){return{logger:{info:l(i=>t(i),"info"),warn:l(i=>t(i),"warn"),error:l(i=>t(i),"error")},job:{attempts:e},leaseSignal:s}}l(Se,"makeHelpers");async function Ie(e,t,s,i){let d=ge[e.kind],c=Date.now();if(o(s,{event:"claim",jobId:e.id,kind:e.kind,attempts:e.attempts}),!d){let n=`unknown kind: ${e.kind}`;o(s,{event:"fail",jobId:e.id,kind:e.kind,terminal:!0,error:n}),await D(`/api/work/${e.id}/fail`,{leaseToken:e.leaseToken,error:n,terminal:!0}).catch(()=>{});return}let u=new AbortController,m=!1,k,g=l(()=>{m||(o(s,{event:"heartbeat",jobId:e.id}),b(`/api/work/${e.id}/heartbeat`,{leaseToken:e.leaseToken},{budgetMs:Math.min(W,Math.max(0,t-1e3)),signal:i,log:s,event:"heartbeat",jobId:e.id}).then(n=>{if(!(n.ok||m)){if(O(n.error)){m=!0,k!==void 0&&clearInterval(k),o(s,{event:"lease_lost",jobId:e.id,kind:e.kind,elapsedMs:Date.now()-c,error:n.error instanceof Error?n.error.message:String(n.error)}),u.abort(new Error(`lease lost for job ${e.id} (${e.kind}); stop work`));return}o(s,{event:"heartbeat_error",jobId:e.id,attempts:n.attempts,error:n.error instanceof Error?n.error.message:String(n.error)})}}))},"beat");k=setInterval(g,t),S.set(e.id,g);let a;try{let n=Se(e.attempts,s,u.signal);a={kind:"complete",result:await d(e.payload,n)??{}}}catch(n){let v=R?.pausesSince(c)??[],_=le(v),w=n instanceof Error?n.message:String(n),r=B(n),p=!r&&ie(v);a={kind:"fail",message:_?`${_}; ${w}`:w,pausedDuringJob:!!_,terminal:r,hostSuspended:p}}try{if(m)o(s,{event:"lease_lost_stop",jobId:e.id,kind:e.kind,durationMs:Date.now()-c,handlerOutcome:a.kind,...a.kind==="fail"?{error:a.message}:{}});else if(a.kind==="complete"){o(s,{event:"complete",jobId:e.id,kind:e.kind,durationMs:Date.now()-c});let n=await b(`/api/work/${e.id}/complete`,{leaseToken:e.leaseToken,result:a.result},{budgetMs:A,signal:i,log:s,event:"complete_post",jobId:e.id});n.ok||o(s,{event:"complete_post_error",jobId:e.id,kind:e.kind,attempts:n.attempts,error:n.error instanceof Error?n.error.message:String(n.error)})}else{o(s,{event:"fail",jobId:e.id,kind:e.kind,durationMs:Date.now()-c,terminal:a.terminal,error:a.message,...a.pausedDuringJob?{pausedDuringJob:!0}:{},...a.hostSuspended?{hostSuspended:!0}:{}});let n=await b(`/api/work/${e.id}/fail`,{leaseToken:e.leaseToken,error:a.message,terminal:a.terminal,hostSuspended:a.hostSuspended},{budgetMs:A,signal:i,log:s,event:"fail_post",jobId:e.id});n.ok||o(s,{event:"fail_post_error",jobId:e.id,attempts:n.attempts,error:n.error instanceof Error?n.error.message:String(n.error)})}}finally{clearInterval(k),S.delete(e.id)}}l(Ie,"runOne");var pe=new Set(["process_launch","process_eval","process_suggestion_eval","process_conversation","process_insights","process_session_goal","distill_memories","memory_ab","cron_suggest_instructions","cron_eval_autorun","cron_instruction_evolution","process_judge_review","harbor_ab"]),me=new Set(["cron_refresh_skills"]);async function rn(e){let t=e.log??(()=>{}),s=e.pollWaitMs??we,i=e.heartbeatIntervalMs??he,d=e.capabilities??ve();o(t,{event:"agent_start",capabilities:d,pollWaitMs:s,heartbeatIntervalMs:i});try{let r=se();r.removed.length>0&&o(t,{event:"eval_worktrees_swept",removed:r.removed.length})}catch(r){o(t,{event:"eval_worktree_sweep_failed",error:r instanceof Error?r.message:String(r)})}R=ae({signal:e.signal,onPause:l(r=>{o(t,{event:"machine_pause",...r,jobIds:[...S.keys()]});for(let p of S.values())p()},"onPause")});let c=oe(d,e.signal,t,e.version,()=>R);te({signal:e.signal,log:t}).catch(r=>{o(t,{event:"tt_heartbeat_fatal",error:r instanceof Error?r.message:String(r)})});let u=5*6e4,m=0,k=l(()=>{if(!e.readInstalledVersion||!e.version)return!1;let r=Date.now();if(r-m<u)return!1;m=r;let p=e.readInstalledVersion();return!!(p&&p!==e.version)},"versionDrifted"),g=new AbortController,a=g.signal;e.signal.aborted?g.abort():e.signal.addEventListener("abort",()=>g.abort(),{once:!0});let n=l(async(r,p,_e)=>{let f=de;for(;!a.aborted;){if(k()){o(t,{event:"agent_version_drift",bootVersion:e.version,installedVersion:e.readInstalledVersion?.()??null}),g.abort(),e.onVersionDrift?.();break}let I=null;try{I=await be([...p],s,void 0,_e)}catch(h){let fe=h instanceof y?h.statusCode:void 0;if(o(t,{event:"poll_error",lane:r,status:fe,error:h instanceof Error?h.message:String(h)}),!await E(f,a))break;f=Math.min(f*2,ce);continue}if(!I){if(o(t,{event:"poll_204",lane:r}),!await E(f,a))break;f=Math.min(f*2,ce);continue}f=de,await Ie(I,i,t,a)}},"runLane"),v=d.filter(r=>pe.has(r)),_=d.filter(r=>(r==="process_launch"||!pe.has(r))&&!me.has(r)),w=d.filter(r=>me.has(r));o(t,{event:"agent_lanes",heavy:v.length,fast:_.length,background:w.length}),await Promise.all([...v.length?[n("heavy",v,"headless")]:[],..._.length?[n("fast",_,"interactive")]:[],...w.length?[n("background",w)]:[]]),await c.shutdown(),o(t,{event:"agent_stop"})}l(rn,"runAgentLoop");export{ge as a,ue as b,ve as c,be as d,rn as e};
@@ -1,4 +1,4 @@
1
- import{f as u}from"./chunk-4GOXEEXZ.js";import{a as o}from"./chunk-ZLLER3HP.js";var l=`You are a meta-judge evaluating the quality of an eval run \u2014 not the code output, but whether the test cases and grading themselves are rigorous and meaningful.
1
+ import{g as u}from"./chunk-LARY6ZFT.js";import{a as o}from"./chunk-ZLLER3HP.js";var l=`You are a meta-judge evaluating the quality of an eval run \u2014 not the code output, but whether the test cases and grading themselves are rigorous and meaningful.
2
2
 
3
3
  You will receive a summary of eval cases, their expectations, and grading results.
4
4
 
@@ -0,0 +1,2 @@
1
+ import{c as S}from"./chunk-GH4EZK2O.js";import{h}from"./chunk-RQBN7WNS.js";import{e as g}from"./chunk-QI3FJKGK.js";import{a as c}from"./chunk-ZLLER3HP.js";import{createHash as b}from"node:crypto";import{mkdir as E,open as D,readFile as v,readdir as w,rename as A,stat as T,writeFile as O}from"node:fs/promises";import{homedir as x}from"node:os";import{basename as $,dirname as F,join as m}from"node:path";var N=3e4,z=5,R=8*1024*1024;function y(i){return b("sha256").update(`${i.tool==="codex"?`codex-parser-${h}:`:""}${i.externalSessionId}:${Math.round(i.mtimeMs)}:${i.size}`).digest("hex")}c(y,"fingerprint");async function k(i){try{return{fingerprints:JSON.parse(await v(i,"utf8")).fingerprints??{}}}catch{return{fingerprints:{}}}}c(k,"readState");async function j(i,n){let s=`${i}.${process.pid}.tmp`;await E(F(i),{recursive:!0}),await O(s,JSON.stringify(n)),await A(s,i)}c(j,"persistState");var P=class{constructor(n){this.options=n}static{c(this,"TranscriptSync")}lastSeenSize=new Map;lastSyncAt=new Map;inFlight=!1;async scan(){if(this.inFlight)return{discovered:0,imported:0,skipped:0};this.inFlight=!0;try{let n=await k(this.options.statePath),s=(await Promise.all(this.options.providers.map(t=>t.discover()))).flat().sort((t,p)=>p.mtimeMs-t.mtimeMs),o=Date.now(),e=[],r=0;for(let t of s){let p=y(t),d=this.lastSeenSize.get(t.path);if(this.lastSeenSize.set(t.path,t.size),n.fingerprints[t.path]===p){r++;continue}let u=this.options.minStableAgeMs??3e3;if(u>0&&o-t.mtimeMs<u){r++;continue}let f=d!==void 0&&d===t.size,l=this.lastSyncAt.get(t.path),_=l===void 0||o-l>=(this.options.activeResyncMs??N);if(!f&&!_){r++;continue}if(e.push(t),e.length>=(this.options.maxImportsPerScan??z))break}let a=0;for(let t of e){let p=y(t);if(t.size>(this.options.maxContentBytes??R)){n.fingerprints[t.path]=p,r++,this.options.log?.(`Transcript sync skipped oversized file: ${t.path}`);continue}let d=await v(t.path,"utf8"),u=await this.options.importTranscript({content:d,tool:t.tool});if(n.fingerprints[t.path]=p,this.lastSyncAt.set(t.path,Date.now()),a++,this.options.log?.(`Transcript sync imported ${t.tool} ${$(t.path)} (${t.externalSessionId}).`),this.options.emitInstructions){let f=S(u);if(f)try{await this.options.emitInstructions({sessionId:f,projectPath:t.projectPath,tool:t.tool})}catch(l){this.options.log?.(`Transcript sync instruction linking failed for ${t.externalSessionId}: ${l instanceof Error?l.message:String(l)}`)}}}return e.length>0&&await j(this.options.statePath,n),{discovered:s.length,imported:a,skipped:r}}finally{this.inFlight=!1}}};async function C(i){let n;try{n=await D(i,"r");let s=Buffer.alloc(64*1024),{bytesRead:o}=await n.read(s,0,s.length,0),e=s.subarray(0,o).toString("utf8").split(`
2
+ `)[0];return e?JSON.parse(e):null}catch{return null}finally{await n?.close()}}c(C,"readFirstJsonLine");async function I(i,n,s){let o=await w(i,{withFileTypes:!0}).catch(()=>[]);for(let e of o){let r=m(i,e.name);if(e.isDirectory()){await I(r,n,s);continue}if(!e.isFile()||!e.name.startsWith("rollout-")||!e.name.endsWith(".jsonl"))continue;let[a,t]=await Promise.all([T(r).catch(()=>null),C(r)]);if(!a||a.mtimeMs<s||t?.type!=="session_meta")continue;let p=t.payload?.originator,d=t.payload?.id??t.payload?.session_id;!p?.toLowerCase().startsWith("codex")||!d||n.push({path:r,tool:"codex",externalSessionId:d,projectPath:t.payload?.cwd??null,mtimeMs:a.mtimeMs,size:a.size})}}c(I,"walkCodexSessions");async function M(i,n,s){let o=await w(i,{withFileTypes:!0}).catch(()=>[]);for(let e of o){let r=m(i,e.name);if(e.isDirectory()){await M(r,n,s);continue}if(!e.isFile()||!e.name.endsWith(".jsonl"))continue;let[a,t]=await Promise.all([T(r).catch(()=>null),C(r)]);!a||a.mtimeMs<s||t?.type!=="session"||!t.id||n.push({path:r,tool:"pi",externalSessionId:t.id,projectPath:t.cwd??null,mtimeMs:a.mtimeMs,size:a.size})}}c(M,"walkPiSessions");function V(i=process.env.CODEX_HOME??m(x(),".codex"),n=14,s){return{name:"codex",async discover(){let o=typeof s=="function"?await s():s;if(o.mode==="off")return[];let e=[],r=Date.now()-Math.max(1,n)*24*60*60*1e3;return await I(m(i,"sessions"),e,r),o.mode==="all"?e:e.filter(a=>g(o,a.projectPath))}}}c(V,"createCodexTranscriptProvider");function L(){if(process.env.PI_CODING_AGENT_SESSION_DIR)return process.env.PI_CODING_AGENT_SESSION_DIR;let i=process.env.PI_CODING_AGENT_DIR??m(x(),".pi","agent");return m(i,"sessions")}c(L,"defaultPiSessionsDir");function Y(i=L(),n=14,s){return{name:"pi",async discover(){let o=typeof s=="function"?await s():s;if(o.mode==="off")return[];let e=[],r=Date.now()-Math.max(1,n)*24*60*60*1e3;return await M(i,e,r),o.mode==="all"?e:e.filter(a=>g(o,a.projectPath))}}}c(Y,"createPiTranscriptProvider");function q(i,n){let s=c(async()=>{try{let e=await i.scan();e.imported>0&&n.log?.(`Transcript sync imported/updated ${e.imported} session${e.imported===1?"":"s"}.`)}catch(e){n.log?.(`Transcript sync failed: ${e instanceof Error?e.message:String(e)}`)}},"run"),o=setInterval(()=>void s(),n.intervalMs??3e4);n.signal.addEventListener("abort",()=>clearInterval(o),{once:!0}),s()}c(q,"startTranscriptSync");export{P as a,V as b,Y as c,q as d};
@@ -1 +1 @@
1
- import{b as s,c as a}from"./chunk-5MXZJWQS.js";import{f as c}from"./chunk-4GOXEEXZ.js";import{f as u}from"./chunk-XQYAVSUQ.js";import{a as m}from"./chunk-ZLLER3HP.js";import{mkdtempSync as p,rmSync as d}from"node:fs";import{join as f}from"node:path";import{tmpdir as l}from"node:os";async function g(n,o,i){let r=u.parse(n),e=p(f(l(),"rulemetric-measurement-generation-"));try{let t=await c({engine:r.engine,model:r.model??void 0,systemPrompt:o,prompt:i,workDir:e,timeout:12e4});if(t.error||t.exitCode!==0||!t.output.trim())throw new Error(`Selected ${r.engine} generator failed: ${t.error??`exit ${t.exitCode}, empty output`}`);return t.output}finally{d(e,{recursive:!0,force:!0})}}m(g,"runMeasurementText");async function S(n,o,i){let r=await g(n,o,i),e=s(a(r)??r);if(!e.ok||!e.value||Array.isArray(e.value)||typeof e.value!="object")throw new Error(`Selected ${n.engine} generator returned invalid JSON`);return e.value}m(S,"runMeasurementJson");export{g as a,S as b};
1
+ import{b as s,c as a}from"./chunk-5MXZJWQS.js";import{g as c}from"./chunk-LARY6ZFT.js";import{f as u}from"./chunk-XQYAVSUQ.js";import{a as m}from"./chunk-ZLLER3HP.js";import{mkdtempSync as p,rmSync as d}from"node:fs";import{join as f}from"node:path";import{tmpdir as l}from"node:os";async function g(n,o,i){let r=u.parse(n),e=p(f(l(),"rulemetric-measurement-generation-"));try{let t=await c({engine:r.engine,model:r.model??void 0,systemPrompt:o,prompt:i,workDir:e,timeout:12e4});if(t.error||t.exitCode!==0||!t.output.trim())throw new Error(`Selected ${r.engine} generator failed: ${t.error??`exit ${t.exitCode}, empty output`}`);return t.output}finally{d(e,{recursive:!0,force:!0})}}m(g,"runMeasurementText");async function S(n,o,i){let r=await g(n,o,i),e=s(a(r)??r);if(!e.ok||!e.value||Array.isArray(e.value)||typeof e.value!="object")throw new Error(`Selected ${n.engine} generator returned invalid JSON`);return e.value}m(S,"runMeasurementJson");export{g as a,S as b};
@@ -1 +1 @@
1
- import{a as d,d as m}from"./chunk-GIXHG5FK.js";import{a as c,l as a}from"./chunk-PZNWH4VQ.js";import{a as o}from"./chunk-ZLLER3HP.js";import{createHash as g,randomUUID as v}from"node:crypto";import{hostname as y,platform as p}from"node:os";import{existsSync as P,mkdirSync as _,readFileSync as h,writeFileSync as R}from"node:fs";import{join as E}from"node:path";var O="device-id";function u(){let e=o(t=>t==="1"||t==="true","off");return e(process.env.RULEMETRIC_NO_TELEMETRY)||e(process.env.DO_NOT_TRACK)}o(u,"telemetryDisabled");function l(){let e=a(),t=E(e,O);try{if(P(t)){let r=h(t,"utf-8").trim();if(r)return r}}catch{}let n=g("sha256").update(`${v()}:${y()}`).digest("hex").slice(0,32);try{_(e,{recursive:!0}),R(t,n,{mode:384})}catch{}return n}o(l,"getDeviceId");async function U(e,t={},n){if(!u())try{await m("/api/telemetry/cli-events",{method:"POST",body:{event:e,deviceId:l(),cliVersion:n,os:p(),props:t},timeoutMs:5e3})}catch{}}o(U,"emitSetupEvent");async function w(e){if(u())return;let n=`${process.env.RULEMETRIC_API_URL??c().apiUrl??d}/api/telemetry/cli-error`,r=process.env.HTTPS_PROXY,s=process.env.HTTP_PROXY,T=r!==void 0||s!==void 0;delete process.env.HTTPS_PROXY,delete process.env.HTTP_PROXY;let i=new AbortController,f=setTimeout(()=>i.abort(),4e3);try{await globalThis.fetch(n,{method:"POST",headers:{"Content-Type":"application/json","User-Agent":`rulemetric-cli/${e.cliVersion??"unknown"}`},body:JSON.stringify({event:e.event??"onboarding_error",deviceId:l(),command:e.command,statusCode:e.statusCode,message:e.message?e.message.slice(0,500):void 0,cliVersion:e.cliVersion,os:p(),nodeVersion:process.version,proxied:T,props:e.props}),signal:i.signal})}catch{}finally{clearTimeout(f),r!==void 0&&(process.env.HTTPS_PROXY=r),s!==void 0&&(process.env.HTTP_PROXY=s)}}o(w,"emitErrorBeacon");export{u as a,l as b,U as c,w as d};
1
+ import{a as d,d as m}from"./chunk-5VWVQCNR.js";import{a as c,l as a}from"./chunk-PZNWH4VQ.js";import{a as o}from"./chunk-ZLLER3HP.js";import{createHash as g,randomUUID as v}from"node:crypto";import{hostname as y,platform as p}from"node:os";import{existsSync as P,mkdirSync as _,readFileSync as h,writeFileSync as R}from"node:fs";import{join as E}from"node:path";var O="device-id";function u(){let e=o(t=>t==="1"||t==="true","off");return e(process.env.RULEMETRIC_NO_TELEMETRY)||e(process.env.DO_NOT_TRACK)}o(u,"telemetryDisabled");function l(){let e=a(),t=E(e,O);try{if(P(t)){let r=h(t,"utf-8").trim();if(r)return r}}catch{}let n=g("sha256").update(`${v()}:${y()}`).digest("hex").slice(0,32);try{_(e,{recursive:!0}),R(t,n,{mode:384})}catch{}return n}o(l,"getDeviceId");async function U(e,t={},n){if(!u())try{await m("/api/telemetry/cli-events",{method:"POST",body:{event:e,deviceId:l(),cliVersion:n,os:p(),props:t},timeoutMs:5e3})}catch{}}o(U,"emitSetupEvent");async function w(e){if(u())return;let n=`${process.env.RULEMETRIC_API_URL??c().apiUrl??d}/api/telemetry/cli-error`,r=process.env.HTTPS_PROXY,s=process.env.HTTP_PROXY,T=r!==void 0||s!==void 0;delete process.env.HTTPS_PROXY,delete process.env.HTTP_PROXY;let i=new AbortController,f=setTimeout(()=>i.abort(),4e3);try{await globalThis.fetch(n,{method:"POST",headers:{"Content-Type":"application/json","User-Agent":`rulemetric-cli/${e.cliVersion??"unknown"}`},body:JSON.stringify({event:e.event??"onboarding_error",deviceId:l(),command:e.command,statusCode:e.statusCode,message:e.message?e.message.slice(0,500):void 0,cliVersion:e.cliVersion,os:p(),nodeVersion:process.version,proxied:T,props:e.props}),signal:i.signal})}catch{}finally{clearTimeout(f),r!==void 0&&(process.env.HTTPS_PROXY=r),s!==void 0&&(process.env.HTTP_PROXY=s)}}o(w,"emitErrorBeacon");export{u as a,l as b,U as c,w as d};
@@ -1 +1 @@
1
- import{b as g,c as m}from"./chunk-N7ODX6PO.js";import{e as s,h as c}from"./chunk-GIXHG5FK.js";import{a as i}from"./chunk-ZLLER3HP.js";var u=6e4;function o(t,e){try{t(JSON.stringify({ts:new Date().toISOString(),...e}))}catch{t(`[tt-heartbeat] log_error event=${e.event}`)}}i(o,"structuredLog");function d(t,e){return e.aborted?Promise.resolve(!1):t<=0?Promise.resolve(!0):new Promise(r=>{let a=setTimeout(()=>{e.removeEventListener("abort",n),r(!0)},t),n=i(()=>{clearTimeout(a),e.removeEventListener("abort",n),r(!1)},"onAbort");e.addEventListener("abort",n,{once:!0})})}i(d,"abortableSleep");async function l(t,e){if(t.kind!=="tmux")return;let a=(await g(m(t.target))).code===0?"active":"missing";try{await c(`/api/terminal-targets/${t.id}/status`,{status:a,lastSeenAt:new Date().toISOString()}),o(e,{event:"tt_heartbeat",targetId:t.id,target:t.target,status:a})}catch(n){o(e,{event:"tt_heartbeat_error",targetId:t.id,target:t.target,error:n instanceof Error?n.message:String(n)})}}i(l,"probeAndReport");async function b(t){let e;try{e=await s("/api/terminal-targets?status=active")}catch(r){o(t,{event:"tt_heartbeat_list_error",error:r instanceof Error?r.message:String(r)});return}for(let r of e.targets??[])try{await l(r,t)}catch(a){o(t,{event:"tt_heartbeat_probe_error",targetId:r.id,error:a instanceof Error?a.message:String(a)})}}i(b,"runOneHeartbeatCycle");async function p(t){let e=t.log??(()=>{}),r=t.intervalMs??u;for(o(e,{event:"tt_heartbeat_start",intervalMs:r});!t.signal.aborted&&(await b(e),!!await d(r,t.signal)););o(e,{event:"tt_heartbeat_stop"})}i(p,"startTerminalTargetHeartbeat");export{l as a,b,p as c};
1
+ import{b as g,c as m}from"./chunk-N7ODX6PO.js";import{e as s,h as c}from"./chunk-5VWVQCNR.js";import{a as i}from"./chunk-ZLLER3HP.js";var u=6e4;function o(t,e){try{t(JSON.stringify({ts:new Date().toISOString(),...e}))}catch{t(`[tt-heartbeat] log_error event=${e.event}`)}}i(o,"structuredLog");function d(t,e){return e.aborted?Promise.resolve(!1):t<=0?Promise.resolve(!0):new Promise(r=>{let a=setTimeout(()=>{e.removeEventListener("abort",n),r(!0)},t),n=i(()=>{clearTimeout(a),e.removeEventListener("abort",n),r(!1)},"onAbort");e.addEventListener("abort",n,{once:!0})})}i(d,"abortableSleep");async function l(t,e){if(t.kind!=="tmux")return;let a=(await g(m(t.target))).code===0?"active":"missing";try{await c(`/api/terminal-targets/${t.id}/status`,{status:a,lastSeenAt:new Date().toISOString()}),o(e,{event:"tt_heartbeat",targetId:t.id,target:t.target,status:a})}catch(n){o(e,{event:"tt_heartbeat_error",targetId:t.id,target:t.target,error:n instanceof Error?n.message:String(n)})}}i(l,"probeAndReport");async function b(t){let e;try{e=await s("/api/terminal-targets?status=active")}catch(r){o(t,{event:"tt_heartbeat_list_error",error:r instanceof Error?r.message:String(r)});return}for(let r of e.targets??[])try{await l(r,t)}catch(a){o(t,{event:"tt_heartbeat_probe_error",targetId:r.id,error:a instanceof Error?a.message:String(a)})}}i(b,"runOneHeartbeatCycle");async function p(t){let e=t.log??(()=>{}),r=t.intervalMs??u;for(o(e,{event:"tt_heartbeat_start",intervalMs:r});!t.signal.aborted&&(await b(e),!!await d(r,t.signal)););o(e,{event:"tt_heartbeat_stop"})}i(p,"startTerminalTargetHeartbeat");export{l as a,b,p as c};
@@ -0,0 +1 @@
1
+ import{l as A}from"./chunk-MHLHLJ5T.js";import{a as T,e as w}from"./chunk-PZNWH4VQ.js";import{a as n}from"./chunk-ZLLER3HP.js";import{fileURLToPath as _}from"node:url";import{existsSync as v,readFileSync as O}from"node:fs";import{dirname as E,join as b}from"node:path";function k(){let t=E(_(import.meta.url));for(let e=0;e<8;e++){let s=b(t,"package.json");if(v(s))try{let i=JSON.parse(O(s,"utf8"));if(i.name==="@rulemetric/cli"&&i.version)return i.version}catch{}let o=E(t);if(o===t)break;t=o}return"0.0.0"}n(k,"readCliVersion");var x=k(),C="https://rulemetric.com",u=class extends Error{constructor(s,o){super(o);this.statusCode=s;this.name="ApiError"}static{n(this,"ApiError")}};function M(){let t=T(),e=process.env.RULEMETRIC_API_URL??t.apiUrl;if(!e){if(process.env.RULEMETRIC_STRICT_LOCAL==="1"||t.strictLocal==="1")throw new Error("RULEMETRIC_STRICT_LOCAL is set but no RULEMETRIC_API_URL is configured \u2014 refusing the cloud default. Set RULEMETRIC_API_URL in the environment or ~/.config/rulemetric/env.");e=C}let s=new URL(e);if(s.protocol==="http:"&&s.hostname!=="localhost"&&s.hostname!=="127.0.0.1")throw new Error(`API URL must use HTTPS for non-localhost hosts: ${e}`);return e}n(M,"getBaseUrl");async function c(t,e={}){let o=`${M()}${t}`,i={"Content-Type":"application/json","User-Agent":`rulemetric-cli/${x}`,...e.headers},m=T(),d=process.env.RULEMETRIC_API_KEY||m.apiKey||w()?.accessToken||m.accessToken;d&&(i.Authorization=`Bearer ${d}`);let h=new URL(o),f=h.hostname==="localhost"||h.hostname==="127.0.0.1",g=process.env.HTTPS_PROXY,P=process.env.HTTP_PROXY;f&&(delete process.env.HTTPS_PROXY,delete process.env.HTTP_PROXY);let a=e.timeoutMs?new AbortController:void 0,R=!1,y=a?setTimeout(()=>{R=!0,a.abort()},e.timeoutMs):void 0,r;try{r=await fetch(o,{method:e.method??"GET",headers:i,body:e.body?JSON.stringify(e.body):void 0,signal:a&&e.signal?AbortSignal.any([a.signal,e.signal]):e.signal??a?.signal})}catch(p){if(R){let L=new URL(o).host,U=Math.round(e.timeoutMs/1e3);throw new u(408,`Request to ${L} timed out after ${U}s. This is usually transient or a local proxy/gateway issue \u2014 retry, and if it persists check HTTPS_PROXY / the RuleMetric gateway (:8787).`)}throw p}finally{y&&clearTimeout(y),f&&(g!==void 0&&(process.env.HTTPS_PROXY=g),P!==void 0&&(process.env.HTTP_PROXY=P))}let l;if(r.headers.get("content-type")?.includes("application/json")?l=await r.json():l=await r.text(),!r.ok){let{message:p}=A(r.status,l);throw new u(r.status,p)}return l}n(c,"api");var j=n((t,e)=>c(t,e),"apiGet"),F=n((t,e,s={})=>c(t,{...s,method:"POST",body:e}),"apiPost"),B=n((t,e)=>c(t,{method:"PUT",body:e}),"apiPut"),D=n((t,e,s={})=>c(t,{...s,method:"PATCH",body:e}),"apiPatch"),G=n(t=>c(t,{method:"DELETE"}),"apiDelete");export{C as a,u as b,M as c,c as d,j as e,F as f,B as g,D as h,G as i};
@@ -1 +1 @@
1
- import{b as o,f as a}from"./chunk-GIXHG5FK.js";import{a as n}from"./chunk-ZLLER3HP.js";function c(e){return e==null?e??null:e instanceof Date?e.toISOString():e}n(c,"serializeDate");async function d(e){let r={provider:e.provider,plan:e.plan,limitType:e.limitType,value:e.value,unit:e.unit,comparator:e.comparator,resetsAt:c(e.resetsAt),sourceType:e.sourceType,sourceUrl:e.sourceUrl,sourceEvidence:e.sourceEvidence,confidence:e.confidence,observedAt:c(e.observedAt)};return a("/api/internal/research/observe",r)}n(d,"postObservation");async function f(e){let r=0,i=0,s=[];for(let u of e)try{await d(u),r++}catch(t){i++;let p=t instanceof o?`HTTP ${t.statusCode}: ${t.message}`:String(t);s.length<5&&s.push(p)}return{posted:r,failed:i,errors:s}}n(f,"postObservations");export{d as a,f as b};
1
+ import{b as o,f as a}from"./chunk-5VWVQCNR.js";import{a as n}from"./chunk-ZLLER3HP.js";function c(e){return e==null?e??null:e instanceof Date?e.toISOString():e}n(c,"serializeDate");async function d(e){let r={provider:e.provider,plan:e.plan,limitType:e.limitType,value:e.value,unit:e.unit,comparator:e.comparator,resetsAt:c(e.resetsAt),sourceType:e.sourceType,sourceUrl:e.sourceUrl,sourceEvidence:e.sourceEvidence,confidence:e.confidence,observedAt:c(e.observedAt)};return a("/api/internal/research/observe",r)}n(d,"postObservation");async function f(e){let r=0,i=0,s=[];for(let u of e)try{await d(u),r++}catch(t){i++;let p=t instanceof o?`HTTP ${t.statusCode}: ${t.message}`:String(t);s.length<5&&s.push(p)}return{posted:r,failed:i,errors:s}}n(f,"postObservations");export{d as a,f as b};
@@ -1 +1 @@
1
- import{b as $}from"./chunk-KFNFLMUR.js";import{e as w,f as k}from"./chunk-GIXHG5FK.js";import{a as u}from"./chunk-ZLLER3HP.js";function h(e){if(e.length===0)return{mean:0,stddev:0,min:0,max:0};let n=e.reduce((s,a)=>s+a,0)/e.length,o=e.reduce((s,a)=>s+(a-n)**2,0)/e.length;return{mean:Math.round(n*1e3)/1e3,stddev:Math.round(Math.sqrt(o)*1e3)/1e3,min:Math.min(...e),max:Math.max(...e)}}u(h,"computeStats");var x="with_target",E="without_target";function _(e){let n=e.grading.summary?.pass_rate;return typeof n=="number"&&n>=1}u(_,"fullPass");function b(e){return e.grading.summary?.pass_rate!=null}u(b,"hasGrading");function R(e){let n=e.timing.total_tokens;return typeof n=="number"&&n>0?n:void 0}u(R,"tokensOf");function v(e){let n=e.timing.duration_ms;return typeof n=="number"&&!isNaN(n)?n/1e3:void 0}u(v,"secondsOf");function y(e,n){let o={};for(let s of e)(o[n(s)]??=[]).push(s);return o}u(y,"groupBy");function C(e,n){let o=y(e.filter(b),i=>i.evalId),s=y(n.filter(b),i=>i.evalId),a=u((i,l)=>i.runNumber-l.runNumber,"byRun"),t=[];for(let i of Object.keys(o)){let l=o[i].sort(a),d=(s[i]??[]).sort(a);for(let r=0;r<Math.min(l.length,d.length);r++){let c={withScore:_(l[r])?1:0,withoutScore:_(d[r])?1:0},f=R(l[r]),g=R(d[r]);f!=null&&g!=null&&(c.withCost=f,c.withoutCost=g);let p=v(l[r]),m=v(d[r]);p!=null&&m!=null&&(c.withLatency=p,c.withoutLatency=m),t.push(c)}}return t}u(C,"pairRunsByEval");function T(e){let n=e.filter(r=>r.status==="completed");if(n.length===0)return{runSummary:{},verdict:null,notes:["No completed runs found"],totalRuns:0};let o=y(n,r=>r.configuration),s={},a=[];for(let[r,c]of Object.entries(o)){let f=c.filter(b).map(m=>m.grading.summary.pass_rate),g=c.map(v).filter(m=>m!=null),p=c.map(R).filter(m=>m!=null);s[r]={},f.length>0&&(s[r].pass_rate=h(f)),g.length>0&&(s[r].time_seconds=h(g)),p.length>0&&(s[r].tokens=h(p))}let t=null,i=o[x]??[],l=o[E]??[],d=C(i,l);if(d.length>0){if(t=$(d),!t.sufficient)a.push(t.insufficientReason??"Insufficient data for a significance verdict.");else if(t.significant){let r=t.delta>=0?"improves":"reduces",c=t.pValue!=null?`, McNemar p=${t.pValue.toFixed(4)}`:"";a.push(`Target ${r} the pass rate by ${Math.abs(t.delta*100).toFixed(0)}% (95% CI ${(t.ci.lower*100).toFixed(0)}\u2013${(t.ci.upper*100).toFixed(0)}%, n=${t.nWith}${c}).`)}else a.push(`No significant effect on pass rate (95% CI ${(t.ci.lower*100).toFixed(0)}\u2013${(t.ci.upper*100).toFixed(0)}%, n=${t.nWith}).`);t.costDelta!=null&&Math.round(t.costDelta)!==0&&a.push(`Token cost delta: ${t.costDelta>=0?"+":""}${Math.round(t.costDelta)} tokens/task.`),t.latencyDelta!=null&&Math.abs(t.latencyDelta)>1&&a.push(`Target ${t.latencyDelta>0?"adds":"saves"} ${Math.abs(t.latencyDelta).toFixed(1)}s/task.`)}for(let r of Object.values(s))if(r.pass_rate&&r.pass_rate.stddev>.2){a.push(`High pass-rate variance (stddev=${r.pass_rate.stddev.toFixed(2)}) \u2014 results may be unreliable.`);break}return{runSummary:s,verdict:t,notes:a,totalRuns:n.length}}u(T,"summarizeRuns");async function S(e,n){let o=n?`&iteration=${n}`:"",s=100,a=[];for(let t=0;t<1e5;t+=s){let i=await w(`/api/eval-targets/${e}/runs?limit=${s}&offset=${t}&activeCasesOnly=1${o}`);if(a.push(...i),i.length<s)break}return T(a)}u(S,"aggregateBenchmark");async function B(e,n,o){return k(`/api/eval-targets/${e}/benchmarks`,{iteration:n,runSummary:o.runSummary,notes:o.notes})}u(B,"postBenchmark");export{T as a,S as b,B as c};
1
+ import{b as $}from"./chunk-KFNFLMUR.js";import{e as w,f as k}from"./chunk-5VWVQCNR.js";import{a as u}from"./chunk-ZLLER3HP.js";function h(e){if(e.length===0)return{mean:0,stddev:0,min:0,max:0};let n=e.reduce((s,a)=>s+a,0)/e.length,o=e.reduce((s,a)=>s+(a-n)**2,0)/e.length;return{mean:Math.round(n*1e3)/1e3,stddev:Math.round(Math.sqrt(o)*1e3)/1e3,min:Math.min(...e),max:Math.max(...e)}}u(h,"computeStats");var x="with_target",E="without_target";function _(e){let n=e.grading.summary?.pass_rate;return typeof n=="number"&&n>=1}u(_,"fullPass");function b(e){return e.grading.summary?.pass_rate!=null}u(b,"hasGrading");function R(e){let n=e.timing.total_tokens;return typeof n=="number"&&n>0?n:void 0}u(R,"tokensOf");function v(e){let n=e.timing.duration_ms;return typeof n=="number"&&!isNaN(n)?n/1e3:void 0}u(v,"secondsOf");function y(e,n){let o={};for(let s of e)(o[n(s)]??=[]).push(s);return o}u(y,"groupBy");function C(e,n){let o=y(e.filter(b),i=>i.evalId),s=y(n.filter(b),i=>i.evalId),a=u((i,l)=>i.runNumber-l.runNumber,"byRun"),t=[];for(let i of Object.keys(o)){let l=o[i].sort(a),d=(s[i]??[]).sort(a);for(let r=0;r<Math.min(l.length,d.length);r++){let c={withScore:_(l[r])?1:0,withoutScore:_(d[r])?1:0},f=R(l[r]),g=R(d[r]);f!=null&&g!=null&&(c.withCost=f,c.withoutCost=g);let p=v(l[r]),m=v(d[r]);p!=null&&m!=null&&(c.withLatency=p,c.withoutLatency=m),t.push(c)}}return t}u(C,"pairRunsByEval");function T(e){let n=e.filter(r=>r.status==="completed");if(n.length===0)return{runSummary:{},verdict:null,notes:["No completed runs found"],totalRuns:0};let o=y(n,r=>r.configuration),s={},a=[];for(let[r,c]of Object.entries(o)){let f=c.filter(b).map(m=>m.grading.summary.pass_rate),g=c.map(v).filter(m=>m!=null),p=c.map(R).filter(m=>m!=null);s[r]={},f.length>0&&(s[r].pass_rate=h(f)),g.length>0&&(s[r].time_seconds=h(g)),p.length>0&&(s[r].tokens=h(p))}let t=null,i=o[x]??[],l=o[E]??[],d=C(i,l);if(d.length>0){if(t=$(d),!t.sufficient)a.push(t.insufficientReason??"Insufficient data for a significance verdict.");else if(t.significant){let r=t.delta>=0?"improves":"reduces",c=t.pValue!=null?`, McNemar p=${t.pValue.toFixed(4)}`:"";a.push(`Target ${r} the pass rate by ${Math.abs(t.delta*100).toFixed(0)}% (95% CI ${(t.ci.lower*100).toFixed(0)}\u2013${(t.ci.upper*100).toFixed(0)}%, n=${t.nWith}${c}).`)}else a.push(`No significant effect on pass rate (95% CI ${(t.ci.lower*100).toFixed(0)}\u2013${(t.ci.upper*100).toFixed(0)}%, n=${t.nWith}).`);t.costDelta!=null&&Math.round(t.costDelta)!==0&&a.push(`Token cost delta: ${t.costDelta>=0?"+":""}${Math.round(t.costDelta)} tokens/task.`),t.latencyDelta!=null&&Math.abs(t.latencyDelta)>1&&a.push(`Target ${t.latencyDelta>0?"adds":"saves"} ${Math.abs(t.latencyDelta).toFixed(1)}s/task.`)}for(let r of Object.values(s))if(r.pass_rate&&r.pass_rate.stddev>.2){a.push(`High pass-rate variance (stddev=${r.pass_rate.stddev.toFixed(2)}) \u2014 results may be unreliable.`);break}return{runSummary:s,verdict:t,notes:a,totalRuns:n.length}}u(T,"summarizeRuns");async function S(e,n){let o=n?`&iteration=${n}`:"",s=100,a=[];for(let t=0;t<1e5;t+=s){let i=await w(`/api/eval-targets/${e}/runs?limit=${s}&offset=${t}&activeCasesOnly=1${o}`);if(a.push(...i),i.length<s)break}return T(a)}u(S,"aggregateBenchmark");async function B(e,n,o){return k(`/api/eval-targets/${e}/benchmarks`,{iteration:n,runSummary:o.runSummary,notes:o.notes})}u(B,"postBenchmark");export{T as a,S as b,B as c};
@@ -1,3 +1,3 @@
1
- import{e as p}from"./chunk-LJRE3LZ2.js";import{C as f}from"./chunk-X6CF5KTW.js";import{a as r}from"./chunk-ZLLER3HP.js";var g=80,h=/\b(must|never|always|do not|don'?t|avoid|prefer|require[sd]?|before|after|only|instead of|use|run|add|keep|stop|refuse|check|verify|ask|write|read)\b/i,m=200,k=r(()=>({asks:[],omitted:0}),"empty");function A(s){return s.replace(/\s+/g," ").trim().toLowerCase()}r(A,"key");function I(s){let t=[];for(let o of s.split(`
1
+ import{e as p}from"./chunk-LJRE3LZ2.js";import{C as f}from"./chunk-MHLHLJ5T.js";import{a as r}from"./chunk-ZLLER3HP.js";var g=80,h=/\b(must|never|always|do not|don'?t|avoid|prefer|require[sd]?|before|after|only|instead of|use|run|add|keep|stop|refuse|check|verify|ask|write|read)\b/i,m=200,k=r(()=>({asks:[],omitted:0}),"empty");function A(s){return s.replace(/\s+/g," ").trim().toLowerCase()}r(A,"key");function I(s){let t=[];for(let o of s.split(`
2
2
  `)){let e=o.trim(),n=t.length>0?t[t.length-1]:"",i=e===""||/^(?:[-*+]|\d+[.)]|#|```|>|\||!)/.test(e);if(n!==""&&!/[.!?:;]$/.test(n)&&!/^(?:#|```)/.test(n)&&!i){t[t.length-1]=`${n} ${e}`;continue}t.push(e)}return t.join(`
3
3
  `)}r(I,"unwrap");function y(s,t=p){if(!s)return k();try{let o=new Set,e=[],n=[];for(let l of t(s))for(let d of f(I(l.content))){let c=A(d);if(c===""||o.has(c))continue;o.add(c);let a=d.replace(/\s+/g," ").trim(),u=a.length>m?`${a.slice(0,m)}\u2026`:a;(h.test(u)?e:n).push(u)}let i=[...e,...n];return{asks:i.slice(0,g),omitted:Math.max(0,i.length-g)}}catch{return k()}}r(y,"readInstalledAsks");export{g as a,m as b,y as c};
@@ -1,4 +1,4 @@
1
- import{d as I}from"./chunk-MOJY6S5J.js";import{a as O}from"./chunk-PIVEJTNF.js";import{a as J}from"./chunk-6XTLP2G7.js";import{y as T}from"./chunk-X6CF5KTW.js";import{f as L}from"./chunk-XQYAVSUQ.js";import{a as t}from"./chunk-ZLLER3HP.js";import{spawn as z}from"node:child_process";import{existsSync as V,mkdirSync as Z,readdirSync as K}from"node:fs";import{homedir as q,tmpdir as G}from"node:os";import{dirname as W,join as d,resolve as F}from"node:path";var Q=10800*1e3,X=/^rm-[a-z0-9-]+-task$/,Y=/^[A-Za-z0-9._-]+(\/[A-Za-z0-9._-]+)*$/,y=/^[A-Za-z0-9._-]+$/;function rr(r,i,n){return new Promise((c,a)=>{let o=z(r,i,{cwd:n.cwd,env:n.env,stdio:["ignore","pipe","pipe"]}),e="",_="",m="",p=setTimeout(()=>o.kill("SIGKILL"),n.timeoutMs);o.stdout.on("data",s=>{let w=s.toString("utf8");if(e+=w,!n.onLine)return;m+=w;let $=m.split(`
1
+ import{d as I}from"./chunk-MOJY6S5J.js";import{a as O}from"./chunk-PIVEJTNF.js";import{a as J}from"./chunk-6XTLP2G7.js";import{y as T}from"./chunk-MHLHLJ5T.js";import{f as L}from"./chunk-XQYAVSUQ.js";import{a as t}from"./chunk-ZLLER3HP.js";import{spawn as z}from"node:child_process";import{existsSync as V,mkdirSync as Z,readdirSync as K}from"node:fs";import{homedir as q,tmpdir as G}from"node:os";import{dirname as W,join as d,resolve as F}from"node:path";var Q=10800*1e3,X=/^rm-[a-z0-9-]+-task$/,Y=/^[A-Za-z0-9._-]+(\/[A-Za-z0-9._-]+)*$/,y=/^[A-Za-z0-9._-]+$/;function rr(r,i,n){return new Promise((c,a)=>{let o=z(r,i,{cwd:n.cwd,env:n.env,stdio:["ignore","pipe","pipe"]}),e="",_="",m="",p=setTimeout(()=>o.kill("SIGKILL"),n.timeoutMs);o.stdout.on("data",s=>{let w=s.toString("utf8");if(e+=w,!n.onLine)return;m+=w;let $=m.split(`
2
2
  `);m=$.pop()??"";for(let v of $)n.onLine(v)}),o.stderr.on("data",s=>{_+=s.toString("utf8")}),o.on("error",s=>{clearTimeout(p),a(s)}),o.on("close",s=>{clearTimeout(p),m&&n.onLine&&n.onLine(m),c({status:s,stdout:e,stderr:_})})})}t(rr,"defaultRun");var nr={harnessDir:t(()=>O(),"harnessDir"),resolveBin:J,run:rr,exists:V,mkdir:t(r=>Z(r,{recursive:!0}),"mkdir"),readdir:K,jobsRoot:d(G(),"rulemetric-harbor"),now:t(()=>Date.now(),"now")};function er(r){if(r.trials&&r.trials.length>0){let i=r.trials.filter(n=>n.reward!=null);return{n:i.length,passes:i.filter(n=>n.reward>=.5).length}}return r.reward_mean==null||!r.n_trials?{n:r.n_trials??0,passes:null}:{n:r.n_trials,passes:Math.round(r.reward_mean*r.n_trials)}}t(er,"armReward");function sr(r){if(!X.test(r.task??""))throw new Error(`harbor_ab: refusing task "${r.task}" \u2014 not an rm-*-task name; a task is a directory name, never a path`);if(!Y.test(r.instructions??"")||r.instructions.split("/").includes(".."))throw new Error(`harbor_ab: refusing instructions "${r.instructions}" \u2014 must be a plain relative path under scripts/harbor`);if(!y.test(r.model??""))throw new Error(`harbor_ab: refusing model "${r.model}"`);if(!Number.isInteger(r.nTrials)||r.nTrials<1||r.nTrials>200)throw new Error(`harbor_ab: refusing nTrials=${r.nTrials} \u2014 must be an integer in 1..200`);if(r.class!=="proven"&&r.class!=="negative"&&r.class!=="unvalidated")throw new Error(`harbor_ab: unknown task class "${r.class}"`);if(r.axis!=="reward"&&r.axis!=="cost")throw new Error(`harbor_ab: unknown axis "${r.axis}"`)}t(sr,"validate");function tr(r,i){let n=new Set((process.env.PATH??"").split(":").filter(Boolean));for(let c of["harbor","docker","claude","codex","python3"]){let a=r.resolveBin(c);a&&n.add(W(a))}for(let c of[d(q(),".local","bin"),"/opt/homebrew/bin","/usr/local/bin"])n.add(c);return{...process.env,PATH:[...n].join(":"),HARBOR_JOBS_DIR:i}}t(tr,"spawnEnv");function g(r,i=20){return r.trim().split(`
3
3
  `).slice(-i).join(`
4
4
  `)}t(g,"tail");async function j(r,i,n,c,a,o=[]){let e=await r.run("python3",[d(i,c),...a],{cwd:i,env:n,timeoutMs:3e5});if(e.status!==0&&!o.includes(e.status))return{status:e.status,json:null,stderr:e.stderr};try{return{status:e.status,json:JSON.parse(e.stdout),stderr:e.stderr}}catch{throw new Error(`harbor_ab: ${c} printed something that is not JSON: ${g(e.stdout,5)}`)}}t(j,"readJson");async function wr(r,i,n=nr){let c=t(u=>i?.logger?.info?.(u)??console.log(u),"log"),a=r.measurement?L.parse(r.measurement):null,o=a?.engine??"claude";if(o==="pi")throw new Error("harbor_ab: Pi supports eval trials, not Harbor tasks");if(a){if(r={...r,model:a.model??T,class:o==="claude"&&a.model===T?r.class:"unvalidated"},o==="codex"&&r.axis==="cost")throw new Error("harbor_ab: dollar-cost telemetry is unavailable for Codex");if(!n.resolveBin(o))throw new Error(`harbor_ab: ${o} engine unavailable on this worker`)}sr(r);let e=n.harnessDir();if(!e)throw new Error("harbor_ab: no Harbor harness on this worker \u2014 scripts/harbor/run.sh was not found from the CLI build, the working directory, or RULEMETRIC_HARBOR_DIR. This job should not have been enqueued here: the readiness probe reports harness=false for a worker like this one.");let _=d(e,r.task),m=F(e,r.instructions);if(!n.exists(_))throw new Error(`harbor_ab: task directory not found: ${_}`);if(!n.exists(m))throw new Error(`harbor_ab: instruction file not found: ${m}`);let p=n.now(),s=d(n.jobsRoot,`${r.task}-${p}`);n.mkdir(s);let w=tr(n,s);c(`[harbor_ab] ${r.task} (${r.class}/${r.axis}, lane ${r.lane}): n=${r.nTrials}/arm on ${r.model} \u2192 ${s}`);let $=[d(e,"run.sh"),"ab",_,"--instructions",m,"--engine",o,"-m",r.model,"--n-attempts",String(r.nTrials)],v=await n.run("bash",$,{cwd:e,env:w,timeoutMs:Q,onLine:t(u=>c(`[harbor_ab] ${u}`),"onLine")});if(v.status!==0)throw new Error(`harbor_ab: ${r.task} run.sh exited ${v.status??"by signal"} after ${Math.round((n.now()-p)/1e3)}s: ${g(v.stderr)||g(v.stdout)||"(no output)"}`);let A=n.readdir(s),k=A.find(u=>/^ab-\d+-baseline$/.test(u)),E=A.find(u=>/^ab-\d+-with$/.test(u));if(!k||!E)throw new Error(`harbor_ab: run.sh exited 0 but the arm job dirs are missing under ${s} (found: ${A.join(", ")||"nothing"})`);let S=d(s,k),x=d(s,E),D=t(async u=>{let l=await j(n,e,w,"summarize.py",[u]);if(!l.json)throw new Error(`harbor_ab: summarize.py failed on ${u}: ${g(l.stderr,5)}`);return l.json},"summarize"),[N,U]=await Promise.all([D(S),D(x)]),R=await j(n,e,w,"cost_delta.py",[S,x,"--json"]);if(R.status!==0&&R.status!==3)throw new Error(`harbor_ab: cost_delta.py exited ${R.status}: ${g(R.stderr,5)}`);let b=R.json,h=await j(n,e,w,"provenance.py",["--compare",S,x,"--json"],[1]);if(h.status!==0&&h.status!==1)throw new Error(`harbor_ab: provenance.py exited ${h.status}: ${g(h.stderr,5)}`);if(!h.json)throw new Error(`harbor_ab: provenance.py printed no comparison: ${g(h.stderr,5)}`);let M=h.json,B=t((u,l)=>{let C=er(l);return{job:u,rewardMean:l.reward_mean,n:C.n,passes:C.passes,costUsd:l.cost_usd,tokens:l.tokens??null,durationMs:l.duration_ms,turns:l.turns,agentErrors:l.agent_errors}},"arm"),H=B(k,N),P=B(E,U),f=I({taskClass:r.class,axis:r.axis,baseline:{n:H.n,passes:H.passes},with:{n:P.n,passes:P.passes},cost:b,provenance:M});return c(`[harbor_ab] ${r.task}: ${f.decision} \u2014 ${f.reason}`),{task:r.task,class:r.class,axis:r.axis,lane:r.lane,model:r.model,...a?{measurement:a}:{},nTrials:r.nTrials,decision:f.decision,decisionSemanticsVersion:f.decisionSemanticsVersion,reason:f.reason,baseline:H,with:P,rewardDelta:f.reward.delta,rewardCi:f.reward.ci,cost:b?{decision:b.decision,deltaUsd:b.delta_usd,deltaPct:b.delta_pct,ciUsd:b.ci_usd,perSuccess:b.per_success?{decision:b.per_success.decision,deltaPct:b.per_success.delta_pct}:null,rewardRegressed:b.reward.regressed}:null,provenance:M,jobsDir:s,durationMs:n.now()-p}}t(wr,"harborAb");export{Q as a,er as b,wr as c};
@@ -0,0 +1,3 @@
1
+ import{h as R}from"./chunk-AZRGURHR.js";import{h as _}from"./chunk-ZJABRHIP.js";import{a as $,b as E,c as v,f as w,g as P}from"./chunk-SIGZEQ3K.js";import{e as y,f}from"./chunk-5VWVQCNR.js";import{a as c}from"./chunk-ZLLER3HP.js";import{execFileSync as A}from"node:child_process";import{openSync as x,readSync as C,closeSync as M,readFileSync as O}from"node:fs";var T=12e4,j=3e4;function B(l){let t;try{t=x(l,"r");let o=Buffer.alloc(64*1024),a=C(t,o,0,o.length,0),i=o.subarray(0,a).toString("utf-8");for(let s of i.split(`
2
+ `))if(s.startsWith("{"))try{let n=JSON.parse(s).cwd;if(typeof n=="string"&&n.startsWith("/"))return n}catch{}return null}catch{return null}finally{t!==void 0&&M(t)}}c(B,"readTranscriptCwd");function D(l){let t=c(s=>{try{return A("git",["-C",l,...s],{encoding:"utf-8",stdio:["ignore","pipe","ignore"],timeout:5e3}).trim()||null}catch{return null}},"git");if(!t(["rev-parse","--show-toplevel"]))return null;let a=t(["rev-parse","--git-dir"]),i=t(["rev-parse","--git-common-dir"]);return{gitRemote:t(["remote","get-url","origin"]),gitRootCommit:t(["rev-list","--max-parents=0","HEAD"])?.split(`
3
+ `).pop()?.trim()??null,gitBranch:t(["branch","--show-current"]),isWorktree:!!a&&!!i&&a!==i}}c(D,"gitAnchors");async function L(l,t,o=E(D,B)){let a=Math.min(l.limit??200,1e3),i=!1;try{let e=await _(r=>t.logger.info(r),{signal:t.leaseSignal,sweepBudgetMs:T,requestTimeoutMs:j});e.scanned>0&&t.logger.info(`scoped outcomes: scanned=${e.scanned} delivered=${e.delivered} failed=${e.failed} unmeasured=${e.unmeasured} pending=${e.pending} deferred=${e.deferred} stop=${e.stopReason}`),i=e.stopReason==="lease_lost"}catch(e){t.logger.info(`scoped outcome resume sweep failed: ${e.message}`),i=!!t.leaseSignal?.aborted}if(i)return t.logger.warn("lease lost during scoped outcome resume; attribution repair skipped for this claim"),{scanned:0,repaired:0,reimported:0,unrepairable:0,remaining:0};let s=await R(()=>y(`/api/sessions/unattributed?limit=${a}`),{log:c(e=>t.logger.info(e),"log"),label:"sessions/unattributed",idempotent:!0}),n=s.sessions??[],b=s.total??n.length;if(n.length===0)return t.logger.info("no unattributed sessions"),{scanned:0,repaired:0,reimported:0,unrepairable:0,remaining:0};let m=0,g=0,d=0;for(let e of n){if(!e.externalSessionId){d++;continue}let r=P(e,o);if(!r){d++;continue}try{await f("/api/sessions",{tool:e.tool,externalSessionId:e.externalSessionId,projectPath:r.projectPath,...r.gitBranch?{gitBranch:r.gitBranch}:{},metadata:{...r.gitRemote?{gitRemote:r.gitRemote}:{},...r.gitRootCommit?{gitRootCommit:r.gitRootCommit}:{},isWorktree:r.isWorktree,reconciledAttribution:!0}}),m++}catch(u){d++,t.logger.info(`reconcile failed for ${e.externalSessionId}: ${u.message}`);continue}let p=e.tool==="claude_code"?v(e.externalSessionId,o):null,S=w({tool:e.tool,pathWasJunk:!!e.projectPath&&$(e.projectPath),endedAt:e.endedAt??null,transcript:p?o.stat(p):null});if(S.reimport&&p)try{let u=O(p,"utf-8");await f(`/api/sessions/${e.id}/reimport`,{content:u,tool:"claude_code"}),g++}catch(u){t.logger.info(`reimport failed for ${e.externalSessionId} (${S.reason}): ${u.message}`)}}let h=b-m;return t.logger.info(`reconciled attribution: scanned=${n.length} repaired=${m} reimported=${g} unrepairable=${d} remaining=${h} (of ${b} total)`),{scanned:n.length,repaired:m,reimported:g,unrepairable:d,remaining:h}}c(L,"cronReconcileAttribution");export{L as a};
@@ -1 +1 @@
1
- import{b as i}from"./chunk-GIXHG5FK.js";import{a as n}from"./chunk-ZLLER3HP.js";var d=new Set([408,429,502,503,504]),R=new Set([500]),l=6e4,_=1e3,h=8e3;function T(e){return e instanceof i&&d.has(e.statusCode)}n(T,"isShedError");function w(e){return e instanceof i&&R.has(e.statusCode)}n(w,"isRetryableServerError");async function g(e,r={}){let m=r.budgetMs??l,u=r.sleep??(o=>new Promise(t=>setTimeout(t,o))),S=Date.now()+m,s=_;for(let o=1;;o++)try{return await e()}catch(t){let a=S-Date.now(),E=r.idempotent===!0&&w(t);if(!T(t)&&!E||a<=0)throw t;let p=t.statusCode,c=Math.min(s,a);r.log?.(`[shed-retry] ${r.label??"api call"} ${E?"hit a server error":"shed"} with ${p} (${t.message}) \u2014 attempt ${o}, retrying in ${c}ms`),await u(c),s=Math.min(s*2,h)}}n(g,"withShedRetry");export{d as a,R as b,l as c,_ as d,h as e,T as f,w as g,g as h};
1
+ import{b as i}from"./chunk-5VWVQCNR.js";import{a as n}from"./chunk-ZLLER3HP.js";var d=new Set([408,429,502,503,504]),R=new Set([500]),l=6e4,_=1e3,h=8e3;function T(e){return e instanceof i&&d.has(e.statusCode)}n(T,"isShedError");function w(e){return e instanceof i&&R.has(e.statusCode)}n(w,"isRetryableServerError");async function g(e,r={}){let m=r.budgetMs??l,u=r.sleep??(o=>new Promise(t=>setTimeout(t,o))),S=Date.now()+m,s=_;for(let o=1;;o++)try{return await e()}catch(t){let a=S-Date.now(),E=r.idempotent===!0&&w(t);if(!T(t)&&!E||a<=0)throw t;let p=t.statusCode,c=Math.min(s,a);r.log?.(`[shed-retry] ${r.label??"api call"} ${E?"hit a server error":"shed"} with ${p} (${t.message}) \u2014 attempt ${o}, retrying in ${c}ms`),await u(c),s=Math.min(s*2,h)}}n(g,"withShedRetry");export{d as a,R as b,l as c,_ as d,h as e,T as f,w as g,g as h};
@@ -1,4 +1,4 @@
1
- import{a as g,c as w}from"./chunk-UPFH72PF.js";import{g as p,h as m,i as k,j as h,k as y}from"./chunk-X6CF5KTW.js";import{a as s}from"./chunk-ZLLER3HP.js";import{existsSync as u,readFileSync as f,writeFileSync as v,copyFileSync as R,rmSync as P,statSync as x,readdirSync as $,mkdirSync as j}from"node:fs";import{join as i,dirname as L}from"node:path";import{homedir as c}from"node:os";var I=["/plugins/cache/","/plugins/marketplaces/","/node_modules/","/.git/"];function _(e){return I.some(t=>e.includes(t))}s(_,"isUnownedPath");function K(e,t){let n=i(c(),".config","rulemetric","retraction-backups",t),r=e.replace(/^\/+/,"").replace(/\//g,"__");return i(n,r)}s(K,"backupPathFor");function b(e){return e.split(`
1
+ import{a as g,c as w}from"./chunk-UPFH72PF.js";import{g as p,h as m,i as k,j as h,k as y}from"./chunk-MHLHLJ5T.js";import{a as s}from"./chunk-ZLLER3HP.js";import{existsSync as u,readFileSync as f,writeFileSync as v,copyFileSync as R,rmSync as P,statSync as x,readdirSync as $,mkdirSync as j}from"node:fs";import{join as i,dirname as L}from"node:path";import{homedir as c}from"node:os";var I=["/plugins/cache/","/plugins/marketplaces/","/node_modules/","/.git/"];function _(e){return I.some(t=>e.includes(t))}s(_,"isUnownedPath");function K(e,t){let n=i(c(),".config","rulemetric","retraction-backups",t),r=e.replace(/^\/+/,"").replace(/\//g,"__");return i(n,r)}s(K,"backupPathFor");function b(e){return e.split(`
2
2
  `).slice(0,40).map(t=>`- ${t}`).join(`
3
3
  `)}s(b,"shortDiff");function d(e,t,n){return{kind:e,path:t,ok:!1,refusal:n,preview:"",warnings:[]}}s(d,"refuse");function B(e){let[t,...n]=e.split("::"),r=n.join("::");if(!r)return null;switch(t){case"claude_md":return{kind:"claude_md_section",target:r};case"memory":return{kind:"memory_section",target:r};case"skill":return{kind:"skill_file",target:r};default:return null}}s(B,"pathFromContextIdentity");function D(e,t){let n=e.replace(/^skills--/,""),r=w(e);return[...(r===n?[n]:[r,n]).flatMap(a=>[i(t,...g.split("/"),a,"SKILL.md"),i(t,".claude","skills",a,"SKILL.md"),i(t,".claude","skills",`${a}.md`),i(c(),...g.split("/"),a,"SKILL.md"),i(c(),".claude","skills",a,"SKILL.md"),i(c(),".claude","skills",`${a}.md`)]),...F(n)]}s(D,"candidateSkillPaths");function F(e){let t=i(c(),".claude","plugins","marketplaces");if(!u(t))return[];let n=[];try{for(let r of $(t))n.push(i(t,r,"skills",e,"SKILL.md"),i(t,r,"plugins",e,"SKILL.md"),i(t,r,"skills",`${e}.md`))}catch{}return n}s(F,"pluginSkillPaths");function H(e){switch(e.kind){case"claude_md_section":case"memory_section":case"claude_md_block":return C(e);case"skill_file":return E(e);case"settings_hook":case"mcp_server":return N(e)}}s(H,"planRetraction");function C(e){let t=e.target;if(!u(t))return d(e.kind,t,`File does not exist: ${t}`);if(_(t))return d(e.kind,t,`Refusing to edit a path this tool does not own: ${t}`);let n=f(t,"utf-8"),r=e.body?m(n,e.body):p(n,e.heading??"");if(!r.removed){let l={"not-found":"The content is not present in this file (already removed, or edited since).",ambiguous:"The content appears more than once \u2014 refusing to guess which copy the verdict was about.","would-empty-file":"Removing it would empty the file. Delete the file by hand if that is really the intent."}[r.reason??"not-found"];return d(e.kind,t,l)}let o=[];return S(t,e.cwd)||o.push("This file is not tracked by git in this repo \u2014 the timestamped backup is your only undo."),{kind:e.kind,path:t,ok:!0,preview:b(r.removedText??""),nextContent:r.content,warnings:o}}s(C,"planFileEdit");function E(e){let t=e.target.startsWith("/")?[e.target]:D(e.target,e.cwd),n=t.find(l=>u(l));if(!n)return d("skill_file",t[0]??e.target,`No local skill file found for "${e.target}". Searched:
4
4
  ${t.join(`
@@ -1 +1 @@
1
- import{c as d,d as t}from"./chunk-3H44B6PB.js";import{a as r}from"./chunk-ZLLER3HP.js";async function g(o,i){let{evalTargetId:s}=o;try{let e=await t({targetId:s,engineFlag:"auto",skipReviewed:!0,log:r(a=>i.logger.info(`[judge-review] ${a}`),"log"),warn:r(a=>i.logger.warn(`[judge-review] ${a}`),"warn")});return{evalTargetId:s,reviewerModel:e.reviewerModel,comparedPairs:e.report.pairs,disagreements:e.report.disagreements.length,persisted:e.persisted,alreadyReviewed:e.alreadyReviewed,deferredPartialRuns:e.deferredPartialRuns}}catch(e){if(e instanceof d)return i.logger.info(`[judge-review] skipped (${e.reason}): ${e.message}`),{evalTargetId:s,skipped:e.reason};throw e}}r(g,"processJudgeReview");export{g as a};
1
+ import{c as d,d as t}from"./chunk-YT25HLWB.js";import{a as r}from"./chunk-ZLLER3HP.js";async function g(o,i){let{evalTargetId:s}=o;try{let e=await t({targetId:s,engineFlag:"auto",skipReviewed:!0,log:r(a=>i.logger.info(`[judge-review] ${a}`),"log"),warn:r(a=>i.logger.warn(`[judge-review] ${a}`),"warn")});return{evalTargetId:s,reviewerModel:e.reviewerModel,comparedPairs:e.report.pairs,disagreements:e.report.disagreements.length,persisted:e.persisted,alreadyReviewed:e.alreadyReviewed,deferredPartialRuns:e.deferredPartialRuns}}catch(e){if(e instanceof d)return i.logger.info(`[judge-review] skipped (${e.reason}): ${e.message}`),{evalTargetId:s,skipped:e.reason};throw e}}r(g,"processJudgeReview");export{g as a};
@@ -0,0 +1 @@
1
+ import{a as p,c as Cs}from"./chunk-ZLLER3HP.js";import{boolean as Nn,date as qs,index as no,integer as Os,jsonb as Ls,pgTable as ro,text as z,timestamp as F,uniqueIndex as Ms,uuid as he}from"drizzle-orm/pg-core";var xn=ro("announcements",{id:he("id").primaryKey().defaultRandom(),version:z("version").notNull().unique(),releaseDate:qs("release_date").notNull(),subject:z("subject").notNull(),htmlBody:z("html_body").notNull(),textBody:z("text_body").notNull(),sections:Ls("sections").notNull().default({}),status:z("status").notNull().default("draft"),recipientCount:Os("recipient_count"),sentAt:F("sent_at",{withTimezone:!0}),sentBy:he("sent_by"),error:z("error"),createdAt:F("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:F("updated_at",{withTimezone:!0}).notNull().defaultNow()},e=>[no("idx_announcements_status").on(e.status),no("idx_announcements_created").on(e.createdAt)]),hn=ro("announcement_deliveries",{id:he("id").primaryKey().defaultRandom(),announcementId:he("announcement_id").notNull(),userId:he("user_id").notNull(),email:z("email").notNull(),status:z("status").notNull().default("pending"),providerId:z("provider_id"),error:z("error"),sentAt:F("sent_at",{withTimezone:!0}),createdAt:F("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Ms("uniq_announcement_deliveries_announcement_user").on(e.announcementId,e.userId),no("idx_announcement_deliveries_user").on(e.userId,e.createdAt)]),gn=ro("notification_preferences",{userId:he("user_id").primaryKey(),productAnnouncements:Nn("product_announcements").notNull().default(!0),weeklyDigest:Nn("weekly_digest").notNull().default(!0),unsubscribeToken:z("unsubscribe_token").notNull().unique(),unsubscribedAt:F("unsubscribed_at",{withTimezone:!0}),createdAt:F("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:F("updated_at",{withTimezone:!0}).notNull().defaultNow()});import{boolean as Nt,integer as He,jsonb as Hs,pgTable as Bs,real as yn,text as Be,timestamp as so,uuid as wn}from"drizzle-orm/pg-core";import{pgTable as ft,text as ge,timestamp as Me,jsonb as vn,uuid as se,primaryKey as In}from"drizzle-orm/pg-core";var l=ft("organizations",{id:se("id").primaryKey().defaultRandom(),name:ge("name").unique().notNull(),slug:ge("slug").unique().notNull(),metadata:vn("metadata"),createdAt:Me("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Me("updated_at",{withTimezone:!0}).defaultNow()}),v=ft("teams",{id:se("id").primaryKey().defaultRandom(),orgId:se("org_id").references(()=>l.id,{onDelete:"cascade"}),name:ge("name").notNull(),slug:ge("slug").notNull(),metadata:vn("metadata"),createdAt:Me("created_at",{withTimezone:!0}).defaultNow()}),ve=ft("user_organizations",{userId:se("user_id").notNull(),orgId:se("org_id").references(()=>l.id,{onDelete:"cascade"}).notNull(),role:ge("role").notNull().default("member"),createdAt:Me("created_at",{withTimezone:!0}).defaultNow()},e=>[In({columns:[e.userId,e.orgId]})]),Ie=ft("user_teams",{userId:se("user_id").notNull(),teamId:se("team_id").references(()=>v.id,{onDelete:"cascade"}).notNull(),role:ge("role").notNull().default("member"),createdAt:Me("created_at",{withTimezone:!0}).defaultNow()},e=>[In({columns:[e.userId,e.teamId]})]);var o=Bs("profiles",{id:wn("id").primaryKey(),email:Be("email"),measurementPreferences:Hs("measurement_preferences"),displayName:Be("display_name"),activeOrgId:wn("active_org_id").references(()=>l.id,{onDelete:"set null"}),isSuperadmin:Nt("is_superadmin").notNull().default(!1),claudeCodePlan:Be("claude_code_plan"),planSource:Be("plan_source").notNull().default("detected"),setupCompletedAt:so("setup_completed_at",{withTimezone:!0}),liveSendSkipped:Nt("live_send_skipped").notNull().default(!1),autoAcceptSuggestions:Nt("auto_accept_suggestions").notNull().default(!0),evolutionPaused:Nt("evolution_paused").notNull().default(!1),suggestionConfidenceThreshold:yn("suggestion_confidence_threshold").notNull().default(.7),autoAcceptMinScore:yn("auto_accept_min_score"),autoAcceptMaxPerRun:He("auto_accept_max_per_run"),autoAcceptMaxPerWindow:He("auto_accept_max_per_window"),autoAcceptWindowDays:He("auto_accept_window_days"),trialMaxConcurrent:He("trial_max_concurrent"),trialMaxPerRun:He("trial_max_per_run"),harborAbCadence:Be("harbor_ab_cadence").notNull().default("off"),createdAt:so("created_at",{withTimezone:!0}).defaultNow(),updatedAt:so("updated_at",{withTimezone:!0}).defaultNow()});import{pgTable as Us,text as io,timestamp as xt,uuid as ht,index as Tn}from"drizzle-orm/pg-core";var q=Us("org_invitations",{id:ht("id").primaryKey().defaultRandom(),orgId:ht("org_id").notNull().references(()=>l.id,{onDelete:"cascade"}),email:io("email").notNull(),role:io("role").notNull().default("member"),teamId:ht("team_id").references(()=>v.id,{onDelete:"set null"}),invitedBy:ht("invited_by").notNull().references(()=>o.id,{onDelete:"cascade"}),token:io("token").notNull().unique(),expiresAt:xt("expires_at",{withTimezone:!0}).notNull(),acceptedAt:xt("accepted_at",{withTimezone:!0}),revokedAt:xt("revoked_at",{withTimezone:!0}),createdAt:xt("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Tn("idx_org_invitations_token").on(e.token),Tn("idx_org_invitations_org").on(e.orgId)]);import{pgTable as ao,text as x,timestamp as $,jsonb as gt,uuid as E,integer as vt,boolean as Gs,uniqueIndex as It,index as Ue}from"drizzle-orm/pg-core";var n=ao("instructions",{id:E("id").primaryKey().defaultRandom(),name:x("name").notNull(),description:x("description").notNull(),type:x("type").notNull().default("instruction"),scope:x("scope").notNull(),scopeRef:E("scope_ref"),version:x("version").notNull(),content:x("content").notNull(),frontmatter:gt("frontmatter").notNull(),slots:gt("slots"),tags:x("tags").array(),compatibility:x("compatibility").array(),createdBy:E("created_by"),createdAt:$("created_at",{withTimezone:!0}).defaultNow(),updatedAt:$("updated_at",{withTimezone:!0}).defaultNow(),archived:Gs("archived").default(!1),archivedAt:$("archived_at",{withTimezone:!0}),archivedBy:E("archived_by"),forkedFromId:E("forked_from_id").references(()=>n.id,{onDelete:"set null"}),upstreamVersion:x("upstream_version"),badge:x("badge"),contentHash:x("content_hash"),contextIdentity:x("context_identity"),scanScore:vt("scan_score"),scanFindings:gt("scan_findings"),popularityScore:vt("popularity_score"),sourceUpdatedAt:$("source_updated_at",{withTimezone:!0})},e=>[It("instructions_name_scope_ref_idx").on(e.name,e.scope,e.scopeRef),Ue("idx_instructions_scope").on(e.scope,e.scopeRef),Ue("idx_instructions_created_by").on(e.createdBy),Ue("idx_instructions_context_identity").on(e.createdBy,e.contextIdentity),Ue("idx_instructions_public_recency").on(e.scope,e.sourceUpdatedAt.desc())]),An=ao("instruction_version_identities",{id:E("id").primaryKey().defaultRandom(),instructionId:E("instruction_id").notNull().references(()=>n.id,{onDelete:"cascade"}),contentHash:x("content_hash").notNull(),versionOrdinal:vt("version_ordinal").notNull(),content:x("content"),firstSeenAt:$("first_seen_at",{withTimezone:!0}).notNull().defaultNow(),lastSeenAt:$("last_seen_at",{withTimezone:!0}).notNull().defaultNow(),createdAt:$("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[It("instruction_version_identities_hash_unique").on(e.instructionId,e.contentHash),It("instruction_version_identities_ordinal_unique").on(e.instructionId,e.versionOrdinal),Ue("idx_ivi_instruction").on(e.instructionId)]),ye=ao("instruction_versions",{id:E("id").primaryKey().defaultRandom(),instructionId:E("instruction_id").references(()=>n.id,{onDelete:"cascade"}),versionNumber:vt("version_number").notNull(),content:x("content").notNull(),frontmatter:gt("frontmatter").notNull(),changeSummary:x("change_summary"),createdBy:E("created_by"),createdAt:$("created_at",{withTimezone:!0}).defaultNow()},e=>[It("instruction_versions_instruction_version_idx").on(e.instructionId,e.versionNumber)]);import{pgTable as Vs,text as Fs,timestamp as $s,jsonb as Js,uuid as uo,index as Dn}from"drizzle-orm/pg-core";var we=Vs("instruction_events",{id:uo("id").primaryKey().defaultRandom(),instructionId:uo("instruction_id").notNull().references(()=>n.id,{onDelete:"cascade"}),eventType:Fs("event_type").notNull(),actorId:uo("actor_id").notNull(),metadata:Js("metadata"),createdAt:$s("created_at",{withTimezone:!0}).defaultNow()},e=>[Dn("idx_instruction_events_instruction").on(e.instructionId),Dn("idx_instruction_events_type").on(e.eventType)]);import{boolean as Qs,jsonb as Ys,pgTable as co,primaryKey as zn,text as ie,timestamp as Ge,uniqueIndex as lo,uuid as ae}from"drizzle-orm/pg-core";import{sql as Ws}from"drizzle-orm";var s=co("projects",{id:ae("id").primaryKey().defaultRandom(),orgId:ae("org_id").references(()=>l.id,{onDelete:"cascade"}),name:ie("name").notNull(),description:ie("description"),githubRepo:ie("github_repo"),gitRemoteUrl:ie("git_remote_url"),gitRootCommit:ie("git_root_commit"),gitRemoteAliases:ie("git_remote_aliases").array().notNull().default([]),metadata:Ys("metadata"),createdBy:ae("created_by"),createdAt:Ge("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Ge("updated_at",{withTimezone:!0}).defaultNow()},e=>[lo("projects_org_name_idx").on(e.orgId,e.name),lo("projects_git_remote_url_unique").on(e.gitRemoteUrl).where(Ws`${e.gitRemoteUrl} IS NOT NULL`)]),J=co("project_instructions",{projectId:ae("project_id").references(()=>s.id,{onDelete:"cascade"}).notNull(),instructionId:ae("instruction_id").references(()=>n.id,{onDelete:"cascade"}).notNull(),addedAt:Ge("added_at",{withTimezone:!0}).defaultNow(),addedBy:ae("added_by")},e=>[zn({columns:[e.projectId,e.instructionId]})]),jn=co("project_checkouts",{projectId:ae("project_id").references(()=>s.id,{onDelete:"cascade"}).notNull(),path:ie("path").notNull(),isWorktree:Qs("is_worktree").notNull().default(!1),firstSeen:Ge("first_seen",{withTimezone:!0}).notNull().defaultNow(),lastSeen:Ge("last_seen",{withTimezone:!0}).notNull().defaultNow()},e=>[zn({columns:[e.projectId,e.path]}),lo("project_checkouts_path_unique").on(e.path)]);import{pgTable as po,text as I,timestamp as Ve,jsonb as de,uuid as O,integer as wt,uniqueIndex as kn,index as S}from"drizzle-orm/pg-core";import{pgTable as Xs,text as Te,timestamp as _o,jsonb as Rn,uuid as yt,integer as Zs,boolean as ei,index as mo}from"drizzle-orm/pg-core";var h=Xs("agent_runs",{id:yt("id").primaryKey().defaultRandom(),userId:yt("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),orgId:yt("org_id").references(()=>l.id,{onDelete:"set null"}),projectId:yt("project_id").references(()=>s.id,{onDelete:"set null"}),projectPath:Te("project_path"),gitRemote:Te("git_remote"),baseBranch:Te("base_branch"),title:Te("title"),prompt:Te("prompt"),toolSpec:Rn("tool_spec").notNull().default([]),autoWorktree:ei("auto_worktree").notNull().default(!0),status:Te("status").notNull().default("pending"),sessionCount:Zs("session_count").notNull().default(0),metadata:Rn("metadata").notNull().default({}),createdAt:_o("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:_o("updated_at",{withTimezone:!0}).notNull().defaultNow(),completedAt:_o("completed_at",{withTimezone:!0})},e=>[mo("idx_agent_runs_user").on(e.userId),mo("idx_agent_runs_org_created").on(e.orgId,e.createdAt),mo("idx_agent_runs_project").on(e.projectId)]);var a=po("sessions",{id:O("id").primaryKey().defaultRandom(),userId:O("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),externalSessionId:I("external_session_id"),projectId:O("project_id").references(()=>s.id,{onDelete:"set null"}),orgId:O("org_id").references(()=>l.id,{onDelete:"set null"}),tool:I("tool").notNull(),projectPath:I("project_path"),gitBranch:I("git_branch"),startedAt:Ve("started_at",{withTimezone:!0}).notNull(),endedAt:Ve("ended_at",{withTimezone:!0}),eventCount:wt("event_count").default(0),tokenUsage:de("token_usage"),analysis:de("analysis"),analyzedAt:Ve("analyzed_at",{withTimezone:!0}),analyzedEventCount:wt("analyzed_event_count"),analyzedTurnCount:wt("analyzed_turn_count"),metadata:de("metadata").default({}),origin:I("origin").notNull().default("unknown"),runId:O("run_id").references(()=>h.id,{onDelete:"set null"}),model:I("model"),harnessVersion:I("harness_version"),createdAt:Ve("created_at",{withTimezone:!0}).defaultNow()},e=>[S("idx_sessions_user").on(e.userId),S("idx_sessions_tool").on(e.tool),S("idx_sessions_started_at").on(e.startedAt),S("idx_sessions_project").on(e.projectId),S("idx_sessions_org_started_at").on(e.orgId,e.startedAt),S("idx_sessions_run").on(e.runId),kn("idx_sessions_user_external").on(e.userId,e.externalSessionId)]),Ae=po("session_events",{id:O("id").primaryKey().defaultRandom(),sessionId:O("session_id").notNull().references(()=>a.id,{onDelete:"cascade"}),sequence:wt("sequence").notNull(),eventType:I("event_type").notNull(),content:I("content"),toolName:I("tool_name"),toolInput:de("tool_input"),toolOutput:de("tool_output"),tokenUsage:de("token_usage"),model:I("model"),timestamp:Ve("timestamp",{withTimezone:!0}).notNull(),metadata:de("metadata").default({})},e=>[kn("session_events_session_sequence_idx").on(e.sessionId,e.sequence),S("idx_session_events_session_id").on(e.sessionId),S("idx_session_events_event_type").on(e.eventType),S("idx_session_events_model").on(e.model)]),Q=po("session_instructions",{sessionId:O("session_id").notNull().references(()=>a.id,{onDelete:"cascade"}),instructionId:O("instruction_id").notNull().references(()=>n.id,{onDelete:"cascade"}),linkMethod:I("link_method").notNull(),contentHash:I("content_hash")},e=>[S("idx_session_instructions_instruction_id").on(e.instructionId)]);import{pgTable as En,text as Tt,timestamp as Sn,uuid as b,integer as bn,index as De,unique as ti}from"drizzle-orm/pg-core";var L=En("treatment_assignments",{id:b("id").primaryKey().defaultRandom(),userId:b("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),treatmentType:Tt("treatment_type").notNull(),treatmentId:b("treatment_id").notNull(),treatmentVersion:bn("treatment_version").notNull().default(1),projectId:b("project_id").references(()=>s.id,{onDelete:"set null"}),assignedBy:b("assigned_by").references(()=>o.id,{onDelete:"set null"}),method:Tt("method").notNull(),assignedAt:Sn("assigned_at",{withTimezone:!0}).notNull().defaultNow()},e=>[De("idx_treatment_assignments_user").on(e.userId),De("idx_treatment_assignments_treatment").on(e.treatmentType,e.treatmentId),De("idx_treatment_assignments_project").on(e.projectId)]),M=En("treatment_exposures",{id:b("id").primaryKey().defaultRandom(),sessionId:b("session_id").notNull().references(()=>a.id,{onDelete:"cascade"}),userId:b("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),treatmentType:Tt("treatment_type").notNull(),treatmentId:b("treatment_id").notNull(),treatmentVersion:bn("treatment_version").notNull().default(1),assignmentId:b("assignment_id").references(()=>L.id,{onDelete:"set null"}),method:Tt("method").notNull(),exposedAt:Sn("exposed_at",{withTimezone:!0}).notNull().defaultNow()},e=>[ti("treatment_exposures_unique").on(e.sessionId,e.treatmentType,e.treatmentId,e.treatmentVersion),De("idx_treatment_exposures_treatment").on(e.treatmentType,e.treatmentId),De("idx_treatment_exposures_user").on(e.userId),De("idx_treatment_exposures_session").on(e.sessionId)]);import{pgTable as oi,text as fo,timestamp as ni,uuid as At,integer as ri,index as Pn,uniqueIndex as si}from"drizzle-orm/pg-core";var Kn=oi("pending_treatment_exposures",{id:At("id").primaryKey().defaultRandom(),userId:At("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),externalSessionId:fo("external_session_id").notNull(),treatmentType:fo("treatment_type").notNull(),treatmentId:At("treatment_id").notNull(),treatmentVersion:ri("treatment_version").notNull().default(1),method:fo("method").notNull().default("injected"),projectId:At("project_id").references(()=>s.id,{onDelete:"set null"}),createdAt:ni("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[si("pending_treatment_exposures_unique").on(e.externalSessionId,e.treatmentType,e.treatmentId,e.treatmentVersion),Pn("idx_pending_treatment_exposures_ext").on(e.externalSessionId),Pn("idx_pending_treatment_exposures_user").on(e.userId)]);import{pgTable as Cn,text as Y,timestamp as qn,uuid as ze,numeric as ii,index as No,unique as ai}from"drizzle-orm/pg-core";var ue=Cn("instruction_experiments",{id:ze("id").primaryKey().defaultRandom(),userId:ze("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),instructionId:ze("instruction_id").notNull().references(()=>n.id,{onDelete:"cascade"}),projectPath:Y("project_path").notNull(),status:Y("status").notNull().default("running"),treatedShare:ii("treated_share").notNull().default("0.5"),salt:Y("salt").notNull(),contentHash:Y("content_hash"),source:Y("source").notNull().default("manual"),stoppedReason:Y("stopped_reason"),createdAt:qn("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[No("idx_instruction_experiments_lookup").on(e.userId,e.projectPath)]),On=Cn("instruction_experiment_arms",{id:ze("id").primaryKey().defaultRandom(),experimentId:ze("experiment_id").notNull().references(()=>ue.id,{onDelete:"cascade"}),userId:ze("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),externalSessionId:Y("external_session_id").notNull(),arm:Y("arm").notNull(),assignedAt:qn("assigned_at",{withTimezone:!0}).notNull().defaultNow()},e=>[ai("instruction_experiment_arms_unique").on(e.experimentId,e.externalSessionId),No("idx_instruction_experiment_arms_experiment").on(e.experimentId,e.arm),No("idx_instruction_experiment_arms_session").on(e.externalSessionId)]);import{index as Fn,jsonb as Je,pgTable as $n,text as A,timestamp as Qe,unique as Vn,uniqueIndex as _i,uuid as _e}from"drizzle-orm/pg-core";import{pgTable as Gn,uuid as Re,text as Rt,jsonb as Un,timestamp as vo,uniqueIndex as ui,integer as li,unique as ci}from"drizzle-orm/pg-core";import{pgTable as di,text as Dt,timestamp as $e,jsonb as zt,uuid as ho,index as jt,integer as go}from"drizzle-orm/pg-core";import{sql as xo}from"drizzle-orm";import{pgTable as le,text as _,timestamp as g,jsonb as w,uuid as c,integer as H,boolean as Fe,index as f,unique as Ln}from"drizzle-orm/pg-core";var r=le("eval_targets",{id:c("id").primaryKey().defaultRandom(),userId:c("user_id").notNull(),name:_("name").notNull(),type:_("type").notNull(),content:_("content").notNull(),description:_("description").notNull().default(""),metadata:w("metadata").notNull().default({}),version:H("version").notNull().default(1),parentId:c("parent_id").references(()=>r.id,{onDelete:"set null"}),instructionId:c("instruction_id").references(()=>n.id,{onDelete:"set null"}),projectPath:_("project_path"),createdAt:g("created_at",{withTimezone:!0}).defaultNow(),updatedAt:g("updated_at",{withTimezone:!0}).defaultNow()},e=>[f("eval_targets_name_user_idx").on(e.name,e.userId),f("idx_eval_targets_user").on(e.userId),f("idx_eval_targets_type").on(e.type),f("idx_eval_targets_parent").on(e.parentId),f("idx_eval_targets_instruction").on(e.instructionId).where(xo`${e.instructionId} IS NOT NULL`),f("idx_eval_targets_project").on(e.projectPath).where(xo`${e.projectPath} IS NOT NULL`)]),B=le("evals",{id:c("id").primaryKey().defaultRandom(),evalTargetId:c("eval_target_id").notNull().references(()=>r.id,{onDelete:"cascade"}),name:_("name").notNull(),prompt:_("prompt").notNull(),expectedOutput:_("expected_output").notNull().default(""),files:w("files").notNull().default([]),expectations:w("expectations").notNull().default([]),retiredAt:g("retired_at",{withTimezone:!0}),retiredReason:_("retired_reason"),createdAt:g("created_at",{withTimezone:!0}).defaultNow(),updatedAt:g("updated_at",{withTimezone:!0}).defaultNow(),contentUpdatedAt:g("content_updated_at",{withTimezone:!0}).notNull().defaultNow()},e=>[f("idx_evals_target").on(e.evalTargetId),f("idx_evals_target_active").on(e.evalTargetId).where(xo`${e.retiredAt} IS NULL`)]),P=le("eval_runs",{id:c("id").primaryKey().defaultRandom(),jobId:c("job_id"),evalId:c("eval_id").notNull().references(()=>B.id,{onDelete:"cascade"}),evalTargetId:c("eval_target_id").notNull().references(()=>r.id,{onDelete:"cascade"}),evalTargetVersion:H("eval_target_version").notNull(),configuration:_("configuration").notNull(),runNumber:H("run_number").notNull().default(1),iteration:H("iteration").notNull().default(1),status:_("status").notNull().default("completed"),outputs:w("outputs").notNull().default({}),timing:w("timing").notNull().default({}),grading:w("grading").notNull().default({}),comparison:w("comparison"),createdAt:g("created_at",{withTimezone:!0}).defaultNow()},e=>[f("idx_eval_runs_eval").on(e.evalId),f("idx_eval_runs_target").on(e.evalTargetId),f("idx_eval_runs_iteration").on(e.evalTargetId,e.iteration)]),Mn=le("eval_comparisons",{id:c("id").primaryKey().defaultRandom(),userId:c("user_id").notNull(),targetAId:c("target_a_id").notNull().references(()=>r.id,{onDelete:"cascade"}),targetBId:c("target_b_id").notNull().references(()=>r.id,{onDelete:"cascade"}),targetAVersion:H("target_a_version").notNull(),targetBVersion:H("target_b_version").notNull(),isSwapped:Fe("is_swapped").notNull().default(!1),winnerTargetId:c("winner_target_id").references(()=>r.id,{onDelete:"set null"}),perEval:w("per_eval").notNull().default([]),overall:w("overall").notNull().default({}),rawOutput:_("raw_output"),model:_("model"),status:_("status").notNull().default("completed"),createdAt:g("created_at",{withTimezone:!0}).defaultNow()},e=>[f("idx_eval_comparisons_target_a").on(e.targetAId),f("idx_eval_comparisons_target_b").on(e.targetBId),f("idx_eval_comparisons_user").on(e.userId)]),Hn=le("eval_grade_annotations",{id:c("id").primaryKey().defaultRandom(),userId:c("user_id").notNull(),evalRunId:c("eval_run_id").notNull().references(()=>P.id,{onDelete:"cascade"}),evalTargetId:c("eval_target_id").notNull().references(()=>r.id,{onDelete:"cascade"}),expectationIndex:H("expectation_index").notNull(),expectationText:_("expectation_text").notNull(),judgePassed:Fe("judge_passed").notNull(),judgeMethod:_("judge_method").notNull(),judgeModel:_("judge_model"),verdict:_("verdict").notNull(),flag:_("flag"),note:_("note"),createdAt:g("created_at",{withTimezone:!0}).defaultNow(),updatedAt:g("updated_at",{withTimezone:!0}).defaultNow()},e=>[f("idx_eval_grade_annotations_target").on(e.evalTargetId),f("idx_eval_grade_annotations_run").on(e.evalRunId),Ln("eval_grade_annotations_eval_run_id_expectation_index_key").on(e.evalRunId,e.expectationIndex)]),Bn=le("judge_reviewer_verdicts",{id:c("id").primaryKey().defaultRandom(),userId:c("user_id").notNull(),evalTargetId:c("eval_target_id").notNull().references(()=>r.id,{onDelete:"cascade"}),evalRunId:c("eval_run_id").notNull().references(()=>P.id,{onDelete:"cascade"}),expectationIndex:H("expectation_index").notNull(),expectationText:_("expectation_text").notNull(),judgePassed:Fe("judge_passed").notNull(),humanPassed:Fe("human_passed").notNull(),reviewerEngine:_("reviewer_engine").notNull(),reviewerModel:_("reviewer_model").notNull(),reviewerPassed:Fe("reviewer_passed").notNull(),resolvedAt:g("resolved_at",{withTimezone:!0}),resolution:_("resolution"),createdAt:g("created_at",{withTimezone:!0}).defaultNow(),updatedAt:g("updated_at",{withTimezone:!0}).defaultNow()},e=>[f("idx_jrv_target").on(e.evalTargetId),Ln("judge_reviewer_verdicts_eval_run_id_expectation_index_review_key").on(e.evalRunId,e.expectationIndex,e.reviewerModel)]),je=le("benchmarks",{id:c("id").primaryKey().defaultRandom(),evalTargetId:c("eval_target_id").notNull().references(()=>r.id,{onDelete:"cascade"}),iteration:H("iteration").notNull().default(1),runSummary:w("run_summary").notNull().default({}),notes:w("notes").notNull().default([]),feedback:w("feedback"),createdAt:g("created_at",{withTimezone:!0}).defaultNow()},e=>[f("idx_benchmarks_target").on(e.evalTargetId)]);var K=di("eval_jobs",{id:ho("id").primaryKey().defaultRandom(),userId:ho("user_id").notNull(),evalTargetId:ho("eval_target_id").notNull().references(()=>r.id,{onDelete:"cascade"}),status:Dt("status").notNull().default("pending"),config:zt("config").notNull().default({}),progress:zt("progress").notNull().default({}),result:zt("result"),error:Dt("error"),attempts:go("attempts").notNull().default(0),taskKind:Dt("task_kind"),payload:zt("payload"),claimedBy:Dt("claimed_by"),claimedAt:$e("claimed_at",{withTimezone:!0}),leaseExpiresAt:$e("lease_expires_at",{withTimezone:!0}),leaseRecoveries:go("lease_recoveries").notNull().default(0),hostSuspendRecoveries:go("host_suspend_recoveries").notNull().default(0),createdAt:$e("created_at",{withTimezone:!0}).defaultNow(),updatedAt:$e("updated_at",{withTimezone:!0}).defaultNow(),completedAt:$e("completed_at",{withTimezone:!0})},e=>[jt("idx_eval_jobs_user").on(e.userId),jt("idx_eval_jobs_target").on(e.evalTargetId),jt("idx_eval_jobs_status").on(e.status),jt("idx_eval_jobs_pending").on(e.userId,e.status)]);var T=Gn("performance_studies",{id:Re("id").primaryKey().defaultRandom(),userId:Re("user_id").notNull(),evalTargetId:Re("eval_target_id").notNull().references(()=>r.id,{onDelete:"cascade"}),projectPath:Rt("project_path").notNull(),protocol:Un("protocol").notNull(),protocolHash:Rt("protocol_hash").notNull(),result:Un("result"),finalizedAt:vo("finalized_at",{withTimezone:!0}),createdAt:vo("created_at",{withTimezone:!0}).defaultNow().notNull()},e=>[ui("performance_studies_protocol_unique").on(e.userId,e.evalTargetId,e.protocolHash)]),ce=Gn("performance_study_calls",{id:Re("id").primaryKey().defaultRandom(),studyId:Re("study_id").notNull().references(()=>T.id,{onDelete:"cascade"}),jobId:Re("job_id").notNull().references(()=>K.id,{onDelete:"cascade"}),taskId:Rt("task_id").notNull(),arm:Rt("arm").notNull(),repetition:li("repetition").notNull(),reservedAt:vo("reserved_at",{withTimezone:!0}).defaultNow().notNull()},e=>[ci("performance_study_calls_study_id_task_id_arm_repetition_key").on(e.studyId,e.taskId,e.arm,e.repetition)]);var Ye=$n("scoped_live_confirmations",{id:_e("id").primaryKey().defaultRandom(),userId:_e("user_id").notNull(),experimentId:_e("experiment_id").notNull().references(()=>ue.id,{onDelete:"cascade"}),sourceStudyId:_e("source_study_id").references(()=>T.id,{onDelete:"restrict"}),protocol:Je("protocol").notNull(),protocolHash:A("protocol_hash").notNull(),salt:A("salt").notNull(),status:A("status").notNull().default("running"),decision:A("decision"),decisionDetail:Je("decision_detail"),startedAt:Qe("started_at",{withTimezone:!0}).notNull().defaultNow(),endedAt:Qe("ended_at",{withTimezone:!0})},e=>[_i("scoped_live_confirmations_experiment_unique").on(e.experimentId),Fn("scoped_live_confirmations_user_status").on(e.userId,e.status)]),kt=$n("scoped_live_confirmation_assignments",{id:_e("id").primaryKey().defaultRandom(),confirmationId:_e("confirmation_id").notNull().references(()=>Ye.id,{onDelete:"cascade"}),userId:_e("user_id").notNull(),taskId:A("task_id").notNull(),externalSessionId:A("external_session_id").notNull(),arm:A("arm").notNull(),phase:A("phase").notNull().default("trial"),model:A("model").notNull(),configurationHash:A("configuration_hash").notNull(),enrollmentEvidence:Je("enrollment_evidence"),taskEvidence:Je("task_evidence"),assignedAt:Qe("assigned_at",{withTimezone:!0}).notNull().defaultNow(),deliveryHash:A("delivery_hash"),deliveredAt:Qe("delivered_at",{withTimezone:!0}),outcome:A("outcome"),outcomeDetail:Je("outcome_detail"),outcomeAt:Qe("outcome_at",{withTimezone:!0})},e=>[Vn("scoped_live_confirmation_task_unique").on(e.confirmationId,e.taskId),Vn("scoped_live_confirmation_session_unique").on(e.confirmationId,e.externalSessionId),Fn("scoped_live_confirmation_assignments_confirmation_arm").on(e.confirmationId,e.arm)]);import{pgTable as mi,text as Io,timestamp as pi,uuid as Et,numeric as yo,integer as Jn,jsonb as fi,index as Ni,unique as xi}from"drizzle-orm/pg-core";var Qn=mi("instruction_verdicts",{id:Et("id").primaryKey().defaultRandom(),userId:Et("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),instructionId:Et("instruction_id").notNull().references(()=>n.id,{onDelete:"cascade"}),contentHash:Io("content_hash").notNull(),projectPath:Io("project_path").notNull(),segment:fi("segment").notNull().default({}),decision:Io("decision").notNull(),delta:yo("delta").notNull(),ciLower:yo("ci_lower").notNull(),ciUpper:yo("ci_upper").notNull(),nTreated:Jn("n_treated").notNull(),nControl:Jn("n_control").notNull(),experimentId:Et("experiment_id").references(()=>ue.id,{onDelete:"set null"}),decidedAt:pi("decided_at",{withTimezone:!0}).notNull().defaultNow()},e=>[xi("instruction_verdicts_unique").on(e.instructionId,e.contentHash,e.projectPath),Ni("idx_instruction_verdicts_render").on(e.userId,e.projectPath)]);import{pgTable as hi,text as St,timestamp as wo,uuid as To,integer as gi,unique as vi,index as Ii}from"drizzle-orm/pg-core";var Yn=hi("insight_recommendation_log",{id:To("id").primaryKey().defaultRandom(),userId:To("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),projectPath:St("project_path").notNull().default(""),category:St("category").notNull(),contentHash:St("content_hash").notNull(),label:St("label").notNull().default(""),firstSeenAt:wo("first_seen_at",{withTimezone:!0}).notNull().defaultNow(),lastSeenAt:wo("last_seen_at",{withTimezone:!0}).notNull().defaultNow(),timesGenerated:gi("times_generated").notNull().default(1),lastJobId:To("last_job_id"),dismissedAt:wo("dismissed_at",{withTimezone:!0})},e=>[vi("insight_recommendation_log_unique").on(e.userId,e.projectPath,e.contentHash),Ii("idx_insight_recommendation_log_read").on(e.userId,e.projectPath)]);import{pgTable as yi,text as ke,timestamp as Ao,uuid as We,integer as Wn,index as bt}from"drizzle-orm/pg-core";var D=yi("memories",{id:We("id").primaryKey().defaultRandom(),userId:We("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),orgId:We("org_id"),projectId:We("project_id").references(()=>s.id,{onDelete:"set null"}),version:Wn("version").notNull().default(1),parentId:We("parent_id").references(()=>D.id,{onDelete:"set null"}),kind:ke("kind").notNull(),title:ke("title").notNull(),body:ke("body").notNull(),source:ke("source").notNull(),status:ke("status").notNull().default("active"),trustClass:ke("trust_class"),trustVersion:Wn("trust_version"),trustComputedAt:Ao("trust_computed_at",{withTimezone:!0}),createdAt:Ao("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:Ao("updated_at",{withTimezone:!0}).notNull().defaultNow()},e=>[bt("idx_memories_user").on(e.userId),bt("idx_memories_project").on(e.projectId),bt("idx_memories_parent").on(e.parentId),bt("idx_memories_user_status").on(e.userId,e.status)]);import{pgTable as wi,text as me,timestamp as Do,uuid as zo,integer as Xn,jsonb as Ti,index as Zn}from"drizzle-orm/pg-core";var er=wi("memory_experiments",{id:zo("id").primaryKey().defaultRandom(),memoryId:zo("memory_id").notNull().references(()=>D.id,{onDelete:"cascade"}),userId:zo("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),memoryVersion:Xn("memory_version").notNull().default(1),memoryBody:me("memory_body"),taskPrompt:me("task_prompt").notNull(),expectations:me("expectations").array().notNull().default([]),trials:Xn("trials").notNull().default(10),model:me("model"),engine:me("engine").$type().notNull().default("claude"),status:me("status").notNull().default("pending"),result:Ti("result").$type(),error:me("error"),createdAt:Do("created_at",{withTimezone:!0}).notNull().defaultNow(),startedAt:Do("started_at",{withTimezone:!0}),completedAt:Do("completed_at",{withTimezone:!0})},e=>[Zn("idx_memory_experiments_memory").on(e.memoryId),Zn("idx_memory_experiments_user").on(e.userId)]);import{pgTable as Ai,text as Ee,timestamp as jo,uuid as Ro,jsonb as Di,uniqueIndex as zi,index as tr}from"drizzle-orm/pg-core";var Pt=Ai("session_terminal_targets",{id:Ro("id").primaryKey().defaultRandom(),userId:Ro("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),sessionId:Ro("session_id").references(()=>a.id,{onDelete:"set null"}),externalSessionId:Ee("external_session_id"),kind:Ee("kind").notNull(),target:Ee("target").notNull(),status:Ee("status").notNull().default("active"),attachCommand:Ee("attach_command").notNull(),projectPath:Ee("project_path"),metadata:Di("metadata").notNull().default({}),lastSeenAt:jo("last_seen_at",{withTimezone:!0}).defaultNow(),createdAt:jo("created_at",{withTimezone:!0}).defaultNow(),updatedAt:jo("updated_at",{withTimezone:!0}).defaultNow()},e=>[zi("idx_session_terminal_targets_user_target").on(e.userId,e.target),tr("idx_session_terminal_targets_session").on(e.sessionId),tr("idx_session_terminal_targets_user_status").on(e.userId,e.status)]);import{boolean as ji,index as Kt,jsonb as or,pgTable as Ri,text as pe,timestamp as Xe,uuid as Ct,integer as ko}from"drizzle-orm/pg-core";var nr=Ri("session_send_jobs",{id:Ct("id").primaryKey().defaultRandom(),userId:Ct("user_id").notNull(),sessionId:Ct("session_id").notNull().references(()=>a.id,{onDelete:"cascade"}),terminalTargetId:Ct("terminal_target_id").references(()=>Pt.id,{onDelete:"set null"}),target:pe("target").notNull(),message:pe("message").notNull(),submit:ji("submit").notNull().default(!0),delivery:pe("delivery").notNull().default("live"),status:pe("status").notNull().default("pending"),result:or("result"),error:pe("error"),attempts:ko("attempts").notNull().default(0),taskKind:pe("task_kind"),payload:or("payload"),claimedBy:pe("claimed_by"),claimedAt:Xe("claimed_at",{withTimezone:!0}),leaseExpiresAt:Xe("lease_expires_at",{withTimezone:!0}),leaseRecoveries:ko("lease_recoveries").notNull().default(0),hostSuspendRecoveries:ko("host_suspend_recoveries").notNull().default(0),createdAt:Xe("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Xe("updated_at",{withTimezone:!0}).defaultNow(),completedAt:Xe("completed_at",{withTimezone:!0})},e=>[Kt("idx_session_send_jobs_user").on(e.userId),Kt("idx_session_send_jobs_session").on(e.sessionId),Kt("idx_session_send_jobs_status").on(e.status),Kt("idx_session_send_jobs_pending").on(e.userId,e.status)]);import{pgTable as sr,text as fe,timestamp as qt,jsonb as ir,uuid as W,integer as ki,boolean as Ei,uniqueIndex as Si,index as rr,primaryKey as bi}from"drizzle-orm/pg-core";var j=sr("packs",{id:W("id").primaryKey().defaultRandom(),name:fe("name").notNull(),description:fe("description").notNull(),scope:fe("scope").notNull(),scopeRef:W("scope_ref"),version:fe("version").notNull().default("1.0.0"),tags:fe("tags").array(),badge:fe("badge"),metadata:ir("metadata"),createdBy:W("created_by"),createdAt:qt("created_at",{withTimezone:!0}).defaultNow(),updatedAt:qt("updated_at",{withTimezone:!0}).defaultNow(),archived:Ei("archived").default(!1),archivedAt:qt("archived_at",{withTimezone:!0}),archivedBy:W("archived_by"),forkedFromId:W("forked_from_id").references(()=>j.id,{onDelete:"set null"}),upstreamVersion:fe("upstream_version")},e=>[Si("packs_name_scope_ref_idx").on(e.name,e.scope,e.scopeRef),rr("idx_packs_scope").on(e.scope,e.scopeRef),rr("idx_packs_created_by").on(e.createdBy)]),X=sr("pack_instructions",{packId:W("pack_id").references(()=>j.id,{onDelete:"cascade"}).notNull(),instructionId:W("instruction_id").references(()=>n.id,{onDelete:"cascade"}).notNull(),position:ki("position").notNull().default(0),slotOverrides:ir("slot_overrides"),addedAt:qt("added_at",{withTimezone:!0}).defaultNow(),addedBy:W("added_by")},e=>[bi({columns:[e.packId,e.instructionId]})]);import{pgTable as Pi,text as Eo,timestamp as Ki,jsonb as Ci,uuid as So,index as Se}from"drizzle-orm/pg-core";var be=Pi("instruction_usage_events",{id:So("id").primaryKey().defaultRandom(),instructionId:So("instruction_id").references(()=>n.id,{onDelete:"set null"}),userId:So("user_id").notNull(),surface:Eo("surface").notNull(),action:Eo("action").notNull(),metadata:Ci("metadata"),traceId:Eo("trace_id"),createdAt:Ki("created_at",{withTimezone:!0}).defaultNow()},e=>[Se("idx_usage_events_instruction").on(e.instructionId),Se("idx_usage_events_user").on(e.userId),Se("idx_usage_events_surface").on(e.surface),Se("idx_usage_events_action").on(e.action),Se("idx_usage_events_created_at").on(e.createdAt),Se("idx_usage_events_user_created").on(e.userId,e.createdAt)]);import{pgTable as qi,text as Ot,timestamp as Lt,jsonb as Oi,uuid as ar,index as bo}from"drizzle-orm/pg-core";var dr=qi("worker_connections",{id:ar("id").primaryKey().defaultRandom(),userId:ar("user_id").notNull(),workerType:Ot("worker_type").notNull().default("mcp"),clientName:Ot("client_name").notNull(),clientVersion:Ot("client_version"),workerVersion:Ot("worker_version"),lastHeartbeat:Lt("last_heartbeat",{withTimezone:!0}).notNull().defaultNow(),presenceGapStartedAt:Lt("presence_gap_started_at",{withTimezone:!0}),presenceGapEndedAt:Lt("presence_gap_ended_at",{withTimezone:!0}),connectedAt:Lt("connected_at",{withTimezone:!0}).notNull().defaultNow(),metadata:Oi("metadata")},e=>[bo("idx_worker_connections_user").on(e.userId),bo("idx_worker_connections_heartbeat").on(e.userId,e.lastHeartbeat),bo("idx_worker_connections_type").on(e.userId,e.workerType)]);import{pgTable as Li,text as Mt,timestamp as Mi,jsonb as Hi,uuid as ur,index as lr}from"drizzle-orm/pg-core";var cr=Li("cli_setup_events",{id:ur("id").primaryKey().defaultRandom(),userId:ur("user_id").notNull(),deviceId:Mt("device_id").notNull(),event:Mt("event").notNull(),cliVersion:Mt("cli_version"),os:Mt("os"),props:Hi("props").notNull().default({}),createdAt:Mi("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[lr("idx_cli_setup_events_user").on(e.userId,e.createdAt),lr("idx_cli_setup_events_device").on(e.deviceId,e.createdAt)]);import{pgTable as Bi,text as Ne,integer as Ui,boolean as Gi,timestamp as Vi,jsonb as Fi,uuid as $i,index as _r}from"drizzle-orm/pg-core";var mr=Bi("cli_error_events",{id:$i("id").primaryKey().defaultRandom(),deviceId:Ne("device_id"),event:Ne("event").notNull(),command:Ne("command"),statusCode:Ui("status_code"),message:Ne("message"),cliVersion:Ne("cli_version"),os:Ne("os"),nodeVersion:Ne("node_version"),proxied:Gi("proxied"),props:Fi("props").notNull().default({}),createdAt:Vi("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[_r("idx_cli_error_events_created").on(e.createdAt),_r("idx_cli_error_events_device").on(e.deviceId,e.createdAt)]);import{sql as Po}from"drizzle-orm";import{pgTable as Ji,text as U,timestamp as Qi,jsonb as Ht,uuid as Bt,boolean as Yi,index as Ze,uniqueIndex as Wi}from"drizzle-orm/pg-core";var pr=Ji("instruction_promotions",{id:Bt("id").primaryKey().defaultRandom(),userId:Bt("user_id").notNull(),evalTargetId:Bt("eval_target_id").notNull().references(()=>r.id,{onDelete:"cascade"}),instructionId:Bt("instruction_id").references(()=>n.id,{onDelete:"set null"}),fromContentHash:U("from_content_hash").notNull(),toContentHash:U("to_content_hash").notNull(),fromContent:U("from_content").notNull(),toContent:U("to_content").notNull(),proposalSource:U("proposal_source").notNull(),proposalRationale:U("proposal_rationale").notNull().default(""),decision:U("decision").notNull(),applied:Yi("applied").notNull().default(!1),refusals:Ht("refusals").notNull().default([]),rationale:U("rationale").notNull().default(""),effectClass:U("effect_class").notNull(),verdict:Ht("verdict").notNull().default({}),gates:Ht("gates").notNull().default({}),touchedSections:Ht("touched_sections").notNull().default([]),createdAt:Qi("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Ze("idx_instruction_promotions_budget").on(e.evalTargetId,e.createdAt.desc()).where(Po`${e.applied}`),Ze("idx_instruction_promotions_target").on(e.evalTargetId,e.createdAt.desc()),Ze("idx_instruction_promotions_user").on(e.userId,e.createdAt.desc()),Ze("idx_instruction_promotions_to_hash").on(e.toContentHash),Wi("uq_instruction_promotions_applied").on(e.evalTargetId,e.fromContentHash,e.toContentHash).where(Po`${e.applied}`),Ze("idx_instruction_promotions_applied_hash").on(e.toContentHash,e.createdAt.desc()).where(Po`${e.applied}`)]);import{index as et,integer as Xi,jsonb as Zi,pgTable as ea,text as y,timestamp as Pe,uniqueIndex as ta,uuid as Z}from"drizzle-orm/pg-core";var fr=ea("recommendation_applications",{id:Z("id").primaryKey().defaultRandom(),userId:Z("user_id").notNull(),instructionId:Z("instruction_id").notNull().references(()=>n.id,{onDelete:"cascade"}),projectId:Z("project_id").references(()=>s.id,{onDelete:"set null"}),projectPath:y("project_path").notNull(),harness:y("harness").notNull(),targetPath:y("target_path").notNull(),status:y("status").notNull().default("proposed"),applyMode:y("apply_mode").notNull(),beforeHash:y("before_hash"),appliedHash:y("applied_hash"),appliedAt:Pe("applied_at",{withTimezone:!0}),measurementStartedAt:Pe("measurement_started_at",{withTimezone:!0}),measurementEndedAt:Pe("measurement_ended_at",{withTimezone:!0}),verdict:y("verdict"),verdictDetail:y("verdict_detail"),revertedAt:Pe("reverted_at",{withTimezone:!0}),sourceStudyId:Z("source_study_id").references(()=>T.id,{onDelete:"restrict"}),scopedConfirmationId:Z("scoped_confirmation_id").references(()=>Ye.id,{onDelete:"restrict"}),scopedConfirmationAssignmentId:Z("scoped_confirmation_assignment_id").references(()=>kt.id,{onDelete:"restrict"}),boundaryClass:y("boundary_class"),targets:y("targets").array().notNull().default([]),inverse:Zi("inverse"),requires:y("requires").array().notNull().default([]),provides:y("provides").array().notNull().default([]),applyBatchId:Z("apply_batch_id"),applySeq:Xi("apply_seq"),createdAt:Pe("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:Pe("updated_at",{withTimezone:!0}).notNull().defaultNow()},e=>[ta("uq_recommendation_applications_target").on(e.userId,e.instructionId,e.projectPath,e.harness,e.targetPath),et("idx_recommendation_applications_user_status").on(e.userId,e.status,e.updatedAt.desc()),et("idx_recommendation_applications_user_harness").on(e.userId,e.harness,e.updatedAt.desc()),et("idx_recommendation_applications_project").on(e.projectId,e.updatedAt.desc()),et("idx_recommendation_applications_batch").on(e.userId,e.applyBatchId,e.applySeq.desc()),et("idx_recommendation_applications_requires").using("gin",e.requires)]);import{pgTable as oa,text as C,timestamp as Nr,jsonb as tt,uuid as Ko,integer as Ke,real as na,index as ee,uniqueIndex as xr}from"drizzle-orm/pg-core";import{sql as Co}from"drizzle-orm";var te=oa("context_snapshots",{id:Ko("id").primaryKey().defaultRandom(),sessionId:Ko("session_id").references(()=>a.id,{onDelete:"cascade"}),userId:Ko("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),sequence:Ke("sequence").notNull().default(0),provider:C("provider").notNull(),model:C("model").notNull(),systemPrompt:C("system_prompt").notNull(),injectedInstructions:tt("injected_instructions").notNull().default([]),messagesSummary:tt("messages_summary").notNull(),tools:tt("tools").notNull().default([]),systemHash:C("system_hash").notNull(),requestHash:C("request_hash").notNull().default(""),toolsHash:C("tools_hash"),injectedHash:C("injected_hash"),messagesDelta:tt("messages_delta").default([]),messagesDeltaRef:C("messages_delta_ref"),messagesBaseLength:Ke("messages_base_length"),payloadPrunedAt:Nr("payload_pruned_at",{withTimezone:!0}),deltaOffloadState:C("delta_offload_state").notNull().default("inline"),deltaGzipBytes:Ke("delta_gzip_bytes"),deltaOffloadError:C("delta_offload_error"),deltaOffloadAttempts:Ke("delta_offload_attempts").notNull().default(0),maxTokens:Ke("max_tokens"),temperature:na("temperature"),estimatedTokens:Ke("estimated_tokens"),capturedAt:Nr("captured_at",{withTimezone:!0}).notNull().defaultNow(),metadata:tt("metadata").default({})},e=>[ee("idx_context_snapshots_session").on(e.sessionId),ee("idx_context_snapshots_user").on(e.userId),ee("idx_context_snapshots_hash").on(e.systemHash),ee("idx_context_snapshots_request_hash").on(e.requestHash),xr("idx_snapshots_session_request").on(e.sessionId,e.requestHash),xr("idx_snapshots_session_sequence").on(e.sessionId,e.sequence),ee("idx_context_snapshots_user_session_captured").on(e.userId,e.sessionId,e.capturedAt.desc()),ee("idx_snapshots_unpruned_captured").on(e.capturedAt,e.id).where(Co`${e.payloadPrunedAt} is null`),ee("idx_snapshots_pending_offload").on(e.deltaOffloadState,e.capturedAt,e.id).where(Co`${e.deltaOffloadState} = 'pending'`),ee("idx_snapshots_delta_ref").on(e.messagesDeltaRef).where(Co`${e.messagesDeltaRef} is not null`)]);import{pgTable as ra,text as hr,timestamp as gr,jsonb as sa,integer as ia,index as aa}from"drizzle-orm/pg-core";var vr=ra("content_blobs",{hash:hr("hash").primaryKey(),contentType:hr("content_type").notNull(),content:sa("content").notNull(),sizeBytes:ia("size_bytes").notNull().default(0),createdAt:gr("created_at",{withTimezone:!0}).defaultNow(),lastReferencedAt:gr("last_referenced_at",{withTimezone:!0}).notNull().defaultNow()},e=>[aa("idx_content_blobs_type").on(e.contentType)]);import{integer as Ir,jsonb as da,pgTable as ua,timestamp as la,uuid as ca}from"drizzle-orm/pg-core";var yr=ua("session_capture_heads",{sessionId:ca("session_id").primaryKey().references(()=>a.id,{onDelete:"cascade"}),sequence:Ir("sequence").notNull(),rawMessageHashes:da("raw_message_hashes").notNull().$type(),version:Ir("version").notNull(),updatedAt:la("updated_at",{withTimezone:!0}).notNull().defaultNow()});import{index as _a,integer as wr,pgTable as ma,text as qo,timestamp as Tr,uniqueIndex as pa,uuid as fa}from"drizzle-orm/pg-core";import{sql as Na}from"drizzle-orm";var Ar=ma("snapshot_delta_objects",{ref:qo("ref").primaryKey(),snapshotId:fa("snapshot_id"),compressedBytes:wr("compressed_bytes").notNull(),state:qo("state").notNull(),createdAt:Tr("created_at",{withTimezone:!0}).notNull().defaultNow(),lastAttemptAt:Tr("last_attempt_at",{withTimezone:!0}),attempts:wr("attempts").notNull().default(0),lastError:qo("last_error")},e=>[_a("idx_snapshot_delta_objects_state_created").on(e.state,e.createdAt),pa("snapshot_delta_objects_snapshot_id_unique").on(e.snapshotId).where(Na`${e.snapshotId} is not null`)]);import{pgTable as xa,text as ot,timestamp as nt,jsonb as Dr,uuid as zr,integer as Oo,index as jr}from"drizzle-orm/pg-core";var Rr=xa("agent_jobs",{id:zr("id").primaryKey().defaultRandom(),userId:zr("user_id").notNull(),taskKind:ot("task_kind").notNull(),status:ot("status").notNull().default("pending"),payload:Dr("payload").notNull(),dedupeKey:ot("dedupe_key"),result:Dr("result"),error:ot("error"),attempts:Oo("attempts").notNull().default(0),claimedBy:ot("claimed_by"),claimedAt:nt("claimed_at",{withTimezone:!0}),leaseExpiresAt:nt("lease_expires_at",{withTimezone:!0}),leaseRecoveries:Oo("lease_recoveries").notNull().default(0),hostSuspendRecoveries:Oo("host_suspend_recoveries").notNull().default(0),createdAt:nt("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:nt("updated_at",{withTimezone:!0}).notNull().defaultNow(),completedAt:nt("completed_at",{withTimezone:!0})},e=>[jr("idx_agent_jobs_claim").on(e.userId,e.status,e.taskKind,e.createdAt),jr("idx_agent_jobs_dedupe").on(e.userId,e.taskKind,e.dedupeKey)]);import{pgTable as ha,text as rt,timestamp as st,jsonb as Ut,uuid as Lo,index as Gt,integer as Mo}from"drizzle-orm/pg-core";var kr=ha("insights_jobs",{id:Lo("id").primaryKey().defaultRandom(),userId:Lo("user_id").notNull(),status:rt("status").notNull().default("pending"),projectPath:rt("project_path"),projectId:Lo("project_id").references(()=>s.id,{onDelete:"set null"}),config:Ut("config").notNull().default({}),progress:Ut("progress").notNull().default({}),result:Ut("result"),error:rt("error"),attempts:Mo("attempts").notNull().default(0),taskKind:rt("task_kind"),payload:Ut("payload"),claimedBy:rt("claimed_by"),claimedAt:st("claimed_at",{withTimezone:!0}),leaseExpiresAt:st("lease_expires_at",{withTimezone:!0}),leaseRecoveries:Mo("lease_recoveries").notNull().default(0),hostSuspendRecoveries:Mo("host_suspend_recoveries").notNull().default(0),createdAt:st("created_at",{withTimezone:!0}).defaultNow(),updatedAt:st("updated_at",{withTimezone:!0}).defaultNow(),completedAt:st("completed_at",{withTimezone:!0})},e=>[Gt("idx_insights_jobs_user").on(e.userId),Gt("idx_insights_jobs_status").on(e.status),Gt("idx_insights_jobs_pending").on(e.userId,e.status),Gt("idx_insights_jobs_project").on(e.projectId)]);import{pgTable as ga,text as Ho,timestamp as Vt,uuid as Er,index as va,uniqueIndex as Ia}from"drizzle-orm/pg-core";var Ce=ga("api_keys",{id:Er("id").primaryKey().defaultRandom(),userId:Er("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),name:Ho("name").notNull(),keyHash:Ho("key_hash").notNull(),keyPrefix:Ho("key_prefix").notNull(),lastUsedAt:Vt("last_used_at",{withTimezone:!0}),expiresAt:Vt("expires_at",{withTimezone:!0}),revokedAt:Vt("revoked_at",{withTimezone:!0}),createdAt:Vt("created_at",{withTimezone:!0}).defaultNow()},e=>[va("idx_api_keys_user").on(e.userId),Ia("idx_api_keys_hash").on(e.keyHash)]);import{pgTable as ya,text as Bo,timestamp as Sr,uuid as wa,index as Ta}from"drizzle-orm/pg-core";var br=ya("extension_auth_codes",{code:Bo("code").primaryKey(),userId:wa("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),editor:Bo("editor"),email:Bo("email"),expiresAt:Sr("expires_at",{withTimezone:!0}).notNull(),createdAt:Sr("created_at",{withTimezone:!0}).defaultNow()},e=>[Ta("idx_ext_auth_codes_expiry").on(e.expiresAt)]);import{pgTable as Aa,text as Da,timestamp as Pr,jsonb as za,uuid as Uo,index as Kr}from"drizzle-orm/pg-core";var qe=Aa("eval_conversations",{id:Uo("id").primaryKey().defaultRandom(),evalTargetId:Uo("eval_target_id").notNull().references(()=>r.id,{onDelete:"cascade"}),userId:Uo("user_id").notNull(),messages:za("messages").notNull().default([]),status:Da("status").notNull().default("active"),createdAt:Pr("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Pr("updated_at",{withTimezone:!0}).defaultNow()},e=>[Kr("idx_eval_conversations_target").on(e.evalTargetId),Kr("idx_eval_conversations_user").on(e.userId)]);import{pgTable as ja,text as G,timestamp as Cr,jsonb as Ra,uuid as Go}from"drizzle-orm/pg-core";var qr=ja("skill_submissions",{id:Go("id").primaryKey().defaultRandom(),skillId:G("skill_id").notNull(),name:G("name").notNull(),description:G("description").notNull(),category:G("category").notNull(),tools:G("tools").array().notNull(),tags:G("tags").array().default([]),content:G("content").notNull(),status:G("status").notNull().default("pending"),submittedBy:Go("submitted_by").notNull(),reviewedBy:Go("reviewed_by"),reviewNote:G("review_note"),metadata:Ra("metadata"),createdAt:Cr("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Cr("updated_at",{withTimezone:!0}).defaultNow()});import{pgTable as ka,text as it,timestamp as Or,jsonb as Ea,uuid as Sa,uniqueIndex as ba,index as Lr}from"drizzle-orm/pg-core";var Mr=ka("harness_releases",{id:Sa("id").primaryKey().defaultRandom(),harness:it("harness").notNull(),version:it("version").notNull(),publishedAt:Or("published_at",{withTimezone:!0}).notNull(),title:it("title"),body:it("body"),categories:Ea("categories").default({}),url:it("url"),createdAt:Or("created_at",{withTimezone:!0}).defaultNow()},e=>[ba("idx_harness_releases_unique").on(e.harness,e.version),Lr("idx_harness_releases_harness").on(e.harness),Lr("idx_harness_releases_published").on(e.publishedAt)]);import{pgTable as Pa,text as Oe,timestamp as Hr,jsonb as Ka,uuid as Br,index as Ur,uniqueIndex as Ca}from"drizzle-orm/pg-core";var Vo=Pa("notifications",{id:Br("id").primaryKey().defaultRandom(),userId:Br("user_id").notNull(),type:Oe("type").notNull(),title:Oe("title").notNull(),body:Oe("body"),url:Oe("url"),sourceTable:Oe("source_table"),sourceId:Oe("source_id"),metadata:Ka("metadata").notNull().default({}),readAt:Hr("read_at",{withTimezone:!0}),createdAt:Hr("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Ur("idx_notifications_user_created").on(e.userId,e.createdAt),Ur("idx_notifications_user_unread").on(e.userId),Ca("idx_notifications_source_dedup").on(e.userId,e.sourceTable,e.sourceId)]);import{pgTable as qa,text as at,timestamp as dt,jsonb as Fo,uuid as $o,index as Ft,integer as Jo}from"drizzle-orm/pg-core";var Le=qa("launch_jobs",{id:$o("id").primaryKey().defaultRandom(),userId:$o("user_id").notNull(),tool:at("tool").notNull(),status:at("status").notNull().default("pending"),config:Fo("config").notNull().default({}),result:Fo("result"),error:at("error"),attempts:Jo("attempts").notNull().default(0),taskKind:at("task_kind"),payload:Fo("payload"),claimedBy:at("claimed_by"),claimedAt:dt("claimed_at",{withTimezone:!0}),leaseExpiresAt:dt("lease_expires_at",{withTimezone:!0}),leaseRecoveries:Jo("lease_recoveries").notNull().default(0),hostSuspendRecoveries:Jo("host_suspend_recoveries").notNull().default(0),createdAt:dt("created_at",{withTimezone:!0}).defaultNow(),updatedAt:dt("updated_at",{withTimezone:!0}).defaultNow(),completedAt:dt("completed_at",{withTimezone:!0}),runId:$o("run_id").references(()=>h.id,{onDelete:"set null"})},e=>[Ft("idx_launch_jobs_user").on(e.userId),Ft("idx_launch_jobs_status").on(e.status),Ft("idx_launch_jobs_pending").on(e.userId,e.status),Ft("idx_launch_jobs_run").on(e.runId)]);import{pgTable as Gr,uuid as V,text as oe,real as Oa,timestamp as ut,boolean as La,uniqueIndex as Ma,index as lt}from"drizzle-orm/pg-core";var Vr=["add","remove","trim"],Qo=Gr("instruction_suggestions",{id:V("id").primaryKey().defaultRandom(),userId:V("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),instructionId:V("instruction_id").notNull().references(()=>n.id,{onDelete:"cascade"}),projectPath:oe("project_path").notNull(),projectId:V("project_id").references(()=>s.id,{onDelete:"set null"}),score:Oa("score").notNull(),reason:oe("reason").notNull(),kind:oe("kind").$type().notNull().default("add"),generatedAt:ut("generated_at",{withTimezone:!0}).notNull().defaultNow(),isStale:La("is_stale").notNull().default(!1),dismissedAt:ut("dismissed_at",{withTimezone:!0}),acceptedAt:ut("accepted_at",{withTimezone:!0}),declinedAt:ut("declined_at",{withTimezone:!0}),declinedReason:oe("declined_reason"),promotedToInstructionId:V("promoted_to_instruction_id").references(()=>n.id,{onDelete:"set null"})},e=>[Ma("idx_instruction_suggestions_user_project_instruction_kind").on(e.userId,e.projectPath,e.instructionId,e.kind),lt("idx_instruction_suggestions_user_project").on(e.userId,e.projectPath),lt("idx_instruction_suggestions_user_proj_id").on(e.userId,e.projectId),lt("idx_instruction_suggestions_generated_at").on(e.generatedAt)]),Fr=Gr("instruction_suggestion_events",{id:V("id").primaryKey().defaultRandom(),suggestionId:V("suggestion_id").notNull().references(()=>Qo.id,{onDelete:"cascade"}),userId:V("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),eventType:oe("event_type").notNull(),tool:oe("tool"),sessionId:V("session_id"),projectPath:oe("project_path").notNull(),actor:oe("actor"),createdAt:ut("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[lt("idx_instruction_suggestion_events_suggestion_id").on(e.suggestionId),lt("idx_instruction_suggestion_events_user_id").on(e.userId)]);import{pgTable as Ha,text as Yo,integer as Ba,numeric as ct,timestamp as Wo,index as Ua,primaryKey as Ga}from"drizzle-orm/pg-core";var $r=Ha("model_pricing",{provider:Yo("provider").notNull(),modelId:Yo("model_id").notNull(),inputPerM:ct("input_per_m").notNull(),outputPerM:ct("output_per_m").notNull(),cacheReadPerM:ct("cache_read_per_m").notNull(),cacheWrite5mPerM:ct("cache_write_5m_per_m").notNull(),cacheWrite1hPerM:ct("cache_write_1h_per_m").notNull(),contextWindow:Ba("context_window"),effectiveFrom:Wo("effective_from",{withTimezone:!0}).notNull(),effectiveUntil:Wo("effective_until",{withTimezone:!0}),source:Yo("source").notNull(),verifiedAt:Wo("verified_at",{withTimezone:!0})},e=>[Ga({columns:[e.provider,e.modelId,e.effectiveFrom]}),Ua("idx_model_pricing_active").on(e.provider,e.modelId,e.effectiveFrom.desc())]);import{pgTable as Va,text as xe,numeric as Jr,timestamp as Qr,uuid as Yr,jsonb as Fa,index as Wr}from"drizzle-orm/pg-core";var Xr=Va("limit_observations",{id:Yr("id").primaryKey().defaultRandom(),observedAt:Qr("observed_at",{withTimezone:!0}).notNull().defaultNow(),provider:xe("provider").notNull(),plan:xe("plan").notNull(),limitType:xe("limit_type").notNull(),value:Jr("value").notNull(),unit:xe("unit").notNull(),comparator:xe("comparator").notNull().default("="),resetsAt:Qr("resets_at",{withTimezone:!0}),sourceType:xe("source_type").notNull(),sourceUrl:xe("source_url"),sourceEvidence:Fa("source_evidence"),confidence:Jr("confidence").notNull(),userId:Yr("user_id")},e=>[Wr("idx_limit_obs_lookup").on(e.provider,e.plan,e.limitType,e.observedAt.desc()),Wr("idx_limit_obs_user").on(e.userId,e.observedAt.desc())]);import{pgTable as $a,text as $t,timestamp as Ja,uuid as Qa,jsonb as Ya,boolean as Wa,uniqueIndex as Xa}from"drizzle-orm/pg-core";var Zr=$a("provider_docs_snapshots",{id:Qa("id").primaryKey().defaultRandom(),fetchedAt:Ja("fetched_at",{withTimezone:!0}).notNull().defaultNow(),provider:$t("provider").notNull(),docUrl:$t("doc_url").notNull(),contentHash:$t("content_hash").notNull(),content:$t("content").notNull(),parseSuccess:Wa("parse_success").notNull(),parseErrors:Ya("parse_errors")},e=>[Xa("idx_docs_dedup").on(e.provider,e.docUrl,e.contentHash)]);import{pgTable as Za,text as Jt,numeric as es,timestamp as ts,uuid as ed,primaryKey as td,index as od}from"drizzle-orm/pg-core";var os=Za("plan_limits_active",{provider:Jt("provider").notNull(),plan:Jt("plan").notNull(),limitType:Jt("limit_type").notNull(),value:es("value").notNull(),unit:Jt("unit").notNull(),effectiveFrom:ts("effective_from",{withTimezone:!0}).notNull(),effectiveUntil:ts("effective_until",{withTimezone:!0}),confidence:es("confidence").notNull(),sourceObservationIds:ed("source_observation_ids").array().notNull()},e=>[td({columns:[e.provider,e.plan,e.limitType,e.effectiveFrom]}),od("idx_plan_limits_lookup").on(e.provider,e.plan,e.limitType,e.effectiveFrom.desc())]);import{pgTable as nd,text as Xo,timestamp as rd,uuid as ns,jsonb as sd,index as id}from"drizzle-orm/pg-core";var rs=nd("alert_dispatches",{id:ns("id").primaryKey().defaultRandom(),userId:ns("user_id").notNull(),alertKey:Xo("alert_key").notNull(),severity:Xo("severity").notNull(),lastDispatchedAt:rd("last_dispatched_at",{withTimezone:!0}).notNull().defaultNow(),lastState:sd("last_state").notNull(),channel:Xo("channel").notNull()},e=>[id("idx_alert_user_key").on(e.userId,e.alertKey,e.lastDispatchedAt.desc())]);import{date as ss,integer as Zo,pgTable as is,primaryKey as ad,text as dd,timestamp as en,uuid as ud}from"drizzle-orm/pg-core";var as=is("weekly_digest_deliveries",{userId:ud("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),weekStart:ss("week_start").notNull(),sentAt:en("sent_at",{withTimezone:!0}).notNull().defaultNow(),providerMessageId:dd("provider_message_id")},e=>[ad({columns:[e.userId,e.weekStart]})]),ds=is("weekly_digest_runs",{weekStart:ss("week_start").primaryKey(),startedAt:en("started_at",{withTimezone:!0}).notNull().defaultNow(),finishedAt:en("finished_at",{withTimezone:!0}),sent:Zo("sent"),skipped:Zo("skipped"),failed:Zo("failed")});import{pgTable as ld,text as tn,timestamp as us,uuid as on,integer as cd,index as _d,unique as md}from"drizzle-orm/pg-core";var ls=ld("scaffolding_fingerprints",{id:on("id").primaryKey().defaultRandom(),userId:on("user_id").notNull(),harness:tn("harness").notNull(),model:tn("model").notNull(),toolsHash:tn("tools_hash").notNull(),firstSeenAt:us("first_seen_at",{withTimezone:!0}).notNull().defaultNow(),lastSeenAt:us("last_seen_at",{withTimezone:!0}).notNull().defaultNow(),snapshotCount:cd("snapshot_count").notNull().default(1),firstSessionId:on("first_session_id")},e=>[md("scaffolding_fingerprints_user_id_harness_model_tools_hash_key").on(e.userId,e.harness,e.model,e.toolsHash),_d("idx_scaffolding_fp_segment").on(e.userId,e.harness,e.model)]);import{pgTable as pd,text as nn,timestamp as fd,jsonb as Nd,uuid as cs,integer as xd,unique as hd}from"drizzle-orm/pg-core";var _s=pd("scaffolding_segments",{id:cs("id").primaryKey().defaultRandom(),userId:cs("user_id").notNull(),harness:nn("harness").notNull(),model:nn("model").notNull(),coreNames:Nd("core_names").notNull(),coreHash:nn("core_hash").notNull(),activeFingerprints:xd("active_fingerprints").notNull(),computedAt:fd("computed_at",{withTimezone:!0}).notNull().defaultNow()},e=>[hd("scaffolding_segments_user_id_harness_model_key").on(e.userId,e.harness,e.model)]);import{pgTable as gd,text as ne,timestamp as ms,uuid as rn,uniqueIndex as vd,index as Id}from"drizzle-orm/pg-core";var ps=["blog","docs","changelog"],sn=gd("vendor_guidance_snapshots",{id:rn("id").primaryKey().defaultRandom(),fetchedAt:ms("fetched_at",{withTimezone:!0}).notNull().defaultNow(),sourceId:ne("source_id").notNull(),harness:ne("harness").notNull(),vendor:ne("vendor").notNull(),kind:ne("kind").$type().notNull(),url:ne("url").notNull(),title:ne("title").notNull(),contentHash:ne("content_hash").notNull(),text:ne("text").notNull(),previousSnapshotId:rn("previous_snapshot_id").references(()=>sn.id,{onDelete:"set null"}),pitchedAt:ms("pitched_at",{withTimezone:!0}),pitchInstructionId:rn("pitch_instruction_id").references(()=>n.id,{onDelete:"set null"})},e=>[vd("idx_vendor_guidance_dedup").on(e.sourceId,e.contentHash),Id("idx_vendor_guidance_source_fetched").on(e.sourceId,e.fetchedAt)]);import{drizzle as gs}from"drizzle-orm/postgres-js";import vs from"postgres";var Qt={};Cs(Qt,{GUIDANCE_KINDS:()=>ps,SUGGESTION_KINDS:()=>Vr,agentJobs:()=>Rr,agentRuns:()=>h,agentRunsRelations:()=>Cd,alertDispatches:()=>rs,announcementDeliveries:()=>hn,announcements:()=>xn,apiKeys:()=>Ce,apiKeysRelations:()=>wd,benchmarks:()=>je,benchmarksRelations:()=>Jd,cliErrorEvents:()=>mr,cliSetupEvents:()=>cr,contentBlobs:()=>vr,contextSnapshots:()=>te,contextSnapshotsRelations:()=>Wd,evalComparisons:()=>Mn,evalConversations:()=>qe,evalConversationsRelations:()=>Yd,evalGradeAnnotations:()=>Hn,evalJobs:()=>K,evalJobsRelations:()=>Qd,evalRuns:()=>P,evalRunsRelations:()=>$d,evalTargets:()=>r,evalTargetsRelations:()=>Vd,evals:()=>B,evalsRelations:()=>Fd,extensionAuthCodes:()=>br,harnessReleases:()=>Mr,insightRecommendationLog:()=>Yn,insightsJobs:()=>kr,instructionEvents:()=>we,instructionEventsRelations:()=>kd,instructionExperimentArms:()=>On,instructionExperiments:()=>ue,instructionPromotions:()=>pr,instructionSuggestionEvents:()=>Fr,instructionSuggestions:()=>Qo,instructionUsageEvents:()=>be,instructionUsageEventsRelations:()=>Gd,instructionVerdicts:()=>Qn,instructionVersionIdentities:()=>An,instructionVersions:()=>ye,instructionVersionsRelations:()=>Sd,instructions:()=>n,instructionsRelations:()=>Rd,judgeReviewerVerdicts:()=>Bn,launchJobs:()=>Le,launchJobsRelations:()=>qd,limitObservations:()=>Xr,memories:()=>D,memoriesRelations:()=>Ed,memoryExperiments:()=>er,modelPricing:()=>$r,notificationPreferences:()=>gn,notifications:()=>Vo,orgInvitations:()=>q,orgInvitationsRelations:()=>Dd,organizations:()=>l,organizationsRelations:()=>Td,packInstructions:()=>X,packInstructionsRelations:()=>Ud,packs:()=>j,packsRelations:()=>Bd,pendingTreatmentExposures:()=>Kn,performanceStudies:()=>T,performanceStudiesRelations:()=>Xd,performanceStudyCalls:()=>ce,performanceStudyCallsRelations:()=>Zd,planLimitsActive:()=>os,profiles:()=>o,profilesRelations:()=>yd,projectCheckouts:()=>jn,projectInstructions:()=>J,projectInstructionsRelations:()=>Pd,projects:()=>s,projectsRelations:()=>bd,providerDocsSnapshots:()=>Zr,recommendationApplications:()=>fr,scaffoldingFingerprints:()=>ls,scaffoldingSegments:()=>_s,scopedLiveConfirmationAssignments:()=>kt,scopedLiveConfirmations:()=>Ye,sessionCaptureHeads:()=>yr,sessionEvents:()=>Ae,sessionEventsRelations:()=>Od,sessionInstructions:()=>Q,sessionInstructionsRelations:()=>Ld,sessionSendJobs:()=>nr,sessionTerminalTargets:()=>Pt,sessions:()=>a,sessionsRelations:()=>Kd,skillSubmissions:()=>qr,snapshotDeltaObjects:()=>Ar,teams:()=>v,teamsRelations:()=>Ad,treatmentAssignments:()=>L,treatmentAssignmentsRelations:()=>Md,treatmentExposures:()=>M,treatmentExposuresRelations:()=>Hd,userOrganizations:()=>ve,userOrganizationsRelations:()=>zd,userTeams:()=>Ie,userTeamsRelations:()=>jd,vendorGuidanceSnapshots:()=>sn,weeklyDigestDeliveries:()=>as,weeklyDigestRuns:()=>ds,workerConnections:()=>dr});import{relations as i}from"drizzle-orm";var yd=i(o,({many:e})=>({sessions:e(a),contextSnapshots:e(te),apiKeys:e(Ce)})),wd=i(Ce,({one:e})=>({profile:e(o,{fields:[Ce.userId],references:[o.id]})})),Td=i(l,({many:e})=>({teams:e(v),userOrganizations:e(ve),projects:e(s),invitations:e(q)})),Ad=i(v,({one:e,many:t})=>({organization:e(l,{fields:[v.orgId],references:[l.id]}),userTeams:t(Ie),invitations:t(q)})),Dd=i(q,({one:e})=>({organization:e(l,{fields:[q.orgId],references:[l.id]}),team:e(v,{fields:[q.teamId],references:[v.id]}),inviter:e(o,{fields:[q.invitedBy],references:[o.id]})})),zd=i(ve,({one:e})=>({organization:e(l,{fields:[ve.orgId],references:[l.id]})})),jd=i(Ie,({one:e})=>({team:e(v,{fields:[Ie.teamId],references:[v.id]})})),Rd=i(n,({one:e,many:t})=>({versions:t(ye),projectInstructions:t(J),events:t(we),usageEvents:t(be),sessionInstructions:t(Q),packInstructions:t(X),forkedFrom:e(n,{fields:[n.forkedFromId],references:[n.id]})})),kd=i(we,({one:e})=>({instruction:e(n,{fields:[we.instructionId],references:[n.id]})})),Ed=i(D,({one:e,many:t})=>({project:e(s,{fields:[D.projectId],references:[s.id]}),parent:e(D,{fields:[D.parentId],references:[D.id]}),versions:t(D)})),Sd=i(ye,({one:e})=>({instruction:e(n,{fields:[ye.instructionId],references:[n.id]})})),bd=i(s,({one:e,many:t})=>({organization:e(l,{fields:[s.orgId],references:[l.id]}),projectInstructions:t(J),sessions:t(a)})),Pd=i(J,({one:e})=>({project:e(s,{fields:[J.projectId],references:[s.id]}),instruction:e(n,{fields:[J.instructionId],references:[n.id]})})),Kd=i(a,({one:e,many:t})=>({profile:e(o,{fields:[a.userId],references:[o.id]}),project:e(s,{fields:[a.projectId],references:[s.id]}),run:e(h,{fields:[a.runId],references:[h.id]}),events:t(Ae),sessionInstructions:t(Q),treatmentExposures:t(M),contextSnapshots:t(te)})),Cd=i(h,({one:e,many:t})=>({profile:e(o,{fields:[h.userId],references:[o.id]}),organization:e(l,{fields:[h.orgId],references:[l.id]}),project:e(s,{fields:[h.projectId],references:[s.id]}),sessions:t(a),launchJobs:t(Le)})),qd=i(Le,({one:e})=>({run:e(h,{fields:[Le.runId],references:[h.id]})})),Od=i(Ae,({one:e})=>({session:e(a,{fields:[Ae.sessionId],references:[a.id]})})),Ld=i(Q,({one:e})=>({session:e(a,{fields:[Q.sessionId],references:[a.id]}),instruction:e(n,{fields:[Q.instructionId],references:[n.id]})})),Md=i(L,({one:e,many:t})=>({owner:e(o,{fields:[L.userId],references:[o.id]}),project:e(s,{fields:[L.projectId],references:[s.id]}),exposures:t(M)})),Hd=i(M,({one:e})=>({session:e(a,{fields:[M.sessionId],references:[a.id]}),owner:e(o,{fields:[M.userId],references:[o.id]}),assignment:e(L,{fields:[M.assignmentId],references:[L.id]})})),Bd=i(j,({one:e,many:t})=>({packInstructions:t(X),forkedFrom:e(j,{fields:[j.forkedFromId],references:[j.id]})})),Ud=i(X,({one:e})=>({pack:e(j,{fields:[X.packId],references:[j.id]}),instruction:e(n,{fields:[X.instructionId],references:[n.id]})})),Gd=i(be,({one:e})=>({instruction:e(n,{fields:[be.instructionId],references:[n.id]})})),Vd=i(r,({one:e,many:t})=>({parent:e(r,{fields:[r.parentId],references:[r.id]}),evals:t(B),evalRuns:t(P),benchmarks:t(je),evalJobs:t(K),evalConversations:t(qe)})),Fd=i(B,({one:e,many:t})=>({evalTarget:e(r,{fields:[B.evalTargetId],references:[r.id]}),runs:t(P)})),$d=i(P,({one:e})=>({eval:e(B,{fields:[P.evalId],references:[B.id]}),evalTarget:e(r,{fields:[P.evalTargetId],references:[r.id]})})),Jd=i(je,({one:e})=>({evalTarget:e(r,{fields:[je.evalTargetId],references:[r.id]})})),Qd=i(K,({one:e})=>({evalTarget:e(r,{fields:[K.evalTargetId],references:[r.id]})})),Yd=i(qe,({one:e})=>({evalTarget:e(r,{fields:[qe.evalTargetId],references:[r.id]})})),Wd=i(te,({one:e})=>({session:e(a,{fields:[te.sessionId],references:[a.id]}),profile:e(o,{fields:[te.userId],references:[o.id]})})),Xd=i(T,({one:e,many:t})=>({target:e(r,{fields:[T.evalTargetId],references:[r.id]}),calls:t(ce)})),Zd=i(ce,({one:e})=>({study:e(T,{fields:[ce.studyId],references:[T.id]}),job:e(K,{fields:[ce.jobId],references:[K.id]})}));var _t=0,fs=0,mt=0,Ns=0;var eu=0;function an(){_t++,_t>fs&&(fs=_t)}p(an,"trackDbOpStart");function dn(){_t>0&&_t--}p(dn,"trackDbOpEnd");function un(){mt++,mt>Ns&&(Ns=mt)}p(un,"trackHeavyDbOpStart");function ln(){mt>0&&mt--}p(ln,"trackHeavyDbOpEnd");function xs(){eu++}p(xs,"recordQueryDeadline");var Wt,Zt,cn=!1,Yt;var hs,eo,Xt;function Is(e){let t=process.env[e];if(!t)throw new Error(`Missing required env var: ${e}`);return t}p(Is,"getEnv");function ys(){if(cn)throw new Error("getDb() called after closeDb(): the connection pool is closed for shutdown. Stop issuing queries (timers/requests) before draining the pool.");if(!Wt){let e=process.env.PG_APPLICATION_NAME||"rulemetric",t=Number(process.env.PG_POOL_MAX)||3,d=Number(process.env.PG_CONNECT_TIMEOUT_S)||10,u=Number(process.env.PG_STATEMENT_TIMEOUT_MS)||0,m=Number(process.env.PG_IDLE_TIMEOUT)||5,N=Number(process.env.PG_KEEP_ALIVE_S)||60;Zt=vs(Is("DATABASE_URL"),{prepare:!1,max:t,connect_timeout:d,idle_timeout:m,keep_alive:N,max_lifetime:300,connection:{application_name:e,...u>0?{statement_timeout:u}:{}}}),Wt=gs(Zt,{schema:Qt})}return Wt}p(ys,"getDb");function ws(){if(cn)throw new Error("getHeavyDb() called after closeDb(): the connection pool is closed for shutdown. Stop issuing queries (timers/requests) before draining the pool.");if(!Xt){let e=(process.env.PG_APPLICATION_NAME||"rulemetric")+":heavy",t=Number(process.env.PG_HEAVY_POOL_MAX)||2;eo=vs(Is("DATABASE_URL"),{prepare:!1,max:t,connect_timeout:Number(process.env.PG_CONNECT_TIMEOUT_S)||10,idle_timeout:Number(process.env.PG_IDLE_TIMEOUT)||5,keep_alive:Number(process.env.PG_KEEP_ALIVE_S)||60,max_lifetime:300,connection:{application_name:e}}),Xt=gs(eo,{schema:Qt})}return Xt}p(ws,"getHeavyDb");async function tu(){if(Yt)return Yt;cn=!0;let e=Zt,t=hs,d=eo;return Zt=void 0,Wt=void 0,hs=void 0,eo=void 0,Xt=void 0,Yt=Promise.allSettled([e?e.end({timeout:5}):Promise.resolve(),t?t.end({timeout:5}):Promise.resolve(),d?d.end({timeout:5}):Promise.resolve()]).then(()=>{}),Yt}p(tu,"closeDb");var ou=new Set(["CONNECT_TIMEOUT","ETIMEDOUT","ENOTFOUND","ECONNREFUSED","EAI_AGAIN"]);function Ts(e){let t=e,d=t?.code??t?.cause?.code??t?.errno;return d!==void 0&&ou.has(d)}p(Ts,"isRetryableConnectError");var nu=new Set(["CONNECTION_CLOSED","ECONNRESET","EPIPE"]);function As(e){let t=e,d=t?.code??t?.cause?.code??t?.errno;return d!==void 0&&nu.has(d)}p(As,"isRetryableResetError");async function Ds(e,t={}){let d=t.attempts??3,u=t.baseMs??100,m;for(let N=0;N<d;N++){t.signal?.throwIfAborted();try{return await e()}catch(R){m=R,t.signal?.throwIfAborted();let re=Ts(R)||t.retryResets===!0&&As(R);if(N===d-1||!re)throw R;await new Promise(k=>setTimeout(k,u*2**N))}}throw m}p(Ds,"withDbRetry");var to=class extends Error{static{p(this,"QueryDeadlineError")}code="QUERY_DEADLINE";constructor(t){super(`Query exceeded the client-side deadline of ${t}ms \u2014 possible slow execution, pool acquire-wait, or a stale socket; failing fast to avoid pinning the caller. See client.ts.`),this.name="QueryDeadlineError"}};function zs(){let e=Number(process.env.PG_QUERY_DEADLINE_MS);return Number.isFinite(e)&&e>=0?e:2e4}p(zs,"queryDeadlineMs");function js(){let e=Number(process.env.PG_HEAVY_QUERY_DEADLINE_MS);return Number.isFinite(e)&&e>=0?e:6e4}p(js,"heavyQueryDeadlineMs");function ru(e,t,d=!0,u){let m,N=new Promise((R,re)=>{m=setTimeout(()=>{d&&xs();let pt=new to(t);u?.(pt),re(pt)},t);let k=m;typeof k.unref=="function"&&k.unref()});return Promise.race([e,N]).finally(()=>clearTimeout(m))}p(ru,"raceWithDeadline");var Rs=new Set(["select","selectDistinct","selectDistinctOn","insert","update","delete","execute","with","$count","refreshMaterializedView"]),ks=new Set(["select","selectDistinct","selectDistinctOn","$count"]);function _n(e,t=!1,d=0,u=!1){return e===null||typeof e!="object"&&typeof e!="function"?e:new Proxy(e,{get(m,N,R){if(N==="then"){let k=Reflect.get(m,N,R);return typeof k!="function"?k:(pt,Ss)=>{let bs=u?un:an,Ps=u?ln:dn;bs();let pn=new AbortController,fn=Ds(()=>new Promise((oo,Ks)=>k.call(m,oo,Ks)),{retryResets:t,signal:pn.signal}).finally(Ps);return(d>0?ru(fn,d,!u,oo=>pn.abort(oo)):fn).then(pt,Ss)}}let re=Reflect.get(m,N,R);return typeof re=="function"?(...k)=>_n(re.apply(m,k),t,d,u):re}})}p(_n,"wrapBuilder");function Es(e,t=!1){let d=t?un:an,u=t?ln:dn;d();try{return Promise.resolve(e()).finally(u)}catch(m){throw u(),m}}p(Es,"gaugeTransaction");var mn=new Proxy({},{get(e,t){let d=ys(),u=d[t];if(typeof t=="string"&&Rs.has(t)&&typeof u=="function"){let m=ks.has(t),N=zs();return(...R)=>_n(u.apply(d,R),m,N)}return t==="transaction"&&typeof u=="function"?(...m)=>Es(()=>u.apply(d,m)):u}}),su=new Proxy({},{get(e,t){let d=ws(),u=d[t];if(typeof t=="string"&&Rs.has(t)&&typeof u=="function"){let m=ks.has(t);return(...N)=>_n(u.apply(d,N),m,js(),!0)}return t==="transaction"&&typeof u=="function"?(...m)=>Es(()=>u.apply(d,m),!0):u}});import{sql as km}from"drizzle-orm";export{xn as a,ys as b,tu as c};
@@ -0,0 +1,12 @@
1
+ import{a as F,b as O}from"./chunk-ENW5SUQJ.js";import{a as h,b as v}from"./chunk-CAQLSYOK.js";import{a as $,b as k,e as U}from"./chunk-LJRE3LZ2.js";import{d as I}from"./chunk-GYNZ3OZF.js";import{g as P,i as D,j as R}from"./chunk-UPFH72PF.js";import{e as w,f as T,i as j}from"./chunk-5VWVQCNR.js";import{D as b,F as S,G as x,I as C,o as A}from"./chunk-MHLHLJ5T.js";import{a as l}from"./chunk-ZLLER3HP.js";import*as u from"node:fs";import*as m from"node:path";import{createHash as E}from"node:crypto";var L=new Set(["mcp","subagent","feature"]);function ce(e,t,i){return M(m.join(e,"CLAUDE.md"),t,i)}l(ce,"appendToCLAUDEmd");function M(e,t,i){let n=$(t),s=k(t),a=u.existsSync(e)?u.readFileSync(e,"utf8"):"";if(a.includes(n))return!1;let p=`${a.length>0&&!a.endsWith(`
2
+ `)?`
3
+
4
+ `:a.length>0?`
5
+ `:""}
6
+ ${n}
7
+ ${i}
8
+ ${s}
9
+ `;return u.mkdirSync(m.dirname(e),{recursive:!0}),u.writeFileSync(e,a+p,"utf8"),!0}l(M,"appendBlockToFile");function q(e,t,i,n={}){return I(e,n).filter(s=>M(s.path,t,i))}l(q,"appendToAgentInstructionFiles");function _(e,t,i={}){return I(e,i).filter(n=>N(n.path,t))}l(_,"removeFromAgentInstructionFiles");function de(e,t){return N(m.join(e,"CLAUDE.md"),t)}l(de,"removeFromCLAUDEmd");function N(e,t){if(!u.existsSync(e))return!1;let i=$(t),n=k(t),s=u.readFileSync(e,"utf8"),a=s.indexOf(i);if(a===-1)return!1;let c=s.indexOf(n,a);if(c===-1)return!1;let p=s.slice(0,a),d=s.slice(c+n.length),o=(p.replace(/\n+$/,"")+`
10
+ `+d.replace(/^\n+/,"")).replace(/^\n+/,"");return u.writeFileSync(e,o,"utf8"),!0}l(N,"removeBlockFromFile");function g(e,t=90){return e.length<=t?e:`${e.slice(0,t-1)}\u2026`}l(g,"truncate");function K(e){return w(`/api/instruction-suggestions/${encodeURIComponent(e)}`)}l(K,"fetchSuggestion");async function le(e){let t=e.suggestion??await K(e.suggestionId);if(t.kind==="remove")return W(e,t);if(t.kind==="trim")return V(e,t);if(t.broadAdoptionAllowed===!1)throw new Error("Scoped study owns delivery; no broad adoption authority");let i=t.instructionId;t.instructionScope==="public"&&(i=(await T(`/api/instructions/${encodeURIComponent(t.instructionId)}/promote-from-public`,{targetScope:"personal"})).instructionId);let n=await w(`/api/instructions/${encodeURIComponent(i)}`);if(e.expectedContentHash&&E("sha256").update(n.content.trim()).digest("hex")!==e.expectedContentHash)throw new Error("Proposal content changed after review; nothing was written");if(e.actor==="auto"){let r=C(n.frontmatter,E("sha256").update(n.content.trim()).digest("hex"));if(r)throw new Error(`Evidence review required: ${r}`)}let a=n.type!=="skill"&&n.type!=="hook"&&!L.has(n.type??"")?x(n.content,r=>u.existsSync(m.join(e.dir,r))):[];if(a.length>0)return await v(e.suggestionId,e.projectPath,i,e.actor,"unresolvable_reference"),{action:"unresolvable-reference",instructionId:i,name:n.name,fileModified:!1,unresolvable:a,messages:[`Refused: ${n.name} tells the agent to run something this project does not have.`,...a.map(r=>` ${r.path} \u2014 no such file under ${e.dir}`),"Nothing was written. A confident instruction pointing at a file that is not there costs every future session the time it takes to discover that."]};let c;if(!e.force){let r=b(n.content,U(e.dir)),H=e.actor==="auto"?r.matches.length>0:r.redundant;if(!r.redundant&&r.matches.length>0&&(c=r),H){let y=r.redundant;return await v(e.suggestionId,e.projectPath,i,e.actor,y?"redundant":"partial_overlap"),{action:"redundant",instructionId:i,name:n.name,fileModified:!1,redundancy:r,partialOverlap:y?void 0:r,messages:[y?`Skipped: ${n.name} already applies here in different words \u2014 adding it would spend context to say the same thing twice.`:`Refused: ${r.matches.length} of ${r.matches.length+r.novel.length} asks in ${n.name} are already covered here, so adopting it would restate the file back at itself.`,...r.matches.map(f=>` "${g(f.directive)}"
11
+ already covered by ${f.matchedSource??f.matchedId} (${(f.similarity*100).toFixed(0)}% match): "${g(f.matchedDirective)}"`),...y?[]:["Still wanted, and not adopted:",...r.novel.map(f=>` "${g(f)}"`),"Propose those on their own and they can be adopted, tracked and undone individually."],"Add it anyway with `--force` if the overlap is not real."]}}}if(n.type==="skill")return B(e,{...n,id:i});if(n.type==="hook")return O(e,{...n,id:i});if(L.has(n.type??""))return{action:"manual-required",instructionId:i,name:n.name,fileModified:!1,messages:[`Not installed: ${n.name} is a ${n.type} artifact, and installing one runs code or edits tool configuration \u2014 that always requires a human.`,` Review it: rulemetric instructions get ${i}`,"Nothing was written. This proposal will keep appearing until you act on it or dismiss it."]};let p=q(e.dir,i,n.content),d=p.length>0;await h(e.suggestionId,e.projectPath,i,e.actor);let o=d&&c?[` Note: ${c.matches.length} of ${c.matches.length+c.novel.length} asks in this rule already appear elsewhere in context; it was added for the rest.`,...c.matches.map(r=>` "${g(r.directive)}"
12
+ repeats ${r.matchedSource??r.matchedId} (${(r.similarity*100).toFixed(0)}%): "${g(r.matchedDirective)}"`)]:[];return{action:d?"added":"already-present",instructionId:i,name:n.name,fileModified:d,partialOverlap:d?c:void 0,messages:d?[`Accepted: added ${n.name} to ${p.map(r=>m.relative(e.dir,r.path)).join(", ")}. It will be active starting in your next session.`,...o]:[`Already present: ${n.name} is already in CLAUDE.md (block id: ${i}).`]}}l(le,"acceptSuggestion");async function B(e,t){if(!e.force){let o=S({name:t.name,content:t.content},D(e.dir));if(o)return await v(e.suggestionId,e.projectPath,t.id,e.actor),{action:"redundant",instructionId:t.id,name:t.name,fileModified:!1,duplicateOf:o,messages:[`Skipped: ${t.name} is already installed here as ${o.name}`+(o.reason==="name-stem"?" (same skill, different content-hash suffix).":` (${(o.similarity*100).toFixed(0)}% identical body).`),` Installed: ${R(e.dir,o.name)}`,"A second copy is not more available \u2014 it is one more thing to keep in sync."]}}let i=P({dir:e.dir,name:t.name,content:t.content,description:t.description}),n=[...i.warnings],s=[m.relative(e.dir,i.skillFile)];i.linkKind!=="none"&&s.push(m.relative(e.dir,i.linkPath));let a={boundaryClass:"inside",targets:s,requires:[],provides:[`skill:${i.dirName}`]},c={kind:"delete-paths",paths:s},p=A(a,c);if(p.length===0)try{await F({instructionId:t.id,projectPath:e.projectPath,targetPath:i.skillFile,beforeHash:"",appliedHash:"",boundaryClass:a.boundaryClass,targets:a.targets,inverse:c,requires:a.requires,provides:a.provides,applyMode:e.actor==="auto"?"auto":"human"})}catch(o){n.push(`the effect ledger did not record this install (${o instanceof Error?o.message:String(o)}) \u2014 \`suggestions undo\` will not remove it; delete ${s.join(" and ")} by hand.`)}else n.push(`no reversible inverse could be recorded (${p.map(o=>o.message).join("; ")}).`);await h(e.suggestionId,e.projectPath,t.id,e.actor);let d=[`Accepted: installed skill ${i.dirName} to ${m.relative(e.dir,i.skillFile)}.`];i.linkKind==="none"&&d.push("Claude Code will NOT see it yet \u2014 its path is taken by a directory this command did not create."),d.push("It loads on demand, so it costs no context until a task matches its description."),d.push(`Undo with: rulemetric suggestions undo ${t.id}`);for(let o of n)d.push(` Warning: ${o}`);return{action:"added",instructionId:t.id,name:t.name,fileModified:!0,messages:d}}l(B,"acceptSkill");async function V(e,t){let i=t.estimatedTokens?` It currently costs roughly ${t.estimatedTokens} tokens per session (estimated).`:"";return await h(e.suggestionId,e.projectPath,t.instructionId,e.actor),{action:"acknowledged",instructionId:t.instructionId,name:t.name,fileModified:!1,messages:[`Noted: ${t.name} is measured neutral, not harmful.${i}`,"Nothing was changed \u2014 trimming is a judgement call about which parts carry the value,","and the measurement only found the absence of a detectable effect, not which half to cut.",` View it: rulemetric instructions get ${t.instructionId}`," Then edit CLAUDE.md (or the instruction) and let the next measurement cycle re-check it.","This suggestion will stop re-surfacing."]}}l(V,"acknowledgeTrim");async function W(e,t){let i=_(e.dir,t.instructionId).length>0;await j(`/api/instructions/${encodeURIComponent(t.instructionId)}`);let n=t.estimatedTokens?` Frees roughly ${t.estimatedTokens} tokens of context per session (estimated).`:"",s=i?[`Retired: removed ${t.name} from CLAUDE.md and archived it.${n}`]:[`Archived ${t.name}.${n}`,"CLAUDE.md was not modified \u2014 no rulemetric-managed block for this instruction was found in this directory. If you added it by hand, remove it yourself."];return s.push("Undo with: rulemetric instructions restore "+t.instructionId),await h(e.suggestionId,e.projectPath,t.instructionId,e.actor),{action:i?"retired":"archived-only",instructionId:t.instructionId,name:t.name,fileModified:i,messages:s}}l(W,"acceptRemoval");export{ce as a,M as b,q as c,_ as d,de as e,N as f,K as g,le as h};
@@ -1 +1 @@
1
- import{a as l}from"./chunk-KUW6AVSI.js";import{a as d}from"./chunk-FCALFMZV.js";import{a as u}from"./chunk-VBGHPAUT.js";import{e as c,h as p}from"./chunk-GIXHG5FK.js";import{a}from"./chunk-ZLLER3HP.js";import{createHash as m}from"node:crypto";import{z as t}from"zod";var h=t.object({content:t.string().min(1),name:t.string().min(1),type:t.enum(["instruction","skill"]),contentHash:t.string().regex(/^[a-f0-9]{64}$/),suggestionId:t.string().uuid()}).strict();async function j(e,g){e.preparationOnly&&u.parse(e.research);let r=h.parse(e.candidateSnapshot);if(m("sha256").update(r.content).digest("hex")!==r.contentHash)throw new Error("Candidate snapshot hash mismatch");let i=e.preparationOnly||e.preparationSourceJobId?{preparationSourceJobId:e.preparationSourceJobId}:await d({...e,candidateSnapshot:r,config:{...e.config,parallel:1,runsPerEval:1,iteration:1,skipBaseline:!1,skipGrading:!1,generateIfEmpty:!0,timeout:12e4}},g);if((await c(`/api/eval-targets/${e.evalTargetId}/jobs`)).find(n=>n.id===e.mirrorId)?.status==="cancelled")return{...i,cancelled:!0,adoptionAllowed:!1};let s;try{s=await l({research:e.research,requestedModel:e.requestedModel,evalTargetId:e.evalTargetId,evalJobId:e.preparationSourceJobId??e.mirrorId,preparationJobId:e.mirrorId,...r})}catch(n){s={status:"blocked",reason:n instanceof Error?n.message:String(n)}}if(s.status==="cancelled")return{...i,cancelled:!0,livePreparation:s,adoptionAllowed:!1};let o={...i,livePreparation:s,evidenceKind:e.preparationOnly?"live_preparation":"constructed_evaluation",candidateHash:r.contentHash,suggestionId:r.suggestionId,adoptionAllowed:!1};return await p(`/api/eval-jobs/${e.mirrorId}/state`,{result:o}),o}a(j,"processSuggestionEval");export{j as a};
1
+ import{a as d}from"./chunk-URUHD4OI.js";import{a as l}from"./chunk-JGJU4JX5.js";import{a as u}from"./chunk-VBGHPAUT.js";import{e as c,h as p}from"./chunk-5VWVQCNR.js";import{a}from"./chunk-ZLLER3HP.js";import{createHash as m}from"node:crypto";import{z as t}from"zod";var h=t.object({content:t.string().min(1),name:t.string().min(1),type:t.enum(["instruction","skill"]),contentHash:t.string().regex(/^[a-f0-9]{64}$/),suggestionId:t.string().uuid()}).strict();async function j(e,g){e.preparationOnly&&u.parse(e.research);let r=h.parse(e.candidateSnapshot);if(m("sha256").update(r.content).digest("hex")!==r.contentHash)throw new Error("Candidate snapshot hash mismatch");let i=e.preparationOnly||e.preparationSourceJobId?{preparationSourceJobId:e.preparationSourceJobId}:await d({...e,candidateSnapshot:r,config:{...e.config,parallel:1,runsPerEval:1,iteration:1,skipBaseline:!1,skipGrading:!1,generateIfEmpty:!0,timeout:12e4}},g);if((await c(`/api/eval-targets/${e.evalTargetId}/jobs`)).find(n=>n.id===e.mirrorId)?.status==="cancelled")return{...i,cancelled:!0,adoptionAllowed:!1};let s;try{s=await l({research:e.research,requestedModel:e.requestedModel,evalTargetId:e.evalTargetId,evalJobId:e.preparationSourceJobId??e.mirrorId,preparationJobId:e.mirrorId,...r})}catch(n){s={status:"blocked",reason:n instanceof Error?n.message:String(n)}}if(s.status==="cancelled")return{...i,cancelled:!0,livePreparation:s,adoptionAllowed:!1};let o={...i,livePreparation:s,evidenceKind:e.preparationOnly?"live_preparation":"constructed_evaluation",candidateHash:r.contentHash,suggestionId:r.suggestionId,adoptionAllowed:!1};return await p(`/api/eval-jobs/${e.mirrorId}/state`,{result:o}),o}a(j,"processSuggestionEval");export{j as a};
@@ -1,4 +1,4 @@
1
- import{f as p}from"./chunk-4GOXEEXZ.js";import{a as l}from"./chunk-ZLLER3HP.js";var k=[{name:"git-commit-helper",description:"Writes conventional commit messages and PR descriptions from a diff"},{name:"sql-query-optimizer",description:"Analyzes slow SQL queries and proposes indexes and rewrites"},{name:"i18n-string-extractor",description:"Finds hardcoded UI strings and extracts them into translation files"}],T=`You are an AI coding assistant with access to a set of optional skills. When a user request matches a skill's description, you invoke that skill before answering; when no skill applies, you answer directly without one. Descriptions are your ONLY information about each skill.
1
+ import{g as p}from"./chunk-LARY6ZFT.js";import{a as l}from"./chunk-ZLLER3HP.js";var k=[{name:"git-commit-helper",description:"Writes conventional commit messages and PR descriptions from a diff"},{name:"sql-query-optimizer",description:"Analyzes slow SQL queries and proposes indexes and rewrites"},{name:"i18n-string-extractor",description:"Finds hardcoded UI strings and extracts them into translation files"}],T=`You are an AI coding assistant with access to a set of optional skills. When a user request matches a skill's description, you invoke that skill before answering; when no skill applies, you answer directly without one. Descriptions are your ONLY information about each skill.
2
2
 
3
3
  {{CATALOG}}
4
4
 
@@ -1,2 +1,2 @@
1
- import{f as k,k as b}from"./chunk-OZQNSELV.js";import{m as v,s as f,u as y}from"./chunk-X6CF5KTW.js";import{a as o}from"./chunk-ZLLER3HP.js";import{createHash as D}from"node:crypto";import{existsSync as d,readFileSync as H,writeFileSync as O,mkdirSync as I}from"node:fs";import{delimiter as R,dirname as j,join as m,resolve as w}from"node:path";function P(e){return b(m(e,".claude"),!1)}o(P,"adoptedHookSettingsPath");function B(e){return D("sha256").update(e).digest("hex")}o(B,"sha256");function h(e){return B(d(e)?H(e,"utf-8"):"")}o(h,"fileHash");function x(e){if(!d(e))return{settings:{}};let t=H(e,"utf-8");try{let n=JSON.parse(t);return!n||typeof n!="object"||Array.isArray(n)?{unreadable:!0}:{settings:n}}catch{return{unreadable:!0}}}o(x,"readSettings");function p(e,t){let n=e.hooks;if(!n||typeof n!="object")return[];let r=n[t];return Array.isArray(r)?r:[]}o(p,"hookBlocks");function A(e,t){return p(e,t).flatMap(n=>(n?.hooks??[]).map(r=>r?.command).filter(r=>typeof r=="string"))}o(A,"commandsFor");function W(e){let t=P(e.dir);if(!t.endsWith("settings.local.json"))return{status:"refused",reason:`refusing to write ${t}: adopted hooks are machine-local and only ever land in settings.local.json`};let n=x(t);if("unreadable"in n)return{status:"refused",reason:`${t} exists but is not readable as JSON. Nothing was written \u2014 installing would mean replacing a settings file this command could not read.`};let r=n.settings,s=y(e.spec.command,e.instructionId),a=h(t),l=o((g,S)=>({kind:"remove-hook-entry",file:f,event:e.spec.event,command:s,backupPath:S,hashAtWrite:g}),"inverseFor");if(A(r,e.spec.event).includes(s))return{status:"already-present",target:f,command:s,inverse:l(a,`${t}.bak`),beforeHash:a};let c={...e.spec.matcher?{matcher:e.spec.matcher}:{},hooks:[{type:"command",command:s}]},u=r.hooks&&typeof r.hooks=="object"?r.hooks:{};u[e.spec.event]=[...p(r,e.spec.event),c],r.hooks=u;let{backupPath:i}=k(t,r);return i||(i=`${t}.bak`,I(j(i),{recursive:!0}),O(i,`{}
1
+ import{f as k,k as b}from"./chunk-OZQNSELV.js";import{m as v,s as f,u as y}from"./chunk-MHLHLJ5T.js";import{a as o}from"./chunk-ZLLER3HP.js";import{createHash as D}from"node:crypto";import{existsSync as d,readFileSync as H,writeFileSync as O,mkdirSync as I}from"node:fs";import{delimiter as R,dirname as j,join as m,resolve as w}from"node:path";function P(e){return b(m(e,".claude"),!1)}o(P,"adoptedHookSettingsPath");function B(e){return D("sha256").update(e).digest("hex")}o(B,"sha256");function h(e){return B(d(e)?H(e,"utf-8"):"")}o(h,"fileHash");function x(e){if(!d(e))return{settings:{}};let t=H(e,"utf-8");try{let n=JSON.parse(t);return!n||typeof n!="object"||Array.isArray(n)?{unreadable:!0}:{settings:n}}catch{return{unreadable:!0}}}o(x,"readSettings");function p(e,t){let n=e.hooks;if(!n||typeof n!="object")return[];let r=n[t];return Array.isArray(r)?r:[]}o(p,"hookBlocks");function A(e,t){return p(e,t).flatMap(n=>(n?.hooks??[]).map(r=>r?.command).filter(r=>typeof r=="string"))}o(A,"commandsFor");function W(e){let t=P(e.dir);if(!t.endsWith("settings.local.json"))return{status:"refused",reason:`refusing to write ${t}: adopted hooks are machine-local and only ever land in settings.local.json`};let n=x(t);if("unreadable"in n)return{status:"refused",reason:`${t} exists but is not readable as JSON. Nothing was written \u2014 installing would mean replacing a settings file this command could not read.`};let r=n.settings,s=y(e.spec.command,e.instructionId),a=h(t),l=o((g,S)=>({kind:"remove-hook-entry",file:f,event:e.spec.event,command:s,backupPath:S,hashAtWrite:g}),"inverseFor");if(A(r,e.spec.event).includes(s))return{status:"already-present",target:f,command:s,inverse:l(a,`${t}.bak`),beforeHash:a};let c={...e.spec.matcher?{matcher:e.spec.matcher}:{},hooks:[{type:"command",command:s}]},u=r.hooks&&typeof r.hooks=="object"?r.hooks:{};u[e.spec.event]=[...p(r,e.spec.event),c],r.hooks=u;let{backupPath:i}=k(t,r);return i||(i=`${t}.bak`,I(j(i),{recursive:!0}),O(i,`{}
2
2
  `)),{status:"installed",target:f,command:s,inverse:l(h(t),i),beforeHash:a}}o(W,"installHook");function _(e){let t=w(e.dir,e.inverse.file);if(!d(t))return{removed:!1,drifted:!0,code:"file-missing",reason:`${e.inverse.file} no longer exists`};let n=x(t);if("unreadable"in n)return{removed:!1,drifted:!0,code:"unreadable",reason:`${e.inverse.file} is not readable as JSON; refusing to rewrite it`};let r=n.settings,s=h(t)!==e.inverse.hashAtWrite,a=A(r,e.inverse.event).filter(i=>i===e.inverse.command);if(a.length===0)return{removed:!1,drifted:s,code:"not-present",reason:"the recorded entry is no longer present \u2014 nothing to remove"};if(a.length>1)return{removed:!1,drifted:s,code:"ambiguous",reason:`${a.length} entries carry this exact command; refusing to guess which one this artifact installed`};let l=p(r,e.inverse.event).map(i=>({...i,hooks:(i?.hooks??[]).filter(g=>g?.command!==e.inverse.command)})).filter(i=>(i.hooks??[]).length>0),c=r.hooks;l.length===0?delete c[e.inverse.event]:c[e.inverse.event]=l,Object.keys(c).length===0&&delete r.hooks;let{backupPath:u}=k(t,r);return{removed:!0,drifted:s,backupPath:u}}o(_,"uninstallHook");function K(e){return(process.env.PATH??"").split(R).filter(Boolean).some(n=>d(m(n,e)))}o(K,"commandOnPath");function $(e,t){return d(m(e,".agents","skills",t))||d(m(e,".claude","skills",t))}o($,"skillInstalled");function z(e,t){let n={satisfied:[],missing:[],unverifiable:[]};for(let r of t){let s=v(r);if(!s)continue;let[a,...l]=s.split(":"),c=l.join(":").trim();if(!c){n.unverifiable.push(s);continue}a==="cmd"?(K(c)?n.satisfied:n.missing).push(s):a==="skill"?($(e,c)?n.satisfied:n.missing).push(s):a==="file"?(d(w(e,c))?n.satisfied:n.missing).push(s):n.unverifiable.push(s)}return n}o(z,"checkDependencies");export{P as a,W as b,_ as c,z as d};
@@ -1 +1 @@
1
- import{f as r}from"./chunk-GIXHG5FK.js";import{a as i}from"./chunk-ZLLER3HP.js";async function p(e,t,n,o){await r(`/api/instruction-suggestions/${encodeURIComponent(e)}/events`,{eventType:"accepted",projectPath:t,instructionId:n,actor:o})}i(p,"logAccepted");async function a(e,t,n,o,s="redundant"){await r(`/api/instruction-suggestions/${encodeURIComponent(e)}/events`,{eventType:s,projectPath:t,instructionId:n,actor:o})}i(a,"logRefused");export{p as a,a as b};
1
+ import{f as r}from"./chunk-5VWVQCNR.js";import{a as i}from"./chunk-ZLLER3HP.js";async function p(e,t,n,o){await r(`/api/instruction-suggestions/${encodeURIComponent(e)}/events`,{eventType:"accepted",projectPath:t,instructionId:n,actor:o})}i(p,"logAccepted");async function a(e,t,n,o,s="redundant"){await r(`/api/instruction-suggestions/${encodeURIComponent(e)}/events`,{eventType:s,projectPath:t,instructionId:n,actor:o})}i(a,"logRefused");export{p as a,a as b};
@@ -0,0 +1 @@
1
+ import{h as a}from"./chunk-BOYWPUV2.js";import{e as r}from"./chunk-5VWVQCNR.js";import{a as n}from"./chunk-ZLLER3HP.js";import{existsSync as s}from"node:fs";import{z as e}from"zod";var c=e.object({runId:e.string().uuid(),contentHash:e.string().regex(/^[a-f0-9]{64}$/),projectPath:e.string().min(1)});async function u(i){let o=c.parse(i),t=await r(`/api/insights-jobs/${o.runId}/adoption/${o.contentHash}`);if(t.projectPath!==o.projectPath||!s(t.projectPath))throw new Error("The reviewed project checkout is unavailable");return a({suggestionId:t.suggestionId,dir:t.projectPath,projectPath:t.projectPath,actor:"human",expectedContentHash:o.contentHash})}n(u,"processSuggestionAdoption");export{u as a};