@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
@@ -1,2 +1,2 @@
1
- import{c as f}from"./chunk-ISFPPDDB.js";import{a as l}from"./chunk-5RBLIVBF.js";import{b as g,e as k}from"./chunk-GIXHG5FK.js";import{a as m}from"./chunk-ZLLER3HP.js";async function C(w,i={}){let R=i.removeWorktreeFn??f,t=i.log??(e=>process.stderr.write(`[process_run_cleanup] ${e}
1
+ import{c as f}from"./chunk-D5XLTSRV.js";import{a as l}from"./chunk-5RBLIVBF.js";import{b as g,e as k}from"./chunk-GIXHG5FK.js";import{a as m}from"./chunk-ZLLER3HP.js";async function C(w,i={}){let R=i.removeWorktreeFn??f,t=i.log??(e=>process.stderr.write(`[process_run_cleanup] ${e}
2
2
  `)),j=i.getRunDetail??(async e=>{try{return await k(`/api/runs/${e}`)}catch(r){if(r instanceof g&&r.statusCode===404)return null;throw r}}),{runId:o}=w,n=await j(o);if(!n)throw new l(`Run ${o} not found`);if(!n.run.projectPath)throw new l(`Run ${o} has no projectPath; cannot resolve a repo root for worktree cleanup`);let a=n.run.projectPath,$=n.sessions.filter(e=>e.endedAt!=null),s=[],u=0,c=0,p=0,d=0,h=new Set;for(let e of $)if(!(!e.projectPath||e.projectPath===a)&&!h.has(e.projectPath)){h.add(e.projectPath);try{let r=await R({repoRoot:a,worktreePath:e.projectPath});r.removed?(u++,s.push({sessionId:e.id,worktreePath:e.projectPath,status:"removed"}),t(`removed worktree ${e.projectPath} (session ${e.id})`)):r.reason==="dirty"?(c++,s.push({sessionId:e.id,worktreePath:e.projectPath,status:"skipped-dirty"}),t(`skipped dirty worktree ${e.projectPath} (session ${e.id}) \u2014 uncommitted changes`)):(p++,s.push({sessionId:e.id,worktreePath:e.projectPath,status:"absent"}),t(`worktree absent ${e.projectPath} (session ${e.id})`))}catch(r){let P=r instanceof Error?r.message:String(r);d++,s.push({sessionId:e.id,worktreePath:e.projectPath,status:"error",error:P.slice(0,1e3)}),t(`error removing worktree ${e.projectPath} (session ${e.id}): ${P}`)}}return t(`run ${o} cleanup: removed=${u} skippedDirty=${c} absent=${p} errored=${d}`),{runId:o,repoRoot:a,removed:u,skippedDirty:c,absent:p,errored:d,worktrees:s}}m(C,"processRunCleanup");export{C as a};
@@ -1 +1 @@
1
- import{b as u,c as d}from"./chunk-EJY5GK6A.js";import{b as g}from"./chunk-HXOQUYG3.js";import{e as m,f as p,h as l}from"./chunk-GIXHG5FK.js";import{a as s}from"./chunk-ZLLER3HP.js";async function x(f,R){let r=s(e=>R?.logger?.info?.(e)??console.log(e),"log"),{evalTargetId:n}=f,i=`[cron_refine_cases] ${n}`,t=await m(`/api/eval-targets/${n}`);if(!(t.metadata?.autoRefineCases===!0))return r(`${i} not opted in (metadata.autoRefineCases)`),{skipped:"not-opted-in",reason:`"${t.name}" has not opted into automatic case refinement. Set metadata.autoRefineCases=true to let the loop cull cases that carry no treatment signal, or run \`rulemetric evals refine-cases ${n}\` by hand.`,targetName:t.name};let C=await m(`/api/eval-targets/${n}/judge-calibration`),a=u(C.caseDiscrimination);if(a.refused)return r(`${i} ${a.refused}: ${a.summary}`),{skipped:a.refused,reason:a.summary,targetName:t.name};r(`${i} ${a.summary}`);let o=await d(a,{generate:s(e=>g({content:t.content,name:t.name,feedback:e}),"generate"),createCase:s(e=>p(`/api/eval-targets/${n}/evals`,{name:e.name,prompt:e.prompt,expectations:e.expectations}),"createCase"),retireCase:s(async(e,y)=>{await l(`/api/eval-targets/${n}/evals/${e}`,{retire:!0,retiredReason:y})},"retireCase"),log:r});r(`${i} ${o.summary}`);let{skipped:c,...$}=o;return{...$,targetName:t.name,...c?{skipped:c,reason:o.summary}:{}}}s(x,"cronRefineCases");export{x as a};
1
+ import{b as u,c as d}from"./chunk-EE4TZAZI.js";import{b as g}from"./chunk-HXOQUYG3.js";import{e as m,f as p,h as l}from"./chunk-GIXHG5FK.js";import{a as s}from"./chunk-ZLLER3HP.js";async function x(f,R){let r=s(e=>R?.logger?.info?.(e)??console.log(e),"log"),{evalTargetId:n}=f,i=`[cron_refine_cases] ${n}`,t=await m(`/api/eval-targets/${n}`);if(!(t.metadata?.autoRefineCases===!0))return r(`${i} not opted in (metadata.autoRefineCases)`),{skipped:"not-opted-in",reason:`"${t.name}" has not opted into automatic case refinement. Set metadata.autoRefineCases=true to let the loop cull cases that carry no treatment signal, or run \`rulemetric evals refine-cases ${n}\` by hand.`,targetName:t.name};let C=await m(`/api/eval-targets/${n}/judge-calibration`),a=u(C.caseDiscrimination);if(a.refused)return r(`${i} ${a.refused}: ${a.summary}`),{skipped:a.refused,reason:a.summary,targetName:t.name};r(`${i} ${a.summary}`);let o=await d(a,{generate:s(e=>g({content:t.content,name:t.name,feedback:e}),"generate"),createCase:s(e=>p(`/api/eval-targets/${n}/evals`,{name:e.name,prompt:e.prompt,expectations:e.expectations}),"createCase"),retireCase:s(async(e,y)=>{await l(`/api/eval-targets/${n}/evals/${e}`,{retire:!0,retiredReason:y})},"retireCase"),log:r});r(`${i} ${o.summary}`);let{skipped:c,...$}=o;return{...$,targetName:t.name,...c?{skipped:c,reason:o.summary}:{}}}s(x,"cronRefineCases");export{x as a};
@@ -1,2 +1,2 @@
1
- import{c as E,n as m}from"./chunk-T75KAEJO.js";import{a as d}from"./chunk-GIXHG5FK.js";import{a as c}from"./chunk-ZLLER3HP.js";import*as p from"node:fs";import*as u from"node:path";import*as _ from"node:os";function T(){if(process.env.RULEMETRIC_API_KEY||process.env.RULEMETRIC_ACCESS_TOKEN)return;let s=u.join(_.homedir(),".config","rulemetric","env");C(s)||C(u.join(process.cwd(),".env.local"))}c(T,"ensureEnv");function C(s){try{let t=p.readFileSync(s,"utf-8");for(let n of t.split(`
1
+ import{c as E,n as m}from"./chunk-GJHFIQVO.js";import{a as d}from"./chunk-GIXHG5FK.js";import{a as c}from"./chunk-ZLLER3HP.js";import*as p from"node:fs";import*as u from"node:path";import*as _ from"node:os";function T(){if(process.env.RULEMETRIC_API_KEY||process.env.RULEMETRIC_ACCESS_TOKEN)return;let s=u.join(_.homedir(),".config","rulemetric","env");C(s)||C(u.join(process.cwd(),".env.local"))}c(T,"ensureEnv");function C(s){try{let t=p.readFileSync(s,"utf-8");for(let n of t.split(`
2
2
  `)){let e=n.trim();if(!e||e.startsWith("#"))continue;let o=e.indexOf("=");if(o<0)continue;let r=e.slice(0,o).trim(),i=e.slice(o+1).trim();process.env[r]||(process.env[r]=i)}return!!(process.env.RULEMETRIC_API_KEY||process.env.RULEMETRIC_ACCESS_TOKEN)}catch{return!1}}c(C,"loadEnvFile");T();async function I(s){let t={totalSessions:0,totalCalls:0,totalInputTokens:0,totalOutputTokens:0,totalCacheReadTokens:0,totalCacheWriteTokens:0,totalCostUSD:0,providers:{}},n=await m(s);t.providers={};for(let a of n)t.providers[a.provider]=(t.providers[a.provider]||0)+1;let e=new E,o=n.filter(a=>a.provider==="claude");for(let a of o)try{let h=p.readdirSync(a.path).filter(f=>f.endsWith(".jsonl"));t.totalSessions+=h.length;for(let f of h){let v=p.readFileSync(u.join(a.path,f),"utf-8"),R=e.parse(v);for(let l of R.events)l.tokenUsage&&(t.totalCalls++,t.totalInputTokens+=l.tokenUsage.input,t.totalOutputTokens+=l.tokenUsage.output,t.totalCacheReadTokens+=l.tokenUsage.cacheRead??0,t.totalCacheWriteTokens+=l.tokenUsage.cacheWrite??0)}}catch{}let r=15,i=75;return t.totalCostUSD=Math.round((t.totalInputTokens/1e6*r+t.totalOutputTokens/1e6*i+t.totalCacheReadTokens/1e6*(r*.1)+t.totalCacheWriteTokens/1e6*(r*1.25))*100)/100,t}c(I,"loadLocalStats");async function U(s){let t=process.env.RULEMETRIC_API_URL??d,n=process.env.RULEMETRIC_API_KEY,e=process.env.RULEMETRIC_ACCESS_TOKEN,o=n??e;if(!o)return null;let r=new URLSearchParams;s&&r.set("projectPath",s);try{let i=await fetch(`${t}/api/insights/compute?${r}`,{headers:{Authorization:`Bearer ${o}`},signal:AbortSignal.timeout(5e3)});return i.ok?await i.json():null}catch{return null}}c(U,"loadApiInsights");async function g(s){let t=process.env.RULEMETRIC_API_URL??d,n=process.env.RULEMETRIC_API_KEY??process.env.RULEMETRIC_ACCESS_TOKEN;if(!n)return null;let e=new URLSearchParams;s&&e.set("projectPath",s);try{let o=await fetch(`${t}/api/insights/linked-instructions?${e}`,{headers:{Authorization:`Bearer ${n}`},signal:AbortSignal.timeout(5e3)});return o.ok?await o.json():null}catch{return null}}c(g,"loadLinkedInstructions");export{I as a,U as b,g as c};
@@ -1 +1 @@
1
- import{b as $}from"./chunk-HT6R6KR3.js";import{e as w,f as k}from"./chunk-GIXHG5FK.js";import{a as u}from"./chunk-ZLLER3HP.js";function h(e){if(e.length===0)return{mean:0,stddev:0,min:0,max:0};let n=e.reduce((s,a)=>s+a,0)/e.length,o=e.reduce((s,a)=>s+(a-n)**2,0)/e.length;return{mean:Math.round(n*1e3)/1e3,stddev:Math.round(Math.sqrt(o)*1e3)/1e3,min:Math.min(...e),max:Math.max(...e)}}u(h,"computeStats");var x="with_target",E="without_target";function _(e){let n=e.grading.summary?.pass_rate;return typeof n=="number"&&n>=1}u(_,"fullPass");function b(e){return e.grading.summary?.pass_rate!=null}u(b,"hasGrading");function R(e){let n=e.timing.total_tokens;return typeof n=="number"&&n>0?n:void 0}u(R,"tokensOf");function v(e){let n=e.timing.duration_ms;return typeof n=="number"&&!isNaN(n)?n/1e3:void 0}u(v,"secondsOf");function y(e,n){let o={};for(let s of e)(o[n(s)]??=[]).push(s);return o}u(y,"groupBy");function C(e,n){let o=y(e.filter(b),i=>i.evalId),s=y(n.filter(b),i=>i.evalId),a=u((i,l)=>i.runNumber-l.runNumber,"byRun"),t=[];for(let i of Object.keys(o)){let l=o[i].sort(a),d=(s[i]??[]).sort(a);for(let r=0;r<Math.min(l.length,d.length);r++){let c={withScore:_(l[r])?1:0,withoutScore:_(d[r])?1:0},f=R(l[r]),g=R(d[r]);f!=null&&g!=null&&(c.withCost=f,c.withoutCost=g);let p=v(l[r]),m=v(d[r]);p!=null&&m!=null&&(c.withLatency=p,c.withoutLatency=m),t.push(c)}}return t}u(C,"pairRunsByEval");function T(e){let n=e.filter(r=>r.status==="completed");if(n.length===0)return{runSummary:{},verdict:null,notes:["No completed runs found"],totalRuns:0};let o=y(n,r=>r.configuration),s={},a=[];for(let[r,c]of Object.entries(o)){let f=c.filter(b).map(m=>m.grading.summary.pass_rate),g=c.map(v).filter(m=>m!=null),p=c.map(R).filter(m=>m!=null);s[r]={},f.length>0&&(s[r].pass_rate=h(f)),g.length>0&&(s[r].time_seconds=h(g)),p.length>0&&(s[r].tokens=h(p))}let t=null,i=o[x]??[],l=o[E]??[],d=C(i,l);if(d.length>0){if(t=$(d),!t.sufficient)a.push(t.insufficientReason??"Insufficient data for a significance verdict.");else if(t.significant){let r=t.delta>=0?"improves":"reduces",c=t.pValue!=null?`, McNemar p=${t.pValue.toFixed(4)}`:"";a.push(`Target ${r} the pass rate by ${Math.abs(t.delta*100).toFixed(0)}% (95% CI ${(t.ci.lower*100).toFixed(0)}\u2013${(t.ci.upper*100).toFixed(0)}%, n=${t.nWith}${c}).`)}else a.push(`No significant effect on pass rate (95% CI ${(t.ci.lower*100).toFixed(0)}\u2013${(t.ci.upper*100).toFixed(0)}%, n=${t.nWith}).`);t.costDelta!=null&&Math.round(t.costDelta)!==0&&a.push(`Token cost delta: ${t.costDelta>=0?"+":""}${Math.round(t.costDelta)} tokens/task.`),t.latencyDelta!=null&&Math.abs(t.latencyDelta)>1&&a.push(`Target ${t.latencyDelta>0?"adds":"saves"} ${Math.abs(t.latencyDelta).toFixed(1)}s/task.`)}for(let r of Object.values(s))if(r.pass_rate&&r.pass_rate.stddev>.2){a.push(`High pass-rate variance (stddev=${r.pass_rate.stddev.toFixed(2)}) \u2014 results may be unreliable.`);break}return{runSummary:s,verdict:t,notes:a,totalRuns:n.length}}u(T,"summarizeRuns");async function S(e,n){let o=n?`&iteration=${n}`:"",s=100,a=[];for(let t=0;t<1e5;t+=s){let i=await w(`/api/eval-targets/${e}/runs?limit=${s}&offset=${t}&activeCasesOnly=1${o}`);if(a.push(...i),i.length<s)break}return T(a)}u(S,"aggregateBenchmark");async function B(e,n,o){return k(`/api/eval-targets/${e}/benchmarks`,{iteration:n,runSummary:o.runSummary,notes:o.notes})}u(B,"postBenchmark");export{T as a,S as b,B as c};
1
+ import{b as $}from"./chunk-KFNFLMUR.js";import{e as w,f as k}from"./chunk-GIXHG5FK.js";import{a as u}from"./chunk-ZLLER3HP.js";function h(e){if(e.length===0)return{mean:0,stddev:0,min:0,max:0};let n=e.reduce((s,a)=>s+a,0)/e.length,o=e.reduce((s,a)=>s+(a-n)**2,0)/e.length;return{mean:Math.round(n*1e3)/1e3,stddev:Math.round(Math.sqrt(o)*1e3)/1e3,min:Math.min(...e),max:Math.max(...e)}}u(h,"computeStats");var x="with_target",E="without_target";function _(e){let n=e.grading.summary?.pass_rate;return typeof n=="number"&&n>=1}u(_,"fullPass");function b(e){return e.grading.summary?.pass_rate!=null}u(b,"hasGrading");function R(e){let n=e.timing.total_tokens;return typeof n=="number"&&n>0?n:void 0}u(R,"tokensOf");function v(e){let n=e.timing.duration_ms;return typeof n=="number"&&!isNaN(n)?n/1e3:void 0}u(v,"secondsOf");function y(e,n){let o={};for(let s of e)(o[n(s)]??=[]).push(s);return o}u(y,"groupBy");function C(e,n){let o=y(e.filter(b),i=>i.evalId),s=y(n.filter(b),i=>i.evalId),a=u((i,l)=>i.runNumber-l.runNumber,"byRun"),t=[];for(let i of Object.keys(o)){let l=o[i].sort(a),d=(s[i]??[]).sort(a);for(let r=0;r<Math.min(l.length,d.length);r++){let c={withScore:_(l[r])?1:0,withoutScore:_(d[r])?1:0},f=R(l[r]),g=R(d[r]);f!=null&&g!=null&&(c.withCost=f,c.withoutCost=g);let p=v(l[r]),m=v(d[r]);p!=null&&m!=null&&(c.withLatency=p,c.withoutLatency=m),t.push(c)}}return t}u(C,"pairRunsByEval");function T(e){let n=e.filter(r=>r.status==="completed");if(n.length===0)return{runSummary:{},verdict:null,notes:["No completed runs found"],totalRuns:0};let o=y(n,r=>r.configuration),s={},a=[];for(let[r,c]of Object.entries(o)){let f=c.filter(b).map(m=>m.grading.summary.pass_rate),g=c.map(v).filter(m=>m!=null),p=c.map(R).filter(m=>m!=null);s[r]={},f.length>0&&(s[r].pass_rate=h(f)),g.length>0&&(s[r].time_seconds=h(g)),p.length>0&&(s[r].tokens=h(p))}let t=null,i=o[x]??[],l=o[E]??[],d=C(i,l);if(d.length>0){if(t=$(d),!t.sufficient)a.push(t.insufficientReason??"Insufficient data for a significance verdict.");else if(t.significant){let r=t.delta>=0?"improves":"reduces",c=t.pValue!=null?`, McNemar p=${t.pValue.toFixed(4)}`:"";a.push(`Target ${r} the pass rate by ${Math.abs(t.delta*100).toFixed(0)}% (95% CI ${(t.ci.lower*100).toFixed(0)}\u2013${(t.ci.upper*100).toFixed(0)}%, n=${t.nWith}${c}).`)}else a.push(`No significant effect on pass rate (95% CI ${(t.ci.lower*100).toFixed(0)}\u2013${(t.ci.upper*100).toFixed(0)}%, n=${t.nWith}).`);t.costDelta!=null&&Math.round(t.costDelta)!==0&&a.push(`Token cost delta: ${t.costDelta>=0?"+":""}${Math.round(t.costDelta)} tokens/task.`),t.latencyDelta!=null&&Math.abs(t.latencyDelta)>1&&a.push(`Target ${t.latencyDelta>0?"adds":"saves"} ${Math.abs(t.latencyDelta).toFixed(1)}s/task.`)}for(let r of Object.values(s))if(r.pass_rate&&r.pass_rate.stddev>.2){a.push(`High pass-rate variance (stddev=${r.pass_rate.stddev.toFixed(2)}) \u2014 results may be unreliable.`);break}return{runSummary:s,verdict:t,notes:a,totalRuns:n.length}}u(T,"summarizeRuns");async function S(e,n){let o=n?`&iteration=${n}`:"",s=100,a=[];for(let t=0;t<1e5;t+=s){let i=await w(`/api/eval-targets/${e}/runs?limit=${s}&offset=${t}&activeCasesOnly=1${o}`);if(a.push(...i),i.length<s)break}return T(a)}u(S,"aggregateBenchmark");async function B(e,n,o){return k(`/api/eval-targets/${e}/benchmarks`,{iteration:n,runSummary:o.runSummary,notes:o.notes})}u(B,"postBenchmark");export{T as a,S as b,B as c};
@@ -1 +1 @@
1
- import{b as l}from"./chunk-HT6R6KR3.js";import{a as r}from"./chunk-ZLLER3HP.js";var u=r(n=>{let t=n.grading.summary?.pass_rate;return typeof t=="number"?t:null},"passRateOf"),a=r(n=>(u(n)??0)>=1,"fullPass");function f(n,t){let i=new Map(n.filter(e=>u(e)!=null).map(e=>[e.evalName,e])),o=[];for(let e of t){if(u(e)==null)continue;let s=i.get(e.evalName);s&&o.push({withScore:a(e)?1:0,withoutScore:a(s)?1:0})}return o}r(f,"pairVersionResults");function d(n,t){let i=f(n,t);return i.length===0?null:l(i,{baseline:"prior-version"})}r(d,"buildVersionVerdict");function m(n,t,i){let o=`v${i} vs v${t}`;if(!n.sufficient)return`${o}: ${n.insufficientReason??"insufficient data"} \u2014 no effect claimed`;let e=n.delta>=0?"+":"",s=`95% CI ${(n.ci.lower*100).toFixed(0)}\u2013${(n.ci.upper*100).toFixed(0)}%`,c=n.significant?"significant":"not significant";return`${o}: ${e}${(n.delta*100).toFixed(0)}% pass rate (${s}, n=${n.nWith} paired, ${c})`}r(m,"formatVersionVerdict");export{f as a,d as b,m as c};
1
+ import{b as l}from"./chunk-KFNFLMUR.js";import{a as r}from"./chunk-ZLLER3HP.js";var u=r(n=>{let t=n.grading.summary?.pass_rate;return typeof t=="number"?t:null},"passRateOf"),a=r(n=>(u(n)??0)>=1,"fullPass");function f(n,t){let i=new Map(n.filter(e=>u(e)!=null).map(e=>[e.evalName,e])),o=[];for(let e of t){if(u(e)==null)continue;let s=i.get(e.evalName);s&&o.push({withScore:a(e)?1:0,withoutScore:a(s)?1:0})}return o}r(f,"pairVersionResults");function d(n,t){let i=f(n,t);return i.length===0?null:l(i,{baseline:"prior-version"})}r(d,"buildVersionVerdict");function m(n,t,i){let o=`v${i} vs v${t}`;if(!n.sufficient)return`${o}: ${n.insufficientReason??"insufficient data"} \u2014 no effect claimed`;let e=n.delta>=0?"+":"",s=`95% CI ${(n.ci.lower*100).toFixed(0)}\u2013${(n.ci.upper*100).toFixed(0)}%`,c=n.significant?"significant":"not significant";return`${o}: ${e}${(n.delta*100).toFixed(0)}% pass rate (${s}, n=${n.nWith} paired, ${c})`}r(m,"formatVersionVerdict");export{f as a,d as b,m as c};
@@ -1,2 +1,2 @@
1
- import{x as w}from"./chunk-T75KAEJO.js";import{a as m}from"./chunk-N7ODX6PO.js";import{a as s}from"./chunk-ZLLER3HP.js";import{spawn as g}from"node:child_process";import d from"node:fs";import b from"node:path";function c(e,t){return new Promise((r,n)=>{let o=g("git",e,{cwd:t,stdio:["ignore","pipe","pipe"],env:m()}),i="",f="";o.stdout.on("data",a=>{i+=a.toString()}),o.stderr.on("data",a=>{f+=a.toString()}),o.on("error",a=>n(new Error(`git ${e.join(" ")} failed to spawn: ${a.message}`))),o.on("close",a=>{a===0?r({code:a,stdout:i,stderr:f}):n(new Error(`git ${e.join(" ")} exited ${a}: ${f.trim()||i.trim()}`))})})}s(c,"runGit");async function k(e,t){if(!t||!t.trim())throw new Error('invalid branch name "": branch must be a non-empty git refname');if(t.startsWith("-"))throw new Error(`invalid branch name "${t}": must not start with "-" (git would parse it as an option)`);if(/\s/.test(t))throw new Error(`invalid branch name "${t}": must not contain whitespace`);try{await c(["check-ref-format","--branch",t],e)}catch{throw new Error(`invalid branch name "${t}": not a valid git refname`)}}s(k,"assertValidBranch");function h(e){let t=b.resolve(e);try{return d.realpathSync(t)}catch{return t}}s(h,"canonical");function y(e){let t=[],r=null;for(let n of e.split(`
1
+ import{x as w}from"./chunk-GJHFIQVO.js";import{a as m}from"./chunk-N7ODX6PO.js";import{a as s}from"./chunk-ZLLER3HP.js";import{spawn as g}from"node:child_process";import d from"node:fs";import b from"node:path";function c(e,t){return new Promise((r,n)=>{let o=g("git",e,{cwd:t,stdio:["ignore","pipe","pipe"],env:m()}),i="",f="";o.stdout.on("data",a=>{i+=a.toString()}),o.stderr.on("data",a=>{f+=a.toString()}),o.on("error",a=>n(new Error(`git ${e.join(" ")} failed to spawn: ${a.message}`))),o.on("close",a=>{a===0?r({code:a,stdout:i,stderr:f}):n(new Error(`git ${e.join(" ")} exited ${a}: ${f.trim()||i.trim()}`))})})}s(c,"runGit");async function k(e,t){if(!t||!t.trim())throw new Error('invalid branch name "": branch must be a non-empty git refname');if(t.startsWith("-"))throw new Error(`invalid branch name "${t}": must not start with "-" (git would parse it as an option)`);if(/\s/.test(t))throw new Error(`invalid branch name "${t}": must not contain whitespace`);try{await c(["check-ref-format","--branch",t],e)}catch{throw new Error(`invalid branch name "${t}": not a valid git refname`)}}s(k,"assertValidBranch");function h(e){let t=b.resolve(e);try{return d.realpathSync(t)}catch{return t}}s(h,"canonical");function y(e){let t=[],r=null;for(let n of e.split(`
2
2
  `))n.startsWith("worktree ")?(r&&t.push(r),r={path:n.slice(9).trim()}):n.startsWith("branch ")&&r&&(r.branch=n.slice(7).trim().replace(/^refs\/heads\//,""));return r&&t.push(r),t}s(y,"parseWorktreeList");async function v(e,t){try{return await c(["show-ref","--verify","--quiet",`refs/heads/${t}`],e),!0}catch{return!1}}s(v,"branchExists");async function B(e){let{repoRoot:t,branch:r,baseRef:n,allowExistingBranch:o=!1}=e;await k(t,r);let i=w({repoRoot:t,branch:r,basePath:e.basePath}),f=await c(["worktree","list","--porcelain"],t),a=y(f.stdout),p=a.find(u=>u.branch===r);if(p)return{path:h(p.path),branch:r,created:!1};let l=a.find(u=>h(u.path)===i);if(l)return{path:h(l.path),branch:l.branch??r,created:!1};if(await v(t,r)){if(!o)throw new Error(`branch "${r}" already exists with no worktree; refusing to clobber (pass allowExistingBranch:true to attach a worktree onto it)`);return await c(["worktree","add",i,r],t),{path:h(i),branch:r,created:!0}}return await c(["worktree","add",i,"-b",r,n],t),{path:h(i),branch:r,created:!0}}s(B,"ensureWorktree");async function S(e){let{repoRoot:t,worktreePath:r}=e;if(!d.existsSync(r))return{removed:!1,reason:"absent"};let n=!1;try{n=(await c(["status","--porcelain"],r)).stdout.trim().length>0}catch{n=!1}if(n)return{removed:!1,reason:"dirty"};try{return await c(["worktree","remove",r],t),{removed:!0}}catch(o){let i=o instanceof Error?o.message:String(o);if(/not a working tree|No such file or directory|not a valid path|is not a working tree/i.test(i))return{removed:!1,reason:"absent"};throw o}}s(S,"removeWorktree");export{c as a,B as b,S as c};
@@ -1 +1 @@
1
- import{b as m}from"./chunk-74KE4VOX.js";import{a as g}from"./chunk-ZLLER3HP.js";var p=5;function b(t){let r=g((e,f)=>({retire:[],survivingCases:0,replacementsRequired:!1,refused:e,summary:f}),"none");if(!t||t.cases.length===0&&t.unpairedCases.length===0)return r("no-discrimination-data","No case-discrimination data yet \u2014 the target needs runs in BOTH cohorts before any case can be judged dead.");let c=[...t.cases.filter(e=>!e.discriminating).map(e=>({evalId:e.evalId,name:e.name,feedback:{name:e.name,withPassRate:e.withPassRate,withoutPassRate:e.withoutPassRate,reason:e.note}})),...t.unpairedCases.map(e=>({evalId:e.evalId,name:e.name,feedback:{name:e.name,withPassRate:e.withPassRate??0,withoutPassRate:e.withoutPassRate,reason:"runs in only one cohort (no with-vs-without comparison possible)"}}))];if(c.length===0)return r("all-discriminating","Every case discriminates \u2014 nothing to retire.");let s=new Map(t.cases.map(e=>[e.evalId,e.separation])),o=[...c].sort((e,f)=>(s.get(e.evalId)??-1)-(s.get(f.evalId)??-1)).slice(0,p),u=c.length-o.length,d=t.total+t.unpaired,l=d-o.length,i=l<m,n=`${o.length} of ${d} live case(s) carry no treatment signal`+(u>0?` (${u} more over the ${p}-per-run cap)`:"")+(i?`; retiring them leaves ${l}, below the ${m}-case evolution floor, so replacements must be generated first`:"");return{retire:o,survivingCases:l,replacementsRequired:i,refused:null,summary:n}}g(b,"planCaseRefinement");async function v(t,r){let h=r.log??(()=>{}),c=g((n,e)=>({retired:0,generated:0,skipped:n,summary:e,retiredNames:[],generatedNames:[]}),"empty");if(t.refused)return c(t.refused,t.summary);let s=await r.generate(t.retire.map(n=>n.feedback)),a=[];for(let n of s??[]){let e=await r.createCase(n);a.push(e.name),h(` + ${e.name} (${e.id})`)}let o=t.survivingCases+t.retire.length+a.length,u=Math.max(0,o-m),d=t.retire.slice(0,Math.min(t.retire.length,u)),l=t.retire.length-d.length;if(d.length===0)return{retired:0,generated:a.length,skipped:s===null?"no-llm-backend":"no-replacements-generated",summary:`${t.summary}. `+(s===null?"No local LLM backend available, so nothing was retired":`The generator produced ${a.length} usable replacement(s), not enough to retire anything`)+` \u2014 dropping below the ${m}-case floor would silently disenrol the target from the nightly loop.`,retiredNames:[],generatedNames:a};let i=[];for(let n of d)await r.retireCase(n.evalId,n.feedback.reason),i.push(n.name),h(` retired ${n.name}`);return{retired:i.length,generated:a.length,skipped:null,summary:`Retired ${i.length} non-discriminating case(s), added ${a.length} replacement(s)`+(l>0?`; held ${l} back to stay at the ${m}-case floor (they remain condemned and will be retired once replacements exist)`:"")+". The replacements have no runs yet \u2014 the next autorun batch builds their depth.",retiredNames:i,generatedNames:a}}g(v,"executeCaseRefinement");export{p as a,b,v as c};
1
+ import{b as m}from"./chunk-OAETRNTE.js";import{a as g}from"./chunk-ZLLER3HP.js";var p=5;function b(t){let r=g((e,f)=>({retire:[],survivingCases:0,replacementsRequired:!1,refused:e,summary:f}),"none");if(!t||t.cases.length===0&&t.unpairedCases.length===0)return r("no-discrimination-data","No case-discrimination data yet \u2014 the target needs runs in BOTH cohorts before any case can be judged dead.");let c=[...t.cases.filter(e=>!e.discriminating).map(e=>({evalId:e.evalId,name:e.name,feedback:{name:e.name,withPassRate:e.withPassRate,withoutPassRate:e.withoutPassRate,reason:e.note}})),...t.unpairedCases.map(e=>({evalId:e.evalId,name:e.name,feedback:{name:e.name,withPassRate:e.withPassRate??0,withoutPassRate:e.withoutPassRate,reason:"runs in only one cohort (no with-vs-without comparison possible)"}}))];if(c.length===0)return r("all-discriminating","Every case discriminates \u2014 nothing to retire.");let s=new Map(t.cases.map(e=>[e.evalId,e.separation])),o=[...c].sort((e,f)=>(s.get(e.evalId)??-1)-(s.get(f.evalId)??-1)).slice(0,p),u=c.length-o.length,d=t.total+t.unpaired,l=d-o.length,i=l<m,n=`${o.length} of ${d} live case(s) carry no treatment signal`+(u>0?` (${u} more over the ${p}-per-run cap)`:"")+(i?`; retiring them leaves ${l}, below the ${m}-case evolution floor, so replacements must be generated first`:"");return{retire:o,survivingCases:l,replacementsRequired:i,refused:null,summary:n}}g(b,"planCaseRefinement");async function v(t,r){let h=r.log??(()=>{}),c=g((n,e)=>({retired:0,generated:0,skipped:n,summary:e,retiredNames:[],generatedNames:[]}),"empty");if(t.refused)return c(t.refused,t.summary);let s=await r.generate(t.retire.map(n=>n.feedback)),a=[];for(let n of s??[]){let e=await r.createCase(n);a.push(e.name),h(` + ${e.name} (${e.id})`)}let o=t.survivingCases+t.retire.length+a.length,u=Math.max(0,o-m),d=t.retire.slice(0,Math.min(t.retire.length,u)),l=t.retire.length-d.length;if(d.length===0)return{retired:0,generated:a.length,skipped:s===null?"no-llm-backend":"no-replacements-generated",summary:`${t.summary}. `+(s===null?"No local LLM backend available, so nothing was retired":`The generator produced ${a.length} usable replacement(s), not enough to retire anything`)+` \u2014 dropping below the ${m}-case floor would silently disenrol the target from the nightly loop.`,retiredNames:[],generatedNames:a};let i=[];for(let n of d)await r.retireCase(n.evalId,n.feedback.reason),i.push(n.name),h(` retired ${n.name}`);return{retired:i.length,generated:a.length,skipped:null,summary:`Retired ${i.length} non-discriminating case(s), added ${a.length} replacement(s)`+(l>0?`; held ${l} back to stay at the ${m}-case floor (they remain condemned and will be retired once replacements exist)`:"")+". The replacements have no runs yet \u2014 the next autorun batch builds their depth.",retiredNames:i,generatedNames:a}}g(v,"executeCaseRefinement");export{p as a,b,v as c};
@@ -0,0 +1,28 @@
1
+ import{a as l,b as Lt}from"./chunk-ZLLER3HP.js";var Xe=["claude_code","cursor","vscode_copilot","copilot_agent","rulemetric_mcp","codex","pi","opencode","antigravity"],Ye=["user_message","assistant_message","assistant_response","tool_call","tool_result","thinking","error"];var Jt=new Set(["","unknown","<synthetic>"]);function Gt(e){if(typeof e!="string")return null;let t=e.trim();return Jt.has(t)?null:t}l(Gt,"resolveEventModel");var C=class{static{l(this,"ClaudeCodeAdapter")}tool="claude_code";parse(t){let n=t.split(`
2
+ `).filter(c=>c.trim()),o=[];for(let c of n)try{o.push(JSON.parse(c))}catch{}let s=o.filter(c=>c.type==="user"||c.type==="assistant"),r=null,i=null,u={},a=o.find(c=>c.type==="user");a&&(r=a.cwd??null,i=a.gitBranch??null,a.version&&(u.claudeCodeVersion=a.version),a.sessionId&&(u.sessionId=a.sessionId));let p=o.find(c=>c.type==="assistant");p?.message?.model&&(u.model=p.message.model);let m=[],f=0;for(let c of s){let y=c.timestamp??new Date().toISOString();if(c.type==="user"){let h=c.message?.content;if(typeof h=="string")m.push({sequence:f++,eventType:"user_message",content:h,toolName:null,toolInput:null,toolOutput:null,tokenUsage:null,timestamp:y,metadata:{}});else if(Array.isArray(h))for(let _ of h)_.type==="tool_result"&&m.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(c.type==="assistant"){let h=Array.isArray(c.message?.content)?c.message.content:[],_=c.message?.usage,I=_?{input:_.input_tokens??0,output:_.output_tokens??0,cacheRead:_.cache_read_input_tokens??0,cacheWrite:_.cache_creation_input_tokens??0}:null,T={};c.message?.model&&(T.model=c.message.model);let x=Gt(c.message?.model);c.message?.stop_reason&&(T.stopReason=c.message.stop_reason),c.requestId&&(T.requestId=c.requestId),_?.service_tier&&(T.serviceTier=_.service_tier),_?.speed&&(T.speed=_.speed),_?.cache_creation&&(T.cacheCreationDetail=_.cache_creation),_?.server_tool_use&&(T.serverToolUse=_.server_tool_use);for(let S of h)S.type==="text"?m.push({sequence:f++,eventType:"assistant_message",content:S.text??"",toolName:null,toolInput:null,toolOutput:null,tokenUsage:I,model:x,timestamp:y,metadata:T}):S.type==="thinking"?m.push({sequence:f++,eventType:"thinking",content:S.thinking??"",toolName:null,toolInput:null,toolOutput:null,tokenUsage:I,model:x,timestamp:y,metadata:T}):S.type==="tool_use"&&m.push({sequence:f++,eventType:"tool_call",content:null,toolName:S.name??"unknown",toolInput:S.input??null,toolOutput:null,tokenUsage:I,model:x,timestamp:y,metadata:{...T,toolUseId:S.id}})}}let d=m.map(c=>c.timestamp).sort(),g=new Date().toISOString();return{tool:"claude_code",projectPath:r,gitBranch:i,startedAt:d[0]??g,endedAt:d[d.length-1]??null,events:m,metadata:u}}};var A=class{static{l(this,"CursorAdapter")}tool="cursor";parse(t){let n=Lt("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((p,m)=>{let f=p.createdAt?new Date(p.createdAt).getTime():0;return(m.createdAt?new Date(m.createdAt).getTime():0)-f})[0],r=s.conversation??[],i=[];for(let p=0;p<r.length;p++){let m=r[p],f=m.createdAt??new Date().toISOString();i.push({sequence:p,eventType:m.type===1?"user_message":"assistant_message",content:m.text,toolName:null,toolInput:null,toolOutput:null,tokenUsage:null,timestamp:f,metadata:{}})}let u=i.map(p=>p.timestamp).sort(),a=new Date().toISOString();return{tool:"cursor",projectPath:null,gitBranch:null,startedAt:u[0]??a,endedAt:u[u.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 N=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 p=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:p,metadata:{}}),a.response){let m=a.response.timestamp?new Date(a.response.timestamp).toISOString():p;s.push({sequence:r++,eventType:"assistant_message",content:a.response.message,toolName:null,toolInput:null,toolOutput:null,tokenUsage:null,timestamp:m,metadata:{}})}}let i=s.map(a=>a.timestamp).sort(),u=new Date().toISOString();return{tool:"vscode_copilot",projectPath:null,gitBranch:null,startedAt:i[0]??u,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 P=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 p=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:p,metadata:{}}),a.toolCalls)for(let m of a.toolCalls){let f=m.timestamp?new Date(m.timestamp).toISOString():p;s.push({sequence:r++,eventType:"tool_call",content:null,toolName:m.name??"unknown",toolInput:m.input??null,toolOutput:m.output??null,tokenUsage:null,timestamp:f,metadata:{}})}if(a.response){let m=a.response.timestamp?new Date(a.response.timestamp).toISOString():p;s.push({sequence:r++,eventType:"assistant_message",content:a.response.message,toolName:null,toolInput:null,toolOutput:null,tokenUsage:null,timestamp:m,metadata:{}})}}let i=s.map(a=>a.timestamp).sort(),u=new Date().toISOString();return{tool:"copilot_agent",projectPath:null,gitBranch:null,startedAt:i[0]??u,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,u)=>({sequence:i.sequence??u,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 tt(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(tt,"textFromBlocks");function Ft(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(Ft,"tokenUsageFromCodex");function Ht(e){if(!e)return new Date().toISOString();let t=new Date(e);return Number.isFinite(t.getTime())?t.toISOString():new Date().toISOString()}l(Ht,"normalizeTimestamp");function et(){return{sequence:0,model:null,prevCumulativeTotal:0,callNames:{}}}l(et,"freshCodexState");var b=class{static{l(this,"CodexAdapter")}tool="codex";parse(t){let n=et(),{events:o,projectPath:s,gitBranch:r,metadata:i}=this.parseLines(t,n),u=o.map(p=>p.timestamp).sort(),a=new Date().toISOString();return{tool:"codex",projectPath:s,gitBranch:r,startedAt:u[0]??a,endedAt:u[u.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(m=>m.trim()),s=[],r={},i=n.callNames,u=null,a=null,p=null;for(let m of o){let f;try{f=JSON.parse(m)}catch{continue}let d=f.payload;if(!d)continue;let g=Ht(f.timestamp);if(f.type==="session_meta"){p=d.session_id??d.id??p,u=d.cwd??u,d.git_branch&&(a=d.git_branch),d.model&&(n.model=d.model),r.sessionId=p,r.codexSessionId=p,r.originator=d.originator,r.source=d.source,r.modelProvider=d.model_provider,r.codexCliVersion=d.cli_version;continue}if(f.type==="turn_context"){u=d.cwd??u,d.model&&(n.model=d.model,r.model=d.model);continue}if(f.type==="response_item"&&d.type==="message"){if(d.role==="user"){let c=tt(d.content,["input_text"]);if(!c)continue;s.push({sequence:n.sequence++,eventType:"user_message",content:c,toolName:null,toolInput:null,toolOutput:null,tokenUsage:null,timestamp:g,metadata:{}})}else if(d.role==="assistant"){let c=tt(d.content,["output_text"]);if(!c)continue;s.push({sequence:n.sequence++,eventType:"assistant_message",content:c,toolName:null,toolInput:null,toolOutput:null,tokenUsage:null,model:n.model,timestamp:g,metadata:n.model?{model:n.model}:{}})}continue}if(f.type==="response_item"&&d.type==="function_call"){let c=d.name??"unknown";d.call_id&&(i[d.call_id]=c);let y=typeof d.arguments=="string"?Bt(d.arguments):{};s.push({sequence:n.sequence++,eventType:"tool_call",content:null,toolName:c,toolInput:y&&typeof y=="object"&&!Array.isArray(y)?y:{arguments:y},toolOutput:null,tokenUsage:null,model:n.model,timestamp:g,metadata:{callId:d.call_id}});continue}if(f.type==="response_item"&&d.type==="function_call_output"){let c=d.call_id?i[d.call_id]??null:null;s.push({sequence:n.sequence++,eventType:"tool_result",content:d.output??null,toolName:c,toolInput:null,toolOutput:d.output==null?null:{output:d.output},tokenUsage:null,model:n.model,timestamp:g,metadata:{callId:d.call_id}});continue}if(f.type==="event_msg"&&d.type==="token_count"){let c=d.info,y=c?.total_token_usage?.total_tokens??0;if(y>0&&y===n.prevCumulativeTotal)continue;y>0&&(n.prevCumulativeTotal=y);let h=Ft(c?.last_token_usage??c?.total_token_usage);if(!h)continue;let _=c?.model??c?.model_name??n.model;s.push({sequence:n.sequence++,eventType:"assistant_response",content:null,toolName:null,toolInput:null,toolOutput:null,tokenUsage:h,model:_??null,timestamp:g,metadata:{codexEventType:"token_count",..._?{model:_}:{},reasoningOutputTokens:c?.last_token_usage?.reasoning_output_tokens??0,usage:{input_tokens:h.input,output_tokens:h.output,cache_read_input_tokens:h.cacheRead??0,cache_creation_input_tokens:h.cacheWrite??0}}})}}return{events:s,projectPath:u,gitBranch:a,sessionId:p,metadata:r}}};function nt(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(nt,"timestamp");function st(e){return Array.isArray(e.content)?e.content:[]}l(st,"blocks");function ot(e){return typeof e.content=="string"?e.content:st(e).filter(t=>t.type==="text").map(t=>t.text??"").filter(Boolean).join(`
6
+
7
+ `)}l(ot,"messageText");function Wt(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(Wt,"usageOf");var E=class{static{l(this,"PiAdapter")}tool="pi";parse(t){let n=[],o={},s=null,r=null,i=null,u=null,a=l(f=>{n.push({sequence:n.length,...f})},"push");for(let f of t.split(`
8
+ `)){if(!f.trim())continue;let d;try{d=JSON.parse(f)}catch{continue}if(d.type==="session"){r||(r=nt(d.timestamp)),s=d.cwd??s,o.sessionId=d.id,o.piSessionId=d.id,o.sessionVersion=d.version;continue}if(d.type==="model_change"){i=d.provider??i,u=d.modelId??u,i&&(o.provider=i),u&&(o.model=u);continue}if(d.type!=="message"||!d.message)continue;let g=d.message,c=nt(d.timestamp,g.timestamp);if(i=g.provider??i,u=g.model??u,i&&(o.provider=i),u&&(o.model=u),g.role==="user"){let h=ot(g);if(!h)continue;a({eventType:"user_message",content:h,toolName:null,toolInput:null,toolOutput:null,tokenUsage:null,timestamp:c,metadata:{}});continue}if(g.role==="toolResult"){let h=ot(g);a({eventType:"tool_result",content:h||null,toolName:g.toolName??null,toolInput:null,toolOutput:{content:h,details:g.details??null,isError:g.isError??!1},tokenUsage:null,model:u,timestamp:c,metadata:{toolCallId:g.toolCallId,isError:g.isError??!1}});continue}if(g.role!=="assistant")continue;if(g.stopReason==="error"||g.stopReason==="aborted"){a({eventType:"error",content:g.errorMessage??`Pi stopped with ${g.stopReason}`,toolName:null,toolInput:null,toolOutput:null,tokenUsage:null,model:u,timestamp:c,metadata:{provider:i,stopReason:g.stopReason}});continue}for(let h of st(g))h.type==="thinking"&&h.thinking?a({eventType:"thinking",content:h.thinking,toolName:null,toolInput:null,toolOutput:null,tokenUsage:null,model:u,timestamp:c,metadata:{provider:i}}):h.type==="text"&&h.text?a({eventType:"assistant_message",content:h.text,toolName:null,toolInput:null,toolOutput:null,tokenUsage:null,model:u,timestamp:c,metadata:{provider:i}}):h.type==="toolCall"&&h.name&&a({eventType:"tool_call",content:null,toolName:h.name,toolInput:h.arguments??{},toolOutput:null,tokenUsage:null,model:u,timestamp:c,metadata:{provider:i,toolCallId:h.id}});let y=Wt(g.usage);y&&a({eventType:"assistant_response",content:null,toolName:null,toolInput:null,toolOutput:null,tokenUsage:y,model:u,timestamp:c,metadata:{piEventType:"assistant_usage",provider:i,responseId:g.responseId,stopReason:g.stopReason,costUsd:g.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 p=n.map(f=>f.timestamp).sort(),m=new Date().toISOString();return{tool:"pi",projectPath:s,gitBranch:null,startedAt:r??p[0]??m,endedAt:p[p.length-1]??null,events:n,metadata:o}}};var zt={claude_code:l(()=>new C,"claude_code"),cursor:l(()=>new A,"cursor"),vscode_copilot:l(()=>new N,"vscode_copilot"),copilot_agent:l(()=>new P,"copilot_agent"),rulemetric_mcp:l(()=>new D,"rulemetric_mcp"),codex:l(()=>new b,"codex"),pi:l(()=>new E,"pi")};function Kt(e){let t=zt[e];if(!t)throw new Error(`Unknown session tool: ${e}`);return t()}l(Kt,"getAdapter");function Vt(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(Vt,"detectTool");import{readdir as H,stat as W}from"fs/promises";import{basename as Xt,join as w}from"path";import{homedir as R}from"os";var Yt={"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 Zt(){return process.env.CLAUDE_CONFIG_DIR||w(R(),".claude")}l(Zt,"getClaudeDir");function Qt(){return w(Zt(),"projects")}l(Qt,"getProjectsDir");function te(){return process.platform==="darwin"?w(R(),"Library","Application Support","Claude","local-agent-mode-sessions"):process.platform==="win32"?w(R(),"AppData","Roaming","Claude","local-agent-mode-sessions"):w(R(),".config","Claude","local-agent-mode-sessions")}l(te,"getDesktopSessionsDir");async function ee(e){let t=[];async function n(o,s){if(s>8)return;let r=await H(o).catch(()=>[]);for(let i of r){if(i==="node_modules"||i===".git")continue;let u=w(o,i);if((await W(u).catch(()=>null))?.isDirectory())if(i==="projects"){let p=await H(u).catch(()=>[]);for(let m of p){let f=w(u,m);(await W(f).catch(()=>null))?.isDirectory()&&t.push(f)}}else await n(u,s+1)}}return l(n,"walk"),await n(e,0),t}l(ee,"findDesktopProjectDirs");var rt={name:"claude",displayName:"Claude Code",modelDisplayName(e){let t=e.replace(/@.*$/,"").replace(/-\d{8}$/,"");for(let[n,o]of Object.entries(Yt))if(t.startsWith(n))return o;return t},toolDisplayName(e){return e},async discoverSessions(){let e=[],t=Qt();try{let o=await H(t);for(let s of o){let r=w(t,s);(await W(r).catch(()=>null))?.isDirectory()&&e.push({path:r,project:s,provider:"claude"})}}catch{}let n=await ee(te());for(let o of n)e.push({path:o,project:Xt(o),provider:"claude"});return e},createSessionParser(){return{async*parse(){}}}};import{readdir as $,readFile as at,stat as ne}from"fs/promises";import{basename as oe,join as O}from"path";import{homedir as se}from"os";var re={"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"},it={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 ae(){return process.env.CODEX_HOME??O(se(),".codex")}l(ae,"getCodexDir");function ie(e){return e.replace(/^\//,"").replace(/\//g,"-")}l(ie,"sanitizeProject");async function le(e){try{let n=(await at(e,"utf-8")).split(`
11
+ `)[0];return n?.trim()?JSON.parse(n):null}catch{return null}}l(le,"readFirstLine");async function ce(e){let t=await le(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(ce,"isValidCodexSession");async function ue(e){let t=O(e,"sessions"),n=[],o;try{o=await $(t)}catch{return n}for(let s of o){if(!/^\d{4}$/.test(s))continue;let r=O(t,s),i=await $(r).catch(()=>[]);for(let u of i){if(!/^\d{2}$/.test(u))continue;let a=O(r,u),p=await $(a).catch(()=>[]);for(let m of p){if(!/^\d{2}$/.test(m))continue;let f=O(a,m),d=await $(f).catch(()=>[]);for(let g of d){if(!g.startsWith("rollout-")||!g.endsWith(".jsonl"))continue;let c=O(f,g);if(!(await ne(c).catch(()=>null))?.isFile())continue;let{valid:h,meta:_}=await ce(c);if(!h||!_)continue;let I=_.payload?.cwd??"unknown";n.push({path:c,project:ie(I),provider:"codex"})}}}}return n}l(ue,"discoverSessionsInDir");function pe(e,t){return e?.info?.model??e?.info?.model_name??t??"gpt-5"}l(pe,"resolveModel");function de(e,t){return{async*parse(){let n;try{n=await at(e.path,"utf-8")}catch{return}let o=n.split(`
12
+ `).filter(g=>g.trim()),s,r="",i=0,u=0,a=0,p=0,m=0,f=[],d="";for(let g of o){let c;try{c=JSON.parse(g)}catch{continue}if(c.type==="session_meta"){r=c.payload?.session_id??oe(e.path,".jsonl"),s=c.payload?.model;continue}if(c.type==="response_item"&&c.payload?.type==="function_call"){let y=c.payload.name??"";f.push(it[y]??y);continue}if(c.type==="response_item"&&c.payload?.type==="message"&&c.payload?.role==="user"){let y=(c.payload.content??[]).filter(h=>h.type==="input_text").map(h=>h.text??"").filter(Boolean);y.length>0&&(d=y.join(" "));continue}if(c.type==="event_msg"&&c.payload?.type==="token_count"){let y=c.payload.info;if(!y)continue;let h=y.total_token_usage?.total_tokens??0;if(h>0&&h===i)continue;i=h;let _=y.last_token_usage,I=0,T=0,x=0,S=0;if(_)I=_.input_tokens??0,T=_.cached_input_tokens??0,x=_.output_tokens??0,S=_.reasoning_output_tokens??0;else if(h>0){let v=y.total_token_usage;if(!v)continue;I=(v.input_tokens??0)-u,T=(v.cached_input_tokens??0)-a,x=(v.output_tokens??0)-p,S=(v.reasoning_output_tokens??0)-m}if(!_){let v=y.total_token_usage;v&&(u=v.input_tokens??0,a=v.cached_input_tokens??0,p=v.output_tokens??0,m=v.reasoning_output_tokens??0)}if(I+T+x+S===0)continue;let Mt=Math.max(0,I-T),qt=pe(c.payload,s),Q=c.timestamp??"",F=`codex:${e.path}:${Q}:${h}`;if(t.has(F))continue;t.add(F),yield{provider:"codex",model:qt,inputTokens:Mt,outputTokens:x,cacheCreationInputTokens:0,cacheReadInputTokens:T,cachedInputTokens:T,reasoningTokens:S,costUSD:0,tools:f,bashCommands:[],timestamp:Q,speed:"standard",deduplicationKey:F,userMessage:d,sessionId:r},f=[],d=""}}}}}l(de,"createParser");var lt={name:"codex",displayName:"Codex",modelDisplayName(e){for(let[t,n]of Object.entries(re))if(e.startsWith(t))return n;return e},toolDisplayName(e){return it[e]??e},async discoverSessions(){return ue(ae())},createSessionParser(e,t){return de(e,t)}};import{readdir as me,readFile as ct,stat as fe}from"fs/promises";import{basename as ut,dirname as he,join as z}from"path";import{homedir as ge}from"os";var ye={"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"},pt={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"},_e=Object.entries(ye).sort((e,t)=>t[0].length-e[0].length);function Se(){return z(ge(),".copilot","session-state")}l(Se,"getCopilotSessionStateDir");function Te(e){let t=e.match(/^cwd:\s*(.+)$/m);return t?.[1]&&t[1].replace(/\s*#.*$/,"").replace(/^['"]|['"]$/g,"").trim()||null}l(Te,"parseCwd");function Ie(e,t){return{async*parse(){let n;try{n=await ct(e.path,"utf-8")}catch{return}let o=ut(he(e.path)),s=n.split(`
13
+ `).filter(u=>u.trim()),r="",i="";for(let u of s){let a;try{a=JSON.parse(u)}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:p,outputTokens:m,toolRequests:f=[]}=a.data;if(m===0||!r)continue;let d=`copilot:${o}:${p}`;if(t.has(d))continue;t.add(d);let g=f.map(c=>c.name??"").filter(Boolean).map(c=>pt[c]??c);yield{provider:"copilot",model:r,inputTokens:0,outputTokens:m,cacheCreationInputTokens:0,cacheReadInputTokens:0,cachedInputTokens:0,reasoningTokens:0,costUSD:0,tools:g,bashCommands:[],timestamp:a.timestamp??"",speed:"standard",deduplicationKey:d,userMessage:i,sessionId:o},i=""}}}}}l(Ie,"createParser");async function ve(e){let t=[],n;try{n=await me(e)}catch{return t}for(let o of n){let s=z(e,o,"events.jsonl");if(!(await fe(s).catch(()=>null))?.isFile())continue;let i=o;try{let u=await ct(z(e,o,"workspace.yaml"),"utf-8"),a=Te(u);a&&(i=ut(a))}catch{}t.push({path:s,project:i,provider:"copilot"})}return t}l(ve,"discoverSessionsInDir");var dt={name:"copilot",displayName:"GitHub Copilot",modelDisplayName(e){for(let[t,n]of _e)if(e===t||e.startsWith(t+"-"))return n;return e},toolDisplayName(e){return pt[e]??e},async discoverSessions(){return ve(Se())},createSessionParser(e,t){return Ie(e,t)}};import{readdir as mt,readFile as ht,stat as ft}from"fs/promises";import{basename as gt,join as K}from"path";import{homedir as xe}from"os";var we={"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"},yt={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"},ke=Object.entries(we).sort((e,t)=>t[0].length-e[0].length);function Oe(){return K(xe(),".pi","agent","sessions")}l(Oe,"getPiSessionsDir");async function Ce(e){try{let n=(await ht(e,"utf-8")).split(`
14
+ `)[0];return n?.trim()?JSON.parse(n):null}catch{return null}}l(Ce,"readFirstEntry");function Ae(e){return e.split(/[;&|]+/).map(t=>t.trim().split(/\s+/)[0]).filter(Boolean)}l(Ae,"extractBashCommands");async function Ne(e){let t=[],n;try{n=await mt(e)}catch{return t}for(let o of n){let s=K(e,o);if(!(await ft(s).catch(()=>null))?.isDirectory())continue;let i;try{i=await mt(s)}catch{continue}for(let u of i){if(!u.endsWith(".jsonl"))continue;let a=K(s,u);if(!(await ft(a).catch(()=>null))?.isFile())continue;let m=await Ce(a);if(!m||m.type!=="session")continue;let f=m.cwd??o;t.push({path:a,project:gt(f),provider:"pi"})}}return t}l(Ne,"discoverSessionsInDir");function Pe(e,t){return{async*parse(){let n;try{n=await ht(e.path,"utf-8")}catch{return}let o=n.split(`
15
+ `).filter(i=>i.trim()),s=gt(e.path,".jsonl"),r="";for(let[i,u]of o.entries()){let a;try{a=JSON.parse(u)}catch{continue}if(a.type==="session"){s=a.id??s;continue}if(a.type!=="message")continue;let p=a.message;if(!p)continue;if(p.role==="user"){let S=(p.content??[]).filter(k=>k.type==="text").map(k=>k.text??"").filter(Boolean);S.length>0&&(r=S.join(" "));continue}if(p.role!=="assistant"||!p.usage)continue;let{input:m,output:f,cacheRead:d,cacheWrite:g}=p.usage;if(m===0&&f===0)continue;let c=p.model??"gpt-5",y=p.responseId??"",h=`pi:${e.path}:${y||a.id||a.timestamp||String(i)}`;if(t.has(h))continue;t.add(h);let _=(p.content??[]).filter(S=>S.type==="toolCall"&&S.name),I=_.map(S=>yt[S.name]??S.name),T=_.filter(S=>S.name==="bash").flatMap(S=>{let k=S.arguments?.command;return typeof k=="string"?Ae(k):[]}),x=a.timestamp??"";yield{provider:"pi",model:c,inputTokens:m,outputTokens:f,cacheCreationInputTokens:g,cacheReadInputTokens:d,cachedInputTokens:d,reasoningTokens:0,costUSD:0,tools:I,bashCommands:T,timestamp:x,speed:"standard",deduplicationKey:h,userMessage:r,sessionId:s},r=""}}}}l(Pe,"createParser");var _t={name:"pi",displayName:"Pi",modelDisplayName(e){for(let[t,n]of ke)if(e.startsWith(t))return n;return e},toolDisplayName(e){return yt[e]??e},async discoverSessions(){return Ne(Oe())},createSessionParser(e,t){return Pe(e,t)}};var xt=[rt,lt,dt,_t],St=null,Tt=!1;async function wt(){if(Tt)return St;Tt=!0;try{let{cursor:e}=await import("./cursor-T7AMCMKS.js");return St=e,e}catch{return null}}l(wt,"loadCursor");var It=null,vt=!1;async function kt(){if(vt)return It;vt=!0;try{let{opencode:e}=await import("./opencode-QRJ3BH23.js");return It=e,e}catch{return null}}l(kt,"loadOpenCode");async function Ot(){let[e,t]=await Promise.all([wt(),kt()]),n=[...xt];return e&&n.push(e),t&&n.push(t),n}l(Ot,"getAllProviders");async function De(e){let t=await Ot(),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(De,"discoverAllSessions");async function be(e){return e==="cursor"?await wt()??void 0:e==="opencode"?await kt()??void 0:xt.find(t=>t.name===e)}l(be,"getProvider");import{spawn as Z}from"node:child_process";import{randomUUID as Ue}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 Ee}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 X(e){let t=[...e.runId?[`RULEMETRIC_RUN_ID=${e.runId}`]:[],...e.scopedConfirmation?[`RULEMETRIC_SCOPED_CONFIRMATION_ID=${e.scopedConfirmation.id}`,`RULEMETRIC_SCOPED_TASK_ID=${e.scopedConfirmation.taskId}`,`RULEMETRIC_SCOPED_CONFIGURATION_HASH=${e.scopedConfirmation.configurationHash}`]:[]],n=t.length?["env",...t,"claude"]:["claude"];return e.resumeSessionId&&n.push("--resume",e.resumeSessionId),e.model&&n.push("--model",e.model),["new-session","-d","-s",e.sessionName,"-c",e.projectPath,"--",...n]}l(X,"buildTmuxLaunchArgs");function U(e,t,n={}){return n.literal===!1?["send-keys","-t",e,t]:["send-keys","-t",e,"-l","--",t]}l(U,"buildTmuxSendKeysArgs");function Re(e){return["has-session","-t",e]}l(Re,"buildTmuxHasSessionArgs");function j(e){return`tmux attach -t ${e}`}l(j,"buildTmuxAttachCommand");function $e(){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($e,"tmuxSpawnEnv");function Y(e){return new Promise(t=>{let n=Ee("tmux",e,{stdio:["ignore","ignore","pipe"],env:$e()}),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(Y,"runTmux");async function Ct(){return(await Y(["-V"])).code===0}l(Ct,"isTmuxAvailable");var Dt=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,je=/^[a-f0-9]{64}$/;function Me(e){if(e){if(Dt.test(e.id)&&je.test(e.configurationHash)&&e.taskId.length>0&&e.taskId.length<=500)return e;console.warn("[claude-code-launcher] dropping invalid scoped confirmation identity")}}l(Me,"validateScopedConfirmation");function qe(e){if(e!==void 0){if(Dt.test(e))return e;console.warn(`[claude-code-launcher] dropping non-uuid runId (RULEMETRIC_RUN_ID not injected): ${JSON.stringify(e)}`)}}l(qe,"validateRunId");function M(e){return`'${e.replace(/'/g,"'\\''")}'`}l(M,"shellSingleQuote");var q=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=Ue(),o={...t,runId:qe(t.runId),scopedConfirmation:Me(t.scopedConfirmation)};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),t.scopedConfirmation&&(s.RULEMETRIC_SCOPED_CONFIRMATION_ID=t.scopedConfirmation.id,s.RULEMETRIC_SCOPED_TASK_ID=t.scopedConfirmation.taskId,s.RULEMETRIC_SCOPED_CONFIGURATION_HASH=t.scopedConfirmation.configurationHash),new Promise(r=>{let i=Z("claude",o,{cwd:t.projectPath,env:s,stdio:["ignore","pipe","pipe"]}),u="",a="";i.stdout.on("data",m=>{u+=m.toString()}),i.stderr.on("data",m=>{a+=m.toString()});let p=t.timeout?setTimeout(()=>{i.kill("SIGTERM")},t.timeout):null;i.on("close",m=>{p&&clearTimeout(p);let f=u;try{let d=JSON.parse(u);f=d.result??d.content??u}catch{}r({sessionId:n,pid:i.pid,exitCode:m,output:f,error:m!==0?a:void 0})}),i.on("error",m=>{p&&clearTimeout(p),r({sessionId:n,error:`Failed to spawn claude: ${m.message}`})})})}async launchInteractive(t,n){return await(this.options.tmuxAvailable??Ct)().catch(()=>!1)?this.launchInteractiveTmux(t,n):this.launchInteractiveTerminal(t,n,"tmux_not_found")}async launchInteractiveTmux(t,n){let o=this.options.runTmux??Y,s=V(`claude-${t.resumeSessionId??n}`),r=await o(X({sessionName:s,projectPath:t.projectPath,resumeSessionId:t.resumeSessionId,model:t.model,runId:t.runId,scopedConfirmation:t.scopedConfirmation}));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 u=await o(U(s,t.prompt));if(u.code!==0)return{sessionId:n,liveSendAvailable:!1,fallbackReason:"tmux_launch_failed",error:`tmux send-keys exited ${u.code}: ${u.stderr.trim()||"no stderr"}`};let a=await o(U(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:j(s),live:!0}}}async openTerminalAttach(t,n){let o=Pt(Nt(),`rulemetric-attach-${n}.command`),s=`#!/bin/zsh
16
+ rm -- "$0"
17
+ ${j(t)}
18
+ `;return await At(o,s,{mode:493}),new Promise(r=>{let i=Z("open",["-a","Terminal",o],{stdio:["ignore","pipe","pipe"]}),u="";i.stderr.on("data",a=>{u+=a.toString()}),i.on("close",a=>{r(a===0?{pid:i.pid}:{pid:i.pid,error:`open attach exited ${a}: ${u.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(" "),u=Pt(Nt(),`rulemetric-launch-${n}.command`),a=t.runId?`export RULEMETRIC_RUN_ID=${M(t.runId)}
19
+ `:"",p=t.scopedConfirmation?`export RULEMETRIC_SCOPED_CONFIRMATION_ID=${M(t.scopedConfirmation.id)}
20
+ export RULEMETRIC_SCOPED_TASK_ID=${M(t.scopedConfirmation.taskId)}
21
+ export RULEMETRIC_SCOPED_CONFIGURATION_HASH=${M(t.scopedConfirmation.configurationHash)}
22
+ `:"",m=`#!/bin/zsh
23
+ rm -- "$0"
24
+ cd ${JSON.stringify(t.projectPath)} || exit
25
+ `+a+p+`${i}
26
+ `;return await At(u,m,{mode:493}),new Promise(f=>{let d=Z("open",["-a","Terminal",u],{stdio:["ignore","pipe","pipe"]}),g="";d.stderr.on("data",c=>{g+=c.toString()}),d.on("close",c=>{if(c===0)f({sessionId:n,pid:d.pid,liveSendAvailable:!1,fallbackReason:o,...s?{error:s}:{}});else{let y=g.trim()||"no stderr";f({sessionId:n,pid:d.pid,liveSendAvailable:!1,fallbackReason:o,error:s?`${s}; open exited ${c}: ${y}`:`open exited ${c}: ${y}`})}}),d.on("error",c=>{f({sessionId:n,liveSendAvailable:!1,fallbackReason:o,error:`Failed to spawn open: ${c.message}`})})})}};import{spawn as bt}from"node:child_process";import{randomUUID as Le}from"node:crypto";var L=class{static{l(this,"CodexLauncher")}tool="codex";capabilities={headless:!0,interactive:!0,remoteSpawn:!0};async launch(t){let n=Le();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="",u="";r.stdout.on("data",p=>{i+=p.toString()}),r.stderr.on("data",p=>{u+=p.toString()});let a=t.timeout?setTimeout(()=>{r.kill("SIGTERM")},t.timeout):null;r.on("close",p=>{a&&clearTimeout(a),s({sessionId:n,pid:r.pid,exitCode:p,output:i,error:p!==0?u:void 0})}),r.on("error",p=>{a&&clearTimeout(a),s({sessionId:n,error:`Failed to spawn codex: ${p.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 Et}from"node:child_process";import{randomUUID as Je}from"node:crypto";function Ge(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(Ge,"buildPiLaunchArgs");function Be(e){let t;for(let o of e.split(`
27
+ `))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(`
28
+ `)??"";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=Je(),o=Ge(t);if(t.mode==="interactive"){let s=["pi",...o].map(u=>JSON.stringify(u)).join(" "),r=`cd ${JSON.stringify(t.projectPath)} && ${s}`,i=Et("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=Et("pi",o,{cwd:t.projectPath,stdio:["ignore","pipe","pipe"]}),i="",u="";r.stdout.on("data",p=>{i+=p.toString()}),r.stderr.on("data",p=>{u+=p.toString()});let a=t.timeout?setTimeout(()=>r.kill("SIGTERM"),t.timeout):null;r.on("close",p=>{a&&clearTimeout(a);let m=Be(i);s({sessionId:n,pid:r.pid,exitCode:p,output:m.output,error:m.error??(p!==0?u.trim()||i.trim()||`pi exited ${p}`:void 0)})}),r.on("error",p=>{a&&clearTimeout(a),s({sessionId:n,error:`Failed to spawn pi: ${p.message}`})})})}};import{spawn as Rt}from"node:child_process";import{randomUUID as Fe}from"node:crypto";var G=class{static{l(this,"AiderLauncher")}tool="aider";capabilities={headless:!0,interactive:!0,remoteSpawn:!0};async launch(t){let n=Fe();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=Rt("aider",o,{cwd:t.projectPath,stdio:["ignore","pipe","pipe"]}),i="",u="";r.stdout.on("data",p=>{i+=p.toString()}),r.stderr.on("data",p=>{u+=p.toString()});let a=t.timeout?setTimeout(()=>{r.kill("SIGTERM")},t.timeout):null;r.on("close",p=>{a&&clearTimeout(a),s({sessionId:n,pid:r.pid,exitCode:p,output:i,error:p!==0?u:void 0})}),r.on("error",p=>{a&&clearTimeout(a),s({sessionId:n,error:`Failed to spawn aider: ${p.message}`})})})}launchInteractive(t,n){let o=["aider"];t.model&&o.push("--model",t.model);let s=`cd ${JSON.stringify(t.projectPath)} && ${o.join(" ")}`,r=Rt("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 He}from"node:child_process";import{randomUUID as We}from"node:crypto";var B=class{static{l(this,"GenericLauncher")}tool;constructor(t){this.tool=t}capabilities={headless:!1,interactive:!0,remoteSpawn:!1};async launch(t){let n=We();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=He("osascript",["-e",`tell application "Terminal" to do script ${JSON.stringify(o)}`],{stdio:"ignore",detached:!0});return s.unref(),{sessionId:n,pid:s.pid}}};var $t={claude_code:l(()=>new q,"claude_code"),codex:l(()=>new L,"codex"),pi:l(()=>new J,"pi"),aider:l(()=>new G,"aider")};function ze(e){let t=$t[e];return t?t():new B(e)}l(ze,"getLauncher");function Ke(){return Object.entries($t).map(([e,t])=>({tool:e,capabilities:t().capabilities}))}l(Ke,"getAvailableLaunchers");import Ut from"node:path";function jt(e){return e.replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^[-.]+|[-.]+$/g,"")||"worktree"}l(jt,"sanitizeBranch");function Ve(e){return Ut.resolve(e.basePath??Ut.join(e.repoRoot,"..",".rulemetric-worktrees",jt(e.branch)))}l(Ve,"worktreePathFor");export{Xe as a,Ye as b,C as c,A as d,N as e,P as f,D as g,et as h,b as i,E as j,Kt as k,Vt as l,Ot as m,De as n,be as o,V as p,X as q,U as r,Re as s,j as t,ze as u,Ke as v,jt as w,Ve as x};
@@ -1 +1 @@
1
- import{a as m,c as d}from"./chunk-HT6R6KR3.js";import{a as s}from"./chunk-ZLLER3HP.js";var h=4,i=1,_=2,f=.0641;function x(e,r=f){return!(e>0)||!(r>=0)?null:Math.sqrt((m+d)**2*r/e)}s(x,"mdeForPairs");function w(e,r=f){if(!(e>0))throw new Error("pairsForMde: mde must be > 0");if(!(r>=0))throw new Error("pairsForMde: variance must be >= 0");return Math.max(1,Math.ceil((m+d)**2*r/e**2))}s(w,"pairsForMde");var p=10,c=128;function R(e){let r=e.autoEvolvePairs;if(r==null)return{minPairs:p,configured:!1};let a=typeof r=="number"?r:typeof r=="string"?Number(r):NaN;if(!Number.isFinite(a)||a<1)return{minPairs:p,configured:!1,note:`metadata.autoEvolvePairs=${JSON.stringify(r)} is not a positive number \u2014 using the default ${p}`};let n=Math.floor(a);return{minPairs:Math.min(c,Math.max(10,n)),configured:!0,...n>c?{note:`metadata.autoEvolvePairs=${n} clamped to the ${c}-pair ceiling`}:n<10?{note:`metadata.autoEvolvePairs=${n} raised to ${10} \u2014 a controlled verdict is refused below ${10} pairs, so a smaller batch buys a certain refusal. Use metadata.autoEvolvePaused to stop the spend instead.`}:{}}}s(R,"readPairBudget");function $(e){let r=e.autoEvolvePaused;return r===!0||r==="true"}s($,"isEvolutionPaused");function O(e){let{liveCases:r,passes:a,variance:n}=e,t=Math.max(0,r)*Math.max(0,a),o=t*2,l=t*2;return{liveCases:r,passes:a,plannedPairs:t,proposalCalls:i,executorCalls:o,graderCalls:l,totalCalls:i+o+l,maxCalls:i+o+l*_,mde:x(t,n)}}s(O,"estimateEvolutionCost");function L(e){let{runs:r,plannedPairs:a,usablePairs:n,passes:t,liveCases:o,wallMs:l,variance:g}=e,b=e.proposalCalls??i,v=e.verdictPairs??n,C=r.length,E=r.filter(P=>P.status==="completed"&&P.grading?.judge_model!=null).length;return{proposalCalls:b,executorCalls:C,graderCalls:E,modelCalls:b+C+E,plannedPairs:a,usablePairs:n,verdictPairs:v,passes:t,liveCases:o,mde:x(v,g),wallMs:l}}s(L,"observedEvolutionCost");function A(e){return e==null?"n/a":`${(e*100).toFixed(1)}pp`}s(A,"pp");function D(e){return`${e.liveCases} case(s) x ${e.passes} pass(es) = ${e.plannedPairs} planned pair(s), ~${e.totalCalls} model calls (up to ${e.maxCalls}) \u2014 resolves an effect of +/-${A(e.mde)} at 80% power`}s(D,"describeEvolutionCost");export{h as a,i as b,_ as c,f as d,x as e,w as f,p as g,c as h,R as i,$ as j,O as k,L as l,A as m,D as n};
1
+ import{a as m,c as d}from"./chunk-KFNFLMUR.js";import{a as s}from"./chunk-ZLLER3HP.js";var h=4,i=1,_=2,f=.0641;function x(e,r=f){return!(e>0)||!(r>=0)?null:Math.sqrt((m+d)**2*r/e)}s(x,"mdeForPairs");function w(e,r=f){if(!(e>0))throw new Error("pairsForMde: mde must be > 0");if(!(r>=0))throw new Error("pairsForMde: variance must be >= 0");return Math.max(1,Math.ceil((m+d)**2*r/e**2))}s(w,"pairsForMde");var p=10,c=128;function R(e){let r=e.autoEvolvePairs;if(r==null)return{minPairs:p,configured:!1};let a=typeof r=="number"?r:typeof r=="string"?Number(r):NaN;if(!Number.isFinite(a)||a<1)return{minPairs:p,configured:!1,note:`metadata.autoEvolvePairs=${JSON.stringify(r)} is not a positive number \u2014 using the default ${p}`};let n=Math.floor(a);return{minPairs:Math.min(c,Math.max(10,n)),configured:!0,...n>c?{note:`metadata.autoEvolvePairs=${n} clamped to the ${c}-pair ceiling`}:n<10?{note:`metadata.autoEvolvePairs=${n} raised to ${10} \u2014 a controlled verdict is refused below ${10} pairs, so a smaller batch buys a certain refusal. Use metadata.autoEvolvePaused to stop the spend instead.`}:{}}}s(R,"readPairBudget");function $(e){let r=e.autoEvolvePaused;return r===!0||r==="true"}s($,"isEvolutionPaused");function O(e){let{liveCases:r,passes:a,variance:n}=e,t=Math.max(0,r)*Math.max(0,a),o=t*2,l=t*2;return{liveCases:r,passes:a,plannedPairs:t,proposalCalls:i,executorCalls:o,graderCalls:l,totalCalls:i+o+l,maxCalls:i+o+l*_,mde:x(t,n)}}s(O,"estimateEvolutionCost");function L(e){let{runs:r,plannedPairs:a,usablePairs:n,passes:t,liveCases:o,wallMs:l,variance:g}=e,b=e.proposalCalls??i,v=e.verdictPairs??n,C=r.length,E=r.filter(P=>P.status==="completed"&&P.grading?.judge_model!=null).length;return{proposalCalls:b,executorCalls:C,graderCalls:E,modelCalls:b+C+E,plannedPairs:a,usablePairs:n,verdictPairs:v,passes:t,liveCases:o,mde:x(v,g),wallMs:l}}s(L,"observedEvolutionCost");function A(e){return e==null?"n/a":`${(e*100).toFixed(1)}pp`}s(A,"pp");function D(e){return`${e.liveCases} case(s) x ${e.passes} pass(es) = ${e.plannedPairs} planned pair(s), ~${e.totalCalls} model calls (up to ${e.maxCalls}) \u2014 resolves an effect of +/-${A(e.mde)} at 80% power`}s(D,"describeEvolutionCost");export{h as a,i as b,_ as c,f as d,x as e,w as f,p as g,c as h,R as i,$ as j,O as k,L as l,A as m,D as n};
@@ -1 +1 @@
1
- import{g}from"./chunk-HT6R6KR3.js";import{e as c,f as p}from"./chunk-GIXHG5FK.js";import{a}from"./chunk-ZLLER3HP.js";import{createHash as C,randomUUID as R}from"node:crypto";import{lstatSync as u,readFileSync as b,writeFileSync as v,openSync as k,closeSync as y,fsyncSync as x,renameSync as $,unlinkSync as A}from"node:fs";import{isAbsolute as I,parse as F,join as E,dirname as P}from"node:path";var w=a(e=>C("sha256").update(e).digest("hex"),"hash");function f(e){if(!I(e))throw new Error("Restoration requires an absolute file anchor");let o=F(e).root;for(let t of e.slice(o.length).split("/"))if(o=E(o,t),u(o).isSymbolicLink())throw new Error("Restoration refuses symlink anchors");if(!u(e).isFile())throw new Error("Restoration requires a regular file");return b(e,"utf8")}a(f,"readFile");function h(e,o,t){if(f(e)!==o)return!1;let i=E(P(e),`.rulemetric-restore-${R()}`),n;try{return n=k(i,"wx",u(e).mode&511),v(n,t),x(n),y(n),n=void 0,f(e)!==o?!1:($(i,e),!0)}finally{n!==void 0&&y(n);try{A(i)}catch(s){if(s.code!=="ENOENT")throw s}}}a(h,"replaceExact");async function j(e,o){let t=await c(`/api/promotions/${o.promotionId}`),i=await c(`/api/eval-targets/${e}`),n=a(r=>({applied:!1,fileWritten:!1,reason:r}),"refuse");if(o.version!==1||o.authority!=="manual"||t.evalTargetId!==e||!t.applied||t.decision!=="promote"||i.content!==t.toContent)return n("Stale or unsupported restoration");let s=i.metadata?.immutableSections;if(!Array.isArray(s)||!s.every(r=>typeof r=="string"))return n("Explicit immutable sections are required");let S=Array.isArray(t.gates?.immutableSections)?t.gates.immutableSections.filter(r=>typeof r=="string"):[];if(g(t.toContent,t.fromContent,[...s,...S]).length)return n("Restoration would change immutable sections");let d=!1;try{if(!h(i.name,t.toContent,t.fromContent))return n("File changed; preserving human edits");if(d=!0,f(i.name)!==t.fromContent)throw new Error("Predecessor read-back failed");let r=await p(`/api/promotions/${t.id}/restore`,{authority:o.authority,reason:o.reason,expectedVersion:i.version,path:i.name,diskBeforeHash:w(t.toContent),diskAfterHash:w(t.fromContent)});return{applied:r.applied,fileWritten:!0,promotionId:r.id}}catch(r){if(!d)return n(r instanceof Error?r.message:String(r));let l=await c(`/api/eval-targets/${e}`).catch(()=>null),m=await c(`/api/promotions/${t.id}/restoration`).catch(()=>null);if(m&&l?.content===t.fromContent&&l.version===m.gates.newVersion&&f(i.name)===t.fromContent)return{applied:!0,fileWritten:!0,promotionId:m.id,reason:"Restoration verified after response failure"};if(!l||l.content===t.fromContent)throw new Error("Restoration state unknown; disk retained for reconciliation",{cause:r});return h(i.name,t.fromContent,t.toContent),n(`Restoration refused: ${r instanceof Error?r.message:String(r)}`)}}a(j,"restoreInstruction");export{j as a};
1
+ import{g}from"./chunk-KFNFLMUR.js";import{e as c,f as p}from"./chunk-GIXHG5FK.js";import{a}from"./chunk-ZLLER3HP.js";import{createHash as C,randomUUID as R}from"node:crypto";import{lstatSync as u,readFileSync as b,writeFileSync as v,openSync as k,closeSync as y,fsyncSync as x,renameSync as $,unlinkSync as A}from"node:fs";import{isAbsolute as I,parse as F,join as E,dirname as P}from"node:path";var w=a(e=>C("sha256").update(e).digest("hex"),"hash");function f(e){if(!I(e))throw new Error("Restoration requires an absolute file anchor");let o=F(e).root;for(let t of e.slice(o.length).split("/"))if(o=E(o,t),u(o).isSymbolicLink())throw new Error("Restoration refuses symlink anchors");if(!u(e).isFile())throw new Error("Restoration requires a regular file");return b(e,"utf8")}a(f,"readFile");function h(e,o,t){if(f(e)!==o)return!1;let i=E(P(e),`.rulemetric-restore-${R()}`),n;try{return n=k(i,"wx",u(e).mode&511),v(n,t),x(n),y(n),n=void 0,f(e)!==o?!1:($(i,e),!0)}finally{n!==void 0&&y(n);try{A(i)}catch(s){if(s.code!=="ENOENT")throw s}}}a(h,"replaceExact");async function j(e,o){let t=await c(`/api/promotions/${o.promotionId}`),i=await c(`/api/eval-targets/${e}`),n=a(r=>({applied:!1,fileWritten:!1,reason:r}),"refuse");if(o.version!==1||o.authority!=="manual"||t.evalTargetId!==e||!t.applied||t.decision!=="promote"||i.content!==t.toContent)return n("Stale or unsupported restoration");let s=i.metadata?.immutableSections;if(!Array.isArray(s)||!s.every(r=>typeof r=="string"))return n("Explicit immutable sections are required");let S=Array.isArray(t.gates?.immutableSections)?t.gates.immutableSections.filter(r=>typeof r=="string"):[];if(g(t.toContent,t.fromContent,[...s,...S]).length)return n("Restoration would change immutable sections");let d=!1;try{if(!h(i.name,t.toContent,t.fromContent))return n("File changed; preserving human edits");if(d=!0,f(i.name)!==t.fromContent)throw new Error("Predecessor read-back failed");let r=await p(`/api/promotions/${t.id}/restore`,{authority:o.authority,reason:o.reason,expectedVersion:i.version,path:i.name,diskBeforeHash:w(t.toContent),diskAfterHash:w(t.fromContent)});return{applied:r.applied,fileWritten:!0,promotionId:r.id}}catch(r){if(!d)return n(r instanceof Error?r.message:String(r));let l=await c(`/api/eval-targets/${e}`).catch(()=>null),m=await c(`/api/promotions/${t.id}/restoration`).catch(()=>null);if(m&&l?.content===t.fromContent&&l.version===m.gates.newVersion&&f(i.name)===t.fromContent)return{applied:!0,fileWritten:!0,promotionId:m.id,reason:"Restoration verified after response failure"};if(!l||l.content===t.fromContent)throw new Error("Restoration state unknown; disk retained for reconciliation",{cause:r});return h(i.name,t.fromContent,t.toContent),n(`Restoration refused: ${r instanceof Error?r.message:String(r)}`)}}a(j,"restoreInstruction");export{j as a};
@@ -0,0 +1 @@
1
+ import{a as m,c as Ks}from"./chunk-ZLLER3HP.js";import{boolean as _n,date as Cs,index as to,integer as qs,jsonb as Os,pgTable as oo,text as j,timestamp as F,uniqueIndex as Ms,uuid as he}from"drizzle-orm/pg-core";var pn=oo("announcements",{id:he("id").primaryKey().defaultRandom(),version:j("version").notNull().unique(),releaseDate:Cs("release_date").notNull(),subject:j("subject").notNull(),htmlBody:j("html_body").notNull(),textBody:j("text_body").notNull(),sections:Os("sections").notNull().default({}),status:j("status").notNull().default("draft"),recipientCount:qs("recipient_count"),sentAt:F("sent_at",{withTimezone:!0}),sentBy:he("sent_by"),error:j("error"),createdAt:F("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:F("updated_at",{withTimezone:!0}).notNull().defaultNow()},e=>[to("idx_announcements_status").on(e.status),to("idx_announcements_created").on(e.createdAt)]),mn=oo("announcement_deliveries",{id:he("id").primaryKey().defaultRandom(),announcementId:he("announcement_id").notNull(),userId:he("user_id").notNull(),email:j("email").notNull(),status:j("status").notNull().default("pending"),providerId:j("provider_id"),error:j("error"),sentAt:F("sent_at",{withTimezone:!0}),createdAt:F("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Ms("uniq_announcement_deliveries_announcement_user").on(e.announcementId,e.userId),to("idx_announcement_deliveries_user").on(e.userId,e.createdAt)]),fn=oo("notification_preferences",{userId:he("user_id").primaryKey(),productAnnouncements:_n("product_announcements").notNull().default(!0),weeklyDigest:_n("weekly_digest").notNull().default(!0),unsubscribeToken:j("unsubscribe_token").notNull().unique(),unsubscribedAt:F("unsubscribed_at",{withTimezone:!0}),createdAt:F("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:F("updated_at",{withTimezone:!0}).notNull().defaultNow()});import{boolean as mt,integer as He,jsonb as Ls,pgTable as Hs,real as hn,text as Ue,timestamp as no,uuid as gn}from"drizzle-orm/pg-core";import{pgTable as pt,text as ge,timestamp as Le,jsonb as Nn,uuid as se,primaryKey as xn}from"drizzle-orm/pg-core";var l=pt("organizations",{id:se("id").primaryKey().defaultRandom(),name:ge("name").unique().notNull(),slug:ge("slug").unique().notNull(),metadata:Nn("metadata"),createdAt:Le("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Le("updated_at",{withTimezone:!0}).defaultNow()}),v=pt("teams",{id:se("id").primaryKey().defaultRandom(),orgId:se("org_id").references(()=>l.id,{onDelete:"cascade"}),name:ge("name").notNull(),slug:ge("slug").notNull(),metadata:Nn("metadata"),createdAt:Le("created_at",{withTimezone:!0}).defaultNow()}),ve=pt("user_organizations",{userId:se("user_id").notNull(),orgId:se("org_id").references(()=>l.id,{onDelete:"cascade"}).notNull(),role:ge("role").notNull().default("member"),createdAt:Le("created_at",{withTimezone:!0}).defaultNow()},e=>[xn({columns:[e.userId,e.orgId]})]),Ie=pt("user_teams",{userId:se("user_id").notNull(),teamId:se("team_id").references(()=>v.id,{onDelete:"cascade"}).notNull(),role:ge("role").notNull().default("member"),createdAt:Le("created_at",{withTimezone:!0}).defaultNow()},e=>[xn({columns:[e.userId,e.teamId]})]);var o=Hs("profiles",{id:gn("id").primaryKey(),email:Ue("email"),measurementPreferences:Ls("measurement_preferences"),displayName:Ue("display_name"),activeOrgId:gn("active_org_id").references(()=>l.id,{onDelete:"set null"}),isSuperadmin:mt("is_superadmin").notNull().default(!1),claudeCodePlan:Ue("claude_code_plan"),planSource:Ue("plan_source").notNull().default("detected"),setupCompletedAt:no("setup_completed_at",{withTimezone:!0}),liveSendSkipped:mt("live_send_skipped").notNull().default(!1),autoAcceptSuggestions:mt("auto_accept_suggestions").notNull().default(!0),evolutionPaused:mt("evolution_paused").notNull().default(!1),suggestionConfidenceThreshold:hn("suggestion_confidence_threshold").notNull().default(.7),autoAcceptMinScore:hn("auto_accept_min_score"),autoAcceptMaxPerRun:He("auto_accept_max_per_run"),autoAcceptMaxPerWindow:He("auto_accept_max_per_window"),autoAcceptWindowDays:He("auto_accept_window_days"),trialMaxConcurrent:He("trial_max_concurrent"),trialMaxPerRun:He("trial_max_per_run"),harborAbCadence:Ue("harbor_ab_cadence").notNull().default("off"),createdAt:no("created_at",{withTimezone:!0}).defaultNow(),updatedAt:no("updated_at",{withTimezone:!0}).defaultNow()});import{pgTable as Us,text as ro,timestamp as ft,uuid as Nt,index as vn}from"drizzle-orm/pg-core";var C=Us("org_invitations",{id:Nt("id").primaryKey().defaultRandom(),orgId:Nt("org_id").notNull().references(()=>l.id,{onDelete:"cascade"}),email:ro("email").notNull(),role:ro("role").notNull().default("member"),teamId:Nt("team_id").references(()=>v.id,{onDelete:"set null"}),invitedBy:Nt("invited_by").notNull().references(()=>o.id,{onDelete:"cascade"}),token:ro("token").notNull().unique(),expiresAt:ft("expires_at",{withTimezone:!0}).notNull(),acceptedAt:ft("accepted_at",{withTimezone:!0}),revokedAt:ft("revoked_at",{withTimezone:!0}),createdAt:ft("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[vn("idx_org_invitations_token").on(e.token),vn("idx_org_invitations_org").on(e.orgId)]);import{pgTable as so,text as N,timestamp as $,jsonb as xt,uuid as k,integer as ht,boolean as Bs,uniqueIndex as gt,index as Be}from"drizzle-orm/pg-core";var n=so("instructions",{id:k("id").primaryKey().defaultRandom(),name:N("name").notNull(),description:N("description").notNull(),type:N("type").notNull().default("instruction"),scope:N("scope").notNull(),scopeRef:k("scope_ref"),version:N("version").notNull(),content:N("content").notNull(),frontmatter:xt("frontmatter").notNull(),slots:xt("slots"),tags:N("tags").array(),compatibility:N("compatibility").array(),createdBy:k("created_by"),createdAt:$("created_at",{withTimezone:!0}).defaultNow(),updatedAt:$("updated_at",{withTimezone:!0}).defaultNow(),archived:Bs("archived").default(!1),archivedAt:$("archived_at",{withTimezone:!0}),archivedBy:k("archived_by"),forkedFromId:k("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:ht("scan_score"),scanFindings:xt("scan_findings"),popularityScore:ht("popularity_score"),sourceUpdatedAt:$("source_updated_at",{withTimezone:!0})},e=>[gt("instructions_name_scope_ref_idx").on(e.name,e.scope,e.scopeRef),Be("idx_instructions_scope").on(e.scope,e.scopeRef),Be("idx_instructions_created_by").on(e.createdBy),Be("idx_instructions_context_identity").on(e.createdBy,e.contextIdentity),Be("idx_instructions_public_recency").on(e.scope,e.sourceUpdatedAt.desc())]),In=so("instruction_version_identities",{id:k("id").primaryKey().defaultRandom(),instructionId:k("instruction_id").notNull().references(()=>n.id,{onDelete:"cascade"}),contentHash:N("content_hash").notNull(),versionOrdinal:ht("version_ordinal").notNull(),content:N("content"),firstSeenAt:$("first_seen_at",{withTimezone:!0}).notNull().defaultNow(),lastSeenAt:$("last_seen_at",{withTimezone:!0}).notNull().defaultNow(),createdAt:$("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[gt("instruction_version_identities_hash_unique").on(e.instructionId,e.contentHash),gt("instruction_version_identities_ordinal_unique").on(e.instructionId,e.versionOrdinal),Be("idx_ivi_instruction").on(e.instructionId)]),ye=so("instruction_versions",{id:k("id").primaryKey().defaultRandom(),instructionId:k("instruction_id").references(()=>n.id,{onDelete:"cascade"}),versionNumber:ht("version_number").notNull(),content:N("content").notNull(),frontmatter:xt("frontmatter").notNull(),changeSummary:N("change_summary"),createdBy:k("created_by"),createdAt:$("created_at",{withTimezone:!0}).defaultNow()},e=>[gt("instruction_versions_instruction_version_idx").on(e.instructionId,e.versionNumber)]);import{pgTable as Gs,text as Vs,timestamp as Fs,jsonb as $s,uuid as io,index as yn}from"drizzle-orm/pg-core";var we=Gs("instruction_events",{id:io("id").primaryKey().defaultRandom(),instructionId:io("instruction_id").notNull().references(()=>n.id,{onDelete:"cascade"}),eventType:Vs("event_type").notNull(),actorId:io("actor_id").notNull(),metadata:$s("metadata"),createdAt:Fs("created_at",{withTimezone:!0}).defaultNow()},e=>[yn("idx_instruction_events_instruction").on(e.instructionId),yn("idx_instruction_events_type").on(e.eventType)]);import{boolean as Js,jsonb as Qs,pgTable as uo,primaryKey as wn,text as ie,timestamp as Ge,uniqueIndex as ao,uuid as ae}from"drizzle-orm/pg-core";import{sql as Ys}from"drizzle-orm";var s=uo("projects",{id:ae("id").primaryKey().defaultRandom(),orgId:ae("org_id").references(()=>l.id,{onDelete:"cascade"}),name:ie("name").notNull(),description:ie("description"),githubRepo:ie("github_repo"),gitRemoteUrl:ie("git_remote_url"),gitRootCommit:ie("git_root_commit"),gitRemoteAliases:ie("git_remote_aliases").array().notNull().default([]),metadata:Qs("metadata"),createdBy:ae("created_by"),createdAt:Ge("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Ge("updated_at",{withTimezone:!0}).defaultNow()},e=>[ao("projects_org_name_idx").on(e.orgId,e.name),ao("projects_git_remote_url_unique").on(e.gitRemoteUrl).where(Ys`${e.gitRemoteUrl} IS NOT NULL`)]),J=uo("project_instructions",{projectId:ae("project_id").references(()=>s.id,{onDelete:"cascade"}).notNull(),instructionId:ae("instruction_id").references(()=>n.id,{onDelete:"cascade"}).notNull(),addedAt:Ge("added_at",{withTimezone:!0}).defaultNow(),addedBy:ae("added_by")},e=>[wn({columns:[e.projectId,e.instructionId]})]),Tn=uo("project_checkouts",{projectId:ae("project_id").references(()=>s.id,{onDelete:"cascade"}).notNull(),path:ie("path").notNull(),isWorktree:Js("is_worktree").notNull().default(!1),firstSeen:Ge("first_seen",{withTimezone:!0}).notNull().defaultNow(),lastSeen:Ge("last_seen",{withTimezone:!0}).notNull().defaultNow()},e=>[wn({columns:[e.projectId,e.path]}),ao("project_checkouts_path_unique").on(e.path)]);import{pgTable as _o,text as I,timestamp as Ve,jsonb as de,uuid as q,integer as It,uniqueIndex as Dn,index as E}from"drizzle-orm/pg-core";import{pgTable as Ws,text as Te,timestamp as lo,jsonb as An,uuid as vt,integer as Xs,boolean as Zs,index as co}from"drizzle-orm/pg-core";var h=Ws("agent_runs",{id:vt("id").primaryKey().defaultRandom(),userId:vt("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),orgId:vt("org_id").references(()=>l.id,{onDelete:"set null"}),projectId:vt("project_id").references(()=>s.id,{onDelete:"set null"}),projectPath:Te("project_path"),gitRemote:Te("git_remote"),baseBranch:Te("base_branch"),title:Te("title"),prompt:Te("prompt"),toolSpec:An("tool_spec").notNull().default([]),autoWorktree:Zs("auto_worktree").notNull().default(!0),status:Te("status").notNull().default("pending"),sessionCount:Xs("session_count").notNull().default(0),metadata:An("metadata").notNull().default({}),createdAt:lo("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:lo("updated_at",{withTimezone:!0}).notNull().defaultNow(),completedAt:lo("completed_at",{withTimezone:!0})},e=>[co("idx_agent_runs_user").on(e.userId),co("idx_agent_runs_org_created").on(e.orgId,e.createdAt),co("idx_agent_runs_project").on(e.projectId)]);var a=_o("sessions",{id:q("id").primaryKey().defaultRandom(),userId:q("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),externalSessionId:I("external_session_id"),projectId:q("project_id").references(()=>s.id,{onDelete:"set null"}),orgId:q("org_id").references(()=>l.id,{onDelete:"set null"}),tool:I("tool").notNull(),projectPath:I("project_path"),gitBranch:I("git_branch"),startedAt:Ve("started_at",{withTimezone:!0}).notNull(),endedAt:Ve("ended_at",{withTimezone:!0}),eventCount:It("event_count").default(0),tokenUsage:de("token_usage"),analysis:de("analysis"),analyzedAt:Ve("analyzed_at",{withTimezone:!0}),analyzedEventCount:It("analyzed_event_count"),analyzedTurnCount:It("analyzed_turn_count"),metadata:de("metadata").default({}),origin:I("origin").notNull().default("unknown"),runId:q("run_id").references(()=>h.id,{onDelete:"set null"}),model:I("model"),harnessVersion:I("harness_version"),createdAt:Ve("created_at",{withTimezone:!0}).defaultNow()},e=>[E("idx_sessions_user").on(e.userId),E("idx_sessions_tool").on(e.tool),E("idx_sessions_started_at").on(e.startedAt),E("idx_sessions_project").on(e.projectId),E("idx_sessions_org_started_at").on(e.orgId,e.startedAt),E("idx_sessions_run").on(e.runId),Dn("idx_sessions_user_external").on(e.userId,e.externalSessionId)]),Ae=_o("session_events",{id:q("id").primaryKey().defaultRandom(),sessionId:q("session_id").notNull().references(()=>a.id,{onDelete:"cascade"}),sequence:It("sequence").notNull(),eventType:I("event_type").notNull(),content:I("content"),toolName:I("tool_name"),toolInput:de("tool_input"),toolOutput:de("tool_output"),tokenUsage:de("token_usage"),model:I("model"),timestamp:Ve("timestamp",{withTimezone:!0}).notNull(),metadata:de("metadata").default({})},e=>[Dn("session_events_session_sequence_idx").on(e.sessionId,e.sequence),E("idx_session_events_session_id").on(e.sessionId),E("idx_session_events_event_type").on(e.eventType),E("idx_session_events_model").on(e.model)]),Q=_o("session_instructions",{sessionId:q("session_id").notNull().references(()=>a.id,{onDelete:"cascade"}),instructionId:q("instruction_id").notNull().references(()=>n.id,{onDelete:"cascade"}),linkMethod:I("link_method").notNull(),contentHash:I("content_hash")},e=>[E("idx_session_instructions_instruction_id").on(e.instructionId)]);import{pgTable as zn,text as yt,timestamp as jn,uuid as S,integer as Rn,index as De,unique as ei}from"drizzle-orm/pg-core";var O=zn("treatment_assignments",{id:S("id").primaryKey().defaultRandom(),userId:S("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),treatmentType:yt("treatment_type").notNull(),treatmentId:S("treatment_id").notNull(),treatmentVersion:Rn("treatment_version").notNull().default(1),projectId:S("project_id").references(()=>s.id,{onDelete:"set null"}),assignedBy:S("assigned_by").references(()=>o.id,{onDelete:"set null"}),method:yt("method").notNull(),assignedAt:jn("assigned_at",{withTimezone:!0}).notNull().defaultNow()},e=>[De("idx_treatment_assignments_user").on(e.userId),De("idx_treatment_assignments_treatment").on(e.treatmentType,e.treatmentId),De("idx_treatment_assignments_project").on(e.projectId)]),M=zn("treatment_exposures",{id:S("id").primaryKey().defaultRandom(),sessionId:S("session_id").notNull().references(()=>a.id,{onDelete:"cascade"}),userId:S("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),treatmentType:yt("treatment_type").notNull(),treatmentId:S("treatment_id").notNull(),treatmentVersion:Rn("treatment_version").notNull().default(1),assignmentId:S("assignment_id").references(()=>O.id,{onDelete:"set null"}),method:yt("method").notNull(),exposedAt:jn("exposed_at",{withTimezone:!0}).notNull().defaultNow()},e=>[ei("treatment_exposures_unique").on(e.sessionId,e.treatmentType,e.treatmentId,e.treatmentVersion),De("idx_treatment_exposures_treatment").on(e.treatmentType,e.treatmentId),De("idx_treatment_exposures_user").on(e.userId),De("idx_treatment_exposures_session").on(e.sessionId)]);import{pgTable as ti,text as po,timestamp as oi,uuid as wt,integer as ni,index as kn,uniqueIndex as ri}from"drizzle-orm/pg-core";var En=ti("pending_treatment_exposures",{id:wt("id").primaryKey().defaultRandom(),userId:wt("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),externalSessionId:po("external_session_id").notNull(),treatmentType:po("treatment_type").notNull(),treatmentId:wt("treatment_id").notNull(),treatmentVersion:ni("treatment_version").notNull().default(1),method:po("method").notNull().default("injected"),projectId:wt("project_id").references(()=>s.id,{onDelete:"set null"}),createdAt:oi("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[ri("pending_treatment_exposures_unique").on(e.externalSessionId,e.treatmentType,e.treatmentId,e.treatmentVersion),kn("idx_pending_treatment_exposures_ext").on(e.externalSessionId),kn("idx_pending_treatment_exposures_user").on(e.userId)]);import{pgTable as Sn,text as Y,timestamp as bn,uuid as ze,numeric as si,index as mo,unique as ii}from"drizzle-orm/pg-core";var ue=Sn("instruction_experiments",{id:ze("id").primaryKey().defaultRandom(),userId:ze("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),instructionId:ze("instruction_id").notNull().references(()=>n.id,{onDelete:"cascade"}),projectPath:Y("project_path").notNull(),status:Y("status").notNull().default("running"),treatedShare:si("treated_share").notNull().default("0.5"),salt:Y("salt").notNull(),contentHash:Y("content_hash"),source:Y("source").notNull().default("manual"),stoppedReason:Y("stopped_reason"),createdAt:bn("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[mo("idx_instruction_experiments_lookup").on(e.userId,e.projectPath)]),Pn=Sn("instruction_experiment_arms",{id:ze("id").primaryKey().defaultRandom(),experimentId:ze("experiment_id").notNull().references(()=>ue.id,{onDelete:"cascade"}),userId:ze("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),externalSessionId:Y("external_session_id").notNull(),arm:Y("arm").notNull(),assignedAt:bn("assigned_at",{withTimezone:!0}).notNull().defaultNow()},e=>[ii("instruction_experiment_arms_unique").on(e.experimentId,e.externalSessionId),mo("idx_instruction_experiment_arms_experiment").on(e.experimentId,e.arm),mo("idx_instruction_experiment_arms_session").on(e.externalSessionId)]);import{index as Un,jsonb as jt,pgTable as Bn,text as A,timestamp as Je,unique as Hn,uniqueIndex as ci,uuid as _e}from"drizzle-orm/pg-core";import{pgTable as Ln,uuid as Re,text as zt,jsonb as Mn,timestamp as ho,uniqueIndex as di,integer as ui,unique as li}from"drizzle-orm/pg-core";import{pgTable as ai,text as Tt,timestamp as $e,jsonb as At,uuid as No,index as Dt,integer as xo}from"drizzle-orm/pg-core";import{sql as fo}from"drizzle-orm";import{pgTable as le,text as _,timestamp as g,jsonb as w,uuid as c,integer as L,boolean as Fe,index as f,unique as Kn}from"drizzle-orm/pg-core";var r=le("eval_targets",{id:c("id").primaryKey().defaultRandom(),userId:c("user_id").notNull(),name:_("name").notNull(),type:_("type").notNull(),content:_("content").notNull(),description:_("description").notNull().default(""),metadata:w("metadata").notNull().default({}),version:L("version").notNull().default(1),parentId:c("parent_id").references(()=>r.id,{onDelete:"set null"}),instructionId:c("instruction_id").references(()=>n.id,{onDelete:"set null"}),projectPath:_("project_path"),createdAt:g("created_at",{withTimezone:!0}).defaultNow(),updatedAt:g("updated_at",{withTimezone:!0}).defaultNow()},e=>[f("eval_targets_name_user_idx").on(e.name,e.userId),f("idx_eval_targets_user").on(e.userId),f("idx_eval_targets_type").on(e.type),f("idx_eval_targets_parent").on(e.parentId),f("idx_eval_targets_instruction").on(e.instructionId).where(fo`${e.instructionId} IS NOT NULL`),f("idx_eval_targets_project").on(e.projectPath).where(fo`${e.projectPath} IS NOT NULL`)]),H=le("evals",{id:c("id").primaryKey().defaultRandom(),evalTargetId:c("eval_target_id").notNull().references(()=>r.id,{onDelete:"cascade"}),name:_("name").notNull(),prompt:_("prompt").notNull(),expectedOutput:_("expected_output").notNull().default(""),files:w("files").notNull().default([]),expectations:w("expectations").notNull().default([]),retiredAt:g("retired_at",{withTimezone:!0}),retiredReason:_("retired_reason"),createdAt:g("created_at",{withTimezone:!0}).defaultNow(),updatedAt:g("updated_at",{withTimezone:!0}).defaultNow(),contentUpdatedAt:g("content_updated_at",{withTimezone:!0}).notNull().defaultNow()},e=>[f("idx_evals_target").on(e.evalTargetId),f("idx_evals_target_active").on(e.evalTargetId).where(fo`${e.retiredAt} IS NULL`)]),b=le("eval_runs",{id:c("id").primaryKey().defaultRandom(),jobId:c("job_id"),evalId:c("eval_id").notNull().references(()=>H.id,{onDelete:"cascade"}),evalTargetId:c("eval_target_id").notNull().references(()=>r.id,{onDelete:"cascade"}),evalTargetVersion:L("eval_target_version").notNull(),configuration:_("configuration").notNull(),runNumber:L("run_number").notNull().default(1),iteration:L("iteration").notNull().default(1),status:_("status").notNull().default("completed"),outputs:w("outputs").notNull().default({}),timing:w("timing").notNull().default({}),grading:w("grading").notNull().default({}),comparison:w("comparison"),createdAt:g("created_at",{withTimezone:!0}).defaultNow()},e=>[f("idx_eval_runs_eval").on(e.evalId),f("idx_eval_runs_target").on(e.evalTargetId),f("idx_eval_runs_iteration").on(e.evalTargetId,e.iteration)]),Cn=le("eval_comparisons",{id:c("id").primaryKey().defaultRandom(),userId:c("user_id").notNull(),targetAId:c("target_a_id").notNull().references(()=>r.id,{onDelete:"cascade"}),targetBId:c("target_b_id").notNull().references(()=>r.id,{onDelete:"cascade"}),targetAVersion:L("target_a_version").notNull(),targetBVersion:L("target_b_version").notNull(),isSwapped:Fe("is_swapped").notNull().default(!1),winnerTargetId:c("winner_target_id").references(()=>r.id,{onDelete:"set null"}),perEval:w("per_eval").notNull().default([]),overall:w("overall").notNull().default({}),rawOutput:_("raw_output"),model:_("model"),status:_("status").notNull().default("completed"),createdAt:g("created_at",{withTimezone:!0}).defaultNow()},e=>[f("idx_eval_comparisons_target_a").on(e.targetAId),f("idx_eval_comparisons_target_b").on(e.targetBId),f("idx_eval_comparisons_user").on(e.userId)]),qn=le("eval_grade_annotations",{id:c("id").primaryKey().defaultRandom(),userId:c("user_id").notNull(),evalRunId:c("eval_run_id").notNull().references(()=>b.id,{onDelete:"cascade"}),evalTargetId:c("eval_target_id").notNull().references(()=>r.id,{onDelete:"cascade"}),expectationIndex:L("expectation_index").notNull(),expectationText:_("expectation_text").notNull(),judgePassed:Fe("judge_passed").notNull(),judgeMethod:_("judge_method").notNull(),judgeModel:_("judge_model"),verdict:_("verdict").notNull(),flag:_("flag"),note:_("note"),createdAt:g("created_at",{withTimezone:!0}).defaultNow(),updatedAt:g("updated_at",{withTimezone:!0}).defaultNow()},e=>[f("idx_eval_grade_annotations_target").on(e.evalTargetId),f("idx_eval_grade_annotations_run").on(e.evalRunId),Kn("eval_grade_annotations_eval_run_id_expectation_index_key").on(e.evalRunId,e.expectationIndex)]),On=le("judge_reviewer_verdicts",{id:c("id").primaryKey().defaultRandom(),userId:c("user_id").notNull(),evalTargetId:c("eval_target_id").notNull().references(()=>r.id,{onDelete:"cascade"}),evalRunId:c("eval_run_id").notNull().references(()=>b.id,{onDelete:"cascade"}),expectationIndex:L("expectation_index").notNull(),expectationText:_("expectation_text").notNull(),judgePassed:Fe("judge_passed").notNull(),humanPassed:Fe("human_passed").notNull(),reviewerEngine:_("reviewer_engine").notNull(),reviewerModel:_("reviewer_model").notNull(),reviewerPassed:Fe("reviewer_passed").notNull(),resolvedAt:g("resolved_at",{withTimezone:!0}),resolution:_("resolution"),createdAt:g("created_at",{withTimezone:!0}).defaultNow(),updatedAt:g("updated_at",{withTimezone:!0}).defaultNow()},e=>[f("idx_jrv_target").on(e.evalTargetId),Kn("judge_reviewer_verdicts_eval_run_id_expectation_index_review_key").on(e.evalRunId,e.expectationIndex,e.reviewerModel)]),je=le("benchmarks",{id:c("id").primaryKey().defaultRandom(),evalTargetId:c("eval_target_id").notNull().references(()=>r.id,{onDelete:"cascade"}),iteration:L("iteration").notNull().default(1),runSummary:w("run_summary").notNull().default({}),notes:w("notes").notNull().default([]),feedback:w("feedback"),createdAt:g("created_at",{withTimezone:!0}).defaultNow()},e=>[f("idx_benchmarks_target").on(e.evalTargetId)]);var P=ai("eval_jobs",{id:No("id").primaryKey().defaultRandom(),userId:No("user_id").notNull(),evalTargetId:No("eval_target_id").notNull().references(()=>r.id,{onDelete:"cascade"}),status:Tt("status").notNull().default("pending"),config:At("config").notNull().default({}),progress:At("progress").notNull().default({}),result:At("result"),error:Tt("error"),attempts:xo("attempts").notNull().default(0),taskKind:Tt("task_kind"),payload:At("payload"),claimedBy:Tt("claimed_by"),claimedAt:$e("claimed_at",{withTimezone:!0}),leaseExpiresAt:$e("lease_expires_at",{withTimezone:!0}),leaseRecoveries:xo("lease_recoveries").notNull().default(0),hostSuspendRecoveries:xo("host_suspend_recoveries").notNull().default(0),createdAt:$e("created_at",{withTimezone:!0}).defaultNow(),updatedAt:$e("updated_at",{withTimezone:!0}).defaultNow(),completedAt:$e("completed_at",{withTimezone:!0})},e=>[Dt("idx_eval_jobs_user").on(e.userId),Dt("idx_eval_jobs_target").on(e.evalTargetId),Dt("idx_eval_jobs_status").on(e.status),Dt("idx_eval_jobs_pending").on(e.userId,e.status)]);var T=Ln("performance_studies",{id:Re("id").primaryKey().defaultRandom(),userId:Re("user_id").notNull(),evalTargetId:Re("eval_target_id").notNull().references(()=>r.id,{onDelete:"cascade"}),projectPath:zt("project_path").notNull(),protocol:Mn("protocol").notNull(),protocolHash:zt("protocol_hash").notNull(),result:Mn("result"),finalizedAt:ho("finalized_at",{withTimezone:!0}),createdAt:ho("created_at",{withTimezone:!0}).defaultNow().notNull()},e=>[di("performance_studies_protocol_unique").on(e.userId,e.evalTargetId,e.protocolHash)]),ce=Ln("performance_study_calls",{id:Re("id").primaryKey().defaultRandom(),studyId:Re("study_id").notNull().references(()=>T.id,{onDelete:"cascade"}),jobId:Re("job_id").notNull().references(()=>P.id,{onDelete:"cascade"}),taskId:zt("task_id").notNull(),arm:zt("arm").notNull(),repetition:ui("repetition").notNull(),reservedAt:ho("reserved_at",{withTimezone:!0}).defaultNow().notNull()},e=>[li("performance_study_calls_study_id_task_id_arm_repetition_key").on(e.studyId,e.taskId,e.arm,e.repetition)]);var Qe=Bn("scoped_live_confirmations",{id:_e("id").primaryKey().defaultRandom(),userId:_e("user_id").notNull(),experimentId:_e("experiment_id").notNull().references(()=>ue.id,{onDelete:"cascade"}),sourceStudyId:_e("source_study_id").notNull().references(()=>T.id,{onDelete:"restrict"}),protocol:jt("protocol").notNull(),protocolHash:A("protocol_hash").notNull(),salt:A("salt").notNull(),status:A("status").notNull().default("running"),decision:A("decision"),decisionDetail:jt("decision_detail"),startedAt:Je("started_at",{withTimezone:!0}).notNull().defaultNow(),endedAt:Je("ended_at",{withTimezone:!0})},e=>[ci("scoped_live_confirmations_experiment_unique").on(e.experimentId),Un("scoped_live_confirmations_user_status").on(e.userId,e.status)]),Rt=Bn("scoped_live_confirmation_assignments",{id:_e("id").primaryKey().defaultRandom(),confirmationId:_e("confirmation_id").notNull().references(()=>Qe.id,{onDelete:"cascade"}),userId:_e("user_id").notNull(),taskId:A("task_id").notNull(),externalSessionId:A("external_session_id").notNull(),arm:A("arm").notNull(),phase:A("phase").notNull().default("trial"),model:A("model").notNull(),configurationHash:A("configuration_hash").notNull(),enrollmentEvidence:jt("enrollment_evidence"),assignedAt:Je("assigned_at",{withTimezone:!0}).notNull().defaultNow(),deliveryHash:A("delivery_hash"),deliveredAt:Je("delivered_at",{withTimezone:!0}),outcome:A("outcome"),outcomeDetail:jt("outcome_detail"),outcomeAt:Je("outcome_at",{withTimezone:!0})},e=>[Hn("scoped_live_confirmation_task_unique").on(e.confirmationId,e.taskId),Hn("scoped_live_confirmation_session_unique").on(e.confirmationId,e.externalSessionId),Un("scoped_live_confirmation_assignments_confirmation_arm").on(e.confirmationId,e.arm)]);import{pgTable as _i,text as go,timestamp as pi,uuid as kt,numeric as vo,integer as Gn,jsonb as mi,index as fi,unique as Ni}from"drizzle-orm/pg-core";var Vn=_i("instruction_verdicts",{id:kt("id").primaryKey().defaultRandom(),userId:kt("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),instructionId:kt("instruction_id").notNull().references(()=>n.id,{onDelete:"cascade"}),contentHash:go("content_hash").notNull(),projectPath:go("project_path").notNull(),segment:mi("segment").notNull().default({}),decision:go("decision").notNull(),delta:vo("delta").notNull(),ciLower:vo("ci_lower").notNull(),ciUpper:vo("ci_upper").notNull(),nTreated:Gn("n_treated").notNull(),nControl:Gn("n_control").notNull(),experimentId:kt("experiment_id").references(()=>ue.id,{onDelete:"set null"}),decidedAt:pi("decided_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Ni("instruction_verdicts_unique").on(e.instructionId,e.contentHash,e.projectPath),fi("idx_instruction_verdicts_render").on(e.userId,e.projectPath)]);import{pgTable as xi,text as Et,timestamp as Io,uuid as yo,integer as hi,unique as gi,index as vi}from"drizzle-orm/pg-core";var Fn=xi("insight_recommendation_log",{id:yo("id").primaryKey().defaultRandom(),userId:yo("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),projectPath:Et("project_path").notNull().default(""),category:Et("category").notNull(),contentHash:Et("content_hash").notNull(),label:Et("label").notNull().default(""),firstSeenAt:Io("first_seen_at",{withTimezone:!0}).notNull().defaultNow(),lastSeenAt:Io("last_seen_at",{withTimezone:!0}).notNull().defaultNow(),timesGenerated:hi("times_generated").notNull().default(1),lastJobId:yo("last_job_id"),dismissedAt:Io("dismissed_at",{withTimezone:!0})},e=>[gi("insight_recommendation_log_unique").on(e.userId,e.projectPath,e.contentHash),vi("idx_insight_recommendation_log_read").on(e.userId,e.projectPath)]);import{pgTable as Ii,text as ke,timestamp as wo,uuid as Ye,integer as $n,index as St}from"drizzle-orm/pg-core";var D=Ii("memories",{id:Ye("id").primaryKey().defaultRandom(),userId:Ye("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),orgId:Ye("org_id"),projectId:Ye("project_id").references(()=>s.id,{onDelete:"set null"}),version:$n("version").notNull().default(1),parentId:Ye("parent_id").references(()=>D.id,{onDelete:"set null"}),kind:ke("kind").notNull(),title:ke("title").notNull(),body:ke("body").notNull(),source:ke("source").notNull(),status:ke("status").notNull().default("active"),trustClass:ke("trust_class"),trustVersion:$n("trust_version"),trustComputedAt:wo("trust_computed_at",{withTimezone:!0}),createdAt:wo("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:wo("updated_at",{withTimezone:!0}).notNull().defaultNow()},e=>[St("idx_memories_user").on(e.userId),St("idx_memories_project").on(e.projectId),St("idx_memories_parent").on(e.parentId),St("idx_memories_user_status").on(e.userId,e.status)]);import{pgTable as yi,text as pe,timestamp as To,uuid as Ao,integer as Jn,jsonb as wi,index as Qn}from"drizzle-orm/pg-core";var Yn=yi("memory_experiments",{id:Ao("id").primaryKey().defaultRandom(),memoryId:Ao("memory_id").notNull().references(()=>D.id,{onDelete:"cascade"}),userId:Ao("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),memoryVersion:Jn("memory_version").notNull().default(1),memoryBody:pe("memory_body"),taskPrompt:pe("task_prompt").notNull(),expectations:pe("expectations").array().notNull().default([]),trials:Jn("trials").notNull().default(10),model:pe("model"),engine:pe("engine").$type().notNull().default("claude"),status:pe("status").notNull().default("pending"),result:wi("result").$type(),error:pe("error"),createdAt:To("created_at",{withTimezone:!0}).notNull().defaultNow(),startedAt:To("started_at",{withTimezone:!0}),completedAt:To("completed_at",{withTimezone:!0})},e=>[Qn("idx_memory_experiments_memory").on(e.memoryId),Qn("idx_memory_experiments_user").on(e.userId)]);import{pgTable as Ti,text as Ee,timestamp as Do,uuid as zo,jsonb as Ai,uniqueIndex as Di,index as Wn}from"drizzle-orm/pg-core";var bt=Ti("session_terminal_targets",{id:zo("id").primaryKey().defaultRandom(),userId:zo("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),sessionId:zo("session_id").references(()=>a.id,{onDelete:"set null"}),externalSessionId:Ee("external_session_id"),kind:Ee("kind").notNull(),target:Ee("target").notNull(),status:Ee("status").notNull().default("active"),attachCommand:Ee("attach_command").notNull(),projectPath:Ee("project_path"),metadata:Ai("metadata").notNull().default({}),lastSeenAt:Do("last_seen_at",{withTimezone:!0}).defaultNow(),createdAt:Do("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Do("updated_at",{withTimezone:!0}).defaultNow()},e=>[Di("idx_session_terminal_targets_user_target").on(e.userId,e.target),Wn("idx_session_terminal_targets_session").on(e.sessionId),Wn("idx_session_terminal_targets_user_status").on(e.userId,e.status)]);import{boolean as zi,index as Pt,jsonb as Xn,pgTable as ji,text as me,timestamp as We,uuid as Kt,integer as jo}from"drizzle-orm/pg-core";var Zn=ji("session_send_jobs",{id:Kt("id").primaryKey().defaultRandom(),userId:Kt("user_id").notNull(),sessionId:Kt("session_id").notNull().references(()=>a.id,{onDelete:"cascade"}),terminalTargetId:Kt("terminal_target_id").references(()=>bt.id,{onDelete:"set null"}),target:me("target").notNull(),message:me("message").notNull(),submit:zi("submit").notNull().default(!0),delivery:me("delivery").notNull().default("live"),status:me("status").notNull().default("pending"),result:Xn("result"),error:me("error"),attempts:jo("attempts").notNull().default(0),taskKind:me("task_kind"),payload:Xn("payload"),claimedBy:me("claimed_by"),claimedAt:We("claimed_at",{withTimezone:!0}),leaseExpiresAt:We("lease_expires_at",{withTimezone:!0}),leaseRecoveries:jo("lease_recoveries").notNull().default(0),hostSuspendRecoveries:jo("host_suspend_recoveries").notNull().default(0),createdAt:We("created_at",{withTimezone:!0}).defaultNow(),updatedAt:We("updated_at",{withTimezone:!0}).defaultNow(),completedAt:We("completed_at",{withTimezone:!0})},e=>[Pt("idx_session_send_jobs_user").on(e.userId),Pt("idx_session_send_jobs_session").on(e.sessionId),Pt("idx_session_send_jobs_status").on(e.status),Pt("idx_session_send_jobs_pending").on(e.userId,e.status)]);import{pgTable as tr,text as fe,timestamp as Ct,jsonb as or,uuid as W,integer as Ri,boolean as ki,uniqueIndex as Ei,index as er,primaryKey as Si}from"drizzle-orm/pg-core";var R=tr("packs",{id:W("id").primaryKey().defaultRandom(),name:fe("name").notNull(),description:fe("description").notNull(),scope:fe("scope").notNull(),scopeRef:W("scope_ref"),version:fe("version").notNull().default("1.0.0"),tags:fe("tags").array(),badge:fe("badge"),metadata:or("metadata"),createdBy:W("created_by"),createdAt:Ct("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Ct("updated_at",{withTimezone:!0}).defaultNow(),archived:ki("archived").default(!1),archivedAt:Ct("archived_at",{withTimezone:!0}),archivedBy:W("archived_by"),forkedFromId:W("forked_from_id").references(()=>R.id,{onDelete:"set null"}),upstreamVersion:fe("upstream_version")},e=>[Ei("packs_name_scope_ref_idx").on(e.name,e.scope,e.scopeRef),er("idx_packs_scope").on(e.scope,e.scopeRef),er("idx_packs_created_by").on(e.createdBy)]),X=tr("pack_instructions",{packId:W("pack_id").references(()=>R.id,{onDelete:"cascade"}).notNull(),instructionId:W("instruction_id").references(()=>n.id,{onDelete:"cascade"}).notNull(),position:Ri("position").notNull().default(0),slotOverrides:or("slot_overrides"),addedAt:Ct("added_at",{withTimezone:!0}).defaultNow(),addedBy:W("added_by")},e=>[Si({columns:[e.packId,e.instructionId]})]);import{pgTable as bi,text as Ro,timestamp as Pi,jsonb as Ki,uuid as ko,index as Se}from"drizzle-orm/pg-core";var be=bi("instruction_usage_events",{id:ko("id").primaryKey().defaultRandom(),instructionId:ko("instruction_id").references(()=>n.id,{onDelete:"set null"}),userId:ko("user_id").notNull(),surface:Ro("surface").notNull(),action:Ro("action").notNull(),metadata:Ki("metadata"),traceId:Ro("trace_id"),createdAt:Pi("created_at",{withTimezone:!0}).defaultNow()},e=>[Se("idx_usage_events_instruction").on(e.instructionId),Se("idx_usage_events_user").on(e.userId),Se("idx_usage_events_surface").on(e.surface),Se("idx_usage_events_action").on(e.action),Se("idx_usage_events_created_at").on(e.createdAt),Se("idx_usage_events_user_created").on(e.userId,e.createdAt)]);import{pgTable as Ci,text as qt,timestamp as Ot,jsonb as qi,uuid as nr,index as Eo}from"drizzle-orm/pg-core";var rr=Ci("worker_connections",{id:nr("id").primaryKey().defaultRandom(),userId:nr("user_id").notNull(),workerType:qt("worker_type").notNull().default("mcp"),clientName:qt("client_name").notNull(),clientVersion:qt("client_version"),workerVersion:qt("worker_version"),lastHeartbeat:Ot("last_heartbeat",{withTimezone:!0}).notNull().defaultNow(),presenceGapStartedAt:Ot("presence_gap_started_at",{withTimezone:!0}),presenceGapEndedAt:Ot("presence_gap_ended_at",{withTimezone:!0}),connectedAt:Ot("connected_at",{withTimezone:!0}).notNull().defaultNow(),metadata:qi("metadata")},e=>[Eo("idx_worker_connections_user").on(e.userId),Eo("idx_worker_connections_heartbeat").on(e.userId,e.lastHeartbeat),Eo("idx_worker_connections_type").on(e.userId,e.workerType)]);import{pgTable as Oi,text as Mt,timestamp as Mi,jsonb as Li,uuid as sr,index as ir}from"drizzle-orm/pg-core";var ar=Oi("cli_setup_events",{id:sr("id").primaryKey().defaultRandom(),userId:sr("user_id").notNull(),deviceId:Mt("device_id").notNull(),event:Mt("event").notNull(),cliVersion:Mt("cli_version"),os:Mt("os"),props:Li("props").notNull().default({}),createdAt:Mi("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[ir("idx_cli_setup_events_user").on(e.userId,e.createdAt),ir("idx_cli_setup_events_device").on(e.deviceId,e.createdAt)]);import{pgTable as Hi,text as Ne,integer as Ui,boolean as Bi,timestamp as Gi,jsonb as Vi,uuid as Fi,index as dr}from"drizzle-orm/pg-core";var ur=Hi("cli_error_events",{id:Fi("id").primaryKey().defaultRandom(),deviceId:Ne("device_id"),event:Ne("event").notNull(),command:Ne("command"),statusCode:Ui("status_code"),message:Ne("message"),cliVersion:Ne("cli_version"),os:Ne("os"),nodeVersion:Ne("node_version"),proxied:Bi("proxied"),props:Vi("props").notNull().default({}),createdAt:Gi("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[dr("idx_cli_error_events_created").on(e.createdAt),dr("idx_cli_error_events_device").on(e.deviceId,e.createdAt)]);import{sql as So}from"drizzle-orm";import{pgTable as $i,text as U,timestamp as Ji,jsonb as Lt,uuid as Ht,boolean as Qi,index as Xe,uniqueIndex as Yi}from"drizzle-orm/pg-core";var lr=$i("instruction_promotions",{id:Ht("id").primaryKey().defaultRandom(),userId:Ht("user_id").notNull(),evalTargetId:Ht("eval_target_id").notNull().references(()=>r.id,{onDelete:"cascade"}),instructionId:Ht("instruction_id").references(()=>n.id,{onDelete:"set null"}),fromContentHash:U("from_content_hash").notNull(),toContentHash:U("to_content_hash").notNull(),fromContent:U("from_content").notNull(),toContent:U("to_content").notNull(),proposalSource:U("proposal_source").notNull(),proposalRationale:U("proposal_rationale").notNull().default(""),decision:U("decision").notNull(),applied:Qi("applied").notNull().default(!1),refusals:Lt("refusals").notNull().default([]),rationale:U("rationale").notNull().default(""),effectClass:U("effect_class").notNull(),verdict:Lt("verdict").notNull().default({}),gates:Lt("gates").notNull().default({}),touchedSections:Lt("touched_sections").notNull().default([]),createdAt:Ji("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Xe("idx_instruction_promotions_budget").on(e.evalTargetId,e.createdAt.desc()).where(So`${e.applied}`),Xe("idx_instruction_promotions_target").on(e.evalTargetId,e.createdAt.desc()),Xe("idx_instruction_promotions_user").on(e.userId,e.createdAt.desc()),Xe("idx_instruction_promotions_to_hash").on(e.toContentHash),Yi("uq_instruction_promotions_applied").on(e.evalTargetId,e.fromContentHash,e.toContentHash).where(So`${e.applied}`),Xe("idx_instruction_promotions_applied_hash").on(e.toContentHash,e.createdAt.desc()).where(So`${e.applied}`)]);import{index as Ze,integer as Wi,jsonb as Xi,pgTable as Zi,text as y,timestamp as Pe,uniqueIndex as ea,uuid as Z}from"drizzle-orm/pg-core";var cr=Zi("recommendation_applications",{id:Z("id").primaryKey().defaultRandom(),userId:Z("user_id").notNull(),instructionId:Z("instruction_id").notNull().references(()=>n.id,{onDelete:"cascade"}),projectId:Z("project_id").references(()=>s.id,{onDelete:"set null"}),projectPath:y("project_path").notNull(),harness:y("harness").notNull(),targetPath:y("target_path").notNull(),status:y("status").notNull().default("proposed"),applyMode:y("apply_mode").notNull(),beforeHash:y("before_hash"),appliedHash:y("applied_hash"),appliedAt:Pe("applied_at",{withTimezone:!0}),measurementStartedAt:Pe("measurement_started_at",{withTimezone:!0}),measurementEndedAt:Pe("measurement_ended_at",{withTimezone:!0}),verdict:y("verdict"),verdictDetail:y("verdict_detail"),revertedAt:Pe("reverted_at",{withTimezone:!0}),sourceStudyId:Z("source_study_id").references(()=>T.id,{onDelete:"restrict"}),scopedConfirmationId:Z("scoped_confirmation_id").references(()=>Qe.id,{onDelete:"restrict"}),scopedConfirmationAssignmentId:Z("scoped_confirmation_assignment_id").references(()=>Rt.id,{onDelete:"restrict"}),boundaryClass:y("boundary_class"),targets:y("targets").array().notNull().default([]),inverse:Xi("inverse"),requires:y("requires").array().notNull().default([]),provides:y("provides").array().notNull().default([]),applyBatchId:Z("apply_batch_id"),applySeq:Wi("apply_seq"),createdAt:Pe("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:Pe("updated_at",{withTimezone:!0}).notNull().defaultNow()},e=>[ea("uq_recommendation_applications_target").on(e.userId,e.instructionId,e.projectPath,e.harness,e.targetPath),Ze("idx_recommendation_applications_user_status").on(e.userId,e.status,e.updatedAt.desc()),Ze("idx_recommendation_applications_user_harness").on(e.userId,e.harness,e.updatedAt.desc()),Ze("idx_recommendation_applications_project").on(e.projectId,e.updatedAt.desc()),Ze("idx_recommendation_applications_batch").on(e.userId,e.applyBatchId,e.applySeq.desc()),Ze("idx_recommendation_applications_requires").using("gin",e.requires)]);import{pgTable as ta,text as K,timestamp as _r,jsonb as et,uuid as bo,integer as Ke,real as oa,index as ee,uniqueIndex as pr}from"drizzle-orm/pg-core";import{sql as Po}from"drizzle-orm";var te=ta("context_snapshots",{id:bo("id").primaryKey().defaultRandom(),sessionId:bo("session_id").references(()=>a.id,{onDelete:"cascade"}),userId:bo("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),sequence:Ke("sequence").notNull().default(0),provider:K("provider").notNull(),model:K("model").notNull(),systemPrompt:K("system_prompt").notNull(),injectedInstructions:et("injected_instructions").notNull().default([]),messagesSummary:et("messages_summary").notNull(),tools:et("tools").notNull().default([]),systemHash:K("system_hash").notNull(),requestHash:K("request_hash").notNull().default(""),toolsHash:K("tools_hash"),injectedHash:K("injected_hash"),messagesDelta:et("messages_delta").default([]),messagesDeltaRef:K("messages_delta_ref"),messagesBaseLength:Ke("messages_base_length"),payloadPrunedAt:_r("payload_pruned_at",{withTimezone:!0}),deltaOffloadState:K("delta_offload_state").notNull().default("inline"),deltaGzipBytes:Ke("delta_gzip_bytes"),deltaOffloadError:K("delta_offload_error"),deltaOffloadAttempts:Ke("delta_offload_attempts").notNull().default(0),maxTokens:Ke("max_tokens"),temperature:oa("temperature"),estimatedTokens:Ke("estimated_tokens"),capturedAt:_r("captured_at",{withTimezone:!0}).notNull().defaultNow(),metadata:et("metadata").default({})},e=>[ee("idx_context_snapshots_session").on(e.sessionId),ee("idx_context_snapshots_user").on(e.userId),ee("idx_context_snapshots_hash").on(e.systemHash),ee("idx_context_snapshots_request_hash").on(e.requestHash),pr("idx_snapshots_session_request").on(e.sessionId,e.requestHash),pr("idx_snapshots_session_sequence").on(e.sessionId,e.sequence),ee("idx_context_snapshots_user_session_captured").on(e.userId,e.sessionId,e.capturedAt.desc()),ee("idx_snapshots_unpruned_captured").on(e.capturedAt,e.id).where(Po`${e.payloadPrunedAt} is null`),ee("idx_snapshots_pending_offload").on(e.deltaOffloadState,e.capturedAt,e.id).where(Po`${e.deltaOffloadState} = 'pending'`),ee("idx_snapshots_delta_ref").on(e.messagesDeltaRef).where(Po`${e.messagesDeltaRef} is not null`)]);import{pgTable as na,text as mr,timestamp as fr,jsonb as ra,integer as sa,index as ia}from"drizzle-orm/pg-core";var Nr=na("content_blobs",{hash:mr("hash").primaryKey(),contentType:mr("content_type").notNull(),content:ra("content").notNull(),sizeBytes:sa("size_bytes").notNull().default(0),createdAt:fr("created_at",{withTimezone:!0}).defaultNow(),lastReferencedAt:fr("last_referenced_at",{withTimezone:!0}).notNull().defaultNow()},e=>[ia("idx_content_blobs_type").on(e.contentType)]);import{integer as xr,jsonb as aa,pgTable as da,timestamp as ua,uuid as la}from"drizzle-orm/pg-core";var hr=da("session_capture_heads",{sessionId:la("session_id").primaryKey().references(()=>a.id,{onDelete:"cascade"}),sequence:xr("sequence").notNull(),rawMessageHashes:aa("raw_message_hashes").notNull().$type(),version:xr("version").notNull(),updatedAt:ua("updated_at",{withTimezone:!0}).notNull().defaultNow()});import{index as ca,integer as gr,pgTable as _a,text as Ko,timestamp as vr,uniqueIndex as pa,uuid as ma}from"drizzle-orm/pg-core";import{sql as fa}from"drizzle-orm";var Ir=_a("snapshot_delta_objects",{ref:Ko("ref").primaryKey(),snapshotId:ma("snapshot_id"),compressedBytes:gr("compressed_bytes").notNull(),state:Ko("state").notNull(),createdAt:vr("created_at",{withTimezone:!0}).notNull().defaultNow(),lastAttemptAt:vr("last_attempt_at",{withTimezone:!0}),attempts:gr("attempts").notNull().default(0),lastError:Ko("last_error")},e=>[ca("idx_snapshot_delta_objects_state_created").on(e.state,e.createdAt),pa("snapshot_delta_objects_snapshot_id_unique").on(e.snapshotId).where(fa`${e.snapshotId} is not null`)]);import{pgTable as Na,text as tt,timestamp as ot,jsonb as yr,uuid as wr,integer as Co,index as Tr}from"drizzle-orm/pg-core";var Ar=Na("agent_jobs",{id:wr("id").primaryKey().defaultRandom(),userId:wr("user_id").notNull(),taskKind:tt("task_kind").notNull(),status:tt("status").notNull().default("pending"),payload:yr("payload").notNull(),dedupeKey:tt("dedupe_key"),result:yr("result"),error:tt("error"),attempts:Co("attempts").notNull().default(0),claimedBy:tt("claimed_by"),claimedAt:ot("claimed_at",{withTimezone:!0}),leaseExpiresAt:ot("lease_expires_at",{withTimezone:!0}),leaseRecoveries:Co("lease_recoveries").notNull().default(0),hostSuspendRecoveries:Co("host_suspend_recoveries").notNull().default(0),createdAt:ot("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:ot("updated_at",{withTimezone:!0}).notNull().defaultNow(),completedAt:ot("completed_at",{withTimezone:!0})},e=>[Tr("idx_agent_jobs_claim").on(e.userId,e.status,e.taskKind,e.createdAt),Tr("idx_agent_jobs_dedupe").on(e.userId,e.taskKind,e.dedupeKey)]);import{pgTable as xa,text as nt,timestamp as rt,jsonb as Ut,uuid as qo,index as Bt,integer as Oo}from"drizzle-orm/pg-core";var Dr=xa("insights_jobs",{id:qo("id").primaryKey().defaultRandom(),userId:qo("user_id").notNull(),status:nt("status").notNull().default("pending"),projectPath:nt("project_path"),projectId:qo("project_id").references(()=>s.id,{onDelete:"set null"}),config:Ut("config").notNull().default({}),progress:Ut("progress").notNull().default({}),result:Ut("result"),error:nt("error"),attempts:Oo("attempts").notNull().default(0),taskKind:nt("task_kind"),payload:Ut("payload"),claimedBy:nt("claimed_by"),claimedAt:rt("claimed_at",{withTimezone:!0}),leaseExpiresAt:rt("lease_expires_at",{withTimezone:!0}),leaseRecoveries:Oo("lease_recoveries").notNull().default(0),hostSuspendRecoveries:Oo("host_suspend_recoveries").notNull().default(0),createdAt:rt("created_at",{withTimezone:!0}).defaultNow(),updatedAt:rt("updated_at",{withTimezone:!0}).defaultNow(),completedAt:rt("completed_at",{withTimezone:!0})},e=>[Bt("idx_insights_jobs_user").on(e.userId),Bt("idx_insights_jobs_status").on(e.status),Bt("idx_insights_jobs_pending").on(e.userId,e.status),Bt("idx_insights_jobs_project").on(e.projectId)]);import{pgTable as ha,text as Mo,timestamp as Gt,uuid as zr,index as ga,uniqueIndex as va}from"drizzle-orm/pg-core";var Ce=ha("api_keys",{id:zr("id").primaryKey().defaultRandom(),userId:zr("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),name:Mo("name").notNull(),keyHash:Mo("key_hash").notNull(),keyPrefix:Mo("key_prefix").notNull(),lastUsedAt:Gt("last_used_at",{withTimezone:!0}),expiresAt:Gt("expires_at",{withTimezone:!0}),revokedAt:Gt("revoked_at",{withTimezone:!0}),createdAt:Gt("created_at",{withTimezone:!0}).defaultNow()},e=>[ga("idx_api_keys_user").on(e.userId),va("idx_api_keys_hash").on(e.keyHash)]);import{pgTable as Ia,text as Lo,timestamp as jr,uuid as ya,index as wa}from"drizzle-orm/pg-core";var Rr=Ia("extension_auth_codes",{code:Lo("code").primaryKey(),userId:ya("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),editor:Lo("editor"),email:Lo("email"),expiresAt:jr("expires_at",{withTimezone:!0}).notNull(),createdAt:jr("created_at",{withTimezone:!0}).defaultNow()},e=>[wa("idx_ext_auth_codes_expiry").on(e.expiresAt)]);import{pgTable as Ta,text as Aa,timestamp as kr,jsonb as Da,uuid as Ho,index as Er}from"drizzle-orm/pg-core";var qe=Ta("eval_conversations",{id:Ho("id").primaryKey().defaultRandom(),evalTargetId:Ho("eval_target_id").notNull().references(()=>r.id,{onDelete:"cascade"}),userId:Ho("user_id").notNull(),messages:Da("messages").notNull().default([]),status:Aa("status").notNull().default("active"),createdAt:kr("created_at",{withTimezone:!0}).defaultNow(),updatedAt:kr("updated_at",{withTimezone:!0}).defaultNow()},e=>[Er("idx_eval_conversations_target").on(e.evalTargetId),Er("idx_eval_conversations_user").on(e.userId)]);import{pgTable as za,text as B,timestamp as Sr,jsonb as ja,uuid as Uo}from"drizzle-orm/pg-core";var br=za("skill_submissions",{id:Uo("id").primaryKey().defaultRandom(),skillId:B("skill_id").notNull(),name:B("name").notNull(),description:B("description").notNull(),category:B("category").notNull(),tools:B("tools").array().notNull(),tags:B("tags").array().default([]),content:B("content").notNull(),status:B("status").notNull().default("pending"),submittedBy:Uo("submitted_by").notNull(),reviewedBy:Uo("reviewed_by"),reviewNote:B("review_note"),metadata:ja("metadata"),createdAt:Sr("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Sr("updated_at",{withTimezone:!0}).defaultNow()});import{pgTable as Ra,text as st,timestamp as Pr,jsonb as ka,uuid as Ea,uniqueIndex as Sa,index as Kr}from"drizzle-orm/pg-core";var Cr=Ra("harness_releases",{id:Ea("id").primaryKey().defaultRandom(),harness:st("harness").notNull(),version:st("version").notNull(),publishedAt:Pr("published_at",{withTimezone:!0}).notNull(),title:st("title"),body:st("body"),categories:ka("categories").default({}),url:st("url"),createdAt:Pr("created_at",{withTimezone:!0}).defaultNow()},e=>[Sa("idx_harness_releases_unique").on(e.harness,e.version),Kr("idx_harness_releases_harness").on(e.harness),Kr("idx_harness_releases_published").on(e.publishedAt)]);import{pgTable as ba,text as Oe,timestamp as qr,jsonb as Pa,uuid as Or,index as Mr,uniqueIndex as Ka}from"drizzle-orm/pg-core";var Bo=ba("notifications",{id:Or("id").primaryKey().defaultRandom(),userId:Or("user_id").notNull(),type:Oe("type").notNull(),title:Oe("title").notNull(),body:Oe("body"),url:Oe("url"),sourceTable:Oe("source_table"),sourceId:Oe("source_id"),metadata:Pa("metadata").notNull().default({}),readAt:qr("read_at",{withTimezone:!0}),createdAt:qr("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Mr("idx_notifications_user_created").on(e.userId,e.createdAt),Mr("idx_notifications_user_unread").on(e.userId),Ka("idx_notifications_source_dedup").on(e.userId,e.sourceTable,e.sourceId)]);import{pgTable as Ca,text as it,timestamp as at,jsonb as Go,uuid as Vo,index as Vt,integer as Fo}from"drizzle-orm/pg-core";var Me=Ca("launch_jobs",{id:Vo("id").primaryKey().defaultRandom(),userId:Vo("user_id").notNull(),tool:it("tool").notNull(),status:it("status").notNull().default("pending"),config:Go("config").notNull().default({}),result:Go("result"),error:it("error"),attempts:Fo("attempts").notNull().default(0),taskKind:it("task_kind"),payload:Go("payload"),claimedBy:it("claimed_by"),claimedAt:at("claimed_at",{withTimezone:!0}),leaseExpiresAt:at("lease_expires_at",{withTimezone:!0}),leaseRecoveries:Fo("lease_recoveries").notNull().default(0),hostSuspendRecoveries:Fo("host_suspend_recoveries").notNull().default(0),createdAt:at("created_at",{withTimezone:!0}).defaultNow(),updatedAt:at("updated_at",{withTimezone:!0}).defaultNow(),completedAt:at("completed_at",{withTimezone:!0}),runId:Vo("run_id").references(()=>h.id,{onDelete:"set null"})},e=>[Vt("idx_launch_jobs_user").on(e.userId),Vt("idx_launch_jobs_status").on(e.status),Vt("idx_launch_jobs_pending").on(e.userId,e.status),Vt("idx_launch_jobs_run").on(e.runId)]);import{pgTable as Lr,uuid as G,text as oe,real as qa,timestamp as dt,boolean as Oa,uniqueIndex as Ma,index as ut}from"drizzle-orm/pg-core";var Hr=["add","remove","trim"],$o=Lr("instruction_suggestions",{id:G("id").primaryKey().defaultRandom(),userId:G("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),instructionId:G("instruction_id").notNull().references(()=>n.id,{onDelete:"cascade"}),projectPath:oe("project_path").notNull(),projectId:G("project_id").references(()=>s.id,{onDelete:"set null"}),score:qa("score").notNull(),reason:oe("reason").notNull(),kind:oe("kind").$type().notNull().default("add"),generatedAt:dt("generated_at",{withTimezone:!0}).notNull().defaultNow(),isStale:Oa("is_stale").notNull().default(!1),dismissedAt:dt("dismissed_at",{withTimezone:!0}),acceptedAt:dt("accepted_at",{withTimezone:!0}),declinedAt:dt("declined_at",{withTimezone:!0}),declinedReason:oe("declined_reason"),promotedToInstructionId:G("promoted_to_instruction_id").references(()=>n.id,{onDelete:"set null"})},e=>[Ma("idx_instruction_suggestions_user_project_instruction_kind").on(e.userId,e.projectPath,e.instructionId,e.kind),ut("idx_instruction_suggestions_user_project").on(e.userId,e.projectPath),ut("idx_instruction_suggestions_user_proj_id").on(e.userId,e.projectId),ut("idx_instruction_suggestions_generated_at").on(e.generatedAt)]),Ur=Lr("instruction_suggestion_events",{id:G("id").primaryKey().defaultRandom(),suggestionId:G("suggestion_id").notNull().references(()=>$o.id,{onDelete:"cascade"}),userId:G("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),eventType:oe("event_type").notNull(),tool:oe("tool"),sessionId:G("session_id"),projectPath:oe("project_path").notNull(),actor:oe("actor"),createdAt:dt("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[ut("idx_instruction_suggestion_events_suggestion_id").on(e.suggestionId),ut("idx_instruction_suggestion_events_user_id").on(e.userId)]);import{pgTable as La,text as Jo,integer as Ha,numeric as lt,timestamp as Qo,index as Ua,primaryKey as Ba}from"drizzle-orm/pg-core";var Br=La("model_pricing",{provider:Jo("provider").notNull(),modelId:Jo("model_id").notNull(),inputPerM:lt("input_per_m").notNull(),outputPerM:lt("output_per_m").notNull(),cacheReadPerM:lt("cache_read_per_m").notNull(),cacheWrite5mPerM:lt("cache_write_5m_per_m").notNull(),cacheWrite1hPerM:lt("cache_write_1h_per_m").notNull(),contextWindow:Ha("context_window"),effectiveFrom:Qo("effective_from",{withTimezone:!0}).notNull(),effectiveUntil:Qo("effective_until",{withTimezone:!0}),source:Jo("source").notNull(),verifiedAt:Qo("verified_at",{withTimezone:!0})},e=>[Ba({columns:[e.provider,e.modelId,e.effectiveFrom]}),Ua("idx_model_pricing_active").on(e.provider,e.modelId,e.effectiveFrom.desc())]);import{pgTable as Ga,text as xe,numeric as Gr,timestamp as Vr,uuid as Fr,jsonb as Va,index as $r}from"drizzle-orm/pg-core";var Jr=Ga("limit_observations",{id:Fr("id").primaryKey().defaultRandom(),observedAt:Vr("observed_at",{withTimezone:!0}).notNull().defaultNow(),provider:xe("provider").notNull(),plan:xe("plan").notNull(),limitType:xe("limit_type").notNull(),value:Gr("value").notNull(),unit:xe("unit").notNull(),comparator:xe("comparator").notNull().default("="),resetsAt:Vr("resets_at",{withTimezone:!0}),sourceType:xe("source_type").notNull(),sourceUrl:xe("source_url"),sourceEvidence:Va("source_evidence"),confidence:Gr("confidence").notNull(),userId:Fr("user_id")},e=>[$r("idx_limit_obs_lookup").on(e.provider,e.plan,e.limitType,e.observedAt.desc()),$r("idx_limit_obs_user").on(e.userId,e.observedAt.desc())]);import{pgTable as Fa,text as Ft,timestamp as $a,uuid as Ja,jsonb as Qa,boolean as Ya,uniqueIndex as Wa}from"drizzle-orm/pg-core";var Qr=Fa("provider_docs_snapshots",{id:Ja("id").primaryKey().defaultRandom(),fetchedAt:$a("fetched_at",{withTimezone:!0}).notNull().defaultNow(),provider:Ft("provider").notNull(),docUrl:Ft("doc_url").notNull(),contentHash:Ft("content_hash").notNull(),content:Ft("content").notNull(),parseSuccess:Ya("parse_success").notNull(),parseErrors:Qa("parse_errors")},e=>[Wa("idx_docs_dedup").on(e.provider,e.docUrl,e.contentHash)]);import{pgTable as Xa,text as $t,numeric as Yr,timestamp as Wr,uuid as Za,primaryKey as ed,index as td}from"drizzle-orm/pg-core";var Xr=Xa("plan_limits_active",{provider:$t("provider").notNull(),plan:$t("plan").notNull(),limitType:$t("limit_type").notNull(),value:Yr("value").notNull(),unit:$t("unit").notNull(),effectiveFrom:Wr("effective_from",{withTimezone:!0}).notNull(),effectiveUntil:Wr("effective_until",{withTimezone:!0}),confidence:Yr("confidence").notNull(),sourceObservationIds:Za("source_observation_ids").array().notNull()},e=>[ed({columns:[e.provider,e.plan,e.limitType,e.effectiveFrom]}),td("idx_plan_limits_lookup").on(e.provider,e.plan,e.limitType,e.effectiveFrom.desc())]);import{pgTable as od,text as Yo,timestamp as nd,uuid as Zr,jsonb as rd,index as sd}from"drizzle-orm/pg-core";var es=od("alert_dispatches",{id:Zr("id").primaryKey().defaultRandom(),userId:Zr("user_id").notNull(),alertKey:Yo("alert_key").notNull(),severity:Yo("severity").notNull(),lastDispatchedAt:nd("last_dispatched_at",{withTimezone:!0}).notNull().defaultNow(),lastState:rd("last_state").notNull(),channel:Yo("channel").notNull()},e=>[sd("idx_alert_user_key").on(e.userId,e.alertKey,e.lastDispatchedAt.desc())]);import{date as ts,integer as Wo,pgTable as os,primaryKey as id,text as ad,timestamp as Xo,uuid as dd}from"drizzle-orm/pg-core";var ns=os("weekly_digest_deliveries",{userId:dd("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),weekStart:ts("week_start").notNull(),sentAt:Xo("sent_at",{withTimezone:!0}).notNull().defaultNow(),providerMessageId:ad("provider_message_id")},e=>[id({columns:[e.userId,e.weekStart]})]),rs=os("weekly_digest_runs",{weekStart:ts("week_start").primaryKey(),startedAt:Xo("started_at",{withTimezone:!0}).notNull().defaultNow(),finishedAt:Xo("finished_at",{withTimezone:!0}),sent:Wo("sent"),skipped:Wo("skipped"),failed:Wo("failed")});import{pgTable as ud,text as Zo,timestamp as ss,uuid as en,integer as ld,index as cd,unique as _d}from"drizzle-orm/pg-core";var is=ud("scaffolding_fingerprints",{id:en("id").primaryKey().defaultRandom(),userId:en("user_id").notNull(),harness:Zo("harness").notNull(),model:Zo("model").notNull(),toolsHash:Zo("tools_hash").notNull(),firstSeenAt:ss("first_seen_at",{withTimezone:!0}).notNull().defaultNow(),lastSeenAt:ss("last_seen_at",{withTimezone:!0}).notNull().defaultNow(),snapshotCount:ld("snapshot_count").notNull().default(1),firstSessionId:en("first_session_id")},e=>[_d("scaffolding_fingerprints_user_id_harness_model_tools_hash_key").on(e.userId,e.harness,e.model,e.toolsHash),cd("idx_scaffolding_fp_segment").on(e.userId,e.harness,e.model)]);import{pgTable as pd,text as tn,timestamp as md,jsonb as fd,uuid as as,integer as Nd,unique as xd}from"drizzle-orm/pg-core";var ds=pd("scaffolding_segments",{id:as("id").primaryKey().defaultRandom(),userId:as("user_id").notNull(),harness:tn("harness").notNull(),model:tn("model").notNull(),coreNames:fd("core_names").notNull(),coreHash:tn("core_hash").notNull(),activeFingerprints:Nd("active_fingerprints").notNull(),computedAt:md("computed_at",{withTimezone:!0}).notNull().defaultNow()},e=>[xd("scaffolding_segments_user_id_harness_model_key").on(e.userId,e.harness,e.model)]);import{pgTable as hd,text as ne,timestamp as us,uuid as on,uniqueIndex as gd,index as vd}from"drizzle-orm/pg-core";var ls=["blog","docs","changelog"],nn=hd("vendor_guidance_snapshots",{id:on("id").primaryKey().defaultRandom(),fetchedAt:us("fetched_at",{withTimezone:!0}).notNull().defaultNow(),sourceId:ne("source_id").notNull(),harness:ne("harness").notNull(),vendor:ne("vendor").notNull(),kind:ne("kind").$type().notNull(),url:ne("url").notNull(),title:ne("title").notNull(),contentHash:ne("content_hash").notNull(),text:ne("text").notNull(),previousSnapshotId:on("previous_snapshot_id").references(()=>nn.id,{onDelete:"set null"}),pitchedAt:us("pitched_at",{withTimezone:!0}),pitchInstructionId:on("pitch_instruction_id").references(()=>n.id,{onDelete:"set null"})},e=>[gd("idx_vendor_guidance_dedup").on(e.sourceId,e.contentHash),vd("idx_vendor_guidance_source_fetched").on(e.sourceId,e.fetchedAt)]);import{drizzle as fs}from"drizzle-orm/postgres-js";import Ns from"postgres";var Jt={};Ks(Jt,{GUIDANCE_KINDS:()=>ls,SUGGESTION_KINDS:()=>Hr,agentJobs:()=>Ar,agentRuns:()=>h,agentRunsRelations:()=>Kd,alertDispatches:()=>es,announcementDeliveries:()=>mn,announcements:()=>pn,apiKeys:()=>Ce,apiKeysRelations:()=>yd,benchmarks:()=>je,benchmarksRelations:()=>$d,cliErrorEvents:()=>ur,cliSetupEvents:()=>ar,contentBlobs:()=>Nr,contextSnapshots:()=>te,contextSnapshotsRelations:()=>Yd,evalComparisons:()=>Cn,evalConversations:()=>qe,evalConversationsRelations:()=>Qd,evalGradeAnnotations:()=>qn,evalJobs:()=>P,evalJobsRelations:()=>Jd,evalRuns:()=>b,evalRunsRelations:()=>Fd,evalTargets:()=>r,evalTargetsRelations:()=>Gd,evals:()=>H,evalsRelations:()=>Vd,extensionAuthCodes:()=>Rr,harnessReleases:()=>Cr,insightRecommendationLog:()=>Fn,insightsJobs:()=>Dr,instructionEvents:()=>we,instructionEventsRelations:()=>Rd,instructionExperimentArms:()=>Pn,instructionExperiments:()=>ue,instructionPromotions:()=>lr,instructionSuggestionEvents:()=>Ur,instructionSuggestions:()=>$o,instructionUsageEvents:()=>be,instructionUsageEventsRelations:()=>Bd,instructionVerdicts:()=>Vn,instructionVersionIdentities:()=>In,instructionVersions:()=>ye,instructionVersionsRelations:()=>Ed,instructions:()=>n,instructionsRelations:()=>jd,judgeReviewerVerdicts:()=>On,launchJobs:()=>Me,launchJobsRelations:()=>Cd,limitObservations:()=>Jr,memories:()=>D,memoriesRelations:()=>kd,memoryExperiments:()=>Yn,modelPricing:()=>Br,notificationPreferences:()=>fn,notifications:()=>Bo,orgInvitations:()=>C,orgInvitationsRelations:()=>Ad,organizations:()=>l,organizationsRelations:()=>wd,packInstructions:()=>X,packInstructionsRelations:()=>Ud,packs:()=>R,packsRelations:()=>Hd,pendingTreatmentExposures:()=>En,performanceStudies:()=>T,performanceStudiesRelations:()=>Wd,performanceStudyCalls:()=>ce,performanceStudyCallsRelations:()=>Xd,planLimitsActive:()=>Xr,profiles:()=>o,profilesRelations:()=>Id,projectCheckouts:()=>Tn,projectInstructions:()=>J,projectInstructionsRelations:()=>bd,projects:()=>s,projectsRelations:()=>Sd,providerDocsSnapshots:()=>Qr,recommendationApplications:()=>cr,scaffoldingFingerprints:()=>is,scaffoldingSegments:()=>ds,scopedLiveConfirmationAssignments:()=>Rt,scopedLiveConfirmations:()=>Qe,sessionCaptureHeads:()=>hr,sessionEvents:()=>Ae,sessionEventsRelations:()=>qd,sessionInstructions:()=>Q,sessionInstructionsRelations:()=>Od,sessionSendJobs:()=>Zn,sessionTerminalTargets:()=>bt,sessions:()=>a,sessionsRelations:()=>Pd,skillSubmissions:()=>br,snapshotDeltaObjects:()=>Ir,teams:()=>v,teamsRelations:()=>Td,treatmentAssignments:()=>O,treatmentAssignmentsRelations:()=>Md,treatmentExposures:()=>M,treatmentExposuresRelations:()=>Ld,userOrganizations:()=>ve,userOrganizationsRelations:()=>Dd,userTeams:()=>Ie,userTeamsRelations:()=>zd,vendorGuidanceSnapshots:()=>nn,weeklyDigestDeliveries:()=>ns,weeklyDigestRuns:()=>rs,workerConnections:()=>rr});import{relations as i}from"drizzle-orm";var Id=i(o,({many:e})=>({sessions:e(a),contextSnapshots:e(te),apiKeys:e(Ce)})),yd=i(Ce,({one:e})=>({profile:e(o,{fields:[Ce.userId],references:[o.id]})})),wd=i(l,({many:e})=>({teams:e(v),userOrganizations:e(ve),projects:e(s),invitations:e(C)})),Td=i(v,({one:e,many:t})=>({organization:e(l,{fields:[v.orgId],references:[l.id]}),userTeams:t(Ie),invitations:t(C)})),Ad=i(C,({one:e})=>({organization:e(l,{fields:[C.orgId],references:[l.id]}),team:e(v,{fields:[C.teamId],references:[v.id]}),inviter:e(o,{fields:[C.invitedBy],references:[o.id]})})),Dd=i(ve,({one:e})=>({organization:e(l,{fields:[ve.orgId],references:[l.id]})})),zd=i(Ie,({one:e})=>({team:e(v,{fields:[Ie.teamId],references:[v.id]})})),jd=i(n,({one:e,many:t})=>({versions:t(ye),projectInstructions:t(J),events:t(we),usageEvents:t(be),sessionInstructions:t(Q),packInstructions:t(X),forkedFrom:e(n,{fields:[n.forkedFromId],references:[n.id]})})),Rd=i(we,({one:e})=>({instruction:e(n,{fields:[we.instructionId],references:[n.id]})})),kd=i(D,({one:e,many:t})=>({project:e(s,{fields:[D.projectId],references:[s.id]}),parent:e(D,{fields:[D.parentId],references:[D.id]}),versions:t(D)})),Ed=i(ye,({one:e})=>({instruction:e(n,{fields:[ye.instructionId],references:[n.id]})})),Sd=i(s,({one:e,many:t})=>({organization:e(l,{fields:[s.orgId],references:[l.id]}),projectInstructions:t(J),sessions:t(a)})),bd=i(J,({one:e})=>({project:e(s,{fields:[J.projectId],references:[s.id]}),instruction:e(n,{fields:[J.instructionId],references:[n.id]})})),Pd=i(a,({one:e,many:t})=>({profile:e(o,{fields:[a.userId],references:[o.id]}),project:e(s,{fields:[a.projectId],references:[s.id]}),run:e(h,{fields:[a.runId],references:[h.id]}),events:t(Ae),sessionInstructions:t(Q),treatmentExposures:t(M),contextSnapshots:t(te)})),Kd=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(Me)})),Cd=i(Me,({one:e})=>({run:e(h,{fields:[Me.runId],references:[h.id]})})),qd=i(Ae,({one:e})=>({session:e(a,{fields:[Ae.sessionId],references:[a.id]})})),Od=i(Q,({one:e})=>({session:e(a,{fields:[Q.sessionId],references:[a.id]}),instruction:e(n,{fields:[Q.instructionId],references:[n.id]})})),Md=i(O,({one:e,many:t})=>({owner:e(o,{fields:[O.userId],references:[o.id]}),project:e(s,{fields:[O.projectId],references:[s.id]}),exposures:t(M)})),Ld=i(M,({one:e})=>({session:e(a,{fields:[M.sessionId],references:[a.id]}),owner:e(o,{fields:[M.userId],references:[o.id]}),assignment:e(O,{fields:[M.assignmentId],references:[O.id]})})),Hd=i(R,({one:e,many:t})=>({packInstructions:t(X),forkedFrom:e(R,{fields:[R.forkedFromId],references:[R.id]})})),Ud=i(X,({one:e})=>({pack:e(R,{fields:[X.packId],references:[R.id]}),instruction:e(n,{fields:[X.instructionId],references:[n.id]})})),Bd=i(be,({one:e})=>({instruction:e(n,{fields:[be.instructionId],references:[n.id]})})),Gd=i(r,({one:e,many:t})=>({parent:e(r,{fields:[r.parentId],references:[r.id]}),evals:t(H),evalRuns:t(b),benchmarks:t(je),evalJobs:t(P),evalConversations:t(qe)})),Vd=i(H,({one:e,many:t})=>({evalTarget:e(r,{fields:[H.evalTargetId],references:[r.id]}),runs:t(b)})),Fd=i(b,({one:e})=>({eval:e(H,{fields:[b.evalId],references:[H.id]}),evalTarget:e(r,{fields:[b.evalTargetId],references:[r.id]})})),$d=i(je,({one:e})=>({evalTarget:e(r,{fields:[je.evalTargetId],references:[r.id]})})),Jd=i(P,({one:e})=>({evalTarget:e(r,{fields:[P.evalTargetId],references:[r.id]})})),Qd=i(qe,({one:e})=>({evalTarget:e(r,{fields:[qe.evalTargetId],references:[r.id]})})),Yd=i(te,({one:e})=>({session:e(a,{fields:[te.sessionId],references:[a.id]}),profile:e(o,{fields:[te.userId],references:[o.id]})})),Wd=i(T,({one:e,many:t})=>({target:e(r,{fields:[T.evalTargetId],references:[r.id]}),calls:t(ce)})),Xd=i(ce,({one:e})=>({study:e(T,{fields:[ce.studyId],references:[T.id]}),job:e(P,{fields:[ce.jobId],references:[P.id]})}));var ct=0,cs=0,_t=0,_s=0;var Zd=0;function rn(){ct++,ct>cs&&(cs=ct)}m(rn,"trackDbOpStart");function sn(){ct>0&&ct--}m(sn,"trackDbOpEnd");function an(){_t++,_t>_s&&(_s=_t)}m(an,"trackHeavyDbOpStart");function dn(){_t>0&&_t--}m(dn,"trackHeavyDbOpEnd");function ps(){Zd++}m(ps,"recordQueryDeadline");var Yt,Xt,un=!1,Qt;var ms,Zt,Wt;function xs(e){let t=process.env[e];if(!t)throw new Error(`Missing required env var: ${e}`);return t}m(xs,"getEnv");function hs(){if(un)throw new Error("getDb() called after closeDb(): the connection pool is closed for shutdown. Stop issuing queries (timers/requests) before draining the pool.");if(!Yt){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,p=Number(process.env.PG_IDLE_TIMEOUT)||5,x=Number(process.env.PG_KEEP_ALIVE_S)||60;Xt=Ns(xs("DATABASE_URL"),{prepare:!1,max:t,connect_timeout:d,idle_timeout:p,keep_alive:x,max_lifetime:300,connection:{application_name:e,...u>0?{statement_timeout:u}:{}}}),Yt=fs(Xt,{schema:Jt})}return Yt}m(hs,"getDb");function gs(){if(un)throw new Error("getHeavyDb() called after closeDb(): the connection pool is closed for shutdown. Stop issuing queries (timers/requests) before draining the pool.");if(!Wt){let e=(process.env.PG_APPLICATION_NAME||"rulemetric")+":heavy",t=Number(process.env.PG_HEAVY_POOL_MAX)||2;Zt=Ns(xs("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}}),Wt=fs(Zt,{schema:Jt})}return Wt}m(gs,"getHeavyDb");async function eu(){if(Qt)return Qt;un=!0;let e=Xt,t=ms,d=Zt;return Xt=void 0,Yt=void 0,ms=void 0,Zt=void 0,Wt=void 0,Qt=Promise.allSettled([e?e.end({timeout:5}):Promise.resolve(),t?t.end({timeout:5}):Promise.resolve(),d?d.end({timeout:5}):Promise.resolve()]).then(()=>{}),Qt}m(eu,"closeDb");var tu=new Set(["CONNECT_TIMEOUT","ETIMEDOUT","ENOTFOUND","ECONNREFUSED","EAI_AGAIN"]);function vs(e){let t=e,d=t?.code??t?.cause?.code??t?.errno;return d!==void 0&&tu.has(d)}m(vs,"isRetryableConnectError");var ou=new Set(["CONNECTION_CLOSED","ECONNRESET","EPIPE"]);function Is(e){let t=e,d=t?.code??t?.cause?.code??t?.errno;return d!==void 0&&ou.has(d)}m(Is,"isRetryableResetError");async function ys(e,t={}){let d=t.attempts??3,u=t.baseMs??100,p;for(let x=0;x<d;x++)try{return await e()}catch(z){p=z;let V=vs(z)||t.retryResets===!0&&Is(z);if(x===d-1||!V)throw z;await new Promise(re=>setTimeout(re,u*2**x))}throw p}m(ys,"withDbRetry");var eo=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 ws(){let e=Number(process.env.PG_QUERY_DEADLINE_MS);return Number.isFinite(e)&&e>=0?e:2e4}m(ws,"queryDeadlineMs");function Ts(){let e=Number(process.env.PG_HEAVY_QUERY_DEADLINE_MS);return Number.isFinite(e)&&e>=0?e:6e4}m(Ts,"heavyQueryDeadlineMs");function nu(e,t,d=!0){let u,p=new Promise((x,z)=>{u=setTimeout(()=>{d&&ps(),z(new eo(t))},t);let V=u;typeof V.unref=="function"&&V.unref()});return Promise.race([e,p]).finally(()=>clearTimeout(u))}m(nu,"raceWithDeadline");var As=new Set(["select","selectDistinct","selectDistinctOn","insert","update","delete","execute","with","$count","refreshMaterializedView"]),Ds=new Set(["select","selectDistinct","selectDistinctOn","$count"]);function ln(e,t=!1,d=0,u=!1){return e===null||typeof e!="object"&&typeof e!="function"?e:new Proxy(e,{get(p,x,z){if(x==="then"){let re=Reflect.get(p,x,z);return typeof re!="function"?re:(Rs,ks)=>{let Es=u?an:rn,Ss=u?dn:sn;Es();let cn=ys(()=>new Promise((bs,Ps)=>re.call(p,bs,Ps)),{retryResets:t});return(d>0?nu(cn,d,!u):cn).finally(Ss).then(Rs,ks)}}let V=Reflect.get(p,x,z);return typeof V=="function"?(...re)=>ln(V.apply(p,re),t,d,u):V}})}m(ln,"wrapBuilder");function zs(e,t=!1){let d=t?an:rn,u=t?dn:sn;d();try{return Promise.resolve(e()).finally(u)}catch(p){throw u(),p}}m(zs,"gaugeTransaction");var js=new Proxy({},{get(e,t){let d=hs(),u=d[t];if(typeof t=="string"&&As.has(t)&&typeof u=="function"){let p=Ds.has(t),x=ws();return(...z)=>ln(u.apply(d,z),p,x)}return t==="transaction"&&typeof u=="function"?(...p)=>zs(()=>u.apply(d,p)):u}}),ru=new Proxy({},{get(e,t){let d=gs(),u=d[t];if(typeof t=="string"&&As.has(t)&&typeof u=="function"){let p=Ds.has(t);return(...x)=>ln(u.apply(d,x),p,Ts(),!0)}return t==="transaction"&&typeof u=="function"?(...p)=>zs(()=>u.apply(d,p),!0):u}});export{pn as a,hs as b,eu as c};
@@ -1,3 +1,3 @@
1
- import{a as s}from"./chunk-ZLLER3HP.js";var _=1.959963984540054;function k(n,t,e=_){if(t===0)return{lower:0,upper:1};let o=n/t,r=e*e,i=1+r/t,u=(o+r/(2*t))/i,a=e/i*Math.sqrt(o*(1-o)/t+r/(4*t*t));return{lower:Math.max(0,u-a),upper:Math.min(1,u+a)}}s(k,"wilsonInterval");function L(n,t){let e=n,o=t,r=e+o;if(r===0)return{pValue:1,nDiscordant:0};let i=Math.min(e,o),u=Math.pow(.5,r),a=u;for(let c=1;c<=i;c++)u*=(r-c+1)/c,a+=u;return{pValue:Math.min(1,2*a),nDiscordant:r}}s(L,"mcnemarExact");function U(n,t,e=10){return{sufficient:n>=e&&t>=e,minN:e,nWith:n,nWithout:t,shortfall:{with:Math.max(0,e-n),without:Math.max(0,e-t)}}}s(U,"assessSufficiency");function M(n){let t=n>>>0;return()=>{t=t+1831565813|0;let e=Math.imul(t^t>>>15,1|t);return e=e+Math.imul(e^e>>>7,61|e)^e,((e^e>>>14)>>>0)/4294967296}}s(M,"seededRandom");function C(n,t){let e=n.length;if(e===1)return n[0];let o=(e-1)*t,r=Math.floor(o),i=Math.ceil(o);return r===i?n[r]:n[r]+(o-r)*(n[i]-n[r])}s(C,"sortedQuantile");function j(n,t={}){let e=n.length;if(e===0)return{estimate:0,lower:0,upper:0,iterations:0};let o=t.iterations??1e4,r=t.ciLevel??.95,i=M(t.seed??1),u=n.reduce((l,f)=>l+f,0)/e,a=new Array(o);for(let l=0;l<o;l++){let f=0;for(let h=0;h<e;h++)f+=n[i()*e|0];a[l]=f/e}a.sort((l,f)=>l-f);let c=(1-r)/2;return{estimate:u,lower:C(a,c),upper:C(a,1-c),iterations:o}}s(j,"pairedBootstrapCI");function V(n,t={}){let e=n.filter(d=>d.withScores.length>0&&d.withoutScores.length>0);if(e.length===0)return{estimate:0,lower:0,upper:0,pValue:1,iterations:0};let o=s(d=>d.reduce((p,g)=>p+g,0)/d.length,"mean"),r=e.map(d=>d.withScores.length*d.withoutScores.length/(d.withScores.length+d.withoutScores.length)),i=r.reduce((d,p)=>d+p,0),u=s(d=>d.reduce((p,g,w)=>p+r[w]*g,0)/i,"combine"),a=u(e.map(d=>o(d.withScores)-o(d.withoutScores))),c=t.iterations??1e4,l=t.ciLevel??.95,f=M(t.seed??1),h=new Array(c),b=0,x=0;for(let d=0;d<c;d++){let p=e.map(w=>{let $=0;for(let v=0;v<w.withScores.length;v++)$+=w.withScores[f()*w.withScores.length|0];let T=0;for(let v=0;v<w.withoutScores.length;v++)T+=w.withoutScores[f()*w.withoutScores.length|0];return $/w.withScores.length-T/w.withoutScores.length}),g=u(p);h[d]=g,g<=0&&b++,g>=0&&x++}h.sort((d,p)=>d-p);let A=(1-l)/2;return{estimate:a,lower:C(h,A),upper:C(h,1-A),pValue:Math.min(1,2*Math.min(b,x)/c),iterations:c}}s(V,"stratifiedBootstrapCI");function Q(n,t){let e=n.length,o=t.length;if(e===0||o===0)return 0;let r=[...n.map(l=>({t:l,exposed:!0})),...t.map(l=>({t:l,exposed:!1}))].sort((l,f)=>l.t-f.t),i=0,u=0;for(;u<r.length;){let l=u;for(;l+1<r.length&&r[l+1].t===r[u].t;)l++;let f=(u+1+l+1)/2;for(let h=u;h<=l;h++)r[h].exposed&&(i+=f);u=l+1}let c=(i-e*(e+1)/2)/(e*o);return Math.abs(c-.5)}s(Q,"cohortTimeSeparation");var N=.35,D=900*1e3;function W(n,t,e=N,o=D){if(n.length===0||t.length===0)return!1;let r=[...n,...t];return Math.max(...r)-Math.min(...r)<o?!1:Q(n,t)>e}s(W,"isTimeSeparated");var K=s(n=>n===0||n===1,"isBinary");function ee(n,t,e){return n.every(r=>r[t]!=null&&r[e]!=null)?n.reduce((r,i)=>r+(i[t]-i[e]),0)/n.length:null}s(ee,"meanPairDelta");function q(n,t={}){let e=t.baseline??"no-rule",o=t.minN??10,r=n.length,i=n.map(d=>d.withScore-d.withoutScore),u=r===0?0:i.reduce((d,p)=>d+p,0)/r,a=j(i,{seed:t.seed,iterations:t.iterations}),c={lower:a.lower,upper:a.upper},l=n.every(d=>K(d.withScore)&&K(d.withoutScore)),f=null;if(l&&r>0){let d=0,p=0;for(let g of n)g.withScore===1&&g.withoutScore===0?d++:g.withScore===0&&g.withoutScore===1&&p++;f=L(d,p).pValue}let{sufficient:h}=U(r,r,o),b=c.lower>0||c.upper<0,A={mode:"controlled",baseline:e,delta:u,ci:c,pValue:f,significant:h&&b,sufficient:h,nWith:r,nWithout:r,costDelta:ee(n,"withCost","withoutCost"),latencyDelta:ee(n,"withLatency","withoutLatency"),confounded:!1};return h||(A.insufficientReason=`insufficient data: need >= ${o} paired tasks per cohort, have ${r}`),A}s(q,"buildControlledVerdict");var we=2;function Y(n,t={}){let e=t.minN??10,o=t.minPerStratum??we,r=t.maxTimeSeparation??N,i=t.minStratumSpanMs??D,u=n.filter(m=>m.withScores.length>=o&&m.withoutScores.length>=o),a=u.filter(m=>m.withTimes!=null&&m.withoutTimes!=null&&W(m.withTimes,m.withoutTimes,r,i)),c=new Set(a.map(m=>m.key)),l=u.filter(m=>!c.has(m.key)),f=n.filter(m=>m.withScores.length>0&&m.withoutScores.length>0&&(m.withScores.length<o||m.withoutScores.length<o)).length,h=l.reduce((m,S)=>m+S.withScores.length,0),b=l.reduce((m,S)=>m+S.withoutScores.length,0),x=V(l,{seed:t.seed,iterations:t.iterations}),A={lower:x.lower,upper:x.upper},d=x.estimate,p=l.length>0&&h>=e&&b>=e,g=l.length>0?x.pValue:null,w=p&&(A.lower>0||A.upper<0),$=n.reduce((m,S)=>m+S.withScores.length+S.withoutScores.length,0),T=$>0?(h+b)/$:0,v={mode:"observational",baseline:t.baseline??"no-rule",delta:d,ci:A,pValue:g,significant:w,sufficient:p,nWith:h,nWithout:b,costDelta:null,latencyDelta:null,confounded:!0,strata:l.length,strataDroppedForTimeSeparation:a.length,coverage:T};if(!p){let m=f>0?` (${f} project(s) had both cohorts but fewer than ${o} sessions in one of them)`:"",S=a.length>0?` ${a.length} project-month(s) held both cohorts but their sessions are separated in time (exposure predicts when a session ran), so the difference within them is a calendar difference, not a treatment effect`:"";v.insufficientReason=l.length===0?a.length>0?`insufficient data: no comparable cohort.${S}${m}`:`insufficient data: no project has >= ${o} exposed AND >= ${o} unexposed sessions to compare within${m}`:`insufficient data: need >= ${e} sessions per cohort across comparable projects, have ${h} exposed / ${b} unexposed${m}${S?`.${S}`:""}`}return v}s(Y,"buildStratifiedVerdict");function te(n){let t=new Map;for(let e of n){let o=t.get(e.stratum);o||(o={key:e.stratum,withScores:[],withoutScores:[],withTimes:[],withoutTimes:[]},t.set(e.stratum,o)),(e.exposed?o.withScores:o.withoutScores).push(e.score),e.time!=null&&(e.exposed?o.withTimes:o.withoutTimes).push(e.time)}for(let e of t.values())(e.withTimes.length!==e.withScores.length||e.withoutTimes.length!==e.withoutScores.length)&&(delete e.withTimes,delete e.withoutTimes);return[...t.values()]}s(te,"toStrata");var R=.05;function ne(n,t={}){let e=t.trialIndex??0,o=t.seed??1,r=t.exposedFraction??.5,i=t.effect??0,u=M(o+e*2),a=n.map(c=>{let l=u()<r;return{stratum:c.stratum,score:l?c.score+i:c.score,exposed:l,time:c.time}});return Y(te(a),{seed:o+e*2+1,iterations:t.iterations??500,minN:t.minN,minPerStratum:t.minPerStratum})}s(ne,"runCalibrationTrial");function B(n,t={}){let e=t.trials??200,o=[];for(let r=0;r<e;r++)o.push(ne(n,{...t,trialIndex:r}));return I(o,t.effect??0)}s(B,"calibrate");function I(n,t){let e=0,o=0,r=0,i=0;for(let c of n)c.sufficient&&(e++,c.significant&&o++,r+=c.delta,i=Math.max(i,Math.abs(c.delta)));let u=e>0?o/e:0,a=k(o,e,_);return{trials:n.length,evaluated:e,insufficient:n.length-e,significantTrials:o,significantRate:u,significantRateCi:a,meanDelta:e>0?r/e:0,maxAbsDelta:i,alpha:R,effect:t,calibrated:t===0&&e>0&&a.lower<=R&&R<=a.upper}}s(I,"summarizeTrials");function P(n,t={}){return B(n,{...t,effect:0})}s(P,"aaCalibration");function Z(n,t,e={}){return B(n,{...e,effect:t})}s(Z,"powerCheck");var be=.8416212335729143;var re=[{ym:"2026-03",n:122,mean:.287},{ym:"2026-04",n:50,mean:.07},{ym:"2026-05",n:267,mean:.089},{ym:"2026-06",n:61,mean:.201},{ym:"2026-07",n:162,mean:.071}],X=662;function H(n=2){let t=[];for(let e of re){let o=Math.round(e.n*e.mean);for(let r=0;r<e.n;r++)t.push({stratum:`proj-${r%n}|${e.ym}`,score:r<o?1:0})}if(n===2&&t.length!==X)throw new Error(`realisticCanaryCorpus: expected ${X} sessions, built ${t.length}`);return t}s(H,"realisticCanaryCorpus");function ie(n=600){return Array.from({length:n},(t,e)=>({stratum:"only",score:e%4===0?1:0}))}s(ie,"flatCanaryCorpus");var ae=50,se=4,F={min:.2,max:.7};function Se(n,t){let e=M(t),o=F.max-F.min;return Array.from({length:n},()=>F.min+e()*o)}s(Se,"caseDifficulties");function oe(n,t,e){let o=0;for(let r=0;r<t;r++)e()<n&&o++;return o/t}s(oe,"passRate");function ce(n={}){let t=n.trialIndex??0,e=n.seed??1,o=n.cases??ae,r=n.assertions??se,i=n.effect??0,u=Se(o,e),a=M(e+t*2),c=u.map(l=>({withScore:oe(l+i,r,a),withoutScore:oe(l,r,a)}));return q(c,{baseline:"prior-version",seed:e+t*2+1,iterations:n.iterations??500,minN:n.minN})}s(ce,"runControlledCalibrationTrial");function G(n={}){let t=n.trials??200,e=[];for(let o=0;o<t;o++)e.push(ce({...n,trialIndex:o}));return I(e,n.effect??0)}s(G,"controlledCalibration");function le(n={}){return G({...n,effect:0})}s(le,"controlledAaCalibration");function ue(n,t={}){return G({...t,effect:n})}s(ue,"controlledPowerCheck");var de={maxSignificantRate:.15,maxMeanAbsDelta:.02,maxWorstCaseDelta:.15,powerProbeEffect:.2,minPower:.9,minPowerMeanDelta:.15};function E(n,t,e){let o=e.filter(r=>!r.ok).map(r=>r.why);return{name:n,passed:o.length===0,detail:o.length===0?`${n}: ok (rate=${t.significantRate.toFixed(3)}, meanDelta=${t.meanDelta.toFixed(4)}, evaluated=${t.evaluated}/${t.trials})`:`${n}: ${o.join("; ")}`,result:t}}s(E,"check");function Ae(n={}){let t=n.trials??200,e=n.powerTrials??200,o=de,r=[],i=P(ie(),{trials:t,seed:11});r.push(E("aa-flat",i,[{ok:i.calibrated,why:`\u03B1=${R} outside rate CI [${i.significantRateCi.lower.toFixed(3)}, ${i.significantRateCi.upper.toFixed(3)}]`},{ok:i.significantRate<o.maxSignificantRate,why:`false-positive rate ${i.significantRate.toFixed(3)} \u2265 ${o.maxSignificantRate}`},{ok:Math.abs(i.meanDelta)<o.maxMeanAbsDelta,why:`mean delta ${i.meanDelta.toFixed(4)} not centred on zero`}]));let u=P(H(),{trials:t,seed:23});r.push(E("aa-realistic",u,[{ok:u.calibrated,why:`\u03B1=${R} outside rate CI [${u.significantRateCi.lower.toFixed(3)}, ${u.significantRateCi.upper.toFixed(3)}]`},{ok:u.significantRate<o.maxSignificantRate,why:`false-positive rate ${u.significantRate.toFixed(3)} \u2265 ${o.maxSignificantRate}`},{ok:Math.abs(u.meanDelta)<o.maxMeanAbsDelta,why:`mean delta ${u.meanDelta.toFixed(4)} not centred on zero`},{ok:u.maxAbsDelta<o.maxWorstCaseDelta,why:`worst single-trial delta ${u.maxAbsDelta.toFixed(3)} \u2265 ${o.maxWorstCaseDelta}`}]));let a=Z(H(),o.powerProbeEffect,{trials:e,seed:5});r.push(E("power-observational",a,[{ok:a.significantRate>o.minPower,why:`detects +${o.powerProbeEffect} only ${a.significantRate.toFixed(3)} of the time`},{ok:a.meanDelta>o.minPowerMeanDelta,why:`measured mean delta ${a.meanDelta.toFixed(3)} understates the injected +${o.powerProbeEffect}`}]));let c=le({trials:t,seed:31});r.push(E("aa-controlled",c,[{ok:c.calibrated,why:`\u03B1=${R} outside rate CI [${c.significantRateCi.lower.toFixed(3)}, ${c.significantRateCi.upper.toFixed(3)}]`},{ok:c.significantRate<o.maxSignificantRate,why:`false-positive rate ${c.significantRate.toFixed(3)} \u2265 ${o.maxSignificantRate}`},{ok:Math.abs(c.meanDelta)<o.maxMeanAbsDelta,why:`mean delta ${c.meanDelta.toFixed(4)} not centred on zero`}]));let l=ue(o.powerProbeEffect,{trials:e,seed:37});r.push(E("power-controlled",l,[{ok:l.significantRate>o.minPower,why:`detects +${o.powerProbeEffect} only ${l.significantRate.toFixed(3)} of the time`}]));let f=r.filter(h=>!h.passed).map(h=>h.detail);return{green:f.length===0,checks:r,failures:f}}s(Ae,"runPromotionCanary");var Me=3,Re=7,J="(preamble)",_e=/^\s*(`{3,}|~{3,})/,$e=/^(#{1,6})\s+(.*)$/;function y(n){let t=n.split(`
1
+ import{a as s}from"./chunk-ZLLER3HP.js";var _=1.959963984540054;function k(n,t,e=_){if(t===0)return{lower:0,upper:1};let o=n/t,r=e*e,i=1+r/t,u=(o+r/(2*t))/i,a=e/i*Math.sqrt(o*(1-o)/t+r/(4*t*t));return{lower:Math.max(0,u-a),upper:Math.min(1,u+a)}}s(k,"wilsonInterval");function L(n,t){let e=n,o=t,r=e+o;if(r===0)return{pValue:1,nDiscordant:0};let i=Math.min(e,o),u=Math.pow(.5,r),a=u;for(let c=1;c<=i;c++)u*=(r-c+1)/c,a+=u;return{pValue:Math.min(1,2*a),nDiscordant:r}}s(L,"mcnemarExact");function U(n,t,e=10){return{sufficient:n>=e&&t>=e,minN:e,nWith:n,nWithout:t,shortfall:{with:Math.max(0,e-n),without:Math.max(0,e-t)}}}s(U,"assessSufficiency");function M(n){let t=n>>>0;return()=>{t=t+1831565813|0;let e=Math.imul(t^t>>>15,1|t);return e=e+Math.imul(e^e>>>7,61|e)^e,((e^e>>>14)>>>0)/4294967296}}s(M,"seededRandom");function C(n,t){let e=n.length;if(e===1)return n[0];let o=(e-1)*t,r=Math.floor(o),i=Math.ceil(o);return r===i?n[r]:n[r]+(o-r)*(n[i]-n[r])}s(C,"sortedQuantile");function V(n,t={}){let e=n.length;if(e===0)return{estimate:0,lower:0,upper:0,iterations:0};let o=t.iterations??1e4,r=t.ciLevel??.95,i=M(t.seed??1),u=n.reduce((l,f)=>l+f,0)/e,a=new Array(o);for(let l=0;l<o;l++){let f=0;for(let h=0;h<e;h++)f+=n[i()*e|0];a[l]=f/e}a.sort((l,f)=>l-f);let c=(1-r)/2;return{estimate:u,lower:C(a,c),upper:C(a,1-c),iterations:o}}s(V,"pairedBootstrapCI");function j(n,t={}){let e=n.filter(d=>d.withScores.length>0&&d.withoutScores.length>0);if(e.length===0)return{estimate:0,lower:0,upper:0,pValue:1,iterations:0};let o=s(d=>d.reduce((p,g)=>p+g,0)/d.length,"mean"),r=e.map(d=>d.withScores.length*d.withoutScores.length/(d.withScores.length+d.withoutScores.length)),i=r.reduce((d,p)=>d+p,0),u=s(d=>d.reduce((p,g,w)=>p+r[w]*g,0)/i,"combine"),a=u(e.map(d=>o(d.withScores)-o(d.withoutScores))),c=t.iterations??1e4,l=t.ciLevel??.95,f=M(t.seed??1),h=new Array(c),b=0,x=0;for(let d=0;d<c;d++){let p=e.map(w=>{let $=0;for(let v=0;v<w.withScores.length;v++)$+=w.withScores[f()*w.withScores.length|0];let T=0;for(let v=0;v<w.withoutScores.length;v++)T+=w.withoutScores[f()*w.withoutScores.length|0];return $/w.withScores.length-T/w.withoutScores.length}),g=u(p);h[d]=g,g<=0&&b++,g>=0&&x++}h.sort((d,p)=>d-p);let A=(1-l)/2;return{estimate:a,lower:C(h,A),upper:C(h,1-A),pValue:Math.min(1,2*Math.min(b,x)/c),iterations:c}}s(j,"stratifiedBootstrapCI");function Q(n,t){let e=n.length,o=t.length;if(e===0||o===0)return 0;let r=[...n.map(l=>({t:l,exposed:!0})),...t.map(l=>({t:l,exposed:!1}))].sort((l,f)=>l.t-f.t),i=0,u=0;for(;u<r.length;){let l=u;for(;l+1<r.length&&r[l+1].t===r[u].t;)l++;let f=(u+1+l+1)/2;for(let h=u;h<=l;h++)r[h].exposed&&(i+=f);u=l+1}let c=(i-e*(e+1)/2)/(e*o);return Math.abs(c-.5)}s(Q,"cohortTimeSeparation");var N=.35,D=900*1e3;function W(n,t,e=N,o=D){if(n.length===0||t.length===0)return!1;let r=[...n,...t];return Math.max(...r)-Math.min(...r)<o?!1:Q(n,t)>e}s(W,"isTimeSeparated");var K=s(n=>n===0||n===1,"isBinary");function ee(n,t,e){return n.every(r=>r[t]!=null&&r[e]!=null)?n.reduce((r,i)=>r+(i[t]-i[e]),0)/n.length:null}s(ee,"meanPairDelta");function q(n,t={}){let e=t.baseline??"no-rule",o=t.minN??10,r=n.length,i=n.map(d=>d.withScore-d.withoutScore),u=r===0?0:i.reduce((d,p)=>d+p,0)/r,a=V(i,{seed:t.seed,iterations:t.iterations}),c={lower:a.lower,upper:a.upper},l=n.every(d=>K(d.withScore)&&K(d.withoutScore)),f=null;if(l&&r>0){let d=0,p=0;for(let g of n)g.withScore===1&&g.withoutScore===0?d++:g.withScore===0&&g.withoutScore===1&&p++;f=L(d,p).pValue}let{sufficient:h}=U(r,r,o),b=c.lower>0||c.upper<0,A={mode:"controlled",baseline:e,delta:u,ci:c,pValue:f,significant:h&&b,sufficient:h,nWith:r,nWithout:r,costDelta:ee(n,"withCost","withoutCost"),latencyDelta:ee(n,"withLatency","withoutLatency"),confounded:!1};return h||(A.insufficientReason=`insufficient data: need >= ${o} paired tasks per cohort, have ${r}`),A}s(q,"buildControlledVerdict");var we=2;function Y(n,t={}){let e=t.minN??10,o=t.minPerStratum??we,r=t.maxTimeSeparation??N,i=t.minStratumSpanMs??D,u=n.filter(m=>m.withScores.length>=o&&m.withoutScores.length>=o),a=u.filter(m=>m.withTimes!=null&&m.withoutTimes!=null&&W(m.withTimes,m.withoutTimes,r,i)),c=new Set(a.map(m=>m.key)),l=u.filter(m=>!c.has(m.key)),f=n.filter(m=>m.withScores.length>0&&m.withoutScores.length>0&&(m.withScores.length<o||m.withoutScores.length<o)).length,h=l.reduce((m,S)=>m+S.withScores.length,0),b=l.reduce((m,S)=>m+S.withoutScores.length,0),x=j(l,{seed:t.seed,iterations:t.iterations}),A={lower:x.lower,upper:x.upper},d=x.estimate,p=l.length>0&&h>=e&&b>=e,g=l.length>0?x.pValue:null,w=p&&(A.lower>0||A.upper<0),$=n.reduce((m,S)=>m+S.withScores.length+S.withoutScores.length,0),T=$>0?(h+b)/$:0,v={mode:"observational",baseline:t.baseline??"no-rule",delta:d,ci:A,pValue:g,significant:w,sufficient:p,nWith:h,nWithout:b,costDelta:null,latencyDelta:null,confounded:!0,strata:l.length,strataDroppedForTimeSeparation:a.length,coverage:T};if(!p){let m=f>0?` (${f} project(s) had both cohorts but fewer than ${o} sessions in one of them)`:"",S=a.length>0?` ${a.length} project-month(s) held both cohorts but their sessions are separated in time (exposure predicts when a session ran), so the difference within them is a calendar difference, not a treatment effect`:"";v.insufficientReason=l.length===0?a.length>0?`insufficient data: no comparable cohort.${S}${m}`:`insufficient data: no project has >= ${o} exposed AND >= ${o} unexposed sessions to compare within${m}`:`insufficient data: need >= ${e} sessions per cohort across comparable projects, have ${h} exposed / ${b} unexposed${m}${S?`.${S}`:""}`}return v}s(Y,"buildStratifiedVerdict");function te(n){let t=new Map;for(let e of n){let o=t.get(e.stratum);o||(o={key:e.stratum,withScores:[],withoutScores:[],withTimes:[],withoutTimes:[]},t.set(e.stratum,o)),(e.exposed?o.withScores:o.withoutScores).push(e.score),e.time!=null&&(e.exposed?o.withTimes:o.withoutTimes).push(e.time)}for(let e of t.values())(e.withTimes.length!==e.withScores.length||e.withoutTimes.length!==e.withoutScores.length)&&(delete e.withTimes,delete e.withoutTimes);return[...t.values()]}s(te,"toStrata");var R=.05;function ne(n,t={}){let e=t.trialIndex??0,o=t.seed??1,r=t.exposedFraction??.5,i=t.effect??0,u=M(o+e*2),a=n.map(c=>{let l=u()<r;return{stratum:c.stratum,score:l?c.score+i:c.score,exposed:l,time:c.time}});return Y(te(a),{seed:o+e*2+1,iterations:t.iterations??500,minN:t.minN,minPerStratum:t.minPerStratum})}s(ne,"runCalibrationTrial");function B(n,t={}){let e=t.trials??200,o=[];for(let r=0;r<e;r++)o.push(ne(n,{...t,trialIndex:r}));return I(o,t.effect??0)}s(B,"calibrate");function I(n,t){let e=0,o=0,r=0,i=0;for(let c of n)c.sufficient&&(e++,c.significant&&o++,r+=c.delta,i=Math.max(i,Math.abs(c.delta)));let u=e>0?o/e:0,a=k(o,e,_);return{trials:n.length,evaluated:e,insufficient:n.length-e,significantTrials:o,significantRate:u,significantRateCi:a,meanDelta:e>0?r/e:0,maxAbsDelta:i,alpha:R,effect:t,calibrated:t===0&&e>0&&a.lower<=R&&R<=a.upper}}s(I,"summarizeTrials");function P(n,t={}){return B(n,{...t,effect:0})}s(P,"aaCalibration");function Z(n,t,e={}){return B(n,{...e,effect:t})}s(Z,"powerCheck");var be=.8416212335729143;var re=[{ym:"2026-03",n:122,mean:.287},{ym:"2026-04",n:50,mean:.07},{ym:"2026-05",n:267,mean:.089},{ym:"2026-06",n:61,mean:.201},{ym:"2026-07",n:162,mean:.071}],X=662;function H(n=2){let t=[];for(let e of re){let o=Math.round(e.n*e.mean);for(let r=0;r<e.n;r++)t.push({stratum:`proj-${r%n}|${e.ym}`,score:r<o?1:0})}if(n===2&&t.length!==X)throw new Error(`realisticCanaryCorpus: expected ${X} sessions, built ${t.length}`);return t}s(H,"realisticCanaryCorpus");function ie(n=600){return Array.from({length:n},(t,e)=>({stratum:"only",score:e%4===0?1:0}))}s(ie,"flatCanaryCorpus");var ae=50,se=4,F={min:.2,max:.7};function Se(n,t){let e=M(t),o=F.max-F.min;return Array.from({length:n},()=>F.min+e()*o)}s(Se,"caseDifficulties");function oe(n,t,e){let o=0;for(let r=0;r<t;r++)e()<n&&o++;return o/t}s(oe,"passRate");function ce(n={}){let t=n.trialIndex??0,e=n.seed??1,o=n.cases??ae,r=n.assertions??se,i=n.effect??0,u=Se(o,e),a=M(e+t*2),c=u.map(l=>({withScore:oe(l+i,r,a),withoutScore:oe(l,r,a)}));return q(c,{baseline:"prior-version",seed:e+t*2+1,iterations:n.iterations??500,minN:n.minN})}s(ce,"runControlledCalibrationTrial");function G(n={}){let t=n.trials??200,e=[];for(let o=0;o<t;o++)e.push(ce({...n,trialIndex:o}));return I(e,n.effect??0)}s(G,"controlledCalibration");function le(n={}){return G({...n,effect:0})}s(le,"controlledAaCalibration");function ue(n,t={}){return G({...t,effect:n})}s(ue,"controlledPowerCheck");var de={maxSignificantRate:.15,maxMeanAbsDelta:.02,maxWorstCaseDelta:.15,powerProbeEffect:.2,minPower:.9,minPowerMeanDelta:.15};function E(n,t,e){let o=e.filter(r=>!r.ok).map(r=>r.why);return{name:n,passed:o.length===0,detail:o.length===0?`${n}: ok (rate=${t.significantRate.toFixed(3)}, meanDelta=${t.meanDelta.toFixed(4)}, evaluated=${t.evaluated}/${t.trials})`:`${n}: ${o.join("; ")}`,result:t}}s(E,"check");function Ae(n={}){let t=n.trials??200,e=n.powerTrials??200,o=de,r=[],i=P(ie(),{trials:t,seed:11});r.push(E("aa-flat",i,[{ok:i.calibrated,why:`\u03B1=${R} outside rate CI [${i.significantRateCi.lower.toFixed(3)}, ${i.significantRateCi.upper.toFixed(3)}]`},{ok:i.significantRate<o.maxSignificantRate,why:`false-positive rate ${i.significantRate.toFixed(3)} \u2265 ${o.maxSignificantRate}`},{ok:Math.abs(i.meanDelta)<o.maxMeanAbsDelta,why:`mean delta ${i.meanDelta.toFixed(4)} not centred on zero`}]));let u=P(H(),{trials:t,seed:23});r.push(E("aa-realistic",u,[{ok:u.calibrated,why:`\u03B1=${R} outside rate CI [${u.significantRateCi.lower.toFixed(3)}, ${u.significantRateCi.upper.toFixed(3)}]`},{ok:u.significantRate<o.maxSignificantRate,why:`false-positive rate ${u.significantRate.toFixed(3)} \u2265 ${o.maxSignificantRate}`},{ok:Math.abs(u.meanDelta)<o.maxMeanAbsDelta,why:`mean delta ${u.meanDelta.toFixed(4)} not centred on zero`},{ok:u.maxAbsDelta<o.maxWorstCaseDelta,why:`worst single-trial delta ${u.maxAbsDelta.toFixed(3)} \u2265 ${o.maxWorstCaseDelta}`}]));let a=Z(H(),o.powerProbeEffect,{trials:e,seed:5});r.push(E("power-observational",a,[{ok:a.significantRate>o.minPower,why:`detects +${o.powerProbeEffect} only ${a.significantRate.toFixed(3)} of the time`},{ok:a.meanDelta>o.minPowerMeanDelta,why:`measured mean delta ${a.meanDelta.toFixed(3)} understates the injected +${o.powerProbeEffect}`}]));let c=le({trials:t,seed:31});r.push(E("aa-controlled",c,[{ok:c.calibrated,why:`\u03B1=${R} outside rate CI [${c.significantRateCi.lower.toFixed(3)}, ${c.significantRateCi.upper.toFixed(3)}]`},{ok:c.significantRate<o.maxSignificantRate,why:`false-positive rate ${c.significantRate.toFixed(3)} \u2265 ${o.maxSignificantRate}`},{ok:Math.abs(c.meanDelta)<o.maxMeanAbsDelta,why:`mean delta ${c.meanDelta.toFixed(4)} not centred on zero`}]));let l=ue(o.powerProbeEffect,{trials:e,seed:37});r.push(E("power-controlled",l,[{ok:l.significantRate>o.minPower,why:`detects +${o.powerProbeEffect} only ${l.significantRate.toFixed(3)} of the time`}]));let f=r.filter(h=>!h.passed).map(h=>h.detail);return{green:f.length===0,checks:r,failures:f}}s(Ae,"runPromotionCanary");var Me=3,Re=7,J="(preamble)",_e=/^\s*(`{3,}|~{3,})/,$e=/^(#{1,6})\s+(.*)$/;function y(n){let t=n.split(`
2
2
  `),e=[],o=[],r={heading:"",level:0,path:[J],body:[]},i=null,u=s(()=>{e.push({heading:r.heading,level:r.level,path:r.path,body:r.body.join(`
3
3
  `).trim()})},"flush");for(let a of t){let c=_e.exec(a);if(c){let f=c[1];i==null?i={marker:f}:f[0]===i.marker[0]&&f.length>=i.marker.length&&(i=null),r.body.push(a);continue}if(i!=null){r.body.push(a);continue}let l=$e.exec(a);if(l){u();let f=l[1].length,h=l[2].trim();o.length=Math.max(0,f-1),o[f-1]=h,r={heading:h,level:f,path:Array.from({length:f},(b,x)=>o[x]??`(unnamed level ${x+1})`),body:[]};continue}r.body.push(a)}return u(),e.filter((a,c)=>!(c===0&&a.level===0&&a.body===""))}s(y,"splitMarkdownSections");function O(n){let t=new Map,e=new Map;for(let o of n){let r=o.level===0?J:o.path.join(" > "),i=(t.get(r)??0)+1;t.set(r,i),e.set(i===1?r:`${r} #${i}`,o)}return e}s(O,"sectionKeys");function he(n,t){let e=O(y(n)),o=O(y(t)),r=[],i=[],u=[];for(let[a,c]of o){let l=e.get(a);l?l.body!==c.body&&r.push(a):i.push(a)}for(let a of e.keys())o.has(a)||u.push(a);return{changed:r.sort(),added:i.sort(),removed:u.sort()}}s(he,"diffSections");function me(n){return[...new Set([...n.changed,...n.added,...n.removed])].sort()}s(me,"touchedSections");var fe=s(n=>n.trim().toLowerCase(),"normalize");function Ee(n,t,e){if(e.length===0)return[];let o=new Set(e.map(fe)),r=he(n,t),i=new Set(me(r)),u=new Map([...O(y(n)),...O(y(t))]),a=[];for(let c of i){let l=u.get(c);(l?l.path:c.split(" > ")).some(h=>o.has(fe(h)))&&a.push(c)}return a.sort()}s(Ee,"protectedViolations");export{_ as a,q as b,be as c,Ae as d,Me as e,Re as f,Ee as g};
@@ -1 +1 @@
1
- import{b as t,e as E}from"./chunk-DYET4EYU.js";import{a as r}from"./chunk-ZLLER3HP.js";function s(o=10,_=t){for(let e=1;e<=o;e++)if(E(e,o,_).feasible)return e;return o}r(s,"minFeasibleLiveCases");var S=s(),A=3;export{s as a,S as b,A as c};
1
+ import{b as t,e as E}from"./chunk-ZMVTSYD4.js";import{a as r}from"./chunk-ZLLER3HP.js";function s(o=10,_=t){for(let e=1;e<=o;e++)if(E(e,o,_).feasible)return e;return o}r(s,"minFeasibleLiveCases");var S=s(),A=3;export{s as a,S as b,A as c};
@@ -1 +1 @@
1
- import{a as G,c as I}from"./chunk-FADINV4H.js";import{f as j}from"./chunk-SWSOEYC7.js";import{a as R}from"./chunk-FG343JM3.js";import{b as U}from"./chunk-HT6R6KR3.js";import{f as A}from"./chunk-4GOXEEXZ.js";import{b as P,e as C,h as _}from"./chunk-GIXHG5FK.js";import{a as x}from"./chunk-ZLLER3HP.js";var J=x(l=>l.summary.pass_rate===1?1:0,"fullPassScore");async function z(l,d={}){let $=d.executeEval??A,M=d.grade??R,q=d.getExperiment??(async o=>{try{return await C(`/api/memory-experiments/${o}`)}catch(e){if(e instanceof P&&e.statusCode===404)return null;throw e}}),B=d.getMemoryBody??(async o=>{try{let e=await C(`/api/memories/${o}`);return t?.memoryVersion!=null&&e.version!==t.memoryVersion?null:e.body}catch(e){if(e instanceof P&&e.statusCode===404)return null;throw e}}),p=d.updateExperiment??(async(o,e)=>{await _(`/api/memory-experiments/${o}`,e)}),t=await q(l.experimentId);if(!t)return{skipped:"not_found"};if(t.status==="completed"||t.status==="failed")return{skipped:"already_terminal",status:t.status};let E=t.memoryBody??await B(t.memoryId);if(E==null)return await p(t.id,{status:"failed",error:"memory no longer exists or its queued version is no longer available"}),{skipped:"memory_gone",status:"failed"};await p(t.id,{status:"running"});let v=t.expectations??[],c=t.model??void 0,i=t.engine??"claude",g=G({engine:i,model:c},{engine:l.graderEngine,model:l.graderModel}),f=x(async o=>{let e=(d.createWorkspace??j)({engine:i,targetType:"prompt",targetContent:o});try{if(e.leakedFiles.length)throw new Error("Contaminated memory trial workspace");return await $({prompt:t.taskPrompt,targetContent:e.systemPrompt,appendTarget:!0,ignoreContextFiles:!0,workDir:e.workDir,model:c,engine:i})}finally{e.cleanup()}},"executeArm"),s=[],u=new Set,b,k,m=[],w=0;try{if(l.measurement){let e=I(l);if(e.engine!==i||e.model!==c)throw new Error("Memory experiment differs from its queued measurement snapshot");g={engine:e.graderEngine,model:e.graderModel}}for(let e=0;e<t.trials;e++){let[r,n]=e%2===0?[await f(E),await f()]:await(async()=>{let y=await f();return[await f(E),y]})();if(r.error||n.error||r.exitCode!==0||n.exitCode!==0||!r.output.trim()||!n.output.trim()){w++,m.push({trial:e+1,reason:(r.error??n.error??"Nonzero exit or empty output").slice(0,500)});continue}if(r.engine!==i||n.engine!==i||!r.model||!n.model||r.model!==n.model||r.provider!==n.provider||r.model&&u.size>0&&!u.has(r.model)||i==="pi"&&c&&r.model!==`pi:${c}`){w++,m.push({trial:e+1,reason:"Harness, provider or model changed within the experiment"});continue}r.model&&u.add(r.model),n.model&&u.add(n.model);let[a,h]=await Promise.all([M({prompt:t.taskPrompt,output:r.output,expectations:v,...g}),M({prompt:t.taskPrompt,output:n.output,expectations:v,...g})]),T=JSON.stringify([a.judge_engine??null,a.judge_model??null]);if([a,h].some(y=>y.summary.pass_rate==null||y.summary.errored||y.summary.total!==v.length)||a.judge_model!==h.judge_model||a.judge_engine!==h.judge_engine||b!==void 0&&b!==T){w++,m.push({trial:e+1,reason:"Grading incomplete or judge changed; not a model failure"});continue}b=T,k={engine:a.judge_engine??null,model:a.judge_model??null},s.push({withScore:J(a),withoutScore:J(h),withLatency:r.durationMs/1e3,withoutLatency:n.durationMs/1e3,withTokens:r.totalTokens,withoutTokens:n.totalTokens,...r.costUsd!==void 0?{withCostUsd:r.costUsd}:{},...n.costUsd!==void 0?{withoutCostUsd:n.costUsd}:{}})}if(s.length===0){let e=`no trials completed (${w}/${t.trials} runs errored \u2014 is the ${i} CLI available?)`;return await p(t.id,{status:"failed",error:e,result:{pairs:s,excluded:m,completedTrials:0,engine:i}}),{status:"failed",requestedTrials:t.trials,completedTrials:0}}let o=U(s.map(e=>({...e,withCost:e.withCostUsd,withoutCost:e.withoutCostUsd})));return await p(t.id,{status:"completed",result:{verdict:o,pairs:s,excluded:m,judge:g,actualJudge:k,methodology:"v2-neutral-appended-memory",completedTrials:s.length,engine:i,model:[...u][0]}}),{status:"completed",requestedTrials:t.trials,completedTrials:s.length,significant:o.significant,delta:o.delta}}catch(o){let e=o instanceof Error?o.message:String(o);return await p(t.id,{status:"failed",error:e.slice(0,500),result:{pairs:s,excluded:m,completedTrials:s.length,engine:i,model:[...u][0]??null,judge:g,actualJudge:k,methodology:"v2-neutral-appended-memory"}}).catch(()=>{}),{status:"failed",requestedTrials:t.trials,completedTrials:s.length}}}x(z,"processMemoryAb");export{z as a};
1
+ import{a as G,c as I}from"./chunk-FADINV4H.js";import{f as j}from"./chunk-SWSOEYC7.js";import{a as R}from"./chunk-FG343JM3.js";import{b as U}from"./chunk-KFNFLMUR.js";import{f as A}from"./chunk-4GOXEEXZ.js";import{b as P,e as C,h as _}from"./chunk-GIXHG5FK.js";import{a as x}from"./chunk-ZLLER3HP.js";var J=x(l=>l.summary.pass_rate===1?1:0,"fullPassScore");async function z(l,d={}){let $=d.executeEval??A,M=d.grade??R,q=d.getExperiment??(async o=>{try{return await C(`/api/memory-experiments/${o}`)}catch(e){if(e instanceof P&&e.statusCode===404)return null;throw e}}),B=d.getMemoryBody??(async o=>{try{let e=await C(`/api/memories/${o}`);return t?.memoryVersion!=null&&e.version!==t.memoryVersion?null:e.body}catch(e){if(e instanceof P&&e.statusCode===404)return null;throw e}}),p=d.updateExperiment??(async(o,e)=>{await _(`/api/memory-experiments/${o}`,e)}),t=await q(l.experimentId);if(!t)return{skipped:"not_found"};if(t.status==="completed"||t.status==="failed")return{skipped:"already_terminal",status:t.status};let E=t.memoryBody??await B(t.memoryId);if(E==null)return await p(t.id,{status:"failed",error:"memory no longer exists or its queued version is no longer available"}),{skipped:"memory_gone",status:"failed"};await p(t.id,{status:"running"});let v=t.expectations??[],c=t.model??void 0,i=t.engine??"claude",g=G({engine:i,model:c},{engine:l.graderEngine,model:l.graderModel}),f=x(async o=>{let e=(d.createWorkspace??j)({engine:i,targetType:"prompt",targetContent:o});try{if(e.leakedFiles.length)throw new Error("Contaminated memory trial workspace");return await $({prompt:t.taskPrompt,targetContent:e.systemPrompt,appendTarget:!0,ignoreContextFiles:!0,workDir:e.workDir,model:c,engine:i})}finally{e.cleanup()}},"executeArm"),s=[],u=new Set,b,k,m=[],w=0;try{if(l.measurement){let e=I(l);if(e.engine!==i||e.model!==c)throw new Error("Memory experiment differs from its queued measurement snapshot");g={engine:e.graderEngine,model:e.graderModel}}for(let e=0;e<t.trials;e++){let[r,n]=e%2===0?[await f(E),await f()]:await(async()=>{let y=await f();return[await f(E),y]})();if(r.error||n.error||r.exitCode!==0||n.exitCode!==0||!r.output.trim()||!n.output.trim()){w++,m.push({trial:e+1,reason:(r.error??n.error??"Nonzero exit or empty output").slice(0,500)});continue}if(r.engine!==i||n.engine!==i||!r.model||!n.model||r.model!==n.model||r.provider!==n.provider||r.model&&u.size>0&&!u.has(r.model)||i==="pi"&&c&&r.model!==`pi:${c}`){w++,m.push({trial:e+1,reason:"Harness, provider or model changed within the experiment"});continue}r.model&&u.add(r.model),n.model&&u.add(n.model);let[a,h]=await Promise.all([M({prompt:t.taskPrompt,output:r.output,expectations:v,...g}),M({prompt:t.taskPrompt,output:n.output,expectations:v,...g})]),T=JSON.stringify([a.judge_engine??null,a.judge_model??null]);if([a,h].some(y=>y.summary.pass_rate==null||y.summary.errored||y.summary.total!==v.length)||a.judge_model!==h.judge_model||a.judge_engine!==h.judge_engine||b!==void 0&&b!==T){w++,m.push({trial:e+1,reason:"Grading incomplete or judge changed; not a model failure"});continue}b=T,k={engine:a.judge_engine??null,model:a.judge_model??null},s.push({withScore:J(a),withoutScore:J(h),withLatency:r.durationMs/1e3,withoutLatency:n.durationMs/1e3,withTokens:r.totalTokens,withoutTokens:n.totalTokens,...r.costUsd!==void 0?{withCostUsd:r.costUsd}:{},...n.costUsd!==void 0?{withoutCostUsd:n.costUsd}:{}})}if(s.length===0){let e=`no trials completed (${w}/${t.trials} runs errored \u2014 is the ${i} CLI available?)`;return await p(t.id,{status:"failed",error:e,result:{pairs:s,excluded:m,completedTrials:0,engine:i}}),{status:"failed",requestedTrials:t.trials,completedTrials:0}}let o=U(s.map(e=>({...e,withCost:e.withCostUsd,withoutCost:e.withoutCostUsd})));return await p(t.id,{status:"completed",result:{verdict:o,pairs:s,excluded:m,judge:g,actualJudge:k,methodology:"v2-neutral-appended-memory",completedTrials:s.length,engine:i,model:[...u][0]}}),{status:"completed",requestedTrials:t.trials,completedTrials:s.length,significant:o.significant,delta:o.delta}}catch(o){let e=o instanceof Error?o.message:String(o);return await p(t.id,{status:"failed",error:e.slice(0,500),result:{pairs:s,excluded:m,completedTrials:s.length,engine:i,model:[...u][0]??null,judge:g,actualJudge:k,methodology:"v2-neutral-appended-memory"}}).catch(()=>{}),{status:"failed",requestedTrials:t.trials,completedTrials:s.length}}}x(z,"processMemoryAb");export{z as a};
@@ -1,4 +1,4 @@
1
- import{a as f,b as M}from"./chunk-V576KKH6.js";import{e as _,f as S}from"./chunk-X6CF5KTW.js";import{a as o}from"./chunk-ZLLER3HP.js";import*as m from"node:fs/promises";import*as x from"node:path";import{eq as j}from"drizzle-orm";import{randomBytes as Y}from"node:crypto";var A="#0d9488",h="#1a1a1a",$="#666666",C="#f5f5f7",N="#ffffff",D="#e5e5e9",I=["Added","Changed","Fixed","Removed","Deprecated","Security"];function U(e){let t=["January","February","March","April","May","June","July","August","September","October","November","December"],[n,r,a]=e.split("-").map(d=>parseInt(d,10));return!n||!r||!a||r<1||r>12?e:`${t[r-1]} ${a}, ${n}`}o(U,"formatIsoDate");function l(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}o(l,"escapeHtml");function z(e){let t=[];for(let n of I){let r=e[n];r&&r.length>0&&t.push({name:n,items:r})}return t}o(z,"orderedSections");function v(e){let{version:t,date:n,sections:r,unsubscribeUrl:a,productUrl:d,recipientName:u}=e,c=U(n),s=`What's new in RuleMetric \u2014 ${c}`,y=u?`Hi ${u},`:"Hi there,",i=z(r),p=new Date().getUTCFullYear(),b=i.map(({name:R,items:E})=>{let w=E.map(O=>` <li style="margin:0 0 6px 0;font-size:15px;line-height:1.5;color:${h};">${l(O)}</li>`).join(`
1
+ import{a as f,b as M}from"./chunk-JIW2PCHU.js";import{e as _,f as S}from"./chunk-X6CF5KTW.js";import{a as o}from"./chunk-ZLLER3HP.js";import*as m from"node:fs/promises";import*as x from"node:path";import{eq as j}from"drizzle-orm";import{randomBytes as Y}from"node:crypto";var A="#0d9488",h="#1a1a1a",$="#666666",C="#f5f5f7",N="#ffffff",D="#e5e5e9",I=["Added","Changed","Fixed","Removed","Deprecated","Security"];function U(e){let t=["January","February","March","April","May","June","July","August","September","October","November","December"],[n,r,a]=e.split("-").map(d=>parseInt(d,10));return!n||!r||!a||r<1||r>12?e:`${t[r-1]} ${a}, ${n}`}o(U,"formatIsoDate");function l(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}o(l,"escapeHtml");function z(e){let t=[];for(let n of I){let r=e[n];r&&r.length>0&&t.push({name:n,items:r})}return t}o(z,"orderedSections");function v(e){let{version:t,date:n,sections:r,unsubscribeUrl:a,productUrl:d,recipientName:u}=e,c=U(n),s=`What's new in RuleMetric \u2014 ${c}`,y=u?`Hi ${u},`:"Hi there,",i=z(r),p=new Date().getUTCFullYear(),b=i.map(({name:R,items:E})=>{let w=E.map(O=>` <li style="margin:0 0 6px 0;font-size:15px;line-height:1.5;color:${h};">${l(O)}</li>`).join(`
2
2
  `);return` <h3 style="margin:24px 0 8px 0;font-size:16px;line-height:1.3;font-weight:600;color:${h};">${R}</h3>
3
3
  <ul style="margin:0 0 8px 0;padding-left:20px;">
4
4
  ${w}