@rulemetric/cli 0.7.13 → 0.7.14

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.
@@ -1 +1 @@
1
- import{c as L}from"./chunk-TIOKY2IA.js";import{a as A}from"./chunk-LMHLQ2RB.js";import{a as E}from"./chunk-7SZX7C7U.js";import{a as b}from"./chunk-AIGR5AYV.js";import{a as h}from"./chunk-RFMFABN2.js";import{b as I}from"./chunk-W2MOTOQE.js";import{a as R}from"./chunk-42HTXLNB.js";import{a as H}from"./chunk-AN4DKFLK.js";import{a as S}from"./chunk-RSKQRVPJ.js";import{a as M}from"./chunk-KAF3CYRW.js";import{a as k}from"./chunk-UF6US7VU.js";import{a as v}from"./chunk-O3C5IV2Y.js";import{b as y}from"./chunk-HIDJIABB.js";import{a as T}from"./chunk-HA77SJ4C.js";import{b as w}from"./chunk-5RBLIVBF.js";import{b as f,e as _,f as p}from"./chunk-H2ORWIEY.js";import{a as s}from"./chunk-ZLLER3HP.js";var V={process_eval:b,process_insights:h,process_launch:I,process_send_message:S,process_conversation:E,process_session_goal:A,distill_memories:y,memory_ab:R,process_announcement:T,process_run_cleanup:H,cron_suggest_instructions:v,cron_refresh_skills:k,cron_refresh_pricing:M},N=Object.keys(V),O=new Set(["process_session_goal","process_announcement","process_run_cleanup","distill_memories","memory_ab"]);function W(e=process.env){return e.DATABASE_URL?N:N.filter(n=>!O.has(n))}s(W,"availableCapabilities");var $=3e4,B=3e4,F=3e4,P=250,D=5e3,J=`thin-agent-${process.pid}`,g=null;function U(e,n,r,l){let a=s(t=>{p("/api/workers/heartbeat",{workerType:"cli-worker",clientName:J,clientVersion:l,workerVersion:"0.1.0",currentJobId:null,inFlightCount:0,lastError:null,status:t,metadata:{capabilities:e,mode:"thin-agent"}}).then(c=>{let m=c?.advisory;m&&m.message!==g?(g=m.message,o(r,{event:"worker_advisory",code:m.code,message:m.message})):m||(g=null)}).catch(c=>{o(r,{event:"presence_heartbeat_error",error:c instanceof Error?c.message:String(c)})})},"send");a("alive");let d=setInterval(()=>a("alive"),F);n.addEventListener("abort",()=>{clearInterval(d),a("shutting_down")},{once:!0})}s(U,"startPresenceHeartbeat");function o(e,n){try{e(JSON.stringify({ts:new Date().toISOString(),...n}))}catch{e(`[agent-loop] log_error event=${n.event}`)}}s(o,"structuredLog");function C(e,n){return n.aborted?Promise.resolve(!1):e<=0?Promise.resolve(!0):new Promise(r=>{let l=setTimeout(()=>{n.removeEventListener("abort",a),r(!0)},e),a=s(()=>{clearTimeout(l),n.removeEventListener("abort",a),r(!1)},"onAbort");n.addEventListener("abort",a,{once:!0})})}s(C,"abortableSleep");async function K(e,n){let r=`capabilities=${encodeURIComponent(e.join(","))}&waitMs=${n}`,l=await _(`/api/work/next?${r}`);return l==null||typeof l=="string"?null:l}s(K,"pollForWork");function G(e,n){return{logger:{info:s(r=>n(r),"info"),warn:s(r=>n(r),"warn"),error:s(r=>n(r),"error")},job:{attempts:e}}}s(G,"makeHelpers");async function q(e,n,r){let l=V[e.kind],a=Date.now();if(o(r,{event:"claim",jobId:e.id,kind:e.kind,attempts:e.attempts}),!l){let t=`unknown kind: ${e.kind}`;o(r,{event:"fail",jobId:e.id,kind:e.kind,terminal:!0,error:t}),await p(`/api/work/${e.id}/fail`,{leaseToken:e.leaseToken,error:t,terminal:!0}).catch(()=>{});return}let d=setInterval(()=>{o(r,{event:"heartbeat",jobId:e.id}),p(`/api/work/${e.id}/heartbeat`,{leaseToken:e.leaseToken}).catch(t=>{o(r,{event:"heartbeat_error",jobId:e.id,error:t instanceof Error?t.message:String(t)})})},n);try{let t=G(e.attempts,r),c=await l(e.payload,t)??{};clearInterval(d),o(r,{event:"complete",jobId:e.id,kind:e.kind,durationMs:Date.now()-a}),await p(`/api/work/${e.id}/complete`,{leaseToken:e.leaseToken,result:c})}catch(t){clearInterval(d);let c=w(t),m=t instanceof Error?t.message:String(t);o(r,{event:"fail",jobId:e.id,kind:e.kind,durationMs:Date.now()-a,terminal:c,error:m}),await p(`/api/work/${e.id}/fail`,{leaseToken:e.leaseToken,error:m,terminal:c}).catch(i=>{o(r,{event:"fail_post_error",jobId:e.id,error:i instanceof Error?i.message:String(i)})})}}s(q,"runOne");async function me(e){let n=e.log??(()=>{}),r=e.pollWaitMs??$,l=e.heartbeatIntervalMs??B,a=e.capabilities??W(),d=P;o(n,{event:"agent_start",capabilities:a,pollWaitMs:r,heartbeatIntervalMs:l}),U(a,e.signal,n,e.version),L({signal:e.signal,log:n}).catch(i=>{o(n,{event:"tt_heartbeat_fatal",error:i instanceof Error?i.message:String(i)})});let t=5*6e4,c=0,m=s(()=>{if(!e.readInstalledVersion||!e.version)return!1;let i=Date.now();if(i-c<t)return!1;c=i;let u=e.readInstalledVersion();return!!(u&&u!==e.version)},"versionDrifted");for(;!e.signal.aborted;){if(m()){o(n,{event:"agent_version_drift",bootVersion:e.version,installedVersion:e.readInstalledVersion?.()??null}),e.onVersionDrift?.();break}let i=null;try{i=await K(a,r)}catch(u){let x=u instanceof f?u.statusCode:void 0;if(o(n,{event:"poll_error",status:x,error:u instanceof Error?u.message:String(u)}),!await C(d,e.signal))break;d=Math.min(d*2,D);continue}if(!i){if(o(n,{event:"poll_204"}),!await C(d,e.signal))break;d=Math.min(d*2,D);continue}d=P,await q(i,l,n)}o(n,{event:"agent_stop"})}s(me,"runAgentLoop");export{V as a,N as b,W as c,K as d,me as e};
1
+ import{c as L}from"./chunk-TIOKY2IA.js";import{a as S}from"./chunk-RSKQRVPJ.js";import{a as A}from"./chunk-SS5WVIQP.js";import{a as T}from"./chunk-E4BQ5QM3.js";import{a as E}from"./chunk-7SZX7C7U.js";import{a as b}from"./chunk-AIGR5AYV.js";import{a as h}from"./chunk-HDU5QPEO.js";import{b as I}from"./chunk-W2MOTOQE.js";import{a as R}from"./chunk-HITXGIHI.js";import{a as H}from"./chunk-OK3PGZND.js";import{b as w}from"./chunk-5RBLIVBF.js";import{a as M}from"./chunk-KAF3CYRW.js";import{a as k}from"./chunk-UF6US7VU.js";import{a as v}from"./chunk-O3C5IV2Y.js";import{b as y}from"./chunk-ATSA6BQM.js";import{b as f,e as _,f as p}from"./chunk-H2ORWIEY.js";import{a as s}from"./chunk-ZLLER3HP.js";var V={process_eval:b,process_insights:h,process_launch:I,process_send_message:S,process_conversation:E,process_session_goal:A,distill_memories:y,memory_ab:R,process_announcement:T,process_run_cleanup:H,cron_suggest_instructions:v,cron_refresh_skills:k,cron_refresh_pricing:M},N=Object.keys(V),O=new Set(["process_session_goal","process_announcement","process_run_cleanup","distill_memories","memory_ab"]);function W(e=process.env){return e.DATABASE_URL?N:N.filter(n=>!O.has(n))}s(W,"availableCapabilities");var $=3e4,B=3e4,F=3e4,P=250,D=5e3,J=`thin-agent-${process.pid}`,g=null;function U(e,n,r,l){let a=s(t=>{p("/api/workers/heartbeat",{workerType:"cli-worker",clientName:J,clientVersion:l,workerVersion:"0.1.0",currentJobId:null,inFlightCount:0,lastError:null,status:t,metadata:{capabilities:e,mode:"thin-agent"}}).then(c=>{let m=c?.advisory;m&&m.message!==g?(g=m.message,o(r,{event:"worker_advisory",code:m.code,message:m.message})):m||(g=null)}).catch(c=>{o(r,{event:"presence_heartbeat_error",error:c instanceof Error?c.message:String(c)})})},"send");a("alive");let d=setInterval(()=>a("alive"),F);n.addEventListener("abort",()=>{clearInterval(d),a("shutting_down")},{once:!0})}s(U,"startPresenceHeartbeat");function o(e,n){try{e(JSON.stringify({ts:new Date().toISOString(),...n}))}catch{e(`[agent-loop] log_error event=${n.event}`)}}s(o,"structuredLog");function C(e,n){return n.aborted?Promise.resolve(!1):e<=0?Promise.resolve(!0):new Promise(r=>{let l=setTimeout(()=>{n.removeEventListener("abort",a),r(!0)},e),a=s(()=>{clearTimeout(l),n.removeEventListener("abort",a),r(!1)},"onAbort");n.addEventListener("abort",a,{once:!0})})}s(C,"abortableSleep");async function K(e,n){let r=`capabilities=${encodeURIComponent(e.join(","))}&waitMs=${n}`,l=await _(`/api/work/next?${r}`);return l==null||typeof l=="string"?null:l}s(K,"pollForWork");function G(e,n){return{logger:{info:s(r=>n(r),"info"),warn:s(r=>n(r),"warn"),error:s(r=>n(r),"error")},job:{attempts:e}}}s(G,"makeHelpers");async function q(e,n,r){let l=V[e.kind],a=Date.now();if(o(r,{event:"claim",jobId:e.id,kind:e.kind,attempts:e.attempts}),!l){let t=`unknown kind: ${e.kind}`;o(r,{event:"fail",jobId:e.id,kind:e.kind,terminal:!0,error:t}),await p(`/api/work/${e.id}/fail`,{leaseToken:e.leaseToken,error:t,terminal:!0}).catch(()=>{});return}let d=setInterval(()=>{o(r,{event:"heartbeat",jobId:e.id}),p(`/api/work/${e.id}/heartbeat`,{leaseToken:e.leaseToken}).catch(t=>{o(r,{event:"heartbeat_error",jobId:e.id,error:t instanceof Error?t.message:String(t)})})},n);try{let t=G(e.attempts,r),c=await l(e.payload,t)??{};clearInterval(d),o(r,{event:"complete",jobId:e.id,kind:e.kind,durationMs:Date.now()-a}),await p(`/api/work/${e.id}/complete`,{leaseToken:e.leaseToken,result:c})}catch(t){clearInterval(d);let c=w(t),m=t instanceof Error?t.message:String(t);o(r,{event:"fail",jobId:e.id,kind:e.kind,durationMs:Date.now()-a,terminal:c,error:m}),await p(`/api/work/${e.id}/fail`,{leaseToken:e.leaseToken,error:m,terminal:c}).catch(i=>{o(r,{event:"fail_post_error",jobId:e.id,error:i instanceof Error?i.message:String(i)})})}}s(q,"runOne");async function me(e){let n=e.log??(()=>{}),r=e.pollWaitMs??$,l=e.heartbeatIntervalMs??B,a=e.capabilities??W(),d=P;o(n,{event:"agent_start",capabilities:a,pollWaitMs:r,heartbeatIntervalMs:l}),U(a,e.signal,n,e.version),L({signal:e.signal,log:n}).catch(i=>{o(n,{event:"tt_heartbeat_fatal",error:i instanceof Error?i.message:String(i)})});let t=5*6e4,c=0,m=s(()=>{if(!e.readInstalledVersion||!e.version)return!1;let i=Date.now();if(i-c<t)return!1;c=i;let u=e.readInstalledVersion();return!!(u&&u!==e.version)},"versionDrifted");for(;!e.signal.aborted;){if(m()){o(n,{event:"agent_version_drift",bootVersion:e.version,installedVersion:e.readInstalledVersion?.()??null}),e.onVersionDrift?.();break}let i=null;try{i=await K(a,r)}catch(u){let x=u instanceof f?u.statusCode:void 0;if(o(n,{event:"poll_error",status:x,error:u instanceof Error?u.message:String(u)}),!await C(d,e.signal))break;d=Math.min(d*2,D);continue}if(!i){if(o(n,{event:"poll_204"}),!await C(d,e.signal))break;d=Math.min(d*2,D);continue}d=P,await q(i,l,n)}o(n,{event:"agent_stop"})}s(me,"runAgentLoop");export{V as a,N as b,W as c,K as d,me as e};
@@ -0,0 +1 @@
1
+ import{a as s}from"./chunk-ZLLER3HP.js";function w(r){if(typeof r!="string")return null;let n=r.toUpperCase();return n==="A"||n==="B"||n==="TIE"?n:null}s(w,"normalizeWinner");function v(r){return Array.isArray(r)?r.filter(n=>typeof n=="string"):[]}s(v,"stringList");function d(r){let n=r.trim(),a=n.match(/```(?:json)?\s*([\s\S]*?)```/);a&&(n=a[1].trim());let e=n.match(/\{[\s\S]*\}/);e&&(n=e[0]);let t;try{t=JSON.parse(n)}catch{return null}if(typeof t!="object"||t===null)return null;let{per_eval:l,overall:g}=t,i=typeof g=="object"&&g!==null?g:{},u=w(i.winner);return u?{perEval:(Array.isArray(l)?l:[]).flatMap(p=>{if(typeof p!="object"||p===null)return[];let o=p,c=w(o.winner);return!c||typeof o.eval_name!="string"?[]:[{evalName:o.eval_name,winner:c,reasoning:typeof o.reasoning=="string"?o.reasoning:""}]}),overall:{winner:u,reasoning:typeof i.reasoning=="string"?i.reasoning:"",strengthsWinner:v(i.strengths_winner),weaknessesLoser:v(i.weaknesses_loser)}}:null}s(d,"parseComparatorOutput");function m(r,n){let a=s(e=>{if(e==="TIE")return null;let t=n.isSwapped?n.targetBId:n.targetAId,l=n.isSwapped?n.targetAId:n.targetBId;return e==="A"?t:l},"resolve");return{winnerTargetId:a(r.overall.winner),perEval:r.perEval.map(e=>({evalName:e.evalName,winnerTargetId:a(e.winner),reasoning:e.reasoning})),overall:{reasoning:r.overall.reasoning,strengthsWinner:r.overall.strengthsWinner,weaknessesLoser:r.overall.weaknessesLoser}}}s(m,"resolveComparison");export{d as a,m as b};
@@ -1,4 +1,4 @@
1
- import{a as I,c as i,d as r,e as a,j as M}from"./chunk-7574DMOC.js";import{f as v}from"./chunk-RTWRHIKY.js";import{a as y}from"./chunk-ZLLER3HP.js";import{eq as u,and as A,desc as E,inArray as j,isNotNull as D,sql as R}from"drizzle-orm";var x=50,k=24e3,C=3,L=3,O=40,P=4e3,X=new Set(["fact","decision","correction","convention"]),$=`You are distilling DURABLE, PROJECT-SPECIFIC knowledge from an AI coding session so a future agent working on the SAME project starts smarter.
1
+ import{a as I,c as i,d as r,e as a,j as M}from"./chunk-QH6X6VOT.js";import{f as v}from"./chunk-RTWRHIKY.js";import{a as y}from"./chunk-ZLLER3HP.js";import{eq as u,and as A,desc as E,inArray as j,isNotNull as D,sql as R}from"drizzle-orm";var x=50,k=24e3,C=3,L=3,O=40,P=4e3,X=new Set(["fact","decision","correction","convention"]),$=`You are distilling DURABLE, PROJECT-SPECIFIC knowledge from an AI coding session so a future agent working on the SAME project starts smarter.
2
2
 
3
3
  Extract ONLY facts / decisions / corrections / conventions that will STILL be true and useful in FUTURE sessions \u2014 architecture facts, deliberate design decisions, corrections of a wrong approach, or project conventions.
4
4
 
@@ -1,2 +1,2 @@
1
- import{b as B}from"./chunk-N7TGRFVZ.js";import{a as R}from"./chunk-5RBLIVBF.js";import{a as v,g as d,h as n,i as m,j as U}from"./chunk-7574DMOC.js";import{a as $}from"./chunk-ZLLER3HP.js";import{and as L,asc as j,eq as l,gt as q,isNotNull as F,sql as O}from"drizzle-orm";var _=100,C=10;async function G(I,s={}){let t=s.db??U(),D=s.sendEmail??B,p=s.log??(o=>process.stderr.write(`[process_announcement] ${o}
1
+ import{b as B}from"./chunk-N7TGRFVZ.js";import{a as R}from"./chunk-5RBLIVBF.js";import{a as v,g as d,h as n,i as m,j as U}from"./chunk-QH6X6VOT.js";import{a as $}from"./chunk-ZLLER3HP.js";import{and as L,asc as j,eq as l,gt as q,isNotNull as F,sql as O}from"drizzle-orm";var _=100,C=10;async function G(I,s={}){let t=s.db??U(),D=s.sendEmail??B,p=s.log??(o=>process.stderr.write(`[process_announcement] ${o}
2
2
  `)),b=s.webBaseUrl??process.env.RULEMETRIC_WEB_URL??process.env.WEB_URL??"https://rulemetric.com",{announcementId:r}=I,[i]=await t.select().from(d).where(l(d.id,r)).limit(1);if(!i)throw new R(`Announcement ${r} not found`);if(i.status!=="queued"&&i.status!=="sending")throw new R(`Announcement ${r} is in status='${i.status}'; expected 'queued' or 'sending'.`);await t.update(d).set({status:"sending",updatedAt:new Date}).where(l(d.id,r)),p(`Sending announcement ${r} (${i.subject??""})`);let w=0,f=0,h=0,y=0,k=null;try{for(;;){let c=await t.select({userId:m.userId,email:v.email,displayName:v.displayName,unsubscribeToken:m.unsubscribeToken}).from(m).innerJoin(v,l(v.id,m.userId)).where(L(l(m.productAnnouncements,!0),F(v.email),k?q(m.userId,k):void 0)).orderBy(j(m.userId)).limit(_);if(c.length===0)break;k=c[c.length-1].userId;for(let A=0;A<c.length;A+=C){let P=c.slice(A,A+C),S=await Promise.allSettled(P.map(g=>W({recipient:g,announcement:i,webBaseUrl:b,sendEmail:D,db:t})));for(let g=0;g<S.length;g++){let u=S[g];if(u.status==="fulfilled")u.value.ok==="sent"?w++:u.value.ok==="skipped"?h++:(f++,u.value.provider==="noop"&&y++,p(` recipient ${P[g].userId}: send failed \u2014 ${u.value.error}`));else{f++;let T=u.reason instanceof Error?u.reason.message:String(u.reason);p(` recipient ${P[g].userId}: send failed \u2014 ${T}`)}}}if(c.length<_)break}y>0&&p(`WARNING: ${y} recipient(s) hit the noop email provider and were recorded as FAILED \u2014 no email provider is configured on this worker (set RESEND_API_KEY in ~/.config/rulemetric/env and reinstall the service)`);let o=await t.select({status:n.status,count:O`count(*)::int`}).from(n).where(l(n.announcementId,r)).groupBy(n.status),e={};for(let c of o)e[c.status]=c.count;let a=e.sent??0,E=e.failed??0,N=a===0&&E>0?"failed":"sent",x=E>0?`${E} of ${a+E} recipient(s) failed; see announcement_deliveries`:null;return await t.update(d).set({status:N,recipientCount:a,...N==="sent"?{sentAt:new Date}:{},error:x,updatedAt:new Date}).where(l(d.id,r)),p(`Done: status=${N} sent=${a} failed=${E} (this attempt: sent=${w} failed=${f} skipped=${h})`),{sent:w,failed:f,skipped:h}}catch(o){let e=o instanceof Error?o.message:String(o);throw await t.update(d).set({status:"failed",error:e.slice(0,1e3),updatedAt:new Date}).where(l(d.id,r)).catch(()=>{}),o}}$(G,"processAnnouncement");function K(I){return I.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}$(K,"escapeHtml");async function W(I){let{recipient:s,announcement:t,webBaseUrl:D,sendEmail:p,db:b}=I;if(!s.email)return{ok:"skipped",reason:"no-email"};let r=await b.insert(n).values({announcementId:t.id,userId:s.userId,email:s.email,status:"pending"}).onConflictDoNothing({target:[n.announcementId,n.userId]}).returning({id:n.id});if(r.length===0)return{ok:"skipped",reason:"already-claimed"};let i=r[0].id,w=D.replace(/\/$/,""),f=encodeURIComponent(s.unsubscribeToken),h=`${w}/unsubscribe/${f}`,y=s.displayName?.trim().split(/\s+/)[0]||"there",k=t.htmlBody.replaceAll("{{unsubscribe_url}}",h).replaceAll("{{recipient_name}}",K(y)),o=t.textBody.replaceAll("{{unsubscribe_url}}",h).replaceAll("{{recipient_name}}",y);try{let e=await p({to:s.email,subject:t.subject,html:k,text:o,fromName:"RuleMetric",idempotencyKey:i,headers:{"List-Unsubscribe":`<${w}/api/unsubscribe/${f}>`,"List-Unsubscribe-Post":"List-Unsubscribe=One-Click"}});if(e.provider==="noop"){let a="no email provider configured (RESEND_API_KEY unset on the worker)";return await b.update(n).set({status:"failed",error:a}).where(l(n.id,i)),{ok:"failed",error:a,provider:e.provider}}return await b.update(n).set({status:"sent",providerId:e.id,sentAt:new Date}).where(l(n.id,i)),{ok:"sent",providerId:e.id,provider:e.provider}}catch(e){let a=e instanceof Error?e.message:String(e);return await b.update(n).set({status:"failed",error:a.slice(0,1e3)}).where(l(n.id,i)).catch(()=>{}),{ok:"failed",error:a}}}$(W,"sendOne");export{G as a};
@@ -1,4 +1,4 @@
1
- import{a as S,b as z,c as T}from"./chunk-QFVGUZDO.js";import{a as O}from"./chunk-ZL4MZMUK.js";import{a as j}from"./chunk-5RBLIVBF.js";import{c as A,d as C,f as b}from"./chunk-RTWRHIKY.js";import{e as _,f as I,h as u}from"./chunk-H2ORWIEY.js";import{a as $}from"./chunk-ZLLER3HP.js";async function D(f,m){let{mirrorId:o,projectPath:s,projectId:i,config:p}=f,e=$(n=>m.logger.info(n),"log");if(p?.sessionId)return M({mirrorId:o,sessionId:p.sessionId},e);e(`Processing insights job ${o}...`),await u(`/api/insights-jobs/${o}/progress`,{status:"running",progress:{step:"reading_data"}});try{let{repaired:n}=await I("/api/sessions/repair-analyzed-at",{});n>0&&e(` Repaired analyzed_at on ${n} orphan session(s).`)}catch(n){e(` Warning: analyzed_at repair failed: ${n instanceof Error?n.message:String(n)}`)}let a=await J(s,i);if(!a)throw new j("No session data found \u2014 ensure sessions are captured and enriched.");e(` Found ${a.stats.sessions} sessions, generating recommendations...`);let w=20,c=200;if(C()!=="none"){let n=0,t=0;try{for(;n<c;){let l=await _(`/api/sessions?hasAnalysis=false&limit=${w}&offset=${t}`);if(l.length===0)break;e(` Generating facets for ${l.length} un-analyzed sessions (drained ${n} so far)...`);for(let g of l){if(n>=c)break;try{let d=await _(`/api/sessions/${g.id}/events?limit=100`);if(d.length<2){n++,t++;continue}let P=d.filter(h=>h.eventType==="user_message"||h.eventType==="human").map(h=>h.content?.slice(0,200)??"").filter(Boolean).join(`
1
+ import{a as S,b as z,c as T}from"./chunk-QFVGUZDO.js";import{a as j}from"./chunk-5RBLIVBF.js";import{a as O}from"./chunk-ZL4MZMUK.js";import{c as A,d as C,f as b}from"./chunk-RTWRHIKY.js";import{e as _,f as I,h as u}from"./chunk-H2ORWIEY.js";import{a as $}from"./chunk-ZLLER3HP.js";async function D(f,m){let{mirrorId:o,projectPath:s,projectId:i,config:p}=f,e=$(n=>m.logger.info(n),"log");if(p?.sessionId)return M({mirrorId:o,sessionId:p.sessionId},e);e(`Processing insights job ${o}...`),await u(`/api/insights-jobs/${o}/progress`,{status:"running",progress:{step:"reading_data"}});try{let{repaired:n}=await I("/api/sessions/repair-analyzed-at",{});n>0&&e(` Repaired analyzed_at on ${n} orphan session(s).`)}catch(n){e(` Warning: analyzed_at repair failed: ${n instanceof Error?n.message:String(n)}`)}let a=await J(s,i);if(!a)throw new j("No session data found \u2014 ensure sessions are captured and enriched.");e(` Found ${a.stats.sessions} sessions, generating recommendations...`);let w=20,c=200;if(C()!=="none"){let n=0,t=0;try{for(;n<c;){let l=await _(`/api/sessions?hasAnalysis=false&limit=${w}&offset=${t}`);if(l.length===0)break;e(` Generating facets for ${l.length} un-analyzed sessions (drained ${n} so far)...`);for(let g of l){if(n>=c)break;try{let d=await _(`/api/sessions/${g.id}/events?limit=100`);if(d.length<2){n++,t++;continue}let P=d.filter(h=>h.eventType==="user_message"||h.eventType==="human").map(h=>h.content?.slice(0,200)??"").filter(Boolean).join(`
2
2
  ---
3
3
  `);if(!P){n++,t++;continue}let E=await b(T,P,4096);if(E){let h=d.filter(R=>R.eventType==="user_message"||R.eventType==="human").length;await u(`/api/sessions/${g.id}/enrich`,{analysis:{source:"generated_facets",...E},analyzedEventCount:d.length,analyzedTurnCount:h}),e(` Generated facets for session ${g.id} (${g.tool})`)}else t++;n++}catch(d){e(` Failed to generate facets for session ${g.id}: ${d instanceof Error?d.message:String(d)}`),n++,t++}}if(l.length<w)break}}catch(l){e(` Warning: facet generation failed after ${n} sessions: ${l instanceof Error?l.message:String(l)}`)}}let r={},y=S.length+1;for(let n=0;n<S.length;n++){let t=S[n];e(` [${n+1}/${y}] Generating ${t.name}...`);try{await u(`/api/insights-jobs/${o}/progress`,{status:"running",progress:{step:t.name,current:n+1,total:y,partial:{...r}}})}catch(g){e(` Warning: progress update failed for ${t.name}: ${g instanceof Error?g.message:String(g)}`)}e(` Running LLM prompt for ${t.name}...`);let l=await b(t.prompt,a.summary,t.maxTokens);l?(r[t.name]=l,e(` Got result for ${t.name}`)):e(` No result for ${t.name} (LLM returned null)`)}e(` [${y}/${y}] Generating at_a_glance...`),await u(`/api/insights-jobs/${o}/progress`,{status:"running",progress:{step:"at_a_glance",current:y,total:y,partial:{...r}}});let N=[a.summary,r.what_works?`
4
4
  ## What Works
@@ -1 +1 @@
1
- import{e as u,f as t,j as x}from"./chunk-7574DMOC.js";import{a as E}from"./chunk-5BMBVTAE.js";import{a as P}from"./chunk-QH7VY5HJ.js";import{a as f}from"./chunk-ZLLER3HP.js";import{eq as s}from"drizzle-orm";import{buildControlledVerdict as M}from"@rulemetric/effectiveness";var A=f(m=>m.summary.pass_rate>=1?1:0,"fullPassScore");async function q(m,d={}){let r=d.db??x(),w=d.executeEval??P,y=d.grade??E,n=d.now??Date.now,[e]=await r.select().from(t).where(s(t.id,m.experimentId)).limit(1);if(!e)return{skipped:"not_found"};if(e.status==="completed"||e.status==="failed")return{skipped:"already_terminal",status:e.status};let[g]=await r.select({body:u.body}).from(u).where(s(u.id,e.memoryId)).limit(1);if(!g)return await r.update(t).set({status:"failed",error:"memory no longer exists",completedAt:new Date(n())}).where(s(t.id,e.id)),{skipped:"memory_gone",status:"failed"};await r.update(t).set({status:"running",startedAt:new Date(n())}).where(s(t.id,e.id));let b=e.expectations??[],l=e.model??void 0,a=[],h=0;try{for(let i=0;i<e.trials;i++){let c=await w({prompt:e.taskPrompt,targetContent:g.body,model:l}),p=await w({prompt:e.taskPrompt,model:l});if(c.error||p.error){h++;continue}let[v,D]=await Promise.all([y({prompt:e.taskPrompt,output:c.output,expectations:b,model:l}),y({prompt:e.taskPrompt,output:p.output,expectations:b,model:l})]);a.push({withScore:A(v),withoutScore:A(D),withLatency:c.durationMs/1e3,withoutLatency:p.durationMs/1e3})}if(a.length===0){let i=`no trials completed (${h}/${e.trials} runs errored \u2014 is the claude CLI available?)`;return await r.update(t).set({status:"failed",error:i,completedAt:new Date(n())}).where(s(t.id,e.id)),{status:"failed",requestedTrials:e.trials,completedTrials:0}}let o=M(a);return await r.update(t).set({status:"completed",result:{verdict:o,pairs:a,completedTrials:a.length,model:l??null},completedAt:new Date(n())}).where(s(t.id,e.id)),{status:"completed",requestedTrials:e.trials,completedTrials:a.length,significant:o.significant,delta:o.delta}}catch(o){let i=o instanceof Error?o.message:String(o);return await r.update(t).set({status:"failed",error:i.slice(0,500),completedAt:new Date(n())}).where(s(t.id,e.id)),{status:"failed",requestedTrials:e.trials,completedTrials:a.length}}}f(q,"processMemoryAb");export{q as a};
1
+ import{e as u,f as t,j as x}from"./chunk-QH6X6VOT.js";import{a as E}from"./chunk-5BMBVTAE.js";import{a as P}from"./chunk-QH7VY5HJ.js";import{a as f}from"./chunk-ZLLER3HP.js";import{eq as s}from"drizzle-orm";import{buildControlledVerdict as M}from"@rulemetric/effectiveness";var A=f(m=>m.summary.pass_rate>=1?1:0,"fullPassScore");async function q(m,d={}){let r=d.db??x(),w=d.executeEval??P,y=d.grade??E,n=d.now??Date.now,[e]=await r.select().from(t).where(s(t.id,m.experimentId)).limit(1);if(!e)return{skipped:"not_found"};if(e.status==="completed"||e.status==="failed")return{skipped:"already_terminal",status:e.status};let[g]=await r.select({body:u.body}).from(u).where(s(u.id,e.memoryId)).limit(1);if(!g)return await r.update(t).set({status:"failed",error:"memory no longer exists",completedAt:new Date(n())}).where(s(t.id,e.id)),{skipped:"memory_gone",status:"failed"};await r.update(t).set({status:"running",startedAt:new Date(n())}).where(s(t.id,e.id));let b=e.expectations??[],l=e.model??void 0,a=[],h=0;try{for(let i=0;i<e.trials;i++){let c=await w({prompt:e.taskPrompt,targetContent:g.body,model:l}),p=await w({prompt:e.taskPrompt,model:l});if(c.error||p.error){h++;continue}let[v,D]=await Promise.all([y({prompt:e.taskPrompt,output:c.output,expectations:b,model:l}),y({prompt:e.taskPrompt,output:p.output,expectations:b,model:l})]);a.push({withScore:A(v),withoutScore:A(D),withLatency:c.durationMs/1e3,withoutLatency:p.durationMs/1e3})}if(a.length===0){let i=`no trials completed (${h}/${e.trials} runs errored \u2014 is the claude CLI available?)`;return await r.update(t).set({status:"failed",error:i,completedAt:new Date(n())}).where(s(t.id,e.id)),{status:"failed",requestedTrials:e.trials,completedTrials:0}}let o=M(a);return await r.update(t).set({status:"completed",result:{verdict:o,pairs:a,completedTrials:a.length,model:l??null},completedAt:new Date(n())}).where(s(t.id,e.id)),{status:"completed",requestedTrials:e.trials,completedTrials:a.length,significant:o.significant,delta:o.delta}}catch(o){let i=o instanceof Error?o.message:String(o);return await r.update(t).set({status:"failed",error:i.slice(0,500),completedAt:new Date(n())}).where(s(t.id,e.id)),{status:"failed",requestedTrials:e.trials,completedTrials:a.length}}}f(q,"processMemoryAb");export{q as a};
@@ -1 +1 @@
1
- import{c as m,d as p}from"./chunk-ZL4MZMUK.js";import{a as C}from"./chunk-N7TGRFVZ.js";import{g as c,j as f}from"./chunk-7574DMOC.js";import{a as r}from"./chunk-ZLLER3HP.js";import*as a from"node:fs/promises";import*as g from"node:path";import{eq as b}from"drizzle-orm";async function v(e){let n=e;for(let t=0;t<50;t++){try{return await a.stat(g.join(n,"pnpm-workspace.yaml")),n}catch{}let i=g.dirname(n);if(i===n)return null;n=i}return null}r(v,"findRepoRoot");async function k(e){if(e)try{return await a.readFile(e,"utf-8")}catch{return null}let n=await v(process.cwd())??process.cwd(),t=g.join(n,"CHANGELOG.md");try{return await a.readFile(t,"utf-8")}catch{return null}}r(k,"readChangelog");var _="https://rulemetric.com";function D(e){let n=e.date??new Date().toISOString().slice(0,10),t=C({version:e.version,date:n,sections:e.sections,unsubscribeUrl:"{{unsubscribe_url}}",recipientName:"{{recipient_name}}",productUrl:_});return{version:e.version,releaseDate:n,subject:t.subject,htmlBody:t.html,textBody:t.text,sections:e.sections}}r(D,"renderRow");async function R(e={}){let n=e.db??f(),t=e.logger??{info:r(s=>console.log(s),"info"),warn:r(s=>console.warn(s),"warn")},i=await k(e.changelogPath);if(i===null)return t.info("[cron_check_changelog] CHANGELOG.md not found; nothing to do"),{createdCount:0,skippedCount:0};let y=m(i),h=p(y);if(h.length===0)return t.info("[cron_check_changelog] No announceable entries; nothing to do"),{createdCount:0,skippedCount:0};let d=0,l=0;for(let s of h){if((await n.select({id:c.id}).from(c).where(b(c.version,s.version)).limit(1)).length>0){l++;continue}let o=D(s);try{await n.insert(c).values({version:o.version,releaseDate:o.releaseDate,subject:o.subject,htmlBody:o.htmlBody,textBody:o.textBody,sections:o.sections,status:"draft"}),d++,t.info(`[cron_check_changelog] Created draft announcement for ${o.version}`)}catch(u){let w=u instanceof Error?u.message:String(u);if(/duplicate key|unique/i.test(w)){l++;continue}throw u}}return t.info(`[cron_check_changelog] Done: created ${d}, skipped ${l}`),{createdCount:d,skippedCount:l}}r(R,"processChangelog");export{R as a};
1
+ import{a as C}from"./chunk-N7TGRFVZ.js";import{c as m,d as p}from"./chunk-ZL4MZMUK.js";import{g as c,j as f}from"./chunk-QH6X6VOT.js";import{a as r}from"./chunk-ZLLER3HP.js";import*as a from"node:fs/promises";import*as g from"node:path";import{eq as b}from"drizzle-orm";async function v(e){let n=e;for(let t=0;t<50;t++){try{return await a.stat(g.join(n,"pnpm-workspace.yaml")),n}catch{}let i=g.dirname(n);if(i===n)return null;n=i}return null}r(v,"findRepoRoot");async function k(e){if(e)try{return await a.readFile(e,"utf-8")}catch{return null}let n=await v(process.cwd())??process.cwd(),t=g.join(n,"CHANGELOG.md");try{return await a.readFile(t,"utf-8")}catch{return null}}r(k,"readChangelog");var _="https://rulemetric.com";function D(e){let n=e.date??new Date().toISOString().slice(0,10),t=C({version:e.version,date:n,sections:e.sections,unsubscribeUrl:"{{unsubscribe_url}}",recipientName:"{{recipient_name}}",productUrl:_});return{version:e.version,releaseDate:n,subject:t.subject,htmlBody:t.html,textBody:t.text,sections:e.sections}}r(D,"renderRow");async function R(e={}){let n=e.db??f(),t=e.logger??{info:r(s=>console.log(s),"info"),warn:r(s=>console.warn(s),"warn")},i=await k(e.changelogPath);if(i===null)return t.info("[cron_check_changelog] CHANGELOG.md not found; nothing to do"),{createdCount:0,skippedCount:0};let y=m(i),h=p(y);if(h.length===0)return t.info("[cron_check_changelog] No announceable entries; nothing to do"),{createdCount:0,skippedCount:0};let d=0,l=0;for(let s of h){if((await n.select({id:c.id}).from(c).where(b(c.version,s.version)).limit(1)).length>0){l++;continue}let o=D(s);try{await n.insert(c).values({version:o.version,releaseDate:o.releaseDate,subject:o.subject,htmlBody:o.htmlBody,textBody:o.textBody,sections:o.sections,status:"draft"}),d++,t.info(`[cron_check_changelog] Created draft announcement for ${o.version}`)}catch(u){let w=u instanceof Error?u.message:String(u);if(/duplicate key|unique/i.test(w)){l++;continue}throw u}}return t.info(`[cron_check_changelog] Done: created ${d}, skipped ${l}`),{createdCount:d,skippedCount:l}}r(R,"processChangelog");export{R as a};
@@ -1,2 +1,2 @@
1
- import{c as R}from"./chunk-6QKI756T.js";import{a as P}from"./chunk-5RBLIVBF.js";import{b as s,c as r,j}from"./chunk-7574DMOC.js";import{a as g}from"./chunk-ZLLER3HP.js";import{and as y,eq as l,isNotNull as I}from"drizzle-orm";async function O($,p={}){let k=p.db??j(),b=p.removeWorktreeFn??R,n=p.log??(e=>process.stderr.write(`[process_run_cleanup] ${e}
1
+ import{c as R}from"./chunk-6QKI756T.js";import{a as P}from"./chunk-5RBLIVBF.js";import{b as s,c as r,j}from"./chunk-QH6X6VOT.js";import{a as g}from"./chunk-ZLLER3HP.js";import{and as y,eq as l,isNotNull as I}from"drizzle-orm";async function O($,p={}){let k=p.db??j(),b=p.removeWorktreeFn??R,n=p.log??(e=>process.stderr.write(`[process_run_cleanup] ${e}
2
2
  `)),{runId:t}=$,[i]=await k.select({id:s.id,userId:s.userId,projectPath:s.projectPath}).from(s).where(l(s.id,t)).limit(1);if(!i)throw new P(`Run ${t} not found`);if(!i.projectPath)throw new P(`Run ${t} has no projectPath; cannot resolve a repo root for worktree cleanup`);let c=i.projectPath,v=await k.select({id:r.id,projectPath:r.projectPath}).from(r).where(y(l(r.runId,t),l(r.userId,i.userId),I(r.endedAt))),a=[],u=0,d=0,h=0,m=0,w=new Set;for(let e of v)if(!(!e.projectPath||e.projectPath===c)&&!w.has(e.projectPath)){w.add(e.projectPath);try{let o=await b({repoRoot:c,worktreePath:e.projectPath});o.removed?(u++,a.push({sessionId:e.id,worktreePath:e.projectPath,status:"removed"}),n(`removed worktree ${e.projectPath} (session ${e.id})`)):o.reason==="dirty"?(d++,a.push({sessionId:e.id,worktreePath:e.projectPath,status:"skipped-dirty"}),n(`skipped dirty worktree ${e.projectPath} (session ${e.id}) \u2014 uncommitted changes`)):(h++,a.push({sessionId:e.id,worktreePath:e.projectPath,status:"absent"}),n(`worktree absent ${e.projectPath} (session ${e.id})`))}catch(o){let f=o instanceof Error?o.message:String(o);m++,a.push({sessionId:e.id,worktreePath:e.projectPath,status:"error",error:f.slice(0,1e3)}),n(`error removing worktree ${e.projectPath} (session ${e.id}): ${f}`)}}return n(`run ${t} cleanup: removed=${u} skippedDirty=${d} absent=${h} errored=${m}`),{runId:t,repoRoot:c,removed:u,skippedDirty:d,absent:h,errored:m,worktrees:a}}g(O,"processRunCleanup");export{O as a};
@@ -0,0 +1 @@
1
+ import{a as m,c as pr}from"./chunk-ZLLER3HP.js";import{boolean as Io,pgTable as _r,text as Qe,timestamp as jt,uuid as To}from"drizzle-orm/pg-core";import{pgTable as Ye,text as te,timestamp as we,jsonb as ho,uuid as F,primaryKey as yo}from"drizzle-orm/pg-core";var u=Ye("organizations",{id:F("id").primaryKey().defaultRandom(),name:te("name").unique().notNull(),slug:te("slug").unique().notNull(),metadata:ho("metadata"),createdAt:we("created_at",{withTimezone:!0}).defaultNow(),updatedAt:we("updated_at",{withTimezone:!0}).defaultNow()}),N=Ye("teams",{id:F("id").primaryKey().defaultRandom(),orgId:F("org_id").references(()=>u.id,{onDelete:"cascade"}),name:te("name").notNull(),slug:te("slug").notNull(),metadata:ho("metadata"),createdAt:we("created_at",{withTimezone:!0}).defaultNow()}),oe=Ye("user_organizations",{userId:F("user_id").notNull(),orgId:F("org_id").references(()=>u.id,{onDelete:"cascade"}).notNull(),role:te("role").notNull().default("member"),createdAt:we("created_at",{withTimezone:!0}).defaultNow()},e=>[yo({columns:[e.userId,e.orgId]})]),ne=Ye("user_teams",{userId:F("user_id").notNull(),teamId:F("team_id").references(()=>N.id,{onDelete:"cascade"}).notNull(),role:te("role").notNull().default("member"),createdAt:we("created_at",{withTimezone:!0}).defaultNow()},e=>[yo({columns:[e.userId,e.teamId]})]);var o=_r("profiles",{id:To("id").primaryKey(),email:Qe("email"),displayName:Qe("display_name"),activeOrgId:To("active_org_id").references(()=>u.id,{onDelete:"set null"}),isSuperadmin:Io("is_superadmin").notNull().default(!1),claudeCodePlan:Qe("claude_code_plan"),planSource:Qe("plan_source").notNull().default("detected"),setupCompletedAt:jt("setup_completed_at",{withTimezone:!0}),liveSendSkipped:Io("live_send_skipped").notNull().default(!1),createdAt:jt("created_at",{withTimezone:!0}).defaultNow(),updatedAt:jt("updated_at",{withTimezone:!0}).defaultNow()});import{pgTable as vr,text as se,timestamp as St,jsonb as bo,uuid as $e,integer as hr,boolean as yr,index as Kt}from"drizzle-orm/pg-core";import{boolean as xr,jsonb as Nr,pgTable as Et,primaryKey as zo,text as G,timestamp as ze,uniqueIndex as kt,uuid as J}from"drizzle-orm/pg-core";import{sql as gr}from"drizzle-orm";import{pgTable as wo,text as x,timestamp as Ae,jsonb as Xe,uuid as P,integer as Rt,boolean as fr,uniqueIndex as Ao,index as We}from"drizzle-orm/pg-core";var r=wo("instructions",{id:P("id").primaryKey().defaultRandom(),name:x("name").notNull(),description:x("description").notNull(),type:x("type").notNull().default("instruction"),scope:x("scope").notNull(),scopeRef:P("scope_ref"),version:x("version").notNull(),content:x("content").notNull(),frontmatter:Xe("frontmatter").notNull(),slots:Xe("slots"),tags:x("tags").array(),compatibility:x("compatibility").array(),createdBy:P("created_by"),createdAt:Ae("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Ae("updated_at",{withTimezone:!0}).defaultNow(),archived:fr("archived").default(!1),archivedAt:Ae("archived_at",{withTimezone:!0}),archivedBy:P("archived_by"),forkedFromId:P("forked_from_id").references(()=>r.id,{onDelete:"set null"}),upstreamVersion:x("upstream_version"),badge:x("badge"),contentHash:x("content_hash"),contextIdentity:x("context_identity"),scanScore:Rt("scan_score"),scanFindings:Xe("scan_findings"),popularityScore:Rt("popularity_score"),sourceUpdatedAt:Ae("source_updated_at",{withTimezone:!0})},e=>[Ao("instructions_name_scope_ref_idx").on(e.name,e.scope,e.scopeRef),We("idx_instructions_scope").on(e.scope,e.scopeRef),We("idx_instructions_created_by").on(e.createdBy),We("idx_instructions_context_identity").on(e.createdBy,e.contextIdentity),We("idx_instructions_public_recency").on(e.scope,e.sourceUpdatedAt.desc())]),re=wo("instruction_versions",{id:P("id").primaryKey().defaultRandom(),instructionId:P("instruction_id").references(()=>r.id,{onDelete:"cascade"}),versionNumber:Rt("version_number").notNull(),content:x("content").notNull(),frontmatter:Xe("frontmatter").notNull(),changeSummary:x("change_summary"),createdBy:P("created_by"),createdAt:Ae("created_at",{withTimezone:!0}).defaultNow()},e=>[Ao("instruction_versions_instruction_version_idx").on(e.instructionId,e.versionNumber)]);var s=Et("projects",{id:J("id").primaryKey().defaultRandom(),orgId:J("org_id").references(()=>u.id,{onDelete:"cascade"}),name:G("name").notNull(),description:G("description"),githubRepo:G("github_repo"),gitRemoteUrl:G("git_remote_url"),gitRootCommit:G("git_root_commit"),gitRemoteAliases:G("git_remote_aliases").array().notNull().default([]),metadata:Nr("metadata"),createdBy:J("created_by"),createdAt:ze("created_at",{withTimezone:!0}).defaultNow(),updatedAt:ze("updated_at",{withTimezone:!0}).defaultNow()},e=>[kt("projects_org_name_idx").on(e.orgId,e.name),kt("projects_git_remote_url_unique").on(e.gitRemoteUrl).where(gr`${e.gitRemoteUrl} IS NOT NULL`)]),O=Et("project_instructions",{projectId:J("project_id").references(()=>s.id,{onDelete:"cascade"}).notNull(),instructionId:J("instruction_id").references(()=>r.id,{onDelete:"cascade"}).notNull(),addedAt:ze("added_at",{withTimezone:!0}).defaultNow(),addedBy:J("added_by")},e=>[zo({columns:[e.projectId,e.instructionId]})]),Do=Et("project_checkouts",{projectId:J("project_id").references(()=>s.id,{onDelete:"cascade"}).notNull(),path:G("path").notNull(),isWorktree:xr("is_worktree").notNull().default(!1),firstSeen:ze("first_seen",{withTimezone:!0}).notNull().defaultNow(),lastSeen:ze("last_seen",{withTimezone:!0}).notNull().defaultNow()},e=>[zo({columns:[e.projectId,e.path]}),kt("project_checkouts_path_unique").on(e.path)]);var f=vr("agent_runs",{id:$e("id").primaryKey().defaultRandom(),userId:$e("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),orgId:$e("org_id").references(()=>u.id,{onDelete:"set null"}),projectId:$e("project_id").references(()=>s.id,{onDelete:"set null"}),projectPath:se("project_path"),gitRemote:se("git_remote"),baseBranch:se("base_branch"),title:se("title"),prompt:se("prompt"),toolSpec:bo("tool_spec").notNull().default([]),autoWorktree:yr("auto_worktree").notNull().default(!0),status:se("status").notNull().default("pending"),sessionCount:hr("session_count").notNull().default(0),metadata:bo("metadata").notNull().default({}),createdAt:St("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:St("updated_at",{withTimezone:!0}).notNull().defaultNow(),completedAt:St("completed_at",{withTimezone:!0})},e=>[Kt("idx_agent_runs_user").on(e.userId),Kt("idx_agent_runs_org_created").on(e.orgId,e.createdAt),Kt("idx_agent_runs_project").on(e.projectId)]);import{pgTable as Pt,text as v,timestamp as De,jsonb as Y,uuid as b,integer as Ze,uniqueIndex as jo,index as z}from"drizzle-orm/pg-core";var d=Pt("sessions",{id:b("id").primaryKey().defaultRandom(),userId:b("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),externalSessionId:v("external_session_id"),projectId:b("project_id").references(()=>s.id,{onDelete:"set null"}),orgId:b("org_id").references(()=>u.id,{onDelete:"set null"}),tool:v("tool").notNull(),projectPath:v("project_path"),gitBranch:v("git_branch"),startedAt:De("started_at",{withTimezone:!0}).notNull(),endedAt:De("ended_at",{withTimezone:!0}),eventCount:Ze("event_count").default(0),tokenUsage:Y("token_usage"),analysis:Y("analysis"),analyzedAt:De("analyzed_at",{withTimezone:!0}),analyzedEventCount:Ze("analyzed_event_count"),analyzedTurnCount:Ze("analyzed_turn_count"),metadata:Y("metadata").default({}),origin:v("origin").notNull().default("unknown"),runId:b("run_id").references(()=>f.id,{onDelete:"set null"}),model:v("model"),harnessVersion:v("harness_version"),createdAt:De("created_at",{withTimezone:!0}).defaultNow()},e=>[z("idx_sessions_user").on(e.userId),z("idx_sessions_tool").on(e.tool),z("idx_sessions_started_at").on(e.startedAt),z("idx_sessions_project").on(e.projectId),z("idx_sessions_org_started_at").on(e.orgId,e.startedAt),z("idx_sessions_run").on(e.runId),jo("idx_sessions_user_external").on(e.userId,e.externalSessionId)]),ie=Pt("session_events",{id:b("id").primaryKey().defaultRandom(),sessionId:b("session_id").notNull().references(()=>d.id,{onDelete:"cascade"}),sequence:Ze("sequence").notNull(),eventType:v("event_type").notNull(),content:v("content"),toolName:v("tool_name"),toolInput:Y("tool_input"),toolOutput:Y("tool_output"),tokenUsage:Y("token_usage"),model:v("model"),timestamp:De("timestamp",{withTimezone:!0}).notNull(),metadata:Y("metadata").default({})},e=>[jo("session_events_session_sequence_idx").on(e.sessionId,e.sequence),z("idx_session_events_session_id").on(e.sessionId),z("idx_session_events_event_type").on(e.eventType),z("idx_session_events_model").on(e.model)]),C=Pt("session_instructions",{sessionId:b("session_id").notNull().references(()=>d.id,{onDelete:"cascade"}),instructionId:b("instruction_id").notNull().references(()=>r.id,{onDelete:"cascade"}),linkMethod:v("link_method").notNull()},e=>[z("idx_session_instructions_instruction_id").on(e.instructionId)]);import{pgTable as Ir,text as ae,timestamp as Ot,uuid as be,integer as Ro,index as et}from"drizzle-orm/pg-core";var h=Ir("memories",{id:be("id").primaryKey().defaultRandom(),userId:be("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),orgId:be("org_id"),projectId:be("project_id").references(()=>s.id,{onDelete:"set null"}),version:Ro("version").notNull().default(1),parentId:be("parent_id").references(()=>h.id,{onDelete:"set null"}),kind:ae("kind").notNull(),title:ae("title").notNull(),body:ae("body").notNull(),source:ae("source").notNull(),status:ae("status").notNull().default("active"),trustClass:ae("trust_class"),trustVersion:Ro("trust_version"),trustComputedAt:Ot("trust_computed_at",{withTimezone:!0}),createdAt:Ot("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:Ot("updated_at",{withTimezone:!0}).notNull().defaultNow()},e=>[et("idx_memories_user").on(e.userId),et("idx_memories_project").on(e.projectId),et("idx_memories_parent").on(e.parentId),et("idx_memories_user_status").on(e.userId,e.status)]);import{pgTable as Tr,text as je,timestamp as Ct,uuid as qt,integer as ko,jsonb as wr,index as Eo}from"drizzle-orm/pg-core";var So=Tr("memory_experiments",{id:qt("id").primaryKey().defaultRandom(),memoryId:qt("memory_id").notNull().references(()=>h.id,{onDelete:"cascade"}),userId:qt("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),memoryVersion:ko("memory_version").notNull().default(1),taskPrompt:je("task_prompt").notNull(),expectations:je("expectations").array().notNull().default([]),trials:ko("trials").notNull().default(10),model:je("model"),status:je("status").notNull().default("pending"),result:wr("result").$type(),error:je("error"),createdAt:Ct("created_at",{withTimezone:!0}).notNull().defaultNow(),startedAt:Ct("started_at",{withTimezone:!0}),completedAt:Ct("completed_at",{withTimezone:!0})},e=>[Eo("idx_memory_experiments_memory").on(e.memoryId),Eo("idx_memory_experiments_user").on(e.userId)]);import{boolean as Ar,date as zr,index as Mt,integer as Dr,jsonb as br,pgTable as Bt,text as w,timestamp as q,uniqueIndex as jr,uuid as de}from"drizzle-orm/pg-core";var Ko=Bt("announcements",{id:de("id").primaryKey().defaultRandom(),version:w("version").notNull().unique(),releaseDate:zr("release_date").notNull(),subject:w("subject").notNull(),htmlBody:w("html_body").notNull(),textBody:w("text_body").notNull(),sections:br("sections").notNull().default({}),status:w("status").notNull().default("draft"),recipientCount:Dr("recipient_count"),sentAt:q("sent_at",{withTimezone:!0}),sentBy:de("sent_by"),error:w("error"),createdAt:q("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:q("updated_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Mt("idx_announcements_status").on(e.status),Mt("idx_announcements_created").on(e.createdAt)]),Po=Bt("announcement_deliveries",{id:de("id").primaryKey().defaultRandom(),announcementId:de("announcement_id").notNull(),userId:de("user_id").notNull(),email:w("email").notNull(),status:w("status").notNull().default("pending"),providerId:w("provider_id"),error:w("error"),sentAt:q("sent_at",{withTimezone:!0}),createdAt:q("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[jr("uniq_announcement_deliveries_announcement_user").on(e.announcementId,e.userId),Mt("idx_announcement_deliveries_user").on(e.userId,e.createdAt)]),Oo=Bt("notification_preferences",{userId:de("user_id").primaryKey(),productAnnouncements:Ar("product_announcements").notNull().default(!0),unsubscribeToken:w("unsubscribe_token").notNull().unique(),unsubscribedAt:q("unsubscribed_at",{withTimezone:!0}),createdAt:q("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:q("updated_at",{withTimezone:!0}).notNull().defaultNow()});import{pgTable as Rr,text as Lt,timestamp as tt,uuid as ot,index as Co}from"drizzle-orm/pg-core";var j=Rr("org_invitations",{id:ot("id").primaryKey().defaultRandom(),orgId:ot("org_id").notNull().references(()=>u.id,{onDelete:"cascade"}),email:Lt("email").notNull(),role:Lt("role").notNull().default("member"),teamId:ot("team_id").references(()=>N.id,{onDelete:"set null"}),invitedBy:ot("invited_by").notNull().references(()=>o.id),token:Lt("token").notNull().unique(),expiresAt:tt("expires_at",{withTimezone:!0}).notNull(),acceptedAt:tt("accepted_at",{withTimezone:!0}),revokedAt:tt("revoked_at",{withTimezone:!0}),createdAt:tt("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Co("idx_org_invitations_token").on(e.token),Co("idx_org_invitations_org").on(e.orgId)]);import{pgTable as kr,text as Er,timestamp as Sr,jsonb as Kr,uuid as Ut,index as qo}from"drizzle-orm/pg-core";var ue=kr("instruction_events",{id:Ut("id").primaryKey().defaultRandom(),instructionId:Ut("instruction_id").notNull().references(()=>r.id,{onDelete:"cascade"}),eventType:Er("event_type").notNull(),actorId:Ut("actor_id").notNull(),metadata:Kr("metadata"),createdAt:Sr("created_at",{withTimezone:!0}).defaultNow()},e=>[qo("idx_instruction_events_instruction").on(e.instructionId),qo("idx_instruction_events_type").on(e.eventType)]);import{pgTable as Mo,text as nt,timestamp as Bo,uuid as D,integer as Lo,index as le,unique as Pr}from"drizzle-orm/pg-core";var R=Mo("treatment_assignments",{id:D("id").primaryKey().defaultRandom(),userId:D("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),treatmentType:nt("treatment_type").notNull(),treatmentId:D("treatment_id").notNull(),treatmentVersion:Lo("treatment_version").notNull().default(1),projectId:D("project_id").references(()=>s.id,{onDelete:"set null"}),assignedBy:D("assigned_by").references(()=>o.id,{onDelete:"set null"}),method:nt("method").notNull(),assignedAt:Bo("assigned_at",{withTimezone:!0}).notNull().defaultNow()},e=>[le("idx_treatment_assignments_user").on(e.userId),le("idx_treatment_assignments_treatment").on(e.treatmentType,e.treatmentId),le("idx_treatment_assignments_project").on(e.projectId)]),k=Mo("treatment_exposures",{id:D("id").primaryKey().defaultRandom(),sessionId:D("session_id").notNull().references(()=>d.id,{onDelete:"cascade"}),userId:D("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),treatmentType:nt("treatment_type").notNull(),treatmentId:D("treatment_id").notNull(),treatmentVersion:Lo("treatment_version").notNull().default(1),assignmentId:D("assignment_id").references(()=>R.id,{onDelete:"set null"}),method:nt("method").notNull(),exposedAt:Bo("exposed_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Pr("treatment_exposures_unique").on(e.sessionId,e.treatmentType,e.treatmentId,e.treatmentVersion),le("idx_treatment_exposures_treatment").on(e.treatmentType,e.treatmentId),le("idx_treatment_exposures_user").on(e.userId),le("idx_treatment_exposures_session").on(e.sessionId)]);import{pgTable as Or,text as Vt,timestamp as Cr,uuid as rt,integer as qr,index as Uo,uniqueIndex as Mr}from"drizzle-orm/pg-core";var Vo=Or("pending_treatment_exposures",{id:rt("id").primaryKey().defaultRandom(),userId:rt("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),externalSessionId:Vt("external_session_id").notNull(),treatmentType:Vt("treatment_type").notNull(),treatmentId:rt("treatment_id").notNull(),treatmentVersion:qr("treatment_version").notNull().default(1),method:Vt("method").notNull().default("injected"),projectId:rt("project_id").references(()=>s.id,{onDelete:"set null"}),createdAt:Cr("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Mr("pending_treatment_exposures_unique").on(e.externalSessionId,e.treatmentType,e.treatmentId,e.treatmentVersion),Uo("idx_pending_treatment_exposures_ext").on(e.externalSessionId),Uo("idx_pending_treatment_exposures_user").on(e.userId)]);import{pgTable as Br,text as ce,timestamp as Ht,uuid as Ft,jsonb as Lr,uniqueIndex as Ur,index as Ho}from"drizzle-orm/pg-core";var st=Br("session_terminal_targets",{id:Ft("id").primaryKey().defaultRandom(),userId:Ft("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),sessionId:Ft("session_id").references(()=>d.id,{onDelete:"set null"}),externalSessionId:ce("external_session_id"),kind:ce("kind").notNull(),target:ce("target").notNull(),status:ce("status").notNull().default("active"),attachCommand:ce("attach_command").notNull(),projectPath:ce("project_path"),metadata:Lr("metadata").notNull().default({}),lastSeenAt:Ht("last_seen_at",{withTimezone:!0}).defaultNow(),createdAt:Ht("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Ht("updated_at",{withTimezone:!0}).defaultNow()},e=>[Ur("idx_session_terminal_targets_user_target").on(e.userId,e.target),Ho("idx_session_terminal_targets_session").on(e.sessionId),Ho("idx_session_terminal_targets_user_status").on(e.userId,e.status)]);import{boolean as Vr,index as it,jsonb as Fo,pgTable as Hr,text as Q,timestamp as Re,uuid as at,integer as Fr}from"drizzle-orm/pg-core";var Go=Hr("session_send_jobs",{id:at("id").primaryKey().defaultRandom(),userId:at("user_id").notNull(),sessionId:at("session_id").notNull().references(()=>d.id,{onDelete:"cascade"}),terminalTargetId:at("terminal_target_id").references(()=>st.id,{onDelete:"set null"}),target:Q("target").notNull(),message:Q("message").notNull(),submit:Vr("submit").notNull().default(!0),delivery:Q("delivery").notNull().default("live"),status:Q("status").notNull().default("pending"),result:Fo("result"),error:Q("error"),attempts:Fr("attempts").notNull().default(0),taskKind:Q("task_kind"),payload:Fo("payload"),claimedBy:Q("claimed_by"),claimedAt:Re("claimed_at",{withTimezone:!0}),leaseExpiresAt:Re("lease_expires_at",{withTimezone:!0}),createdAt:Re("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Re("updated_at",{withTimezone:!0}).defaultNow(),completedAt:Re("completed_at",{withTimezone:!0})},e=>[it("idx_session_send_jobs_user").on(e.userId),it("idx_session_send_jobs_session").on(e.sessionId),it("idx_session_send_jobs_status").on(e.status),it("idx_session_send_jobs_pending").on(e.userId,e.status)]);import{pgTable as Yo,text as W,timestamp as dt,jsonb as Qo,uuid as M,integer as Gr,boolean as Jr,uniqueIndex as Yr,index as Jo,primaryKey as Qr}from"drizzle-orm/pg-core";var A=Yo("packs",{id:M("id").primaryKey().defaultRandom(),name:W("name").notNull(),description:W("description").notNull(),scope:W("scope").notNull(),scopeRef:M("scope_ref"),version:W("version").notNull().default("1.0.0"),tags:W("tags").array(),badge:W("badge"),metadata:Qo("metadata"),createdBy:M("created_by"),createdAt:dt("created_at",{withTimezone:!0}).defaultNow(),updatedAt:dt("updated_at",{withTimezone:!0}).defaultNow(),archived:Jr("archived").default(!1),archivedAt:dt("archived_at",{withTimezone:!0}),archivedBy:M("archived_by"),forkedFromId:M("forked_from_id").references(()=>A.id,{onDelete:"set null"}),upstreamVersion:W("upstream_version")},e=>[Yr("packs_name_scope_ref_idx").on(e.name,e.scope,e.scopeRef),Jo("idx_packs_scope").on(e.scope,e.scopeRef),Jo("idx_packs_created_by").on(e.createdBy)]),B=Yo("pack_instructions",{packId:M("pack_id").references(()=>A.id,{onDelete:"cascade"}).notNull(),instructionId:M("instruction_id").references(()=>r.id,{onDelete:"cascade"}).notNull(),position:Gr("position").notNull().default(0),slotOverrides:Qo("slot_overrides"),addedAt:dt("added_at",{withTimezone:!0}).defaultNow(),addedBy:M("added_by")},e=>[Qr({columns:[e.packId,e.instructionId]})]);import{pgTable as Wr,text as Gt,timestamp as Xr,jsonb as $r,uuid as Jt,index as me}from"drizzle-orm/pg-core";var pe=Wr("instruction_usage_events",{id:Jt("id").primaryKey().defaultRandom(),instructionId:Jt("instruction_id").references(()=>r.id,{onDelete:"set null"}),userId:Jt("user_id").notNull(),surface:Gt("surface").notNull(),action:Gt("action").notNull(),metadata:$r("metadata"),traceId:Gt("trace_id"),createdAt:Xr("created_at",{withTimezone:!0}).defaultNow()},e=>[me("idx_usage_events_instruction").on(e.instructionId),me("idx_usage_events_user").on(e.userId),me("idx_usage_events_surface").on(e.surface),me("idx_usage_events_action").on(e.action),me("idx_usage_events_created_at").on(e.createdAt),me("idx_usage_events_user_created").on(e.userId,e.createdAt)]);import{pgTable as Zr,text as ut,timestamp as Wo,jsonb as es,uuid as Xo,index as Yt}from"drizzle-orm/pg-core";var $o=Zr("worker_connections",{id:Xo("id").primaryKey().defaultRandom(),userId:Xo("user_id").notNull(),workerType:ut("worker_type").notNull().default("mcp"),clientName:ut("client_name").notNull(),clientVersion:ut("client_version"),workerVersion:ut("worker_version"),lastHeartbeat:Wo("last_heartbeat",{withTimezone:!0}).notNull().defaultNow(),connectedAt:Wo("connected_at",{withTimezone:!0}).notNull().defaultNow(),metadata:es("metadata")},e=>[Yt("idx_worker_connections_user").on(e.userId),Yt("idx_worker_connections_heartbeat").on(e.userId,e.lastHeartbeat),Yt("idx_worker_connections_type").on(e.userId,e.workerType)]);import{pgTable as ts,text as lt,timestamp as os,jsonb as ns,uuid as Zo,index as en}from"drizzle-orm/pg-core";var tn=ts("cli_setup_events",{id:Zo("id").primaryKey().defaultRandom(),userId:Zo("user_id").notNull(),deviceId:lt("device_id").notNull(),event:lt("event").notNull(),cliVersion:lt("cli_version"),os:lt("os"),props:ns("props").notNull().default({}),createdAt:os("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[en("idx_cli_setup_events_user").on(e.userId,e.createdAt),en("idx_cli_setup_events_device").on(e.deviceId,e.createdAt)]);import{pgTable as rs,text as X,integer as ss,boolean as is,timestamp as as,jsonb as ds,uuid as us,index as on}from"drizzle-orm/pg-core";var nn=rs("cli_error_events",{id:us("id").primaryKey().defaultRandom(),deviceId:X("device_id"),event:X("event").notNull(),command:X("command"),statusCode:ss("status_code"),message:X("message"),cliVersion:X("cli_version"),os:X("os"),nodeVersion:X("node_version"),proxied:is("proxied"),props:ds("props").notNull().default({}),createdAt:as("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[on("idx_cli_error_events_created").on(e.createdAt),on("idx_cli_error_events_device").on(e.deviceId,e.createdAt)]);import{pgTable as ke,text as y,timestamp as Z,jsonb as I,uuid as _,integer as $,boolean as ls,index as T}from"drizzle-orm/pg-core";var n=ke("eval_targets",{id:_("id").primaryKey().defaultRandom(),userId:_("user_id").notNull(),name:y("name").notNull(),type:y("type").notNull(),content:y("content").notNull(),description:y("description").notNull().default(""),metadata:I("metadata").notNull().default({}),version:$("version").notNull().default(1),parentId:_("parent_id").references(()=>n.id,{onDelete:"set null"}),createdAt:Z("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Z("updated_at",{withTimezone:!0}).defaultNow()},e=>[T("eval_targets_name_user_idx").on(e.name,e.userId),T("idx_eval_targets_user").on(e.userId),T("idx_eval_targets_type").on(e.type),T("idx_eval_targets_parent").on(e.parentId)]),E=ke("evals",{id:_("id").primaryKey().defaultRandom(),evalTargetId:_("eval_target_id").notNull().references(()=>n.id,{onDelete:"cascade"}),name:y("name").notNull(),prompt:y("prompt").notNull(),expectedOutput:y("expected_output").notNull().default(""),files:I("files").notNull().default([]),expectations:I("expectations").notNull().default([]),createdAt:Z("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Z("updated_at",{withTimezone:!0}).defaultNow()},e=>[T("idx_evals_target").on(e.evalTargetId)]),L=ke("eval_runs",{id:_("id").primaryKey().defaultRandom(),jobId:_("job_id"),evalId:_("eval_id").notNull().references(()=>E.id,{onDelete:"cascade"}),evalTargetId:_("eval_target_id").notNull().references(()=>n.id,{onDelete:"cascade"}),evalTargetVersion:$("eval_target_version").notNull(),configuration:y("configuration").notNull(),runNumber:$("run_number").notNull().default(1),iteration:$("iteration").notNull().default(1),status:y("status").notNull().default("completed"),outputs:I("outputs").notNull().default({}),timing:I("timing").notNull().default({}),grading:I("grading").notNull().default({}),comparison:I("comparison"),createdAt:Z("created_at",{withTimezone:!0}).defaultNow()},e=>[T("idx_eval_runs_eval").on(e.evalId),T("idx_eval_runs_target").on(e.evalTargetId),T("idx_eval_runs_iteration").on(e.evalTargetId,e.iteration)]),rn=ke("eval_comparisons",{id:_("id").primaryKey().defaultRandom(),userId:_("user_id").notNull(),targetAId:_("target_a_id").notNull().references(()=>n.id,{onDelete:"cascade"}),targetBId:_("target_b_id").notNull().references(()=>n.id,{onDelete:"cascade"}),targetAVersion:$("target_a_version").notNull(),targetBVersion:$("target_b_version").notNull(),isSwapped:ls("is_swapped").notNull().default(!1),winnerTargetId:_("winner_target_id").references(()=>n.id,{onDelete:"set null"}),perEval:I("per_eval").notNull().default([]),overall:I("overall").notNull().default({}),rawOutput:y("raw_output"),model:y("model"),status:y("status").notNull().default("completed"),createdAt:Z("created_at",{withTimezone:!0}).defaultNow()},e=>[T("idx_eval_comparisons_target_a").on(e.targetAId),T("idx_eval_comparisons_target_b").on(e.targetBId),T("idx_eval_comparisons_user").on(e.userId)]),_e=ke("benchmarks",{id:_("id").primaryKey().defaultRandom(),evalTargetId:_("eval_target_id").notNull().references(()=>n.id,{onDelete:"cascade"}),iteration:$("iteration").notNull().default(1),runSummary:I("run_summary").notNull().default({}),notes:I("notes").notNull().default([]),feedback:I("feedback"),createdAt:Z("created_at",{withTimezone:!0}).defaultNow()},e=>[T("idx_benchmarks_target").on(e.evalTargetId)]);import{pgTable as an,text as Qt,timestamp as Wt,jsonb as dn,uuid as fe,integer as Ee,index as ct,real as sn}from"drizzle-orm/pg-core";var xe=an("trigger_evals",{id:fe("id").primaryKey().defaultRandom(),evalTargetId:fe("eval_target_id").notNull().references(()=>n.id,{onDelete:"cascade"}),userId:fe("user_id").notNull(),queries:dn("queries").notNull().default([]),status:Qt("status").notNull().default("pending_review"),trainIndices:Ee("train_indices").array().default([]),testIndices:Ee("test_indices").array().default([]),createdAt:Wt("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Wt("updated_at",{withTimezone:!0}).defaultNow()},e=>[ct("idx_trigger_evals_target").on(e.evalTargetId),ct("idx_trigger_evals_user").on(e.userId)]),Ne=an("optimization_runs",{id:fe("id").primaryKey().defaultRandom(),evalTargetId:fe("eval_target_id").notNull().references(()=>n.id,{onDelete:"cascade"}),userId:fe("user_id").notNull(),type:Qt("type").notNull(),iteration:Ee("iteration").notNull(),inputVersion:Ee("input_version").notNull(),outputVersion:Ee("output_version"),trainScore:sn("train_score"),testScore:sn("test_score"),analysis:dn("analysis").notNull().default({}),status:Qt("status").notNull().default("running"),createdAt:Wt("created_at",{withTimezone:!0}).defaultNow()},e=>[ct("idx_optimization_runs_target").on(e.evalTargetId),ct("idx_optimization_runs_user").on(e.userId)]);import{pgTable as cs,text as U,timestamp as ms,jsonb as Se,uuid as Xt,integer as $t,real as ps,index as Ke,uniqueIndex as un}from"drizzle-orm/pg-core";var V=cs("context_snapshots",{id:Xt("id").primaryKey().defaultRandom(),sessionId:Xt("session_id").references(()=>d.id,{onDelete:"cascade"}),userId:Xt("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),sequence:$t("sequence").notNull().default(0),provider:U("provider").notNull(),model:U("model").notNull(),systemPrompt:U("system_prompt").notNull(),injectedInstructions:Se("injected_instructions").notNull().default([]),messagesSummary:Se("messages_summary").notNull(),tools:Se("tools").notNull().default([]),systemHash:U("system_hash").notNull(),requestHash:U("request_hash").notNull().default(""),toolsHash:U("tools_hash"),injectedHash:U("injected_hash"),messagesDelta:Se("messages_delta").default([]),messagesDeltaRef:U("messages_delta_ref"),maxTokens:$t("max_tokens"),temperature:ps("temperature"),estimatedTokens:$t("estimated_tokens"),capturedAt:ms("captured_at",{withTimezone:!0}).notNull().defaultNow(),metadata:Se("metadata").default({})},e=>[Ke("idx_context_snapshots_session").on(e.sessionId),Ke("idx_context_snapshots_user").on(e.userId),Ke("idx_context_snapshots_hash").on(e.systemHash),Ke("idx_context_snapshots_request_hash").on(e.requestHash),un("idx_snapshots_session_request").on(e.sessionId,e.requestHash),un("idx_snapshots_session_sequence").on(e.sessionId,e.sequence),Ke("idx_context_snapshots_user_session_captured").on(e.userId,e.sessionId,e.capturedAt.desc())]);import{pgTable as _s,text as ln,timestamp as fs,jsonb as xs,integer as Ns,index as gs}from"drizzle-orm/pg-core";var cn=_s("content_blobs",{hash:ln("hash").primaryKey(),contentType:ln("content_type").notNull(),content:xs("content").notNull(),sizeBytes:Ns("size_bytes").notNull().default(0),createdAt:fs("created_at",{withTimezone:!0}).defaultNow()},e=>[gs("idx_content_blobs_type").on(e.contentType)]);import{pgTable as vs,text as mt,timestamp as Pe,jsonb as pt,uuid as Zt,index as _t,integer as hs}from"drizzle-orm/pg-core";var ge=vs("eval_jobs",{id:Zt("id").primaryKey().defaultRandom(),userId:Zt("user_id").notNull(),evalTargetId:Zt("eval_target_id").notNull().references(()=>n.id,{onDelete:"cascade"}),status:mt("status").notNull().default("pending"),config:pt("config").notNull().default({}),progress:pt("progress").notNull().default({}),result:pt("result"),error:mt("error"),attempts:hs("attempts").notNull().default(0),taskKind:mt("task_kind"),payload:pt("payload"),claimedBy:mt("claimed_by"),claimedAt:Pe("claimed_at",{withTimezone:!0}),leaseExpiresAt:Pe("lease_expires_at",{withTimezone:!0}),createdAt:Pe("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Pe("updated_at",{withTimezone:!0}).defaultNow(),completedAt:Pe("completed_at",{withTimezone:!0})},e=>[_t("idx_eval_jobs_user").on(e.userId),_t("idx_eval_jobs_target").on(e.evalTargetId),_t("idx_eval_jobs_status").on(e.status),_t("idx_eval_jobs_pending").on(e.userId,e.status)]);import{pgTable as ys,text as Oe,timestamp as Ce,jsonb as mn,uuid as pn,integer as Is,index as _n}from"drizzle-orm/pg-core";var fn=ys("agent_jobs",{id:pn("id").primaryKey().defaultRandom(),userId:pn("user_id").notNull(),taskKind:Oe("task_kind").notNull(),status:Oe("status").notNull().default("pending"),payload:mn("payload").notNull(),dedupeKey:Oe("dedupe_key"),result:mn("result"),error:Oe("error"),attempts:Is("attempts").notNull().default(0),claimedBy:Oe("claimed_by"),claimedAt:Ce("claimed_at",{withTimezone:!0}),leaseExpiresAt:Ce("lease_expires_at",{withTimezone:!0}),createdAt:Ce("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:Ce("updated_at",{withTimezone:!0}).notNull().defaultNow(),completedAt:Ce("completed_at",{withTimezone:!0})},e=>[_n("idx_agent_jobs_claim").on(e.userId,e.status,e.taskKind,e.createdAt),_n("idx_agent_jobs_dedupe").on(e.userId,e.taskKind,e.dedupeKey)]);import{pgTable as Ts,text as qe,timestamp as Me,jsonb as ft,uuid as eo,index as xt,integer as ws}from"drizzle-orm/pg-core";var xn=Ts("insights_jobs",{id:eo("id").primaryKey().defaultRandom(),userId:eo("user_id").notNull(),status:qe("status").notNull().default("pending"),projectPath:qe("project_path"),projectId:eo("project_id").references(()=>s.id,{onDelete:"set null"}),config:ft("config").notNull().default({}),progress:ft("progress").notNull().default({}),result:ft("result"),error:qe("error"),attempts:ws("attempts").notNull().default(0),taskKind:qe("task_kind"),payload:ft("payload"),claimedBy:qe("claimed_by"),claimedAt:Me("claimed_at",{withTimezone:!0}),leaseExpiresAt:Me("lease_expires_at",{withTimezone:!0}),createdAt:Me("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Me("updated_at",{withTimezone:!0}).defaultNow(),completedAt:Me("completed_at",{withTimezone:!0})},e=>[xt("idx_insights_jobs_user").on(e.userId),xt("idx_insights_jobs_status").on(e.status),xt("idx_insights_jobs_pending").on(e.userId,e.status),xt("idx_insights_jobs_project").on(e.projectId)]);import{pgTable as As,text as to,timestamp as Nt,uuid as Nn,index as zs,uniqueIndex as Ds}from"drizzle-orm/pg-core";var ve=As("api_keys",{id:Nn("id").primaryKey().defaultRandom(),userId:Nn("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),name:to("name").notNull(),keyHash:to("key_hash").notNull(),keyPrefix:to("key_prefix").notNull(),lastUsedAt:Nt("last_used_at",{withTimezone:!0}),expiresAt:Nt("expires_at",{withTimezone:!0}),revokedAt:Nt("revoked_at",{withTimezone:!0}),createdAt:Nt("created_at",{withTimezone:!0}).defaultNow()},e=>[zs("idx_api_keys_user").on(e.userId),Ds("idx_api_keys_hash").on(e.keyHash)]);import{pgTable as bs,text as oo,timestamp as gn,uuid as js,index as Rs}from"drizzle-orm/pg-core";var vn=bs("extension_auth_codes",{code:oo("code").primaryKey(),userId:js("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),editor:oo("editor"),email:oo("email"),expiresAt:gn("expires_at",{withTimezone:!0}).notNull(),createdAt:gn("created_at",{withTimezone:!0}).defaultNow()},e=>[Rs("idx_ext_auth_codes_expiry").on(e.expiresAt)]);import{pgTable as ks,text as Es,timestamp as hn,jsonb as Ss,uuid as no,index as yn}from"drizzle-orm/pg-core";var he=ks("eval_conversations",{id:no("id").primaryKey().defaultRandom(),evalTargetId:no("eval_target_id").notNull().references(()=>n.id,{onDelete:"cascade"}),userId:no("user_id").notNull(),messages:Ss("messages").notNull().default([]),status:Es("status").notNull().default("active"),createdAt:hn("created_at",{withTimezone:!0}).defaultNow(),updatedAt:hn("updated_at",{withTimezone:!0}).defaultNow()},e=>[yn("idx_eval_conversations_target").on(e.evalTargetId),yn("idx_eval_conversations_user").on(e.userId)]);import{pgTable as Ks,text as S,timestamp as In,jsonb as Ps,uuid as ro}from"drizzle-orm/pg-core";var Tn=Ks("skill_submissions",{id:ro("id").primaryKey().defaultRandom(),skillId:S("skill_id").notNull(),name:S("name").notNull(),description:S("description").notNull(),category:S("category").notNull(),tools:S("tools").array().notNull(),tags:S("tags").array().default([]),content:S("content").notNull(),status:S("status").notNull().default("pending"),submittedBy:ro("submitted_by").notNull(),reviewedBy:ro("reviewed_by"),reviewNote:S("review_note"),metadata:Ps("metadata"),createdAt:In("created_at",{withTimezone:!0}).defaultNow(),updatedAt:In("updated_at",{withTimezone:!0}).defaultNow()});import{pgTable as Os,text as Be,timestamp as wn,jsonb as Cs,uuid as qs,uniqueIndex as Ms,index as An}from"drizzle-orm/pg-core";var zn=Os("harness_releases",{id:qs("id").primaryKey().defaultRandom(),harness:Be("harness").notNull(),version:Be("version").notNull(),publishedAt:wn("published_at",{withTimezone:!0}).notNull(),title:Be("title"),body:Be("body"),categories:Cs("categories").default({}),url:Be("url"),createdAt:wn("created_at",{withTimezone:!0}).defaultNow()},e=>[Ms("idx_harness_releases_unique").on(e.harness,e.version),An("idx_harness_releases_harness").on(e.harness),An("idx_harness_releases_published").on(e.publishedAt)]);import{pgTable as Bs,text as ye,timestamp as Dn,jsonb as Ls,uuid as bn,index as jn,uniqueIndex as Us}from"drizzle-orm/pg-core";var so=Bs("notifications",{id:bn("id").primaryKey().defaultRandom(),userId:bn("user_id").notNull(),type:ye("type").notNull(),title:ye("title").notNull(),body:ye("body"),url:ye("url"),sourceTable:ye("source_table"),sourceId:ye("source_id"),metadata:Ls("metadata").notNull().default({}),readAt:Dn("read_at",{withTimezone:!0}),createdAt:Dn("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[jn("idx_notifications_user_created").on(e.userId,e.createdAt),jn("idx_notifications_user_unread").on(e.userId),Us("idx_notifications_source_dedup").on(e.userId,e.sourceTable,e.sourceId)]);import{pgTable as Vs,text as Le,timestamp as Ue,jsonb as io,uuid as ao,index as gt,integer as Hs}from"drizzle-orm/pg-core";var Ie=Vs("launch_jobs",{id:ao("id").primaryKey().defaultRandom(),userId:ao("user_id").notNull(),tool:Le("tool").notNull(),status:Le("status").notNull().default("pending"),config:io("config").notNull().default({}),result:io("result"),error:Le("error"),attempts:Hs("attempts").notNull().default(0),taskKind:Le("task_kind"),payload:io("payload"),claimedBy:Le("claimed_by"),claimedAt:Ue("claimed_at",{withTimezone:!0}),leaseExpiresAt:Ue("lease_expires_at",{withTimezone:!0}),createdAt:Ue("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Ue("updated_at",{withTimezone:!0}).defaultNow(),completedAt:Ue("completed_at",{withTimezone:!0}),runId:ao("run_id").references(()=>f.id,{onDelete:"set null"})},e=>[gt("idx_launch_jobs_user").on(e.userId),gt("idx_launch_jobs_status").on(e.status),gt("idx_launch_jobs_pending").on(e.userId,e.status),gt("idx_launch_jobs_run").on(e.runId)]);import{pgTable as Rn,uuid as K,text as Ve,real as Fs,timestamp as vt,boolean as Gs,uniqueIndex as Js,index as He}from"drizzle-orm/pg-core";var uo=Rn("instruction_suggestions",{id:K("id").primaryKey().defaultRandom(),userId:K("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),instructionId:K("instruction_id").notNull().references(()=>r.id,{onDelete:"cascade"}),projectPath:Ve("project_path").notNull(),projectId:K("project_id").references(()=>s.id,{onDelete:"set null"}),score:Fs("score").notNull(),reason:Ve("reason").notNull(),generatedAt:vt("generated_at",{withTimezone:!0}).notNull().defaultNow(),isStale:Gs("is_stale").notNull().default(!1),dismissedAt:vt("dismissed_at",{withTimezone:!0}),acceptedAt:vt("accepted_at",{withTimezone:!0}),promotedToInstructionId:K("promoted_to_instruction_id").references(()=>r.id,{onDelete:"set null"})},e=>[Js("idx_instruction_suggestions_user_project_instruction").on(e.userId,e.projectPath,e.instructionId),He("idx_instruction_suggestions_user_project").on(e.userId,e.projectPath),He("idx_instruction_suggestions_user_proj_id").on(e.userId,e.projectId),He("idx_instruction_suggestions_generated_at").on(e.generatedAt)]),kn=Rn("instruction_suggestion_events",{id:K("id").primaryKey().defaultRandom(),suggestionId:K("suggestion_id").notNull().references(()=>uo.id,{onDelete:"cascade"}),userId:K("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),eventType:Ve("event_type").notNull(),tool:Ve("tool"),sessionId:K("session_id"),projectPath:Ve("project_path").notNull(),createdAt:vt("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[He("idx_instruction_suggestion_events_suggestion_id").on(e.suggestionId),He("idx_instruction_suggestion_events_user_id").on(e.userId)]);import{pgTable as Ys,text as lo,integer as Qs,numeric as Fe,timestamp as co,index as Ws,primaryKey as Xs}from"drizzle-orm/pg-core";var En=Ys("model_pricing",{provider:lo("provider").notNull(),modelId:lo("model_id").notNull(),inputPerM:Fe("input_per_m").notNull(),outputPerM:Fe("output_per_m").notNull(),cacheReadPerM:Fe("cache_read_per_m").notNull(),cacheWrite5mPerM:Fe("cache_write_5m_per_m").notNull(),cacheWrite1hPerM:Fe("cache_write_1h_per_m").notNull(),contextWindow:Qs("context_window"),effectiveFrom:co("effective_from",{withTimezone:!0}).notNull(),effectiveUntil:co("effective_until",{withTimezone:!0}),source:lo("source").notNull(),verifiedAt:co("verified_at",{withTimezone:!0})},e=>[Xs({columns:[e.provider,e.modelId,e.effectiveFrom]}),Ws("idx_model_pricing_active").on(e.provider,e.modelId,e.effectiveFrom.desc())]);import{pgTable as $s,text as ee,numeric as Sn,timestamp as Kn,uuid as Pn,jsonb as Zs,index as On}from"drizzle-orm/pg-core";var Cn=$s("limit_observations",{id:Pn("id").primaryKey().defaultRandom(),observedAt:Kn("observed_at",{withTimezone:!0}).notNull().defaultNow(),provider:ee("provider").notNull(),plan:ee("plan").notNull(),limitType:ee("limit_type").notNull(),value:Sn("value").notNull(),unit:ee("unit").notNull(),comparator:ee("comparator").notNull().default("="),resetsAt:Kn("resets_at",{withTimezone:!0}),sourceType:ee("source_type").notNull(),sourceUrl:ee("source_url"),sourceEvidence:Zs("source_evidence"),confidence:Sn("confidence").notNull(),userId:Pn("user_id")},e=>[On("idx_limit_obs_lookup").on(e.provider,e.plan,e.limitType,e.observedAt.desc()),On("idx_limit_obs_user").on(e.userId,e.observedAt.desc())]);import{pgTable as ei,text as ht,timestamp as ti,uuid as oi,jsonb as ni,boolean as ri,uniqueIndex as si}from"drizzle-orm/pg-core";var qn=ei("provider_docs_snapshots",{id:oi("id").primaryKey().defaultRandom(),fetchedAt:ti("fetched_at",{withTimezone:!0}).notNull().defaultNow(),provider:ht("provider").notNull(),docUrl:ht("doc_url").notNull(),contentHash:ht("content_hash").notNull(),content:ht("content").notNull(),parseSuccess:ri("parse_success").notNull(),parseErrors:ni("parse_errors")},e=>[si("idx_docs_dedup").on(e.provider,e.docUrl,e.contentHash)]);import{pgTable as ii,text as yt,numeric as Mn,timestamp as Bn,uuid as ai,primaryKey as di,index as ui}from"drizzle-orm/pg-core";var Ln=ii("plan_limits_active",{provider:yt("provider").notNull(),plan:yt("plan").notNull(),limitType:yt("limit_type").notNull(),value:Mn("value").notNull(),unit:yt("unit").notNull(),effectiveFrom:Bn("effective_from",{withTimezone:!0}).notNull(),effectiveUntil:Bn("effective_until",{withTimezone:!0}),confidence:Mn("confidence").notNull(),sourceObservationIds:ai("source_observation_ids").array().notNull()},e=>[di({columns:[e.provider,e.plan,e.limitType,e.effectiveFrom]}),ui("idx_plan_limits_lookup").on(e.provider,e.plan,e.limitType,e.effectiveFrom.desc())]);import{pgTable as li,text as mo,timestamp as ci,uuid as Un,jsonb as mi,index as pi}from"drizzle-orm/pg-core";var Vn=li("alert_dispatches",{id:Un("id").primaryKey().defaultRandom(),userId:Un("user_id").notNull(),alertKey:mo("alert_key").notNull(),severity:mo("severity").notNull(),lastDispatchedAt:ci("last_dispatched_at",{withTimezone:!0}).notNull().defaultNow(),lastState:mi("last_state").notNull(),channel:mo("channel").notNull()},e=>[pi("idx_alert_user_key").on(e.userId,e.alertKey,e.lastDispatchedAt.desc())]);import{drizzle as Yn}from"drizzle-orm/postgres-js";import Qn from"postgres";var It={};pr(It,{agentJobs:()=>fn,agentRuns:()=>f,agentRunsRelations:()=>bi,alertDispatches:()=>Vn,announcementDeliveries:()=>Po,announcements:()=>Ko,apiKeys:()=>ve,apiKeysRelations:()=>fi,benchmarks:()=>_e,benchmarksRelations:()=>Bi,cliErrorEvents:()=>nn,cliSetupEvents:()=>tn,contentBlobs:()=>cn,contextSnapshots:()=>V,contextSnapshotsRelations:()=>Fi,evalComparisons:()=>rn,evalConversations:()=>he,evalConversationsRelations:()=>Hi,evalJobs:()=>ge,evalJobsRelations:()=>Vi,evalRuns:()=>L,evalRunsRelations:()=>Mi,evalTargets:()=>n,evalTargetsRelations:()=>Ci,evals:()=>E,evalsRelations:()=>qi,extensionAuthCodes:()=>vn,harnessReleases:()=>zn,insightsJobs:()=>xn,instructionEvents:()=>ue,instructionEventsRelations:()=>Ii,instructionSuggestionEvents:()=>kn,instructionSuggestions:()=>uo,instructionUsageEvents:()=>pe,instructionUsageEventsRelations:()=>Oi,instructionVersions:()=>re,instructionVersionsRelations:()=>wi,instructions:()=>r,instructionsRelations:()=>yi,launchJobs:()=>Ie,launchJobsRelations:()=>ji,limitObservations:()=>Cn,memories:()=>h,memoriesRelations:()=>Ti,memoryExperiments:()=>So,modelPricing:()=>En,notificationPreferences:()=>Oo,notifications:()=>so,optimizationRuns:()=>Ne,optimizationRunsRelations:()=>Ui,orgInvitations:()=>j,orgInvitationsRelations:()=>gi,organizations:()=>u,organizationsRelations:()=>xi,packInstructions:()=>B,packInstructionsRelations:()=>Pi,packs:()=>A,packsRelations:()=>Ki,pendingTreatmentExposures:()=>Vo,planLimitsActive:()=>Ln,profiles:()=>o,profilesRelations:()=>_i,projectCheckouts:()=>Do,projectInstructions:()=>O,projectInstructionsRelations:()=>zi,projects:()=>s,projectsRelations:()=>Ai,providerDocsSnapshots:()=>qn,sessionEvents:()=>ie,sessionEventsRelations:()=>Ri,sessionInstructions:()=>C,sessionInstructionsRelations:()=>ki,sessionSendJobs:()=>Go,sessionTerminalTargets:()=>st,sessions:()=>d,sessionsRelations:()=>Di,skillSubmissions:()=>Tn,teams:()=>N,teamsRelations:()=>Ni,treatmentAssignments:()=>R,treatmentAssignmentsRelations:()=>Ei,treatmentExposures:()=>k,treatmentExposuresRelations:()=>Si,triggerEvals:()=>xe,triggerEvalsRelations:()=>Li,userOrganizations:()=>oe,userOrganizationsRelations:()=>vi,userTeams:()=>ne,userTeamsRelations:()=>hi,workerConnections:()=>$o});import{relations as i}from"drizzle-orm";var _i=i(o,({many:e})=>({sessions:e(d),contextSnapshots:e(V),apiKeys:e(ve)})),fi=i(ve,({one:e})=>({profile:e(o,{fields:[ve.userId],references:[o.id]})})),xi=i(u,({many:e})=>({teams:e(N),userOrganizations:e(oe),projects:e(s),invitations:e(j)})),Ni=i(N,({one:e,many:t})=>({organization:e(u,{fields:[N.orgId],references:[u.id]}),userTeams:t(ne),invitations:t(j)})),gi=i(j,({one:e})=>({organization:e(u,{fields:[j.orgId],references:[u.id]}),team:e(N,{fields:[j.teamId],references:[N.id]}),inviter:e(o,{fields:[j.invitedBy],references:[o.id]})})),vi=i(oe,({one:e})=>({organization:e(u,{fields:[oe.orgId],references:[u.id]})})),hi=i(ne,({one:e})=>({team:e(N,{fields:[ne.teamId],references:[N.id]})})),yi=i(r,({one:e,many:t})=>({versions:t(re),projectInstructions:t(O),events:t(ue),usageEvents:t(pe),sessionInstructions:t(C),packInstructions:t(B),forkedFrom:e(r,{fields:[r.forkedFromId],references:[r.id]})})),Ii=i(ue,({one:e})=>({instruction:e(r,{fields:[ue.instructionId],references:[r.id]})})),Ti=i(h,({one:e,many:t})=>({project:e(s,{fields:[h.projectId],references:[s.id]}),parent:e(h,{fields:[h.parentId],references:[h.id]}),versions:t(h)})),wi=i(re,({one:e})=>({instruction:e(r,{fields:[re.instructionId],references:[r.id]})})),Ai=i(s,({one:e,many:t})=>({organization:e(u,{fields:[s.orgId],references:[u.id]}),projectInstructions:t(O),sessions:t(d)})),zi=i(O,({one:e})=>({project:e(s,{fields:[O.projectId],references:[s.id]}),instruction:e(r,{fields:[O.instructionId],references:[r.id]})})),Di=i(d,({one:e,many:t})=>({profile:e(o,{fields:[d.userId],references:[o.id]}),project:e(s,{fields:[d.projectId],references:[s.id]}),run:e(f,{fields:[d.runId],references:[f.id]}),events:t(ie),sessionInstructions:t(C),treatmentExposures:t(k),contextSnapshots:t(V)})),bi=i(f,({one:e,many:t})=>({profile:e(o,{fields:[f.userId],references:[o.id]}),organization:e(u,{fields:[f.orgId],references:[u.id]}),project:e(s,{fields:[f.projectId],references:[s.id]}),sessions:t(d),launchJobs:t(Ie)})),ji=i(Ie,({one:e})=>({run:e(f,{fields:[Ie.runId],references:[f.id]})})),Ri=i(ie,({one:e})=>({session:e(d,{fields:[ie.sessionId],references:[d.id]})})),ki=i(C,({one:e})=>({session:e(d,{fields:[C.sessionId],references:[d.id]}),instruction:e(r,{fields:[C.instructionId],references:[r.id]})})),Ei=i(R,({one:e,many:t})=>({owner:e(o,{fields:[R.userId],references:[o.id]}),project:e(s,{fields:[R.projectId],references:[s.id]}),exposures:t(k)})),Si=i(k,({one:e})=>({session:e(d,{fields:[k.sessionId],references:[d.id]}),owner:e(o,{fields:[k.userId],references:[o.id]}),assignment:e(R,{fields:[k.assignmentId],references:[R.id]})})),Ki=i(A,({one:e,many:t})=>({packInstructions:t(B),forkedFrom:e(A,{fields:[A.forkedFromId],references:[A.id]})})),Pi=i(B,({one:e})=>({pack:e(A,{fields:[B.packId],references:[A.id]}),instruction:e(r,{fields:[B.instructionId],references:[r.id]})})),Oi=i(pe,({one:e})=>({instruction:e(r,{fields:[pe.instructionId],references:[r.id]})})),Ci=i(n,({one:e,many:t})=>({parent:e(n,{fields:[n.parentId],references:[n.id]}),evals:t(E),evalRuns:t(L),benchmarks:t(_e),triggerEvals:t(xe),optimizationRuns:t(Ne),evalJobs:t(ge),evalConversations:t(he)})),qi=i(E,({one:e,many:t})=>({evalTarget:e(n,{fields:[E.evalTargetId],references:[n.id]}),runs:t(L)})),Mi=i(L,({one:e})=>({eval:e(E,{fields:[L.evalId],references:[E.id]}),evalTarget:e(n,{fields:[L.evalTargetId],references:[n.id]})})),Bi=i(_e,({one:e})=>({evalTarget:e(n,{fields:[_e.evalTargetId],references:[n.id]})})),Li=i(xe,({one:e})=>({evalTarget:e(n,{fields:[xe.evalTargetId],references:[n.id]})})),Ui=i(Ne,({one:e})=>({evalTarget:e(n,{fields:[Ne.evalTargetId],references:[n.id]})})),Vi=i(ge,({one:e})=>({evalTarget:e(n,{fields:[ge.evalTargetId],references:[n.id]})})),Hi=i(he,({one:e})=>({evalTarget:e(n,{fields:[he.evalTargetId],references:[n.id]})})),Fi=i(V,({one:e})=>({session:e(d,{fields:[V.sessionId],references:[d.id]}),profile:e(o,{fields:[V.userId],references:[o.id]})}));var Ge=0,Hn=0,Je=0,Fn=0;var Gi=0;function po(){Ge++,Ge>Hn&&(Hn=Ge)}m(po,"trackDbOpStart");function _o(){Ge>0&&Ge--}m(_o,"trackDbOpEnd");function fo(){Je++,Je>Fn&&(Fn=Je)}m(fo,"trackHeavyDbOpStart");function xo(){Je>0&&Je--}m(xo,"trackHeavyDbOpEnd");function Gn(){Gi++}m(Gn,"recordQueryDeadline");var wt,zt,No=!1,Tt;var Jn,Dt,At;function Wn(e){let t=process.env[e];if(!t)throw new Error(`Missing required env var: ${e}`);return t}m(Wn,"getEnv");function Xn(){if(No)throw new Error("getDb() called after closeDb(): the connection pool is closed for shutdown. Stop issuing queries (timers/requests) before draining the pool.");if(!wt){let e=process.env.PG_APPLICATION_NAME||"rulemetric",t=Number(process.env.PG_POOL_MAX)||3,a=Number(process.env.PG_CONNECT_TIMEOUT_S)||10,l=Number(process.env.PG_STATEMENT_TIMEOUT_MS)||0,c=Number(process.env.PG_IDLE_TIMEOUT)||5,p=Number(process.env.PG_KEEP_ALIVE_S)||60;zt=Qn(Wn("DATABASE_URL"),{prepare:!1,max:t,connect_timeout:a,idle_timeout:c,keep_alive:p,max_lifetime:300,connection:{application_name:e,...l>0?{statement_timeout:l}:{}}}),wt=Yn(zt,{schema:It})}return wt}m(Xn,"getDb");function $n(){if(No)throw new Error("getHeavyDb() called after closeDb(): the connection pool is closed for shutdown. Stop issuing queries (timers/requests) before draining the pool.");if(!At){let e=(process.env.PG_APPLICATION_NAME||"rulemetric")+":heavy",t=Number(process.env.PG_HEAVY_POOL_MAX)||2;Dt=Qn(Wn("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}}),At=Yn(Dt,{schema:It})}return At}m($n,"getHeavyDb");async function Ji(){if(Tt)return Tt;No=!0;let e=zt,t=Jn,a=Dt;return zt=void 0,wt=void 0,Jn=void 0,Dt=void 0,At=void 0,Tt=Promise.allSettled([e?e.end({timeout:5}):Promise.resolve(),t?t.end({timeout:5}):Promise.resolve(),a?a.end({timeout:5}):Promise.resolve()]).then(()=>{}),Tt}m(Ji,"closeDb");var Yi=new Set(["CONNECT_TIMEOUT","ETIMEDOUT","ENOTFOUND","ECONNREFUSED","EAI_AGAIN"]);function Zn(e){let t=e,a=t?.code??t?.cause?.code??t?.errno;return a!==void 0&&Yi.has(a)}m(Zn,"isRetryableConnectError");var Qi=new Set(["CONNECTION_CLOSED","ECONNRESET","EPIPE"]);function er(e){let t=e,a=t?.code??t?.cause?.code??t?.errno;return a!==void 0&&Qi.has(a)}m(er,"isRetryableResetError");async function tr(e,t={}){let a=t.attempts??3,l=t.baseMs??100,c;for(let p=0;p<a;p++)try{return await e()}catch(g){c=g;let Te=Zn(g)||t.retryResets===!0&&er(g);if(p===a-1||!Te)throw g;await new Promise(H=>setTimeout(H,l*2**p))}throw c}m(tr,"withDbRetry");var bt=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 or(){let e=Number(process.env.PG_QUERY_DEADLINE_MS);return Number.isFinite(e)&&e>=0?e:2e4}m(or,"queryDeadlineMs");function Wi(e,t){let a,l=new Promise((c,p)=>{a=setTimeout(()=>{Gn(),p(new bt(t))},t);let g=a;typeof g.unref=="function"&&g.unref()});return Promise.race([e,l]).finally(()=>clearTimeout(a))}m(Wi,"raceWithDeadline");var nr=new Set(["select","selectDistinct","selectDistinctOn","insert","update","delete","execute","with","$count","refreshMaterializedView"]),rr=new Set(["select","selectDistinct","selectDistinctOn","$count"]);function go(e,t=!1,a=0,l=!1){return e===null||typeof e!="object"&&typeof e!="function"?e:new Proxy(e,{get(c,p,g){if(p==="then"){let H=Reflect.get(c,p,g);return typeof H!="function"?H:(ar,dr)=>{let ur=l?fo:po,lr=l?xo:_o;ur();let vo=tr(()=>new Promise((cr,mr)=>H.call(c,cr,mr)),{retryResets:t});return(a>0?Wi(vo,a):vo).finally(lr).then(ar,dr)}}let Te=Reflect.get(c,p,g);return typeof Te=="function"?(...H)=>go(Te.apply(c,H),t,a,l):Te}})}m(go,"wrapBuilder");function sr(e,t=!1){let a=t?fo:po,l=t?xo:_o;a();try{return Promise.resolve(e()).finally(l)}catch(c){throw l(),c}}m(sr,"gaugeTransaction");var ir=new Proxy({},{get(e,t){let a=Xn(),l=a[t];if(typeof t=="string"&&nr.has(t)&&typeof l=="function"){let c=rr.has(t),p=or();return(...g)=>go(l.apply(a,g),c,p)}return t==="transaction"&&typeof l=="function"?(...c)=>sr(()=>l.apply(a,c)):l}}),Xi=new Proxy({},{get(e,t){let a=$n(),l=a[t];if(typeof t=="string"&&nr.has(t)&&typeof l=="function"){let c=rr.has(t);return(...p)=>go(l.apply(a,p),c,0,!0)}return t==="transaction"&&typeof l=="function"?(...c)=>sr(()=>l.apply(a,c),!0):l}});export{o as a,f as b,d as c,ie as d,h as e,So as f,Ko as g,Po as h,Oo as i,Xn as j,Ji as k};
@@ -1,4 +1,4 @@
1
- import{c as e,d as o,j as y}from"./chunk-7574DMOC.js";import{f as d}from"./chunk-RTWRHIKY.js";import{a as g}from"./chunk-ZLLER3HP.js";import{eq as c,asc as P,sql as R}from"drizzle-orm";var T=1800*1e3,I=300*1e3,h=10,D=`Given these messages from an AI coding session, write a 1-2 sentence summary of what the user is trying to accomplish. Focus on the goal, not the steps. No preamble.
1
+ import{c as e,d as o,j as y}from"./chunk-QH6X6VOT.js";import{f as d}from"./chunk-RTWRHIKY.js";import{a as g}from"./chunk-ZLLER3HP.js";import{eq as c,asc as P,sql as R}from"drizzle-orm";var T=1800*1e3,I=300*1e3,h=10,D=`Given these messages from an AI coding session, write a 1-2 sentence summary of what the user is trying to accomplish. Focus on the goal, not the steps. No preamble.
2
2
 
3
3
  Return strict JSON in the form: {"goalSummary": "..."}`;async function b(t,a={}){let n=a.db??y(),f=a.llm??d,r=a.now??Date.now,[i]=await n.select().from(e).where(c(e.id,t.sessionId)).limit(1);if(!i)return{skipped:"not_found"};let w=(await n.execute(R`SELECT MAX(timestamp) AS last_at FROM session_events WHERE session_id = ${t.sessionId}`))?.[0]?.last_at??i.startedAt,_=new Date(w).getTime();if(r()-_>T)return{skipped:"stale"};let m=i.analysis??{},p=m.goalSummaryAt?new Date(m.goalSummaryAt).getTime():0;if(p&&r()-p<I)return{skipped:"recent"};let u=(await n.select().from(o).where(c(o.sessionId,t.sessionId)).orderBy(P(o.timestamp)).limit(h*2)).filter(s=>s.content&&(s.eventType==="user_message"||s.eventType==="assistant_response")).map(s=>`${s.eventType==="user_message"?"USER":"ASSISTANT"}: ${s.content}`).join(`
4
4
 
@@ -1,3 +1,3 @@
1
- import{e as N}from"../../chunk-XD64BT77.js";import"../../chunk-TIOKY2IA.js";import"../../chunk-LMHLQ2RB.js";import"../../chunk-7SZX7C7U.js";import"../../chunk-AIGR5AYV.js";import"../../chunk-RFMFABN2.js";import"../../chunk-QFVGUZDO.js";import"../../chunk-W2MOTOQE.js";import"../../chunk-42HTXLNB.js";import"../../chunk-AN4DKFLK.js";import"../../chunk-6QKI756T.js";import"../../chunk-RSKQRVPJ.js";import"../../chunk-KAF3CYRW.js";import"../../chunk-UF6US7VU.js";import"../../chunk-O3C5IV2Y.js";import"../../chunk-ZL4MZMUK.js";import"../../chunk-HIDJIABB.js";import"../../chunk-HA77SJ4C.js";import"../../chunk-N7TGRFVZ.js";import"../../chunk-5RBLIVBF.js";import{k as f}from"../../chunk-7574DMOC.js";import"../../chunk-FJJ54GK3.js";import"../../chunk-QUUN6A7E.js";import"../../chunk-6V4WM73L.js";import"../../chunk-5XP7WWJR.js";import"../../chunk-RTWRHIKY.js";import"../../chunk-TDD7IOV2.js";import"../../chunk-MODXEGCU.js";import"../../chunk-7DFNBRLY.js";import"../../chunk-N7ODX6PO.js";import"../../chunk-67QCYUJU.js";import"../../chunk-PTPDOYWP.js";import"../../chunk-5BMBVTAE.js";import"../../chunk-S6B2R2LL.js";import"../../chunk-QH7VY5HJ.js";import{a as _}from"../../chunk-PPKPCXJD.js";import"../../chunk-IZTIYR5Q.js";import"../../chunk-V44SRRYR.js";import"../../chunk-U6XEU573.js";import"../../chunk-VLOX6KOM.js";import"../../chunk-3AV3GTMP.js";import"../../chunk-H2ORWIEY.js";import{e as R,l as w}from"../../chunk-O6C2UGBY.js";import{a as e}from"../../chunk-ZLLER3HP.js";import{trace as z,context as Q}from"@opentelemetry/api";import{NodeSDK as A}from"@opentelemetry/sdk-node";import{OTLPTraceExporter as I}from"@opentelemetry/exporter-trace-otlp-http";import{BatchSpanProcessor as L,ConsoleSpanExporter as C,SimpleSpanProcessor as D}from"@opentelemetry/sdk-trace-node";import{Resource as M}from"@opentelemetry/resources";import{ATTR_SERVICE_NAME as V,ATTR_SERVICE_VERSION as q}from"@opentelemetry/semantic-conventions";function b(t){if(!t)return{};let r={};for(let n of t.split(",")){let o=n.indexOf("=");if(o===-1)continue;let s=n.slice(0,o).trim(),i=n.slice(o+1).trim();s&&(r[s]=i)}return r}e(b,"parseOtlpHeaders");var c=null;function g(){return process.env.TELEMETRY_ENABLED!=="false"}e(g,"isTelemetryEnabled");function E(t){if(!g()||c!==null)return"off";let r=new M({[V]:t.serviceName,[q]:t.serviceVersion??"0.1.0"}),n=process.env.OTEL_EXPORTER_OTLP_ENDPOINT,o,s;if(n){let i=b(process.env.OTEL_EXPORTER_OTLP_HEADERS),u=new I({url:`${n}/v1/traces`,headers:i});s=new L(u),o="otlp"}else if(process.env.OTEL_SPAN_EXPORT==="none")s=void 0,o="silent";else{let i=new C;s=new D(i),o="console"}return c=new A({resource:r,spanProcessors:s?[s]:[]}),c.start(),o}e(E,"initTelemetry");async function d(){c&&(await c.shutdown(),c=null)}e(d,"shutdownTelemetry");import{SpanKind as ae,SpanStatusCode as ce}from"@opentelemetry/api";import{trace as de,context as me}from"@opentelemetry/api";import*as l from"@sentry/node";var h=!1;function y(t){if(h)return!1;let r=process.env.SENTRY_DSN;return r?(l.init({dsn:r,serverName:t.serviceName,environment:process.env.NODE_ENV??"development",tracesSampleRate:0}),h=!0,!0):!1}e(y,"initSentry");async function m(t){h&&await l.flush(t)}e(m,"flushSentry");import{existsSync as G,mkdirSync as U,readFileSync as v,unlinkSync as k,writeFileSync as O}from"node:fs";import{dirname as X,join as P}from"node:path";import{execFileSync as $}from"node:child_process";var a=P(w(),"evals-agent.lock");function j(t){try{return process.kill(t,0),!0}catch(r){return r.code==="EPERM"}}e(j,"pidAlive");function B(t){if(!j(t))return!1;try{let r=$("ps",["-p",String(t),"-o","command="],{encoding:"utf-8",stdio:["ignore","pipe","ignore"]});return/run\.js\s+evals\s+agent|evals\s+agent/.test(r)}catch{return!0}}e(B,"isLiveAgent");function H(){try{U(X(a),{recursive:!0})}catch{}for(let t=0;t<2;t++)try{return O(a,String(process.pid),{flag:"wx"}),{ok:!0}}catch(r){if(r.code!=="EEXIST")throw r;let n=0;try{n=Number(v(a,"utf-8").trim())}catch{}if(n&&n!==process.pid&&B(n))return{ok:!1,holder:n};try{k(a)}catch{}}try{O(a,String(process.pid))}catch{}return{ok:!0}}e(H,"acquireAgentLock");function S(){try{G(a)&&Number(v(a,"utf-8").trim())===process.pid&&k(a)}catch{}}e(S,"releaseAgentLock");var T=class t extends _{static{e(this,"EvalAgentCommand")}static description="The worker daemon: long-polls /api/work/next, claims jobs, and runs them locally. Installed as a launchd service by `rulemetric service install`.";static examples=["<%= config.bin %> evals agent"];async run(){await this.parse(t),this.requireAuth();let r=H();if(!r.ok){this.log(`Another rulemetric evals agent is already running (pid ${r.holder}). Refusing to start a second instance.`);return}process.env.PG_APPLICATION_NAME||="rulemetric-agent",y({serviceName:"rulemetric-agent"})&&this.log("[sentry] error capture enabled");let o=E({serviceName:"rulemetric-agent"});o==="otlp"?this.log(`[otel] traces exporting to ${process.env.OTEL_EXPORTER_OTLP_ENDPOINT}`):o==="console"?this.log("[otel] cron spans printing to stdout (set OTEL_EXPORTER_OTLP_ENDPOINT to ship to a backend)"):this.log("[otel] disabled (TELEMETRY_ENABLED=false)"),!R()&&!process.env.RULEMETRIC_API_KEY&&this.error("No auth token found. Run `rulemetric auth login` first."),this.log("Starting thin agent (Phase 4b parallel-run)..."),this.log(`Long-polling /api/work/next. Press Ctrl+C to stop.
1
+ import{e as N}from"../../chunk-5BSUCOQA.js";import"../../chunk-TIOKY2IA.js";import"../../chunk-RSKQRVPJ.js";import"../../chunk-SS5WVIQP.js";import"../../chunk-E4BQ5QM3.js";import"../../chunk-N7TGRFVZ.js";import"../../chunk-7SZX7C7U.js";import"../../chunk-AIGR5AYV.js";import"../../chunk-HDU5QPEO.js";import"../../chunk-QFVGUZDO.js";import"../../chunk-W2MOTOQE.js";import"../../chunk-HITXGIHI.js";import"../../chunk-OK3PGZND.js";import"../../chunk-6QKI756T.js";import"../../chunk-5RBLIVBF.js";import"../../chunk-KAF3CYRW.js";import"../../chunk-UF6US7VU.js";import"../../chunk-O3C5IV2Y.js";import"../../chunk-ZL4MZMUK.js";import"../../chunk-ATSA6BQM.js";import{k as f}from"../../chunk-QH6X6VOT.js";import"../../chunk-FJJ54GK3.js";import"../../chunk-QUUN6A7E.js";import"../../chunk-6V4WM73L.js";import"../../chunk-5XP7WWJR.js";import"../../chunk-RTWRHIKY.js";import"../../chunk-TDD7IOV2.js";import"../../chunk-MODXEGCU.js";import"../../chunk-7DFNBRLY.js";import"../../chunk-N7ODX6PO.js";import"../../chunk-67QCYUJU.js";import"../../chunk-PTPDOYWP.js";import"../../chunk-5BMBVTAE.js";import"../../chunk-S6B2R2LL.js";import"../../chunk-QH7VY5HJ.js";import{a as _}from"../../chunk-PPKPCXJD.js";import"../../chunk-IZTIYR5Q.js";import"../../chunk-V44SRRYR.js";import"../../chunk-U6XEU573.js";import"../../chunk-VLOX6KOM.js";import"../../chunk-3AV3GTMP.js";import"../../chunk-H2ORWIEY.js";import{e as R,l as w}from"../../chunk-O6C2UGBY.js";import{a as e}from"../../chunk-ZLLER3HP.js";import{trace as z,context as Q}from"@opentelemetry/api";import{NodeSDK as A}from"@opentelemetry/sdk-node";import{OTLPTraceExporter as I}from"@opentelemetry/exporter-trace-otlp-http";import{BatchSpanProcessor as L,ConsoleSpanExporter as C,SimpleSpanProcessor as D}from"@opentelemetry/sdk-trace-node";import{Resource as M}from"@opentelemetry/resources";import{ATTR_SERVICE_NAME as V,ATTR_SERVICE_VERSION as q}from"@opentelemetry/semantic-conventions";function b(t){if(!t)return{};let r={};for(let n of t.split(",")){let o=n.indexOf("=");if(o===-1)continue;let s=n.slice(0,o).trim(),i=n.slice(o+1).trim();s&&(r[s]=i)}return r}e(b,"parseOtlpHeaders");var c=null;function g(){return process.env.TELEMETRY_ENABLED!=="false"}e(g,"isTelemetryEnabled");function E(t){if(!g()||c!==null)return"off";let r=new M({[V]:t.serviceName,[q]:t.serviceVersion??"0.1.0"}),n=process.env.OTEL_EXPORTER_OTLP_ENDPOINT,o,s;if(n){let i=b(process.env.OTEL_EXPORTER_OTLP_HEADERS),u=new I({url:`${n}/v1/traces`,headers:i});s=new L(u),o="otlp"}else if(process.env.OTEL_SPAN_EXPORT==="none")s=void 0,o="silent";else{let i=new C;s=new D(i),o="console"}return c=new A({resource:r,spanProcessors:s?[s]:[]}),c.start(),o}e(E,"initTelemetry");async function d(){c&&(await c.shutdown(),c=null)}e(d,"shutdownTelemetry");import{SpanKind as ae,SpanStatusCode as ce}from"@opentelemetry/api";import{trace as de,context as me}from"@opentelemetry/api";import*as l from"@sentry/node";var h=!1;function y(t){if(h)return!1;let r=process.env.SENTRY_DSN;return r?(l.init({dsn:r,serverName:t.serviceName,environment:process.env.NODE_ENV??"development",tracesSampleRate:0}),h=!0,!0):!1}e(y,"initSentry");async function m(t){h&&await l.flush(t)}e(m,"flushSentry");import{existsSync as G,mkdirSync as U,readFileSync as v,unlinkSync as k,writeFileSync as O}from"node:fs";import{dirname as X,join as P}from"node:path";import{execFileSync as $}from"node:child_process";var a=P(w(),"evals-agent.lock");function j(t){try{return process.kill(t,0),!0}catch(r){return r.code==="EPERM"}}e(j,"pidAlive");function B(t){if(!j(t))return!1;try{let r=$("ps",["-p",String(t),"-o","command="],{encoding:"utf-8",stdio:["ignore","pipe","ignore"]});return/run\.js\s+evals\s+agent|evals\s+agent/.test(r)}catch{return!0}}e(B,"isLiveAgent");function H(){try{U(X(a),{recursive:!0})}catch{}for(let t=0;t<2;t++)try{return O(a,String(process.pid),{flag:"wx"}),{ok:!0}}catch(r){if(r.code!=="EEXIST")throw r;let n=0;try{n=Number(v(a,"utf-8").trim())}catch{}if(n&&n!==process.pid&&B(n))return{ok:!1,holder:n};try{k(a)}catch{}}try{O(a,String(process.pid))}catch{}return{ok:!0}}e(H,"acquireAgentLock");function S(){try{G(a)&&Number(v(a,"utf-8").trim())===process.pid&&k(a)}catch{}}e(S,"releaseAgentLock");var T=class t extends _{static{e(this,"EvalAgentCommand")}static description="The worker daemon: long-polls /api/work/next, claims jobs, and runs them locally. Installed as a launchd service by `rulemetric service install`.";static examples=["<%= config.bin %> evals agent"];async run(){await this.parse(t),this.requireAuth();let r=H();if(!r.ok){this.log(`Another rulemetric evals agent is already running (pid ${r.holder}). Refusing to start a second instance.`);return}process.env.PG_APPLICATION_NAME||="rulemetric-agent",y({serviceName:"rulemetric-agent"})&&this.log("[sentry] error capture enabled");let o=E({serviceName:"rulemetric-agent"});o==="otlp"?this.log(`[otel] traces exporting to ${process.env.OTEL_EXPORTER_OTLP_ENDPOINT}`):o==="console"?this.log("[otel] cron spans printing to stdout (set OTEL_EXPORTER_OTLP_ENDPOINT to ship to a backend)"):this.log("[otel] disabled (TELEMETRY_ENABLED=false)"),!R()&&!process.env.RULEMETRIC_API_KEY&&this.error("No auth token found. Run `rulemetric auth login` first."),this.log("Starting thin agent (Phase 4b parallel-run)..."),this.log(`Long-polling /api/work/next. Press Ctrl+C to stop.
2
2
  `);let i=new AbortController,u=e(async p=>{this.log(`
3
3
  [${p}] shutting down agent...`),i.abort(),await Promise.allSettled([m(2e3),d(),f()]),S(),process.exit(0)},"shutdown");process.on("SIGINT",()=>{u("SIGINT")}),process.on("SIGTERM",()=>{u("SIGTERM")});let x=!1;try{await N({signal:i.signal,log:e(p=>this.log(p),"log"),version:this.config.version,readInstalledVersion:e(()=>{try{return JSON.parse(v(P(this.config.root,"package.json"),"utf-8")).version??null}catch{return null}},"readInstalledVersion"),onVersionDrift:e(()=>{x=!0},"onVersionDrift")}),x&&(this.log("[upgrade] Installed CLI version changed \u2014 restarting worker onto the new code."),await Promise.allSettled([m(2e3),d(),f()]),S(),process.exit(1))}finally{S(),await f()}}};export{T as default};
@@ -1,6 +1,6 @@
1
- import{a as i}from"../../chunk-QH7VY5HJ.js";import{a as u}from"../../chunk-PPKPCXJD.js";import"../../chunk-IZTIYR5Q.js";import"../../chunk-V44SRRYR.js";import"../../chunk-U6XEU573.js";import"../../chunk-VLOX6KOM.js";import"../../chunk-3AV3GTMP.js";import{e as a}from"../../chunk-H2ORWIEY.js";import"../../chunk-O6C2UGBY.js";import{a as p}from"../../chunk-ZLLER3HP.js";import{Args as c,Flags as v}from"@oclif/core";var m=class d extends u{static{p(this,"EvalCompareCommand")}static description="Blind A/B comparison between two eval target versions";static examples=["<%= config.bin %> evals compare <target-a> <target-b>"];static args={targetA:c.string({description:"First eval target ID",required:!0}),targetB:c.string({description:"Second eval target ID",required:!0})};static flags={model:v.string({description:"Model for execution and comparison"}),timeout:v.integer({description:"Timeout per eval in ms",default:12e4})};async run(){let{args:s,flags:e}=await this.parse(d);this.requireAuth();let[o,n]=await Promise.all([a(`/api/eval-targets/${s.targetA}`),a(`/api/eval-targets/${s.targetB}`)]),l=await a(`/api/eval-targets/${s.targetA}/evals`);l.length===0&&this.error("No evals found for target A. Create some first."),this.log(`Comparing "${o.name}" v${o.version} vs "${n.name}" v${n.version}`),this.log(`Running ${l.length} eval(s)...
2
- `);let r=Math.random()>.5,h=r?n.content:o.content,f=r?o.content:n.content,A=r?n.name:o.name,w=r?o.name:n.name,g=[];for(let t of l){this.log(`[${t.name}] Running A...`);let b=await i({prompt:t.prompt,targetContent:h,timeout:e.timeout,model:e.model});this.log(`[${t.name}] Running B...`);let E=await i({prompt:t.prompt,targetContent:f,timeout:e.timeout,model:e.model});g.push({evalName:t.name,outputA:b.output,outputB:E.output})}this.log(`
3
- Running blind comparison...`);let B=g.map(t=>`
1
+ import{a as $,b as A}from"../../chunk-647M2I2Y.js";import{a as p}from"../../chunk-QH7VY5HJ.js";import{a as f}from"../../chunk-PPKPCXJD.js";import"../../chunk-IZTIYR5Q.js";import"../../chunk-V44SRRYR.js";import"../../chunk-U6XEU573.js";import"../../chunk-VLOX6KOM.js";import"../../chunk-3AV3GTMP.js";import{e as l,f as w}from"../../chunk-H2ORWIEY.js";import"../../chunk-O6C2UGBY.js";import{a as h}from"../../chunk-ZLLER3HP.js";import{Args as B,Flags as b}from"@oclif/core";var c=class I extends f{static{h(this,"EvalCompareCommand")}static description="Blind A/B comparison between two eval target versions";static examples=["<%= config.bin %> evals compare <target-a> <target-b>"];static args={targetA:B.string({description:"First eval target ID",required:!0}),targetB:B.string({description:"Second eval target ID",required:!0})};static flags={model:b.string({description:"Model for execution and comparison"}),timeout:b.integer({description:"Timeout per eval in ms",default:12e4})};async run(){let{args:g,flags:o}=await this.parse(I);this.requireAuth();let[e,r]=await Promise.all([l(`/api/eval-targets/${g.targetA}`),l(`/api/eval-targets/${g.targetB}`)]),m=await l(`/api/eval-targets/${g.targetA}/evals`);m.length===0&&this.error("No evals found for target A. Create some first."),this.log(`Comparing "${e.name}" v${e.version} vs "${r.name}" v${r.version}`),this.log(`Running ${m.length} eval(s)...
2
+ `);let a=Math.random()>.5,E=a?r.content:e.content,T=a?e.content:r.content,C=a?r.name:e.name,x=a?e.name:r.name,v=[];for(let t of m){this.log(`[${t.name}] Running A...`);let s=await p({prompt:t.prompt,targetContent:E,timeout:o.timeout,model:o.model});this.log(`[${t.name}] Running B...`);let d=await p({prompt:t.prompt,targetContent:T,timeout:o.timeout,model:o.model});(s.error||d.error)&&this.error(`[${t.name}] execution failed (A: ${s.error??"ok"} | B: ${d.error??"ok"}) \u2014 aborting before the blind comparison`),v.push({evalName:t.name,outputA:s.output,outputB:d.output})}this.log(`
3
+ Running blind comparison...`);let N=v.map(t=>`
4
4
  ## Eval: ${t.evalName}
5
5
 
6
6
  ### Output A
@@ -10,10 +10,10 @@ ${t.outputA}
10
10
  ${t.outputB}
11
11
  `).join(`
12
12
  ---
13
- `),$=await i({prompt:`Compare these two sets of outputs. For each eval, determine which output (A or B) is better.
13
+ `),i=await p({prompt:`Compare these two sets of outputs. For each eval, determine which output (A or B) is better.
14
14
  Then provide an overall winner with reasoning.
15
15
 
16
- ${B}
16
+ ${N}
17
17
 
18
18
  Respond with JSON:
19
19
  {
@@ -26,6 +26,6 @@ Respond with JSON:
26
26
  "strengths_winner": ["..."],
27
27
  "weaknesses_loser": ["..."]
28
28
  }
29
- }`,timeout:e.timeout,model:e.model});this.log(`
29
+ }`,timeout:o.timeout,model:o.model});i.error&&this.error(`Blind comparison failed: ${i.error}`),this.log(`
30
30
  === Comparison Results ===
31
- `),this.log(`A = "${A}" | B = "${w}"`),r&&this.log("(Labels were swapped for blind comparison)"),this.log(""),this.log($.output)}};export{m as default};
31
+ `),this.log(`A = "${C}" | B = "${x}"`),a&&this.log("(Labels were swapped for blind comparison)"),this.log(""),this.log(i.output);let u=$(i.output),n=u?A(u,{targetAId:e.id,targetBId:r.id,isSwapped:a}):null;try{let t=await w("/api/eval-comparisons",{targetAId:e.id,targetBId:r.id,targetAVersion:e.version,targetBVersion:r.version,isSwapped:a,winnerTargetId:n?.winnerTargetId??null,perEval:n?.perEval??[],overall:n?.overall??{},rawOutput:i.output,model:o.model??null,status:u?"completed":"parse_failed"});if(this.log(""),n){let s=n.winnerTargetId===e.id?`"${e.name}" v${e.version}`:n.winnerTargetId===r.id?`"${r.name}" v${r.version}`:"TIE";this.log(`Winner: ${s}`)}else this.warn("Judge output was not parseable JSON \u2014 saved as parse_failed with the raw output.");this.log(`Comparison saved: ${t.id} (web: /eval-targets/${e.id} \u2192 Comparisons tab)`)}catch(t){this.error(`Comparison ran but could not be persisted: ${t instanceof Error?t.message:String(t)}`)}}};export{c as default};
@@ -1 +1 @@
1
- import{a,b,c,d,e}from"../chunk-XD64BT77.js";import"../chunk-TIOKY2IA.js";import"../chunk-LMHLQ2RB.js";import"../chunk-7SZX7C7U.js";import"../chunk-AIGR5AYV.js";import"../chunk-RFMFABN2.js";import"../chunk-QFVGUZDO.js";import"../chunk-W2MOTOQE.js";import"../chunk-42HTXLNB.js";import"../chunk-AN4DKFLK.js";import"../chunk-6QKI756T.js";import"../chunk-RSKQRVPJ.js";import"../chunk-KAF3CYRW.js";import"../chunk-UF6US7VU.js";import"../chunk-O3C5IV2Y.js";import"../chunk-ZL4MZMUK.js";import"../chunk-HIDJIABB.js";import"../chunk-HA77SJ4C.js";import"../chunk-N7TGRFVZ.js";import"../chunk-5RBLIVBF.js";import"../chunk-7574DMOC.js";import"../chunk-FJJ54GK3.js";import"../chunk-QUUN6A7E.js";import"../chunk-6V4WM73L.js";import"../chunk-5XP7WWJR.js";import"../chunk-RTWRHIKY.js";import"../chunk-TDD7IOV2.js";import"../chunk-MODXEGCU.js";import"../chunk-7DFNBRLY.js";import"../chunk-N7ODX6PO.js";import"../chunk-67QCYUJU.js";import"../chunk-PTPDOYWP.js";import"../chunk-5BMBVTAE.js";import"../chunk-S6B2R2LL.js";import"../chunk-QH7VY5HJ.js";import"../chunk-H2ORWIEY.js";import"../chunk-O6C2UGBY.js";import"../chunk-ZLLER3HP.js";export{b as CAPABILITIES,a as HANDLERS,c as availableCapabilities,d as pollForWork,e as runAgentLoop};
1
+ import{a,b,c,d,e}from"../chunk-5BSUCOQA.js";import"../chunk-TIOKY2IA.js";import"../chunk-RSKQRVPJ.js";import"../chunk-SS5WVIQP.js";import"../chunk-E4BQ5QM3.js";import"../chunk-N7TGRFVZ.js";import"../chunk-7SZX7C7U.js";import"../chunk-AIGR5AYV.js";import"../chunk-HDU5QPEO.js";import"../chunk-QFVGUZDO.js";import"../chunk-W2MOTOQE.js";import"../chunk-HITXGIHI.js";import"../chunk-OK3PGZND.js";import"../chunk-6QKI756T.js";import"../chunk-5RBLIVBF.js";import"../chunk-KAF3CYRW.js";import"../chunk-UF6US7VU.js";import"../chunk-O3C5IV2Y.js";import"../chunk-ZL4MZMUK.js";import"../chunk-ATSA6BQM.js";import"../chunk-QH6X6VOT.js";import"../chunk-FJJ54GK3.js";import"../chunk-QUUN6A7E.js";import"../chunk-6V4WM73L.js";import"../chunk-5XP7WWJR.js";import"../chunk-RTWRHIKY.js";import"../chunk-TDD7IOV2.js";import"../chunk-MODXEGCU.js";import"../chunk-7DFNBRLY.js";import"../chunk-N7ODX6PO.js";import"../chunk-67QCYUJU.js";import"../chunk-PTPDOYWP.js";import"../chunk-5BMBVTAE.js";import"../chunk-S6B2R2LL.js";import"../chunk-QH7VY5HJ.js";import"../chunk-H2ORWIEY.js";import"../chunk-O6C2UGBY.js";import"../chunk-ZLLER3HP.js";export{b as CAPABILITIES,a as HANDLERS,c as availableCapabilities,d as pollForWork,e as runAgentLoop};
@@ -0,0 +1 @@
1
+ import{a,b}from"../chunk-647M2I2Y.js";import"../chunk-ZLLER3HP.js";export{a as parseComparatorOutput,b as resolveComparison};
@@ -1 +1 @@
1
- import{a,b}from"../../chunk-HIDJIABB.js";import"../../chunk-7574DMOC.js";import"../../chunk-RTWRHIKY.js";import"../../chunk-N7ODX6PO.js";import"../../chunk-67QCYUJU.js";import"../../chunk-ZLLER3HP.js";export{b as distillMemories,a as selectNewMemories};
1
+ import{a,b}from"../../chunk-ATSA6BQM.js";import"../../chunk-QH6X6VOT.js";import"../../chunk-RTWRHIKY.js";import"../../chunk-N7ODX6PO.js";import"../../chunk-67QCYUJU.js";import"../../chunk-ZLLER3HP.js";export{b as distillMemories,a as selectNewMemories};
@@ -1 +1 @@
1
- import{a}from"../../chunk-HA77SJ4C.js";import"../../chunk-N7TGRFVZ.js";import"../../chunk-5RBLIVBF.js";import"../../chunk-7574DMOC.js";import"../../chunk-ZLLER3HP.js";export{a as processAnnouncement};
1
+ import{a}from"../../chunk-E4BQ5QM3.js";import"../../chunk-N7TGRFVZ.js";import"../../chunk-5RBLIVBF.js";import"../../chunk-QH6X6VOT.js";import"../../chunk-ZLLER3HP.js";export{a as processAnnouncement};
@@ -1 +1 @@
1
- import{a}from"../../chunk-ANKSEQQT.js";import"../../chunk-ZL4MZMUK.js";import"../../chunk-N7TGRFVZ.js";import"../../chunk-7574DMOC.js";import"../../chunk-ZLLER3HP.js";export{a as processChangelog};
1
+ import{a}from"../../chunk-IMVTXCD2.js";import"../../chunk-N7TGRFVZ.js";import"../../chunk-ZL4MZMUK.js";import"../../chunk-QH6X6VOT.js";import"../../chunk-ZLLER3HP.js";export{a as processChangelog};
@@ -1 +1 @@
1
- import{a}from"../../chunk-RFMFABN2.js";import"../../chunk-QFVGUZDO.js";import"../../chunk-ZL4MZMUK.js";import"../../chunk-5RBLIVBF.js";import"../../chunk-RTWRHIKY.js";import"../../chunk-N7ODX6PO.js";import"../../chunk-67QCYUJU.js";import"../../chunk-H2ORWIEY.js";import"../../chunk-O6C2UGBY.js";import"../../chunk-ZLLER3HP.js";export{a as processInsights};
1
+ import{a}from"../../chunk-HDU5QPEO.js";import"../../chunk-QFVGUZDO.js";import"../../chunk-5RBLIVBF.js";import"../../chunk-ZL4MZMUK.js";import"../../chunk-RTWRHIKY.js";import"../../chunk-N7ODX6PO.js";import"../../chunk-67QCYUJU.js";import"../../chunk-H2ORWIEY.js";import"../../chunk-O6C2UGBY.js";import"../../chunk-ZLLER3HP.js";export{a as processInsights};
@@ -1 +1 @@
1
- import{a}from"../../chunk-42HTXLNB.js";import"../../chunk-7574DMOC.js";import"../../chunk-5BMBVTAE.js";import"../../chunk-S6B2R2LL.js";import"../../chunk-QH7VY5HJ.js";import"../../chunk-ZLLER3HP.js";export{a as processMemoryAb};
1
+ import{a}from"../../chunk-HITXGIHI.js";import"../../chunk-QH6X6VOT.js";import"../../chunk-5BMBVTAE.js";import"../../chunk-S6B2R2LL.js";import"../../chunk-QH7VY5HJ.js";import"../../chunk-ZLLER3HP.js";export{a as processMemoryAb};
@@ -1 +1 @@
1
- import{a}from"../../chunk-AN4DKFLK.js";import"../../chunk-6QKI756T.js";import"../../chunk-5RBLIVBF.js";import"../../chunk-7574DMOC.js";import"../../chunk-7DFNBRLY.js";import"../../chunk-N7ODX6PO.js";import"../../chunk-ZLLER3HP.js";export{a as processRunCleanup};
1
+ import{a}from"../../chunk-OK3PGZND.js";import"../../chunk-6QKI756T.js";import"../../chunk-5RBLIVBF.js";import"../../chunk-QH6X6VOT.js";import"../../chunk-7DFNBRLY.js";import"../../chunk-N7ODX6PO.js";import"../../chunk-ZLLER3HP.js";export{a as processRunCleanup};
@@ -1 +1 @@
1
- import{a}from"../../chunk-LMHLQ2RB.js";import"../../chunk-7574DMOC.js";import"../../chunk-RTWRHIKY.js";import"../../chunk-N7ODX6PO.js";import"../../chunk-67QCYUJU.js";import"../../chunk-ZLLER3HP.js";export{a as processSessionGoal};
1
+ import{a}from"../../chunk-SS5WVIQP.js";import"../../chunk-QH6X6VOT.js";import"../../chunk-RTWRHIKY.js";import"../../chunk-N7ODX6PO.js";import"../../chunk-67QCYUJU.js";import"../../chunk-ZLLER3HP.js";export{a as processSessionGoal};
@@ -1 +1 @@
1
- import{a as l}from"../chunk-ANKSEQQT.js";import{a as u}from"../chunk-UF6US7VU.js";import{a as g}from"../chunk-O3C5IV2Y.js";import"../chunk-ZL4MZMUK.js";import"../chunk-N7TGRFVZ.js";import"../chunk-7574DMOC.js";import"../chunk-RTWRHIKY.js";import"../chunk-TDD7IOV2.js";import"../chunk-MODXEGCU.js";import"../chunk-N7ODX6PO.js";import"../chunk-67QCYUJU.js";import{a as i}from"../chunk-GY5IJ4RS.js";import"../chunk-H2ORWIEY.js";import"../chunk-O6C2UGBY.js";import{a as o}from"../chunk-ZLLER3HP.js";var c={cron_check_changelog:o(async(r,e)=>{let s=await l({logger:{info:o(t=>e.logger.info(t),"info"),warn:o(t=>e.logger.warn(t),"warn")}});e.logger.info(`[cron_check_changelog] result: created=${s.createdCount} skipped=${s.skippedCount}`)},"cron_check_changelog"),cron_suggest_instructions:o((r,e)=>g(r,e),"cron_suggest_instructions"),cron_refresh_skills:o((r,e)=>u(r,e),"cron_refresh_skills")},p=i.map(r=>{let e=c[r.name];if(!e)throw new Error(`manual-tasks: no handler registered for "${r.name}"`);return{...r,handler:e}});async function m(r){let e=p.find(n=>n.name===r);if(!e)return{name:r,durationMs:0,ok:!1,error:`Unknown task: ${r}`,logs:[]};let s=[],t={logger:{info:o(n=>s.push({level:"info",message:n}),"info"),warn:o(n=>s.push({level:"warn",message:n}),"warn"),error:o(n=>s.push({level:"error",message:n}),"error")},job:{attempts:0}},a=Date.now();try{return await e.handler({},t),{name:r,durationMs:Date.now()-a,ok:!0,logs:s}}catch(n){return{name:r,durationMs:Date.now()-a,ok:!1,error:n instanceof Error?n.message:String(n),logs:s}}}o(m,"runManualTask");export{p as MANUAL_TASKS,m as runManualTask};
1
+ import{a as l}from"../chunk-IMVTXCD2.js";import"../chunk-N7TGRFVZ.js";import{a as u}from"../chunk-UF6US7VU.js";import{a as g}from"../chunk-O3C5IV2Y.js";import"../chunk-ZL4MZMUK.js";import"../chunk-QH6X6VOT.js";import"../chunk-RTWRHIKY.js";import"../chunk-TDD7IOV2.js";import"../chunk-MODXEGCU.js";import"../chunk-N7ODX6PO.js";import"../chunk-67QCYUJU.js";import{a as i}from"../chunk-GY5IJ4RS.js";import"../chunk-H2ORWIEY.js";import"../chunk-O6C2UGBY.js";import{a as o}from"../chunk-ZLLER3HP.js";var c={cron_check_changelog:o(async(r,e)=>{let s=await l({logger:{info:o(t=>e.logger.info(t),"info"),warn:o(t=>e.logger.warn(t),"warn")}});e.logger.info(`[cron_check_changelog] result: created=${s.createdCount} skipped=${s.skippedCount}`)},"cron_check_changelog"),cron_suggest_instructions:o((r,e)=>g(r,e),"cron_suggest_instructions"),cron_refresh_skills:o((r,e)=>u(r,e),"cron_refresh_skills")},p=i.map(r=>{let e=c[r.name];if(!e)throw new Error(`manual-tasks: no handler registered for "${r.name}"`);return{...r,handler:e}});async function m(r){let e=p.find(n=>n.name===r);if(!e)return{name:r,durationMs:0,ok:!1,error:`Unknown task: ${r}`,logs:[]};let s=[],t={logger:{info:o(n=>s.push({level:"info",message:n}),"info"),warn:o(n=>s.push({level:"warn",message:n}),"warn"),error:o(n=>s.push({level:"error",message:n}),"error")},job:{attempts:0}},a=Date.now();try{return await e.handler({},t),{name:r,durationMs:Date.now()-a,ok:!0,logs:s}}catch(n){return{name:r,durationMs:Date.now()-a,ok:!1,error:n instanceof Error?n.message:String(n),logs:s}}}o(m,"runManualTask");export{p as MANUAL_TASKS,m as runManualTask};
@@ -4077,5 +4077,5 @@
4077
4077
  ]
4078
4078
  }
4079
4079
  },
4080
- "version": "0.7.13"
4080
+ "version": "0.7.14"
4081
4081
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rulemetric/cli",
3
- "version": "0.7.13",
3
+ "version": "0.7.14",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -74,9 +74,9 @@
74
74
  "postgres": "^3.4.0",
75
75
  "react": "^19.0.0",
76
76
  "zod": "^3.24.0",
77
- "@rulemetric/hooks": "0.7.13",
78
- "@rulemetric/proxy": "0.7.13",
79
- "@rulemetric/skills-registry": "0.7.13"
77
+ "@rulemetric/hooks": "0.7.14",
78
+ "@rulemetric/proxy": "0.7.14",
79
+ "@rulemetric/skills-registry": "0.7.14"
80
80
  },
81
81
  "//deps": "Worker (`evals agent`) runtime deps: the @opentelemetry/* set, @sentry/node, and postgres are STATIC top-level imports loaded at worker startup (via bundled @rulemetric/{telemetry,db}) — they MUST be runtime deps or a clean `npm i -g` crashes with ModuleLoadError. `better-sqlite3` is optionalDependencies (below): it's a native module, lazy `require()`'d inside a try/catch (packages/session providers cursor/opencode) so a missing binary degrades gracefully — making it a hard dep would break `npm i -g` on platforms without prebuilt binaries. `resend` stays a devDep: lazy `await import('resend')` guarded by RESEND_API_KEY, which end-user workers never set (provider falls back to noop). Classification verified via import-graph scan of dist/commands/evals/agent.js + per-importer static/lazy check.",
82
82
  "optionalDependencies": {
@@ -97,11 +97,11 @@
97
97
  "@rulemetric/api": "0.0.1",
98
98
  "@rulemetric/core": "0.0.1",
99
99
  "@rulemetric/db": "0.0.1",
100
+ "@rulemetric/effectiveness": "0.0.1",
100
101
  "@rulemetric/email": "0.0.1",
101
102
  "@rulemetric/session": "0.2.1",
102
103
  "@rulemetric/telemetry": "0.0.1",
103
- "@rulemetric/typescript-config": "0.0.0",
104
- "@rulemetric/effectiveness": "0.0.1"
104
+ "@rulemetric/typescript-config": "0.0.0"
105
105
  },
106
106
  "scripts": {
107
107
  "build": "node scripts/build.mjs",
@@ -1 +0,0 @@
1
- import{a as m,c as mr}from"./chunk-ZLLER3HP.js";import{boolean as Io,pgTable as pr,text as Ye,timestamp as jt,uuid as To}from"drizzle-orm/pg-core";import{pgTable as Je,text as Z,timestamp as Te,jsonb as ho,uuid as F,primaryKey as yo}from"drizzle-orm/pg-core";var u=Je("organizations",{id:F("id").primaryKey().defaultRandom(),name:Z("name").unique().notNull(),slug:Z("slug").unique().notNull(),metadata:ho("metadata"),createdAt:Te("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Te("updated_at",{withTimezone:!0}).defaultNow()}),x=Je("teams",{id:F("id").primaryKey().defaultRandom(),orgId:F("org_id").references(()=>u.id,{onDelete:"cascade"}),name:Z("name").notNull(),slug:Z("slug").notNull(),metadata:ho("metadata"),createdAt:Te("created_at",{withTimezone:!0}).defaultNow()}),ee=Je("user_organizations",{userId:F("user_id").notNull(),orgId:F("org_id").references(()=>u.id,{onDelete:"cascade"}).notNull(),role:Z("role").notNull().default("member"),createdAt:Te("created_at",{withTimezone:!0}).defaultNow()},e=>[yo({columns:[e.userId,e.orgId]})]),te=Je("user_teams",{userId:F("user_id").notNull(),teamId:F("team_id").references(()=>x.id,{onDelete:"cascade"}).notNull(),role:Z("role").notNull().default("member"),createdAt:Te("created_at",{withTimezone:!0}).defaultNow()},e=>[yo({columns:[e.userId,e.teamId]})]);var o=pr("profiles",{id:To("id").primaryKey(),email:Ye("email"),displayName:Ye("display_name"),activeOrgId:To("active_org_id").references(()=>u.id,{onDelete:"set null"}),isSuperadmin:Io("is_superadmin").notNull().default(!1),claudeCodePlan:Ye("claude_code_plan"),planSource:Ye("plan_source").notNull().default("detected"),setupCompletedAt:jt("setup_completed_at",{withTimezone:!0}),liveSendSkipped:Io("live_send_skipped").notNull().default(!1),createdAt:jt("created_at",{withTimezone:!0}).defaultNow(),updatedAt:jt("updated_at",{withTimezone:!0}).defaultNow()});import{pgTable as gr,text as ne,timestamp as St,jsonb as bo,uuid as Xe,integer as vr,boolean as hr,index as Kt}from"drizzle-orm/pg-core";import{boolean as fr,jsonb as xr,pgTable as Et,primaryKey as zo,text as G,timestamp as Ae,uniqueIndex as kt,uuid as J}from"drizzle-orm/pg-core";import{sql as Nr}from"drizzle-orm";import{pgTable as wo,text as f,timestamp as we,jsonb as We,uuid as P,integer as Rt,boolean as _r,uniqueIndex as Ao,index as Qe}from"drizzle-orm/pg-core";var n=wo("instructions",{id:P("id").primaryKey().defaultRandom(),name:f("name").notNull(),description:f("description").notNull(),type:f("type").notNull().default("instruction"),scope:f("scope").notNull(),scopeRef:P("scope_ref"),version:f("version").notNull(),content:f("content").notNull(),frontmatter:We("frontmatter").notNull(),slots:We("slots"),tags:f("tags").array(),compatibility:f("compatibility").array(),createdBy:P("created_by"),createdAt:we("created_at",{withTimezone:!0}).defaultNow(),updatedAt:we("updated_at",{withTimezone:!0}).defaultNow(),archived:_r("archived").default(!1),archivedAt:we("archived_at",{withTimezone:!0}),archivedBy:P("archived_by"),forkedFromId:P("forked_from_id").references(()=>n.id,{onDelete:"set null"}),upstreamVersion:f("upstream_version"),badge:f("badge"),contentHash:f("content_hash"),contextIdentity:f("context_identity"),scanScore:Rt("scan_score"),scanFindings:We("scan_findings"),popularityScore:Rt("popularity_score"),sourceUpdatedAt:we("source_updated_at",{withTimezone:!0})},e=>[Ao("instructions_name_scope_ref_idx").on(e.name,e.scope,e.scopeRef),Qe("idx_instructions_scope").on(e.scope,e.scopeRef),Qe("idx_instructions_created_by").on(e.createdBy),Qe("idx_instructions_context_identity").on(e.createdBy,e.contextIdentity),Qe("idx_instructions_public_recency").on(e.scope,e.sourceUpdatedAt.desc())]),oe=wo("instruction_versions",{id:P("id").primaryKey().defaultRandom(),instructionId:P("instruction_id").references(()=>n.id,{onDelete:"cascade"}),versionNumber:Rt("version_number").notNull(),content:f("content").notNull(),frontmatter:We("frontmatter").notNull(),changeSummary:f("change_summary"),createdBy:P("created_by"),createdAt:we("created_at",{withTimezone:!0}).defaultNow()},e=>[Ao("instruction_versions_instruction_version_idx").on(e.instructionId,e.versionNumber)]);var r=Et("projects",{id:J("id").primaryKey().defaultRandom(),orgId:J("org_id").references(()=>u.id,{onDelete:"cascade"}),name:G("name").notNull(),description:G("description"),githubRepo:G("github_repo"),gitRemoteUrl:G("git_remote_url"),gitRootCommit:G("git_root_commit"),gitRemoteAliases:G("git_remote_aliases").array().notNull().default([]),metadata:xr("metadata"),createdBy:J("created_by"),createdAt:Ae("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Ae("updated_at",{withTimezone:!0}).defaultNow()},e=>[kt("projects_org_name_idx").on(e.orgId,e.name),kt("projects_git_remote_url_unique").on(e.gitRemoteUrl).where(Nr`${e.gitRemoteUrl} IS NOT NULL`)]),O=Et("project_instructions",{projectId:J("project_id").references(()=>r.id,{onDelete:"cascade"}).notNull(),instructionId:J("instruction_id").references(()=>n.id,{onDelete:"cascade"}).notNull(),addedAt:Ae("added_at",{withTimezone:!0}).defaultNow(),addedBy:J("added_by")},e=>[zo({columns:[e.projectId,e.instructionId]})]),Do=Et("project_checkouts",{projectId:J("project_id").references(()=>r.id,{onDelete:"cascade"}).notNull(),path:G("path").notNull(),isWorktree:fr("is_worktree").notNull().default(!1),firstSeen:Ae("first_seen",{withTimezone:!0}).notNull().defaultNow(),lastSeen:Ae("last_seen",{withTimezone:!0}).notNull().defaultNow()},e=>[zo({columns:[e.projectId,e.path]}),kt("project_checkouts_path_unique").on(e.path)]);var _=gr("agent_runs",{id:Xe("id").primaryKey().defaultRandom(),userId:Xe("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),orgId:Xe("org_id").references(()=>u.id,{onDelete:"set null"}),projectId:Xe("project_id").references(()=>r.id,{onDelete:"set null"}),projectPath:ne("project_path"),gitRemote:ne("git_remote"),baseBranch:ne("base_branch"),title:ne("title"),prompt:ne("prompt"),toolSpec:bo("tool_spec").notNull().default([]),autoWorktree:hr("auto_worktree").notNull().default(!0),status:ne("status").notNull().default("pending"),sessionCount:vr("session_count").notNull().default(0),metadata:bo("metadata").notNull().default({}),createdAt:St("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:St("updated_at",{withTimezone:!0}).notNull().defaultNow(),completedAt:St("completed_at",{withTimezone:!0})},e=>[Kt("idx_agent_runs_user").on(e.userId),Kt("idx_agent_runs_org_created").on(e.orgId,e.createdAt),Kt("idx_agent_runs_project").on(e.projectId)]);import{pgTable as Pt,text as g,timestamp as ze,jsonb as Y,uuid as z,integer as $e,uniqueIndex as jo,index as T}from"drizzle-orm/pg-core";var d=Pt("sessions",{id:z("id").primaryKey().defaultRandom(),userId:z("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),externalSessionId:g("external_session_id"),projectId:z("project_id").references(()=>r.id,{onDelete:"set null"}),orgId:z("org_id").references(()=>u.id,{onDelete:"set null"}),tool:g("tool").notNull(),projectPath:g("project_path"),gitBranch:g("git_branch"),startedAt:ze("started_at",{withTimezone:!0}).notNull(),endedAt:ze("ended_at",{withTimezone:!0}),eventCount:$e("event_count").default(0),tokenUsage:Y("token_usage"),analysis:Y("analysis"),analyzedAt:ze("analyzed_at",{withTimezone:!0}),analyzedEventCount:$e("analyzed_event_count"),analyzedTurnCount:$e("analyzed_turn_count"),metadata:Y("metadata").default({}),origin:g("origin").notNull().default("unknown"),runId:z("run_id").references(()=>_.id,{onDelete:"set null"}),model:g("model"),harnessVersion:g("harness_version"),createdAt:ze("created_at",{withTimezone:!0}).defaultNow()},e=>[T("idx_sessions_user").on(e.userId),T("idx_sessions_tool").on(e.tool),T("idx_sessions_started_at").on(e.startedAt),T("idx_sessions_project").on(e.projectId),T("idx_sessions_org_started_at").on(e.orgId,e.startedAt),T("idx_sessions_run").on(e.runId),jo("idx_sessions_user_external").on(e.userId,e.externalSessionId)]),re=Pt("session_events",{id:z("id").primaryKey().defaultRandom(),sessionId:z("session_id").notNull().references(()=>d.id,{onDelete:"cascade"}),sequence:$e("sequence").notNull(),eventType:g("event_type").notNull(),content:g("content"),toolName:g("tool_name"),toolInput:Y("tool_input"),toolOutput:Y("tool_output"),tokenUsage:Y("token_usage"),model:g("model"),timestamp:ze("timestamp",{withTimezone:!0}).notNull(),metadata:Y("metadata").default({})},e=>[jo("session_events_session_sequence_idx").on(e.sessionId,e.sequence),T("idx_session_events_session_id").on(e.sessionId),T("idx_session_events_event_type").on(e.eventType),T("idx_session_events_model").on(e.model)]),C=Pt("session_instructions",{sessionId:z("session_id").notNull().references(()=>d.id,{onDelete:"cascade"}),instructionId:z("instruction_id").notNull().references(()=>n.id,{onDelete:"cascade"}),linkMethod:g("link_method").notNull()},e=>[T("idx_session_instructions_instruction_id").on(e.instructionId)]);import{pgTable as yr,text as se,timestamp as Ot,uuid as De,integer as Ro,index as Ze}from"drizzle-orm/pg-core";var v=yr("memories",{id:De("id").primaryKey().defaultRandom(),userId:De("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),orgId:De("org_id"),projectId:De("project_id").references(()=>r.id,{onDelete:"set null"}),version:Ro("version").notNull().default(1),parentId:De("parent_id").references(()=>v.id,{onDelete:"set null"}),kind:se("kind").notNull(),title:se("title").notNull(),body:se("body").notNull(),source:se("source").notNull(),status:se("status").notNull().default("active"),trustClass:se("trust_class"),trustVersion:Ro("trust_version"),trustComputedAt:Ot("trust_computed_at",{withTimezone:!0}),createdAt:Ot("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:Ot("updated_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Ze("idx_memories_user").on(e.userId),Ze("idx_memories_project").on(e.projectId),Ze("idx_memories_parent").on(e.parentId),Ze("idx_memories_user_status").on(e.userId,e.status)]);import{pgTable as Ir,text as be,timestamp as Ct,uuid as qt,integer as ko,jsonb as Tr,index as Eo}from"drizzle-orm/pg-core";var So=Ir("memory_experiments",{id:qt("id").primaryKey().defaultRandom(),memoryId:qt("memory_id").notNull().references(()=>v.id,{onDelete:"cascade"}),userId:qt("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),memoryVersion:ko("memory_version").notNull().default(1),taskPrompt:be("task_prompt").notNull(),expectations:be("expectations").array().notNull().default([]),trials:ko("trials").notNull().default(10),model:be("model"),status:be("status").notNull().default("pending"),result:Tr("result").$type(),error:be("error"),createdAt:Ct("created_at",{withTimezone:!0}).notNull().defaultNow(),startedAt:Ct("started_at",{withTimezone:!0}),completedAt:Ct("completed_at",{withTimezone:!0})},e=>[Eo("idx_memory_experiments_memory").on(e.memoryId),Eo("idx_memory_experiments_user").on(e.userId)]);import{boolean as wr,date as Ar,index as Mt,integer as zr,jsonb as Dr,pgTable as Lt,text as h,timestamp as q,uniqueIndex as br,uuid as ie}from"drizzle-orm/pg-core";var Ko=Lt("announcements",{id:ie("id").primaryKey().defaultRandom(),version:h("version").notNull().unique(),releaseDate:Ar("release_date").notNull(),subject:h("subject").notNull(),htmlBody:h("html_body").notNull(),textBody:h("text_body").notNull(),sections:Dr("sections").notNull().default({}),status:h("status").notNull().default("draft"),recipientCount:zr("recipient_count"),sentAt:q("sent_at",{withTimezone:!0}),sentBy:ie("sent_by"),error:h("error"),createdAt:q("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:q("updated_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Mt("idx_announcements_status").on(e.status),Mt("idx_announcements_created").on(e.createdAt)]),Po=Lt("announcement_deliveries",{id:ie("id").primaryKey().defaultRandom(),announcementId:ie("announcement_id").notNull(),userId:ie("user_id").notNull(),email:h("email").notNull(),status:h("status").notNull().default("pending"),providerId:h("provider_id"),error:h("error"),sentAt:q("sent_at",{withTimezone:!0}),createdAt:q("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[br("uniq_announcement_deliveries_announcement_user").on(e.announcementId,e.userId),Mt("idx_announcement_deliveries_user").on(e.userId,e.createdAt)]),Oo=Lt("notification_preferences",{userId:ie("user_id").primaryKey(),productAnnouncements:wr("product_announcements").notNull().default(!0),unsubscribeToken:h("unsubscribe_token").notNull().unique(),unsubscribedAt:q("unsubscribed_at",{withTimezone:!0}),createdAt:q("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:q("updated_at",{withTimezone:!0}).notNull().defaultNow()});import{pgTable as jr,text as Bt,timestamp as et,uuid as tt,index as Co}from"drizzle-orm/pg-core";var D=jr("org_invitations",{id:tt("id").primaryKey().defaultRandom(),orgId:tt("org_id").notNull().references(()=>u.id,{onDelete:"cascade"}),email:Bt("email").notNull(),role:Bt("role").notNull().default("member"),teamId:tt("team_id").references(()=>x.id,{onDelete:"set null"}),invitedBy:tt("invited_by").notNull().references(()=>o.id),token:Bt("token").notNull().unique(),expiresAt:et("expires_at",{withTimezone:!0}).notNull(),acceptedAt:et("accepted_at",{withTimezone:!0}),revokedAt:et("revoked_at",{withTimezone:!0}),createdAt:et("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Co("idx_org_invitations_token").on(e.token),Co("idx_org_invitations_org").on(e.orgId)]);import{pgTable as Rr,text as kr,timestamp as Er,jsonb as Sr,uuid as Ut,index as qo}from"drizzle-orm/pg-core";var ae=Rr("instruction_events",{id:Ut("id").primaryKey().defaultRandom(),instructionId:Ut("instruction_id").notNull().references(()=>n.id,{onDelete:"cascade"}),eventType:kr("event_type").notNull(),actorId:Ut("actor_id").notNull(),metadata:Sr("metadata"),createdAt:Er("created_at",{withTimezone:!0}).defaultNow()},e=>[qo("idx_instruction_events_instruction").on(e.instructionId),qo("idx_instruction_events_type").on(e.eventType)]);import{pgTable as Mo,text as ot,timestamp as Lo,uuid as w,integer as Bo,index as de,unique as Kr}from"drizzle-orm/pg-core";var b=Mo("treatment_assignments",{id:w("id").primaryKey().defaultRandom(),userId:w("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),treatmentType:ot("treatment_type").notNull(),treatmentId:w("treatment_id").notNull(),treatmentVersion:Bo("treatment_version").notNull().default(1),projectId:w("project_id").references(()=>r.id,{onDelete:"set null"}),assignedBy:w("assigned_by").references(()=>o.id,{onDelete:"set null"}),method:ot("method").notNull(),assignedAt:Lo("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)]),j=Mo("treatment_exposures",{id:w("id").primaryKey().defaultRandom(),sessionId:w("session_id").notNull().references(()=>d.id,{onDelete:"cascade"}),userId:w("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),treatmentType:ot("treatment_type").notNull(),treatmentId:w("treatment_id").notNull(),treatmentVersion:Bo("treatment_version").notNull().default(1),assignmentId:w("assignment_id").references(()=>b.id,{onDelete:"set null"}),method:ot("method").notNull(),exposedAt:Lo("exposed_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Kr("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 Pr,text as Ht,timestamp as Or,uuid as nt,integer as Cr,index as Uo,uniqueIndex as qr}from"drizzle-orm/pg-core";var Ho=Pr("pending_treatment_exposures",{id:nt("id").primaryKey().defaultRandom(),userId:nt("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),externalSessionId:Ht("external_session_id").notNull(),treatmentType:Ht("treatment_type").notNull(),treatmentId:nt("treatment_id").notNull(),treatmentVersion:Cr("treatment_version").notNull().default(1),method:Ht("method").notNull().default("injected"),projectId:nt("project_id").references(()=>r.id,{onDelete:"set null"}),createdAt:Or("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[qr("pending_treatment_exposures_unique").on(e.externalSessionId,e.treatmentType,e.treatmentId,e.treatmentVersion),Uo("idx_pending_treatment_exposures_ext").on(e.externalSessionId),Uo("idx_pending_treatment_exposures_user").on(e.userId)]);import{pgTable as Mr,text as ue,timestamp as Vt,uuid as Ft,jsonb as Lr,uniqueIndex as Br,index as Vo}from"drizzle-orm/pg-core";var rt=Mr("session_terminal_targets",{id:Ft("id").primaryKey().defaultRandom(),userId:Ft("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),sessionId:Ft("session_id").references(()=>d.id,{onDelete:"set null"}),externalSessionId:ue("external_session_id"),kind:ue("kind").notNull(),target:ue("target").notNull(),status:ue("status").notNull().default("active"),attachCommand:ue("attach_command").notNull(),projectPath:ue("project_path"),metadata:Lr("metadata").notNull().default({}),lastSeenAt:Vt("last_seen_at",{withTimezone:!0}).defaultNow(),createdAt:Vt("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Vt("updated_at",{withTimezone:!0}).defaultNow()},e=>[Br("idx_session_terminal_targets_user_target").on(e.userId,e.target),Vo("idx_session_terminal_targets_session").on(e.sessionId),Vo("idx_session_terminal_targets_user_status").on(e.userId,e.status)]);import{boolean as Ur,index as st,jsonb as Fo,pgTable as Hr,text as Q,timestamp as je,uuid as it,integer as Vr}from"drizzle-orm/pg-core";var Go=Hr("session_send_jobs",{id:it("id").primaryKey().defaultRandom(),userId:it("user_id").notNull(),sessionId:it("session_id").notNull().references(()=>d.id,{onDelete:"cascade"}),terminalTargetId:it("terminal_target_id").references(()=>rt.id,{onDelete:"set null"}),target:Q("target").notNull(),message:Q("message").notNull(),submit:Ur("submit").notNull().default(!0),delivery:Q("delivery").notNull().default("live"),status:Q("status").notNull().default("pending"),result:Fo("result"),error:Q("error"),attempts:Vr("attempts").notNull().default(0),taskKind:Q("task_kind"),payload:Fo("payload"),claimedBy:Q("claimed_by"),claimedAt:je("claimed_at",{withTimezone:!0}),leaseExpiresAt:je("lease_expires_at",{withTimezone:!0}),createdAt:je("created_at",{withTimezone:!0}).defaultNow(),updatedAt:je("updated_at",{withTimezone:!0}).defaultNow(),completedAt:je("completed_at",{withTimezone:!0})},e=>[st("idx_session_send_jobs_user").on(e.userId),st("idx_session_send_jobs_session").on(e.sessionId),st("idx_session_send_jobs_status").on(e.status),st("idx_session_send_jobs_pending").on(e.userId,e.status)]);import{pgTable as Yo,text as W,timestamp as at,jsonb as Qo,uuid as M,integer as Fr,boolean as Gr,uniqueIndex as Jr,index as Jo,primaryKey as Yr}from"drizzle-orm/pg-core";var y=Yo("packs",{id:M("id").primaryKey().defaultRandom(),name:W("name").notNull(),description:W("description").notNull(),scope:W("scope").notNull(),scopeRef:M("scope_ref"),version:W("version").notNull().default("1.0.0"),tags:W("tags").array(),badge:W("badge"),metadata:Qo("metadata"),createdBy:M("created_by"),createdAt:at("created_at",{withTimezone:!0}).defaultNow(),updatedAt:at("updated_at",{withTimezone:!0}).defaultNow(),archived:Gr("archived").default(!1),archivedAt:at("archived_at",{withTimezone:!0}),archivedBy:M("archived_by"),forkedFromId:M("forked_from_id").references(()=>y.id,{onDelete:"set null"}),upstreamVersion:W("upstream_version")},e=>[Jr("packs_name_scope_ref_idx").on(e.name,e.scope,e.scopeRef),Jo("idx_packs_scope").on(e.scope,e.scopeRef),Jo("idx_packs_created_by").on(e.createdBy)]),L=Yo("pack_instructions",{packId:M("pack_id").references(()=>y.id,{onDelete:"cascade"}).notNull(),instructionId:M("instruction_id").references(()=>n.id,{onDelete:"cascade"}).notNull(),position:Fr("position").notNull().default(0),slotOverrides:Qo("slot_overrides"),addedAt:at("added_at",{withTimezone:!0}).defaultNow(),addedBy:M("added_by")},e=>[Yr({columns:[e.packId,e.instructionId]})]);import{pgTable as Qr,text as Gt,timestamp as Wr,jsonb as Xr,uuid as Jt,index as le}from"drizzle-orm/pg-core";var ce=Qr("instruction_usage_events",{id:Jt("id").primaryKey().defaultRandom(),instructionId:Jt("instruction_id").references(()=>n.id,{onDelete:"set null"}),userId:Jt("user_id").notNull(),surface:Gt("surface").notNull(),action:Gt("action").notNull(),metadata:Xr("metadata"),traceId:Gt("trace_id"),createdAt:Wr("created_at",{withTimezone:!0}).defaultNow()},e=>[le("idx_usage_events_instruction").on(e.instructionId),le("idx_usage_events_user").on(e.userId),le("idx_usage_events_surface").on(e.surface),le("idx_usage_events_action").on(e.action),le("idx_usage_events_created_at").on(e.createdAt),le("idx_usage_events_user_created").on(e.userId,e.createdAt)]);import{pgTable as $r,text as dt,timestamp as Wo,jsonb as Zr,uuid as Xo,index as Yt}from"drizzle-orm/pg-core";var $o=$r("worker_connections",{id:Xo("id").primaryKey().defaultRandom(),userId:Xo("user_id").notNull(),workerType:dt("worker_type").notNull().default("mcp"),clientName:dt("client_name").notNull(),clientVersion:dt("client_version"),workerVersion:dt("worker_version"),lastHeartbeat:Wo("last_heartbeat",{withTimezone:!0}).notNull().defaultNow(),connectedAt:Wo("connected_at",{withTimezone:!0}).notNull().defaultNow(),metadata:Zr("metadata")},e=>[Yt("idx_worker_connections_user").on(e.userId),Yt("idx_worker_connections_heartbeat").on(e.userId,e.lastHeartbeat),Yt("idx_worker_connections_type").on(e.userId,e.workerType)]);import{pgTable as es,text as ut,timestamp as ts,jsonb as os,uuid as Zo,index as en}from"drizzle-orm/pg-core";var tn=es("cli_setup_events",{id:Zo("id").primaryKey().defaultRandom(),userId:Zo("user_id").notNull(),deviceId:ut("device_id").notNull(),event:ut("event").notNull(),cliVersion:ut("cli_version"),os:ut("os"),props:os("props").notNull().default({}),createdAt:ts("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[en("idx_cli_setup_events_user").on(e.userId,e.createdAt),en("idx_cli_setup_events_device").on(e.deviceId,e.createdAt)]);import{pgTable as ns,text as X,integer as rs,boolean as ss,timestamp as is,jsonb as as,uuid as ds,index as on}from"drizzle-orm/pg-core";var nn=ns("cli_error_events",{id:ds("id").primaryKey().defaultRandom(),deviceId:X("device_id"),event:X("event").notNull(),command:X("command"),statusCode:rs("status_code"),message:X("message"),cliVersion:X("cli_version"),os:X("os"),nodeVersion:X("node_version"),proxied:ss("proxied"),props:as("props").notNull().default({}),createdAt:is("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[on("idx_cli_error_events_created").on(e.createdAt),on("idx_cli_error_events_device").on(e.deviceId,e.createdAt)]);import{pgTable as lt,text as R,timestamp as me,jsonb as A,uuid as I,integer as Re,index as k}from"drizzle-orm/pg-core";var s=lt("eval_targets",{id:I("id").primaryKey().defaultRandom(),userId:I("user_id").notNull(),name:R("name").notNull(),type:R("type").notNull(),content:R("content").notNull(),description:R("description").notNull().default(""),metadata:A("metadata").notNull().default({}),version:Re("version").notNull().default(1),parentId:I("parent_id").references(()=>s.id,{onDelete:"set null"}),createdAt:me("created_at",{withTimezone:!0}).defaultNow(),updatedAt:me("updated_at",{withTimezone:!0}).defaultNow()},e=>[k("eval_targets_name_user_idx").on(e.name,e.userId),k("idx_eval_targets_user").on(e.userId),k("idx_eval_targets_type").on(e.type),k("idx_eval_targets_parent").on(e.parentId)]),E=lt("evals",{id:I("id").primaryKey().defaultRandom(),evalTargetId:I("eval_target_id").notNull().references(()=>s.id,{onDelete:"cascade"}),name:R("name").notNull(),prompt:R("prompt").notNull(),expectedOutput:R("expected_output").notNull().default(""),files:A("files").notNull().default([]),expectations:A("expectations").notNull().default([]),createdAt:me("created_at",{withTimezone:!0}).defaultNow(),updatedAt:me("updated_at",{withTimezone:!0}).defaultNow()},e=>[k("idx_evals_target").on(e.evalTargetId)]),B=lt("eval_runs",{id:I("id").primaryKey().defaultRandom(),jobId:I("job_id"),evalId:I("eval_id").notNull().references(()=>E.id,{onDelete:"cascade"}),evalTargetId:I("eval_target_id").notNull().references(()=>s.id,{onDelete:"cascade"}),evalTargetVersion:Re("eval_target_version").notNull(),configuration:R("configuration").notNull(),runNumber:Re("run_number").notNull().default(1),iteration:Re("iteration").notNull().default(1),status:R("status").notNull().default("completed"),outputs:A("outputs").notNull().default({}),timing:A("timing").notNull().default({}),grading:A("grading").notNull().default({}),comparison:A("comparison"),createdAt:me("created_at",{withTimezone:!0}).defaultNow()},e=>[k("idx_eval_runs_eval").on(e.evalId),k("idx_eval_runs_target").on(e.evalTargetId),k("idx_eval_runs_iteration").on(e.evalTargetId,e.iteration)]),pe=lt("benchmarks",{id:I("id").primaryKey().defaultRandom(),evalTargetId:I("eval_target_id").notNull().references(()=>s.id,{onDelete:"cascade"}),iteration:Re("iteration").notNull().default(1),runSummary:A("run_summary").notNull().default({}),notes:A("notes").notNull().default([]),feedback:A("feedback"),createdAt:me("created_at",{withTimezone:!0}).defaultNow()},e=>[k("idx_benchmarks_target").on(e.evalTargetId)]);import{pgTable as sn,text as Qt,timestamp as Wt,jsonb as an,uuid as _e,integer as ke,index as ct,real as rn}from"drizzle-orm/pg-core";var fe=sn("trigger_evals",{id:_e("id").primaryKey().defaultRandom(),evalTargetId:_e("eval_target_id").notNull().references(()=>s.id,{onDelete:"cascade"}),userId:_e("user_id").notNull(),queries:an("queries").notNull().default([]),status:Qt("status").notNull().default("pending_review"),trainIndices:ke("train_indices").array().default([]),testIndices:ke("test_indices").array().default([]),createdAt:Wt("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Wt("updated_at",{withTimezone:!0}).defaultNow()},e=>[ct("idx_trigger_evals_target").on(e.evalTargetId),ct("idx_trigger_evals_user").on(e.userId)]),xe=sn("optimization_runs",{id:_e("id").primaryKey().defaultRandom(),evalTargetId:_e("eval_target_id").notNull().references(()=>s.id,{onDelete:"cascade"}),userId:_e("user_id").notNull(),type:Qt("type").notNull(),iteration:ke("iteration").notNull(),inputVersion:ke("input_version").notNull(),outputVersion:ke("output_version"),trainScore:rn("train_score"),testScore:rn("test_score"),analysis:an("analysis").notNull().default({}),status:Qt("status").notNull().default("running"),createdAt:Wt("created_at",{withTimezone:!0}).defaultNow()},e=>[ct("idx_optimization_runs_target").on(e.evalTargetId),ct("idx_optimization_runs_user").on(e.userId)]);import{pgTable as us,text as U,timestamp as ls,jsonb as Ee,uuid as Xt,integer as $t,real as cs,index as Se,uniqueIndex as dn}from"drizzle-orm/pg-core";var H=us("context_snapshots",{id:Xt("id").primaryKey().defaultRandom(),sessionId:Xt("session_id").references(()=>d.id,{onDelete:"cascade"}),userId:Xt("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),sequence:$t("sequence").notNull().default(0),provider:U("provider").notNull(),model:U("model").notNull(),systemPrompt:U("system_prompt").notNull(),injectedInstructions:Ee("injected_instructions").notNull().default([]),messagesSummary:Ee("messages_summary").notNull(),tools:Ee("tools").notNull().default([]),systemHash:U("system_hash").notNull(),requestHash:U("request_hash").notNull().default(""),toolsHash:U("tools_hash"),injectedHash:U("injected_hash"),messagesDelta:Ee("messages_delta").default([]),messagesDeltaRef:U("messages_delta_ref"),maxTokens:$t("max_tokens"),temperature:cs("temperature"),estimatedTokens:$t("estimated_tokens"),capturedAt:ls("captured_at",{withTimezone:!0}).notNull().defaultNow(),metadata:Ee("metadata").default({})},e=>[Se("idx_context_snapshots_session").on(e.sessionId),Se("idx_context_snapshots_user").on(e.userId),Se("idx_context_snapshots_hash").on(e.systemHash),Se("idx_context_snapshots_request_hash").on(e.requestHash),dn("idx_snapshots_session_request").on(e.sessionId,e.requestHash),dn("idx_snapshots_session_sequence").on(e.sessionId,e.sequence),Se("idx_context_snapshots_user_session_captured").on(e.userId,e.sessionId,e.capturedAt.desc())]);import{pgTable as ms,text as un,timestamp as ps,jsonb as _s,integer as fs,index as xs}from"drizzle-orm/pg-core";var ln=ms("content_blobs",{hash:un("hash").primaryKey(),contentType:un("content_type").notNull(),content:_s("content").notNull(),sizeBytes:fs("size_bytes").notNull().default(0),createdAt:ps("created_at",{withTimezone:!0}).defaultNow()},e=>[xs("idx_content_blobs_type").on(e.contentType)]);import{pgTable as Ns,text as mt,timestamp as Ke,jsonb as pt,uuid as Zt,index as _t,integer as gs}from"drizzle-orm/pg-core";var Ne=Ns("eval_jobs",{id:Zt("id").primaryKey().defaultRandom(),userId:Zt("user_id").notNull(),evalTargetId:Zt("eval_target_id").notNull().references(()=>s.id,{onDelete:"cascade"}),status:mt("status").notNull().default("pending"),config:pt("config").notNull().default({}),progress:pt("progress").notNull().default({}),result:pt("result"),error:mt("error"),attempts:gs("attempts").notNull().default(0),taskKind:mt("task_kind"),payload:pt("payload"),claimedBy:mt("claimed_by"),claimedAt:Ke("claimed_at",{withTimezone:!0}),leaseExpiresAt:Ke("lease_expires_at",{withTimezone:!0}),createdAt:Ke("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Ke("updated_at",{withTimezone:!0}).defaultNow(),completedAt:Ke("completed_at",{withTimezone:!0})},e=>[_t("idx_eval_jobs_user").on(e.userId),_t("idx_eval_jobs_target").on(e.evalTargetId),_t("idx_eval_jobs_status").on(e.status),_t("idx_eval_jobs_pending").on(e.userId,e.status)]);import{pgTable as vs,text as Pe,timestamp as Oe,jsonb as cn,uuid as mn,integer as hs,index as pn}from"drizzle-orm/pg-core";var _n=vs("agent_jobs",{id:mn("id").primaryKey().defaultRandom(),userId:mn("user_id").notNull(),taskKind:Pe("task_kind").notNull(),status:Pe("status").notNull().default("pending"),payload:cn("payload").notNull(),dedupeKey:Pe("dedupe_key"),result:cn("result"),error:Pe("error"),attempts:hs("attempts").notNull().default(0),claimedBy:Pe("claimed_by"),claimedAt:Oe("claimed_at",{withTimezone:!0}),leaseExpiresAt:Oe("lease_expires_at",{withTimezone:!0}),createdAt:Oe("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:Oe("updated_at",{withTimezone:!0}).notNull().defaultNow(),completedAt:Oe("completed_at",{withTimezone:!0})},e=>[pn("idx_agent_jobs_claim").on(e.userId,e.status,e.taskKind,e.createdAt),pn("idx_agent_jobs_dedupe").on(e.userId,e.taskKind,e.dedupeKey)]);import{pgTable as ys,text as Ce,timestamp as qe,jsonb as ft,uuid as eo,index as xt,integer as Is}from"drizzle-orm/pg-core";var fn=ys("insights_jobs",{id:eo("id").primaryKey().defaultRandom(),userId:eo("user_id").notNull(),status:Ce("status").notNull().default("pending"),projectPath:Ce("project_path"),projectId:eo("project_id").references(()=>r.id,{onDelete:"set null"}),config:ft("config").notNull().default({}),progress:ft("progress").notNull().default({}),result:ft("result"),error:Ce("error"),attempts:Is("attempts").notNull().default(0),taskKind:Ce("task_kind"),payload:ft("payload"),claimedBy:Ce("claimed_by"),claimedAt:qe("claimed_at",{withTimezone:!0}),leaseExpiresAt:qe("lease_expires_at",{withTimezone:!0}),createdAt:qe("created_at",{withTimezone:!0}).defaultNow(),updatedAt:qe("updated_at",{withTimezone:!0}).defaultNow(),completedAt:qe("completed_at",{withTimezone:!0})},e=>[xt("idx_insights_jobs_user").on(e.userId),xt("idx_insights_jobs_status").on(e.status),xt("idx_insights_jobs_pending").on(e.userId,e.status),xt("idx_insights_jobs_project").on(e.projectId)]);import{pgTable as Ts,text as to,timestamp as Nt,uuid as xn,index as ws,uniqueIndex as As}from"drizzle-orm/pg-core";var ge=Ts("api_keys",{id:xn("id").primaryKey().defaultRandom(),userId:xn("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),name:to("name").notNull(),keyHash:to("key_hash").notNull(),keyPrefix:to("key_prefix").notNull(),lastUsedAt:Nt("last_used_at",{withTimezone:!0}),expiresAt:Nt("expires_at",{withTimezone:!0}),revokedAt:Nt("revoked_at",{withTimezone:!0}),createdAt:Nt("created_at",{withTimezone:!0}).defaultNow()},e=>[ws("idx_api_keys_user").on(e.userId),As("idx_api_keys_hash").on(e.keyHash)]);import{pgTable as zs,text as oo,timestamp as Nn,uuid as Ds,index as bs}from"drizzle-orm/pg-core";var gn=zs("extension_auth_codes",{code:oo("code").primaryKey(),userId:Ds("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),editor:oo("editor"),email:oo("email"),expiresAt:Nn("expires_at",{withTimezone:!0}).notNull(),createdAt:Nn("created_at",{withTimezone:!0}).defaultNow()},e=>[bs("idx_ext_auth_codes_expiry").on(e.expiresAt)]);import{pgTable as js,text as Rs,timestamp as vn,jsonb as ks,uuid as no,index as hn}from"drizzle-orm/pg-core";var ve=js("eval_conversations",{id:no("id").primaryKey().defaultRandom(),evalTargetId:no("eval_target_id").notNull().references(()=>s.id,{onDelete:"cascade"}),userId:no("user_id").notNull(),messages:ks("messages").notNull().default([]),status:Rs("status").notNull().default("active"),createdAt:vn("created_at",{withTimezone:!0}).defaultNow(),updatedAt:vn("updated_at",{withTimezone:!0}).defaultNow()},e=>[hn("idx_eval_conversations_target").on(e.evalTargetId),hn("idx_eval_conversations_user").on(e.userId)]);import{pgTable as Es,text as S,timestamp as yn,jsonb as Ss,uuid as ro}from"drizzle-orm/pg-core";var In=Es("skill_submissions",{id:ro("id").primaryKey().defaultRandom(),skillId:S("skill_id").notNull(),name:S("name").notNull(),description:S("description").notNull(),category:S("category").notNull(),tools:S("tools").array().notNull(),tags:S("tags").array().default([]),content:S("content").notNull(),status:S("status").notNull().default("pending"),submittedBy:ro("submitted_by").notNull(),reviewedBy:ro("reviewed_by"),reviewNote:S("review_note"),metadata:Ss("metadata"),createdAt:yn("created_at",{withTimezone:!0}).defaultNow(),updatedAt:yn("updated_at",{withTimezone:!0}).defaultNow()});import{pgTable as Ks,text as Me,timestamp as Tn,jsonb as Ps,uuid as Os,uniqueIndex as Cs,index as wn}from"drizzle-orm/pg-core";var An=Ks("harness_releases",{id:Os("id").primaryKey().defaultRandom(),harness:Me("harness").notNull(),version:Me("version").notNull(),publishedAt:Tn("published_at",{withTimezone:!0}).notNull(),title:Me("title"),body:Me("body"),categories:Ps("categories").default({}),url:Me("url"),createdAt:Tn("created_at",{withTimezone:!0}).defaultNow()},e=>[Cs("idx_harness_releases_unique").on(e.harness,e.version),wn("idx_harness_releases_harness").on(e.harness),wn("idx_harness_releases_published").on(e.publishedAt)]);import{pgTable as qs,text as he,timestamp as zn,jsonb as Ms,uuid as Dn,index as bn,uniqueIndex as Ls}from"drizzle-orm/pg-core";var so=qs("notifications",{id:Dn("id").primaryKey().defaultRandom(),userId:Dn("user_id").notNull(),type:he("type").notNull(),title:he("title").notNull(),body:he("body"),url:he("url"),sourceTable:he("source_table"),sourceId:he("source_id"),metadata:Ms("metadata").notNull().default({}),readAt:zn("read_at",{withTimezone:!0}),createdAt:zn("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[bn("idx_notifications_user_created").on(e.userId,e.createdAt),bn("idx_notifications_user_unread").on(e.userId),Ls("idx_notifications_source_dedup").on(e.userId,e.sourceTable,e.sourceId)]);import{pgTable as Bs,text as Le,timestamp as Be,jsonb as io,uuid as ao,index as gt,integer as Us}from"drizzle-orm/pg-core";var ye=Bs("launch_jobs",{id:ao("id").primaryKey().defaultRandom(),userId:ao("user_id").notNull(),tool:Le("tool").notNull(),status:Le("status").notNull().default("pending"),config:io("config").notNull().default({}),result:io("result"),error:Le("error"),attempts:Us("attempts").notNull().default(0),taskKind:Le("task_kind"),payload:io("payload"),claimedBy:Le("claimed_by"),claimedAt:Be("claimed_at",{withTimezone:!0}),leaseExpiresAt:Be("lease_expires_at",{withTimezone:!0}),createdAt:Be("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Be("updated_at",{withTimezone:!0}).defaultNow(),completedAt:Be("completed_at",{withTimezone:!0}),runId:ao("run_id").references(()=>_.id,{onDelete:"set null"})},e=>[gt("idx_launch_jobs_user").on(e.userId),gt("idx_launch_jobs_status").on(e.status),gt("idx_launch_jobs_pending").on(e.userId,e.status),gt("idx_launch_jobs_run").on(e.runId)]);import{pgTable as jn,uuid as K,text as Ue,real as Hs,timestamp as vt,boolean as Vs,uniqueIndex as Fs,index as He}from"drizzle-orm/pg-core";var uo=jn("instruction_suggestions",{id:K("id").primaryKey().defaultRandom(),userId:K("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),instructionId:K("instruction_id").notNull().references(()=>n.id,{onDelete:"cascade"}),projectPath:Ue("project_path").notNull(),projectId:K("project_id").references(()=>r.id,{onDelete:"set null"}),score:Hs("score").notNull(),reason:Ue("reason").notNull(),generatedAt:vt("generated_at",{withTimezone:!0}).notNull().defaultNow(),isStale:Vs("is_stale").notNull().default(!1),dismissedAt:vt("dismissed_at",{withTimezone:!0}),acceptedAt:vt("accepted_at",{withTimezone:!0}),promotedToInstructionId:K("promoted_to_instruction_id").references(()=>n.id,{onDelete:"set null"})},e=>[Fs("idx_instruction_suggestions_user_project_instruction").on(e.userId,e.projectPath,e.instructionId),He("idx_instruction_suggestions_user_project").on(e.userId,e.projectPath),He("idx_instruction_suggestions_user_proj_id").on(e.userId,e.projectId),He("idx_instruction_suggestions_generated_at").on(e.generatedAt)]),Rn=jn("instruction_suggestion_events",{id:K("id").primaryKey().defaultRandom(),suggestionId:K("suggestion_id").notNull().references(()=>uo.id,{onDelete:"cascade"}),userId:K("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),eventType:Ue("event_type").notNull(),tool:Ue("tool"),sessionId:K("session_id"),projectPath:Ue("project_path").notNull(),createdAt:vt("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[He("idx_instruction_suggestion_events_suggestion_id").on(e.suggestionId),He("idx_instruction_suggestion_events_user_id").on(e.userId)]);import{pgTable as Gs,text as lo,integer as Js,numeric as Ve,timestamp as co,index as Ys,primaryKey as Qs}from"drizzle-orm/pg-core";var kn=Gs("model_pricing",{provider:lo("provider").notNull(),modelId:lo("model_id").notNull(),inputPerM:Ve("input_per_m").notNull(),outputPerM:Ve("output_per_m").notNull(),cacheReadPerM:Ve("cache_read_per_m").notNull(),cacheWrite5mPerM:Ve("cache_write_5m_per_m").notNull(),cacheWrite1hPerM:Ve("cache_write_1h_per_m").notNull(),contextWindow:Js("context_window"),effectiveFrom:co("effective_from",{withTimezone:!0}).notNull(),effectiveUntil:co("effective_until",{withTimezone:!0}),source:lo("source").notNull(),verifiedAt:co("verified_at",{withTimezone:!0})},e=>[Qs({columns:[e.provider,e.modelId,e.effectiveFrom]}),Ys("idx_model_pricing_active").on(e.provider,e.modelId,e.effectiveFrom.desc())]);import{pgTable as Ws,text as $,numeric as En,timestamp as Sn,uuid as Kn,jsonb as Xs,index as Pn}from"drizzle-orm/pg-core";var On=Ws("limit_observations",{id:Kn("id").primaryKey().defaultRandom(),observedAt:Sn("observed_at",{withTimezone:!0}).notNull().defaultNow(),provider:$("provider").notNull(),plan:$("plan").notNull(),limitType:$("limit_type").notNull(),value:En("value").notNull(),unit:$("unit").notNull(),comparator:$("comparator").notNull().default("="),resetsAt:Sn("resets_at",{withTimezone:!0}),sourceType:$("source_type").notNull(),sourceUrl:$("source_url"),sourceEvidence:Xs("source_evidence"),confidence:En("confidence").notNull(),userId:Kn("user_id")},e=>[Pn("idx_limit_obs_lookup").on(e.provider,e.plan,e.limitType,e.observedAt.desc()),Pn("idx_limit_obs_user").on(e.userId,e.observedAt.desc())]);import{pgTable as $s,text as ht,timestamp as Zs,uuid as ei,jsonb as ti,boolean as oi,uniqueIndex as ni}from"drizzle-orm/pg-core";var Cn=$s("provider_docs_snapshots",{id:ei("id").primaryKey().defaultRandom(),fetchedAt:Zs("fetched_at",{withTimezone:!0}).notNull().defaultNow(),provider:ht("provider").notNull(),docUrl:ht("doc_url").notNull(),contentHash:ht("content_hash").notNull(),content:ht("content").notNull(),parseSuccess:oi("parse_success").notNull(),parseErrors:ti("parse_errors")},e=>[ni("idx_docs_dedup").on(e.provider,e.docUrl,e.contentHash)]);import{pgTable as ri,text as yt,numeric as qn,timestamp as Mn,uuid as si,primaryKey as ii,index as ai}from"drizzle-orm/pg-core";var Ln=ri("plan_limits_active",{provider:yt("provider").notNull(),plan:yt("plan").notNull(),limitType:yt("limit_type").notNull(),value:qn("value").notNull(),unit:yt("unit").notNull(),effectiveFrom:Mn("effective_from",{withTimezone:!0}).notNull(),effectiveUntil:Mn("effective_until",{withTimezone:!0}),confidence:qn("confidence").notNull(),sourceObservationIds:si("source_observation_ids").array().notNull()},e=>[ii({columns:[e.provider,e.plan,e.limitType,e.effectiveFrom]}),ai("idx_plan_limits_lookup").on(e.provider,e.plan,e.limitType,e.effectiveFrom.desc())]);import{pgTable as di,text as mo,timestamp as ui,uuid as Bn,jsonb as li,index as ci}from"drizzle-orm/pg-core";var Un=di("alert_dispatches",{id:Bn("id").primaryKey().defaultRandom(),userId:Bn("user_id").notNull(),alertKey:mo("alert_key").notNull(),severity:mo("severity").notNull(),lastDispatchedAt:ui("last_dispatched_at",{withTimezone:!0}).notNull().defaultNow(),lastState:li("last_state").notNull(),channel:mo("channel").notNull()},e=>[ci("idx_alert_user_key").on(e.userId,e.alertKey,e.lastDispatchedAt.desc())]);import{drizzle as Jn}from"drizzle-orm/postgres-js";import Yn from"postgres";var It={};mr(It,{agentJobs:()=>_n,agentRuns:()=>_,agentRunsRelations:()=>zi,alertDispatches:()=>Un,announcementDeliveries:()=>Po,announcements:()=>Ko,apiKeys:()=>ge,apiKeysRelations:()=>pi,benchmarks:()=>pe,benchmarksRelations:()=>qi,cliErrorEvents:()=>nn,cliSetupEvents:()=>tn,contentBlobs:()=>ln,contextSnapshots:()=>H,contextSnapshotsRelations:()=>Hi,evalConversations:()=>ve,evalConversationsRelations:()=>Ui,evalJobs:()=>Ne,evalJobsRelations:()=>Bi,evalRuns:()=>B,evalRunsRelations:()=>Ci,evalTargets:()=>s,evalTargetsRelations:()=>Pi,evals:()=>E,evalsRelations:()=>Oi,extensionAuthCodes:()=>gn,harnessReleases:()=>An,insightsJobs:()=>fn,instructionEvents:()=>ae,instructionEventsRelations:()=>hi,instructionSuggestionEvents:()=>Rn,instructionSuggestions:()=>uo,instructionUsageEvents:()=>ce,instructionUsageEventsRelations:()=>Ki,instructionVersions:()=>oe,instructionVersionsRelations:()=>Ii,instructions:()=>n,instructionsRelations:()=>vi,launchJobs:()=>ye,launchJobsRelations:()=>Di,limitObservations:()=>On,memories:()=>v,memoriesRelations:()=>yi,memoryExperiments:()=>So,modelPricing:()=>kn,notificationPreferences:()=>Oo,notifications:()=>so,optimizationRuns:()=>xe,optimizationRunsRelations:()=>Li,orgInvitations:()=>D,orgInvitationsRelations:()=>xi,organizations:()=>u,organizationsRelations:()=>_i,packInstructions:()=>L,packInstructionsRelations:()=>Si,packs:()=>y,packsRelations:()=>Ei,pendingTreatmentExposures:()=>Ho,planLimitsActive:()=>Ln,profiles:()=>o,profilesRelations:()=>mi,projectCheckouts:()=>Do,projectInstructions:()=>O,projectInstructionsRelations:()=>wi,projects:()=>r,projectsRelations:()=>Ti,providerDocsSnapshots:()=>Cn,sessionEvents:()=>re,sessionEventsRelations:()=>bi,sessionInstructions:()=>C,sessionInstructionsRelations:()=>ji,sessionSendJobs:()=>Go,sessionTerminalTargets:()=>rt,sessions:()=>d,sessionsRelations:()=>Ai,skillSubmissions:()=>In,teams:()=>x,teamsRelations:()=>fi,treatmentAssignments:()=>b,treatmentAssignmentsRelations:()=>Ri,treatmentExposures:()=>j,treatmentExposuresRelations:()=>ki,triggerEvals:()=>fe,triggerEvalsRelations:()=>Mi,userOrganizations:()=>ee,userOrganizationsRelations:()=>Ni,userTeams:()=>te,userTeamsRelations:()=>gi,workerConnections:()=>$o});import{relations as i}from"drizzle-orm";var mi=i(o,({many:e})=>({sessions:e(d),contextSnapshots:e(H),apiKeys:e(ge)})),pi=i(ge,({one:e})=>({profile:e(o,{fields:[ge.userId],references:[o.id]})})),_i=i(u,({many:e})=>({teams:e(x),userOrganizations:e(ee),projects:e(r),invitations:e(D)})),fi=i(x,({one:e,many:t})=>({organization:e(u,{fields:[x.orgId],references:[u.id]}),userTeams:t(te),invitations:t(D)})),xi=i(D,({one:e})=>({organization:e(u,{fields:[D.orgId],references:[u.id]}),team:e(x,{fields:[D.teamId],references:[x.id]}),inviter:e(o,{fields:[D.invitedBy],references:[o.id]})})),Ni=i(ee,({one:e})=>({organization:e(u,{fields:[ee.orgId],references:[u.id]})})),gi=i(te,({one:e})=>({team:e(x,{fields:[te.teamId],references:[x.id]})})),vi=i(n,({one:e,many:t})=>({versions:t(oe),projectInstructions:t(O),events:t(ae),usageEvents:t(ce),sessionInstructions:t(C),packInstructions:t(L),forkedFrom:e(n,{fields:[n.forkedFromId],references:[n.id]})})),hi=i(ae,({one:e})=>({instruction:e(n,{fields:[ae.instructionId],references:[n.id]})})),yi=i(v,({one:e,many:t})=>({project:e(r,{fields:[v.projectId],references:[r.id]}),parent:e(v,{fields:[v.parentId],references:[v.id]}),versions:t(v)})),Ii=i(oe,({one:e})=>({instruction:e(n,{fields:[oe.instructionId],references:[n.id]})})),Ti=i(r,({one:e,many:t})=>({organization:e(u,{fields:[r.orgId],references:[u.id]}),projectInstructions:t(O),sessions:t(d)})),wi=i(O,({one:e})=>({project:e(r,{fields:[O.projectId],references:[r.id]}),instruction:e(n,{fields:[O.instructionId],references:[n.id]})})),Ai=i(d,({one:e,many:t})=>({profile:e(o,{fields:[d.userId],references:[o.id]}),project:e(r,{fields:[d.projectId],references:[r.id]}),run:e(_,{fields:[d.runId],references:[_.id]}),events:t(re),sessionInstructions:t(C),treatmentExposures:t(j),contextSnapshots:t(H)})),zi=i(_,({one:e,many:t})=>({profile:e(o,{fields:[_.userId],references:[o.id]}),organization:e(u,{fields:[_.orgId],references:[u.id]}),project:e(r,{fields:[_.projectId],references:[r.id]}),sessions:t(d),launchJobs:t(ye)})),Di=i(ye,({one:e})=>({run:e(_,{fields:[ye.runId],references:[_.id]})})),bi=i(re,({one:e})=>({session:e(d,{fields:[re.sessionId],references:[d.id]})})),ji=i(C,({one:e})=>({session:e(d,{fields:[C.sessionId],references:[d.id]}),instruction:e(n,{fields:[C.instructionId],references:[n.id]})})),Ri=i(b,({one:e,many:t})=>({owner:e(o,{fields:[b.userId],references:[o.id]}),project:e(r,{fields:[b.projectId],references:[r.id]}),exposures:t(j)})),ki=i(j,({one:e})=>({session:e(d,{fields:[j.sessionId],references:[d.id]}),owner:e(o,{fields:[j.userId],references:[o.id]}),assignment:e(b,{fields:[j.assignmentId],references:[b.id]})})),Ei=i(y,({one:e,many:t})=>({packInstructions:t(L),forkedFrom:e(y,{fields:[y.forkedFromId],references:[y.id]})})),Si=i(L,({one:e})=>({pack:e(y,{fields:[L.packId],references:[y.id]}),instruction:e(n,{fields:[L.instructionId],references:[n.id]})})),Ki=i(ce,({one:e})=>({instruction:e(n,{fields:[ce.instructionId],references:[n.id]})})),Pi=i(s,({one:e,many:t})=>({parent:e(s,{fields:[s.parentId],references:[s.id]}),evals:t(E),evalRuns:t(B),benchmarks:t(pe),triggerEvals:t(fe),optimizationRuns:t(xe),evalJobs:t(Ne),evalConversations:t(ve)})),Oi=i(E,({one:e,many:t})=>({evalTarget:e(s,{fields:[E.evalTargetId],references:[s.id]}),runs:t(B)})),Ci=i(B,({one:e})=>({eval:e(E,{fields:[B.evalId],references:[E.id]}),evalTarget:e(s,{fields:[B.evalTargetId],references:[s.id]})})),qi=i(pe,({one:e})=>({evalTarget:e(s,{fields:[pe.evalTargetId],references:[s.id]})})),Mi=i(fe,({one:e})=>({evalTarget:e(s,{fields:[fe.evalTargetId],references:[s.id]})})),Li=i(xe,({one:e})=>({evalTarget:e(s,{fields:[xe.evalTargetId],references:[s.id]})})),Bi=i(Ne,({one:e})=>({evalTarget:e(s,{fields:[Ne.evalTargetId],references:[s.id]})})),Ui=i(ve,({one:e})=>({evalTarget:e(s,{fields:[ve.evalTargetId],references:[s.id]})})),Hi=i(H,({one:e})=>({session:e(d,{fields:[H.sessionId],references:[d.id]}),profile:e(o,{fields:[H.userId],references:[o.id]})}));var Fe=0,Hn=0,Ge=0,Vn=0;var Vi=0;function po(){Fe++,Fe>Hn&&(Hn=Fe)}m(po,"trackDbOpStart");function _o(){Fe>0&&Fe--}m(_o,"trackDbOpEnd");function fo(){Ge++,Ge>Vn&&(Vn=Ge)}m(fo,"trackHeavyDbOpStart");function xo(){Ge>0&&Ge--}m(xo,"trackHeavyDbOpEnd");function Fn(){Vi++}m(Fn,"recordQueryDeadline");var wt,zt,No=!1,Tt;var Gn,Dt,At;function Qn(e){let t=process.env[e];if(!t)throw new Error(`Missing required env var: ${e}`);return t}m(Qn,"getEnv");function Wn(){if(No)throw new Error("getDb() called after closeDb(): the connection pool is closed for shutdown. Stop issuing queries (timers/requests) before draining the pool.");if(!wt){let e=process.env.PG_APPLICATION_NAME||"rulemetric",t=Number(process.env.PG_POOL_MAX)||3,a=Number(process.env.PG_CONNECT_TIMEOUT_S)||10,l=Number(process.env.PG_STATEMENT_TIMEOUT_MS)||0,c=Number(process.env.PG_IDLE_TIMEOUT)||5,p=Number(process.env.PG_KEEP_ALIVE_S)||60;zt=Yn(Qn("DATABASE_URL"),{prepare:!1,max:t,connect_timeout:a,idle_timeout:c,keep_alive:p,max_lifetime:300,connection:{application_name:e,...l>0?{statement_timeout:l}:{}}}),wt=Jn(zt,{schema:It})}return wt}m(Wn,"getDb");function Xn(){if(No)throw new Error("getHeavyDb() called after closeDb(): the connection pool is closed for shutdown. Stop issuing queries (timers/requests) before draining the pool.");if(!At){let e=(process.env.PG_APPLICATION_NAME||"rulemetric")+":heavy",t=Number(process.env.PG_HEAVY_POOL_MAX)||2;Dt=Yn(Qn("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}}),At=Jn(Dt,{schema:It})}return At}m(Xn,"getHeavyDb");async function Fi(){if(Tt)return Tt;No=!0;let e=zt,t=Gn,a=Dt;return zt=void 0,wt=void 0,Gn=void 0,Dt=void 0,At=void 0,Tt=Promise.allSettled([e?e.end({timeout:5}):Promise.resolve(),t?t.end({timeout:5}):Promise.resolve(),a?a.end({timeout:5}):Promise.resolve()]).then(()=>{}),Tt}m(Fi,"closeDb");var Gi=new Set(["CONNECT_TIMEOUT","ETIMEDOUT","ENOTFOUND","ECONNREFUSED","EAI_AGAIN"]);function $n(e){let t=e,a=t?.code??t?.cause?.code??t?.errno;return a!==void 0&&Gi.has(a)}m($n,"isRetryableConnectError");var Ji=new Set(["CONNECTION_CLOSED","ECONNRESET","EPIPE"]);function Zn(e){let t=e,a=t?.code??t?.cause?.code??t?.errno;return a!==void 0&&Ji.has(a)}m(Zn,"isRetryableResetError");async function er(e,t={}){let a=t.attempts??3,l=t.baseMs??100,c;for(let p=0;p<a;p++)try{return await e()}catch(N){c=N;let Ie=$n(N)||t.retryResets===!0&&Zn(N);if(p===a-1||!Ie)throw N;await new Promise(V=>setTimeout(V,l*2**p))}throw c}m(er,"withDbRetry");var bt=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 tr(){let e=Number(process.env.PG_QUERY_DEADLINE_MS);return Number.isFinite(e)&&e>=0?e:2e4}m(tr,"queryDeadlineMs");function Yi(e,t){let a,l=new Promise((c,p)=>{a=setTimeout(()=>{Fn(),p(new bt(t))},t);let N=a;typeof N.unref=="function"&&N.unref()});return Promise.race([e,l]).finally(()=>clearTimeout(a))}m(Yi,"raceWithDeadline");var or=new Set(["select","selectDistinct","selectDistinctOn","insert","update","delete","execute","with","$count","refreshMaterializedView"]),nr=new Set(["select","selectDistinct","selectDistinctOn","$count"]);function go(e,t=!1,a=0,l=!1){return e===null||typeof e!="object"&&typeof e!="function"?e:new Proxy(e,{get(c,p,N){if(p==="then"){let V=Reflect.get(c,p,N);return typeof V!="function"?V:(ir,ar)=>{let dr=l?fo:po,ur=l?xo:_o;dr();let vo=er(()=>new Promise((lr,cr)=>V.call(c,lr,cr)),{retryResets:t});return(a>0?Yi(vo,a):vo).finally(ur).then(ir,ar)}}let Ie=Reflect.get(c,p,N);return typeof Ie=="function"?(...V)=>go(Ie.apply(c,V),t,a,l):Ie}})}m(go,"wrapBuilder");function rr(e,t=!1){let a=t?fo:po,l=t?xo:_o;a();try{return Promise.resolve(e()).finally(l)}catch(c){throw l(),c}}m(rr,"gaugeTransaction");var sr=new Proxy({},{get(e,t){let a=Wn(),l=a[t];if(typeof t=="string"&&or.has(t)&&typeof l=="function"){let c=nr.has(t),p=tr();return(...N)=>go(l.apply(a,N),c,p)}return t==="transaction"&&typeof l=="function"?(...c)=>rr(()=>l.apply(a,c)):l}}),Qi=new Proxy({},{get(e,t){let a=Xn(),l=a[t];if(typeof t=="string"&&or.has(t)&&typeof l=="function"){let c=nr.has(t);return(...p)=>go(l.apply(a,p),c,0,!0)}return t==="transaction"&&typeof l=="function"?(...c)=>rr(()=>l.apply(a,c),!0):l}});export{o as a,_ as b,d as c,re as d,v as e,So as f,Ko as g,Po as h,Oo as i,Wn as j,Fi as k};