@rulemetric/cli 0.15.0 → 0.15.1

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 (49) hide show
  1. package/dist/{chunk-5PMTNNA6.js → chunk-2U6PAYCD.js} +1 -1
  2. package/dist/{chunk-JUBXWTJA.js → chunk-5GFEEYHM.js} +1 -1
  3. package/dist/{chunk-RYCVPQYK.js → chunk-5IL3EEIE.js} +1 -1
  4. package/dist/{chunk-QFTAU33Y.js → chunk-7LE2W3WP.js} +1 -1
  5. package/dist/{chunk-AFEJYDUK.js → chunk-BU3ZGLQG.js} +1 -1
  6. package/dist/{chunk-ISFPPDDB.js → chunk-D5XLTSRV.js} +1 -1
  7. package/dist/{chunk-EJY5GK6A.js → chunk-EE4TZAZI.js} +1 -1
  8. package/dist/chunk-GJHFIQVO.js +28 -0
  9. package/dist/{chunk-TWPD3ICV.js → chunk-GYKYJJNF.js} +1 -1
  10. package/dist/{chunk-CMDOLJ23.js → chunk-ISEUEYSC.js} +1 -1
  11. package/dist/chunk-JIW2PCHU.js +1 -0
  12. package/dist/{chunk-HT6R6KR3.js → chunk-KFNFLMUR.js} +1 -1
  13. package/dist/{chunk-74KE4VOX.js → chunk-OAETRNTE.js} +1 -1
  14. package/dist/{chunk-JSGXFD42.js → chunk-TQM7MF5C.js} +1 -1
  15. package/dist/{chunk-RDL4HXFL.js → chunk-U3PIBPHT.js} +1 -1
  16. package/dist/chunk-UNVURR4E.js +1 -0
  17. package/dist/{chunk-N2PP2A7M.js → chunk-WVNTUKED.js} +1 -1
  18. package/dist/{chunk-XIOYV5A7.js → chunk-X3BBFDRD.js} +1 -1
  19. package/dist/{chunk-DYET4EYU.js → chunk-ZMVTSYD4.js} +1 -1
  20. package/dist/commands/diagnostics.js +1 -1
  21. package/dist/commands/evals/agent.js +1 -1
  22. package/dist/commands/evals/benchmark.js +1 -1
  23. package/dist/commands/evals/optimize.js +1 -1
  24. package/dist/commands/evals/refine-cases.js +1 -1
  25. package/dist/commands/sessions/list.js +1 -1
  26. package/dist/dashboard/Dashboard.js +1 -1
  27. package/dist/dashboard/data.js +1 -1
  28. package/dist/{dist-GSHUC7UU.js → dist-OVXV2FFO.js} +1 -1
  29. package/dist/lib/agent-loop.js +1 -1
  30. package/dist/lib/eval-benchmark.js +1 -1
  31. package/dist/lib/evolution-cost.js +1 -1
  32. package/dist/lib/evolution-enrolment.js +1 -1
  33. package/dist/lib/instruction-restoration.js +1 -1
  34. package/dist/lib/jobs/handlers/cron-instruction-evolution.js +1 -1
  35. package/dist/lib/jobs/handlers/cron-refine-cases.js +1 -1
  36. package/dist/lib/jobs/handlers/process-changelog.js +1 -1
  37. package/dist/lib/jobs/handlers/process-eval.js +1 -1
  38. package/dist/lib/jobs/handlers/process-launch.js +1 -1
  39. package/dist/lib/jobs/handlers/process-memory-ab.js +1 -1
  40. package/dist/lib/jobs/handlers/process-run-cleanup.js +1 -1
  41. package/dist/lib/manual-tasks.js +1 -1
  42. package/dist/lib/optimize-compare.js +1 -1
  43. package/dist/lib/projects/workspace/worktree.js +1 -1
  44. package/dist/lib/refine-cases.js +1 -1
  45. package/oclif.manifest.json +1 -1
  46. package/package.json +6 -6
  47. package/dist/chunk-4DA6L7KL.js +0 -1
  48. package/dist/chunk-T75KAEJO.js +0 -25
  49. package/dist/chunk-V576KKH6.js +0 -1
@@ -4800,5 +4800,5 @@
4800
4800
  ]
4801
4801
  }
4802
4802
  },
4803
- "version": "0.15.0"
4803
+ "version": "0.15.1"
4804
4804
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rulemetric/cli",
3
- "version": "0.15.0",
3
+ "version": "0.15.1",
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.15.0",
84
- "@rulemetric/proxy": "0.15.0",
85
- "@rulemetric/skills-registry": "0.15.0"
83
+ "@rulemetric/proxy": "0.15.1",
84
+ "@rulemetric/skills-registry": "0.15.1",
85
+ "@rulemetric/hooks": "0.15.1"
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": {
@@ -109,8 +109,8 @@
109
109
  "@rulemetric/effectiveness": "0.0.1",
110
110
  "@rulemetric/email": "0.0.1",
111
111
  "@rulemetric/session": "0.2.1",
112
- "@rulemetric/typescript-config": "0.0.0",
113
- "@rulemetric/telemetry": "0.0.1"
112
+ "@rulemetric/telemetry": "0.0.1",
113
+ "@rulemetric/typescript-config": "0.0.0"
114
114
  },
115
115
  "scripts": {
116
116
  "build": "node scripts/build.mjs",
@@ -1 +0,0 @@
1
- import{a as Y,b as F,c as T,d as Z,e as ee}from"./chunk-JU5ZNXPK.js";import{a as E}from"./chunk-5RBLIVBF.js";import{a as te}from"./chunk-KR36ZDGN.js";import{b as ne}from"./chunk-HXOQUYG3.js";import{a as z,c as X}from"./chunk-FADINV4H.js";import{f as N}from"./chunk-SWSOEYC7.js";import{a as K}from"./chunk-FG343JM3.js";import{a as B,f as Q}from"./chunk-4GOXEEXZ.js";import{e as R,f as I,h as $}from"./chunk-GIXHG5FK.js";import{a as w}from"./chunk-ZLLER3HP.js";import{execFileSync as ce}from"node:child_process";import{tmpdir as oe}from"node:os";import{z as e}from"zod";var C=e.string().regex(/^[a-f0-9]{64}$/),c=e.string().min(1).max(2e4),re=e.string().min(1).max(240).refine(r=>!r.startsWith("/")&&!r.includes("\\")&&r.split("/").every(p=>p!==".."&&p!=="."&&p!==""&&!p.startsWith(".")),"fixture paths must be relative, without traversal or hidden configuration"),P=e.object({path:re,content:e.string().max(1e5)}).strict(),se=e.object({name:c,path:re,kind:e.enum(["text_equals","json_equals","file_absent"]),expected:e.string().max(1e5),primary:e.boolean()}).strict(),le=e.object({evalId:e.string().uuid(),taskId:c,family:c,lineage:c,split:e.enum(["exploration","validation"]),incidentSessionIds:e.array(e.string().uuid()).min(1),opportunity:e.enum(["failure","success","costly_success","should_not_trigger"]),prompt:c,fixtureVersion:c,verifierVersion:c,files:e.array(P).max(100),checks:e.array(se).min(1).max(30),oracleFiles:e.array(P).max(100)}).strict(),ue=e.object({version:e.literal(1),revision:e.number().int().positive(),question:c,hypotheses:e.array(c).min(2),interventionType:e.enum(["instruction","retrieval","tool","executable_check","workflow","removal","none"]),baseline:e.object({content:e.string().max(16e3),files:e.array(P).max(30)}).strict(),treatment:e.object({content:e.string().max(16e3),files:e.array(P).max(30)}).strict(),scope:e.object({projectPath:c,harnessVersion:c,deliveryMode:e.literal("explicit-system-and-fixture-file"),engine:e.enum(["claude","codex"]),model:c,provider:e.enum(["anthropic","openai"]),repositoryRevision:e.string().regex(/^[a-f0-9]{40}$/),ambientContext:e.literal("frozen-fixture"),permissions:e.literal("isolated-fixture-write"),tools:e.array(c).min(1),expiresAt:e.string().datetime()}).strict(),sampling:e.object({rationale:c,exclusions:e.array(c),eligibleOpportunities:e.number().int().positive(),sampledOpportunities:e.number().int().positive()}).strict(),analysis:e.object({role:e.enum(["diagnostic","exploration","frozen_validation"]),primaryOutcome:c,safeguards:e.array(c).min(1),eligibility:c,assignmentUnit:e.literal("task"),weighting:e.literal("equal-task"),method:e.literal("paired-task-bootstrap"),stopping:e.literal("fixed-final"),primaryComparison:e.literal("treatment-minus-baseline"),repetitions:e.number().int().min(1).max(10),usefulEffect:e.number().positive().max(1),reliabilityMargin:e.number().min(0).max(1),maxCalls:e.number().int().min(2).max(200),maxSecondsPerCall:e.number().int().min(10).max(600),humanReviewMinutes:e.number().nonnegative().nullable(),reviewNote:c}).strict(),tasks:e.array(le).min(1).max(50),supersedes:e.string().uuid().nullable()}).strict().superRefine((r,p)=>{let s=w(i=>p.addIssue({code:"custom",message:i}),"fail");(new Set(r.tasks.map(i=>i.evalId)).size!==r.tasks.length||new Set(r.tasks.map(i=>i.taskId)).size!==r.tasks.length)&&s("task identity must be unique, not repetition"),r.scope.engine==="claude"!=(r.scope.provider==="anthropic")&&s("engine/provider mismatch"),r.scope.engine==="claude"&&[...r.scope.tools].sort().join(",")!=="Bash,Edit,Read,Write"&&s("Claude fixture execution supports exactly Read, Write, Edit and Bash");for(let i of[r.baseline,r.treatment])Array.from(i.content).reduce((n,g)=>{let d=g.codePointAt(0);return n+(d<128?1:d<2048?2:d<65536?3:4)},0)>16e3&&s("Instruction delivery exceeds the UTF-8 byte budget");let f=new Map;for(let i of r.tasks){for(let n of[i.lineage,i.family])f.has(n)&&f.get(n)!==i.split&&s("family or incident lineage leaks across splits"),f.set(n,i.split);[...i.files,...r.baseline.files,...r.treatment.files].some(n=>["CLAUDE.md","CLAUDE.local.md","AGENTS.md"].includes(n.path.split("/").at(-1)))&&s("Fixture files cannot introduce ambient instruction files"),new Set(i.checks.map(n=>n.name)).size!==i.checks.length&&s("Check names must be unique"),i.checks.some(n=>n.primary)||s("each task needs an independent primary artifact check"),new Set(i.files.map(n=>n.path)).size!==i.files.length&&s("duplicate fixture file path");for(let n of[r.baseline,r.treatment])new Set(n.files.map(g=>g.path)).size!==n.files.length&&s("duplicate intervention file path"),n.files.some(g=>i.files.some(d=>d.path===g.path))&&s("intervention must not overwrite common fixture files")}let l=r.tasks.filter(i=>i.split===(r.analysis.role==="frozen_validation"?"validation":"exploration"));l.length||s("no tasks in the selected split"),l.length*2*r.analysis.repetitions>r.analysis.maxCalls&&s("planned calls exceed resource ceiling"),r.sampling.sampledOpportunities>r.sampling.eligibleOpportunities&&s("sampled opportunities exceed eligible opportunities")}),ie=e.object({version:e.literal(1),id:e.string().uuid(),protocolHash:C,protocol:ue}).strict(),de=e.object({studyId:e.string().uuid(),protocolHash:C,taskId:c,arm:e.enum(["baseline","treatment"]),repetition:e.number().int().positive(),eligible:e.boolean(),exclusion:e.string().nullable(),primaryPassed:e.boolean(),safeguardsPassed:e.boolean(),checks:e.array(e.object({name:c,passed:e.boolean(),actual:e.string().nullable()})),deliveryHash:C,fixtureHash:C,harnessVersion:e.string().nullable(),engine:e.string().nullable(),model:e.string().nullable(),provider:e.string().nullable(),durationMs:e.number().nonnegative(),tokens:e.number().nonnegative().nullable(),costUsd:e.number().nonnegative().nullable()}).strict();async function _e(r,p){let{mirrorId:s,evalTargetId:f}=r,l=r.measurement?{...r.config,...X({...r.config,measurement:r.measurement})}:r.config,i=w(t=>p.logger.info(t),"log"),n=r.study?ie.parse(r.study):null;if(n&&n.protocol.scope.engine!=="claude")throw new E("Frozen study isolation is currently verified only for Claude");if(n&&Y(n.protocol)!==n.protocolHash)throw new E("Study snapshot hash mismatch");let g=await R(`/api/eval-targets/${f}`),d=await R(`/api/eval-targets/${f}/evals`);if(n&&(d=n.protocol.tasks.filter(t=>t.split===(n.protocol.analysis.role==="frozen_validation"?"validation":"exploration")).map(t=>({id:t.evalId,name:t.taskId,prompt:t.prompt,expectedOutput:"",expectations:[]}))),d.length===0&&l.generateIfEmpty){i("No eval cases on target \u2014 generating from content via local LLM...");let t=await ne({content:g.content,name:g.name,...r.measurement?{measurement:r.measurement}:{}});if(t===null)throw new Error("Case generation requires a local LLM backend (Claude or Codex CLI) \u2014 none available on this worker.");let a=[];for(let o of t)a.push(await I(`/api/eval-targets/${f}/evals`,o));d=a,i(`Generated ${a.length} eval case(s)`)}if(d.length===0)throw new E("No evals defined for target");let M=null;if(n&&(M=ce(n.protocol.scope.engine,["--version"],{encoding:"utf8",timeout:1e4}).trim(),M!==n.protocol.scope.harnessVersion))throw new E("Observed harness version differs from frozen protocol");if(n){if(l.engine!==n.protocol.scope.engine||l.model!==n.protocol.scope.model||l.runsPerEval!==n.protocol.analysis.repetitions||l.timeout!==n.protocol.analysis.maxSecondsPerCall*1e3||l.skipBaseline||new Date(n.protocol.scope.expiresAt)<=new Date)throw new E("Study execution configuration differs from frozen protocol or scope expired");for(let t of n.protocol.tasks.filter(a=>d.some(o=>o.id===a.evalId))){let a=N({baseDir:oe(),engine:n.protocol.scope.engine});try{F(a.workDir,[...t.files,...t.oracleFiles]);let o=T(a.workDir,t);if(!o.primaryPassed||!o.safeguardsPassed)throw new E(`Oracle failed for ${t.taskId}; no actor calls started`)}finally{a.cleanup()}}}let ae=l.runsPerEval??1,D=l.timeout??12e4,H=n?1:l.iteration??1,_=new Set;if(p.job.attempts>1)for(let a=0;;a+=100){let o=await R(`/api/eval-targets/${f}/runs?jobId=${s}&limit=100&offset=${a}`);for(let m of o)_.add(`${m.evalId}|${m.configuration}|${m.runNumber}|${m.iteration}`);if(o.length<100)break}let O=[{name:"with_target",content:n?.protocol.treatment.content??g.content}];l.skipBaseline||O.push({name:"without_target",...n?{content:n.protocol.baseline.content}:{}});let b=[];for(let t of d)for(let a of O)for(let o=1;o<=ae;o++)_.has(`${t.id}|${a.name}|${o}|${H}`)||b.push({eval_:t,configuration:a.name,targetContent:a.content,runNumber:o});n&&b.sort((t,a)=>t.eval_.id.localeCompare(a.eval_.id)||t.runNumber-a.runNumber||((d.findIndex(o=>o.id===t.eval_.id)+t.runNumber)%2?t.configuration.localeCompare(a.configuration):a.configuration.localeCompare(t.configuration))),_.size>0&&i(`Resuming attempt ${p.job.attempts}: ${_.size} run(s) already persisted, ${b.length} remaining`);let h=b.length,y=0,x=B(l.engine),k=Math.min(l.parallel??1,4);await $(`/api/eval-jobs/${s}/progress`,{status:"running",progress:{total:h,completed:0,current:null,message:`Starting ${h} eval runs (concurrency: ${k})...`}});let S=[];async function A(t){let a=`${t.configuration} \xB7 ${t.eval_.name} \xB7 run#${t.runNumber}`;i(`[${y+1}/${h}] ${a}`);let o=N({...n?{baseDir:oe()}:{},targetType:n?"instruction":g.type,targetContent:t.targetContent,targetName:g.name,engine:x});o.leakedFiles.length&&i(`\u26A0 CONTAMINATED ${a}: ${o.leakedFiles.join(", ")} survived the strip`);try{let m=n?.protocol.tasks.find(W=>W.evalId===t.eval_.id),v=t.configuration==="with_target"?"treatment":"baseline";n&&m&&F(o.workDir,[...m.files,...n.protocol[v].files]);let q=n&&m?ee(o.workDir,m,n.protocol[v],x):null;n&&m&&await I(`/api/studies/${n.id}/calls`,{jobId:s,taskId:m.taskId,arm:v,repetition:t.runNumber});let u=await Q({prompt:t.eval_.prompt,targetContent:n?t.targetContent:o.systemPrompt,...n?{appendTarget:!0}:{},workDir:o.workDir,timeout:D,model:l.model,engine:x,...n?{writableFixture:!0}:{}}),G={};!l.skipGrading&&t.eval_.expectations.length>0&&!u.error&&(G=await K({...z({engine:x,model:l.model},{engine:l.graderEngine,model:l.graderModel}),prompt:t.eval_.prompt,output:u.output,expectations:t.eval_.expectations,timeout:D}));let L=n?Z(n.protocol,u):null,V=n&&m?{studyId:n.id,protocolHash:n.protocolHash,taskId:m.taskId,arm:v,repetition:t.runNumber,eligible:L===null,exclusion:L,...T(o.workDir,m),deliveryHash:q.deliveryHash,fixtureHash:q.fixtureHash,harnessVersion:M,engine:u.engine??null,model:u.model??null,provider:u.engine==="claude"?"anthropic":u.provider??null,durationMs:u.durationMs,tokens:u.totalTokens||null,costUsd:u.costUsd??null}:null;return{jobId:s,evalId:t.eval_.id,evalTargetId:g.id,evalTargetVersion:g.version,configuration:t.configuration,runNumber:t.runNumber,iteration:H,status:u.error?"failed":"completed",outputs:{...V?{study:V}:{},...u.usage?{usage:u.usage}:{},...u.error?{error:u.error}:{transcript:u.output,...u.model?{model:u.model}:{}},methodology:o.methodology,delivery:o.delivery,isolated:o.isWorktree,engine:u.engine??x,model:u.model??null,deliveryRegime:`${g.type}:${x}:${o.methodology}`,...r.measurement?{measurement:r.measurement}:{},...u.provider?{provider:u.provider}:{},...u.costUsd!=null?{costUsd:u.costUsd}:{},...o.leakedFiles.length?{leakedFiles:o.leakedFiles}:{}},timing:{duration_ms:u.durationMs,total_tokens:u.totalTokens},grading:G,worktree:o.isWorktree?!0:void 0}}finally{o.cleanup()}}if(w(A,"processItem"),k<=1)for(let t of b){let a=`${t.configuration} \xB7 ${t.eval_.name} \xB7 run#${t.runNumber}`;await $(`/api/eval-jobs/${s}/progress`,{status:"running",progress:{total:h,completed:y,current:a,message:`Executing ${a}...`}});let o=await A(t);await I("/api/eval-runs",o),S.push(o),y++,await $(`/api/eval-jobs/${s}/progress`,{status:"running",progress:{total:h,completed:y,current:a,message:`Completed ${a}`}})}else{i(`Running ${h} evals with concurrency=${k} (worktree isolation)`);for(let t=0;t<b.length;t+=k){let a=b.slice(t,t+k),o=`batch ${Math.floor(t/k)+1}/${Math.ceil(b.length/k)}`;await $(`/api/eval-jobs/${s}/progress`,{status:"running",progress:{total:h,completed:y,current:o,message:`Executing ${o} (${a.length} parallel)...`}});let m=await Promise.all(a.map(A));for(let v of m)await I("/api/eval-runs",v),S.push(v),y++;await $(`/api/eval-jobs/${s}/progress`,{status:"running",progress:{total:h,completed:y,current:o,message:`Completed ${o}`}})}}let J=me(S),j;if(!l.skipGrading&&S.some(t=>t.grading&&Object.keys(t.grading).length>0))try{i(`Running meta-judge for job ${s}...`);let t=d.map(a=>{let m=S.filter(v=>v.evalId===a.id&&v.configuration==="with_target")[0];return{evalName:a.name,prompt:a.prompt,expectations:a.expectations,grading:m?.grading?m.grading:null,output:m?.outputs?.transcript?.slice(0,500)}});j=await te({...z({engine:x,model:l.model},{engine:l.graderEngine,model:l.graderModel}),targetName:g.name,evalResults:t,timeout:6e4}),i(`Meta-judge: quality=${j.quality_score}/5, issues=${j.issues.length}`)}catch(t){i(`Meta-judge failed (non-fatal): ${t instanceof Error?t.message:String(t)}`)}let U=j?{...J,meta_judgement:j}:J;return i(`Job ${s} completed: ${y}/${h} runs`),await $(`/api/eval-jobs/${s}/state`,{result:U}).catch(t=>{i(`result persist failed: ${t instanceof Error?t.message:String(t)}`)}),U}w(_e,"processEval");function me(r){let p=r.filter(i=>i.status==="completed"),s=r.filter(i=>i.status==="failed"),f=p.filter(i=>{let n=i.grading;return n&&Object.keys(n).length>0}),l=f.length>0?f.reduce((i,n)=>i+(n.grading?.summary?.pass_rate??0),0)/f.length:null;return{total:r.length,completed:p.length,failed:s.length,avgPassRate:l}}w(me,"buildSummary");export{_e as a};
@@ -1,25 +0,0 @@
1
- import{a as l,b as Mt}from"./chunk-ZLLER3HP.js";var Ve=["claude_code","cursor","vscode_copilot","copilot_agent","rulemetric_mcp","codex","pi","opencode","antigravity"],Ke=["user_message","assistant_message","assistant_response","tool_call","tool_result","thinking","error"];var qt=new Set(["","unknown","<synthetic>"]);function Jt(e){if(typeof e!="string")return null;let t=e.trim();return qt.has(t)?null:t}l(Jt,"resolveEventModel");var A=class{static{l(this,"ClaudeCodeAdapter")}tool="claude_code";parse(t){let n=t.split(`
2
- `).filter(p=>p.trim()),o=[];for(let p of n)try{o.push(JSON.parse(p))}catch{}let s=o.filter(p=>p.type==="user"||p.type==="assistant"),r=null,i=null,c={},a=o.find(p=>p.type==="user");a&&(r=a.cwd??null,i=a.gitBranch??null,a.version&&(c.claudeCodeVersion=a.version),a.sessionId&&(c.sessionId=a.sessionId));let u=o.find(p=>p.type==="assistant");u?.message?.model&&(c.model=u.message.model);let d=[],f=0;for(let p of s){let y=p.timestamp??new Date().toISOString();if(p.type==="user"){let g=p.message?.content;if(typeof g=="string")d.push({sequence:f++,eventType:"user_message",content:g,toolName:null,toolInput:null,toolOutput:null,tokenUsage:null,timestamp:y,metadata:{}});else if(Array.isArray(g))for(let _ of g)_.type==="tool_result"&&d.push({sequence:f++,eventType:"tool_result",content:typeof _.content=="string"?_.content:JSON.stringify(_.content),toolName:null,toolInput:null,toolOutput:null,tokenUsage:null,timestamp:y,metadata:{toolUseId:_.tool_use_id}})}else if(p.type==="assistant"){let g=Array.isArray(p.message?.content)?p.message.content:[],_=p.message?.usage,x=_?{input:_.input_tokens??0,output:_.output_tokens??0,cacheRead:_.cache_read_input_tokens??0,cacheWrite:_.cache_creation_input_tokens??0}:null,v={};p.message?.model&&(v.model=p.message.model);let w=Jt(p.message?.model);p.message?.stop_reason&&(v.stopReason=p.message.stop_reason),p.requestId&&(v.requestId=p.requestId),_?.service_tier&&(v.serviceTier=_.service_tier),_?.speed&&(v.speed=_.speed),_?.cache_creation&&(v.cacheCreationDetail=_.cache_creation),_?.server_tool_use&&(v.serverToolUse=_.server_tool_use);for(let S of g)S.type==="text"?d.push({sequence:f++,eventType:"assistant_message",content:S.text??"",toolName:null,toolInput:null,toolOutput:null,tokenUsage:x,model:w,timestamp:y,metadata:v}):S.type==="thinking"?d.push({sequence:f++,eventType:"thinking",content:S.thinking??"",toolName:null,toolInput:null,toolOutput:null,tokenUsage:x,model:w,timestamp:y,metadata:v}):S.type==="tool_use"&&d.push({sequence:f++,eventType:"tool_call",content:null,toolName:S.name??"unknown",toolInput:S.input??null,toolOutput:null,tokenUsage:x,model:w,timestamp:y,metadata:{...v,toolUseId:S.id}})}}let m=d.map(p=>p.timestamp).sort(),h=new Date().toISOString();return{tool:"claude_code",projectPath:r,gitBranch:i,startedAt:m[0]??h,endedAt:m[m.length-1]??null,events:d,metadata:c}}};var N=class{static{l(this,"CursorAdapter")}tool="cursor";parse(t){let n=Mt("better-sqlite3"),o=new n(t,{readonly:!0});try{let s=o.prepare("SELECT value FROM ItemTable WHERE key = 'composer.composerData'").get();return s?this.parseComposerJson(s.value):this.emptySession()}finally{o.close()}}parseComposerJson(t){let n;try{n=JSON.parse(t)}catch{return this.emptySession()}let o=Object.values(n.allComposers??{});if(o.length===0)return this.emptySession();let s=o.sort((u,d)=>{let f=u.createdAt?new Date(u.createdAt).getTime():0;return(d.createdAt?new Date(d.createdAt).getTime():0)-f})[0],r=s.conversation??[],i=[];for(let u=0;u<r.length;u++){let d=r[u],f=d.createdAt??new Date().toISOString();i.push({sequence:u,eventType:d.type===1?"user_message":"assistant_message",content:d.text,toolName:null,toolInput:null,toolOutput:null,tokenUsage:null,timestamp:f,metadata:{}})}let c=i.map(u=>u.timestamp).sort(),a=new Date().toISOString();return{tool:"cursor",projectPath:null,gitBranch:null,startedAt:c[0]??a,endedAt:c[c.length-1]??null,events:i,metadata:{composerId:s.composerId}}}emptySession(){return{tool:"cursor",projectPath:null,gitBranch:null,startedAt:new Date().toISOString(),endedAt:null,events:[],metadata:{}}}};var P=class{static{l(this,"VSCodeCopilotAdapter")}tool="vscode_copilot";parse(t){let n;try{n=JSON.parse(t)}catch{return this.emptySession()}let o=n.requests??[],s=[],r=0;for(let a of o){let u=a.timestamp?new Date(a.timestamp).toISOString():new Date().toISOString();if(s.push({sequence:r++,eventType:"user_message",content:a.message,toolName:null,toolInput:null,toolOutput:null,tokenUsage:null,timestamp:u,metadata:{}}),a.response){let d=a.response.timestamp?new Date(a.response.timestamp).toISOString():u;s.push({sequence:r++,eventType:"assistant_message",content:a.response.message,toolName:null,toolInput:null,toolOutput:null,tokenUsage:null,timestamp:d,metadata:{}})}}let i=s.map(a=>a.timestamp).sort(),c=new Date().toISOString();return{tool:"vscode_copilot",projectPath:null,gitBranch:null,startedAt:i[0]??c,endedAt:i[i.length-1]??null,events:s,metadata:{...n.requesterUsername&&{username:n.requesterUsername},...n.customTitle&&{title:n.customTitle}}}}emptySession(){return{tool:"vscode_copilot",projectPath:null,gitBranch:null,startedAt:new Date().toISOString(),endedAt:null,events:[],metadata:{}}}};var b=class{static{l(this,"CopilotAgentAdapter")}tool="copilot_agent";parse(t){let n;try{n=JSON.parse(t)}catch{return this.emptySession()}let o=n.requests??[],s=[],r=0;for(let a of o){let u=a.timestamp?new Date(a.timestamp).toISOString():new Date().toISOString();if(s.push({sequence:r++,eventType:"user_message",content:a.message,toolName:null,toolInput:null,toolOutput:null,tokenUsage:null,timestamp:u,metadata:{}}),a.toolCalls)for(let d of a.toolCalls){let f=d.timestamp?new Date(d.timestamp).toISOString():u;s.push({sequence:r++,eventType:"tool_call",content:null,toolName:d.name??"unknown",toolInput:d.input??null,toolOutput:d.output??null,tokenUsage:null,timestamp:f,metadata:{}})}if(a.response){let d=a.response.timestamp?new Date(a.response.timestamp).toISOString():u;s.push({sequence:r++,eventType:"assistant_message",content:a.response.message,toolName:null,toolInput:null,toolOutput:null,tokenUsage:null,timestamp:d,metadata:{}})}}let i=s.map(a=>a.timestamp).sort(),c=new Date().toISOString();return{tool:"copilot_agent",projectPath:null,gitBranch:null,startedAt:i[0]??c,endedAt:i[i.length-1]??null,events:s,metadata:{...n.requesterUsername&&{username:n.requesterUsername},...n.customTitle&&{title:n.customTitle},...n.agentMode!=null&&{agentMode:n.agentMode}}}}emptySession(){return{tool:"copilot_agent",projectPath:null,gitBranch:null,startedAt:new Date().toISOString(),endedAt:null,events:[],metadata:{}}}};var D=class{static{l(this,"RuleMetricMcpAdapter")}tool="rulemetric_mcp";parse(t){let n;try{n=JSON.parse(t)}catch{return this.emptySession()}let s=(n.events??[]).map((i,c)=>({sequence:i.sequence??c,eventType:this.normalizeEventType(i.eventType),content:i.content??null,toolName:i.toolName??null,toolInput:i.toolInput??null,toolOutput:i.toolOutput??null,tokenUsage:i.tokenUsage??null,timestamp:i.timestamp??new Date().toISOString(),metadata:i.metadata??{}})),r=new Date().toISOString();return{tool:"rulemetric_mcp",projectPath:n.projectPath??null,gitBranch:n.gitBranch??null,startedAt:n.startedAt??s[0]?.timestamp??r,endedAt:n.endedAt??s[s.length-1]?.timestamp??null,events:s,metadata:n.metadata??{}}}normalizeEventType(t){return t&&["user_message","assistant_message","tool_call","tool_result","thinking","error"].includes(t)?t:"assistant_message"}emptySession(){return{tool:"rulemetric_mcp",projectPath:null,gitBranch:null,startedAt:new Date().toISOString(),endedAt:null,events:[],metadata:{}}}};function Bt(e){try{return JSON.parse(e)}catch{return e}}l(Bt,"safeJsonParse");function Q(e,t){return Array.isArray(e)?e.filter(n=>n.type&&t.includes(n.type)).map(n=>n.text??"").filter(Boolean).join(`
3
-
4
- `):""}l(Q,"textFromBlocks");function Gt(e){if(!e)return null;let t=e.cached_input_tokens??0,n=Math.max(0,(e.input_tokens??0)-t),o=(e.output_tokens??0)+(e.reasoning_output_tokens??0);return n===0&&o===0&&t===0?null:{input:n,output:o,cacheRead:t,cacheWrite:0}}l(Gt,"tokenUsageFromCodex");function Lt(e){if(!e)return new Date().toISOString();let t=new Date(e);return Number.isFinite(t.getTime())?t.toISOString():new Date().toISOString()}l(Lt,"normalizeTimestamp");function tt(){return{sequence:0,model:null,prevCumulativeTotal:0,callNames:{}}}l(tt,"freshCodexState");var C=class{static{l(this,"CodexAdapter")}tool="codex";parse(t){let n=tt(),{events:o,projectPath:s,gitBranch:r,metadata:i}=this.parseLines(t,n),c=o.map(u=>u.timestamp).sort(),a=new Date().toISOString();return{tool:"codex",projectPath:s,gitBranch:r,startedAt:c[0]??a,endedAt:c[c.length-1]??null,events:o,metadata:i}}parseAppend(t,n){let o={...n,callNames:{...n.callNames}},{events:s}=this.parseLines(t,o);return{events:s,state:o}}parseLines(t,n){let o=t.split(`
5
- `).filter(d=>d.trim()),s=[],r={},i=n.callNames,c=null,a=null,u=null;for(let d of o){let f;try{f=JSON.parse(d)}catch{continue}let m=f.payload;if(!m)continue;let h=Lt(f.timestamp);if(f.type==="session_meta"){u=m.session_id??m.id??u,c=m.cwd??c,m.git_branch&&(a=m.git_branch),m.model&&(n.model=m.model),r.sessionId=u,r.codexSessionId=u,r.originator=m.originator,r.source=m.source,r.modelProvider=m.model_provider,r.codexCliVersion=m.cli_version;continue}if(f.type==="turn_context"){c=m.cwd??c,m.model&&(n.model=m.model,r.model=m.model);continue}if(f.type==="response_item"&&m.type==="message"){if(m.role==="user"){let p=Q(m.content,["input_text"]);if(!p)continue;s.push({sequence:n.sequence++,eventType:"user_message",content:p,toolName:null,toolInput:null,toolOutput:null,tokenUsage:null,timestamp:h,metadata:{}})}else if(m.role==="assistant"){let p=Q(m.content,["output_text"]);if(!p)continue;s.push({sequence:n.sequence++,eventType:"assistant_message",content:p,toolName:null,toolInput:null,toolOutput:null,tokenUsage:null,model:n.model,timestamp:h,metadata:n.model?{model:n.model}:{}})}continue}if(f.type==="response_item"&&m.type==="function_call"){let p=m.name??"unknown";m.call_id&&(i[m.call_id]=p);let y=typeof m.arguments=="string"?Bt(m.arguments):{};s.push({sequence:n.sequence++,eventType:"tool_call",content:null,toolName:p,toolInput:y&&typeof y=="object"&&!Array.isArray(y)?y:{arguments:y},toolOutput:null,tokenUsage:null,model:n.model,timestamp:h,metadata:{callId:m.call_id}});continue}if(f.type==="response_item"&&m.type==="function_call_output"){let p=m.call_id?i[m.call_id]??null:null;s.push({sequence:n.sequence++,eventType:"tool_result",content:m.output??null,toolName:p,toolInput:null,toolOutput:m.output==null?null:{output:m.output},tokenUsage:null,model:n.model,timestamp:h,metadata:{callId:m.call_id}});continue}if(f.type==="event_msg"&&m.type==="token_count"){let p=m.info,y=p?.total_token_usage?.total_tokens??0;if(y>0&&y===n.prevCumulativeTotal)continue;y>0&&(n.prevCumulativeTotal=y);let g=Gt(p?.last_token_usage??p?.total_token_usage);if(!g)continue;let _=p?.model??p?.model_name??n.model;s.push({sequence:n.sequence++,eventType:"assistant_response",content:null,toolName:null,toolInput:null,toolOutput:null,tokenUsage:g,model:_??null,timestamp:h,metadata:{codexEventType:"token_count",..._?{model:_}:{},reasoningOutputTokens:p?.last_token_usage?.reasoning_output_tokens??0,usage:{input_tokens:g.input,output_tokens:g.output,cache_read_input_tokens:g.cacheRead??0,cache_creation_input_tokens:g.cacheWrite??0}}})}}return{events:s,projectPath:c,gitBranch:a,sessionId:u,metadata:r}}};function et(e,t){let n=e??(typeof t=="number"?new Date(t).toISOString():""),o=new Date(n);return Number.isFinite(o.getTime())?o.toISOString():new Date().toISOString()}l(et,"timestamp");function ot(e){return Array.isArray(e.content)?e.content:[]}l(ot,"blocks");function nt(e){return typeof e.content=="string"?e.content:ot(e).filter(t=>t.type==="text").map(t=>t.text??"").filter(Boolean).join(`
6
-
7
- `)}l(nt,"messageText");function Ft(e){if(!e)return null;let t={input:Math.max(0,e.input??0),output:Math.max(0,e.output??0),cacheRead:Math.max(0,e.cacheRead??0),cacheWrite:Math.max(0,e.cacheWrite??0)};return Object.values(t).some(n=>n>0)?t:null}l(Ft,"usageOf");var j=class{static{l(this,"PiAdapter")}tool="pi";parse(t){let n=[],o={},s=null,r=null,i=null,c=null,a=l(f=>{n.push({sequence:n.length,...f})},"push");for(let f of t.split(`
8
- `)){if(!f.trim())continue;let m;try{m=JSON.parse(f)}catch{continue}if(m.type==="session"){r||(r=et(m.timestamp)),s=m.cwd??s,o.sessionId=m.id,o.piSessionId=m.id,o.sessionVersion=m.version;continue}if(m.type==="model_change"){i=m.provider??i,c=m.modelId??c,i&&(o.provider=i),c&&(o.model=c);continue}if(m.type!=="message"||!m.message)continue;let h=m.message,p=et(m.timestamp,h.timestamp);if(i=h.provider??i,c=h.model??c,i&&(o.provider=i),c&&(o.model=c),h.role==="user"){let g=nt(h);if(!g)continue;a({eventType:"user_message",content:g,toolName:null,toolInput:null,toolOutput:null,tokenUsage:null,timestamp:p,metadata:{}});continue}if(h.role==="toolResult"){let g=nt(h);a({eventType:"tool_result",content:g||null,toolName:h.toolName??null,toolInput:null,toolOutput:{content:g,details:h.details??null,isError:h.isError??!1},tokenUsage:null,model:c,timestamp:p,metadata:{toolCallId:h.toolCallId,isError:h.isError??!1}});continue}if(h.role!=="assistant")continue;if(h.stopReason==="error"||h.stopReason==="aborted"){a({eventType:"error",content:h.errorMessage??`Pi stopped with ${h.stopReason}`,toolName:null,toolInput:null,toolOutput:null,tokenUsage:null,model:c,timestamp:p,metadata:{provider:i,stopReason:h.stopReason}});continue}for(let g of ot(h))g.type==="thinking"&&g.thinking?a({eventType:"thinking",content:g.thinking,toolName:null,toolInput:null,toolOutput:null,tokenUsage:null,model:c,timestamp:p,metadata:{provider:i}}):g.type==="text"&&g.text?a({eventType:"assistant_message",content:g.text,toolName:null,toolInput:null,toolOutput:null,tokenUsage:null,model:c,timestamp:p,metadata:{provider:i}}):g.type==="toolCall"&&g.name&&a({eventType:"tool_call",content:null,toolName:g.name,toolInput:g.arguments??{},toolOutput:null,tokenUsage:null,model:c,timestamp:p,metadata:{provider:i,toolCallId:g.id}});let y=Ft(h.usage);y&&a({eventType:"assistant_response",content:null,toolName:null,toolInput:null,toolOutput:null,tokenUsage:y,model:c,timestamp:p,metadata:{piEventType:"assistant_usage",provider:i,responseId:h.responseId,stopReason:h.stopReason,costUsd:h.usage?.cost?.total,usage:{input_tokens:y.input,output_tokens:y.output,cache_read_input_tokens:y.cacheRead??0,cache_creation_input_tokens:y.cacheWrite??0}}})}let u=n.map(f=>f.timestamp).sort(),d=new Date().toISOString();return{tool:"pi",projectPath:s,gitBranch:null,startedAt:r??u[0]??d,endedAt:u[u.length-1]??null,events:n,metadata:o}}};var Wt={claude_code:l(()=>new A,"claude_code"),cursor:l(()=>new N,"cursor"),vscode_copilot:l(()=>new P,"vscode_copilot"),copilot_agent:l(()=>new b,"copilot_agent"),rulemetric_mcp:l(()=>new D,"rulemetric_mcp"),codex:l(()=>new C,"codex"),pi:l(()=>new j,"pi")};function Ht(e){let t=Wt[e];if(!t)throw new Error(`Unknown session tool: ${e}`);return t()}l(Ht,"getAdapter");function zt(e){let t=e.trim();if(t.startsWith("{")){let n=t.split(`
9
- `)[0],o=null;try{o=JSON.parse(n)}catch{try{o=JSON.parse(t)}catch{}}if(o){if(o.type==="user"||o.type==="assistant")return"claude_code";if(o.type==="session"&&typeof o.id=="string"&&typeof o.cwd=="string"&&typeof o.version=="number")return"pi";if(Array.isArray(o.events)&&!o.requests&&!o.allComposers)return"rulemetric_mcp";if(Array.isArray(o.requests))return o.requests.some(r=>Array.isArray(r.toolCalls))||o.agentMode?"copilot_agent":"vscode_copilot";if(o.allComposers)return"cursor"}if(!o)try{let s=t.split(`
10
- `).filter(r=>r.trim());if(s.length>1){let r=JSON.parse(s[0]);if(r.type==="user"||r.type==="assistant")return"claude_code"}}catch{}}return null}l(zt,"detectTool");import{readdir as F,stat as W}from"fs/promises";import{basename as Vt,join as I}from"path";import{homedir as $}from"os";var Kt={"claude-opus-4-7":"Opus 4.7","claude-opus-4-6":"Opus 4.6","claude-opus-4-5":"Opus 4.5","claude-opus-4-1":"Opus 4.1","claude-opus-4":"Opus 4","claude-sonnet-4-6":"Sonnet 4.6","claude-sonnet-4-5":"Sonnet 4.5","claude-sonnet-4":"Sonnet 4","claude-3-7-sonnet":"Sonnet 3.7","claude-3-5-sonnet":"Sonnet 3.5","claude-haiku-4-5":"Haiku 4.5","claude-3-5-haiku":"Haiku 3.5"};function Xt(){return process.env.CLAUDE_CONFIG_DIR||I($(),".claude")}l(Xt,"getClaudeDir");function Yt(){return I(Xt(),"projects")}l(Yt,"getProjectsDir");function Zt(){return process.platform==="darwin"?I($(),"Library","Application Support","Claude","local-agent-mode-sessions"):process.platform==="win32"?I($(),"AppData","Roaming","Claude","local-agent-mode-sessions"):I($(),".config","Claude","local-agent-mode-sessions")}l(Zt,"getDesktopSessionsDir");async function Qt(e){let t=[];async function n(o,s){if(s>8)return;let r=await F(o).catch(()=>[]);for(let i of r){if(i==="node_modules"||i===".git")continue;let c=I(o,i);if((await W(c).catch(()=>null))?.isDirectory())if(i==="projects"){let u=await F(c).catch(()=>[]);for(let d of u){let f=I(c,d);(await W(f).catch(()=>null))?.isDirectory()&&t.push(f)}}else await n(c,s+1)}}return l(n,"walk"),await n(e,0),t}l(Qt,"findDesktopProjectDirs");var st={name:"claude",displayName:"Claude Code",modelDisplayName(e){let t=e.replace(/@.*$/,"").replace(/-\d{8}$/,"");for(let[n,o]of Object.entries(Kt))if(t.startsWith(n))return o;return t},toolDisplayName(e){return e},async discoverSessions(){let e=[],t=Yt();try{let o=await F(t);for(let s of o){let r=I(t,s);(await W(r).catch(()=>null))?.isDirectory()&&e.push({path:r,project:s,provider:"claude"})}}catch{}let n=await Qt(Zt());for(let o of n)e.push({path:o,project:Vt(o),provider:"claude"});return e},createSessionParser(){return{async*parse(){}}}};import{readdir as U,readFile as rt,stat as te}from"fs/promises";import{basename as ee,join as O}from"path";import{homedir as ne}from"os";var oe={"gpt-5.3-codex":"GPT-5.3 Codex","gpt-5.4-mini":"GPT-5.4 Mini","gpt-5.4":"GPT-5.4","gpt-5":"GPT-5","gpt-4o-mini":"GPT-4o Mini","gpt-4o":"GPT-4o"},at={exec_command:"Bash",read_file:"Read",write_file:"Edit",apply_diff:"Edit",apply_patch:"Edit",spawn_agent:"Agent",close_agent:"Agent",wait_agent:"Agent",read_dir:"Glob"};function se(){return process.env.CODEX_HOME??O(ne(),".codex")}l(se,"getCodexDir");function re(e){return e.replace(/^\//,"").replace(/\//g,"-")}l(re,"sanitizeProject");async function ae(e){try{let n=(await rt(e,"utf-8")).split(`
11
- `)[0];return n?.trim()?JSON.parse(n):null}catch{return null}}l(ae,"readFirstLine");async function ie(e){let t=await ae(e);if(!t)return{valid:!1};let n=t.type==="session_meta"&&typeof t.payload?.originator=="string"&&t.payload.originator.toLowerCase().startsWith("codex");return{valid:n,meta:n?t:void 0}}l(ie,"isValidCodexSession");async function le(e){let t=O(e,"sessions"),n=[],o;try{o=await U(t)}catch{return n}for(let s of o){if(!/^\d{4}$/.test(s))continue;let r=O(t,s),i=await U(r).catch(()=>[]);for(let c of i){if(!/^\d{2}$/.test(c))continue;let a=O(r,c),u=await U(a).catch(()=>[]);for(let d of u){if(!/^\d{2}$/.test(d))continue;let f=O(a,d),m=await U(f).catch(()=>[]);for(let h of m){if(!h.startsWith("rollout-")||!h.endsWith(".jsonl"))continue;let p=O(f,h);if(!(await te(p).catch(()=>null))?.isFile())continue;let{valid:g,meta:_}=await ie(p);if(!g||!_)continue;let x=_.payload?.cwd??"unknown";n.push({path:p,project:re(x),provider:"codex"})}}}}return n}l(le,"discoverSessionsInDir");function ce(e,t){return e?.info?.model??e?.info?.model_name??t??"gpt-5"}l(ce,"resolveModel");function ue(e,t){return{async*parse(){let n;try{n=await rt(e.path,"utf-8")}catch{return}let o=n.split(`
12
- `).filter(h=>h.trim()),s,r="",i=0,c=0,a=0,u=0,d=0,f=[],m="";for(let h of o){let p;try{p=JSON.parse(h)}catch{continue}if(p.type==="session_meta"){r=p.payload?.session_id??ee(e.path,".jsonl"),s=p.payload?.model;continue}if(p.type==="response_item"&&p.payload?.type==="function_call"){let y=p.payload.name??"";f.push(at[y]??y);continue}if(p.type==="response_item"&&p.payload?.type==="message"&&p.payload?.role==="user"){let y=(p.payload.content??[]).filter(g=>g.type==="input_text").map(g=>g.text??"").filter(Boolean);y.length>0&&(m=y.join(" "));continue}if(p.type==="event_msg"&&p.payload?.type==="token_count"){let y=p.payload.info;if(!y)continue;let g=y.total_token_usage?.total_tokens??0;if(g>0&&g===i)continue;i=g;let _=y.last_token_usage,x=0,v=0,w=0,S=0;if(_)x=_.input_tokens??0,v=_.cached_input_tokens??0,w=_.output_tokens??0,S=_.reasoning_output_tokens??0;else if(g>0){let T=y.total_token_usage;if(!T)continue;x=(T.input_tokens??0)-c,v=(T.cached_input_tokens??0)-a,w=(T.output_tokens??0)-u,S=(T.reasoning_output_tokens??0)-d}if(!_){let T=y.total_token_usage;T&&(c=T.input_tokens??0,a=T.cached_input_tokens??0,u=T.output_tokens??0,d=T.reasoning_output_tokens??0)}if(x+v+w+S===0)continue;let Rt=Math.max(0,x-v),Et=ce(p.payload,s),Z=p.timestamp??"",L=`codex:${e.path}:${Z}:${g}`;if(t.has(L))continue;t.add(L),yield{provider:"codex",model:Et,inputTokens:Rt,outputTokens:w,cacheCreationInputTokens:0,cacheReadInputTokens:v,cachedInputTokens:v,reasoningTokens:S,costUSD:0,tools:f,bashCommands:[],timestamp:Z,speed:"standard",deduplicationKey:L,userMessage:m,sessionId:r},f=[],m=""}}}}}l(ue,"createParser");var it={name:"codex",displayName:"Codex",modelDisplayName(e){for(let[t,n]of Object.entries(oe))if(e.startsWith(t))return n;return e},toolDisplayName(e){return at[e]??e},async discoverSessions(){return le(se())},createSessionParser(e,t){return ue(e,t)}};import{readdir as pe,readFile as lt,stat as me}from"fs/promises";import{basename as ct,dirname as de,join as H}from"path";import{homedir as fe}from"os";var he={"gpt-4.1-nano":"GPT-4.1 Nano","gpt-4.1-mini":"GPT-4.1 Mini","gpt-4.1":"GPT-4.1","gpt-4o-mini":"GPT-4o Mini","gpt-4o":"GPT-4o","gpt-5-mini":"GPT-5 Mini","gpt-5":"GPT-5","claude-sonnet-4-5":"Sonnet 4.5","claude-sonnet-4":"Sonnet 4","claude-3-7-sonnet":"Sonnet 3.7","claude-3-5-sonnet":"Sonnet 3.5","o4-mini":"o4-mini",o3:"o3"},ut={bash:"Bash",read_file:"Read",write_file:"Edit",edit_file:"Edit",create_file:"Write",delete_file:"Delete",search_files:"Grep",find_files:"Glob",list_directory:"LS",web_search:"WebSearch",fetch_webpage:"WebFetch",github_repo:"GitHub"},ge=Object.entries(he).sort((e,t)=>t[0].length-e[0].length);function ye(){return H(fe(),".copilot","session-state")}l(ye,"getCopilotSessionStateDir");function _e(e){let t=e.match(/^cwd:\s*(.+)$/m);return t?.[1]&&t[1].replace(/\s*#.*$/,"").replace(/^['"]|['"]$/g,"").trim()||null}l(_e,"parseCwd");function Se(e,t){return{async*parse(){let n;try{n=await lt(e.path,"utf-8")}catch{return}let o=ct(de(e.path)),s=n.split(`
13
- `).filter(c=>c.trim()),r="",i="";for(let c of s){let a;try{a=JSON.parse(c)}catch{continue}if(a.type==="session.model_change"){r=a.data.newModel??r;continue}if(a.type==="user.message"){i=a.data.content??"";continue}if(a.type==="assistant.message"){let{messageId:u,outputTokens:d,toolRequests:f=[]}=a.data;if(d===0||!r)continue;let m=`copilot:${o}:${u}`;if(t.has(m))continue;t.add(m);let h=f.map(p=>p.name??"").filter(Boolean).map(p=>ut[p]??p);yield{provider:"copilot",model:r,inputTokens:0,outputTokens:d,cacheCreationInputTokens:0,cacheReadInputTokens:0,cachedInputTokens:0,reasoningTokens:0,costUSD:0,tools:h,bashCommands:[],timestamp:a.timestamp??"",speed:"standard",deduplicationKey:m,userMessage:i,sessionId:o},i=""}}}}}l(Se,"createParser");async function ve(e){let t=[],n;try{n=await pe(e)}catch{return t}for(let o of n){let s=H(e,o,"events.jsonl");if(!(await me(s).catch(()=>null))?.isFile())continue;let i=o;try{let c=await lt(H(e,o,"workspace.yaml"),"utf-8"),a=_e(c);a&&(i=ct(a))}catch{}t.push({path:s,project:i,provider:"copilot"})}return t}l(ve,"discoverSessionsInDir");var pt={name:"copilot",displayName:"GitHub Copilot",modelDisplayName(e){for(let[t,n]of ge)if(e===t||e.startsWith(t+"-"))return n;return e},toolDisplayName(e){return ut[e]??e},async discoverSessions(){return ve(ye())},createSessionParser(e,t){return Se(e,t)}};import{readdir as mt,readFile as ft,stat as dt}from"fs/promises";import{basename as ht,join as z}from"path";import{homedir as xe}from"os";var Te={"gpt-5.4":"GPT-5.4","gpt-5.4-mini":"GPT-5.4 Mini","gpt-5":"GPT-5","gpt-4o":"GPT-4o","gpt-4o-mini":"GPT-4o Mini"},gt={bash:"Bash",read:"Read",edit:"Edit",write:"Write",glob:"Glob",grep:"Grep",task:"Agent",dispatch_agent:"Agent",fetch:"WebFetch",search:"WebSearch",todo:"TodoWrite",patch:"Patch"},we=Object.entries(Te).sort((e,t)=>t[0].length-e[0].length);function Ie(){return z(xe(),".pi","agent","sessions")}l(Ie,"getPiSessionsDir");async function ke(e){try{let n=(await ft(e,"utf-8")).split(`
14
- `)[0];return n?.trim()?JSON.parse(n):null}catch{return null}}l(ke,"readFirstEntry");function Oe(e){return e.split(/[;&|]+/).map(t=>t.trim().split(/\s+/)[0]).filter(Boolean)}l(Oe,"extractBashCommands");async function Ae(e){let t=[],n;try{n=await mt(e)}catch{return t}for(let o of n){let s=z(e,o);if(!(await dt(s).catch(()=>null))?.isDirectory())continue;let i;try{i=await mt(s)}catch{continue}for(let c of i){if(!c.endsWith(".jsonl"))continue;let a=z(s,c);if(!(await dt(a).catch(()=>null))?.isFile())continue;let d=await ke(a);if(!d||d.type!=="session")continue;let f=d.cwd??o;t.push({path:a,project:ht(f),provider:"pi"})}}return t}l(Ae,"discoverSessionsInDir");function Ne(e,t){return{async*parse(){let n;try{n=await ft(e.path,"utf-8")}catch{return}let o=n.split(`
15
- `).filter(i=>i.trim()),s=ht(e.path,".jsonl"),r="";for(let[i,c]of o.entries()){let a;try{a=JSON.parse(c)}catch{continue}if(a.type==="session"){s=a.id??s;continue}if(a.type!=="message")continue;let u=a.message;if(!u)continue;if(u.role==="user"){let S=(u.content??[]).filter(k=>k.type==="text").map(k=>k.text??"").filter(Boolean);S.length>0&&(r=S.join(" "));continue}if(u.role!=="assistant"||!u.usage)continue;let{input:d,output:f,cacheRead:m,cacheWrite:h}=u.usage;if(d===0&&f===0)continue;let p=u.model??"gpt-5",y=u.responseId??"",g=`pi:${e.path}:${y||a.id||a.timestamp||String(i)}`;if(t.has(g))continue;t.add(g);let _=(u.content??[]).filter(S=>S.type==="toolCall"&&S.name),x=_.map(S=>gt[S.name]??S.name),v=_.filter(S=>S.name==="bash").flatMap(S=>{let k=S.arguments?.command;return typeof k=="string"?Oe(k):[]}),w=a.timestamp??"";yield{provider:"pi",model:p,inputTokens:d,outputTokens:f,cacheCreationInputTokens:h,cacheReadInputTokens:m,cachedInputTokens:m,reasoningTokens:0,costUSD:0,tools:x,bashCommands:v,timestamp:w,speed:"standard",deduplicationKey:g,userMessage:r,sessionId:s},r=""}}}}l(Ne,"createParser");var yt={name:"pi",displayName:"Pi",modelDisplayName(e){for(let[t,n]of we)if(e.startsWith(t))return n;return e},toolDisplayName(e){return gt[e]??e},async discoverSessions(){return Ae(Ie())},createSessionParser(e,t){return Ne(e,t)}};var Tt=[st,it,pt,yt],_t=null,St=!1;async function wt(){if(St)return _t;St=!0;try{let{cursor:e}=await import("./cursor-T7AMCMKS.js");return _t=e,e}catch{return null}}l(wt,"loadCursor");var vt=null,xt=!1;async function It(){if(xt)return vt;xt=!0;try{let{opencode:e}=await import("./opencode-QRJ3BH23.js");return vt=e,e}catch{return null}}l(It,"loadOpenCode");async function kt(){let[e,t]=await Promise.all([wt(),It()]),n=[...Tt];return e&&n.push(e),t&&n.push(t),n}l(kt,"getAllProviders");async function Pe(e){let t=await kt(),n=e&&e!=="all"?t.filter(s=>s.name===e):t,o=[];for(let s of n){let r=await s.discoverSessions();o.push(...r)}return o}l(Pe,"discoverAllSessions");async function be(e){return e==="cursor"?await wt()??void 0:e==="opencode"?await It()??void 0:Tt.find(t=>t.name===e)}l(be,"getProvider");import{spawn as Y}from"node:child_process";import{randomUUID as $e}from"node:crypto";import{writeFile as At}from"node:fs/promises";import{tmpdir as Nt}from"node:os";import{join as Pt}from"node:path";import{spawn as De}from"node:child_process";function V(e){return`rm-${e.trim().replace(/[^A-Za-z0-9_.-]+/g,"-").replace(/^-+|-+$/g,"").slice(0,80)||"session"}`}l(V,"sanitizeTmuxName");function K(e){let t=e.runId?["env",`RULEMETRIC_RUN_ID=${e.runId}`,"claude"]:["claude"];return e.resumeSessionId&&t.push("--resume",e.resumeSessionId),e.model&&t.push("--model",e.model),["new-session","-d","-s",e.sessionName,"-c",e.projectPath,"--",...t]}l(K,"buildTmuxLaunchArgs");function R(e,t,n={}){return n.literal===!1?["send-keys","-t",e,t]:["send-keys","-t",e,"-l","--",t]}l(R,"buildTmuxSendKeysArgs");function Ce(e){return["has-session","-t",e]}l(Ce,"buildTmuxHasSessionArgs");function E(e){return`tmux attach -t ${e}`}l(E,"buildTmuxAttachCommand");function je(){let e=["/opt/homebrew/bin","/usr/local/bin"],t=(process.env.PATH??"").split(":").filter(Boolean),n=e.filter(o=>!t.includes(o));return n.length===0?process.env:{...process.env,PATH:[...t,...n].join(":")}}l(je,"tmuxSpawnEnv");function X(e){return new Promise(t=>{let n=De("tmux",e,{stdio:["ignore","ignore","pipe"],env:je()}),o="";n.stderr.on("data",s=>{o+=s.toString()}),n.on("close",s=>t({code:s,stderr:o})),n.on("error",s=>t({code:null,stderr:s.message}))})}l(X,"runTmux");async function Ot(){return(await X(["-V"])).code===0}l(Ot,"isTmuxAvailable");var Ue=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function Re(e){if(e!==void 0){if(Ue.test(e))return e;console.warn(`[claude-code-launcher] dropping non-uuid runId (RULEMETRIC_RUN_ID not injected): ${JSON.stringify(e)}`)}}l(Re,"validateRunId");function Ee(e){return`'${e.replace(/'/g,"'\\''")}'`}l(Ee,"shellSingleQuote");var M=class{static{l(this,"ClaudeCodeLauncher")}options;tool="claude_code";constructor(t={}){this.options=t}capabilities={headless:!0,interactive:!0,remoteSpawn:!0};async launch(t){let n=$e(),o={...t,runId:Re(t.runId)};return o.mode==="headless"?this.launchHeadless(o,n):this.launchInteractive(o,n)}async launchHeadless(t,n){let o=["-p",t.prompt??"","--output-format","json"];t.systemPrompt&&o.push("--system-prompt",t.systemPrompt),t.model&&o.push("--model",t.model);let s={...process.env};return delete s.CLAUDECODE,delete s.HTTPS_PROXY,t.runId&&(s.RULEMETRIC_RUN_ID=t.runId),new Promise(r=>{let i=Y("claude",o,{cwd:t.projectPath,env:s,stdio:["ignore","pipe","pipe"]}),c="",a="";i.stdout.on("data",d=>{c+=d.toString()}),i.stderr.on("data",d=>{a+=d.toString()});let u=t.timeout?setTimeout(()=>{i.kill("SIGTERM")},t.timeout):null;i.on("close",d=>{u&&clearTimeout(u);let f=c;try{let m=JSON.parse(c);f=m.result??m.content??c}catch{}r({sessionId:n,pid:i.pid,exitCode:d,output:f,error:d!==0?a:void 0})}),i.on("error",d=>{u&&clearTimeout(u),r({sessionId:n,error:`Failed to spawn claude: ${d.message}`})})})}async launchInteractive(t,n){return await(this.options.tmuxAvailable??Ot)().catch(()=>!1)?this.launchInteractiveTmux(t,n):this.launchInteractiveTerminal(t,n,"tmux_not_found")}async launchInteractiveTmux(t,n){let o=this.options.runTmux??X,s=V(`claude-${t.resumeSessionId??n}`),r=await o(K({sessionName:s,projectPath:t.projectPath,resumeSessionId:t.resumeSessionId,model:t.model,runId:t.runId}));if(r.code!==0)return this.launchInteractiveTerminal(t,n,"tmux_launch_failed",`tmux new-session exited ${r.code}: ${r.stderr.trim()||"no stderr"}`);let i=await this.openTerminalAttach(s,n);if(t.prompt){let c=await o(R(s,t.prompt));if(c.code!==0)return{sessionId:n,liveSendAvailable:!1,fallbackReason:"tmux_launch_failed",error:`tmux send-keys exited ${c.code}: ${c.stderr.trim()||"no stderr"}`};let a=await o(R(s,"Enter",{literal:!1}));if(a.code!==0)return{sessionId:n,liveSendAvailable:!1,fallbackReason:"tmux_launch_failed",error:`tmux send Enter exited ${a.code}: ${a.stderr.trim()||"no stderr"}`}}return{sessionId:n,pid:i.pid,liveSendAvailable:!0,...i.error?{error:i.error}:{},terminalTarget:{kind:"tmux",target:s,attachCommand:E(s),live:!0}}}async openTerminalAttach(t,n){let o=Pt(Nt(),`rulemetric-attach-${n}.command`),s=`#!/bin/zsh
16
- rm -- "$0"
17
- ${E(t)}
18
- `;return await At(o,s,{mode:493}),new Promise(r=>{let i=Y("open",["-a","Terminal",o],{stdio:["ignore","pipe","pipe"]}),c="";i.stderr.on("data",a=>{c+=a.toString()}),i.on("close",a=>{r(a===0?{pid:i.pid}:{pid:i.pid,error:`open attach exited ${a}: ${c.trim()||"no stderr"}`})}),i.on("error",a=>{r({error:`Failed to spawn open attach: ${a.message}`})})})}async launchInteractiveTerminal(t,n,o,s){let r=["claude"];t.resumeSessionId?r.push("--resume",t.resumeSessionId):t.prompt&&r.push("-p",JSON.stringify(t.prompt)),t.model&&r.push("--model",t.model);let i=r.join(" "),c=Pt(Nt(),`rulemetric-launch-${n}.command`),a=t.runId?`export RULEMETRIC_RUN_ID=${Ee(t.runId)}
19
- `:"",u=`#!/bin/zsh
20
- rm -- "$0"
21
- cd ${JSON.stringify(t.projectPath)} || exit
22
- `+a+`${i}
23
- `;return await At(c,u,{mode:493}),new Promise(d=>{let f=Y("open",["-a","Terminal",c],{stdio:["ignore","pipe","pipe"]}),m="";f.stderr.on("data",h=>{m+=h.toString()}),f.on("close",h=>{if(h===0)d({sessionId:n,pid:f.pid,liveSendAvailable:!1,fallbackReason:o,...s?{error:s}:{}});else{let p=m.trim()||"no stderr";d({sessionId:n,pid:f.pid,liveSendAvailable:!1,fallbackReason:o,error:s?`${s}; open exited ${h}: ${p}`:`open exited ${h}: ${p}`})}}),f.on("error",h=>{d({sessionId:n,liveSendAvailable:!1,fallbackReason:o,error:`Failed to spawn open: ${h.message}`})})})}};import{spawn as bt}from"node:child_process";import{randomUUID as Me}from"node:crypto";var q=class{static{l(this,"CodexLauncher")}tool="codex";capabilities={headless:!0,interactive:!0,remoteSpawn:!0};async launch(t){let n=Me();return t.mode==="headless"?this.launchHeadless(t,n):this.launchInteractive(t,n)}launchHeadless(t,n){let o=["-q",t.prompt??""];return t.model&&o.push("--model",t.model),new Promise(s=>{let r=bt("codex",o,{cwd:t.projectPath,stdio:["ignore","pipe","pipe"]}),i="",c="";r.stdout.on("data",u=>{i+=u.toString()}),r.stderr.on("data",u=>{c+=u.toString()});let a=t.timeout?setTimeout(()=>{r.kill("SIGTERM")},t.timeout):null;r.on("close",u=>{a&&clearTimeout(a),s({sessionId:n,pid:r.pid,exitCode:u,output:i,error:u!==0?c:void 0})}),r.on("error",u=>{a&&clearTimeout(a),s({sessionId:n,error:`Failed to spawn codex: ${u.message}`})})})}launchInteractive(t,n){let o=["codex"];t.prompt&&o.push(JSON.stringify(t.prompt));let s=`cd ${JSON.stringify(t.projectPath)} && ${o.join(" ")}`,r=bt("osascript",["-e",`tell application "Terminal" to do script ${JSON.stringify(s)}`],{stdio:"ignore",detached:!0});return r.unref(),Promise.resolve({sessionId:n,pid:r.pid})}};import{spawn as Dt}from"node:child_process";import{randomUUID as qe}from"node:crypto";function Je(e){let t=e.mode==="headless"?["--print","--mode","json","--no-session"]:[];return e.systemPrompt&&t.push("--system-prompt",e.systemPrompt),e.model&&t.push("--model",e.model),e.prompt&&t.push(e.prompt),t}l(Je,"buildPiLaunchArgs");function Be(e){let t;for(let o of e.split(`
24
- `))if(o.trim())try{let s=JSON.parse(o);if(s.type!=="agent_end"||!Array.isArray(s.messages))continue;t=s.messages.filter(r=>r.role==="assistant").at(-1)}catch{}if(!t)return{output:e};if(t.stopReason==="error"||t.stopReason==="aborted")return{output:"",error:`Pi provider error: ${t.errorMessage??t.stopReason}`};let n=t.content?.filter(o=>o.type==="text"&&typeof o.text=="string").map(o=>o.text).join(`
25
- `)??"";return n?{output:n}:{output:e}}l(Be,"parsePiLaunchOutput");var J=class{static{l(this,"PiLauncher")}tool="pi";capabilities={headless:!0,interactive:!0,remoteSpawn:!0};async launch(t){let n=qe(),o=Je(t);if(t.mode==="interactive"){let s=["pi",...o].map(c=>JSON.stringify(c)).join(" "),r=`cd ${JSON.stringify(t.projectPath)} && ${s}`,i=Dt("osascript",["-e",`tell application "Terminal" to do script ${JSON.stringify(r)}`],{stdio:"ignore",detached:!0});return i.unref(),{sessionId:n,pid:i.pid}}return new Promise(s=>{let r=Dt("pi",o,{cwd:t.projectPath,stdio:["ignore","pipe","pipe"]}),i="",c="";r.stdout.on("data",u=>{i+=u.toString()}),r.stderr.on("data",u=>{c+=u.toString()});let a=t.timeout?setTimeout(()=>r.kill("SIGTERM"),t.timeout):null;r.on("close",u=>{a&&clearTimeout(a);let d=Be(i);s({sessionId:n,pid:r.pid,exitCode:u,output:d.output,error:d.error??(u!==0?c.trim()||i.trim()||`pi exited ${u}`:void 0)})}),r.on("error",u=>{a&&clearTimeout(a),s({sessionId:n,error:`Failed to spawn pi: ${u.message}`})})})}};import{spawn as Ct}from"node:child_process";import{randomUUID as Ge}from"node:crypto";var B=class{static{l(this,"AiderLauncher")}tool="aider";capabilities={headless:!0,interactive:!0,remoteSpawn:!0};async launch(t){let n=Ge();return t.mode==="headless"?this.launchHeadless(t,n):this.launchInteractive(t,n)}launchHeadless(t,n){let o=["--message",t.prompt??"","--yes"];return t.model&&o.push("--model",t.model),new Promise(s=>{let r=Ct("aider",o,{cwd:t.projectPath,stdio:["ignore","pipe","pipe"]}),i="",c="";r.stdout.on("data",u=>{i+=u.toString()}),r.stderr.on("data",u=>{c+=u.toString()});let a=t.timeout?setTimeout(()=>{r.kill("SIGTERM")},t.timeout):null;r.on("close",u=>{a&&clearTimeout(a),s({sessionId:n,pid:r.pid,exitCode:u,output:i,error:u!==0?c:void 0})}),r.on("error",u=>{a&&clearTimeout(a),s({sessionId:n,error:`Failed to spawn aider: ${u.message}`})})})}launchInteractive(t,n){let o=["aider"];t.model&&o.push("--model",t.model);let s=`cd ${JSON.stringify(t.projectPath)} && ${o.join(" ")}`,r=Ct("osascript",["-e",`tell application "Terminal" to do script ${JSON.stringify(s)}`],{stdio:"ignore",detached:!0});return r.unref(),Promise.resolve({sessionId:n,pid:r.pid})}};import{spawn as Le}from"node:child_process";import{randomUUID as Fe}from"node:crypto";var G=class{static{l(this,"GenericLauncher")}tool;constructor(t){this.tool=t}capabilities={headless:!1,interactive:!0,remoteSpawn:!1};async launch(t){let n=Fe();if(t.mode==="headless")return{sessionId:n,error:`${this.tool} does not support headless mode`};let o=`cd ${JSON.stringify(t.projectPath)} && echo "Session ${n} \u2014 tool: ${this.tool}" && exec $SHELL`,s=Le("osascript",["-e",`tell application "Terminal" to do script ${JSON.stringify(o)}`],{stdio:"ignore",detached:!0});return s.unref(),{sessionId:n,pid:s.pid}}};var jt={claude_code:l(()=>new M,"claude_code"),codex:l(()=>new q,"codex"),pi:l(()=>new J,"pi"),aider:l(()=>new B,"aider")};function We(e){let t=jt[e];return t?t():new G(e)}l(We,"getLauncher");function He(){return Object.entries(jt).map(([e,t])=>({tool:e,capabilities:t().capabilities}))}l(He,"getAvailableLaunchers");import $t from"node:path";function Ut(e){return e.replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^[-.]+|[-.]+$/g,"")||"worktree"}l(Ut,"sanitizeBranch");function ze(e){return $t.resolve(e.basePath??$t.join(e.repoRoot,"..",".rulemetric-worktrees",Ut(e.branch)))}l(ze,"worktreePathFor");export{Ve as a,Ke as b,A as c,N as d,P as e,b as f,D as g,tt as h,C as i,j,Ht as k,zt as l,kt as m,Pe as n,be as o,V as p,K as q,R as r,Ce as s,E as t,We as u,He as v,Ut as w,ze as x};
@@ -1 +0,0 @@
1
- import{a as m,c as Ds}from"./chunk-ZLLER3HP.js";import{boolean as sn,date as js,index as Qt,integer as zs,jsonb as Rs,pgTable as Yt,text as D,timestamp as G,uniqueIndex as ks,uuid as me}from"drizzle-orm/pg-core";var an=Yt("announcements",{id:me("id").primaryKey().defaultRandom(),version:D("version").notNull().unique(),releaseDate:js("release_date").notNull(),subject:D("subject").notNull(),htmlBody:D("html_body").notNull(),textBody:D("text_body").notNull(),sections:Rs("sections").notNull().default({}),status:D("status").notNull().default("draft"),recipientCount:zs("recipient_count"),sentAt:G("sent_at",{withTimezone:!0}),sentBy:me("sent_by"),error:D("error"),createdAt:G("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:G("updated_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Qt("idx_announcements_status").on(e.status),Qt("idx_announcements_created").on(e.createdAt)]),dn=Yt("announcement_deliveries",{id:me("id").primaryKey().defaultRandom(),announcementId:me("announcement_id").notNull(),userId:me("user_id").notNull(),email:D("email").notNull(),status:D("status").notNull().default("pending"),providerId:D("provider_id"),error:D("error"),sentAt:G("sent_at",{withTimezone:!0}),createdAt:G("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[ks("uniq_announcement_deliveries_announcement_user").on(e.announcementId,e.userId),Qt("idx_announcement_deliveries_user").on(e.userId,e.createdAt)]),un=Yt("notification_preferences",{userId:me("user_id").primaryKey(),productAnnouncements:sn("product_announcements").notNull().default(!0),weeklyDigest:sn("weekly_digest").notNull().default(!0),unsubscribeToken:D("unsubscribe_token").notNull().unique(),unsubscribedAt:G("unsubscribed_at",{withTimezone:!0}),createdAt:G("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:G("updated_at",{withTimezone:!0}).notNull().defaultNow()});import{boolean as lt,integer as qe,jsonb as Es,pgTable as Ss,real as pn,text as Oe,timestamp as Wt,uuid as _n}from"drizzle-orm/pg-core";import{pgTable as ut,text as fe,timestamp as Ce,jsonb as ln,uuid as ne,primaryKey as cn}from"drizzle-orm/pg-core";var l=ut("organizations",{id:ne("id").primaryKey().defaultRandom(),name:fe("name").unique().notNull(),slug:fe("slug").unique().notNull(),metadata:ln("metadata"),createdAt:Ce("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Ce("updated_at",{withTimezone:!0}).defaultNow()}),v=ut("teams",{id:ne("id").primaryKey().defaultRandom(),orgId:ne("org_id").references(()=>l.id,{onDelete:"cascade"}),name:fe("name").notNull(),slug:fe("slug").notNull(),metadata:ln("metadata"),createdAt:Ce("created_at",{withTimezone:!0}).defaultNow()}),Ne=ut("user_organizations",{userId:ne("user_id").notNull(),orgId:ne("org_id").references(()=>l.id,{onDelete:"cascade"}).notNull(),role:fe("role").notNull().default("member"),createdAt:Ce("created_at",{withTimezone:!0}).defaultNow()},e=>[cn({columns:[e.userId,e.orgId]})]),xe=ut("user_teams",{userId:ne("user_id").notNull(),teamId:ne("team_id").references(()=>v.id,{onDelete:"cascade"}).notNull(),role:fe("role").notNull().default("member"),createdAt:Ce("created_at",{withTimezone:!0}).defaultNow()},e=>[cn({columns:[e.userId,e.teamId]})]);var o=Ss("profiles",{id:_n("id").primaryKey(),email:Oe("email"),measurementPreferences:Es("measurement_preferences"),displayName:Oe("display_name"),activeOrgId:_n("active_org_id").references(()=>l.id,{onDelete:"set null"}),isSuperadmin:lt("is_superadmin").notNull().default(!1),claudeCodePlan:Oe("claude_code_plan"),planSource:Oe("plan_source").notNull().default("detected"),setupCompletedAt:Wt("setup_completed_at",{withTimezone:!0}),liveSendSkipped:lt("live_send_skipped").notNull().default(!1),autoAcceptSuggestions:lt("auto_accept_suggestions").notNull().default(!0),evolutionPaused:lt("evolution_paused").notNull().default(!1),suggestionConfidenceThreshold:pn("suggestion_confidence_threshold").notNull().default(.7),autoAcceptMinScore:pn("auto_accept_min_score"),autoAcceptMaxPerRun:qe("auto_accept_max_per_run"),autoAcceptMaxPerWindow:qe("auto_accept_max_per_window"),autoAcceptWindowDays:qe("auto_accept_window_days"),trialMaxConcurrent:qe("trial_max_concurrent"),trialMaxPerRun:qe("trial_max_per_run"),harborAbCadence:Oe("harbor_ab_cadence").notNull().default("off"),createdAt:Wt("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Wt("updated_at",{withTimezone:!0}).defaultNow()});import{pgTable as bs,text as Xt,timestamp as ct,uuid as pt,index as mn}from"drizzle-orm/pg-core";var P=bs("org_invitations",{id:pt("id").primaryKey().defaultRandom(),orgId:pt("org_id").notNull().references(()=>l.id,{onDelete:"cascade"}),email:Xt("email").notNull(),role:Xt("role").notNull().default("member"),teamId:pt("team_id").references(()=>v.id,{onDelete:"set null"}),invitedBy:pt("invited_by").notNull().references(()=>o.id,{onDelete:"cascade"}),token:Xt("token").notNull().unique(),expiresAt:ct("expires_at",{withTimezone:!0}).notNull(),acceptedAt:ct("accepted_at",{withTimezone:!0}),revokedAt:ct("revoked_at",{withTimezone:!0}),createdAt:ct("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[mn("idx_org_invitations_token").on(e.token),mn("idx_org_invitations_org").on(e.orgId)]);import{pgTable as Zt,text as N,timestamp as V,jsonb as _t,uuid as z,integer as mt,boolean as Ps,uniqueIndex as ft,index as Me}from"drizzle-orm/pg-core";var n=Zt("instructions",{id:z("id").primaryKey().defaultRandom(),name:N("name").notNull(),description:N("description").notNull(),type:N("type").notNull().default("instruction"),scope:N("scope").notNull(),scopeRef:z("scope_ref"),version:N("version").notNull(),content:N("content").notNull(),frontmatter:_t("frontmatter").notNull(),slots:_t("slots"),tags:N("tags").array(),compatibility:N("compatibility").array(),createdBy:z("created_by"),createdAt:V("created_at",{withTimezone:!0}).defaultNow(),updatedAt:V("updated_at",{withTimezone:!0}).defaultNow(),archived:Ps("archived").default(!1),archivedAt:V("archived_at",{withTimezone:!0}),archivedBy:z("archived_by"),forkedFromId:z("forked_from_id").references(()=>n.id,{onDelete:"set null"}),upstreamVersion:N("upstream_version"),badge:N("badge"),contentHash:N("content_hash"),contextIdentity:N("context_identity"),scanScore:mt("scan_score"),scanFindings:_t("scan_findings"),popularityScore:mt("popularity_score"),sourceUpdatedAt:V("source_updated_at",{withTimezone:!0})},e=>[ft("instructions_name_scope_ref_idx").on(e.name,e.scope,e.scopeRef),Me("idx_instructions_scope").on(e.scope,e.scopeRef),Me("idx_instructions_created_by").on(e.createdBy),Me("idx_instructions_context_identity").on(e.createdBy,e.contextIdentity),Me("idx_instructions_public_recency").on(e.scope,e.sourceUpdatedAt.desc())]),fn=Zt("instruction_version_identities",{id:z("id").primaryKey().defaultRandom(),instructionId:z("instruction_id").notNull().references(()=>n.id,{onDelete:"cascade"}),contentHash:N("content_hash").notNull(),versionOrdinal:mt("version_ordinal").notNull(),content:N("content"),firstSeenAt:V("first_seen_at",{withTimezone:!0}).notNull().defaultNow(),lastSeenAt:V("last_seen_at",{withTimezone:!0}).notNull().defaultNow(),createdAt:V("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[ft("instruction_version_identities_hash_unique").on(e.instructionId,e.contentHash),ft("instruction_version_identities_ordinal_unique").on(e.instructionId,e.versionOrdinal),Me("idx_ivi_instruction").on(e.instructionId)]),he=Zt("instruction_versions",{id:z("id").primaryKey().defaultRandom(),instructionId:z("instruction_id").references(()=>n.id,{onDelete:"cascade"}),versionNumber:mt("version_number").notNull(),content:N("content").notNull(),frontmatter:_t("frontmatter").notNull(),changeSummary:N("change_summary"),createdBy:z("created_by"),createdAt:V("created_at",{withTimezone:!0}).defaultNow()},e=>[ft("instruction_versions_instruction_version_idx").on(e.instructionId,e.versionNumber)]);import{pgTable as Ks,text as Cs,timestamp as qs,jsonb as Os,uuid as eo,index as Nn}from"drizzle-orm/pg-core";var ge=Ks("instruction_events",{id:eo("id").primaryKey().defaultRandom(),instructionId:eo("instruction_id").notNull().references(()=>n.id,{onDelete:"cascade"}),eventType:Cs("event_type").notNull(),actorId:eo("actor_id").notNull(),metadata:Os("metadata"),createdAt:qs("created_at",{withTimezone:!0}).defaultNow()},e=>[Nn("idx_instruction_events_instruction").on(e.instructionId),Nn("idx_instruction_events_type").on(e.eventType)]);import{boolean as Ms,jsonb as Hs,pgTable as oo,primaryKey as xn,text as re,timestamp as He,uniqueIndex as to,uuid as se}from"drizzle-orm/pg-core";import{sql as Ls}from"drizzle-orm";var s=oo("projects",{id:se("id").primaryKey().defaultRandom(),orgId:se("org_id").references(()=>l.id,{onDelete:"cascade"}),name:re("name").notNull(),description:re("description"),githubRepo:re("github_repo"),gitRemoteUrl:re("git_remote_url"),gitRootCommit:re("git_root_commit"),gitRemoteAliases:re("git_remote_aliases").array().notNull().default([]),metadata:Hs("metadata"),createdBy:se("created_by"),createdAt:He("created_at",{withTimezone:!0}).defaultNow(),updatedAt:He("updated_at",{withTimezone:!0}).defaultNow()},e=>[to("projects_org_name_idx").on(e.orgId,e.name),to("projects_git_remote_url_unique").on(e.gitRemoteUrl).where(Ls`${e.gitRemoteUrl} IS NOT NULL`)]),F=oo("project_instructions",{projectId:se("project_id").references(()=>s.id,{onDelete:"cascade"}).notNull(),instructionId:se("instruction_id").references(()=>n.id,{onDelete:"cascade"}).notNull(),addedAt:He("added_at",{withTimezone:!0}).defaultNow(),addedBy:se("added_by")},e=>[xn({columns:[e.projectId,e.instructionId]})]),hn=oo("project_checkouts",{projectId:se("project_id").references(()=>s.id,{onDelete:"cascade"}).notNull(),path:re("path").notNull(),isWorktree:Ms("is_worktree").notNull().default(!1),firstSeen:He("first_seen",{withTimezone:!0}).notNull().defaultNow(),lastSeen:He("last_seen",{withTimezone:!0}).notNull().defaultNow()},e=>[xn({columns:[e.projectId,e.path]}),to("project_checkouts_path_unique").on(e.path)]);import{pgTable as so,text as I,timestamp as Le,jsonb as ie,uuid as K,integer as xt,uniqueIndex as vn,index as R}from"drizzle-orm/pg-core";import{pgTable as Us,text as ve,timestamp as no,jsonb as gn,uuid as Nt,integer as Bs,boolean as Gs,index as ro}from"drizzle-orm/pg-core";var h=Us("agent_runs",{id:Nt("id").primaryKey().defaultRandom(),userId:Nt("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),orgId:Nt("org_id").references(()=>l.id,{onDelete:"set null"}),projectId:Nt("project_id").references(()=>s.id,{onDelete:"set null"}),projectPath:ve("project_path"),gitRemote:ve("git_remote"),baseBranch:ve("base_branch"),title:ve("title"),prompt:ve("prompt"),toolSpec:gn("tool_spec").notNull().default([]),autoWorktree:Gs("auto_worktree").notNull().default(!0),status:ve("status").notNull().default("pending"),sessionCount:Bs("session_count").notNull().default(0),metadata:gn("metadata").notNull().default({}),createdAt:no("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:no("updated_at",{withTimezone:!0}).notNull().defaultNow(),completedAt:no("completed_at",{withTimezone:!0})},e=>[ro("idx_agent_runs_user").on(e.userId),ro("idx_agent_runs_org_created").on(e.orgId,e.createdAt),ro("idx_agent_runs_project").on(e.projectId)]);var a=so("sessions",{id:K("id").primaryKey().defaultRandom(),userId:K("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),externalSessionId:I("external_session_id"),projectId:K("project_id").references(()=>s.id,{onDelete:"set null"}),orgId:K("org_id").references(()=>l.id,{onDelete:"set null"}),tool:I("tool").notNull(),projectPath:I("project_path"),gitBranch:I("git_branch"),startedAt:Le("started_at",{withTimezone:!0}).notNull(),endedAt:Le("ended_at",{withTimezone:!0}),eventCount:xt("event_count").default(0),tokenUsage:ie("token_usage"),analysis:ie("analysis"),analyzedAt:Le("analyzed_at",{withTimezone:!0}),analyzedEventCount:xt("analyzed_event_count"),analyzedTurnCount:xt("analyzed_turn_count"),metadata:ie("metadata").default({}),origin:I("origin").notNull().default("unknown"),runId:K("run_id").references(()=>h.id,{onDelete:"set null"}),model:I("model"),harnessVersion:I("harness_version"),createdAt:Le("created_at",{withTimezone:!0}).defaultNow()},e=>[R("idx_sessions_user").on(e.userId),R("idx_sessions_tool").on(e.tool),R("idx_sessions_started_at").on(e.startedAt),R("idx_sessions_project").on(e.projectId),R("idx_sessions_org_started_at").on(e.orgId,e.startedAt),R("idx_sessions_run").on(e.runId),vn("idx_sessions_user_external").on(e.userId,e.externalSessionId)]),Ie=so("session_events",{id:K("id").primaryKey().defaultRandom(),sessionId:K("session_id").notNull().references(()=>a.id,{onDelete:"cascade"}),sequence:xt("sequence").notNull(),eventType:I("event_type").notNull(),content:I("content"),toolName:I("tool_name"),toolInput:ie("tool_input"),toolOutput:ie("tool_output"),tokenUsage:ie("token_usage"),model:I("model"),timestamp:Le("timestamp",{withTimezone:!0}).notNull(),metadata:ie("metadata").default({})},e=>[vn("session_events_session_sequence_idx").on(e.sessionId,e.sequence),R("idx_session_events_session_id").on(e.sessionId),R("idx_session_events_event_type").on(e.eventType),R("idx_session_events_model").on(e.model)]),$=so("session_instructions",{sessionId:K("session_id").notNull().references(()=>a.id,{onDelete:"cascade"}),instructionId:K("instruction_id").notNull().references(()=>n.id,{onDelete:"cascade"}),linkMethod:I("link_method").notNull(),contentHash:I("content_hash")},e=>[R("idx_session_instructions_instruction_id").on(e.instructionId)]);import{pgTable as In,text as ht,timestamp as yn,uuid as k,integer as wn,index as ye,unique as Vs}from"drizzle-orm/pg-core";var C=In("treatment_assignments",{id:k("id").primaryKey().defaultRandom(),userId:k("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),treatmentType:ht("treatment_type").notNull(),treatmentId:k("treatment_id").notNull(),treatmentVersion:wn("treatment_version").notNull().default(1),projectId:k("project_id").references(()=>s.id,{onDelete:"set null"}),assignedBy:k("assigned_by").references(()=>o.id,{onDelete:"set null"}),method:ht("method").notNull(),assignedAt:yn("assigned_at",{withTimezone:!0}).notNull().defaultNow()},e=>[ye("idx_treatment_assignments_user").on(e.userId),ye("idx_treatment_assignments_treatment").on(e.treatmentType,e.treatmentId),ye("idx_treatment_assignments_project").on(e.projectId)]),q=In("treatment_exposures",{id:k("id").primaryKey().defaultRandom(),sessionId:k("session_id").notNull().references(()=>a.id,{onDelete:"cascade"}),userId:k("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),treatmentType:ht("treatment_type").notNull(),treatmentId:k("treatment_id").notNull(),treatmentVersion:wn("treatment_version").notNull().default(1),assignmentId:k("assignment_id").references(()=>C.id,{onDelete:"set null"}),method:ht("method").notNull(),exposedAt:yn("exposed_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Vs("treatment_exposures_unique").on(e.sessionId,e.treatmentType,e.treatmentId,e.treatmentVersion),ye("idx_treatment_exposures_treatment").on(e.treatmentType,e.treatmentId),ye("idx_treatment_exposures_user").on(e.userId),ye("idx_treatment_exposures_session").on(e.sessionId)]);import{pgTable as Fs,text as io,timestamp as $s,uuid as gt,integer as Js,index as Tn,uniqueIndex as Qs}from"drizzle-orm/pg-core";var An=Fs("pending_treatment_exposures",{id:gt("id").primaryKey().defaultRandom(),userId:gt("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),externalSessionId:io("external_session_id").notNull(),treatmentType:io("treatment_type").notNull(),treatmentId:gt("treatment_id").notNull(),treatmentVersion:Js("treatment_version").notNull().default(1),method:io("method").notNull().default("injected"),projectId:gt("project_id").references(()=>s.id,{onDelete:"set null"}),createdAt:$s("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Qs("pending_treatment_exposures_unique").on(e.externalSessionId,e.treatmentType,e.treatmentId,e.treatmentVersion),Tn("idx_pending_treatment_exposures_ext").on(e.externalSessionId),Tn("idx_pending_treatment_exposures_user").on(e.userId)]);import{pgTable as Dn,text as J,timestamp as jn,uuid as we,numeric as Ys,index as ao,unique as Ws}from"drizzle-orm/pg-core";var Ue=Dn("instruction_experiments",{id:we("id").primaryKey().defaultRandom(),userId:we("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),instructionId:we("instruction_id").notNull().references(()=>n.id,{onDelete:"cascade"}),projectPath:J("project_path").notNull(),status:J("status").notNull().default("running"),treatedShare:Ys("treated_share").notNull().default("0.5"),salt:J("salt").notNull(),contentHash:J("content_hash"),source:J("source").notNull().default("manual"),stoppedReason:J("stopped_reason"),createdAt:jn("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[ao("idx_instruction_experiments_lookup").on(e.userId,e.projectPath)]),zn=Dn("instruction_experiment_arms",{id:we("id").primaryKey().defaultRandom(),experimentId:we("experiment_id").notNull().references(()=>Ue.id,{onDelete:"cascade"}),userId:we("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),externalSessionId:J("external_session_id").notNull(),arm:J("arm").notNull(),assignedAt:jn("assigned_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Ws("instruction_experiment_arms_unique").on(e.experimentId,e.externalSessionId),ao("idx_instruction_experiment_arms_experiment").on(e.experimentId,e.arm),ao("idx_instruction_experiment_arms_session").on(e.externalSessionId)]);import{pgTable as Xs,text as uo,timestamp as Zs,uuid as vt,numeric as lo,integer as Rn,jsonb as ei,index as ti,unique as oi}from"drizzle-orm/pg-core";var kn=Xs("instruction_verdicts",{id:vt("id").primaryKey().defaultRandom(),userId:vt("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),instructionId:vt("instruction_id").notNull().references(()=>n.id,{onDelete:"cascade"}),contentHash:uo("content_hash").notNull(),projectPath:uo("project_path").notNull(),segment:ei("segment").notNull().default({}),decision:uo("decision").notNull(),delta:lo("delta").notNull(),ciLower:lo("ci_lower").notNull(),ciUpper:lo("ci_upper").notNull(),nTreated:Rn("n_treated").notNull(),nControl:Rn("n_control").notNull(),experimentId:vt("experiment_id").references(()=>Ue.id,{onDelete:"set null"}),decidedAt:Zs("decided_at",{withTimezone:!0}).notNull().defaultNow()},e=>[oi("instruction_verdicts_unique").on(e.instructionId,e.contentHash,e.projectPath),ti("idx_instruction_verdicts_render").on(e.userId,e.projectPath)]);import{pgTable as ni,text as It,timestamp as co,uuid as po,integer as ri,unique as si,index as ii}from"drizzle-orm/pg-core";var En=ni("insight_recommendation_log",{id:po("id").primaryKey().defaultRandom(),userId:po("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),projectPath:It("project_path").notNull().default(""),category:It("category").notNull(),contentHash:It("content_hash").notNull(),label:It("label").notNull().default(""),firstSeenAt:co("first_seen_at",{withTimezone:!0}).notNull().defaultNow(),lastSeenAt:co("last_seen_at",{withTimezone:!0}).notNull().defaultNow(),timesGenerated:ri("times_generated").notNull().default(1),lastJobId:po("last_job_id"),dismissedAt:co("dismissed_at",{withTimezone:!0})},e=>[si("insight_recommendation_log_unique").on(e.userId,e.projectPath,e.contentHash),ii("idx_insight_recommendation_log_read").on(e.userId,e.projectPath)]);import{pgTable as ai,text as Te,timestamp as _o,uuid as Be,integer as Sn,index as yt}from"drizzle-orm/pg-core";var w=ai("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(()=>s.id,{onDelete:"set null"}),version:Sn("version").notNull().default(1),parentId:Be("parent_id").references(()=>w.id,{onDelete:"set null"}),kind:Te("kind").notNull(),title:Te("title").notNull(),body:Te("body").notNull(),source:Te("source").notNull(),status:Te("status").notNull().default("active"),trustClass:Te("trust_class"),trustVersion:Sn("trust_version"),trustComputedAt:_o("trust_computed_at",{withTimezone:!0}),createdAt:_o("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:_o("updated_at",{withTimezone:!0}).notNull().defaultNow()},e=>[yt("idx_memories_user").on(e.userId),yt("idx_memories_project").on(e.projectId),yt("idx_memories_parent").on(e.parentId),yt("idx_memories_user_status").on(e.userId,e.status)]);import{pgTable as di,text as ae,timestamp as mo,uuid as fo,integer as bn,jsonb as ui,index as Pn}from"drizzle-orm/pg-core";var Kn=di("memory_experiments",{id:fo("id").primaryKey().defaultRandom(),memoryId:fo("memory_id").notNull().references(()=>w.id,{onDelete:"cascade"}),userId:fo("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),memoryVersion:bn("memory_version").notNull().default(1),memoryBody:ae("memory_body"),taskPrompt:ae("task_prompt").notNull(),expectations:ae("expectations").array().notNull().default([]),trials:bn("trials").notNull().default(10),model:ae("model"),engine:ae("engine").$type().notNull().default("claude"),status:ae("status").notNull().default("pending"),result:ui("result").$type(),error:ae("error"),createdAt:mo("created_at",{withTimezone:!0}).notNull().defaultNow(),startedAt:mo("started_at",{withTimezone:!0}),completedAt:mo("completed_at",{withTimezone:!0})},e=>[Pn("idx_memory_experiments_memory").on(e.memoryId),Pn("idx_memory_experiments_user").on(e.userId)]);import{pgTable as li,text as Ae,timestamp as No,uuid as xo,jsonb as ci,uniqueIndex as pi,index as Cn}from"drizzle-orm/pg-core";var wt=li("session_terminal_targets",{id:xo("id").primaryKey().defaultRandom(),userId:xo("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),sessionId:xo("session_id").references(()=>a.id,{onDelete:"set null"}),externalSessionId:Ae("external_session_id"),kind:Ae("kind").notNull(),target:Ae("target").notNull(),status:Ae("status").notNull().default("active"),attachCommand:Ae("attach_command").notNull(),projectPath:Ae("project_path"),metadata:ci("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=>[pi("idx_session_terminal_targets_user_target").on(e.userId,e.target),Cn("idx_session_terminal_targets_session").on(e.sessionId),Cn("idx_session_terminal_targets_user_status").on(e.userId,e.status)]);import{boolean as _i,index as Tt,jsonb as qn,pgTable as mi,text as de,timestamp as Ge,uuid as At,integer as ho}from"drizzle-orm/pg-core";var On=mi("session_send_jobs",{id:At("id").primaryKey().defaultRandom(),userId:At("user_id").notNull(),sessionId:At("session_id").notNull().references(()=>a.id,{onDelete:"cascade"}),terminalTargetId:At("terminal_target_id").references(()=>wt.id,{onDelete:"set null"}),target:de("target").notNull(),message:de("message").notNull(),submit:_i("submit").notNull().default(!0),delivery:de("delivery").notNull().default("live"),status:de("status").notNull().default("pending"),result:qn("result"),error:de("error"),attempts:ho("attempts").notNull().default(0),taskKind:de("task_kind"),payload:qn("payload"),claimedBy:de("claimed_by"),claimedAt:Ge("claimed_at",{withTimezone:!0}),leaseExpiresAt:Ge("lease_expires_at",{withTimezone:!0}),leaseRecoveries:ho("lease_recoveries").notNull().default(0),hostSuspendRecoveries:ho("host_suspend_recoveries").notNull().default(0),createdAt:Ge("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Ge("updated_at",{withTimezone:!0}).defaultNow(),completedAt:Ge("completed_at",{withTimezone:!0})},e=>[Tt("idx_session_send_jobs_user").on(e.userId),Tt("idx_session_send_jobs_session").on(e.sessionId),Tt("idx_session_send_jobs_status").on(e.status),Tt("idx_session_send_jobs_pending").on(e.userId,e.status)]);import{pgTable as Hn,text as ue,timestamp as Dt,jsonb as Ln,uuid as Q,integer as fi,boolean as Ni,uniqueIndex as xi,index as Mn,primaryKey as hi}from"drizzle-orm/pg-core";var j=Hn("packs",{id:Q("id").primaryKey().defaultRandom(),name:ue("name").notNull(),description:ue("description").notNull(),scope:ue("scope").notNull(),scopeRef:Q("scope_ref"),version:ue("version").notNull().default("1.0.0"),tags:ue("tags").array(),badge:ue("badge"),metadata:Ln("metadata"),createdBy:Q("created_by"),createdAt:Dt("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Dt("updated_at",{withTimezone:!0}).defaultNow(),archived:Ni("archived").default(!1),archivedAt:Dt("archived_at",{withTimezone:!0}),archivedBy:Q("archived_by"),forkedFromId:Q("forked_from_id").references(()=>j.id,{onDelete:"set null"}),upstreamVersion:ue("upstream_version")},e=>[xi("packs_name_scope_ref_idx").on(e.name,e.scope,e.scopeRef),Mn("idx_packs_scope").on(e.scope,e.scopeRef),Mn("idx_packs_created_by").on(e.createdBy)]),Y=Hn("pack_instructions",{packId:Q("pack_id").references(()=>j.id,{onDelete:"cascade"}).notNull(),instructionId:Q("instruction_id").references(()=>n.id,{onDelete:"cascade"}).notNull(),position:fi("position").notNull().default(0),slotOverrides:Ln("slot_overrides"),addedAt:Dt("added_at",{withTimezone:!0}).defaultNow(),addedBy:Q("added_by")},e=>[hi({columns:[e.packId,e.instructionId]})]);import{pgTable as gi,text as go,timestamp as vi,jsonb as Ii,uuid as vo,index as De}from"drizzle-orm/pg-core";var je=gi("instruction_usage_events",{id:vo("id").primaryKey().defaultRandom(),instructionId:vo("instruction_id").references(()=>n.id,{onDelete:"set null"}),userId:vo("user_id").notNull(),surface:go("surface").notNull(),action:go("action").notNull(),metadata:Ii("metadata"),traceId:go("trace_id"),createdAt:vi("created_at",{withTimezone:!0}).defaultNow()},e=>[De("idx_usage_events_instruction").on(e.instructionId),De("idx_usage_events_user").on(e.userId),De("idx_usage_events_surface").on(e.surface),De("idx_usage_events_action").on(e.action),De("idx_usage_events_created_at").on(e.createdAt),De("idx_usage_events_user_created").on(e.userId,e.createdAt)]);import{pgTable as yi,text as jt,timestamp as zt,jsonb as wi,uuid as Un,index as Io}from"drizzle-orm/pg-core";var Bn=yi("worker_connections",{id:Un("id").primaryKey().defaultRandom(),userId:Un("user_id").notNull(),workerType:jt("worker_type").notNull().default("mcp"),clientName:jt("client_name").notNull(),clientVersion:jt("client_version"),workerVersion:jt("worker_version"),lastHeartbeat:zt("last_heartbeat",{withTimezone:!0}).notNull().defaultNow(),presenceGapStartedAt:zt("presence_gap_started_at",{withTimezone:!0}),presenceGapEndedAt:zt("presence_gap_ended_at",{withTimezone:!0}),connectedAt:zt("connected_at",{withTimezone:!0}).notNull().defaultNow(),metadata:wi("metadata")},e=>[Io("idx_worker_connections_user").on(e.userId),Io("idx_worker_connections_heartbeat").on(e.userId,e.lastHeartbeat),Io("idx_worker_connections_type").on(e.userId,e.workerType)]);import{pgTable as Ti,text as Rt,timestamp as Ai,jsonb as Di,uuid as Gn,index as Vn}from"drizzle-orm/pg-core";var Fn=Ti("cli_setup_events",{id:Gn("id").primaryKey().defaultRandom(),userId:Gn("user_id").notNull(),deviceId:Rt("device_id").notNull(),event:Rt("event").notNull(),cliVersion:Rt("cli_version"),os:Rt("os"),props:Di("props").notNull().default({}),createdAt:Ai("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Vn("idx_cli_setup_events_user").on(e.userId,e.createdAt),Vn("idx_cli_setup_events_device").on(e.deviceId,e.createdAt)]);import{pgTable as ji,text as le,integer as zi,boolean as Ri,timestamp as ki,jsonb as Ei,uuid as Si,index as $n}from"drizzle-orm/pg-core";var Jn=ji("cli_error_events",{id:Si("id").primaryKey().defaultRandom(),deviceId:le("device_id"),event:le("event").notNull(),command:le("command"),statusCode:zi("status_code"),message:le("message"),cliVersion:le("cli_version"),os:le("os"),nodeVersion:le("node_version"),proxied:Ri("proxied"),props:Ei("props").notNull().default({}),createdAt:ki("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[$n("idx_cli_error_events_created").on(e.createdAt),$n("idx_cli_error_events_device").on(e.deviceId,e.createdAt)]);import{sql as yo}from"drizzle-orm";import{pgTable as ce,text as p,timestamp as g,jsonb as T,uuid as c,integer as O,boolean as Ve,index as f,unique as Qn}from"drizzle-orm/pg-core";var r=ce("eval_targets",{id:c("id").primaryKey().defaultRandom(),userId:c("user_id").notNull(),name:p("name").notNull(),type:p("type").notNull(),content:p("content").notNull(),description:p("description").notNull().default(""),metadata:T("metadata").notNull().default({}),version:O("version").notNull().default(1),parentId:c("parent_id").references(()=>r.id,{onDelete:"set null"}),instructionId:c("instruction_id").references(()=>n.id,{onDelete:"set null"}),projectPath:p("project_path"),createdAt:g("created_at",{withTimezone:!0}).defaultNow(),updatedAt:g("updated_at",{withTimezone:!0}).defaultNow()},e=>[f("eval_targets_name_user_idx").on(e.name,e.userId),f("idx_eval_targets_user").on(e.userId),f("idx_eval_targets_type").on(e.type),f("idx_eval_targets_parent").on(e.parentId),f("idx_eval_targets_instruction").on(e.instructionId).where(yo`${e.instructionId} IS NOT NULL`),f("idx_eval_targets_project").on(e.projectPath).where(yo`${e.projectPath} IS NOT NULL`)]),M=ce("evals",{id:c("id").primaryKey().defaultRandom(),evalTargetId:c("eval_target_id").notNull().references(()=>r.id,{onDelete:"cascade"}),name:p("name").notNull(),prompt:p("prompt").notNull(),expectedOutput:p("expected_output").notNull().default(""),files:T("files").notNull().default([]),expectations:T("expectations").notNull().default([]),retiredAt:g("retired_at",{withTimezone:!0}),retiredReason:p("retired_reason"),createdAt:g("created_at",{withTimezone:!0}).defaultNow(),updatedAt:g("updated_at",{withTimezone:!0}).defaultNow(),contentUpdatedAt:g("content_updated_at",{withTimezone:!0}).notNull().defaultNow()},e=>[f("idx_evals_target").on(e.evalTargetId),f("idx_evals_target_active").on(e.evalTargetId).where(yo`${e.retiredAt} IS NULL`)]),E=ce("eval_runs",{id:c("id").primaryKey().defaultRandom(),jobId:c("job_id"),evalId:c("eval_id").notNull().references(()=>M.id,{onDelete:"cascade"}),evalTargetId:c("eval_target_id").notNull().references(()=>r.id,{onDelete:"cascade"}),evalTargetVersion:O("eval_target_version").notNull(),configuration:p("configuration").notNull(),runNumber:O("run_number").notNull().default(1),iteration:O("iteration").notNull().default(1),status:p("status").notNull().default("completed"),outputs:T("outputs").notNull().default({}),timing:T("timing").notNull().default({}),grading:T("grading").notNull().default({}),comparison:T("comparison"),createdAt:g("created_at",{withTimezone:!0}).defaultNow()},e=>[f("idx_eval_runs_eval").on(e.evalId),f("idx_eval_runs_target").on(e.evalTargetId),f("idx_eval_runs_iteration").on(e.evalTargetId,e.iteration)]),Yn=ce("eval_comparisons",{id:c("id").primaryKey().defaultRandom(),userId:c("user_id").notNull(),targetAId:c("target_a_id").notNull().references(()=>r.id,{onDelete:"cascade"}),targetBId:c("target_b_id").notNull().references(()=>r.id,{onDelete:"cascade"}),targetAVersion:O("target_a_version").notNull(),targetBVersion:O("target_b_version").notNull(),isSwapped:Ve("is_swapped").notNull().default(!1),winnerTargetId:c("winner_target_id").references(()=>r.id,{onDelete:"set null"}),perEval:T("per_eval").notNull().default([]),overall:T("overall").notNull().default({}),rawOutput:p("raw_output"),model:p("model"),status:p("status").notNull().default("completed"),createdAt:g("created_at",{withTimezone:!0}).defaultNow()},e=>[f("idx_eval_comparisons_target_a").on(e.targetAId),f("idx_eval_comparisons_target_b").on(e.targetBId),f("idx_eval_comparisons_user").on(e.userId)]),Wn=ce("eval_grade_annotations",{id:c("id").primaryKey().defaultRandom(),userId:c("user_id").notNull(),evalRunId:c("eval_run_id").notNull().references(()=>E.id,{onDelete:"cascade"}),evalTargetId:c("eval_target_id").notNull().references(()=>r.id,{onDelete:"cascade"}),expectationIndex:O("expectation_index").notNull(),expectationText:p("expectation_text").notNull(),judgePassed:Ve("judge_passed").notNull(),judgeMethod:p("judge_method").notNull(),judgeModel:p("judge_model"),verdict:p("verdict").notNull(),flag:p("flag"),note:p("note"),createdAt:g("created_at",{withTimezone:!0}).defaultNow(),updatedAt:g("updated_at",{withTimezone:!0}).defaultNow()},e=>[f("idx_eval_grade_annotations_target").on(e.evalTargetId),f("idx_eval_grade_annotations_run").on(e.evalRunId),Qn("eval_grade_annotations_eval_run_id_expectation_index_key").on(e.evalRunId,e.expectationIndex)]),Xn=ce("judge_reviewer_verdicts",{id:c("id").primaryKey().defaultRandom(),userId:c("user_id").notNull(),evalTargetId:c("eval_target_id").notNull().references(()=>r.id,{onDelete:"cascade"}),evalRunId:c("eval_run_id").notNull().references(()=>E.id,{onDelete:"cascade"}),expectationIndex:O("expectation_index").notNull(),expectationText:p("expectation_text").notNull(),judgePassed:Ve("judge_passed").notNull(),humanPassed:Ve("human_passed").notNull(),reviewerEngine:p("reviewer_engine").notNull(),reviewerModel:p("reviewer_model").notNull(),reviewerPassed:Ve("reviewer_passed").notNull(),resolvedAt:g("resolved_at",{withTimezone:!0}),resolution:p("resolution"),createdAt:g("created_at",{withTimezone:!0}).defaultNow(),updatedAt:g("updated_at",{withTimezone:!0}).defaultNow()},e=>[f("idx_jrv_target").on(e.evalTargetId),Qn("judge_reviewer_verdicts_eval_run_id_expectation_index_review_key").on(e.evalRunId,e.expectationIndex,e.reviewerModel)]),ze=ce("benchmarks",{id:c("id").primaryKey().defaultRandom(),evalTargetId:c("eval_target_id").notNull().references(()=>r.id,{onDelete:"cascade"}),iteration:O("iteration").notNull().default(1),runSummary:T("run_summary").notNull().default({}),notes:T("notes").notNull().default([]),feedback:T("feedback"),createdAt:g("created_at",{withTimezone:!0}).defaultNow()},e=>[f("idx_benchmarks_target").on(e.evalTargetId)]);import{sql as wo}from"drizzle-orm";import{pgTable as bi,text as H,timestamp as Pi,jsonb as kt,uuid as Et,boolean as Ki,index as Fe,uniqueIndex as Ci}from"drizzle-orm/pg-core";var Zn=bi("instruction_promotions",{id:Et("id").primaryKey().defaultRandom(),userId:Et("user_id").notNull(),evalTargetId:Et("eval_target_id").notNull().references(()=>r.id,{onDelete:"cascade"}),instructionId:Et("instruction_id").references(()=>n.id,{onDelete:"set null"}),fromContentHash:H("from_content_hash").notNull(),toContentHash:H("to_content_hash").notNull(),fromContent:H("from_content").notNull(),toContent:H("to_content").notNull(),proposalSource:H("proposal_source").notNull(),proposalRationale:H("proposal_rationale").notNull().default(""),decision:H("decision").notNull(),applied:Ki("applied").notNull().default(!1),refusals:kt("refusals").notNull().default([]),rationale:H("rationale").notNull().default(""),effectClass:H("effect_class").notNull(),verdict:kt("verdict").notNull().default({}),gates:kt("gates").notNull().default({}),touchedSections:kt("touched_sections").notNull().default([]),createdAt:Pi("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Fe("idx_instruction_promotions_budget").on(e.evalTargetId,e.createdAt.desc()).where(wo`${e.applied}`),Fe("idx_instruction_promotions_target").on(e.evalTargetId,e.createdAt.desc()),Fe("idx_instruction_promotions_user").on(e.userId,e.createdAt.desc()),Fe("idx_instruction_promotions_to_hash").on(e.toContentHash),Ci("uq_instruction_promotions_applied").on(e.evalTargetId,e.fromContentHash,e.toContentHash).where(wo`${e.applied}`),Fe("idx_instruction_promotions_applied_hash").on(e.toContentHash,e.createdAt.desc()).where(wo`${e.applied}`)]);import{index as $e,integer as qi,jsonb as Oi,pgTable as Mi,text as y,timestamp as Re,uniqueIndex as Hi,uuid as Je}from"drizzle-orm/pg-core";var er=Mi("recommendation_applications",{id:Je("id").primaryKey().defaultRandom(),userId:Je("user_id").notNull(),instructionId:Je("instruction_id").notNull().references(()=>n.id,{onDelete:"cascade"}),projectId:Je("project_id").references(()=>s.id,{onDelete:"set null"}),projectPath:y("project_path").notNull(),harness:y("harness").notNull(),targetPath:y("target_path").notNull(),status:y("status").notNull().default("proposed"),applyMode:y("apply_mode").notNull(),beforeHash:y("before_hash"),appliedHash:y("applied_hash"),appliedAt:Re("applied_at",{withTimezone:!0}),measurementStartedAt:Re("measurement_started_at",{withTimezone:!0}),measurementEndedAt:Re("measurement_ended_at",{withTimezone:!0}),verdict:y("verdict"),verdictDetail:y("verdict_detail"),revertedAt:Re("reverted_at",{withTimezone:!0}),boundaryClass:y("boundary_class"),targets:y("targets").array().notNull().default([]),inverse:Oi("inverse"),requires:y("requires").array().notNull().default([]),provides:y("provides").array().notNull().default([]),applyBatchId:Je("apply_batch_id"),applySeq:qi("apply_seq"),createdAt:Re("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:Re("updated_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Hi("uq_recommendation_applications_target").on(e.userId,e.instructionId,e.projectPath,e.harness,e.targetPath),$e("idx_recommendation_applications_user_status").on(e.userId,e.status,e.updatedAt.desc()),$e("idx_recommendation_applications_user_harness").on(e.userId,e.harness,e.updatedAt.desc()),$e("idx_recommendation_applications_project").on(e.projectId,e.updatedAt.desc()),$e("idx_recommendation_applications_batch").on(e.userId,e.applyBatchId,e.applySeq.desc()),$e("idx_recommendation_applications_requires").using("gin",e.requires)]);import{pgTable as Li,text as S,timestamp as tr,jsonb as Qe,uuid as To,integer as ke,real as Ui,index as W,uniqueIndex as or}from"drizzle-orm/pg-core";import{sql as Ao}from"drizzle-orm";var X=Li("context_snapshots",{id:To("id").primaryKey().defaultRandom(),sessionId:To("session_id").references(()=>a.id,{onDelete:"cascade"}),userId:To("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),sequence:ke("sequence").notNull().default(0),provider:S("provider").notNull(),model:S("model").notNull(),systemPrompt:S("system_prompt").notNull(),injectedInstructions:Qe("injected_instructions").notNull().default([]),messagesSummary:Qe("messages_summary").notNull(),tools:Qe("tools").notNull().default([]),systemHash:S("system_hash").notNull(),requestHash:S("request_hash").notNull().default(""),toolsHash:S("tools_hash"),injectedHash:S("injected_hash"),messagesDelta:Qe("messages_delta").default([]),messagesDeltaRef:S("messages_delta_ref"),messagesBaseLength:ke("messages_base_length"),payloadPrunedAt:tr("payload_pruned_at",{withTimezone:!0}),deltaOffloadState:S("delta_offload_state").notNull().default("inline"),deltaGzipBytes:ke("delta_gzip_bytes"),deltaOffloadError:S("delta_offload_error"),deltaOffloadAttempts:ke("delta_offload_attempts").notNull().default(0),maxTokens:ke("max_tokens"),temperature:Ui("temperature"),estimatedTokens:ke("estimated_tokens"),capturedAt:tr("captured_at",{withTimezone:!0}).notNull().defaultNow(),metadata:Qe("metadata").default({})},e=>[W("idx_context_snapshots_session").on(e.sessionId),W("idx_context_snapshots_user").on(e.userId),W("idx_context_snapshots_hash").on(e.systemHash),W("idx_context_snapshots_request_hash").on(e.requestHash),or("idx_snapshots_session_request").on(e.sessionId,e.requestHash),or("idx_snapshots_session_sequence").on(e.sessionId,e.sequence),W("idx_context_snapshots_user_session_captured").on(e.userId,e.sessionId,e.capturedAt.desc()),W("idx_snapshots_unpruned_captured").on(e.capturedAt,e.id).where(Ao`${e.payloadPrunedAt} is null`),W("idx_snapshots_pending_offload").on(e.deltaOffloadState,e.capturedAt,e.id).where(Ao`${e.deltaOffloadState} = 'pending'`),W("idx_snapshots_delta_ref").on(e.messagesDeltaRef).where(Ao`${e.messagesDeltaRef} is not null`)]);import{pgTable as Bi,text as nr,timestamp as rr,jsonb as Gi,integer as Vi,index as Fi}from"drizzle-orm/pg-core";var sr=Bi("content_blobs",{hash:nr("hash").primaryKey(),contentType:nr("content_type").notNull(),content:Gi("content").notNull(),sizeBytes:Vi("size_bytes").notNull().default(0),createdAt:rr("created_at",{withTimezone:!0}).defaultNow(),lastReferencedAt:rr("last_referenced_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Fi("idx_content_blobs_type").on(e.contentType)]);import{integer as ir,jsonb as $i,pgTable as Ji,timestamp as Qi,uuid as Yi}from"drizzle-orm/pg-core";var ar=Ji("session_capture_heads",{sessionId:Yi("session_id").primaryKey().references(()=>a.id,{onDelete:"cascade"}),sequence:ir("sequence").notNull(),rawMessageHashes:$i("raw_message_hashes").notNull().$type(),version:ir("version").notNull(),updatedAt:Qi("updated_at",{withTimezone:!0}).notNull().defaultNow()});import{index as Wi,integer as dr,pgTable as Xi,text as Do,timestamp as ur,uniqueIndex as Zi,uuid as ea}from"drizzle-orm/pg-core";import{sql as ta}from"drizzle-orm";var lr=Xi("snapshot_delta_objects",{ref:Do("ref").primaryKey(),snapshotId:ea("snapshot_id"),compressedBytes:dr("compressed_bytes").notNull(),state:Do("state").notNull(),createdAt:ur("created_at",{withTimezone:!0}).notNull().defaultNow(),lastAttemptAt:ur("last_attempt_at",{withTimezone:!0}),attempts:dr("attempts").notNull().default(0),lastError:Do("last_error")},e=>[Wi("idx_snapshot_delta_objects_state_created").on(e.state,e.createdAt),Zi("snapshot_delta_objects_snapshot_id_unique").on(e.snapshotId).where(ta`${e.snapshotId} is not null`)]);import{pgTable as oa,text as St,timestamp as Ye,jsonb as bt,uuid as jo,index as Pt,integer as zo}from"drizzle-orm/pg-core";var b=oa("eval_jobs",{id:jo("id").primaryKey().defaultRandom(),userId:jo("user_id").notNull(),evalTargetId:jo("eval_target_id").notNull().references(()=>r.id,{onDelete:"cascade"}),status:St("status").notNull().default("pending"),config:bt("config").notNull().default({}),progress:bt("progress").notNull().default({}),result:bt("result"),error:St("error"),attempts:zo("attempts").notNull().default(0),taskKind:St("task_kind"),payload:bt("payload"),claimedBy:St("claimed_by"),claimedAt:Ye("claimed_at",{withTimezone:!0}),leaseExpiresAt:Ye("lease_expires_at",{withTimezone:!0}),leaseRecoveries:zo("lease_recoveries").notNull().default(0),hostSuspendRecoveries:zo("host_suspend_recoveries").notNull().default(0),createdAt:Ye("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Ye("updated_at",{withTimezone:!0}).defaultNow(),completedAt:Ye("completed_at",{withTimezone:!0})},e=>[Pt("idx_eval_jobs_user").on(e.userId),Pt("idx_eval_jobs_target").on(e.evalTargetId),Pt("idx_eval_jobs_status").on(e.status),Pt("idx_eval_jobs_pending").on(e.userId,e.status)]);import{pgTable as na,text as We,timestamp as Xe,jsonb as cr,uuid as pr,integer as Ro,index as _r}from"drizzle-orm/pg-core";var mr=na("agent_jobs",{id:pr("id").primaryKey().defaultRandom(),userId:pr("user_id").notNull(),taskKind:We("task_kind").notNull(),status:We("status").notNull().default("pending"),payload:cr("payload").notNull(),dedupeKey:We("dedupe_key"),result:cr("result"),error:We("error"),attempts:Ro("attempts").notNull().default(0),claimedBy:We("claimed_by"),claimedAt:Xe("claimed_at",{withTimezone:!0}),leaseExpiresAt:Xe("lease_expires_at",{withTimezone:!0}),leaseRecoveries:Ro("lease_recoveries").notNull().default(0),hostSuspendRecoveries:Ro("host_suspend_recoveries").notNull().default(0),createdAt:Xe("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:Xe("updated_at",{withTimezone:!0}).notNull().defaultNow(),completedAt:Xe("completed_at",{withTimezone:!0})},e=>[_r("idx_agent_jobs_claim").on(e.userId,e.status,e.taskKind,e.createdAt),_r("idx_agent_jobs_dedupe").on(e.userId,e.taskKind,e.dedupeKey)]);import{pgTable as ra,text as Ze,timestamp as et,jsonb as Kt,uuid as ko,index as Ct,integer as Eo}from"drizzle-orm/pg-core";var fr=ra("insights_jobs",{id:ko("id").primaryKey().defaultRandom(),userId:ko("user_id").notNull(),status:Ze("status").notNull().default("pending"),projectPath:Ze("project_path"),projectId:ko("project_id").references(()=>s.id,{onDelete:"set null"}),config:Kt("config").notNull().default({}),progress:Kt("progress").notNull().default({}),result:Kt("result"),error:Ze("error"),attempts:Eo("attempts").notNull().default(0),taskKind:Ze("task_kind"),payload:Kt("payload"),claimedBy:Ze("claimed_by"),claimedAt:et("claimed_at",{withTimezone:!0}),leaseExpiresAt:et("lease_expires_at",{withTimezone:!0}),leaseRecoveries:Eo("lease_recoveries").notNull().default(0),hostSuspendRecoveries:Eo("host_suspend_recoveries").notNull().default(0),createdAt:et("created_at",{withTimezone:!0}).defaultNow(),updatedAt:et("updated_at",{withTimezone:!0}).defaultNow(),completedAt:et("completed_at",{withTimezone:!0})},e=>[Ct("idx_insights_jobs_user").on(e.userId),Ct("idx_insights_jobs_status").on(e.status),Ct("idx_insights_jobs_pending").on(e.userId,e.status),Ct("idx_insights_jobs_project").on(e.projectId)]);import{pgTable as sa,text as So,timestamp as qt,uuid as Nr,index as ia,uniqueIndex as aa}from"drizzle-orm/pg-core";var Ee=sa("api_keys",{id:Nr("id").primaryKey().defaultRandom(),userId:Nr("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),name:So("name").notNull(),keyHash:So("key_hash").notNull(),keyPrefix:So("key_prefix").notNull(),lastUsedAt:qt("last_used_at",{withTimezone:!0}),expiresAt:qt("expires_at",{withTimezone:!0}),revokedAt:qt("revoked_at",{withTimezone:!0}),createdAt:qt("created_at",{withTimezone:!0}).defaultNow()},e=>[ia("idx_api_keys_user").on(e.userId),aa("idx_api_keys_hash").on(e.keyHash)]);import{pgTable as da,text as bo,timestamp as xr,uuid as ua,index as la}from"drizzle-orm/pg-core";var hr=da("extension_auth_codes",{code:bo("code").primaryKey(),userId:ua("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),editor:bo("editor"),email:bo("email"),expiresAt:xr("expires_at",{withTimezone:!0}).notNull(),createdAt:xr("created_at",{withTimezone:!0}).defaultNow()},e=>[la("idx_ext_auth_codes_expiry").on(e.expiresAt)]);import{pgTable as ca,text as pa,timestamp as gr,jsonb as _a,uuid as Po,index as vr}from"drizzle-orm/pg-core";var Se=ca("eval_conversations",{id:Po("id").primaryKey().defaultRandom(),evalTargetId:Po("eval_target_id").notNull().references(()=>r.id,{onDelete:"cascade"}),userId:Po("user_id").notNull(),messages:_a("messages").notNull().default([]),status:pa("status").notNull().default("active"),createdAt:gr("created_at",{withTimezone:!0}).defaultNow(),updatedAt:gr("updated_at",{withTimezone:!0}).defaultNow()},e=>[vr("idx_eval_conversations_target").on(e.evalTargetId),vr("idx_eval_conversations_user").on(e.userId)]);import{pgTable as ma,text as L,timestamp as Ir,jsonb as fa,uuid as Ko}from"drizzle-orm/pg-core";var yr=ma("skill_submissions",{id:Ko("id").primaryKey().defaultRandom(),skillId:L("skill_id").notNull(),name:L("name").notNull(),description:L("description").notNull(),category:L("category").notNull(),tools:L("tools").array().notNull(),tags:L("tags").array().default([]),content:L("content").notNull(),status:L("status").notNull().default("pending"),submittedBy:Ko("submitted_by").notNull(),reviewedBy:Ko("reviewed_by"),reviewNote:L("review_note"),metadata:fa("metadata"),createdAt:Ir("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Ir("updated_at",{withTimezone:!0}).defaultNow()});import{pgTable as Na,text as tt,timestamp as wr,jsonb as xa,uuid as ha,uniqueIndex as ga,index as Tr}from"drizzle-orm/pg-core";var Ar=Na("harness_releases",{id:ha("id").primaryKey().defaultRandom(),harness:tt("harness").notNull(),version:tt("version").notNull(),publishedAt:wr("published_at",{withTimezone:!0}).notNull(),title:tt("title"),body:tt("body"),categories:xa("categories").default({}),url:tt("url"),createdAt:wr("created_at",{withTimezone:!0}).defaultNow()},e=>[ga("idx_harness_releases_unique").on(e.harness,e.version),Tr("idx_harness_releases_harness").on(e.harness),Tr("idx_harness_releases_published").on(e.publishedAt)]);import{pgTable as va,text as be,timestamp as Dr,jsonb as Ia,uuid as jr,index as zr,uniqueIndex as ya}from"drizzle-orm/pg-core";var Co=va("notifications",{id:jr("id").primaryKey().defaultRandom(),userId:jr("user_id").notNull(),type:be("type").notNull(),title:be("title").notNull(),body:be("body"),url:be("url"),sourceTable:be("source_table"),sourceId:be("source_id"),metadata:Ia("metadata").notNull().default({}),readAt:Dr("read_at",{withTimezone:!0}),createdAt:Dr("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[zr("idx_notifications_user_created").on(e.userId,e.createdAt),zr("idx_notifications_user_unread").on(e.userId),ya("idx_notifications_source_dedup").on(e.userId,e.sourceTable,e.sourceId)]);import{pgTable as wa,text as ot,timestamp as nt,jsonb as qo,uuid as Oo,index as Ot,integer as Mo}from"drizzle-orm/pg-core";var Pe=wa("launch_jobs",{id:Oo("id").primaryKey().defaultRandom(),userId:Oo("user_id").notNull(),tool:ot("tool").notNull(),status:ot("status").notNull().default("pending"),config:qo("config").notNull().default({}),result:qo("result"),error:ot("error"),attempts:Mo("attempts").notNull().default(0),taskKind:ot("task_kind"),payload:qo("payload"),claimedBy:ot("claimed_by"),claimedAt:nt("claimed_at",{withTimezone:!0}),leaseExpiresAt:nt("lease_expires_at",{withTimezone:!0}),leaseRecoveries:Mo("lease_recoveries").notNull().default(0),hostSuspendRecoveries:Mo("host_suspend_recoveries").notNull().default(0),createdAt:nt("created_at",{withTimezone:!0}).defaultNow(),updatedAt:nt("updated_at",{withTimezone:!0}).defaultNow(),completedAt:nt("completed_at",{withTimezone:!0}),runId:Oo("run_id").references(()=>h.id,{onDelete:"set null"})},e=>[Ot("idx_launch_jobs_user").on(e.userId),Ot("idx_launch_jobs_status").on(e.status),Ot("idx_launch_jobs_pending").on(e.userId,e.status),Ot("idx_launch_jobs_run").on(e.runId)]);import{pgTable as Rr,uuid as U,text as Z,real as Ta,timestamp as rt,boolean as Aa,uniqueIndex as Da,index as st}from"drizzle-orm/pg-core";var kr=["add","remove","trim"],Ho=Rr("instruction_suggestions",{id:U("id").primaryKey().defaultRandom(),userId:U("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),instructionId:U("instruction_id").notNull().references(()=>n.id,{onDelete:"cascade"}),projectPath:Z("project_path").notNull(),projectId:U("project_id").references(()=>s.id,{onDelete:"set null"}),score:Ta("score").notNull(),reason:Z("reason").notNull(),kind:Z("kind").$type().notNull().default("add"),generatedAt:rt("generated_at",{withTimezone:!0}).notNull().defaultNow(),isStale:Aa("is_stale").notNull().default(!1),dismissedAt:rt("dismissed_at",{withTimezone:!0}),acceptedAt:rt("accepted_at",{withTimezone:!0}),declinedAt:rt("declined_at",{withTimezone:!0}),declinedReason:Z("declined_reason"),promotedToInstructionId:U("promoted_to_instruction_id").references(()=>n.id,{onDelete:"set null"})},e=>[Da("idx_instruction_suggestions_user_project_instruction_kind").on(e.userId,e.projectPath,e.instructionId,e.kind),st("idx_instruction_suggestions_user_project").on(e.userId,e.projectPath),st("idx_instruction_suggestions_user_proj_id").on(e.userId,e.projectId),st("idx_instruction_suggestions_generated_at").on(e.generatedAt)]),Er=Rr("instruction_suggestion_events",{id:U("id").primaryKey().defaultRandom(),suggestionId:U("suggestion_id").notNull().references(()=>Ho.id,{onDelete:"cascade"}),userId:U("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),eventType:Z("event_type").notNull(),tool:Z("tool"),sessionId:U("session_id"),projectPath:Z("project_path").notNull(),actor:Z("actor"),createdAt:rt("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[st("idx_instruction_suggestion_events_suggestion_id").on(e.suggestionId),st("idx_instruction_suggestion_events_user_id").on(e.userId)]);import{pgTable as ja,text as Lo,integer as za,numeric as it,timestamp as Uo,index as Ra,primaryKey as ka}from"drizzle-orm/pg-core";var Sr=ja("model_pricing",{provider:Lo("provider").notNull(),modelId:Lo("model_id").notNull(),inputPerM:it("input_per_m").notNull(),outputPerM:it("output_per_m").notNull(),cacheReadPerM:it("cache_read_per_m").notNull(),cacheWrite5mPerM:it("cache_write_5m_per_m").notNull(),cacheWrite1hPerM:it("cache_write_1h_per_m").notNull(),contextWindow:za("context_window"),effectiveFrom:Uo("effective_from",{withTimezone:!0}).notNull(),effectiveUntil:Uo("effective_until",{withTimezone:!0}),source:Lo("source").notNull(),verifiedAt:Uo("verified_at",{withTimezone:!0})},e=>[ka({columns:[e.provider,e.modelId,e.effectiveFrom]}),Ra("idx_model_pricing_active").on(e.provider,e.modelId,e.effectiveFrom.desc())]);import{pgTable as Ea,text as pe,numeric as br,timestamp as Pr,uuid as Kr,jsonb as Sa,index as Cr}from"drizzle-orm/pg-core";var qr=Ea("limit_observations",{id:Kr("id").primaryKey().defaultRandom(),observedAt:Pr("observed_at",{withTimezone:!0}).notNull().defaultNow(),provider:pe("provider").notNull(),plan:pe("plan").notNull(),limitType:pe("limit_type").notNull(),value:br("value").notNull(),unit:pe("unit").notNull(),comparator:pe("comparator").notNull().default("="),resetsAt:Pr("resets_at",{withTimezone:!0}),sourceType:pe("source_type").notNull(),sourceUrl:pe("source_url"),sourceEvidence:Sa("source_evidence"),confidence:br("confidence").notNull(),userId:Kr("user_id")},e=>[Cr("idx_limit_obs_lookup").on(e.provider,e.plan,e.limitType,e.observedAt.desc()),Cr("idx_limit_obs_user").on(e.userId,e.observedAt.desc())]);import{pgTable as ba,text as Mt,timestamp as Pa,uuid as Ka,jsonb as Ca,boolean as qa,uniqueIndex as Oa}from"drizzle-orm/pg-core";var Or=ba("provider_docs_snapshots",{id:Ka("id").primaryKey().defaultRandom(),fetchedAt:Pa("fetched_at",{withTimezone:!0}).notNull().defaultNow(),provider:Mt("provider").notNull(),docUrl:Mt("doc_url").notNull(),contentHash:Mt("content_hash").notNull(),content:Mt("content").notNull(),parseSuccess:qa("parse_success").notNull(),parseErrors:Ca("parse_errors")},e=>[Oa("idx_docs_dedup").on(e.provider,e.docUrl,e.contentHash)]);import{pgTable as Ma,text as Ht,numeric as Mr,timestamp as Hr,uuid as Ha,primaryKey as La,index as Ua}from"drizzle-orm/pg-core";var Lr=Ma("plan_limits_active",{provider:Ht("provider").notNull(),plan:Ht("plan").notNull(),limitType:Ht("limit_type").notNull(),value:Mr("value").notNull(),unit:Ht("unit").notNull(),effectiveFrom:Hr("effective_from",{withTimezone:!0}).notNull(),effectiveUntil:Hr("effective_until",{withTimezone:!0}),confidence:Mr("confidence").notNull(),sourceObservationIds:Ha("source_observation_ids").array().notNull()},e=>[La({columns:[e.provider,e.plan,e.limitType,e.effectiveFrom]}),Ua("idx_plan_limits_lookup").on(e.provider,e.plan,e.limitType,e.effectiveFrom.desc())]);import{pgTable as Ba,text as Bo,timestamp as Ga,uuid as Ur,jsonb as Va,index as Fa}from"drizzle-orm/pg-core";var Br=Ba("alert_dispatches",{id:Ur("id").primaryKey().defaultRandom(),userId:Ur("user_id").notNull(),alertKey:Bo("alert_key").notNull(),severity:Bo("severity").notNull(),lastDispatchedAt:Ga("last_dispatched_at",{withTimezone:!0}).notNull().defaultNow(),lastState:Va("last_state").notNull(),channel:Bo("channel").notNull()},e=>[Fa("idx_alert_user_key").on(e.userId,e.alertKey,e.lastDispatchedAt.desc())]);import{date as Gr,integer as Go,pgTable as Vr,primaryKey as $a,text as Ja,timestamp as Vo,uuid as Qa}from"drizzle-orm/pg-core";var Fr=Vr("weekly_digest_deliveries",{userId:Qa("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),weekStart:Gr("week_start").notNull(),sentAt:Vo("sent_at",{withTimezone:!0}).notNull().defaultNow(),providerMessageId:Ja("provider_message_id")},e=>[$a({columns:[e.userId,e.weekStart]})]),$r=Vr("weekly_digest_runs",{weekStart:Gr("week_start").primaryKey(),startedAt:Vo("started_at",{withTimezone:!0}).notNull().defaultNow(),finishedAt:Vo("finished_at",{withTimezone:!0}),sent:Go("sent"),skipped:Go("skipped"),failed:Go("failed")});import{pgTable as Ya,text as Fo,timestamp as Jr,uuid as $o,integer as Wa,index as Xa,unique as Za}from"drizzle-orm/pg-core";var Qr=Ya("scaffolding_fingerprints",{id:$o("id").primaryKey().defaultRandom(),userId:$o("user_id").notNull(),harness:Fo("harness").notNull(),model:Fo("model").notNull(),toolsHash:Fo("tools_hash").notNull(),firstSeenAt:Jr("first_seen_at",{withTimezone:!0}).notNull().defaultNow(),lastSeenAt:Jr("last_seen_at",{withTimezone:!0}).notNull().defaultNow(),snapshotCount:Wa("snapshot_count").notNull().default(1),firstSessionId:$o("first_session_id")},e=>[Za("scaffolding_fingerprints_user_id_harness_model_tools_hash_key").on(e.userId,e.harness,e.model,e.toolsHash),Xa("idx_scaffolding_fp_segment").on(e.userId,e.harness,e.model)]);import{pgTable as ed,text as Jo,timestamp as td,jsonb as od,uuid as Yr,integer as nd,unique as rd}from"drizzle-orm/pg-core";var Wr=ed("scaffolding_segments",{id:Yr("id").primaryKey().defaultRandom(),userId:Yr("user_id").notNull(),harness:Jo("harness").notNull(),model:Jo("model").notNull(),coreNames:od("core_names").notNull(),coreHash:Jo("core_hash").notNull(),activeFingerprints:nd("active_fingerprints").notNull(),computedAt:td("computed_at",{withTimezone:!0}).notNull().defaultNow()},e=>[rd("scaffolding_segments_user_id_harness_model_key").on(e.userId,e.harness,e.model)]);import{pgTable as sd,text as ee,timestamp as Xr,uuid as Qo,uniqueIndex as id,index as ad}from"drizzle-orm/pg-core";var Zr=["blog","docs","changelog"],Yo=sd("vendor_guidance_snapshots",{id:Qo("id").primaryKey().defaultRandom(),fetchedAt:Xr("fetched_at",{withTimezone:!0}).notNull().defaultNow(),sourceId:ee("source_id").notNull(),harness:ee("harness").notNull(),vendor:ee("vendor").notNull(),kind:ee("kind").$type().notNull(),url:ee("url").notNull(),title:ee("title").notNull(),contentHash:ee("content_hash").notNull(),text:ee("text").notNull(),previousSnapshotId:Qo("previous_snapshot_id").references(()=>Yo.id,{onDelete:"set null"}),pitchedAt:Xr("pitched_at",{withTimezone:!0}),pitchInstructionId:Qo("pitch_instruction_id").references(()=>n.id,{onDelete:"set null"})},e=>[id("idx_vendor_guidance_dedup").on(e.sourceId,e.contentHash),ad("idx_vendor_guidance_source_fetched").on(e.sourceId,e.fetchedAt)]);import{pgTable as ts,uuid as Ke,text as Lt,jsonb as es,timestamp as Wo,uniqueIndex as dd,integer as ud,unique as ld}from"drizzle-orm/pg-core";var te=ts("performance_studies",{id:Ke("id").primaryKey().defaultRandom(),userId:Ke("user_id").notNull(),evalTargetId:Ke("eval_target_id").notNull().references(()=>r.id,{onDelete:"cascade"}),projectPath:Lt("project_path").notNull(),protocol:es("protocol").notNull(),protocolHash:Lt("protocol_hash").notNull(),result:es("result"),finalizedAt:Wo("finalized_at",{withTimezone:!0}),createdAt:Wo("created_at",{withTimezone:!0}).defaultNow().notNull()},e=>[dd("performance_studies_protocol_unique").on(e.userId,e.evalTargetId,e.protocolHash)]),_e=ts("performance_study_calls",{id:Ke("id").primaryKey().defaultRandom(),studyId:Ke("study_id").notNull().references(()=>te.id,{onDelete:"cascade"}),jobId:Ke("job_id").notNull().references(()=>b.id,{onDelete:"cascade"}),taskId:Lt("task_id").notNull(),arm:Lt("arm").notNull(),repetition:ud("repetition").notNull(),reservedAt:Wo("reserved_at",{withTimezone:!0}).defaultNow().notNull()},e=>[ld("performance_study_calls_study_id_task_id_arm_repetition_key").on(e.studyId,e.taskId,e.arm,e.repetition)]);import{drizzle as is}from"drizzle-orm/postgres-js";import as from"postgres";var Ut={};Ds(Ut,{GUIDANCE_KINDS:()=>Zr,SUGGESTION_KINDS:()=>kr,agentJobs:()=>mr,agentRuns:()=>h,agentRunsRelations:()=>Ad,alertDispatches:()=>Br,announcementDeliveries:()=>dn,announcements:()=>an,apiKeys:()=>Ee,apiKeysRelations:()=>pd,benchmarks:()=>ze,benchmarksRelations:()=>qd,cliErrorEvents:()=>Jn,cliSetupEvents:()=>Fn,contentBlobs:()=>sr,contextSnapshots:()=>X,contextSnapshotsRelations:()=>Hd,evalComparisons:()=>Yn,evalConversations:()=>Se,evalConversationsRelations:()=>Md,evalGradeAnnotations:()=>Wn,evalJobs:()=>b,evalJobsRelations:()=>Od,evalRuns:()=>E,evalRunsRelations:()=>Cd,evalTargets:()=>r,evalTargetsRelations:()=>Pd,evals:()=>M,evalsRelations:()=>Kd,extensionAuthCodes:()=>hr,harnessReleases:()=>Ar,insightRecommendationLog:()=>En,insightsJobs:()=>fr,instructionEvents:()=>ge,instructionEventsRelations:()=>gd,instructionExperimentArms:()=>zn,instructionExperiments:()=>Ue,instructionPromotions:()=>Zn,instructionSuggestionEvents:()=>Er,instructionSuggestions:()=>Ho,instructionUsageEvents:()=>je,instructionUsageEventsRelations:()=>bd,instructionVerdicts:()=>kn,instructionVersionIdentities:()=>fn,instructionVersions:()=>he,instructionVersionsRelations:()=>Id,instructions:()=>n,instructionsRelations:()=>hd,judgeReviewerVerdicts:()=>Xn,launchJobs:()=>Pe,launchJobsRelations:()=>Dd,limitObservations:()=>qr,memories:()=>w,memoriesRelations:()=>vd,memoryExperiments:()=>Kn,modelPricing:()=>Sr,notificationPreferences:()=>un,notifications:()=>Co,orgInvitations:()=>P,orgInvitationsRelations:()=>fd,organizations:()=>l,organizationsRelations:()=>_d,packInstructions:()=>Y,packInstructionsRelations:()=>Sd,packs:()=>j,packsRelations:()=>Ed,pendingTreatmentExposures:()=>An,performanceStudies:()=>te,performanceStudiesRelations:()=>Ld,performanceStudyCalls:()=>_e,performanceStudyCallsRelations:()=>Ud,planLimitsActive:()=>Lr,profiles:()=>o,profilesRelations:()=>cd,projectCheckouts:()=>hn,projectInstructions:()=>F,projectInstructionsRelations:()=>wd,projects:()=>s,projectsRelations:()=>yd,providerDocsSnapshots:()=>Or,recommendationApplications:()=>er,scaffoldingFingerprints:()=>Qr,scaffoldingSegments:()=>Wr,sessionCaptureHeads:()=>ar,sessionEvents:()=>Ie,sessionEventsRelations:()=>jd,sessionInstructions:()=>$,sessionInstructionsRelations:()=>zd,sessionSendJobs:()=>On,sessionTerminalTargets:()=>wt,sessions:()=>a,sessionsRelations:()=>Td,skillSubmissions:()=>yr,snapshotDeltaObjects:()=>lr,teams:()=>v,teamsRelations:()=>md,treatmentAssignments:()=>C,treatmentAssignmentsRelations:()=>Rd,treatmentExposures:()=>q,treatmentExposuresRelations:()=>kd,userOrganizations:()=>Ne,userOrganizationsRelations:()=>Nd,userTeams:()=>xe,userTeamsRelations:()=>xd,vendorGuidanceSnapshots:()=>Yo,weeklyDigestDeliveries:()=>Fr,weeklyDigestRuns:()=>$r,workerConnections:()=>Bn});import{relations as i}from"drizzle-orm";var cd=i(o,({many:e})=>({sessions:e(a),contextSnapshots:e(X),apiKeys:e(Ee)})),pd=i(Ee,({one:e})=>({profile:e(o,{fields:[Ee.userId],references:[o.id]})})),_d=i(l,({many:e})=>({teams:e(v),userOrganizations:e(Ne),projects:e(s),invitations:e(P)})),md=i(v,({one:e,many:t})=>({organization:e(l,{fields:[v.orgId],references:[l.id]}),userTeams:t(xe),invitations:t(P)})),fd=i(P,({one:e})=>({organization:e(l,{fields:[P.orgId],references:[l.id]}),team:e(v,{fields:[P.teamId],references:[v.id]}),inviter:e(o,{fields:[P.invitedBy],references:[o.id]})})),Nd=i(Ne,({one:e})=>({organization:e(l,{fields:[Ne.orgId],references:[l.id]})})),xd=i(xe,({one:e})=>({team:e(v,{fields:[xe.teamId],references:[v.id]})})),hd=i(n,({one:e,many:t})=>({versions:t(he),projectInstructions:t(F),events:t(ge),usageEvents:t(je),sessionInstructions:t($),packInstructions:t(Y),forkedFrom:e(n,{fields:[n.forkedFromId],references:[n.id]})})),gd=i(ge,({one:e})=>({instruction:e(n,{fields:[ge.instructionId],references:[n.id]})})),vd=i(w,({one:e,many:t})=>({project:e(s,{fields:[w.projectId],references:[s.id]}),parent:e(w,{fields:[w.parentId],references:[w.id]}),versions:t(w)})),Id=i(he,({one:e})=>({instruction:e(n,{fields:[he.instructionId],references:[n.id]})})),yd=i(s,({one:e,many:t})=>({organization:e(l,{fields:[s.orgId],references:[l.id]}),projectInstructions:t(F),sessions:t(a)})),wd=i(F,({one:e})=>({project:e(s,{fields:[F.projectId],references:[s.id]}),instruction:e(n,{fields:[F.instructionId],references:[n.id]})})),Td=i(a,({one:e,many:t})=>({profile:e(o,{fields:[a.userId],references:[o.id]}),project:e(s,{fields:[a.projectId],references:[s.id]}),run:e(h,{fields:[a.runId],references:[h.id]}),events:t(Ie),sessionInstructions:t($),treatmentExposures:t(q),contextSnapshots:t(X)})),Ad=i(h,({one:e,many:t})=>({profile:e(o,{fields:[h.userId],references:[o.id]}),organization:e(l,{fields:[h.orgId],references:[l.id]}),project:e(s,{fields:[h.projectId],references:[s.id]}),sessions:t(a),launchJobs:t(Pe)})),Dd=i(Pe,({one:e})=>({run:e(h,{fields:[Pe.runId],references:[h.id]})})),jd=i(Ie,({one:e})=>({session:e(a,{fields:[Ie.sessionId],references:[a.id]})})),zd=i($,({one:e})=>({session:e(a,{fields:[$.sessionId],references:[a.id]}),instruction:e(n,{fields:[$.instructionId],references:[n.id]})})),Rd=i(C,({one:e,many:t})=>({owner:e(o,{fields:[C.userId],references:[o.id]}),project:e(s,{fields:[C.projectId],references:[s.id]}),exposures:t(q)})),kd=i(q,({one:e})=>({session:e(a,{fields:[q.sessionId],references:[a.id]}),owner:e(o,{fields:[q.userId],references:[o.id]}),assignment:e(C,{fields:[q.assignmentId],references:[C.id]})})),Ed=i(j,({one:e,many:t})=>({packInstructions:t(Y),forkedFrom:e(j,{fields:[j.forkedFromId],references:[j.id]})})),Sd=i(Y,({one:e})=>({pack:e(j,{fields:[Y.packId],references:[j.id]}),instruction:e(n,{fields:[Y.instructionId],references:[n.id]})})),bd=i(je,({one:e})=>({instruction:e(n,{fields:[je.instructionId],references:[n.id]})})),Pd=i(r,({one:e,many:t})=>({parent:e(r,{fields:[r.parentId],references:[r.id]}),evals:t(M),evalRuns:t(E),benchmarks:t(ze),evalJobs:t(b),evalConversations:t(Se)})),Kd=i(M,({one:e,many:t})=>({evalTarget:e(r,{fields:[M.evalTargetId],references:[r.id]}),runs:t(E)})),Cd=i(E,({one:e})=>({eval:e(M,{fields:[E.evalId],references:[M.id]}),evalTarget:e(r,{fields:[E.evalTargetId],references:[r.id]})})),qd=i(ze,({one:e})=>({evalTarget:e(r,{fields:[ze.evalTargetId],references:[r.id]})})),Od=i(b,({one:e})=>({evalTarget:e(r,{fields:[b.evalTargetId],references:[r.id]})})),Md=i(Se,({one:e})=>({evalTarget:e(r,{fields:[Se.evalTargetId],references:[r.id]})})),Hd=i(X,({one:e})=>({session:e(a,{fields:[X.sessionId],references:[a.id]}),profile:e(o,{fields:[X.userId],references:[o.id]})})),Ld=i(te,({one:e,many:t})=>({target:e(r,{fields:[te.evalTargetId],references:[r.id]}),calls:t(_e)})),Ud=i(_e,({one:e})=>({study:e(te,{fields:[_e.studyId],references:[te.id]}),job:e(b,{fields:[_e.jobId],references:[b.id]})}));var at=0,os=0,dt=0,ns=0;var Bd=0;function Xo(){at++,at>os&&(os=at)}m(Xo,"trackDbOpStart");function Zo(){at>0&&at--}m(Zo,"trackDbOpEnd");function en(){dt++,dt>ns&&(ns=dt)}m(en,"trackHeavyDbOpStart");function tn(){dt>0&&dt--}m(tn,"trackHeavyDbOpEnd");function rs(){Bd++}m(rs,"recordQueryDeadline");var Gt,Ft,on=!1,Bt;var ss,$t,Vt;function ds(e){let t=process.env[e];if(!t)throw new Error(`Missing required env var: ${e}`);return t}m(ds,"getEnv");function us(){if(on)throw new Error("getDb() called after closeDb(): the connection pool is closed for shutdown. Stop issuing queries (timers/requests) before draining the pool.");if(!Gt){let e=process.env.PG_APPLICATION_NAME||"rulemetric",t=Number(process.env.PG_POOL_MAX)||3,d=Number(process.env.PG_CONNECT_TIMEOUT_S)||10,u=Number(process.env.PG_STATEMENT_TIMEOUT_MS)||0,_=Number(process.env.PG_IDLE_TIMEOUT)||5,x=Number(process.env.PG_KEEP_ALIVE_S)||60;Ft=as(ds("DATABASE_URL"),{prepare:!1,max:t,connect_timeout:d,idle_timeout:_,keep_alive:x,max_lifetime:300,connection:{application_name:e,...u>0?{statement_timeout:u}:{}}}),Gt=is(Ft,{schema:Ut})}return Gt}m(us,"getDb");function ls(){if(on)throw new Error("getHeavyDb() called after closeDb(): the connection pool is closed for shutdown. Stop issuing queries (timers/requests) before draining the pool.");if(!Vt){let e=(process.env.PG_APPLICATION_NAME||"rulemetric")+":heavy",t=Number(process.env.PG_HEAVY_POOL_MAX)||2;$t=as(ds("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}}),Vt=is($t,{schema:Ut})}return Vt}m(ls,"getHeavyDb");async function Gd(){if(Bt)return Bt;on=!0;let e=Ft,t=ss,d=$t;return Ft=void 0,Gt=void 0,ss=void 0,$t=void 0,Vt=void 0,Bt=Promise.allSettled([e?e.end({timeout:5}):Promise.resolve(),t?t.end({timeout:5}):Promise.resolve(),d?d.end({timeout:5}):Promise.resolve()]).then(()=>{}),Bt}m(Gd,"closeDb");var Vd=new Set(["CONNECT_TIMEOUT","ETIMEDOUT","ENOTFOUND","ECONNREFUSED","EAI_AGAIN"]);function cs(e){let t=e,d=t?.code??t?.cause?.code??t?.errno;return d!==void 0&&Vd.has(d)}m(cs,"isRetryableConnectError");var Fd=new Set(["CONNECTION_CLOSED","ECONNRESET","EPIPE"]);function ps(e){let t=e,d=t?.code??t?.cause?.code??t?.errno;return d!==void 0&&Fd.has(d)}m(ps,"isRetryableResetError");async function _s(e,t={}){let d=t.attempts??3,u=t.baseMs??100,_;for(let x=0;x<d;x++)try{return await e()}catch(A){_=A;let B=cs(A)||t.retryResets===!0&&ps(A);if(x===d-1||!B)throw A;await new Promise(oe=>setTimeout(oe,u*2**x))}throw _}m(_s,"withDbRetry");var Jt=class extends Error{static{m(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 ms(){let e=Number(process.env.PG_QUERY_DEADLINE_MS);return Number.isFinite(e)&&e>=0?e:2e4}m(ms,"queryDeadlineMs");function fs(){let e=Number(process.env.PG_HEAVY_QUERY_DEADLINE_MS);return Number.isFinite(e)&&e>=0?e:6e4}m(fs,"heavyQueryDeadlineMs");function $d(e,t,d=!0){let u,_=new Promise((x,A)=>{u=setTimeout(()=>{d&&rs(),A(new Jt(t))},t);let B=u;typeof B.unref=="function"&&B.unref()});return Promise.race([e,_]).finally(()=>clearTimeout(u))}m($d,"raceWithDeadline");var Ns=new Set(["select","selectDistinct","selectDistinctOn","insert","update","delete","execute","with","$count","refreshMaterializedView"]),xs=new Set(["select","selectDistinct","selectDistinctOn","$count"]);function nn(e,t=!1,d=0,u=!1){return e===null||typeof e!="object"&&typeof e!="function"?e:new Proxy(e,{get(_,x,A){if(x==="then"){let oe=Reflect.get(_,x,A);return typeof oe!="function"?oe:(vs,Is)=>{let ys=u?en:Xo,ws=u?tn:Zo;ys();let rn=_s(()=>new Promise((Ts,As)=>oe.call(_,Ts,As)),{retryResets:t});return(d>0?$d(rn,d,!u):rn).finally(ws).then(vs,Is)}}let B=Reflect.get(_,x,A);return typeof B=="function"?(...oe)=>nn(B.apply(_,oe),t,d,u):B}})}m(nn,"wrapBuilder");function hs(e,t=!1){let d=t?en:Xo,u=t?tn:Zo;d();try{return Promise.resolve(e()).finally(u)}catch(_){throw u(),_}}m(hs,"gaugeTransaction");var gs=new Proxy({},{get(e,t){let d=us(),u=d[t];if(typeof t=="string"&&Ns.has(t)&&typeof u=="function"){let _=xs.has(t),x=ms();return(...A)=>nn(u.apply(d,A),_,x)}return t==="transaction"&&typeof u=="function"?(..._)=>hs(()=>u.apply(d,_)):u}}),Jd=new Proxy({},{get(e,t){let d=ls(),u=d[t];if(typeof t=="string"&&Ns.has(t)&&typeof u=="function"){let _=xs.has(t);return(...x)=>nn(u.apply(d,x),_,fs(),!0)}return t==="transaction"&&typeof u=="function"?(..._)=>hs(()=>u.apply(d,_),!0):u}});export{an as a,us as b,Gd as c};