@rulemetric/cli 0.10.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (202) hide show
  1. package/README.md +1 -2
  2. package/dist/base-command.js +1 -1
  3. package/dist/chunk-35KBN23A.js +1 -0
  4. package/dist/{chunk-YY53MMH7.js → chunk-7FWIIVMC.js} +1 -1
  5. package/dist/{chunk-3IH22LYI.js → chunk-AC2NUNFC.js} +1 -1
  6. package/dist/{chunk-7LXG3DDL.js → chunk-AJN2BLMV.js} +1 -1
  7. package/dist/{chunk-MODFTCZY.js → chunk-B3BHB26P.js} +1 -1
  8. package/dist/{chunk-7BYMIHIB.js → chunk-BMDHPIW6.js} +1 -1
  9. package/dist/{chunk-HKC224ZO.js → chunk-BMN2WZM2.js} +1 -1
  10. package/dist/{chunk-OI7MOALX.js → chunk-CLCRZWAG.js} +1 -1
  11. package/dist/{chunk-3VYV6ZYB.js → chunk-CNOD6HWU.js} +1 -1
  12. package/dist/chunk-DN2T3FXN.js +1 -0
  13. package/dist/chunk-E4U6AOTM.js +46 -0
  14. package/dist/{chunk-4T2FJLDA.js → chunk-EJZGGT52.js} +1 -1
  15. package/dist/{chunk-SE5SRPIB.js → chunk-FAOSXPRO.js} +1 -1
  16. package/dist/{chunk-NTJKAIHS.js → chunk-FF5TAMDH.js} +1 -1
  17. package/dist/{chunk-F5WE6JXK.js → chunk-FM4LTGMI.js} +1 -1
  18. package/dist/chunk-FOUGYDLH.js +11 -0
  19. package/dist/{chunk-UY5QYCTK.js → chunk-GL3ZDOKJ.js} +1 -1
  20. package/dist/{chunk-FH55JFUY.js → chunk-HWZTQXNM.js} +1 -1
  21. package/dist/chunk-IOV2BEW7.js +13 -0
  22. package/dist/{chunk-YVM2CHNV.js → chunk-IPL2DHU4.js} +1 -1
  23. package/dist/{chunk-TCR7TSAJ.js → chunk-JPUH3V67.js} +1 -1
  24. package/dist/{chunk-EOJ3LAP6.js → chunk-KDFBKYXK.js} +1 -1
  25. package/dist/{chunk-7L4P7FCK.js → chunk-LWUA3NUZ.js} +1 -1
  26. package/dist/chunk-LZO6YBUW.js +2 -0
  27. package/dist/{chunk-OFC7HIBX.js → chunk-MPDSQALK.js} +1 -1
  28. package/dist/{chunk-X23L2MF6.js → chunk-NBTC5FNV.js} +1 -1
  29. package/dist/{chunk-W2SG3KND.js → chunk-NPNSUG3N.js} +1 -1
  30. package/dist/{chunk-OPUI7CM2.js → chunk-NTKO4H2K.js} +1 -1
  31. package/dist/{chunk-X4N4MT2I.js → chunk-OUXWBHCI.js} +1 -1
  32. package/dist/{chunk-S7YDBO42.js → chunk-PK6PSCIP.js} +1 -1
  33. package/dist/{chunk-XILSJP4P.js → chunk-R4SSIFKY.js} +1 -1
  34. package/dist/{chunk-4STKWINN.js → chunk-R4W4QDTP.js} +1 -1
  35. package/dist/{chunk-6SUN4NOY.js → chunk-RE7DDQ3O.js} +1 -1
  36. package/dist/{chunk-W65UX4FC.js → chunk-RS4LSJI2.js} +1 -1
  37. package/dist/{chunk-ERNDMEYG.js → chunk-RUIX6AZ6.js} +1 -1
  38. package/dist/{chunk-H6MN2AAF.js → chunk-RZTVYUX4.js} +1 -1
  39. package/dist/{chunk-ZJOYLBRU.js → chunk-SBFTRVZM.js} +1 -1
  40. package/dist/{chunk-NDZVH5QW.js → chunk-SBJNQ5Q6.js} +1 -1
  41. package/dist/{chunk-WVJEBQYU.js → chunk-SV7FDAKW.js} +1 -1
  42. package/dist/{chunk-B22HYCBV.js → chunk-TU2AR6XO.js} +1 -1
  43. package/dist/{chunk-FORJT5H6.js → chunk-UT3EQR4C.js} +1 -1
  44. package/dist/{chunk-BN54LTXD.js → chunk-V5XRGRJC.js} +1 -1
  45. package/dist/{chunk-MIOMKROL.js → chunk-W44E3DYZ.js} +1 -1
  46. package/dist/{chunk-OFSUKSZ2.js → chunk-W4ZDAJ6S.js} +1 -1
  47. package/dist/{chunk-N7ML6X6Y.js → chunk-WOBFJCMO.js} +1 -1
  48. package/dist/chunk-XK52UAFB.js +17 -0
  49. package/dist/{chunk-V5MJ4ICC.js → chunk-XRTZU7IZ.js} +1 -1
  50. package/dist/{chunk-RSMLOYVJ.js → chunk-XVRQ5WUB.js} +1 -1
  51. package/dist/{chunk-DAD4YBYC.js → chunk-YWALNDT3.js} +1 -1
  52. package/dist/{chunk-WEBB76XA.js → chunk-YZNP4TW4.js} +1 -1
  53. package/dist/{chunk-553EGRRW.js → chunk-ZXOAI65J.js} +1 -1
  54. package/dist/commands/antigravity/backfill.js +1 -1
  55. package/dist/commands/auth/create-key.js +1 -1
  56. package/dist/commands/auth/login.js +1 -1
  57. package/dist/commands/auth/logout.js +1 -1
  58. package/dist/commands/auth/revoke-key.js +1 -1
  59. package/dist/commands/auth/signup.js +1 -1
  60. package/dist/commands/auth/status.js +1 -1
  61. package/dist/commands/capture/scope.js +1 -1
  62. package/dist/commands/catalog/index.js +1 -1
  63. package/dist/commands/catalog/recommend.js +1 -1
  64. package/dist/commands/crons/list.js +1 -1
  65. package/dist/commands/crons/run.js +1 -1
  66. package/dist/commands/dashboard.js +1 -1
  67. package/dist/commands/diagnostics.js +1 -1
  68. package/dist/commands/eval-targets/create.js +1 -1
  69. package/dist/commands/eval-targets/list.js +1 -1
  70. package/dist/commands/evals/agent.js +1 -1
  71. package/dist/commands/evals/auto-run.js +1 -1
  72. package/dist/commands/evals/benchmark.js +1 -1
  73. package/dist/commands/evals/compare.js +1 -1
  74. package/dist/commands/evals/create.js +1 -1
  75. package/dist/commands/evals/optimize-description.js +1 -1
  76. package/dist/commands/evals/optimize.js +1 -1
  77. package/dist/commands/evals/refine-cases.js +1 -1
  78. package/dist/commands/evals/run.js +1 -1
  79. package/dist/commands/evals/validate-judge.js +1 -1
  80. package/dist/commands/experiments/list.js +1 -1
  81. package/dist/commands/gateway/ensure.js +1 -1
  82. package/dist/commands/hooks/install.js +1 -1
  83. package/dist/commands/hooks/run.js +1 -1
  84. package/dist/commands/hooks/uninstall.js +1 -1
  85. package/dist/commands/instructions/create.js +1 -1
  86. package/dist/commands/instructions/dedupe.js +1 -1
  87. package/dist/commands/instructions/delete.js +1 -1
  88. package/dist/commands/instructions/fork.js +1 -1
  89. package/dist/commands/instructions/get.js +1 -1
  90. package/dist/commands/instructions/list.js +1 -1
  91. package/dist/commands/instructions/promote.js +1 -1
  92. package/dist/commands/instructions/pull.js +1 -1
  93. package/dist/commands/instructions/restore.js +1 -1
  94. package/dist/commands/instructions/retract.js +1 -1
  95. package/dist/commands/instructions/upstream.js +1 -1
  96. package/dist/commands/instructions/versions.js +1 -1
  97. package/dist/commands/launcher.js +1 -1
  98. package/dist/commands/local/down.js +1 -1
  99. package/dist/commands/local/up.js +1 -1
  100. package/dist/commands/org/current.js +1 -1
  101. package/dist/commands/org/list.js +1 -1
  102. package/dist/commands/org/switch.js +1 -1
  103. package/dist/commands/packs/add-instruction.js +1 -1
  104. package/dist/commands/packs/apply.js +1 -1
  105. package/dist/commands/packs/create.js +1 -1
  106. package/dist/commands/packs/fork.js +1 -1
  107. package/dist/commands/packs/get.js +1 -1
  108. package/dist/commands/packs/list.js +1 -1
  109. package/dist/commands/packs/remove-instruction.js +1 -1
  110. package/dist/commands/proxy/env.js +1 -1
  111. package/dist/commands/proxy/logs.js +1 -1
  112. package/dist/commands/proxy/restart.js +1 -1
  113. package/dist/commands/proxy/setup.js +1 -1
  114. package/dist/commands/proxy/start.js +1 -1
  115. package/dist/commands/proxy/status.js +1 -1
  116. package/dist/commands/proxy/stop.js +1 -1
  117. package/dist/commands/research/backfill.js +1 -1
  118. package/dist/commands/research/tail-transcript.js +1 -1
  119. package/dist/commands/service/install.js +1 -1
  120. package/dist/commands/service/status.js +1 -1
  121. package/dist/commands/service/uninstall.js +1 -1
  122. package/dist/commands/sessions/analyze.js +1 -1
  123. package/dist/commands/sessions/delete.js +1 -1
  124. package/dist/commands/sessions/end.js +1 -1
  125. package/dist/commands/sessions/import.js +1 -1
  126. package/dist/commands/sessions/list.js +1 -1
  127. package/dist/commands/sessions/start.js +1 -1
  128. package/dist/commands/setup.js +1 -1
  129. package/dist/commands/skills/export-approved.js +1 -1
  130. package/dist/commands/skills/install.js +4 -4
  131. package/dist/commands/skills/list.js +1 -1
  132. package/dist/commands/skills/publish.js +1 -1
  133. package/dist/commands/skills/search.js +1 -1
  134. package/dist/commands/skills/update.js +1 -1
  135. package/dist/commands/suggestions/accept.js +1 -1
  136. package/dist/commands/suggestions/auto.js +1 -1
  137. package/dist/commands/suggestions/dismiss.js +1 -1
  138. package/dist/commands/suggestions/list.js +1 -1
  139. package/dist/commands/suggestions/refresh.js +1 -1
  140. package/dist/commands/suggestions/undo.js +1 -1
  141. package/dist/dashboard/Dashboard.js +1 -1
  142. package/dist/dashboard/data.js +1 -1
  143. package/dist/dashboard/launcher/ActiveJobsList.js +1 -1
  144. package/dist/dashboard/launcher/LauncherOverlay.js +1 -1
  145. package/dist/dashboard/launcher/NewLaunchForm.js +1 -1
  146. package/dist/dashboard/launcher/api.js +1 -1
  147. package/dist/dashboard/launcher/useLaunchJobs.js +1 -1
  148. package/dist/lib/active-org-refresh.js +1 -1
  149. package/dist/lib/agent-loop.js +1 -1
  150. package/dist/lib/antigravity-transcript.js +1 -1
  151. package/dist/lib/api-client.js +1 -1
  152. package/dist/lib/codex-exec.js +1 -1
  153. package/dist/lib/ensure-api-key.js +1 -1
  154. package/dist/lib/ensure-fresh-token.js +1 -1
  155. package/dist/lib/eval-benchmark.js +1 -1
  156. package/dist/lib/eval-candidate-run.js +1 -1
  157. package/dist/lib/eval-case-generator.js +1 -1
  158. package/dist/lib/eval-conversation-handler.js +1 -1
  159. package/dist/lib/eval-grader.js +1 -1
  160. package/dist/lib/eval-resume.js +1 -1
  161. package/dist/lib/eval-run-batch.js +1 -1
  162. package/dist/lib/eval-workspace.js +1 -1
  163. package/dist/lib/evolution-enrolment.js +1 -1
  164. package/dist/lib/handlers/cron-auto-accept-suggestions.js +1 -1
  165. package/dist/lib/handlers/cron-eval-autorun.js +1 -1
  166. package/dist/lib/handlers/cron-instruction-evolution.js +1 -1
  167. package/dist/lib/handlers/cron-instruction-training.js +1 -1
  168. package/dist/lib/handlers/cron-refresh-pricing.js +1 -1
  169. package/dist/lib/handlers/cron-suggest-instructions.js +1 -1
  170. package/dist/lib/handlers/distill-memories.js +1 -1
  171. package/dist/lib/handlers/process-changelog.js +1 -1
  172. package/dist/lib/handlers/process-conversation.js +1 -1
  173. package/dist/lib/handlers/process-eval.js +1 -1
  174. package/dist/lib/handlers/process-insights.js +1 -1
  175. package/dist/lib/handlers/process-judge-review.js +1 -1
  176. package/dist/lib/handlers/process-launch.js +1 -1
  177. package/dist/lib/handlers/process-memory-ab.js +1 -1
  178. package/dist/lib/handlers/process-run-cleanup.js +1 -1
  179. package/dist/lib/handlers/process-session-goal.js +1 -1
  180. package/dist/lib/instruction-proposer.js +1 -1
  181. package/dist/lib/judge-review-runner.js +1 -1
  182. package/dist/lib/llm-client.js +1 -1
  183. package/dist/lib/manual-tasks.js +1 -1
  184. package/dist/lib/research-client.js +1 -1
  185. package/dist/lib/retraction.js +1 -1
  186. package/dist/lib/reviewer-detect.js +1 -1
  187. package/dist/lib/setup-steps.js +1 -1
  188. package/dist/lib/skill-paths.js +1 -0
  189. package/dist/lib/suggestion-accept.js +1 -1
  190. package/dist/lib/telemetry.js +1 -1
  191. package/dist/lib/terminal-target-heartbeat.js +1 -1
  192. package/oclif.manifest.json +378 -540
  193. package/package.json +7 -7
  194. package/dist/chunk-3A7RPMNN.js +0 -13
  195. package/dist/chunk-FP6QAPNK.js +0 -1
  196. package/dist/chunk-L2CFSMBC.js +0 -1
  197. package/dist/chunk-UC377K7P.js +0 -17
  198. package/dist/chunk-VKVWEG5J.js +0 -11
  199. package/dist/chunk-VXM4PEED.js +0 -46
  200. package/dist/commands/convert.js +0 -1
  201. package/dist/commands/converters.js +0 -1
  202. package/dist/commands/import.js +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rulemetric/cli",
3
- "version": "0.10.0",
3
+ "version": "0.11.0",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -80,9 +80,9 @@
80
80
  "postgres": "^3.4.0",
81
81
  "react": "^19.0.0",
82
82
  "zod": "^3.24.0",
83
- "@rulemetric/hooks": "0.10.0",
84
- "@rulemetric/skills-registry": "0.10.0",
85
- "@rulemetric/proxy": "0.10.0"
83
+ "@rulemetric/proxy": "0.11.0",
84
+ "@rulemetric/skills-registry": "0.11.0",
85
+ "@rulemetric/hooks": "0.11.0"
86
86
  },
87
87
  "//deps": "Worker (`evals agent`) runtime deps: the @opentelemetry/* set, @sentry/node, and postgres are STATIC top-level imports loaded at worker startup (via bundled @rulemetric/{telemetry,db}) — they MUST be runtime deps or a clean `npm i -g` crashes with ModuleLoadError. `better-sqlite3` is optionalDependencies (below): it's a native module, lazy `require()`'d inside a try/catch (packages/session providers cursor/opencode) so a missing binary degrades gracefully — making it a hard dep would break `npm i -g` on platforms without prebuilt binaries. `resend` stays a devDep: lazy `await import('resend')` guarded by RESEND_API_KEY, which end-user workers never set (provider falls back to noop). Classification verified via import-graph scan of dist/commands/evals/agent.js + per-importer static/lazy check.",
88
88
  "optionalDependencies": {
@@ -103,11 +103,11 @@
103
103
  "@rulemetric/api": "0.0.1",
104
104
  "@rulemetric/core": "0.0.1",
105
105
  "@rulemetric/db": "0.0.1",
106
- "@rulemetric/email": "0.0.1",
107
- "@rulemetric/session": "0.2.1",
108
106
  "@rulemetric/effectiveness": "0.0.1",
107
+ "@rulemetric/session": "0.2.1",
109
108
  "@rulemetric/telemetry": "0.0.1",
110
- "@rulemetric/typescript-config": "0.0.0"
109
+ "@rulemetric/typescript-config": "0.0.0",
110
+ "@rulemetric/email": "0.0.1"
111
111
  },
112
112
  "scripts": {
113
113
  "build": "node scripts/build.mjs",
@@ -1,13 +0,0 @@
1
- import{f as g,g as f,h as p,i as m,j as k}from"./chunk-VXM4PEED.js";import{a as o}from"./chunk-ZLLER3HP.js";import{existsSync as d,readFileSync as u,writeFileSync as _,copyFileSync as v,rmSync as S,statSync as P,readdirSync as x,mkdirSync as R}from"node:fs";import{join as i,dirname as $}from"node:path";import{homedir as c}from"node:os";var j=["/plugins/cache/","/plugins/marketplaces/","/node_modules/","/.git/"];function h(e){return j.some(t=>e.includes(t))}o(h,"isUnownedPath");function K(e,t){let n=i(c(),".config","rulemetric","retraction-backups",t),r=e.replace(/^\/+/,"").replace(/\//g,"__");return i(n,r)}o(K,"backupPathFor");function y(e){return e.split(`
2
- `).slice(0,40).map(t=>`- ${t}`).join(`
3
- `)}o(y,"shortDiff");function a(e,t,n){return{kind:e,path:t,ok:!1,refusal:n,preview:"",warnings:[]}}o(a,"refuse");function M(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}}o(M,"pathFromContextIdentity");function F(e,t){let n=e.replace(/^skills--/,"");return[...[i(t,".claude","skills",n,"SKILL.md"),i(t,".claude","skills",`${n}.md`),i(c(),".claude","skills",n,"SKILL.md"),i(c(),".claude","skills",`${n}.md`)],...I(n)]}o(F,"candidateSkillPaths");function I(e){let t=i(c(),".claude","plugins","marketplaces");if(!d(t))return[];let n=[];try{for(let r of x(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}o(I,"pluginSkillPaths");function O(e){switch(e.kind){case"claude_md_section":case"memory_section":case"claude_md_block":return C(e);case"skill_file":return D(e);case"settings_hook":case"mcp_server":return L(e)}}o(O,"planRetraction");function C(e){let t=e.target;if(!d(t))return a(e.kind,t,`File does not exist: ${t}`);if(h(t))return a(e.kind,t,`Refusing to edit a path this tool does not own: ${t}`);let n=u(t,"utf-8"),r=e.body?f(n,e.body):g(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 a(e.kind,t,l)}let s=[];return w(t,e.cwd)||s.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:y(r.removedText??""),nextContent:r.content,warnings:s}}o(C,"planFileEdit");function D(e){let t=e.target.startsWith("/")?[e.target]:F(e.target,e.cwd),n=t.find(l=>d(l));if(!n)return a("skill_file",t[0]??e.target,`No local skill file found for "${e.target}". Searched:
4
- ${t.join(`
5
- `)}`);if(h(n))return a("skill_file",n,`"${e.target}" is installed by a plugin (${n}).
6
- Deleting it would be undone by the next plugin update, and the files are not ours to remove.
7
- Uninstall the plugin that provides it instead.`);let r=u(n,"utf-8"),s=[];return w(n,e.cwd)||s.push("Not tracked by git \u2014 the timestamped backup is your only undo."),{kind:"skill_file",path:n,ok:!0,deletesFile:!0,preview:y(r.split(`
8
- `).slice(0,20).join(`
9
- `)),warnings:s}}o(D,"planSkillDelete");function L(e){let t=e.kind==="mcp_server"?[i(e.cwd,".mcp.json"),i(e.cwd,".claude","settings.json"),i(c(),".claude","settings.json")]:[i(e.cwd,".claude","settings.json"),i(c(),".claude","settings.json"),i(e.cwd,".claude","settings.local.json")];for(let n of t){if(!d(n))continue;let r;try{r=JSON.parse(u(n,"utf-8"))}catch{continue}let s=e.kind==="mcp_server"?m(r,e.target):p(r,e.target);if(!s.removed)continue;let l=k(r,s.value);return l.length>0?a(e.kind,n,`Refusing: this rewrite would drop ${l.join(", ")} from ${n}. A settings file missing these breaks Claude Code entirely.`):{kind:e.kind,path:n,ok:!0,preview:s.removedDescriptions.map(b=>`- ${b}`).join(`
10
- `),nextContent:`${JSON.stringify(s.value,null,2)}
11
- `,warnings:n.endsWith("settings.local.json")?["Editing settings.local.json \u2014 this file also carries the proxy env block."]:[]}}return a(e.kind,t[0],`"${e.target}" was not found in any settings file. Searched:
12
- ${t.join(`
13
- `)}`)}o(L,"planSettingsEdit");function w(e,t){try{let n=i(t,".git");return e.startsWith(t)&&d(n)&&P(n).isDirectory()}catch{return!1}}o(w,"isGitTracked");function U(e,t){if(!e.ok)return{applied:!1,backupPath:null,error:e.refusal??"plan is not applicable"};let n=K(e.path,t);try{R($(n),{recursive:!0}),v(e.path,n)}catch(r){return{applied:!1,backupPath:null,error:`backup failed, nothing written: ${String(r)}`}}try{return e.deletesFile?S(e.path,{force:!0}):_(e.path,e.nextContent??""),{applied:!0,backupPath:n}}catch(r){return{applied:!1,backupPath:n,error:`write failed: ${String(r)}`}}}o(U,"applyRetraction");export{K as a,M as b,F as c,O as d,U as e};
@@ -1 +0,0 @@
1
- import{a as p,c as Vr}from"./chunk-ZLLER3HP.js";import{boolean as Gr,date as Fr,index as Ot,integer as Jr,jsonb as Qr,pgTable as qt,text as A,timestamp as L,uniqueIndex as Yr,uuid as ae}from"drizzle-orm/pg-core";var Ko=qt("announcements",{id:ae("id").primaryKey().defaultRandom(),version:A("version").notNull().unique(),releaseDate:Fr("release_date").notNull(),subject:A("subject").notNull(),htmlBody:A("html_body").notNull(),textBody:A("text_body").notNull(),sections:Qr("sections").notNull().default({}),status:A("status").notNull().default("draft"),recipientCount:Jr("recipient_count"),sentAt:L("sent_at",{withTimezone:!0}),sentBy:ae("sent_by"),error:A("error"),createdAt:L("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:L("updated_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Ot("idx_announcements_status").on(e.status),Ot("idx_announcements_created").on(e.createdAt)]),Co=qt("announcement_deliveries",{id:ae("id").primaryKey().defaultRandom(),announcementId:ae("announcement_id").notNull(),userId:ae("user_id").notNull(),email:A("email").notNull(),status:A("status").notNull().default("pending"),providerId:A("provider_id"),error:A("error"),sentAt:L("sent_at",{withTimezone:!0}),createdAt:L("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Yr("uniq_announcement_deliveries_announcement_user").on(e.announcementId,e.userId),Ot("idx_announcement_deliveries_user").on(e.userId,e.createdAt)]),Oo=qt("notification_preferences",{userId:ae("user_id").primaryKey(),productAnnouncements:Gr("product_announcements").notNull().default(!0),unsubscribeToken:A("unsubscribe_token").notNull().unique(),unsubscribedAt:L("unsubscribed_at",{withTimezone:!0}),createdAt:L("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:L("updated_at",{withTimezone:!0}).notNull().defaultNow()});import{boolean as Ze,pgTable as $r,real as Wr,text as et,timestamp as Mt,uuid as Ho}from"drizzle-orm/pg-core";import{pgTable as Xe,text as de,timestamp as je,jsonb as qo,uuid as X,primaryKey as Mo}from"drizzle-orm/pg-core";var l=Xe("organizations",{id:X("id").primaryKey().defaultRandom(),name:de("name").unique().notNull(),slug:de("slug").unique().notNull(),metadata:qo("metadata"),createdAt:je("created_at",{withTimezone:!0}).defaultNow(),updatedAt:je("updated_at",{withTimezone:!0}).defaultNow()}),v=Xe("teams",{id:X("id").primaryKey().defaultRandom(),orgId:X("org_id").references(()=>l.id,{onDelete:"cascade"}),name:de("name").notNull(),slug:de("slug").notNull(),metadata:qo("metadata"),createdAt:je("created_at",{withTimezone:!0}).defaultNow()}),ue=Xe("user_organizations",{userId:X("user_id").notNull(),orgId:X("org_id").references(()=>l.id,{onDelete:"cascade"}).notNull(),role:de("role").notNull().default("member"),createdAt:je("created_at",{withTimezone:!0}).defaultNow()},e=>[Mo({columns:[e.userId,e.orgId]})]),le=Xe("user_teams",{userId:X("user_id").notNull(),teamId:X("team_id").references(()=>v.id,{onDelete:"cascade"}).notNull(),role:de("role").notNull().default("member"),createdAt:je("created_at",{withTimezone:!0}).defaultNow()},e=>[Mo({columns:[e.userId,e.teamId]})]);var o=$r("profiles",{id:Ho("id").primaryKey(),email:et("email"),displayName:et("display_name"),activeOrgId:Ho("active_org_id").references(()=>l.id,{onDelete:"set null"}),isSuperadmin:Ze("is_superadmin").notNull().default(!1),claudeCodePlan:et("claude_code_plan"),planSource:et("plan_source").notNull().default("detected"),setupCompletedAt:Mt("setup_completed_at",{withTimezone:!0}),liveSendSkipped:Ze("live_send_skipped").notNull().default(!1),autoAcceptSuggestions:Ze("auto_accept_suggestions").notNull().default(!0),evolutionPaused:Ze("evolution_paused").notNull().default(!1),suggestionConfidenceThreshold:Wr("suggestion_confidence_threshold").notNull().default(.7),createdAt:Mt("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Mt("updated_at",{withTimezone:!0}).defaultNow()});import{pgTable as Xr,text as Ht,timestamp as tt,uuid as ot,index as Lo}from"drizzle-orm/pg-core";var E=Xr("org_invitations",{id:ot("id").primaryKey().defaultRandom(),orgId:ot("org_id").notNull().references(()=>l.id,{onDelete:"cascade"}),email:Ht("email").notNull(),role:Ht("role").notNull().default("member"),teamId:ot("team_id").references(()=>v.id,{onDelete:"set null"}),invitedBy:ot("invited_by").notNull().references(()=>o.id,{onDelete:"cascade"}),token:Ht("token").notNull().unique(),expiresAt:tt("expires_at",{withTimezone:!0}).notNull(),acceptedAt:tt("accepted_at",{withTimezone:!0}),revokedAt:tt("revoked_at",{withTimezone:!0}),createdAt:tt("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Lo("idx_org_invitations_token").on(e.token),Lo("idx_org_invitations_org").on(e.orgId)]);import{pgTable as Lt,text as f,timestamp as U,jsonb as nt,uuid as j,integer as rt,boolean as Zr,uniqueIndex as st,index as ze}from"drizzle-orm/pg-core";var n=Lt("instructions",{id:j("id").primaryKey().defaultRandom(),name:f("name").notNull(),description:f("description").notNull(),type:f("type").notNull().default("instruction"),scope:f("scope").notNull(),scopeRef:j("scope_ref"),version:f("version").notNull(),content:f("content").notNull(),frontmatter:nt("frontmatter").notNull(),slots:nt("slots"),tags:f("tags").array(),compatibility:f("compatibility").array(),createdBy:j("created_by"),createdAt:U("created_at",{withTimezone:!0}).defaultNow(),updatedAt:U("updated_at",{withTimezone:!0}).defaultNow(),archived:Zr("archived").default(!1),archivedAt:U("archived_at",{withTimezone:!0}),archivedBy:j("archived_by"),forkedFromId:j("forked_from_id").references(()=>n.id,{onDelete:"set null"}),upstreamVersion:f("upstream_version"),badge:f("badge"),contentHash:f("content_hash"),contextIdentity:f("context_identity"),scanScore:rt("scan_score"),scanFindings:nt("scan_findings"),popularityScore:rt("popularity_score"),sourceUpdatedAt:U("source_updated_at",{withTimezone:!0})},e=>[st("instructions_name_scope_ref_idx").on(e.name,e.scope,e.scopeRef),ze("idx_instructions_scope").on(e.scope,e.scopeRef),ze("idx_instructions_created_by").on(e.createdBy),ze("idx_instructions_context_identity").on(e.createdBy,e.contextIdentity),ze("idx_instructions_public_recency").on(e.scope,e.sourceUpdatedAt.desc())]),Uo=Lt("instruction_version_identities",{id:j("id").primaryKey().defaultRandom(),instructionId:j("instruction_id").notNull().references(()=>n.id,{onDelete:"cascade"}),contentHash:f("content_hash").notNull(),versionOrdinal:rt("version_ordinal").notNull(),content:f("content"),firstSeenAt:U("first_seen_at",{withTimezone:!0}).notNull().defaultNow(),lastSeenAt:U("last_seen_at",{withTimezone:!0}).notNull().defaultNow(),createdAt:U("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[st("instruction_version_identities_hash_unique").on(e.instructionId,e.contentHash),st("instruction_version_identities_ordinal_unique").on(e.instructionId,e.versionOrdinal),ze("idx_ivi_instruction").on(e.instructionId)]),ce=Lt("instruction_versions",{id:j("id").primaryKey().defaultRandom(),instructionId:j("instruction_id").references(()=>n.id,{onDelete:"cascade"}),versionNumber:rt("version_number").notNull(),content:f("content").notNull(),frontmatter:nt("frontmatter").notNull(),changeSummary:f("change_summary"),createdBy:j("created_by"),createdAt:U("created_at",{withTimezone:!0}).defaultNow()},e=>[st("instruction_versions_instruction_version_idx").on(e.instructionId,e.versionNumber)]);import{pgTable as es,text as ts,timestamp as os,jsonb as ns,uuid as Ut,index as Bo}from"drizzle-orm/pg-core";var me=es("instruction_events",{id:Ut("id").primaryKey().defaultRandom(),instructionId:Ut("instruction_id").notNull().references(()=>n.id,{onDelete:"cascade"}),eventType:ts("event_type").notNull(),actorId:Ut("actor_id").notNull(),metadata:ns("metadata"),createdAt:os("created_at",{withTimezone:!0}).defaultNow()},e=>[Bo("idx_instruction_events_instruction").on(e.instructionId),Bo("idx_instruction_events_type").on(e.eventType)]);import{boolean as rs,jsonb as ss,pgTable as Vt,primaryKey as Vo,text as Z,timestamp as Re,uniqueIndex as Bt,uuid as ee}from"drizzle-orm/pg-core";import{sql as is}from"drizzle-orm";var r=Vt("projects",{id:ee("id").primaryKey().defaultRandom(),orgId:ee("org_id").references(()=>l.id,{onDelete:"cascade"}),name:Z("name").notNull(),description:Z("description"),githubRepo:Z("github_repo"),gitRemoteUrl:Z("git_remote_url"),gitRootCommit:Z("git_root_commit"),gitRemoteAliases:Z("git_remote_aliases").array().notNull().default([]),metadata:ss("metadata"),createdBy:ee("created_by"),createdAt:Re("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Re("updated_at",{withTimezone:!0}).defaultNow()},e=>[Bt("projects_org_name_idx").on(e.orgId,e.name),Bt("projects_git_remote_url_unique").on(e.gitRemoteUrl).where(is`${e.gitRemoteUrl} IS NOT NULL`)]),B=Vt("project_instructions",{projectId:ee("project_id").references(()=>r.id,{onDelete:"cascade"}).notNull(),instructionId:ee("instruction_id").references(()=>n.id,{onDelete:"cascade"}).notNull(),addedAt:Re("added_at",{withTimezone:!0}).defaultNow(),addedBy:ee("added_by")},e=>[Vo({columns:[e.projectId,e.instructionId]})]),Go=Vt("project_checkouts",{projectId:ee("project_id").references(()=>r.id,{onDelete:"cascade"}).notNull(),path:Z("path").notNull(),isWorktree:rs("is_worktree").notNull().default(!1),firstSeen:Re("first_seen",{withTimezone:!0}).notNull().defaultNow(),lastSeen:Re("last_seen",{withTimezone:!0}).notNull().defaultNow()},e=>[Vo({columns:[e.projectId,e.path]}),Bt("project_checkouts_path_unique").on(e.path)]);import{pgTable as Jt,text as I,timestamp as ke,jsonb as te,uuid as b,integer as at,uniqueIndex as Jo,index as z}from"drizzle-orm/pg-core";import{pgTable as as,text as _e,timestamp as Gt,jsonb as Fo,uuid as it,integer as ds,boolean as us,index as Ft}from"drizzle-orm/pg-core";var g=as("agent_runs",{id:it("id").primaryKey().defaultRandom(),userId:it("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),orgId:it("org_id").references(()=>l.id,{onDelete:"set null"}),projectId:it("project_id").references(()=>r.id,{onDelete:"set null"}),projectPath:_e("project_path"),gitRemote:_e("git_remote"),baseBranch:_e("base_branch"),title:_e("title"),prompt:_e("prompt"),toolSpec:Fo("tool_spec").notNull().default([]),autoWorktree:us("auto_worktree").notNull().default(!0),status:_e("status").notNull().default("pending"),sessionCount:ds("session_count").notNull().default(0),metadata:Fo("metadata").notNull().default({}),createdAt:Gt("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:Gt("updated_at",{withTimezone:!0}).notNull().defaultNow(),completedAt:Gt("completed_at",{withTimezone:!0})},e=>[Ft("idx_agent_runs_user").on(e.userId),Ft("idx_agent_runs_org_created").on(e.orgId,e.createdAt),Ft("idx_agent_runs_project").on(e.projectId)]);var u=Jt("sessions",{id:b("id").primaryKey().defaultRandom(),userId:b("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),externalSessionId:I("external_session_id"),projectId:b("project_id").references(()=>r.id,{onDelete:"set null"}),orgId:b("org_id").references(()=>l.id,{onDelete:"set null"}),tool:I("tool").notNull(),projectPath:I("project_path"),gitBranch:I("git_branch"),startedAt:ke("started_at",{withTimezone:!0}).notNull(),endedAt:ke("ended_at",{withTimezone:!0}),eventCount:at("event_count").default(0),tokenUsage:te("token_usage"),analysis:te("analysis"),analyzedAt:ke("analyzed_at",{withTimezone:!0}),analyzedEventCount:at("analyzed_event_count"),analyzedTurnCount:at("analyzed_turn_count"),metadata:te("metadata").default({}),origin:I("origin").notNull().default("unknown"),runId:b("run_id").references(()=>g.id,{onDelete:"set null"}),model:I("model"),harnessVersion:I("harness_version"),createdAt:ke("created_at",{withTimezone:!0}).defaultNow()},e=>[z("idx_sessions_user").on(e.userId),z("idx_sessions_tool").on(e.tool),z("idx_sessions_started_at").on(e.startedAt),z("idx_sessions_project").on(e.projectId),z("idx_sessions_org_started_at").on(e.orgId,e.startedAt),z("idx_sessions_run").on(e.runId),Jo("idx_sessions_user_external").on(e.userId,e.externalSessionId)]),pe=Jt("session_events",{id:b("id").primaryKey().defaultRandom(),sessionId:b("session_id").notNull().references(()=>u.id,{onDelete:"cascade"}),sequence:at("sequence").notNull(),eventType:I("event_type").notNull(),content:I("content"),toolName:I("tool_name"),toolInput:te("tool_input"),toolOutput:te("tool_output"),tokenUsage:te("token_usage"),model:I("model"),timestamp:ke("timestamp",{withTimezone:!0}).notNull(),metadata:te("metadata").default({})},e=>[Jo("session_events_session_sequence_idx").on(e.sessionId,e.sequence),z("idx_session_events_session_id").on(e.sessionId),z("idx_session_events_event_type").on(e.eventType),z("idx_session_events_model").on(e.model)]),V=Jt("session_instructions",{sessionId:b("session_id").notNull().references(()=>u.id,{onDelete:"cascade"}),instructionId:b("instruction_id").notNull().references(()=>n.id,{onDelete:"cascade"}),linkMethod:I("link_method").notNull(),contentHash:I("content_hash")},e=>[z("idx_session_instructions_instruction_id").on(e.instructionId)]);import{pgTable as Qo,text as dt,timestamp as Yo,uuid as R,integer as $o,index as fe,unique as ls}from"drizzle-orm/pg-core";var S=Qo("treatment_assignments",{id:R("id").primaryKey().defaultRandom(),userId:R("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),treatmentType:dt("treatment_type").notNull(),treatmentId:R("treatment_id").notNull(),treatmentVersion:$o("treatment_version").notNull().default(1),projectId:R("project_id").references(()=>r.id,{onDelete:"set null"}),assignedBy:R("assigned_by").references(()=>o.id,{onDelete:"set null"}),method:dt("method").notNull(),assignedAt:Yo("assigned_at",{withTimezone:!0}).notNull().defaultNow()},e=>[fe("idx_treatment_assignments_user").on(e.userId),fe("idx_treatment_assignments_treatment").on(e.treatmentType,e.treatmentId),fe("idx_treatment_assignments_project").on(e.projectId)]),P=Qo("treatment_exposures",{id:R("id").primaryKey().defaultRandom(),sessionId:R("session_id").notNull().references(()=>u.id,{onDelete:"cascade"}),userId:R("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),treatmentType:dt("treatment_type").notNull(),treatmentId:R("treatment_id").notNull(),treatmentVersion:$o("treatment_version").notNull().default(1),assignmentId:R("assignment_id").references(()=>S.id,{onDelete:"set null"}),method:dt("method").notNull(),exposedAt:Yo("exposed_at",{withTimezone:!0}).notNull().defaultNow()},e=>[ls("treatment_exposures_unique").on(e.sessionId,e.treatmentType,e.treatmentId,e.treatmentVersion),fe("idx_treatment_exposures_treatment").on(e.treatmentType,e.treatmentId),fe("idx_treatment_exposures_user").on(e.userId),fe("idx_treatment_exposures_session").on(e.sessionId)]);import{pgTable as cs,text as Qt,timestamp as ms,uuid as ut,integer as _s,index as Wo,uniqueIndex as ps}from"drizzle-orm/pg-core";var Xo=cs("pending_treatment_exposures",{id:ut("id").primaryKey().defaultRandom(),userId:ut("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),externalSessionId:Qt("external_session_id").notNull(),treatmentType:Qt("treatment_type").notNull(),treatmentId:ut("treatment_id").notNull(),treatmentVersion:_s("treatment_version").notNull().default(1),method:Qt("method").notNull().default("injected"),projectId:ut("project_id").references(()=>r.id,{onDelete:"set null"}),createdAt:ms("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[ps("pending_treatment_exposures_unique").on(e.externalSessionId,e.treatmentType,e.treatmentId,e.treatmentVersion),Wo("idx_pending_treatment_exposures_ext").on(e.externalSessionId),Wo("idx_pending_treatment_exposures_user").on(e.userId)]);import{pgTable as Zo,text as G,timestamp as en,uuid as xe,numeric as fs,index as Yt,unique as xs}from"drizzle-orm/pg-core";var Ee=Zo("instruction_experiments",{id:xe("id").primaryKey().defaultRandom(),userId:xe("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),instructionId:xe("instruction_id").notNull().references(()=>n.id,{onDelete:"cascade"}),projectPath:G("project_path").notNull(),status:G("status").notNull().default("running"),treatedShare:fs("treated_share").notNull().default("0.5"),salt:G("salt").notNull(),contentHash:G("content_hash"),source:G("source").notNull().default("manual"),stoppedReason:G("stopped_reason"),createdAt:en("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Yt("idx_instruction_experiments_lookup").on(e.userId,e.projectPath)]),tn=Zo("instruction_experiment_arms",{id:xe("id").primaryKey().defaultRandom(),experimentId:xe("experiment_id").notNull().references(()=>Ee.id,{onDelete:"cascade"}),userId:xe("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),externalSessionId:G("external_session_id").notNull(),arm:G("arm").notNull(),assignedAt:en("assigned_at",{withTimezone:!0}).notNull().defaultNow()},e=>[xs("instruction_experiment_arms_unique").on(e.experimentId,e.externalSessionId),Yt("idx_instruction_experiment_arms_experiment").on(e.experimentId,e.arm),Yt("idx_instruction_experiment_arms_session").on(e.externalSessionId)]);import{pgTable as Ns,text as $t,timestamp as gs,uuid as lt,numeric as Wt,integer as on,jsonb as hs,index as vs,unique as Is}from"drizzle-orm/pg-core";var nn=Ns("instruction_verdicts",{id:lt("id").primaryKey().defaultRandom(),userId:lt("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),instructionId:lt("instruction_id").notNull().references(()=>n.id,{onDelete:"cascade"}),contentHash:$t("content_hash").notNull(),projectPath:$t("project_path").notNull(),segment:hs("segment").notNull().default({}),decision:$t("decision").notNull(),delta:Wt("delta").notNull(),ciLower:Wt("ci_lower").notNull(),ciUpper:Wt("ci_upper").notNull(),nTreated:on("n_treated").notNull(),nControl:on("n_control").notNull(),experimentId:lt("experiment_id").references(()=>Ee.id,{onDelete:"set null"}),decidedAt:gs("decided_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Is("instruction_verdicts_unique").on(e.instructionId,e.contentHash,e.projectPath),vs("idx_instruction_verdicts_render").on(e.userId,e.projectPath)]);import{pgTable as ys,text as ct,timestamp as Xt,uuid as Zt,integer as Ts,unique as ws,index as As}from"drizzle-orm/pg-core";var rn=ys("insight_recommendation_log",{id:Zt("id").primaryKey().defaultRandom(),userId:Zt("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),projectPath:ct("project_path").notNull().default(""),category:ct("category").notNull(),contentHash:ct("content_hash").notNull(),label:ct("label").notNull().default(""),firstSeenAt:Xt("first_seen_at",{withTimezone:!0}).notNull().defaultNow(),lastSeenAt:Xt("last_seen_at",{withTimezone:!0}).notNull().defaultNow(),timesGenerated:Ts("times_generated").notNull().default(1),lastJobId:Zt("last_job_id"),dismissedAt:Xt("dismissed_at",{withTimezone:!0})},e=>[ws("insight_recommendation_log_unique").on(e.userId,e.projectPath,e.contentHash),As("idx_insight_recommendation_log_read").on(e.userId,e.projectPath)]);import{pgTable as Ds,text as Ne,timestamp as eo,uuid as be,integer as sn,index as mt}from"drizzle-orm/pg-core";var y=Ds("memories",{id:be("id").primaryKey().defaultRandom(),userId:be("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),orgId:be("org_id"),projectId:be("project_id").references(()=>r.id,{onDelete:"set null"}),version:sn("version").notNull().default(1),parentId:be("parent_id").references(()=>y.id,{onDelete:"set null"}),kind:Ne("kind").notNull(),title:Ne("title").notNull(),body:Ne("body").notNull(),source:Ne("source").notNull(),status:Ne("status").notNull().default("active"),trustClass:Ne("trust_class"),trustVersion:sn("trust_version"),trustComputedAt:eo("trust_computed_at",{withTimezone:!0}),createdAt:eo("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:eo("updated_at",{withTimezone:!0}).notNull().defaultNow()},e=>[mt("idx_memories_user").on(e.userId),mt("idx_memories_project").on(e.projectId),mt("idx_memories_parent").on(e.parentId),mt("idx_memories_user_status").on(e.userId,e.status)]);import{pgTable as js,text as Se,timestamp as to,uuid as oo,integer as an,jsonb as zs,index as dn}from"drizzle-orm/pg-core";var un=js("memory_experiments",{id:oo("id").primaryKey().defaultRandom(),memoryId:oo("memory_id").notNull().references(()=>y.id,{onDelete:"cascade"}),userId:oo("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),memoryVersion:an("memory_version").notNull().default(1),taskPrompt:Se("task_prompt").notNull(),expectations:Se("expectations").array().notNull().default([]),trials:an("trials").notNull().default(10),model:Se("model"),status:Se("status").notNull().default("pending"),result:zs("result").$type(),error:Se("error"),createdAt:to("created_at",{withTimezone:!0}).notNull().defaultNow(),startedAt:to("started_at",{withTimezone:!0}),completedAt:to("completed_at",{withTimezone:!0})},e=>[dn("idx_memory_experiments_memory").on(e.memoryId),dn("idx_memory_experiments_user").on(e.userId)]);import{pgTable as Rs,text as ge,timestamp as no,uuid as ro,jsonb as ks,uniqueIndex as Es,index as ln}from"drizzle-orm/pg-core";var _t=Rs("session_terminal_targets",{id:ro("id").primaryKey().defaultRandom(),userId:ro("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),sessionId:ro("session_id").references(()=>u.id,{onDelete:"set null"}),externalSessionId:ge("external_session_id"),kind:ge("kind").notNull(),target:ge("target").notNull(),status:ge("status").notNull().default("active"),attachCommand:ge("attach_command").notNull(),projectPath:ge("project_path"),metadata:ks("metadata").notNull().default({}),lastSeenAt:no("last_seen_at",{withTimezone:!0}).defaultNow(),createdAt:no("created_at",{withTimezone:!0}).defaultNow(),updatedAt:no("updated_at",{withTimezone:!0}).defaultNow()},e=>[Es("idx_session_terminal_targets_user_target").on(e.userId,e.target),ln("idx_session_terminal_targets_session").on(e.sessionId),ln("idx_session_terminal_targets_user_status").on(e.userId,e.status)]);import{boolean as bs,index as pt,jsonb as cn,pgTable as Ss,text as oe,timestamp as Pe,uuid as ft,integer as mn}from"drizzle-orm/pg-core";var _n=Ss("session_send_jobs",{id:ft("id").primaryKey().defaultRandom(),userId:ft("user_id").notNull(),sessionId:ft("session_id").notNull().references(()=>u.id,{onDelete:"cascade"}),terminalTargetId:ft("terminal_target_id").references(()=>_t.id,{onDelete:"set null"}),target:oe("target").notNull(),message:oe("message").notNull(),submit:bs("submit").notNull().default(!0),delivery:oe("delivery").notNull().default("live"),status:oe("status").notNull().default("pending"),result:cn("result"),error:oe("error"),attempts:mn("attempts").notNull().default(0),taskKind:oe("task_kind"),payload:cn("payload"),claimedBy:oe("claimed_by"),claimedAt:Pe("claimed_at",{withTimezone:!0}),leaseExpiresAt:Pe("lease_expires_at",{withTimezone:!0}),leaseRecoveries:mn("lease_recoveries").notNull().default(0),createdAt:Pe("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Pe("updated_at",{withTimezone:!0}).defaultNow(),completedAt:Pe("completed_at",{withTimezone:!0})},e=>[pt("idx_session_send_jobs_user").on(e.userId),pt("idx_session_send_jobs_session").on(e.sessionId),pt("idx_session_send_jobs_status").on(e.status),pt("idx_session_send_jobs_pending").on(e.userId,e.status)]);import{pgTable as fn,text as ne,timestamp as xt,jsonb as xn,uuid as F,integer as Ps,boolean as Ks,uniqueIndex as Cs,index as pn,primaryKey as Os}from"drizzle-orm/pg-core";var D=fn("packs",{id:F("id").primaryKey().defaultRandom(),name:ne("name").notNull(),description:ne("description").notNull(),scope:ne("scope").notNull(),scopeRef:F("scope_ref"),version:ne("version").notNull().default("1.0.0"),tags:ne("tags").array(),badge:ne("badge"),metadata:xn("metadata"),createdBy:F("created_by"),createdAt:xt("created_at",{withTimezone:!0}).defaultNow(),updatedAt:xt("updated_at",{withTimezone:!0}).defaultNow(),archived:Ks("archived").default(!1),archivedAt:xt("archived_at",{withTimezone:!0}),archivedBy:F("archived_by"),forkedFromId:F("forked_from_id").references(()=>D.id,{onDelete:"set null"}),upstreamVersion:ne("upstream_version")},e=>[Cs("packs_name_scope_ref_idx").on(e.name,e.scope,e.scopeRef),pn("idx_packs_scope").on(e.scope,e.scopeRef),pn("idx_packs_created_by").on(e.createdBy)]),J=fn("pack_instructions",{packId:F("pack_id").references(()=>D.id,{onDelete:"cascade"}).notNull(),instructionId:F("instruction_id").references(()=>n.id,{onDelete:"cascade"}).notNull(),position:Ps("position").notNull().default(0),slotOverrides:xn("slot_overrides"),addedAt:xt("added_at",{withTimezone:!0}).defaultNow(),addedBy:F("added_by")},e=>[Os({columns:[e.packId,e.instructionId]})]);import{pgTable as qs,text as so,timestamp as Ms,jsonb as Hs,uuid as io,index as he}from"drizzle-orm/pg-core";var ve=qs("instruction_usage_events",{id:io("id").primaryKey().defaultRandom(),instructionId:io("instruction_id").references(()=>n.id,{onDelete:"set null"}),userId:io("user_id").notNull(),surface:so("surface").notNull(),action:so("action").notNull(),metadata:Hs("metadata"),traceId:so("trace_id"),createdAt:Ms("created_at",{withTimezone:!0}).defaultNow()},e=>[he("idx_usage_events_instruction").on(e.instructionId),he("idx_usage_events_user").on(e.userId),he("idx_usage_events_surface").on(e.surface),he("idx_usage_events_action").on(e.action),he("idx_usage_events_created_at").on(e.createdAt),he("idx_usage_events_user_created").on(e.userId,e.createdAt)]);import{pgTable as Ls,text as Nt,timestamp as Nn,jsonb as Us,uuid as gn,index as ao}from"drizzle-orm/pg-core";var hn=Ls("worker_connections",{id:gn("id").primaryKey().defaultRandom(),userId:gn("user_id").notNull(),workerType:Nt("worker_type").notNull().default("mcp"),clientName:Nt("client_name").notNull(),clientVersion:Nt("client_version"),workerVersion:Nt("worker_version"),lastHeartbeat:Nn("last_heartbeat",{withTimezone:!0}).notNull().defaultNow(),connectedAt:Nn("connected_at",{withTimezone:!0}).notNull().defaultNow(),metadata:Us("metadata")},e=>[ao("idx_worker_connections_user").on(e.userId),ao("idx_worker_connections_heartbeat").on(e.userId,e.lastHeartbeat),ao("idx_worker_connections_type").on(e.userId,e.workerType)]);import{pgTable as Bs,text as gt,timestamp as Vs,jsonb as Gs,uuid as vn,index as In}from"drizzle-orm/pg-core";var yn=Bs("cli_setup_events",{id:vn("id").primaryKey().defaultRandom(),userId:vn("user_id").notNull(),deviceId:gt("device_id").notNull(),event:gt("event").notNull(),cliVersion:gt("cli_version"),os:gt("os"),props:Gs("props").notNull().default({}),createdAt:Vs("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[In("idx_cli_setup_events_user").on(e.userId,e.createdAt),In("idx_cli_setup_events_device").on(e.deviceId,e.createdAt)]);import{pgTable as Fs,text as re,integer as Js,boolean as Qs,timestamp as Ys,jsonb as $s,uuid as Ws,index as Tn}from"drizzle-orm/pg-core";var wn=Fs("cli_error_events",{id:Ws("id").primaryKey().defaultRandom(),deviceId:re("device_id"),event:re("event").notNull(),command:re("command"),statusCode:Js("status_code"),message:re("message"),cliVersion:re("cli_version"),os:re("os"),nodeVersion:re("node_version"),proxied:Qs("proxied"),props:$s("props").notNull().default({}),createdAt:Ys("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Tn("idx_cli_error_events_created").on(e.createdAt),Tn("idx_cli_error_events_device").on(e.deviceId,e.createdAt)]);import{sql as Xs}from"drizzle-orm";import{pgTable as se,text as m,timestamp as h,jsonb as T,uuid as c,integer as K,boolean as Ke,index as x,unique as An}from"drizzle-orm/pg-core";var s=se("eval_targets",{id:c("id").primaryKey().defaultRandom(),userId:c("user_id").notNull(),name:m("name").notNull(),type:m("type").notNull(),content:m("content").notNull(),description:m("description").notNull().default(""),metadata:T("metadata").notNull().default({}),version:K("version").notNull().default(1),parentId:c("parent_id").references(()=>s.id,{onDelete:"set null"}),createdAt:h("created_at",{withTimezone:!0}).defaultNow(),updatedAt:h("updated_at",{withTimezone:!0}).defaultNow()},e=>[x("eval_targets_name_user_idx").on(e.name,e.userId),x("idx_eval_targets_user").on(e.userId),x("idx_eval_targets_type").on(e.type),x("idx_eval_targets_parent").on(e.parentId)]),C=se("evals",{id:c("id").primaryKey().defaultRandom(),evalTargetId:c("eval_target_id").notNull().references(()=>s.id,{onDelete:"cascade"}),name:m("name").notNull(),prompt:m("prompt").notNull(),expectedOutput:m("expected_output").notNull().default(""),files:T("files").notNull().default([]),expectations:T("expectations").notNull().default([]),retiredAt:h("retired_at",{withTimezone:!0}),retiredReason:m("retired_reason"),createdAt:h("created_at",{withTimezone:!0}).defaultNow(),updatedAt:h("updated_at",{withTimezone:!0}).defaultNow(),contentUpdatedAt:h("content_updated_at",{withTimezone:!0}).notNull().defaultNow()},e=>[x("idx_evals_target").on(e.evalTargetId),x("idx_evals_target_active").on(e.evalTargetId).where(Xs`${e.retiredAt} IS NULL`)]),k=se("eval_runs",{id:c("id").primaryKey().defaultRandom(),jobId:c("job_id"),evalId:c("eval_id").notNull().references(()=>C.id,{onDelete:"cascade"}),evalTargetId:c("eval_target_id").notNull().references(()=>s.id,{onDelete:"cascade"}),evalTargetVersion:K("eval_target_version").notNull(),configuration:m("configuration").notNull(),runNumber:K("run_number").notNull().default(1),iteration:K("iteration").notNull().default(1),status:m("status").notNull().default("completed"),outputs:T("outputs").notNull().default({}),timing:T("timing").notNull().default({}),grading:T("grading").notNull().default({}),comparison:T("comparison"),createdAt:h("created_at",{withTimezone:!0}).defaultNow()},e=>[x("idx_eval_runs_eval").on(e.evalId),x("idx_eval_runs_target").on(e.evalTargetId),x("idx_eval_runs_iteration").on(e.evalTargetId,e.iteration)]),Dn=se("eval_comparisons",{id:c("id").primaryKey().defaultRandom(),userId:c("user_id").notNull(),targetAId:c("target_a_id").notNull().references(()=>s.id,{onDelete:"cascade"}),targetBId:c("target_b_id").notNull().references(()=>s.id,{onDelete:"cascade"}),targetAVersion:K("target_a_version").notNull(),targetBVersion:K("target_b_version").notNull(),isSwapped:Ke("is_swapped").notNull().default(!1),winnerTargetId:c("winner_target_id").references(()=>s.id,{onDelete:"set null"}),perEval:T("per_eval").notNull().default([]),overall:T("overall").notNull().default({}),rawOutput:m("raw_output"),model:m("model"),status:m("status").notNull().default("completed"),createdAt:h("created_at",{withTimezone:!0}).defaultNow()},e=>[x("idx_eval_comparisons_target_a").on(e.targetAId),x("idx_eval_comparisons_target_b").on(e.targetBId),x("idx_eval_comparisons_user").on(e.userId)]),jn=se("eval_grade_annotations",{id:c("id").primaryKey().defaultRandom(),userId:c("user_id").notNull(),evalRunId:c("eval_run_id").notNull().references(()=>k.id,{onDelete:"cascade"}),evalTargetId:c("eval_target_id").notNull().references(()=>s.id,{onDelete:"cascade"}),expectationIndex:K("expectation_index").notNull(),expectationText:m("expectation_text").notNull(),judgePassed:Ke("judge_passed").notNull(),judgeMethod:m("judge_method").notNull(),judgeModel:m("judge_model"),verdict:m("verdict").notNull(),flag:m("flag"),note:m("note"),createdAt:h("created_at",{withTimezone:!0}).defaultNow(),updatedAt:h("updated_at",{withTimezone:!0}).defaultNow()},e=>[x("idx_eval_grade_annotations_target").on(e.evalTargetId),x("idx_eval_grade_annotations_run").on(e.evalRunId),An("eval_grade_annotations_eval_run_id_expectation_index_key").on(e.evalRunId,e.expectationIndex)]),zn=se("judge_reviewer_verdicts",{id:c("id").primaryKey().defaultRandom(),userId:c("user_id").notNull(),evalTargetId:c("eval_target_id").notNull().references(()=>s.id,{onDelete:"cascade"}),evalRunId:c("eval_run_id").notNull().references(()=>k.id,{onDelete:"cascade"}),expectationIndex:K("expectation_index").notNull(),expectationText:m("expectation_text").notNull(),judgePassed:Ke("judge_passed").notNull(),humanPassed:Ke("human_passed").notNull(),reviewerEngine:m("reviewer_engine").notNull(),reviewerModel:m("reviewer_model").notNull(),reviewerPassed:Ke("reviewer_passed").notNull(),resolvedAt:h("resolved_at",{withTimezone:!0}),resolution:m("resolution"),createdAt:h("created_at",{withTimezone:!0}).defaultNow(),updatedAt:h("updated_at",{withTimezone:!0}).defaultNow()},e=>[x("idx_jrv_target").on(e.evalTargetId),An("judge_reviewer_verdicts_eval_run_id_expectation_index_review_key").on(e.evalRunId,e.expectationIndex,e.reviewerModel)]),Ie=se("benchmarks",{id:c("id").primaryKey().defaultRandom(),evalTargetId:c("eval_target_id").notNull().references(()=>s.id,{onDelete:"cascade"}),iteration:K("iteration").notNull().default(1),runSummary:T("run_summary").notNull().default({}),notes:T("notes").notNull().default([]),feedback:T("feedback"),createdAt:h("created_at",{withTimezone:!0}).defaultNow()},e=>[x("idx_benchmarks_target").on(e.evalTargetId)]);import{sql as uo}from"drizzle-orm";import{pgTable as Zs,text as O,timestamp as ei,jsonb as ht,uuid as vt,boolean as ti,index as Ce,uniqueIndex as oi}from"drizzle-orm/pg-core";var Rn=Zs("instruction_promotions",{id:vt("id").primaryKey().defaultRandom(),userId:vt("user_id").notNull(),evalTargetId:vt("eval_target_id").notNull().references(()=>s.id,{onDelete:"cascade"}),instructionId:vt("instruction_id").references(()=>n.id,{onDelete:"set null"}),fromContentHash:O("from_content_hash").notNull(),toContentHash:O("to_content_hash").notNull(),fromContent:O("from_content").notNull(),toContent:O("to_content").notNull(),proposalSource:O("proposal_source").notNull(),proposalRationale:O("proposal_rationale").notNull().default(""),decision:O("decision").notNull(),applied:ti("applied").notNull().default(!1),refusals:ht("refusals").notNull().default([]),rationale:O("rationale").notNull().default(""),effectClass:O("effect_class").notNull(),verdict:ht("verdict").notNull().default({}),gates:ht("gates").notNull().default({}),touchedSections:ht("touched_sections").notNull().default([]),createdAt:ei("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Ce("idx_instruction_promotions_budget").on(e.evalTargetId,e.createdAt.desc()).where(uo`${e.applied}`),Ce("idx_instruction_promotions_target").on(e.evalTargetId,e.createdAt.desc()),Ce("idx_instruction_promotions_user").on(e.userId,e.createdAt.desc()),Ce("idx_instruction_promotions_to_hash").on(e.toContentHash),oi("uq_instruction_promotions_applied").on(e.evalTargetId,e.fromContentHash,e.toContentHash).where(uo`${e.applied}`),Ce("idx_instruction_promotions_applied_hash").on(e.toContentHash,e.createdAt.desc()).where(uo`${e.applied}`)]);import{pgTable as ni,text as Q,timestamp as ri,jsonb as Oe,uuid as lo,integer as co,real as si,index as qe,uniqueIndex as kn}from"drizzle-orm/pg-core";var Y=ni("context_snapshots",{id:lo("id").primaryKey().defaultRandom(),sessionId:lo("session_id").references(()=>u.id,{onDelete:"cascade"}),userId:lo("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),sequence:co("sequence").notNull().default(0),provider:Q("provider").notNull(),model:Q("model").notNull(),systemPrompt:Q("system_prompt").notNull(),injectedInstructions:Oe("injected_instructions").notNull().default([]),messagesSummary:Oe("messages_summary").notNull(),tools:Oe("tools").notNull().default([]),systemHash:Q("system_hash").notNull(),requestHash:Q("request_hash").notNull().default(""),toolsHash:Q("tools_hash"),injectedHash:Q("injected_hash"),messagesDelta:Oe("messages_delta").default([]),messagesDeltaRef:Q("messages_delta_ref"),maxTokens:co("max_tokens"),temperature:si("temperature"),estimatedTokens:co("estimated_tokens"),capturedAt:ri("captured_at",{withTimezone:!0}).notNull().defaultNow(),metadata:Oe("metadata").default({})},e=>[qe("idx_context_snapshots_session").on(e.sessionId),qe("idx_context_snapshots_user").on(e.userId),qe("idx_context_snapshots_hash").on(e.systemHash),qe("idx_context_snapshots_request_hash").on(e.requestHash),kn("idx_snapshots_session_request").on(e.sessionId,e.requestHash),kn("idx_snapshots_session_sequence").on(e.sessionId,e.sequence),qe("idx_context_snapshots_user_session_captured").on(e.userId,e.sessionId,e.capturedAt.desc())]);import{pgTable as ii,text as En,timestamp as ai,jsonb as di,integer as ui,index as li}from"drizzle-orm/pg-core";var bn=ii("content_blobs",{hash:En("hash").primaryKey(),contentType:En("content_type").notNull(),content:di("content").notNull(),sizeBytes:ui("size_bytes").notNull().default(0),createdAt:ai("created_at",{withTimezone:!0}).defaultNow()},e=>[li("idx_content_blobs_type").on(e.contentType)]);import{pgTable as ci,text as It,timestamp as Me,jsonb as yt,uuid as mo,index as Tt,integer as Sn}from"drizzle-orm/pg-core";var ye=ci("eval_jobs",{id:mo("id").primaryKey().defaultRandom(),userId:mo("user_id").notNull(),evalTargetId:mo("eval_target_id").notNull().references(()=>s.id,{onDelete:"cascade"}),status:It("status").notNull().default("pending"),config:yt("config").notNull().default({}),progress:yt("progress").notNull().default({}),result:yt("result"),error:It("error"),attempts:Sn("attempts").notNull().default(0),taskKind:It("task_kind"),payload:yt("payload"),claimedBy:It("claimed_by"),claimedAt:Me("claimed_at",{withTimezone:!0}),leaseExpiresAt:Me("lease_expires_at",{withTimezone:!0}),leaseRecoveries:Sn("lease_recoveries").notNull().default(0),createdAt:Me("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Me("updated_at",{withTimezone:!0}).defaultNow(),completedAt:Me("completed_at",{withTimezone:!0})},e=>[Tt("idx_eval_jobs_user").on(e.userId),Tt("idx_eval_jobs_target").on(e.evalTargetId),Tt("idx_eval_jobs_status").on(e.status),Tt("idx_eval_jobs_pending").on(e.userId,e.status)]);import{pgTable as mi,text as He,timestamp as Le,jsonb as Pn,uuid as Kn,integer as Cn,index as On}from"drizzle-orm/pg-core";var qn=mi("agent_jobs",{id:Kn("id").primaryKey().defaultRandom(),userId:Kn("user_id").notNull(),taskKind:He("task_kind").notNull(),status:He("status").notNull().default("pending"),payload:Pn("payload").notNull(),dedupeKey:He("dedupe_key"),result:Pn("result"),error:He("error"),attempts:Cn("attempts").notNull().default(0),claimedBy:He("claimed_by"),claimedAt:Le("claimed_at",{withTimezone:!0}),leaseExpiresAt:Le("lease_expires_at",{withTimezone:!0}),leaseRecoveries:Cn("lease_recoveries").notNull().default(0),createdAt:Le("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:Le("updated_at",{withTimezone:!0}).notNull().defaultNow(),completedAt:Le("completed_at",{withTimezone:!0})},e=>[On("idx_agent_jobs_claim").on(e.userId,e.status,e.taskKind,e.createdAt),On("idx_agent_jobs_dedupe").on(e.userId,e.taskKind,e.dedupeKey)]);import{pgTable as _i,text as Ue,timestamp as Be,jsonb as wt,uuid as _o,index as At,integer as Mn}from"drizzle-orm/pg-core";var Hn=_i("insights_jobs",{id:_o("id").primaryKey().defaultRandom(),userId:_o("user_id").notNull(),status:Ue("status").notNull().default("pending"),projectPath:Ue("project_path"),projectId:_o("project_id").references(()=>r.id,{onDelete:"set null"}),config:wt("config").notNull().default({}),progress:wt("progress").notNull().default({}),result:wt("result"),error:Ue("error"),attempts:Mn("attempts").notNull().default(0),taskKind:Ue("task_kind"),payload:wt("payload"),claimedBy:Ue("claimed_by"),claimedAt:Be("claimed_at",{withTimezone:!0}),leaseExpiresAt:Be("lease_expires_at",{withTimezone:!0}),leaseRecoveries:Mn("lease_recoveries").notNull().default(0),createdAt:Be("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Be("updated_at",{withTimezone:!0}).defaultNow(),completedAt:Be("completed_at",{withTimezone:!0})},e=>[At("idx_insights_jobs_user").on(e.userId),At("idx_insights_jobs_status").on(e.status),At("idx_insights_jobs_pending").on(e.userId,e.status),At("idx_insights_jobs_project").on(e.projectId)]);import{pgTable as pi,text as po,timestamp as Dt,uuid as Ln,index as fi,uniqueIndex as xi}from"drizzle-orm/pg-core";var Te=pi("api_keys",{id:Ln("id").primaryKey().defaultRandom(),userId:Ln("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),name:po("name").notNull(),keyHash:po("key_hash").notNull(),keyPrefix:po("key_prefix").notNull(),lastUsedAt:Dt("last_used_at",{withTimezone:!0}),expiresAt:Dt("expires_at",{withTimezone:!0}),revokedAt:Dt("revoked_at",{withTimezone:!0}),createdAt:Dt("created_at",{withTimezone:!0}).defaultNow()},e=>[fi("idx_api_keys_user").on(e.userId),xi("idx_api_keys_hash").on(e.keyHash)]);import{pgTable as Ni,text as fo,timestamp as Un,uuid as gi,index as hi}from"drizzle-orm/pg-core";var Bn=Ni("extension_auth_codes",{code:fo("code").primaryKey(),userId:gi("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),editor:fo("editor"),email:fo("email"),expiresAt:Un("expires_at",{withTimezone:!0}).notNull(),createdAt:Un("created_at",{withTimezone:!0}).defaultNow()},e=>[hi("idx_ext_auth_codes_expiry").on(e.expiresAt)]);import{pgTable as vi,text as Ii,timestamp as Vn,jsonb as yi,uuid as xo,index as Gn}from"drizzle-orm/pg-core";var we=vi("eval_conversations",{id:xo("id").primaryKey().defaultRandom(),evalTargetId:xo("eval_target_id").notNull().references(()=>s.id,{onDelete:"cascade"}),userId:xo("user_id").notNull(),messages:yi("messages").notNull().default([]),status:Ii("status").notNull().default("active"),createdAt:Vn("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Vn("updated_at",{withTimezone:!0}).defaultNow()},e=>[Gn("idx_eval_conversations_target").on(e.evalTargetId),Gn("idx_eval_conversations_user").on(e.userId)]);import{pgTable as Ti,text as q,timestamp as Fn,jsonb as wi,uuid as No}from"drizzle-orm/pg-core";var Jn=Ti("skill_submissions",{id:No("id").primaryKey().defaultRandom(),skillId:q("skill_id").notNull(),name:q("name").notNull(),description:q("description").notNull(),category:q("category").notNull(),tools:q("tools").array().notNull(),tags:q("tags").array().default([]),content:q("content").notNull(),status:q("status").notNull().default("pending"),submittedBy:No("submitted_by").notNull(),reviewedBy:No("reviewed_by"),reviewNote:q("review_note"),metadata:wi("metadata"),createdAt:Fn("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Fn("updated_at",{withTimezone:!0}).defaultNow()});import{pgTable as Ai,text as Ve,timestamp as Qn,jsonb as Di,uuid as ji,uniqueIndex as zi,index as Yn}from"drizzle-orm/pg-core";var $n=Ai("harness_releases",{id:ji("id").primaryKey().defaultRandom(),harness:Ve("harness").notNull(),version:Ve("version").notNull(),publishedAt:Qn("published_at",{withTimezone:!0}).notNull(),title:Ve("title"),body:Ve("body"),categories:Di("categories").default({}),url:Ve("url"),createdAt:Qn("created_at",{withTimezone:!0}).defaultNow()},e=>[zi("idx_harness_releases_unique").on(e.harness,e.version),Yn("idx_harness_releases_harness").on(e.harness),Yn("idx_harness_releases_published").on(e.publishedAt)]);import{pgTable as Ri,text as Ae,timestamp as Wn,jsonb as ki,uuid as Xn,index as Zn,uniqueIndex as Ei}from"drizzle-orm/pg-core";var go=Ri("notifications",{id:Xn("id").primaryKey().defaultRandom(),userId:Xn("user_id").notNull(),type:Ae("type").notNull(),title:Ae("title").notNull(),body:Ae("body"),url:Ae("url"),sourceTable:Ae("source_table"),sourceId:Ae("source_id"),metadata:ki("metadata").notNull().default({}),readAt:Wn("read_at",{withTimezone:!0}),createdAt:Wn("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Zn("idx_notifications_user_created").on(e.userId,e.createdAt),Zn("idx_notifications_user_unread").on(e.userId),Ei("idx_notifications_source_dedup").on(e.userId,e.sourceTable,e.sourceId)]);import{pgTable as bi,text as Ge,timestamp as Fe,jsonb as ho,uuid as vo,index as jt,integer as er}from"drizzle-orm/pg-core";var De=bi("launch_jobs",{id:vo("id").primaryKey().defaultRandom(),userId:vo("user_id").notNull(),tool:Ge("tool").notNull(),status:Ge("status").notNull().default("pending"),config:ho("config").notNull().default({}),result:ho("result"),error:Ge("error"),attempts:er("attempts").notNull().default(0),taskKind:Ge("task_kind"),payload:ho("payload"),claimedBy:Ge("claimed_by"),claimedAt:Fe("claimed_at",{withTimezone:!0}),leaseExpiresAt:Fe("lease_expires_at",{withTimezone:!0}),leaseRecoveries:er("lease_recoveries").notNull().default(0),createdAt:Fe("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Fe("updated_at",{withTimezone:!0}).defaultNow(),completedAt:Fe("completed_at",{withTimezone:!0}),runId:vo("run_id").references(()=>g.id,{onDelete:"set null"})},e=>[jt("idx_launch_jobs_user").on(e.userId),jt("idx_launch_jobs_status").on(e.status),jt("idx_launch_jobs_pending").on(e.userId,e.status),jt("idx_launch_jobs_run").on(e.runId)]);import{pgTable as tr,uuid as M,text as $,real as Si,timestamp as Je,boolean as Pi,uniqueIndex as Ki,index as Qe}from"drizzle-orm/pg-core";var or=["add","remove","trim"],Io=tr("instruction_suggestions",{id:M("id").primaryKey().defaultRandom(),userId:M("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),instructionId:M("instruction_id").notNull().references(()=>n.id,{onDelete:"cascade"}),projectPath:$("project_path").notNull(),projectId:M("project_id").references(()=>r.id,{onDelete:"set null"}),score:Si("score").notNull(),reason:$("reason").notNull(),kind:$("kind").$type().notNull().default("add"),generatedAt:Je("generated_at",{withTimezone:!0}).notNull().defaultNow(),isStale:Pi("is_stale").notNull().default(!1),dismissedAt:Je("dismissed_at",{withTimezone:!0}),acceptedAt:Je("accepted_at",{withTimezone:!0}),declinedAt:Je("declined_at",{withTimezone:!0}),declinedReason:$("declined_reason"),promotedToInstructionId:M("promoted_to_instruction_id").references(()=>n.id,{onDelete:"set null"})},e=>[Ki("idx_instruction_suggestions_user_project_instruction_kind").on(e.userId,e.projectPath,e.instructionId,e.kind),Qe("idx_instruction_suggestions_user_project").on(e.userId,e.projectPath),Qe("idx_instruction_suggestions_user_proj_id").on(e.userId,e.projectId),Qe("idx_instruction_suggestions_generated_at").on(e.generatedAt)]),nr=tr("instruction_suggestion_events",{id:M("id").primaryKey().defaultRandom(),suggestionId:M("suggestion_id").notNull().references(()=>Io.id,{onDelete:"cascade"}),userId:M("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),eventType:$("event_type").notNull(),tool:$("tool"),sessionId:M("session_id"),projectPath:$("project_path").notNull(),actor:$("actor"),createdAt:Je("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Qe("idx_instruction_suggestion_events_suggestion_id").on(e.suggestionId),Qe("idx_instruction_suggestion_events_user_id").on(e.userId)]);import{pgTable as Ci,text as yo,integer as Oi,numeric as Ye,timestamp as To,index as qi,primaryKey as Mi}from"drizzle-orm/pg-core";var rr=Ci("model_pricing",{provider:yo("provider").notNull(),modelId:yo("model_id").notNull(),inputPerM:Ye("input_per_m").notNull(),outputPerM:Ye("output_per_m").notNull(),cacheReadPerM:Ye("cache_read_per_m").notNull(),cacheWrite5mPerM:Ye("cache_write_5m_per_m").notNull(),cacheWrite1hPerM:Ye("cache_write_1h_per_m").notNull(),contextWindow:Oi("context_window"),effectiveFrom:To("effective_from",{withTimezone:!0}).notNull(),effectiveUntil:To("effective_until",{withTimezone:!0}),source:yo("source").notNull(),verifiedAt:To("verified_at",{withTimezone:!0})},e=>[Mi({columns:[e.provider,e.modelId,e.effectiveFrom]}),qi("idx_model_pricing_active").on(e.provider,e.modelId,e.effectiveFrom.desc())]);import{pgTable as Hi,text as ie,numeric as sr,timestamp as ir,uuid as ar,jsonb as Li,index as dr}from"drizzle-orm/pg-core";var ur=Hi("limit_observations",{id:ar("id").primaryKey().defaultRandom(),observedAt:ir("observed_at",{withTimezone:!0}).notNull().defaultNow(),provider:ie("provider").notNull(),plan:ie("plan").notNull(),limitType:ie("limit_type").notNull(),value:sr("value").notNull(),unit:ie("unit").notNull(),comparator:ie("comparator").notNull().default("="),resetsAt:ir("resets_at",{withTimezone:!0}),sourceType:ie("source_type").notNull(),sourceUrl:ie("source_url"),sourceEvidence:Li("source_evidence"),confidence:sr("confidence").notNull(),userId:ar("user_id")},e=>[dr("idx_limit_obs_lookup").on(e.provider,e.plan,e.limitType,e.observedAt.desc()),dr("idx_limit_obs_user").on(e.userId,e.observedAt.desc())]);import{pgTable as Ui,text as zt,timestamp as Bi,uuid as Vi,jsonb as Gi,boolean as Fi,uniqueIndex as Ji}from"drizzle-orm/pg-core";var lr=Ui("provider_docs_snapshots",{id:Vi("id").primaryKey().defaultRandom(),fetchedAt:Bi("fetched_at",{withTimezone:!0}).notNull().defaultNow(),provider:zt("provider").notNull(),docUrl:zt("doc_url").notNull(),contentHash:zt("content_hash").notNull(),content:zt("content").notNull(),parseSuccess:Fi("parse_success").notNull(),parseErrors:Gi("parse_errors")},e=>[Ji("idx_docs_dedup").on(e.provider,e.docUrl,e.contentHash)]);import{pgTable as Qi,text as Rt,numeric as cr,timestamp as mr,uuid as Yi,primaryKey as $i,index as Wi}from"drizzle-orm/pg-core";var _r=Qi("plan_limits_active",{provider:Rt("provider").notNull(),plan:Rt("plan").notNull(),limitType:Rt("limit_type").notNull(),value:cr("value").notNull(),unit:Rt("unit").notNull(),effectiveFrom:mr("effective_from",{withTimezone:!0}).notNull(),effectiveUntil:mr("effective_until",{withTimezone:!0}),confidence:cr("confidence").notNull(),sourceObservationIds:Yi("source_observation_ids").array().notNull()},e=>[$i({columns:[e.provider,e.plan,e.limitType,e.effectiveFrom]}),Wi("idx_plan_limits_lookup").on(e.provider,e.plan,e.limitType,e.effectiveFrom.desc())]);import{pgTable as Xi,text as wo,timestamp as Zi,uuid as pr,jsonb as ea,index as ta}from"drizzle-orm/pg-core";var fr=Xi("alert_dispatches",{id:pr("id").primaryKey().defaultRandom(),userId:pr("user_id").notNull(),alertKey:wo("alert_key").notNull(),severity:wo("severity").notNull(),lastDispatchedAt:Zi("last_dispatched_at",{withTimezone:!0}).notNull().defaultNow(),lastState:ea("last_state").notNull(),channel:wo("channel").notNull()},e=>[ta("idx_alert_user_key").on(e.userId,e.alertKey,e.lastDispatchedAt.desc())]);import{pgTable as oa,text as Ao,timestamp as xr,uuid as Do,integer as na,index as ra,unique as sa}from"drizzle-orm/pg-core";var Nr=oa("scaffolding_fingerprints",{id:Do("id").primaryKey().defaultRandom(),userId:Do("user_id").notNull(),harness:Ao("harness").notNull(),model:Ao("model").notNull(),toolsHash:Ao("tools_hash").notNull(),firstSeenAt:xr("first_seen_at",{withTimezone:!0}).notNull().defaultNow(),lastSeenAt:xr("last_seen_at",{withTimezone:!0}).notNull().defaultNow(),snapshotCount:na("snapshot_count").notNull().default(1),firstSessionId:Do("first_session_id")},e=>[sa("scaffolding_fingerprints_user_id_harness_model_tools_hash_key").on(e.userId,e.harness,e.model,e.toolsHash),ra("idx_scaffolding_fp_segment").on(e.userId,e.harness,e.model)]);import{pgTable as ia,text as jo,timestamp as aa,jsonb as da,uuid as gr,integer as ua,unique as la}from"drizzle-orm/pg-core";var hr=ia("scaffolding_segments",{id:gr("id").primaryKey().defaultRandom(),userId:gr("user_id").notNull(),harness:jo("harness").notNull(),model:jo("model").notNull(),coreNames:da("core_names").notNull(),coreHash:jo("core_hash").notNull(),activeFingerprints:ua("active_fingerprints").notNull(),computedAt:aa("computed_at",{withTimezone:!0}).notNull().defaultNow()},e=>[la("scaffolding_segments_user_id_harness_model_key").on(e.userId,e.harness,e.model)]);import{drizzle as wr}from"drizzle-orm/postgres-js";import Ar from"postgres";var kt={};Vr(kt,{SUGGESTION_KINDS:()=>or,agentJobs:()=>qn,agentRuns:()=>g,agentRunsRelations:()=>Aa,alertDispatches:()=>fr,announcementDeliveries:()=>Co,announcements:()=>Ko,apiKeys:()=>Te,apiKeysRelations:()=>ma,benchmarks:()=>Ie,benchmarksRelations:()=>Oa,cliErrorEvents:()=>wn,cliSetupEvents:()=>yn,contentBlobs:()=>bn,contextSnapshots:()=>Y,contextSnapshotsRelations:()=>Ha,evalComparisons:()=>Dn,evalConversations:()=>we,evalConversationsRelations:()=>Ma,evalGradeAnnotations:()=>jn,evalJobs:()=>ye,evalJobsRelations:()=>qa,evalRuns:()=>k,evalRunsRelations:()=>Ca,evalTargets:()=>s,evalTargetsRelations:()=>Pa,evals:()=>C,evalsRelations:()=>Ka,extensionAuthCodes:()=>Bn,harnessReleases:()=>$n,insightRecommendationLog:()=>rn,insightsJobs:()=>Hn,instructionEvents:()=>me,instructionEventsRelations:()=>ha,instructionExperimentArms:()=>tn,instructionExperiments:()=>Ee,instructionPromotions:()=>Rn,instructionSuggestionEvents:()=>nr,instructionSuggestions:()=>Io,instructionUsageEvents:()=>ve,instructionUsageEventsRelations:()=>Sa,instructionVerdicts:()=>nn,instructionVersionIdentities:()=>Uo,instructionVersions:()=>ce,instructionVersionsRelations:()=>Ia,instructions:()=>n,instructionsRelations:()=>ga,judgeReviewerVerdicts:()=>zn,launchJobs:()=>De,launchJobsRelations:()=>Da,limitObservations:()=>ur,memories:()=>y,memoriesRelations:()=>va,memoryExperiments:()=>un,modelPricing:()=>rr,notificationPreferences:()=>Oo,notifications:()=>go,orgInvitations:()=>E,orgInvitationsRelations:()=>fa,organizations:()=>l,organizationsRelations:()=>_a,packInstructions:()=>J,packInstructionsRelations:()=>ba,packs:()=>D,packsRelations:()=>Ea,pendingTreatmentExposures:()=>Xo,planLimitsActive:()=>_r,profiles:()=>o,profilesRelations:()=>ca,projectCheckouts:()=>Go,projectInstructions:()=>B,projectInstructionsRelations:()=>Ta,projects:()=>r,projectsRelations:()=>ya,providerDocsSnapshots:()=>lr,scaffoldingFingerprints:()=>Nr,scaffoldingSegments:()=>hr,sessionEvents:()=>pe,sessionEventsRelations:()=>ja,sessionInstructions:()=>V,sessionInstructionsRelations:()=>za,sessionSendJobs:()=>_n,sessionTerminalTargets:()=>_t,sessions:()=>u,sessionsRelations:()=>wa,skillSubmissions:()=>Jn,teams:()=>v,teamsRelations:()=>pa,treatmentAssignments:()=>S,treatmentAssignmentsRelations:()=>Ra,treatmentExposures:()=>P,treatmentExposuresRelations:()=>ka,userOrganizations:()=>ue,userOrganizationsRelations:()=>xa,userTeams:()=>le,userTeamsRelations:()=>Na,workerConnections:()=>hn});import{relations as i}from"drizzle-orm";var ca=i(o,({many:e})=>({sessions:e(u),contextSnapshots:e(Y),apiKeys:e(Te)})),ma=i(Te,({one:e})=>({profile:e(o,{fields:[Te.userId],references:[o.id]})})),_a=i(l,({many:e})=>({teams:e(v),userOrganizations:e(ue),projects:e(r),invitations:e(E)})),pa=i(v,({one:e,many:t})=>({organization:e(l,{fields:[v.orgId],references:[l.id]}),userTeams:t(le),invitations:t(E)})),fa=i(E,({one:e})=>({organization:e(l,{fields:[E.orgId],references:[l.id]}),team:e(v,{fields:[E.teamId],references:[v.id]}),inviter:e(o,{fields:[E.invitedBy],references:[o.id]})})),xa=i(ue,({one:e})=>({organization:e(l,{fields:[ue.orgId],references:[l.id]})})),Na=i(le,({one:e})=>({team:e(v,{fields:[le.teamId],references:[v.id]})})),ga=i(n,({one:e,many:t})=>({versions:t(ce),projectInstructions:t(B),events:t(me),usageEvents:t(ve),sessionInstructions:t(V),packInstructions:t(J),forkedFrom:e(n,{fields:[n.forkedFromId],references:[n.id]})})),ha=i(me,({one:e})=>({instruction:e(n,{fields:[me.instructionId],references:[n.id]})})),va=i(y,({one:e,many:t})=>({project:e(r,{fields:[y.projectId],references:[r.id]}),parent:e(y,{fields:[y.parentId],references:[y.id]}),versions:t(y)})),Ia=i(ce,({one:e})=>({instruction:e(n,{fields:[ce.instructionId],references:[n.id]})})),ya=i(r,({one:e,many:t})=>({organization:e(l,{fields:[r.orgId],references:[l.id]}),projectInstructions:t(B),sessions:t(u)})),Ta=i(B,({one:e})=>({project:e(r,{fields:[B.projectId],references:[r.id]}),instruction:e(n,{fields:[B.instructionId],references:[n.id]})})),wa=i(u,({one:e,many:t})=>({profile:e(o,{fields:[u.userId],references:[o.id]}),project:e(r,{fields:[u.projectId],references:[r.id]}),run:e(g,{fields:[u.runId],references:[g.id]}),events:t(pe),sessionInstructions:t(V),treatmentExposures:t(P),contextSnapshots:t(Y)})),Aa=i(g,({one:e,many:t})=>({profile:e(o,{fields:[g.userId],references:[o.id]}),organization:e(l,{fields:[g.orgId],references:[l.id]}),project:e(r,{fields:[g.projectId],references:[r.id]}),sessions:t(u),launchJobs:t(De)})),Da=i(De,({one:e})=>({run:e(g,{fields:[De.runId],references:[g.id]})})),ja=i(pe,({one:e})=>({session:e(u,{fields:[pe.sessionId],references:[u.id]})})),za=i(V,({one:e})=>({session:e(u,{fields:[V.sessionId],references:[u.id]}),instruction:e(n,{fields:[V.instructionId],references:[n.id]})})),Ra=i(S,({one:e,many:t})=>({owner:e(o,{fields:[S.userId],references:[o.id]}),project:e(r,{fields:[S.projectId],references:[r.id]}),exposures:t(P)})),ka=i(P,({one:e})=>({session:e(u,{fields:[P.sessionId],references:[u.id]}),owner:e(o,{fields:[P.userId],references:[o.id]}),assignment:e(S,{fields:[P.assignmentId],references:[S.id]})})),Ea=i(D,({one:e,many:t})=>({packInstructions:t(J),forkedFrom:e(D,{fields:[D.forkedFromId],references:[D.id]})})),ba=i(J,({one:e})=>({pack:e(D,{fields:[J.packId],references:[D.id]}),instruction:e(n,{fields:[J.instructionId],references:[n.id]})})),Sa=i(ve,({one:e})=>({instruction:e(n,{fields:[ve.instructionId],references:[n.id]})})),Pa=i(s,({one:e,many:t})=>({parent:e(s,{fields:[s.parentId],references:[s.id]}),evals:t(C),evalRuns:t(k),benchmarks:t(Ie),evalJobs:t(ye),evalConversations:t(we)})),Ka=i(C,({one:e,many:t})=>({evalTarget:e(s,{fields:[C.evalTargetId],references:[s.id]}),runs:t(k)})),Ca=i(k,({one:e})=>({eval:e(C,{fields:[k.evalId],references:[C.id]}),evalTarget:e(s,{fields:[k.evalTargetId],references:[s.id]})})),Oa=i(Ie,({one:e})=>({evalTarget:e(s,{fields:[Ie.evalTargetId],references:[s.id]})})),qa=i(ye,({one:e})=>({evalTarget:e(s,{fields:[ye.evalTargetId],references:[s.id]})})),Ma=i(we,({one:e})=>({evalTarget:e(s,{fields:[we.evalTargetId],references:[s.id]})})),Ha=i(Y,({one:e})=>({session:e(u,{fields:[Y.sessionId],references:[u.id]}),profile:e(o,{fields:[Y.userId],references:[o.id]})}));var $e=0,vr=0,We=0,Ir=0;var La=0;function zo(){$e++,$e>vr&&(vr=$e)}p(zo,"trackDbOpStart");function Ro(){$e>0&&$e--}p(Ro,"trackDbOpEnd");function ko(){We++,We>Ir&&(Ir=We)}p(ko,"trackHeavyDbOpStart");function Eo(){We>0&&We--}p(Eo,"trackHeavyDbOpEnd");function yr(){La++}p(yr,"recordQueryDeadline");var bt,Pt,bo=!1,Et;var Tr,Kt,St;function Dr(e){let t=process.env[e];if(!t)throw new Error(`Missing required env var: ${e}`);return t}p(Dr,"getEnv");function jr(){if(bo)throw new Error("getDb() called after closeDb(): the connection pool is closed for shutdown. Stop issuing queries (timers/requests) before draining the pool.");if(!bt){let e=process.env.PG_APPLICATION_NAME||"rulemetric",t=Number(process.env.PG_POOL_MAX)||3,a=Number(process.env.PG_CONNECT_TIMEOUT_S)||10,d=Number(process.env.PG_STATEMENT_TIMEOUT_MS)||0,_=Number(process.env.PG_IDLE_TIMEOUT)||5,N=Number(process.env.PG_KEEP_ALIVE_S)||60;Pt=Ar(Dr("DATABASE_URL"),{prepare:!1,max:t,connect_timeout:a,idle_timeout:_,keep_alive:N,max_lifetime:300,connection:{application_name:e,...d>0?{statement_timeout:d}:{}}}),bt=wr(Pt,{schema:kt})}return bt}p(jr,"getDb");function zr(){if(bo)throw new Error("getHeavyDb() called after closeDb(): the connection pool is closed for shutdown. Stop issuing queries (timers/requests) before draining the pool.");if(!St){let e=(process.env.PG_APPLICATION_NAME||"rulemetric")+":heavy",t=Number(process.env.PG_HEAVY_POOL_MAX)||2;Kt=Ar(Dr("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}}),St=wr(Kt,{schema:kt})}return St}p(zr,"getHeavyDb");async function Ua(){if(Et)return Et;bo=!0;let e=Pt,t=Tr,a=Kt;return Pt=void 0,bt=void 0,Tr=void 0,Kt=void 0,St=void 0,Et=Promise.allSettled([e?e.end({timeout:5}):Promise.resolve(),t?t.end({timeout:5}):Promise.resolve(),a?a.end({timeout:5}):Promise.resolve()]).then(()=>{}),Et}p(Ua,"closeDb");var Ba=new Set(["CONNECT_TIMEOUT","ETIMEDOUT","ENOTFOUND","ECONNREFUSED","EAI_AGAIN"]);function Rr(e){let t=e,a=t?.code??t?.cause?.code??t?.errno;return a!==void 0&&Ba.has(a)}p(Rr,"isRetryableConnectError");var Va=new Set(["CONNECTION_CLOSED","ECONNRESET","EPIPE"]);function kr(e){let t=e,a=t?.code??t?.cause?.code??t?.errno;return a!==void 0&&Va.has(a)}p(kr,"isRetryableResetError");async function Er(e,t={}){let a=t.attempts??3,d=t.baseMs??100,_;for(let N=0;N<a;N++)try{return await e()}catch(w){_=w;let H=Rr(w)||t.retryResets===!0&&kr(w);if(N===a-1||!H)throw w;await new Promise(W=>setTimeout(W,d*2**N))}throw _}p(Er,"withDbRetry");var Ct=class extends Error{static{p(this,"QueryDeadlineError")}code="QUERY_DEADLINE";constructor(t){super(`Query exceeded the client-side deadline of ${t}ms \u2014 the DB pool is likely saturated (acquire-wait) or holding a dead socket; failing fast to avoid pinning the caller. See client.ts.`),this.name="QueryDeadlineError"}};function br(){let e=Number(process.env.PG_QUERY_DEADLINE_MS);return Number.isFinite(e)&&e>=0?e:2e4}p(br,"queryDeadlineMs");function Sr(){let e=Number(process.env.PG_HEAVY_QUERY_DEADLINE_MS);return Number.isFinite(e)&&e>=0?e:6e4}p(Sr,"heavyQueryDeadlineMs");function Ga(e,t,a=!0){let d,_=new Promise((N,w)=>{d=setTimeout(()=>{a&&yr(),w(new Ct(t))},t);let H=d;typeof H.unref=="function"&&H.unref()});return Promise.race([e,_]).finally(()=>clearTimeout(d))}p(Ga,"raceWithDeadline");var Pr=new Set(["select","selectDistinct","selectDistinctOn","insert","update","delete","execute","with","$count","refreshMaterializedView"]),Kr=new Set(["select","selectDistinct","selectDistinctOn","$count"]);function So(e,t=!1,a=0,d=!1){return e===null||typeof e!="object"&&typeof e!="function"?e:new Proxy(e,{get(_,N,w){if(N==="then"){let W=Reflect.get(_,N,w);return typeof W!="function"?W:(qr,Mr)=>{let Hr=d?ko:zo,Lr=d?Eo:Ro;Hr();let Po=Er(()=>new Promise((Ur,Br)=>W.call(_,Ur,Br)),{retryResets:t});return(a>0?Ga(Po,a,!d):Po).finally(Lr).then(qr,Mr)}}let H=Reflect.get(_,N,w);return typeof H=="function"?(...W)=>So(H.apply(_,W),t,a,d):H}})}p(So,"wrapBuilder");function Cr(e,t=!1){let a=t?ko:zo,d=t?Eo:Ro;a();try{return Promise.resolve(e()).finally(d)}catch(_){throw d(),_}}p(Cr,"gaugeTransaction");var Or=new Proxy({},{get(e,t){let a=jr(),d=a[t];if(typeof t=="string"&&Pr.has(t)&&typeof d=="function"){let _=Kr.has(t),N=br();return(...w)=>So(d.apply(a,w),_,N)}return t==="transaction"&&typeof d=="function"?(..._)=>Cr(()=>d.apply(a,_)):d}}),Fa=new Proxy({},{get(e,t){let a=zr(),d=a[t];if(typeof t=="string"&&Pr.has(t)&&typeof d=="function"){let _=Kr.has(t);return(...N)=>So(d.apply(a,N),_,Sr(),!0)}return t==="transaction"&&typeof d=="function"?(..._)=>Cr(()=>d.apply(a,_),!0):d}});export{Ko as a,jr as b,Ua as c};
@@ -1 +0,0 @@
1
- import{a as d}from"./chunk-Z72VHGV7.js";import{a}from"./chunk-ZLLER3HP.js";import{mkdirSync as y,readdirSync as v,rmSync as D,writeFileSync as E}from"node:fs";import{join as c,relative as w,sep as S}from"node:path";var h="v2-neutral-workspace",A=["CLAUDE.md","CLAUDE.local.md","AGENTS.md"],C=new Set(["node_modules",".git","dist","build",".next","coverage"]);function m(e){let r=[],s=new Set(A),t=a(l=>{let n;try{n=v(l,{withFileTypes:!0})}catch{return}for(let i of n){let o=c(l,i.name);if(i.isDirectory()){if(C.has(i.name)||i.name.startsWith(".")&&i.name!==".claude")continue;t(o)}else s.has(i.name)&&r.push(w(e,o))}},"walk");return t(e),r}a(m,"findAmbientInstructionFiles");function I(e){let r=[];for(let s of m(e))try{D(c(e,s),{force:!0}),r.push(s)}catch{}return r}a(I,"stripAmbientInstructions");function W(e){return(e??"").toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,"")||"eval-target-skill"}a(W,"skillSlug");function b(e={}){let{baseDir:r,targetType:s,targetContent:t,targetName:l}=e,n=d(r),i=I(n.workDir),o="none",p,u=[];if(t)switch(s){case"prompt":p=t,o="system_prompt";break;case"skill":{g(n.workDir,c(".claude","skills",W(l),"SKILL.md"),t),o="skill";break}default:g(n.workDir,"CLAUDE.md",t),u.push("CLAUDE.md"),o="claude_md";break}let k=m(n.workDir).filter(f=>!u.includes(f));return{workDir:n.workDir,systemPrompt:p,delivery:o,methodology:h,isWorktree:n.isWorktree,strippedFiles:i,leakedFiles:k,cleanup:n.cleanup}}a(b,"createEvalWorkspace");function g(e,r,s){let t=c(e,r),l=t.slice(0,t.lastIndexOf(S));y(l,{recursive:!0}),E(t,s,"utf8")}a(g,"writeFileInWorkspace");export{h as a,A as b,m as c,W as d,b as e};
@@ -1,17 +0,0 @@
1
- import{a as M,b as j,c as N,d as v}from"./chunk-4PWGV2OW.js";import{a as S}from"./chunk-5RBLIVBF.js";import{c as O,d as z,f as b}from"./chunk-MODFTCZY.js";import{e as _,f as A,h as p}from"./chunk-OFC7HIBX.js";import{a as E}from"./chunk-VXM4PEED.js";import{a as h}from"./chunk-ZLLER3HP.js";async function Z(g,c){let{mirrorId:o,projectPath:e,projectId:a,config:d}=g,s=h(t=>c.logger.info(t),"log");if(d?.sessionId)return L({mirrorId:o,sessionId:d.sessionId},s);s(`Processing insights job ${o}...`),await p(`/api/insights-jobs/${o}/progress`,{status:"running",progress:{step:"reading_data"}});try{let{repaired:t}=await A("/api/sessions/repair-analyzed-at",{});t>0&&s(` Repaired analyzed_at on ${t} orphan session(s).`)}catch(t){s(` Warning: analyzed_at repair failed: ${t instanceof Error?t.message:String(t)}`)}let r=await H(e,a);if(!r)throw new S("No session data found \u2014 ensure sessions are captured and enriched.");s(` Found ${r.stats.sessions} sessions, generating recommendations...`);let f=20,n=200;if(z()!=="none"){let t=0,i=0;try{for(;t<n;){let m=await _(`/api/sessions?hasAnalysis=false&limit=${f}&offset=${i}`);if(m.length===0)break;s(` Generating facets for ${m.length} un-analyzed sessions (drained ${t} so far)...`);for(let y of m){if(t>=n)break;try{let u=await _(`/api/sessions/${y.id}/events?limit=100`);if(u.length<2){t++,i++;continue}let I=u.filter(w=>w.eventType==="user_message"||w.eventType==="human").map(w=>w.content?.slice(0,200)??"").filter(Boolean).join(`
2
- ---
3
- `);if(!I){t++,i++;continue}let P=await b(v,I,4096);if(P){let w=u.filter(C=>C.eventType==="user_message"||C.eventType==="human").length;await p(`/api/sessions/${y.id}/enrich`,{analysis:{source:"generated_facets",...P},analyzedEventCount:u.length,analyzedTurnCount:w}),s(` Generated facets for session ${y.id} (${y.tool})`)}else i++;t++}catch(u){s(` Failed to generate facets for session ${y.id}: ${u instanceof Error?u.message:String(u)}`),t++,i++}}if(m.length<f)break}}catch(m){s(` Warning: facet generation failed after ${t} sessions: ${m instanceof Error?m.message:String(m)}`)}}let k=await F(e,s);k&&s(` Generator memory: ${k.split(`
4
- `).length} lines of prior-advice context`);let l={},$=j.length+1;for(let t=0;t<j.length;t++){let i=j[t];s(` [${t+1}/${$}] Generating ${i.name}...`);try{await p(`/api/insights-jobs/${o}/progress`,{status:"running",progress:{step:i.name,current:t+1,total:$,partial:{...l}}})}catch(u){s(` Warning: progress update failed for ${i.name}: ${u instanceof Error?u.message:String(u)}`)}s(` Running LLM prompt for ${i.name}...`);let m=i.usesGeneratorMemory&&k?`${r.summary}
5
- ${k}`:r.summary,y=await b(i.prompt,m,i.maxTokens);y?(l[i.name]=y,s(` Got result for ${i.name}`)):s(` No result for ${i.name} (LLM returned null)`)}s(` [${$}/${$}] Generating at_a_glance...`),await p(`/api/insights-jobs/${o}/progress`,{status:"running",progress:{step:"at_a_glance",current:$,total:$,partial:{...l}}});let G=[r.summary,l.what_works?`
6
- ## What Works
7
- ${JSON.stringify(l.what_works)}`:"",l.friction_analysis?`
8
- ## Friction
9
- ${JSON.stringify(l.friction_analysis)}`:"",l.suggestions?`
10
- ## Suggestions
11
- ${JSON.stringify(l.suggestions)}`:"",l.on_the_horizon?`
12
- ## On the Horizon
13
- ${JSON.stringify(l.on_the_horizon)}`:""].join(`
14
- `),R=await b(N,G,8192);R&&(l.at_a_glance=R),s(" Uploading results..."),s(` Done! Recommendations generated for job ${o}`),E(l);let T={recommendations:l};return await p(`/api/insights-jobs/${o}/state`,{result:T}).catch(t=>{s(`result persist failed: ${t instanceof Error?t.message:String(t)}`)}),await J(l,e,s),T}h(Z,"processInsights");async function J(g,c,o){if(c)try{let e=g.suggestions,a=Array.isArray(e?.claude_md_additions)?e.claude_md_additions.filter(n=>typeof n?.addition=="string"&&n.addition.trim().length>=12).map(n=>({addition:String(n.addition).trim(),why:String(n.why??"")})):[],d=Array.isArray(g.recommended_skills)?g.recommended_skills.filter(n=>typeof n?.skillId=="string"&&n.skillId.length>0).map(n=>({skillId:String(n.skillId),reason:String(n.reason??"")})):[],s=Array.isArray(e?.features_to_try)?e.features_to_try.filter(n=>typeof n?.feature=="string"&&n.feature.trim().length>=2).map(n=>({feature:String(n.feature).trim(),one_liner:String(n.one_liner??""),why_for_you:String(n.why_for_you??""),example_code:String(n.example_code??"")})):[];if(a.length===0&&d.length===0&&s.length===0)return;let r=await A("/api/insights/recommendations/nominate",{projectPath:c,additions:a.slice(0,20),skills:d.slice(0,20),features:s.slice(0,20)}),f=r.additionsRejected??[];o(` ${r.nominated} recommendation(s) nominated into the suggestion feed (${r.additionsCreated} new instruction(s)`+((r.featuresCreated??0)>0?`, ${r.featuresCreated} feature proposal(s)`:"")+(r.skillsUnresolved>0?`, ${r.skillsUnresolved} skill slug(s) unresolved`:"")+(f.length>0?`, ${f.length} rejected as unfilled templates`:"")+")");for(let n of f)o(` rejected "${n.name}" \u2014 unfilled placeholder(s): ${n.placeholders.join(", ")}`)}catch(e){o(` nomination skipped: ${e instanceof Error?e.message:String(e)}`)}}h(J,"nominateRecommendations");async function L(g,c){let{mirrorId:o,sessionId:e}=g;c(`Analyzing session ${e} via tool CLI...`),await p(`/api/insights-jobs/${o}/progress`,{status:"running",progress:{step:"fetching_session"}});let a=await _(`/api/sessions/${e}`);if(a.analysis&&a.analysis.source==="session_analysis")return c(` Session ${e} already analyzed \u2014 skipping (idempotency guard)`),{sessionId:e,skipped:!0,reason:"already_analyzed"};let d=await _(`/api/sessions/${e}/events?limit=100`);if(d.length<2)throw new S("Session has too few events to analyze");let s=d.filter(n=>n.eventType==="user_message"||n.eventType==="human").map(n=>n.content?.slice(0,200)??"").filter(Boolean).join(`
15
- ---
16
- `);if(!s)throw new S("No user messages found in session");await p(`/api/insights-jobs/${o}/progress`,{status:"running",progress:{step:"running_analysis",tool:a.tool}});let r=await O(a.tool,v,s);if(!r)throw new Error(`Analysis failed \u2014 ${a.tool} CLI returned no result`);let f=d.filter(n=>n.eventType==="user_message"||n.eventType==="human").length;return await p(`/api/sessions/${e}/enrich`,{analysis:{source:"session_analysis",tool:a.tool,...r},analyzedEventCount:d.length,analyzedTurnCount:f}),c(` Session ${e} analyzed via ${a.tool}`),{sessionId:e,tool:a.tool,facets:r}}h(L,"processSessionAnalysisInline");async function F(g,c,o=_){try{let e=await o(`/api/insights/recommendations/history?projectPath=${encodeURIComponent(g??"")}`);return!e||!Array.isArray(e.dismissed)||!Array.isArray(e.repeated)?"":M(e)}catch(e){return c(` Warning: generator memory unavailable (${e instanceof Error?e.message:String(e)}) \u2014 generating without it`),""}}h(F,"fetchGeneratorMemory");async function H(g,c){try{let o=new URLSearchParams;c?o.set("projectId",c):g&&o.set("projectPath",g);let e=await _(`/api/insights/compute?${o}`);if(!e||e.total_sessions===0)return null;let a=Object.entries(e.tool_counts??{}).sort((s,r)=>r[1]-s[1]).slice(0,10).map(([s,r])=>`${s}: ${r}`).join(", ");return{summary:[`Sessions: ${e.total_sessions}, Messages: ${e.total_messages}, Hours: ${Math.round(e.total_duration_hours)}`,`Top tools: ${a}`,e.goal_categories&&Object.keys(e.goal_categories).length>0?`Goals: ${JSON.stringify(e.goal_categories)}`:"",e.friction&&Object.keys(e.friction).length>0?`Friction: ${JSON.stringify(e.friction)}`:"",e.outcomes&&Object.keys(e.outcomes).length>0?`Outcomes: ${JSON.stringify(e.outcomes)}`:"",e.projects&&Object.keys(e.projects).length>0?`Projects: ${JSON.stringify(e.projects)}`:""].filter(Boolean).join(`
17
- `),stats:{sessions:e.total_sessions,totalMessages:e.total_messages,totalHours:e.total_duration_hours,toolCounts:e.tool_counts,goalCounts:e.goal_categories,frictionCounts:e.friction}}}catch{return null}}h(H,"buildDataSummaryFromApi");export{Z as a,F as b};
@@ -1,11 +0,0 @@
1
- import{a as f,b as g,e as A}from"./chunk-FK73GD2X.js";import{e as l,f as d,i as I}from"./chunk-OFC7HIBX.js";import{l as y}from"./chunk-VXM4PEED.js";import{a as c}from"./chunk-ZLLER3HP.js";import*as a from"node:fs";import*as p from"node:path";function S(t,e,n){let i=p.join(t,"CLAUDE.md"),o=f(e),s=g(e),r=a.existsSync(i)?a.readFileSync(i,"utf8"):"";if(r.includes(o))return!1;let m=`${r.length>0&&!r.endsWith(`
2
- `)?`
3
-
4
- `:r.length>0?`
5
- `:""}
6
- ${o}
7
- ${n}
8
- ${s}
9
- `;return a.writeFileSync(i,r+m,"utf8"),!0}c(S,"appendToCLAUDEmd");function b(t,e){let n=p.join(t,"CLAUDE.md");if(!a.existsSync(n))return!1;let i=f(e),o=g(e),s=a.readFileSync(n,"utf8"),r=s.indexOf(i);if(r===-1)return!1;let u=s.indexOf(o,r);if(u===-1)return!1;let m=s.slice(0,r),$=s.slice(u+o.length),v=(m.replace(/\n+$/,"")+`
10
- `+$.replace(/^\n+/,"")).replace(/^\n+/,"");return a.writeFileSync(n,v,"utf8"),!0}c(b,"removeFromCLAUDEmd");function w(t,e=90){return t.length<=e?t:`${t.slice(0,e-1)}\u2026`}c(w,"truncate");function x(t){return l(`/api/instruction-suggestions/${encodeURIComponent(t)}`)}c(x,"fetchSuggestion");async function h(t,e,n,i){await d(`/api/instruction-suggestions/${encodeURIComponent(t)}/events`,{eventType:"accepted",projectPath:e,instructionId:n,actor:i})}c(h,"logAccepted");async function k(t,e,n,i){await d(`/api/instruction-suggestions/${encodeURIComponent(t)}/events`,{eventType:"redundant",projectPath:e,instructionId:n,actor:i})}c(k,"logRedundant");async function R(t){let e=t.suggestion??await x(t.suggestionId);if(e.kind==="remove")return D(t,e);if(e.kind==="trim")return C(t,e);let n=e.instructionId;e.instructionScope==="public"&&(n=(await d(`/api/instructions/${encodeURIComponent(e.instructionId)}/promote-from-public`,{targetScope:"personal"})).instructionId);let i=await l(`/api/instructions/${encodeURIComponent(n)}`);if(!t.force){let s=y(i.content,A(t.dir));if(s.redundant)return await k(t.suggestionId,t.projectPath,n,t.actor),{action:"redundant",instructionId:n,name:i.name,fileModified:!1,redundancy:s,messages:[`Skipped: ${i.name} already applies here in different words \u2014 adding it would spend context to say the same thing twice.`,...s.matches.map(r=>` "${w(r.directive)}"
11
- already covered by ${r.matchedSource??r.matchedId} (${(r.similarity*100).toFixed(0)}% match): "${w(r.matchedDirective)}"`),"Add it anyway with `--force` if the overlap is not real."]}}let o=S(t.dir,n,i.content);return await h(t.suggestionId,t.projectPath,n,t.actor),{action:o?"added":"already-present",instructionId:n,name:i.name,fileModified:o,messages:o?[`Accepted: added ${i.name} to CLAUDE.md. It will be active starting in your next session.`]:[`Already present: ${i.name} is already in CLAUDE.md (block id: ${n}).`]}}c(R,"acceptSuggestion");async function C(t,e){let n=e.estimatedTokens?` It currently costs roughly ${e.estimatedTokens} tokens per session (estimated).`:"";return await h(t.suggestionId,t.projectPath,e.instructionId,t.actor),{action:"acknowledged",instructionId:e.instructionId,name:e.name,fileModified:!1,messages:[`Noted: ${e.name} is measured neutral, not harmful.${n}`,"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 ${e.instructionId}`," Then edit CLAUDE.md (or the instruction) and let the next measurement cycle re-check it.","This suggestion will stop re-surfacing."]}}c(C,"acknowledgeTrim");async function D(t,e){let n=b(t.dir,e.instructionId);await I(`/api/instructions/${encodeURIComponent(e.instructionId)}`);let i=e.estimatedTokens?` Frees roughly ${e.estimatedTokens} tokens of context per session (estimated).`:"",o=n?[`Retired: removed ${e.name} from CLAUDE.md and archived it.${i}`]:[`Archived ${e.name}.${i}`,"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 o.push("Undo with: rulemetric instructions restore "+e.instructionId),await h(t.suggestionId,t.projectPath,e.instructionId,t.actor),{action:n?"retired":"archived-only",instructionId:e.instructionId,name:e.name,fileModified:n,messages:o}}c(D,"acceptRemoval");export{S as a,b,x as c,R as d};
@@ -1,46 +0,0 @@
1
- import{a as o}from"./chunk-ZLLER3HP.js";function j(e){if(!e||typeof e!="object")return e;let s=e,n=s.project_areas;if(n!==void 0&&!Array.isArray(n)){let t=n&&typeof n=="object"?n.areas:void 0;s.project_areas=Array.isArray(t)?t:void 0}return e}o(j,"normalizeRecommendations");import{z as p}from"zod";var T=["org","team","project","personal"],b=p.object({name:p.string().min(1),description:p.string().min(1),type:p.literal("instruction").default("instruction"),scope:p.enum(T),version:p.string().min(1),tags:p.array(p.string()).optional(),compatibility:p.array(p.string()).optional(),slots:p.record(p.string(),p.string()).optional(),metadata:p.record(p.string(),p.unknown()).optional()});import{z as f}from"zod";var M=f.object({name:f.string().min(1),description:f.string().min(1),type:f.literal("prompt"),version:f.string().min(1),tags:f.array(f.string()).optional(),variables:f.array(f.string()).optional(),metadata:f.record(f.string(),f.unknown()).optional()});function g(e,s){let n=s.map(t=>`- ID: ${t.id}
2
- Name: ${t.name}
3
- Description: ${t.description}
4
- Tags: ${t.tags.join(", ")}
5
- Preview: ${t.contentPreview}`).join(`
6
-
7
- `);return`You are an expert at matching AI coding instructions to software projects.
8
-
9
- ## Project
10
- - Name: ${e.name}
11
- - Description: ${e.description??"No description"}
12
- - Languages: ${e.languages.join(", ")||"Unknown"}
13
- - Topics: ${e.topics.join(", ")||"None"}
14
- - Dependencies: ${e.dependencies.join(", ")||"None"}
15
-
16
- ## Available Instructions
17
-
18
- ${n}
19
-
20
- ## Task
21
-
22
- Analyze the project and recommend which instructions would be most useful. Consider:
23
- 1. Language and framework alignment
24
- 2. Project purpose and what standards/practices would help
25
- 3. Security, testing, and quality needs based on the project type
26
-
27
- Return your response as JSON in this exact format:
28
- {
29
- "recommendations": [
30
- { "instructionId": "<id>", "score": <0.0-1.0>, "reason": "<one sentence explanation>" }
31
- ]
32
- }
33
-
34
- Only include instructions with a relevance score >= 0.5. Order by score descending. Return valid JSON only, no markdown fences.`}o(g,"buildRecommendationPrompt");var S=32e3,N={name:"x".repeat(64),description:"x".repeat(256),languages:["TypeScript","Python","Go"],topics:["x".repeat(32)],dependencies:["x".repeat(32)]};function k(e,s={}){if(e.length===0)return[];let n=s.charBudget??S,t=g(N,[]).length,r=[],i=[],d=0;for(let a of e){let l=D(a);i.length>0&&t+d+l>n&&(r.push(i),i=[],d=0),i.push(a),d+=l}return i.length>0&&r.push(i),r}o(k,"batchCandidatesForPrompt");function D(e){return`- ID: ${e.id}
35
- Name: ${e.name}
36
- Description: ${e.description}
37
- Tags: ${e.tags.join(", ")}
38
- Preview: ${e.contentPreview}`.length+2}o(D,"renderedSize");var I=["Added","Changed","Fixed","Removed","Deprecated","Security"],F=/^##\s+\[([^\]]+)\](?:\s*[-–]\s*(\d{4}-\d{2}-\d{2}))?\s*$/,$=/^###\s+(.+?)\s*$/,G=/^[-*]\s+(.*\S)\s*$/,U=/^ {2,}(\S.*)$/;function H(e){let s=e.split(/\r?\n/),n=[],t=null,r=null,i=null;for(let d of s){let a=d.match(F);if(a){t&&n.push(t);let u=a[1].trim();t={version:u,date:a[2]??null,unreleased:u.toLowerCase()==="unreleased",sections:{}},r=null,i=null;continue}if(!t)continue;let l=d.match($);if(l){let u=l[1].trim();I.includes(u)?(r=u,t.sections[r]||(t.sections[r]=[]),i=t.sections[r]):(r=null,i=null);continue}if(!r||!i)continue;let m=d.match(G);if(m){i.push(m[1]);continue}let h=d.match(U);if(h&&i.length>0){i[i.length-1]+=" "+h[1].trim();continue}}return t&&n.push(t),{entries:n}}o(H,"parseChangelog");function z(e){return e.entries.filter(s=>s.unreleased?!1:Object.values(s.sections).some(n=>n&&n.length>0))}o(z,"announceableEntries");function y(e){let s=/^(#{1,6})\s+/.exec(e);return s?s[1].length:0}o(y,"headingLevel");function P(e){return e.replace(/^#{1,6}\s+/,"").replace(/[`*_~]/g,"").trim().toLowerCase()}o(P,"normaliseHeading");function B(e,s){let n=P(s);if(n.length===0)return{content:e,removed:!1,removedText:null,reason:"not-found"};let t=e.split(`
39
- `),r=[];for(let u=0;u<t.length;u+=1)y(t[u])>0&&P(t[u])===n&&r.push(u);if(r.length===0)return{content:e,removed:!1,removedText:null,reason:"not-found"};if(r.length>1)return{content:e,removed:!1,removedText:null,reason:"ambiguous"};let i=r[0],d=y(t[i]),a=t.length;for(let u=i+1;u<t.length;u+=1){let v=y(t[u]);if(v>0&&v<=d){a=u;break}}let l=t.slice(i,a).join(`
40
- `),m=[...t.slice(0,i),...t.slice(a)];return m.join("").trim().length===0?{content:e,removed:!1,removedText:null,reason:"would-empty-file"}:{content:m.join(`
41
- `).replace(/\n{3,}/g,`
42
-
43
- `),removed:!0,removedText:l}}o(B,"removeMarkdownSection");function K(e,s){let n=s.trim();if(n.length===0)return{content:e,removed:!1,removedText:null,reason:"not-found"};let t=e.indexOf(n);if(t===-1)return{content:e,removed:!1,removedText:null,reason:"not-found"};if(e.indexOf(n,t+1)!==-1)return{content:e,removed:!1,removedText:null,reason:"ambiguous"};let r=(e.slice(0,t)+e.slice(t+n.length)).replace(/\n{3,}/g,`
44
-
45
- `);return r.trim().length===0?{content:e,removed:!1,removedText:null,reason:"would-empty-file"}:{content:r,removed:!0,removedText:n}}o(K,"removeExactBlock");var L=["HTTPS_PROXY","HTTP_PROXY","NODE_EXTRA_CA_CERTS"];function W(e,s){if(!e||typeof e!="object")return{value:e,removed:!1,removedDescriptions:[],reason:"not-found"};let n=structuredClone(e);if(!n.hooks)return{value:n,removed:!1,removedDescriptions:[],reason:"not-found"};let t=[];for(let[r,i]of Object.entries(n.hooks)){if(!Array.isArray(i))continue;let d=i.filter(a=>{let l=(a.hooks??[]).some(m=>typeof m.command=="string"&&m.command.includes(s));return l&&t.push(`${r}: ${a.matcher??"*"} \u2192 ${(a.hooks??[]).map(m=>m.command).join(", ")}`),!l});d.length===0?delete n.hooks[r]:n.hooks[r]=d}return Object.keys(n.hooks).length===0&&delete n.hooks,{value:n,removed:t.length>0,removedDescriptions:t,...t.length===0?{reason:"not-found"}:{}}}o(W,"removeHookByCommand");function q(e,s){if(!e||typeof e!="object")return{value:e,removed:!1,removedDescriptions:[],reason:"not-found"};let n=structuredClone(e);return!n.mcpServers||!(s in n.mcpServers)?{value:n,removed:!1,removedDescriptions:[],reason:"not-found"}:(delete n.mcpServers[s],Object.keys(n.mcpServers).length===0&&delete n.mcpServers,{value:n,removed:!0,removedDescriptions:[`mcpServers.${s}`]})}o(q,"removeMcpServer");function w(e){if(!e||typeof e!="object")return[];let s=e.env;return s?L.filter(n=>n in s):[]}o(w,"protectedEnvKeysPresent");function V(e,s){let n=w(e),t=new Set(w(s));return n.filter(r=>!t.has(r))}o(V,"lostProtectedEnvKeys");function Y(e,s){let n=`HTTP ${e}`;if(!s||typeof s!="object")return{message:n};let t=s,r=typeof t.error=="string"&&t.error?t.error:t.error?JSON.stringify(t.error):n,i=typeof t.code=="string"&&t.code?t.code:void 0;return i?{message:r,code:i}:{message:r}}o(Y,"parseApiError");var J=/[\p{L}\p{N}]+/gu;function x(e){let s=new Set;for(let n of e.toLowerCase().matchAll(J)){let t=` ${n[0]} `;for(let r=0;r+3<=t.length;r+=1)s.add(t.slice(r,r+3))}return s}o(x,"trigrams");function _(e,s){let n=x(e),t=x(s);if(n.size===0||t.size===0)return 0;let r=0,[i,d]=n.size<=t.size?[n,t]:[t,n];for(let l of i)d.has(l)&&(r+=1);let a=n.size+t.size-r;return a===0?0:r/a}o(_,"trigramSimilarity");var R=.3,Q=15;function C(e){let n=e.replace(/<!--[\s\S]*?-->/g," ").replace(/```[\s\S]*?```/g," "),t=[];for(let r of n.split(`
46
- `)){let i=r.trim();if(i.length===0||i.startsWith("#"))continue;let d=i.replace(/^(?:[-*+]|\d+[.)])\s+/,"").trim();if(d.length!==0)for(let a of d.split(/(?<=[.!?])\s+(?=[A-Z(`"'*])/)){let l=a.trim();l.length>=Q&&t.push(l)}}return t}o(C,"splitDirectives");function O(e,s,n=R){let t=C(e);if(t.length===0)return{redundant:!1,coverage:0,matches:[],novel:[]};let r=s.flatMap(a=>C(a.content).map(l=>({text:l,id:a.id,source:a.source}))),i=[],d=[];for(let a of t){let l=null;for(let m of r){let h=_(a,m.text);h<n||(l===null||h>l.similarity)&&(l={directive:a,matchedDirective:m.text,matchedId:m.id,matchedSource:m.source,similarity:h})}l?i.push(l):d.push(a)}return{redundant:d.length===0,coverage:i.length/t.length,matches:i,novel:d}}o(O,"assessRedundancy");function X(e,s=R){let n=[];for(let t=0;t<e.length;t+=1){let r=O(e[t].content,e.slice(0,t),s);r.matches.length>0&&n.push({instruction:e[t],verdict:r})}return n}o(X,"findInternalRedundancy");import $e from"gray-matter";import{z as A}from"zod";var ze=A.object({type:A.enum(["instruction","prompt"])});export{j as a,g as b,k as c,H as d,z as e,B as f,K as g,W as h,q as i,V as j,Y as k,O as l,X as m};
@@ -1 +0,0 @@
1
- import{a as l}from"../chunk-WLVQJH4E.js";import{a as u}from"../chunk-SE5SRPIB.js";import"../chunk-IZTIYR5Q.js";import"../chunk-OI7MOALX.js";import"../chunk-6SUN4NOY.js";import"../chunk-WVJEBQYU.js";import"../chunk-3AV3GTMP.js";import{a as n,f as c}from"../chunk-OFC7HIBX.js";import"../chunk-VXM4PEED.js";import"../chunk-PZNWH4VQ.js";import{a}from"../chunk-ZLLER3HP.js";import*as d from"node:fs";import{Args as p,Flags as i}from"@oclif/core";var e=class f extends u{static{a(this,"Convert")}static description="Convert an instruction to a target format";static examples=["<%= config.bin %> convert <id> --format claude-md","<%= config.bin %> convert <id> -f cursorrules --score","<%= config.bin %> convert <id> -f copilot -o .github/copilot-instructions.md"];static args={id:p.string({description:"Instruction ID",required:!0})};static flags={format:i.string({char:"f",description:"Target format (e.g., claude-md, cursorrules)",required:!0}),score:i.boolean({description:"Include quality score",default:!1}),output:i.string({char:"o",description:"Write output to file"})};async run(){let{args:s,flags:t}=await this.parse(f);this.requireAuth(),l(s.id,"instruction ID");let o=new URL(`${process.env.RULEMETRIC_API_URL??n}/api/instructions/${encodeURIComponent(s.id)}/convert`);o.searchParams.set("format",t.format),o.searchParams.set("score",String(t.score));let r=await c(`${o.pathname}${o.search}`,{});t.output?(d.writeFileSync(t.output,r.output,"utf-8"),this.log(`Written to ${t.output}`)):this.log(r.output),t.score&&r.score&&(this.log(""),this.log(`Quality Score: ${r.score.overall}/100`)),r.warnings.length>0&&this.warn(`Warnings: ${r.warnings.join(", ")}`)}};export{e as default};
@@ -1 +0,0 @@
1
- import{a as s}from"../chunk-SE5SRPIB.js";import"../chunk-IZTIYR5Q.js";import"../chunk-OI7MOALX.js";import"../chunk-6SUN4NOY.js";import"../chunk-WVJEBQYU.js";import"../chunk-3AV3GTMP.js";import{e as a}from"../chunk-OFC7HIBX.js";import"../chunk-VXM4PEED.js";import"../chunk-PZNWH4VQ.js";import{a as o}from"../chunk-ZLLER3HP.js";import{Flags as m}from"@oclif/core";import{printTable as c}from"@oclif/table";var e=class n extends s{static{o(this,"Converters")}static description="List all supported conversion formats";static examples=["<%= config.bin %> converters","<%= config.bin %> converters --tier 1"];static enableJsonFlag=!0;static flags={tier:m.string({char:"t",description:"Filter by tier",options:["1","2","3"]})};async run(){let{flags:i}=await this.parse(n);this.requireAuth();let r=await a("/api/converters");if(i.tier){let t=Number.parseInt(i.tier,10);r=r.filter(p=>p.tier===t)}return c({data:r.map(t=>({ID:t.id,Name:t.name,Tier:String(t.tier),"Output Path":t.outputPath})),columns:["ID","Name","Tier","Output Path"]}),r}};export{e as default};
@@ -1 +0,0 @@
1
- import{a as p}from"../chunk-SE5SRPIB.js";import"../chunk-IZTIYR5Q.js";import"../chunk-OI7MOALX.js";import"../chunk-6SUN4NOY.js";import"../chunk-WVJEBQYU.js";import"../chunk-3AV3GTMP.js";import{f as c}from"../chunk-OFC7HIBX.js";import"../chunk-VXM4PEED.js";import"../chunk-PZNWH4VQ.js";import{a}from"../chunk-ZLLER3HP.js";import*as o from"node:fs";import*as m from"node:path";import{Args as g,Flags as i}from"@oclif/core";var n=class f extends p{static{a(this,"Import")}static description="Import an existing config file as a RuleMetric instruction";static examples=["<%= config.bin %> import .cursorrules",'<%= config.bin %> import CLAUDE.md --format claude-md --name "My Rules"'];static args={file:g.string({description:"Path to file to import",required:!0})};static flags={format:i.string({description:"Source format (auto-detected if not provided)"}),name:i.string({char:"n",description:"Override instruction name"}),scope:i.string({char:"s",description:"Instruction scope",options:["org","team","project","personal"],default:"personal"}),"scope-ref":i.string({description:"Scope reference UUID"}),tags:i.string({char:"t",description:"Comma-separated tags"})};async run(){let{args:s,flags:t}=await this.parse(f);this.requireAuth(),o.existsSync(s.file)||this.error(`File not found: ${s.file}`);let d=o.readFileSync(s.file,"utf-8"),l=m.basename(s.file),r={content:d,filename:l,scope:t.scope};t.format&&(r.sourceFormat=t.format),t.name&&(r.name=t.name),t["scope-ref"]&&(r.scopeRef=t["scope-ref"]),t.tags&&(r.tags=t.tags.split(",").map(u=>u.trim()));let e=await c("/api/instructions/import",r);this.log(`Imported ${e.sourceFormat} as instruction: ${e.instruction.name} (${e.instruction.id})`),e.parseWarnings.length>0&&this.warn(`Warnings: ${e.parseWarnings.join(", ")}`)}};export{n as default};