@rulemetric/cli 0.7.19 → 0.7.20
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.
- package/dist/{chunk-PI2VYOU7.js → chunk-25C5P7BF.js} +1 -1
- package/dist/{chunk-6KU6UUYJ.js → chunk-4SFXTUFE.js} +1 -1
- package/dist/{chunk-FKW6PVDG.js → chunk-65TC72MN.js} +1 -1
- package/dist/{chunk-45VWQP4J.js → chunk-CC4HVDUK.js} +1 -1
- package/dist/{chunk-RCI5MTZP.js → chunk-EL5M4MAQ.js} +1 -1
- package/dist/{chunk-EBSMTI3X.js → chunk-EXUPWAVK.js} +1 -1
- package/dist/{chunk-ECHJ4MBP.js → chunk-J66PBCNP.js} +1 -1
- package/dist/chunk-KXW3IWKQ.js +1 -0
- package/dist/{chunk-O3C5IV2Y.js → chunk-KYDATXAB.js} +1 -1
- package/dist/{chunk-5WY2WM4K.js → chunk-O2UOCI3Q.js} +1 -1
- package/dist/{chunk-357YFS2K.js → chunk-P6HUBBOD.js} +1 -1
- package/dist/{chunk-DCLWFGEA.js → chunk-SJGLRC2R.js} +1 -1
- package/dist/chunk-VNYMMINL.js +29 -0
- package/dist/{chunk-P3O2OMGC.js → chunk-XFNAFWWW.js} +1 -1
- package/dist/{chunk-46IYYFYR.js → chunk-XY4AK3TR.js} +1 -1
- package/dist/{chunk-KC7IOPF6.js → chunk-YL3T4367.js} +1 -1
- package/dist/{chunk-SONOLG6I.js → chunk-YLVPZ3BS.js} +1 -1
- package/dist/commands/evals/agent.js +1 -1
- package/dist/commands/evals/benchmark.js +1 -1
- package/dist/commands/evals/optimize.js +1 -1
- package/dist/commands/evals/refine-cases.js +6 -0
- package/dist/dashboard/Dashboard.js +1 -1
- package/dist/dashboard/launcher/LauncherOverlay.js +1 -1
- package/dist/lib/agent-loop.js +1 -1
- package/dist/lib/eval-benchmark.js +1 -1
- package/dist/lib/eval-case-generator.js +1 -1
- package/dist/lib/eval-conversation-handler.js +1 -1
- package/dist/lib/handlers/cron-suggest-instructions.js +1 -1
- package/dist/lib/handlers/distill-memories.js +1 -1
- package/dist/lib/handlers/process-announcement.js +1 -1
- package/dist/lib/handlers/process-changelog.js +1 -1
- package/dist/lib/handlers/process-conversation.js +1 -1
- package/dist/lib/handlers/process-eval.js +1 -1
- package/dist/lib/handlers/process-memory-ab.js +1 -1
- package/dist/lib/handlers/process-run-cleanup.js +1 -1
- package/dist/lib/handlers/process-session-goal.js +1 -1
- package/dist/lib/manual-tasks.js +1 -1
- package/dist/lib/optimize-compare.js +1 -1
- package/oclif.manifest.json +56 -1
- package/package.json +4 -4
- package/dist/chunk-5XP7WWJR.js +0 -20
- package/dist/chunk-AP4TQRZJ.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as L}from"./chunk-TIOKY2IA.js";import{a as
|
|
1
|
+
import{c as L}from"./chunk-TIOKY2IA.js";import{a as H}from"./chunk-EXUPWAVK.js";import{a as S}from"./chunk-RSKQRVPJ.js";import{a as A}from"./chunk-XY4AK3TR.js";import{b as y}from"./chunk-J66PBCNP.js";import{a as T}from"./chunk-O2UOCI3Q.js";import{a as E}from"./chunk-65TC72MN.js";import{a as b}from"./chunk-YL3T4367.js";import{a as h}from"./chunk-HDU5QPEO.js";import{b as I}from"./chunk-W2MOTOQE.js";import{b as w}from"./chunk-5RBLIVBF.js";import{a as R}from"./chunk-4SFXTUFE.js";import{a as M}from"./chunk-KAF3CYRW.js";import{a as k}from"./chunk-UF6US7VU.js";import{a as v}from"./chunk-KYDATXAB.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 +1 @@
|
|
|
1
|
-
import{e as u,f as t,j as x}from"./chunk-
|
|
1
|
+
import{e as u,f as t,j as x}from"./chunk-KXW3IWKQ.js";import{a as E}from"./chunk-IL35G6CK.js";import{a as A}from"./chunk-EL5M4MAQ.js";import{b as P}from"./chunk-WQ2BJQYB.js";import{a as f}from"./chunk-ZLLER3HP.js";import{eq as s}from"drizzle-orm";var v=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[D,M]=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:v(D),withoutScore:v(M),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=A(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{a as i}from"./chunk-
|
|
1
|
+
import{a as i}from"./chunk-CC4HVDUK.js";import{h as s}from"./chunk-H2ORWIEY.js";import{a as n}from"./chunk-ZLLER3HP.js";async function l(a,c){let{mirrorId:g,evalTargetId:p,config:r}=a,e=n(o=>c.logger.info(o),"log");await i(r,p,e);let t={type:"conversation",conversationId:r.conversationId};return await s(`/api/eval-jobs/${g}/state`,{result:t}).catch(o=>{e(`result persist failed: ${o instanceof Error?o.message:String(o)}`)}),t}n(l,"processConversation");export{l as a};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{b as $}from"./chunk-VNYMMINL.js";import{a as C}from"./chunk-GQRCSR2A.js";import{a as y}from"./chunk-IL35G6CK.js";import{b as f}from"./chunk-WQ2BJQYB.js";import{e as h,f as w}from"./chunk-H2ORWIEY.js";import{a as v}from"./chunk-ZLLER3HP.js";async function N(n,i,p){let{conversationId:a,messageId:g,messageContent:r}=n,o=await h(`/api/eval-targets/${i}`),c=await h(`/api/eval-targets/${i}/evals`),e=await h(`/api/eval-conversations/${a}/messages`),t=e.findIndex(l=>l.id===g);if(t>=0&&e.slice(t+1).some(u=>u.role==="assistant"&&(u.type==="results"||u.type==="proposal"||u.type==="generated"||u.type==="text"))){p(`Message ${g} already processed \u2014 skipping (idempotency guard)`);return}let s=v(async(l,u,m)=>{await w(`/api/eval-conversations/${a}/messages/assistant`,{content:l,type:u,data:m})},"postMessage"),d=await _(o,c,e,r,p);p(`Action: ${d.action}`);try{switch(d.action){case"run_evals":await x(o,c,a,s,p);break;case"generate_cases":await k(o,i,a,s,p);break;case"analyze_results":case"propose_changes":await E(o,c,e,r,a,s,p);break;case"respond":await s(d.response,"text");break}}catch(l){let u=l instanceof Error?l.message:String(l);throw await s(`Something went wrong: ${u}`,"text").catch(()=>{}),l}}v(N,"processConversationJob");async function _(n,i,p,a,g){let r=p.slice(-10).map(e=>`${e.role}: ${e.content.slice(0,200)}`).join(`
|
|
2
2
|
`),o=`You are an eval assistant. Decide what action to take based on the user's message.
|
|
3
3
|
|
|
4
4
|
## Current State
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as r}from"./chunk-ZLLER3HP.js";function g(e,o){let t=e,i=o,n=t+i;if(n===0)return{pValue:1,nDiscordant:0};let s=Math.min(t,i),d=Math.pow(.5,n),a=d;for(let c=1;c<=s;c++)d*=(n-c+1)/c,a+=d;return{pValue:Math.min(1,2*a),nDiscordant:n}}r(g,"mcnemarExact");function w(e,o,t=10){return{sufficient:e>=t&&o>=t,minN:t,nWith:e,nWithout:o,shortfall:{with:Math.max(0,t-e),without:Math.max(0,t-o)}}}r(w,"assessSufficiency");function R(e){let o=e>>>0;return()=>{o=o+1831565813|0;let t=Math.imul(o^o>>>15,1|o);return t=t+Math.imul(t^t>>>7,61|t)^t,((t^t>>>14)>>>0)/4294967296}}r(R,"mulberry32");function M(e,o){let t=e.length;if(t===1)return e[0];let i=(t-1)*o,n=Math.floor(i),s=Math.ceil(i);return n===s?e[n]:e[n]+(i-n)*(e[s]-e[n])}r(M,"sortedQuantile");function x(e,o={}){let t=e.length;if(t===0)return{estimate:0,lower:0,upper:0,iterations:0};let i=o.iterations??1e4,n=o.ciLevel??.95,s=R(o.seed??1),d=e.reduce((u,f)=>u+f,0)/t,a=new Array(i);for(let u=0;u<i;u++){let f=0;for(let h=0;h<t;h++)f+=e[s()*t|0];a[u]=f/t}a.sort((u,f)=>u-f);let c=(1-n)/2;return{estimate:d,lower:M(a,c),upper:M(a,1-c),iterations:i}}r(x,"pairedBootstrapCI");var
|
|
1
|
+
import{a as r}from"./chunk-ZLLER3HP.js";function g(e,o){let t=e,i=o,n=t+i;if(n===0)return{pValue:1,nDiscordant:0};let s=Math.min(t,i),d=Math.pow(.5,n),a=d;for(let c=1;c<=s;c++)d*=(n-c+1)/c,a+=d;return{pValue:Math.min(1,2*a),nDiscordant:n}}r(g,"mcnemarExact");function w(e,o,t=10){return{sufficient:e>=t&&o>=t,minN:t,nWith:e,nWithout:o,shortfall:{with:Math.max(0,t-e),without:Math.max(0,t-o)}}}r(w,"assessSufficiency");function R(e){let o=e>>>0;return()=>{o=o+1831565813|0;let t=Math.imul(o^o>>>15,1|o);return t=t+Math.imul(t^t>>>7,61|t)^t,((t^t>>>14)>>>0)/4294967296}}r(R,"mulberry32");function M(e,o){let t=e.length;if(t===1)return e[0];let i=(t-1)*o,n=Math.floor(i),s=Math.ceil(i);return n===s?e[n]:e[n]+(i-n)*(e[s]-e[n])}r(M,"sortedQuantile");function x(e,o={}){let t=e.length;if(t===0)return{estimate:0,lower:0,upper:0,iterations:0};let i=o.iterations??1e4,n=o.ciLevel??.95,s=R(o.seed??1),d=e.reduce((u,f)=>u+f,0)/t,a=new Array(i);for(let u=0;u<i;u++){let f=0;for(let h=0;h<t;h++)f+=e[s()*t|0];a[u]=f/t}a.sort((u,f)=>u-f);let c=(1-n)/2;return{estimate:d,lower:M(a,c),upper:M(a,1-c),iterations:i}}r(x,"pairedBootstrapCI");var v=r(e=>e===0||e===1,"isBinary");function _(e,o,t){return e.every(n=>n[o]!=null&&n[t]!=null)?e.reduce((n,s)=>n+(s[o]-s[t]),0)/e.length:null}r(_,"meanPairDelta");function $(e,o={}){let t=o.baseline??"no-rule",i=o.minN??10,n=e.length,s=e.map(l=>l.withScore-l.withoutScore),d=n===0?0:s.reduce((l,m)=>l+m,0)/n,a=x(s,{seed:o.seed,iterations:o.iterations}),c={lower:a.lower,upper:a.upper},u=e.every(l=>v(l.withScore)&&v(l.withoutScore)),f=null;if(u&&n>0){let l=0,m=0;for(let p of e)p.withScore===1&&p.withoutScore===0?l++:p.withScore===0&&p.withoutScore===1&&m++;f=g(l,m).pValue}let{sufficient:h}=w(n,n,i),E=c.lower>0||c.upper<0,b={mode:"controlled",baseline:t,delta:d,ci:c,pValue:f,significant:h&&E,sufficient:h,nWith:n,nWithout:n,costDelta:_(e,"withCost","withoutCost"),latencyDelta:_(e,"withLatency","withoutLatency"),confounded:!1};return h||(b.insufficientReason=`insufficient data: need >= ${i} paired tasks per cohort, have ${n}`),b}r($,"buildControlledVerdict");export{$ 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-
|
|
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-KXW3IWKQ.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};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as I,c as i,d as r,e as a,j as M}from"./chunk-
|
|
1
|
+
import{a as I,c as i,d as r,e as a,j as M}from"./chunk-KXW3IWKQ.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
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as m,c as yr}from"./chunk-ZLLER3HP.js";import{boolean as Ao,pgTable as Tr,text as Qe,timestamp as Rt,uuid as zo}from"drizzle-orm/pg-core";import{pgTable as Ye,text as te,timestamp as Ae,jsonb as To,uuid as J,primaryKey as wo}from"drizzle-orm/pg-core";var u=Ye("organizations",{id:J("id").primaryKey().defaultRandom(),name:te("name").unique().notNull(),slug:te("slug").unique().notNull(),metadata:To("metadata"),createdAt:Ae("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Ae("updated_at",{withTimezone:!0}).defaultNow()}),v=Ye("teams",{id:J("id").primaryKey().defaultRandom(),orgId:J("org_id").references(()=>u.id,{onDelete:"cascade"}),name:te("name").notNull(),slug:te("slug").notNull(),metadata:To("metadata"),createdAt:Ae("created_at",{withTimezone:!0}).defaultNow()}),oe=Ye("user_organizations",{userId:J("user_id").notNull(),orgId:J("org_id").references(()=>u.id,{onDelete:"cascade"}).notNull(),role:te("role").notNull().default("member"),createdAt:Ae("created_at",{withTimezone:!0}).defaultNow()},e=>[wo({columns:[e.userId,e.orgId]})]),ne=Ye("user_teams",{userId:J("user_id").notNull(),teamId:J("team_id").references(()=>v.id,{onDelete:"cascade"}).notNull(),role:te("role").notNull().default("member"),createdAt:Ae("created_at",{withTimezone:!0}).defaultNow()},e=>[wo({columns:[e.userId,e.teamId]})]);var o=Tr("profiles",{id:zo("id").primaryKey(),email:Qe("email"),displayName:Qe("display_name"),activeOrgId:zo("active_org_id").references(()=>u.id,{onDelete:"set null"}),isSuperadmin:Ao("is_superadmin").notNull().default(!1),claudeCodePlan:Qe("claude_code_plan"),planSource:Qe("plan_source").notNull().default("detected"),setupCompletedAt:Rt("setup_completed_at",{withTimezone:!0}),liveSendSkipped:Ao("live_send_skipped").notNull().default(!1),createdAt:Rt("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Rt("updated_at",{withTimezone:!0}).defaultNow()});import{pgTable as jr,text as se,timestamp as St,jsonb as bo,uuid as Xe,integer as Rr,boolean as kr,index as Kt}from"drizzle-orm/pg-core";import{boolean as Ar,jsonb as zr,pgTable as Et,primaryKey as Ro,text as Y,timestamp as De,uniqueIndex as bt,uuid as Q}from"drizzle-orm/pg-core";import{sql as Dr}from"drizzle-orm";import{pgTable as Do,text as N,timestamp as ze,jsonb as We,uuid as C,integer as kt,boolean as wr,uniqueIndex as jo,index as $e}from"drizzle-orm/pg-core";var r=Do("instructions",{id:C("id").primaryKey().defaultRandom(),name:N("name").notNull(),description:N("description").notNull(),type:N("type").notNull().default("instruction"),scope:N("scope").notNull(),scopeRef:C("scope_ref"),version:N("version").notNull(),content:N("content").notNull(),frontmatter:We("frontmatter").notNull(),slots:We("slots"),tags:N("tags").array(),compatibility:N("compatibility").array(),createdBy:C("created_by"),createdAt:ze("created_at",{withTimezone:!0}).defaultNow(),updatedAt:ze("updated_at",{withTimezone:!0}).defaultNow(),archived:wr("archived").default(!1),archivedAt:ze("archived_at",{withTimezone:!0}),archivedBy:C("archived_by"),forkedFromId:C("forked_from_id").references(()=>r.id,{onDelete:"set null"}),upstreamVersion:N("upstream_version"),badge:N("badge"),contentHash:N("content_hash"),contextIdentity:N("context_identity"),scanScore:kt("scan_score"),scanFindings:We("scan_findings"),popularityScore:kt("popularity_score"),sourceUpdatedAt:ze("source_updated_at",{withTimezone:!0})},e=>[jo("instructions_name_scope_ref_idx").on(e.name,e.scope,e.scopeRef),$e("idx_instructions_scope").on(e.scope,e.scopeRef),$e("idx_instructions_created_by").on(e.createdBy),$e("idx_instructions_context_identity").on(e.createdBy,e.contextIdentity),$e("idx_instructions_public_recency").on(e.scope,e.sourceUpdatedAt.desc())]),re=Do("instruction_versions",{id:C("id").primaryKey().defaultRandom(),instructionId:C("instruction_id").references(()=>r.id,{onDelete:"cascade"}),versionNumber:kt("version_number").notNull(),content:N("content").notNull(),frontmatter:We("frontmatter").notNull(),changeSummary:N("change_summary"),createdBy:C("created_by"),createdAt:ze("created_at",{withTimezone:!0}).defaultNow()},e=>[jo("instruction_versions_instruction_version_idx").on(e.instructionId,e.versionNumber)]);var s=Et("projects",{id:Q("id").primaryKey().defaultRandom(),orgId:Q("org_id").references(()=>u.id,{onDelete:"cascade"}),name:Y("name").notNull(),description:Y("description"),githubRepo:Y("github_repo"),gitRemoteUrl:Y("git_remote_url"),gitRootCommit:Y("git_root_commit"),gitRemoteAliases:Y("git_remote_aliases").array().notNull().default([]),metadata:zr("metadata"),createdBy:Q("created_by"),createdAt:De("created_at",{withTimezone:!0}).defaultNow(),updatedAt:De("updated_at",{withTimezone:!0}).defaultNow()},e=>[bt("projects_org_name_idx").on(e.orgId,e.name),bt("projects_git_remote_url_unique").on(e.gitRemoteUrl).where(Dr`${e.gitRemoteUrl} IS NOT NULL`)]),q=Et("project_instructions",{projectId:Q("project_id").references(()=>s.id,{onDelete:"cascade"}).notNull(),instructionId:Q("instruction_id").references(()=>r.id,{onDelete:"cascade"}).notNull(),addedAt:De("added_at",{withTimezone:!0}).defaultNow(),addedBy:Q("added_by")},e=>[Ro({columns:[e.projectId,e.instructionId]})]),ko=Et("project_checkouts",{projectId:Q("project_id").references(()=>s.id,{onDelete:"cascade"}).notNull(),path:Y("path").notNull(),isWorktree:Ar("is_worktree").notNull().default(!1),firstSeen:De("first_seen",{withTimezone:!0}).notNull().defaultNow(),lastSeen:De("last_seen",{withTimezone:!0}).notNull().defaultNow()},e=>[Ro({columns:[e.projectId,e.path]}),bt("project_checkouts_path_unique").on(e.path)]);var x=jr("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(()=>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:kr("auto_worktree").notNull().default(!0),status:se("status").notNull().default("pending"),sessionCount:Rr("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 I,timestamp as je,jsonb as $,uuid as R,integer as Ze,uniqueIndex as Eo,index as z}from"drizzle-orm/pg-core";var d=Pt("sessions",{id:R("id").primaryKey().defaultRandom(),userId:R("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),externalSessionId:I("external_session_id"),projectId:R("project_id").references(()=>s.id,{onDelete:"set null"}),orgId:R("org_id").references(()=>u.id,{onDelete:"set null"}),tool:I("tool").notNull(),projectPath:I("project_path"),gitBranch:I("git_branch"),startedAt:je("started_at",{withTimezone:!0}).notNull(),endedAt:je("ended_at",{withTimezone:!0}),eventCount:Ze("event_count").default(0),tokenUsage:$("token_usage"),analysis:$("analysis"),analyzedAt:je("analyzed_at",{withTimezone:!0}),analyzedEventCount:Ze("analyzed_event_count"),analyzedTurnCount:Ze("analyzed_turn_count"),metadata:$("metadata").default({}),origin:I("origin").notNull().default("unknown"),runId:R("run_id").references(()=>x.id,{onDelete:"set null"}),model:I("model"),harnessVersion:I("harness_version"),createdAt:je("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),Eo("idx_sessions_user_external").on(e.userId,e.externalSessionId)]),ie=Pt("session_events",{id:R("id").primaryKey().defaultRandom(),sessionId:R("session_id").notNull().references(()=>d.id,{onDelete:"cascade"}),sequence:Ze("sequence").notNull(),eventType:I("event_type").notNull(),content:I("content"),toolName:I("tool_name"),toolInput:$("tool_input"),toolOutput:$("tool_output"),tokenUsage:$("token_usage"),model:I("model"),timestamp:je("timestamp",{withTimezone:!0}).notNull(),metadata:$("metadata").default({})},e=>[Eo("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)]),M=Pt("session_instructions",{sessionId:R("session_id").notNull().references(()=>d.id,{onDelete:"cascade"}),instructionId:R("instruction_id").notNull().references(()=>r.id,{onDelete:"cascade"}),linkMethod:I("link_method").notNull()},e=>[z("idx_session_instructions_instruction_id").on(e.instructionId)]);import{pgTable as br,text as ae,timestamp as Ot,uuid as Re,integer as So,index as et}from"drizzle-orm/pg-core";var y=br("memories",{id:Re("id").primaryKey().defaultRandom(),userId:Re("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),orgId:Re("org_id"),projectId:Re("project_id").references(()=>s.id,{onDelete:"set null"}),version:So("version").notNull().default(1),parentId:Re("parent_id").references(()=>y.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:So("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 Er,text as ke,timestamp as Ct,uuid as qt,integer as Ko,jsonb as Sr,index as Po}from"drizzle-orm/pg-core";var Oo=Er("memory_experiments",{id:qt("id").primaryKey().defaultRandom(),memoryId:qt("memory_id").notNull().references(()=>y.id,{onDelete:"cascade"}),userId:qt("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),memoryVersion:Ko("memory_version").notNull().default(1),taskPrompt:ke("task_prompt").notNull(),expectations:ke("expectations").array().notNull().default([]),trials:Ko("trials").notNull().default(10),model:ke("model"),status:ke("status").notNull().default("pending"),result:Sr("result").$type(),error:ke("error"),createdAt:Ct("created_at",{withTimezone:!0}).notNull().defaultNow(),startedAt:Ct("started_at",{withTimezone:!0}),completedAt:Ct("completed_at",{withTimezone:!0})},e=>[Po("idx_memory_experiments_memory").on(e.memoryId),Po("idx_memory_experiments_user").on(e.userId)]);import{boolean as Kr,date as Pr,index as Mt,integer as Or,jsonb as Cr,pgTable as Lt,text as w,timestamp as L,uniqueIndex as qr,uuid as de}from"drizzle-orm/pg-core";var Co=Lt("announcements",{id:de("id").primaryKey().defaultRandom(),version:w("version").notNull().unique(),releaseDate:Pr("release_date").notNull(),subject:w("subject").notNull(),htmlBody:w("html_body").notNull(),textBody:w("text_body").notNull(),sections:Cr("sections").notNull().default({}),status:w("status").notNull().default("draft"),recipientCount:Or("recipient_count"),sentAt:L("sent_at",{withTimezone:!0}),sentBy:de("sent_by"),error:w("error"),createdAt:L("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:L("updated_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Mt("idx_announcements_status").on(e.status),Mt("idx_announcements_created").on(e.createdAt)]),qo=Lt("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:L("sent_at",{withTimezone:!0}),createdAt:L("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[qr("uniq_announcement_deliveries_announcement_user").on(e.announcementId,e.userId),Mt("idx_announcement_deliveries_user").on(e.userId,e.createdAt)]),Mo=Lt("notification_preferences",{userId:de("user_id").primaryKey(),productAnnouncements:Kr("product_announcements").notNull().default(!0),unsubscribeToken:w("unsubscribe_token").notNull().unique(),unsubscribedAt:L("unsubscribed_at",{withTimezone:!0}),createdAt:L("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:L("updated_at",{withTimezone:!0}).notNull().defaultNow()});import{pgTable as Mr,text as Bt,timestamp as tt,uuid as ot,index as Lo}from"drizzle-orm/pg-core";var k=Mr("org_invitations",{id:ot("id").primaryKey().defaultRandom(),orgId:ot("org_id").notNull().references(()=>u.id,{onDelete:"cascade"}),email:Bt("email").notNull(),role:Bt("role").notNull().default("member"),teamId:ot("team_id").references(()=>v.id,{onDelete:"set null"}),invitedBy:ot("invited_by").notNull().references(()=>o.id),token:Bt("token").notNull().unique(),expiresAt:tt("expires_at",{withTimezone:!0}).notNull(),acceptedAt:tt("accepted_at",{withTimezone:!0}),revokedAt:tt("revoked_at",{withTimezone:!0}),createdAt:tt("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Lo("idx_org_invitations_token").on(e.token),Lo("idx_org_invitations_org").on(e.orgId)]);import{pgTable as Lr,text as Br,timestamp as Ur,jsonb as Hr,uuid as Ut,index as Bo}from"drizzle-orm/pg-core";var ue=Lr("instruction_events",{id:Ut("id").primaryKey().defaultRandom(),instructionId:Ut("instruction_id").notNull().references(()=>r.id,{onDelete:"cascade"}),eventType:Br("event_type").notNull(),actorId:Ut("actor_id").notNull(),metadata:Hr("metadata"),createdAt:Ur("created_at",{withTimezone:!0}).defaultNow()},e=>[Bo("idx_instruction_events_instruction").on(e.instructionId),Bo("idx_instruction_events_type").on(e.eventType)]);import{pgTable as Uo,text as nt,timestamp as Ho,uuid as D,integer as Vo,index as le,unique as Vr}from"drizzle-orm/pg-core";var b=Uo("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:Vo("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:Ho("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)]),E=Uo("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:Vo("treatment_version").notNull().default(1),assignmentId:D("assignment_id").references(()=>b.id,{onDelete:"set null"}),method:nt("method").notNull(),exposedAt:Ho("exposed_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Vr("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 Fr,text as Ht,timestamp as Gr,uuid as rt,integer as Jr,index as Fo,uniqueIndex as Yr}from"drizzle-orm/pg-core";var Go=Fr("pending_treatment_exposures",{id:rt("id").primaryKey().defaultRandom(),userId:rt("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),externalSessionId:Ht("external_session_id").notNull(),treatmentType:Ht("treatment_type").notNull(),treatmentId:rt("treatment_id").notNull(),treatmentVersion:Jr("treatment_version").notNull().default(1),method:Ht("method").notNull().default("injected"),projectId:rt("project_id").references(()=>s.id,{onDelete:"set null"}),createdAt:Gr("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Yr("pending_treatment_exposures_unique").on(e.externalSessionId,e.treatmentType,e.treatmentId,e.treatmentVersion),Fo("idx_pending_treatment_exposures_ext").on(e.externalSessionId),Fo("idx_pending_treatment_exposures_user").on(e.userId)]);import{pgTable as Qr,text as ce,timestamp as Vt,uuid as Ft,jsonb as $r,uniqueIndex as Wr,index as Jo}from"drizzle-orm/pg-core";var st=Qr("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:$r("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=>[Wr("idx_session_terminal_targets_user_target").on(e.userId,e.target),Jo("idx_session_terminal_targets_session").on(e.sessionId),Jo("idx_session_terminal_targets_user_status").on(e.userId,e.status)]);import{boolean as Xr,index as it,jsonb as Yo,pgTable as Zr,text as W,timestamp as be,uuid as at,integer as es}from"drizzle-orm/pg-core";var Qo=Zr("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:W("target").notNull(),message:W("message").notNull(),submit:Xr("submit").notNull().default(!0),delivery:W("delivery").notNull().default("live"),status:W("status").notNull().default("pending"),result:Yo("result"),error:W("error"),attempts:es("attempts").notNull().default(0),taskKind:W("task_kind"),payload:Yo("payload"),claimedBy:W("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})},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 Wo,text as X,timestamp as dt,jsonb as Xo,uuid as B,integer as ts,boolean as os,uniqueIndex as ns,index as $o,primaryKey as rs}from"drizzle-orm/pg-core";var A=Wo("packs",{id:B("id").primaryKey().defaultRandom(),name:X("name").notNull(),description:X("description").notNull(),scope:X("scope").notNull(),scopeRef:B("scope_ref"),version:X("version").notNull().default("1.0.0"),tags:X("tags").array(),badge:X("badge"),metadata:Xo("metadata"),createdBy:B("created_by"),createdAt:dt("created_at",{withTimezone:!0}).defaultNow(),updatedAt:dt("updated_at",{withTimezone:!0}).defaultNow(),archived:os("archived").default(!1),archivedAt:dt("archived_at",{withTimezone:!0}),archivedBy:B("archived_by"),forkedFromId:B("forked_from_id").references(()=>A.id,{onDelete:"set null"}),upstreamVersion:X("upstream_version")},e=>[ns("packs_name_scope_ref_idx").on(e.name,e.scope,e.scopeRef),$o("idx_packs_scope").on(e.scope,e.scopeRef),$o("idx_packs_created_by").on(e.createdBy)]),U=Wo("pack_instructions",{packId:B("pack_id").references(()=>A.id,{onDelete:"cascade"}).notNull(),instructionId:B("instruction_id").references(()=>r.id,{onDelete:"cascade"}).notNull(),position:ts("position").notNull().default(0),slotOverrides:Xo("slot_overrides"),addedAt:dt("added_at",{withTimezone:!0}).defaultNow(),addedBy:B("added_by")},e=>[rs({columns:[e.packId,e.instructionId]})]);import{pgTable as ss,text as Gt,timestamp as is,jsonb as as,uuid as Jt,index as me}from"drizzle-orm/pg-core";var pe=ss("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:as("metadata"),traceId:Gt("trace_id"),createdAt:is("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 ds,text as ut,timestamp as Zo,jsonb as us,uuid as en,index as Yt}from"drizzle-orm/pg-core";var tn=ds("worker_connections",{id:en("id").primaryKey().defaultRandom(),userId:en("user_id").notNull(),workerType:ut("worker_type").notNull().default("mcp"),clientName:ut("client_name").notNull(),clientVersion:ut("client_version"),workerVersion:ut("worker_version"),lastHeartbeat:Zo("last_heartbeat",{withTimezone:!0}).notNull().defaultNow(),connectedAt:Zo("connected_at",{withTimezone:!0}).notNull().defaultNow(),metadata:us("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 ls,text as lt,timestamp as cs,jsonb as ms,uuid as on,index as nn}from"drizzle-orm/pg-core";var rn=ls("cli_setup_events",{id:on("id").primaryKey().defaultRandom(),userId:on("user_id").notNull(),deviceId:lt("device_id").notNull(),event:lt("event").notNull(),cliVersion:lt("cli_version"),os:lt("os"),props:ms("props").notNull().default({}),createdAt:cs("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[nn("idx_cli_setup_events_user").on(e.userId,e.createdAt),nn("idx_cli_setup_events_device").on(e.deviceId,e.createdAt)]);import{pgTable as ps,text as Z,integer as _s,boolean as fs,timestamp as xs,jsonb as gs,uuid as Ns,index as sn}from"drizzle-orm/pg-core";var an=ps("cli_error_events",{id:Ns("id").primaryKey().defaultRandom(),deviceId:Z("device_id"),event:Z("event").notNull(),command:Z("command"),statusCode:_s("status_code"),message:Z("message"),cliVersion:Z("cli_version"),os:Z("os"),nodeVersion:Z("node_version"),proxied:fs("proxied"),props:gs("props").notNull().default({}),createdAt:xs("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[sn("idx_cli_error_events_created").on(e.createdAt),sn("idx_cli_error_events_device").on(e.deviceId,e.createdAt)]);import{sql as vs}from"drizzle-orm";import{pgTable as _e,text as _,timestamp as j,jsonb as T,uuid as p,integer as H,boolean as dn,index as g,unique as hs}from"drizzle-orm/pg-core";var n=_e("eval_targets",{id:p("id").primaryKey().defaultRandom(),userId:p("user_id").notNull(),name:_("name").notNull(),type:_("type").notNull(),content:_("content").notNull(),description:_("description").notNull().default(""),metadata:T("metadata").notNull().default({}),version:H("version").notNull().default(1),parentId:p("parent_id").references(()=>n.id,{onDelete:"set null"}),createdAt:j("created_at",{withTimezone:!0}).defaultNow(),updatedAt:j("updated_at",{withTimezone:!0}).defaultNow()},e=>[g("eval_targets_name_user_idx").on(e.name,e.userId),g("idx_eval_targets_user").on(e.userId),g("idx_eval_targets_type").on(e.type),g("idx_eval_targets_parent").on(e.parentId)]),S=_e("evals",{id:p("id").primaryKey().defaultRandom(),evalTargetId:p("eval_target_id").notNull().references(()=>n.id,{onDelete:"cascade"}),name:_("name").notNull(),prompt:_("prompt").notNull(),expectedOutput:_("expected_output").notNull().default(""),files:T("files").notNull().default([]),expectations:T("expectations").notNull().default([]),retiredAt:j("retired_at",{withTimezone:!0}),retiredReason:_("retired_reason"),createdAt:j("created_at",{withTimezone:!0}).defaultNow(),updatedAt:j("updated_at",{withTimezone:!0}).defaultNow()},e=>[g("idx_evals_target").on(e.evalTargetId),g("idx_evals_target_active").on(e.evalTargetId).where(vs`${e.retiredAt} IS NULL`)]),K=_e("eval_runs",{id:p("id").primaryKey().defaultRandom(),jobId:p("job_id"),evalId:p("eval_id").notNull().references(()=>S.id,{onDelete:"cascade"}),evalTargetId:p("eval_target_id").notNull().references(()=>n.id,{onDelete:"cascade"}),evalTargetVersion:H("eval_target_version").notNull(),configuration:_("configuration").notNull(),runNumber:H("run_number").notNull().default(1),iteration:H("iteration").notNull().default(1),status:_("status").notNull().default("completed"),outputs:T("outputs").notNull().default({}),timing:T("timing").notNull().default({}),grading:T("grading").notNull().default({}),comparison:T("comparison"),createdAt:j("created_at",{withTimezone:!0}).defaultNow()},e=>[g("idx_eval_runs_eval").on(e.evalId),g("idx_eval_runs_target").on(e.evalTargetId),g("idx_eval_runs_iteration").on(e.evalTargetId,e.iteration)]),un=_e("eval_comparisons",{id:p("id").primaryKey().defaultRandom(),userId:p("user_id").notNull(),targetAId:p("target_a_id").notNull().references(()=>n.id,{onDelete:"cascade"}),targetBId:p("target_b_id").notNull().references(()=>n.id,{onDelete:"cascade"}),targetAVersion:H("target_a_version").notNull(),targetBVersion:H("target_b_version").notNull(),isSwapped:dn("is_swapped").notNull().default(!1),winnerTargetId:p("winner_target_id").references(()=>n.id,{onDelete:"set null"}),perEval:T("per_eval").notNull().default([]),overall:T("overall").notNull().default({}),rawOutput:_("raw_output"),model:_("model"),status:_("status").notNull().default("completed"),createdAt:j("created_at",{withTimezone:!0}).defaultNow()},e=>[g("idx_eval_comparisons_target_a").on(e.targetAId),g("idx_eval_comparisons_target_b").on(e.targetBId),g("idx_eval_comparisons_user").on(e.userId)]),ln=_e("eval_grade_annotations",{id:p("id").primaryKey().defaultRandom(),userId:p("user_id").notNull(),evalRunId:p("eval_run_id").notNull().references(()=>K.id,{onDelete:"cascade"}),evalTargetId:p("eval_target_id").notNull().references(()=>n.id,{onDelete:"cascade"}),expectationIndex:H("expectation_index").notNull(),expectationText:_("expectation_text").notNull(),judgePassed:dn("judge_passed").notNull(),judgeMethod:_("judge_method").notNull(),judgeModel:_("judge_model"),verdict:_("verdict").notNull(),flag:_("flag"),note:_("note"),createdAt:j("created_at",{withTimezone:!0}).defaultNow(),updatedAt:j("updated_at",{withTimezone:!0}).defaultNow()},e=>[g("idx_eval_grade_annotations_target").on(e.evalTargetId),g("idx_eval_grade_annotations_run").on(e.evalRunId),hs("eval_grade_annotations_eval_run_id_expectation_index_key").on(e.evalRunId,e.expectationIndex)]),fe=_e("benchmarks",{id:p("id").primaryKey().defaultRandom(),evalTargetId:p("eval_target_id").notNull().references(()=>n.id,{onDelete:"cascade"}),iteration:H("iteration").notNull().default(1),runSummary:T("run_summary").notNull().default({}),notes:T("notes").notNull().default([]),feedback:T("feedback"),createdAt:j("created_at",{withTimezone:!0}).defaultNow()},e=>[g("idx_benchmarks_target").on(e.evalTargetId)]);import{pgTable as mn,text as Qt,timestamp as $t,jsonb as pn,uuid as xe,integer as Ee,index as ct,real as cn}from"drizzle-orm/pg-core";var ge=mn("trigger_evals",{id:xe("id").primaryKey().defaultRandom(),evalTargetId:xe("eval_target_id").notNull().references(()=>n.id,{onDelete:"cascade"}),userId:xe("user_id").notNull(),queries:pn("queries").notNull().default([]),status:Qt("status").notNull().default("pending_review"),trainIndices:Ee("train_indices").array().default([]),testIndices:Ee("test_indices").array().default([]),createdAt:$t("created_at",{withTimezone:!0}).defaultNow(),updatedAt:$t("updated_at",{withTimezone:!0}).defaultNow()},e=>[ct("idx_trigger_evals_target").on(e.evalTargetId),ct("idx_trigger_evals_user").on(e.userId)]),Ne=mn("optimization_runs",{id:xe("id").primaryKey().defaultRandom(),evalTargetId:xe("eval_target_id").notNull().references(()=>n.id,{onDelete:"cascade"}),userId:xe("user_id").notNull(),type:Qt("type").notNull(),iteration:Ee("iteration").notNull(),inputVersion:Ee("input_version").notNull(),outputVersion:Ee("output_version"),trainScore:cn("train_score"),testScore:cn("test_score"),analysis:pn("analysis").notNull().default({}),status:Qt("status").notNull().default("running"),createdAt:$t("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 Is,text as V,timestamp as ys,jsonb as Se,uuid as Wt,integer as Xt,real as Ts,index as Ke,uniqueIndex as _n}from"drizzle-orm/pg-core";var F=Is("context_snapshots",{id:Wt("id").primaryKey().defaultRandom(),sessionId:Wt("session_id").references(()=>d.id,{onDelete:"cascade"}),userId:Wt("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),sequence:Xt("sequence").notNull().default(0),provider:V("provider").notNull(),model:V("model").notNull(),systemPrompt:V("system_prompt").notNull(),injectedInstructions:Se("injected_instructions").notNull().default([]),messagesSummary:Se("messages_summary").notNull(),tools:Se("tools").notNull().default([]),systemHash:V("system_hash").notNull(),requestHash:V("request_hash").notNull().default(""),toolsHash:V("tools_hash"),injectedHash:V("injected_hash"),messagesDelta:Se("messages_delta").default([]),messagesDeltaRef:V("messages_delta_ref"),maxTokens:Xt("max_tokens"),temperature:Ts("temperature"),estimatedTokens:Xt("estimated_tokens"),capturedAt:ys("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),_n("idx_snapshots_session_request").on(e.sessionId,e.requestHash),_n("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 ws,text as fn,timestamp as As,jsonb as zs,integer as Ds,index as js}from"drizzle-orm/pg-core";var xn=ws("content_blobs",{hash:fn("hash").primaryKey(),contentType:fn("content_type").notNull(),content:zs("content").notNull(),sizeBytes:Ds("size_bytes").notNull().default(0),createdAt:As("created_at",{withTimezone:!0}).defaultNow()},e=>[js("idx_content_blobs_type").on(e.contentType)]);import{pgTable as Rs,text as mt,timestamp as Pe,jsonb as pt,uuid as Zt,index as _t,integer as ks}from"drizzle-orm/pg-core";var ve=Rs("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:ks("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 bs,text as Oe,timestamp as Ce,jsonb as gn,uuid as Nn,integer as Es,index as vn}from"drizzle-orm/pg-core";var hn=bs("agent_jobs",{id:Nn("id").primaryKey().defaultRandom(),userId:Nn("user_id").notNull(),taskKind:Oe("task_kind").notNull(),status:Oe("status").notNull().default("pending"),payload:gn("payload").notNull(),dedupeKey:Oe("dedupe_key"),result:gn("result"),error:Oe("error"),attempts:Es("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=>[vn("idx_agent_jobs_claim").on(e.userId,e.status,e.taskKind,e.createdAt),vn("idx_agent_jobs_dedupe").on(e.userId,e.taskKind,e.dedupeKey)]);import{pgTable as Ss,text as qe,timestamp as Me,jsonb as ft,uuid as eo,index as xt,integer as Ks}from"drizzle-orm/pg-core";var In=Ss("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:Ks("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 Ps,text as to,timestamp as gt,uuid as yn,index as Os,uniqueIndex as Cs}from"drizzle-orm/pg-core";var he=Ps("api_keys",{id:yn("id").primaryKey().defaultRandom(),userId:yn("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),name:to("name").notNull(),keyHash:to("key_hash").notNull(),keyPrefix:to("key_prefix").notNull(),lastUsedAt:gt("last_used_at",{withTimezone:!0}),expiresAt:gt("expires_at",{withTimezone:!0}),revokedAt:gt("revoked_at",{withTimezone:!0}),createdAt:gt("created_at",{withTimezone:!0}).defaultNow()},e=>[Os("idx_api_keys_user").on(e.userId),Cs("idx_api_keys_hash").on(e.keyHash)]);import{pgTable as qs,text as oo,timestamp as Tn,uuid as Ms,index as Ls}from"drizzle-orm/pg-core";var wn=qs("extension_auth_codes",{code:oo("code").primaryKey(),userId:Ms("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),editor:oo("editor"),email:oo("email"),expiresAt:Tn("expires_at",{withTimezone:!0}).notNull(),createdAt:Tn("created_at",{withTimezone:!0}).defaultNow()},e=>[Ls("idx_ext_auth_codes_expiry").on(e.expiresAt)]);import{pgTable as Bs,text as Us,timestamp as An,jsonb as Hs,uuid as no,index as zn}from"drizzle-orm/pg-core";var Ie=Bs("eval_conversations",{id:no("id").primaryKey().defaultRandom(),evalTargetId:no("eval_target_id").notNull().references(()=>n.id,{onDelete:"cascade"}),userId:no("user_id").notNull(),messages:Hs("messages").notNull().default([]),status:Us("status").notNull().default("active"),createdAt:An("created_at",{withTimezone:!0}).defaultNow(),updatedAt:An("updated_at",{withTimezone:!0}).defaultNow()},e=>[zn("idx_eval_conversations_target").on(e.evalTargetId),zn("idx_eval_conversations_user").on(e.userId)]);import{pgTable as Vs,text as P,timestamp as Dn,jsonb as Fs,uuid as ro}from"drizzle-orm/pg-core";var jn=Vs("skill_submissions",{id:ro("id").primaryKey().defaultRandom(),skillId:P("skill_id").notNull(),name:P("name").notNull(),description:P("description").notNull(),category:P("category").notNull(),tools:P("tools").array().notNull(),tags:P("tags").array().default([]),content:P("content").notNull(),status:P("status").notNull().default("pending"),submittedBy:ro("submitted_by").notNull(),reviewedBy:ro("reviewed_by"),reviewNote:P("review_note"),metadata:Fs("metadata"),createdAt:Dn("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Dn("updated_at",{withTimezone:!0}).defaultNow()});import{pgTable as Gs,text as Le,timestamp as Rn,jsonb as Js,uuid as Ys,uniqueIndex as Qs,index as kn}from"drizzle-orm/pg-core";var bn=Gs("harness_releases",{id:Ys("id").primaryKey().defaultRandom(),harness:Le("harness").notNull(),version:Le("version").notNull(),publishedAt:Rn("published_at",{withTimezone:!0}).notNull(),title:Le("title"),body:Le("body"),categories:Js("categories").default({}),url:Le("url"),createdAt:Rn("created_at",{withTimezone:!0}).defaultNow()},e=>[Qs("idx_harness_releases_unique").on(e.harness,e.version),kn("idx_harness_releases_harness").on(e.harness),kn("idx_harness_releases_published").on(e.publishedAt)]);import{pgTable as $s,text as ye,timestamp as En,jsonb as Ws,uuid as Sn,index as Kn,uniqueIndex as Xs}from"drizzle-orm/pg-core";var so=$s("notifications",{id:Sn("id").primaryKey().defaultRandom(),userId:Sn("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:Ws("metadata").notNull().default({}),readAt:En("read_at",{withTimezone:!0}),createdAt:En("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Kn("idx_notifications_user_created").on(e.userId,e.createdAt),Kn("idx_notifications_user_unread").on(e.userId),Xs("idx_notifications_source_dedup").on(e.userId,e.sourceTable,e.sourceId)]);import{pgTable as Zs,text as Be,timestamp as Ue,jsonb as io,uuid as ao,index as Nt,integer as ei}from"drizzle-orm/pg-core";var Te=Zs("launch_jobs",{id:ao("id").primaryKey().defaultRandom(),userId:ao("user_id").notNull(),tool:Be("tool").notNull(),status:Be("status").notNull().default("pending"),config:io("config").notNull().default({}),result:io("result"),error:Be("error"),attempts:ei("attempts").notNull().default(0),taskKind:Be("task_kind"),payload:io("payload"),claimedBy:Be("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(()=>x.id,{onDelete:"set null"})},e=>[Nt("idx_launch_jobs_user").on(e.userId),Nt("idx_launch_jobs_status").on(e.status),Nt("idx_launch_jobs_pending").on(e.userId,e.status),Nt("idx_launch_jobs_run").on(e.runId)]);import{pgTable as Pn,uuid as O,text as He,real as ti,timestamp as vt,boolean as oi,uniqueIndex as ni,index as Ve}from"drizzle-orm/pg-core";var uo=Pn("instruction_suggestions",{id:O("id").primaryKey().defaultRandom(),userId:O("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),instructionId:O("instruction_id").notNull().references(()=>r.id,{onDelete:"cascade"}),projectPath:He("project_path").notNull(),projectId:O("project_id").references(()=>s.id,{onDelete:"set null"}),score:ti("score").notNull(),reason:He("reason").notNull(),generatedAt:vt("generated_at",{withTimezone:!0}).notNull().defaultNow(),isStale:oi("is_stale").notNull().default(!1),dismissedAt:vt("dismissed_at",{withTimezone:!0}),acceptedAt:vt("accepted_at",{withTimezone:!0}),promotedToInstructionId:O("promoted_to_instruction_id").references(()=>r.id,{onDelete:"set null"})},e=>[ni("idx_instruction_suggestions_user_project_instruction").on(e.userId,e.projectPath,e.instructionId),Ve("idx_instruction_suggestions_user_project").on(e.userId,e.projectPath),Ve("idx_instruction_suggestions_user_proj_id").on(e.userId,e.projectId),Ve("idx_instruction_suggestions_generated_at").on(e.generatedAt)]),On=Pn("instruction_suggestion_events",{id:O("id").primaryKey().defaultRandom(),suggestionId:O("suggestion_id").notNull().references(()=>uo.id,{onDelete:"cascade"}),userId:O("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),eventType:He("event_type").notNull(),tool:He("tool"),sessionId:O("session_id"),projectPath:He("project_path").notNull(),createdAt:vt("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Ve("idx_instruction_suggestion_events_suggestion_id").on(e.suggestionId),Ve("idx_instruction_suggestion_events_user_id").on(e.userId)]);import{pgTable as ri,text as lo,integer as si,numeric as Fe,timestamp as co,index as ii,primaryKey as ai}from"drizzle-orm/pg-core";var Cn=ri("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:si("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=>[ai({columns:[e.provider,e.modelId,e.effectiveFrom]}),ii("idx_model_pricing_active").on(e.provider,e.modelId,e.effectiveFrom.desc())]);import{pgTable as di,text as ee,numeric as qn,timestamp as Mn,uuid as Ln,jsonb as ui,index as Bn}from"drizzle-orm/pg-core";var Un=di("limit_observations",{id:Ln("id").primaryKey().defaultRandom(),observedAt:Mn("observed_at",{withTimezone:!0}).notNull().defaultNow(),provider:ee("provider").notNull(),plan:ee("plan").notNull(),limitType:ee("limit_type").notNull(),value:qn("value").notNull(),unit:ee("unit").notNull(),comparator:ee("comparator").notNull().default("="),resetsAt:Mn("resets_at",{withTimezone:!0}),sourceType:ee("source_type").notNull(),sourceUrl:ee("source_url"),sourceEvidence:ui("source_evidence"),confidence:qn("confidence").notNull(),userId:Ln("user_id")},e=>[Bn("idx_limit_obs_lookup").on(e.provider,e.plan,e.limitType,e.observedAt.desc()),Bn("idx_limit_obs_user").on(e.userId,e.observedAt.desc())]);import{pgTable as li,text as ht,timestamp as ci,uuid as mi,jsonb as pi,boolean as _i,uniqueIndex as fi}from"drizzle-orm/pg-core";var Hn=li("provider_docs_snapshots",{id:mi("id").primaryKey().defaultRandom(),fetchedAt:ci("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:_i("parse_success").notNull(),parseErrors:pi("parse_errors")},e=>[fi("idx_docs_dedup").on(e.provider,e.docUrl,e.contentHash)]);import{pgTable as xi,text as It,numeric as Vn,timestamp as Fn,uuid as gi,primaryKey as Ni,index as vi}from"drizzle-orm/pg-core";var Gn=xi("plan_limits_active",{provider:It("provider").notNull(),plan:It("plan").notNull(),limitType:It("limit_type").notNull(),value:Vn("value").notNull(),unit:It("unit").notNull(),effectiveFrom:Fn("effective_from",{withTimezone:!0}).notNull(),effectiveUntil:Fn("effective_until",{withTimezone:!0}),confidence:Vn("confidence").notNull(),sourceObservationIds:gi("source_observation_ids").array().notNull()},e=>[Ni({columns:[e.provider,e.plan,e.limitType,e.effectiveFrom]}),vi("idx_plan_limits_lookup").on(e.provider,e.plan,e.limitType,e.effectiveFrom.desc())]);import{pgTable as hi,text as mo,timestamp as Ii,uuid as Jn,jsonb as yi,index as Ti}from"drizzle-orm/pg-core";var Yn=hi("alert_dispatches",{id:Jn("id").primaryKey().defaultRandom(),userId:Jn("user_id").notNull(),alertKey:mo("alert_key").notNull(),severity:mo("severity").notNull(),lastDispatchedAt:Ii("last_dispatched_at",{withTimezone:!0}).notNull().defaultNow(),lastState:yi("last_state").notNull(),channel:mo("channel").notNull()},e=>[Ti("idx_alert_user_key").on(e.userId,e.alertKey,e.lastDispatchedAt.desc())]);import{pgTable as wi,text as po,timestamp as Qn,uuid as _o,integer as Ai,index as zi,unique as Di}from"drizzle-orm/pg-core";var $n=wi("scaffolding_fingerprints",{id:_o("id").primaryKey().defaultRandom(),userId:_o("user_id").notNull(),harness:po("harness").notNull(),model:po("model").notNull(),toolsHash:po("tools_hash").notNull(),firstSeenAt:Qn("first_seen_at",{withTimezone:!0}).notNull().defaultNow(),lastSeenAt:Qn("last_seen_at",{withTimezone:!0}).notNull().defaultNow(),snapshotCount:Ai("snapshot_count").notNull().default(1),firstSessionId:_o("first_session_id")},e=>[Di("scaffolding_fingerprints_user_id_harness_model_tools_hash_key").on(e.userId,e.harness,e.model,e.toolsHash),zi("idx_scaffolding_fp_segment").on(e.userId,e.harness,e.model)]);import{pgTable as ji,text as fo,timestamp as Ri,jsonb as ki,uuid as Wn,integer as bi,unique as Ei}from"drizzle-orm/pg-core";var Xn=ji("scaffolding_segments",{id:Wn("id").primaryKey().defaultRandom(),userId:Wn("user_id").notNull(),harness:fo("harness").notNull(),model:fo("model").notNull(),coreNames:ki("core_names").notNull(),coreHash:fo("core_hash").notNull(),activeFingerprints:bi("active_fingerprints").notNull(),computedAt:Ri("computed_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Ei("scaffolding_segments_user_id_harness_model_key").on(e.userId,e.harness,e.model)]);import{drizzle as nr}from"drizzle-orm/postgres-js";import rr from"postgres";var yt={};yr(yt,{agentJobs:()=>hn,agentRuns:()=>x,agentRunsRelations:()=>Ji,alertDispatches:()=>Yn,announcementDeliveries:()=>qo,announcements:()=>Co,apiKeys:()=>he,apiKeysRelations:()=>Ki,benchmarks:()=>fe,benchmarksRelations:()=>sa,cliErrorEvents:()=>an,cliSetupEvents:()=>rn,contentBlobs:()=>xn,contextSnapshots:()=>F,contextSnapshotsRelations:()=>la,evalComparisons:()=>un,evalConversations:()=>Ie,evalConversationsRelations:()=>ua,evalGradeAnnotations:()=>ln,evalJobs:()=>ve,evalJobsRelations:()=>da,evalRuns:()=>K,evalRunsRelations:()=>ra,evalTargets:()=>n,evalTargetsRelations:()=>oa,evals:()=>S,evalsRelations:()=>na,extensionAuthCodes:()=>wn,harnessReleases:()=>bn,insightsJobs:()=>In,instructionEvents:()=>ue,instructionEventsRelations:()=>Bi,instructionSuggestionEvents:()=>On,instructionSuggestions:()=>uo,instructionUsageEvents:()=>pe,instructionUsageEventsRelations:()=>ta,instructionVersions:()=>re,instructionVersionsRelations:()=>Hi,instructions:()=>r,instructionsRelations:()=>Li,launchJobs:()=>Te,launchJobsRelations:()=>Yi,limitObservations:()=>Un,memories:()=>y,memoriesRelations:()=>Ui,memoryExperiments:()=>Oo,modelPricing:()=>Cn,notificationPreferences:()=>Mo,notifications:()=>so,optimizationRuns:()=>Ne,optimizationRunsRelations:()=>aa,orgInvitations:()=>k,orgInvitationsRelations:()=>Ci,organizations:()=>u,organizationsRelations:()=>Pi,packInstructions:()=>U,packInstructionsRelations:()=>ea,packs:()=>A,packsRelations:()=>Zi,pendingTreatmentExposures:()=>Go,planLimitsActive:()=>Gn,profiles:()=>o,profilesRelations:()=>Si,projectCheckouts:()=>ko,projectInstructions:()=>q,projectInstructionsRelations:()=>Fi,projects:()=>s,projectsRelations:()=>Vi,providerDocsSnapshots:()=>Hn,scaffoldingFingerprints:()=>$n,scaffoldingSegments:()=>Xn,sessionEvents:()=>ie,sessionEventsRelations:()=>Qi,sessionInstructions:()=>M,sessionInstructionsRelations:()=>$i,sessionSendJobs:()=>Qo,sessionTerminalTargets:()=>st,sessions:()=>d,sessionsRelations:()=>Gi,skillSubmissions:()=>jn,teams:()=>v,teamsRelations:()=>Oi,treatmentAssignments:()=>b,treatmentAssignmentsRelations:()=>Wi,treatmentExposures:()=>E,treatmentExposuresRelations:()=>Xi,triggerEvals:()=>ge,triggerEvalsRelations:()=>ia,userOrganizations:()=>oe,userOrganizationsRelations:()=>qi,userTeams:()=>ne,userTeamsRelations:()=>Mi,workerConnections:()=>tn});import{relations as i}from"drizzle-orm";var Si=i(o,({many:e})=>({sessions:e(d),contextSnapshots:e(F),apiKeys:e(he)})),Ki=i(he,({one:e})=>({profile:e(o,{fields:[he.userId],references:[o.id]})})),Pi=i(u,({many:e})=>({teams:e(v),userOrganizations:e(oe),projects:e(s),invitations:e(k)})),Oi=i(v,({one:e,many:t})=>({organization:e(u,{fields:[v.orgId],references:[u.id]}),userTeams:t(ne),invitations:t(k)})),Ci=i(k,({one:e})=>({organization:e(u,{fields:[k.orgId],references:[u.id]}),team:e(v,{fields:[k.teamId],references:[v.id]}),inviter:e(o,{fields:[k.invitedBy],references:[o.id]})})),qi=i(oe,({one:e})=>({organization:e(u,{fields:[oe.orgId],references:[u.id]})})),Mi=i(ne,({one:e})=>({team:e(v,{fields:[ne.teamId],references:[v.id]})})),Li=i(r,({one:e,many:t})=>({versions:t(re),projectInstructions:t(q),events:t(ue),usageEvents:t(pe),sessionInstructions:t(M),packInstructions:t(U),forkedFrom:e(r,{fields:[r.forkedFromId],references:[r.id]})})),Bi=i(ue,({one:e})=>({instruction:e(r,{fields:[ue.instructionId],references:[r.id]})})),Ui=i(y,({one:e,many:t})=>({project:e(s,{fields:[y.projectId],references:[s.id]}),parent:e(y,{fields:[y.parentId],references:[y.id]}),versions:t(y)})),Hi=i(re,({one:e})=>({instruction:e(r,{fields:[re.instructionId],references:[r.id]})})),Vi=i(s,({one:e,many:t})=>({organization:e(u,{fields:[s.orgId],references:[u.id]}),projectInstructions:t(q),sessions:t(d)})),Fi=i(q,({one:e})=>({project:e(s,{fields:[q.projectId],references:[s.id]}),instruction:e(r,{fields:[q.instructionId],references:[r.id]})})),Gi=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(x,{fields:[d.runId],references:[x.id]}),events:t(ie),sessionInstructions:t(M),treatmentExposures:t(E),contextSnapshots:t(F)})),Ji=i(x,({one:e,many:t})=>({profile:e(o,{fields:[x.userId],references:[o.id]}),organization:e(u,{fields:[x.orgId],references:[u.id]}),project:e(s,{fields:[x.projectId],references:[s.id]}),sessions:t(d),launchJobs:t(Te)})),Yi=i(Te,({one:e})=>({run:e(x,{fields:[Te.runId],references:[x.id]})})),Qi=i(ie,({one:e})=>({session:e(d,{fields:[ie.sessionId],references:[d.id]})})),$i=i(M,({one:e})=>({session:e(d,{fields:[M.sessionId],references:[d.id]}),instruction:e(r,{fields:[M.instructionId],references:[r.id]})})),Wi=i(b,({one:e,many:t})=>({owner:e(o,{fields:[b.userId],references:[o.id]}),project:e(s,{fields:[b.projectId],references:[s.id]}),exposures:t(E)})),Xi=i(E,({one:e})=>({session:e(d,{fields:[E.sessionId],references:[d.id]}),owner:e(o,{fields:[E.userId],references:[o.id]}),assignment:e(b,{fields:[E.assignmentId],references:[b.id]})})),Zi=i(A,({one:e,many:t})=>({packInstructions:t(U),forkedFrom:e(A,{fields:[A.forkedFromId],references:[A.id]})})),ea=i(U,({one:e})=>({pack:e(A,{fields:[U.packId],references:[A.id]}),instruction:e(r,{fields:[U.instructionId],references:[r.id]})})),ta=i(pe,({one:e})=>({instruction:e(r,{fields:[pe.instructionId],references:[r.id]})})),oa=i(n,({one:e,many:t})=>({parent:e(n,{fields:[n.parentId],references:[n.id]}),evals:t(S),evalRuns:t(K),benchmarks:t(fe),triggerEvals:t(ge),optimizationRuns:t(Ne),evalJobs:t(ve),evalConversations:t(Ie)})),na=i(S,({one:e,many:t})=>({evalTarget:e(n,{fields:[S.evalTargetId],references:[n.id]}),runs:t(K)})),ra=i(K,({one:e})=>({eval:e(S,{fields:[K.evalId],references:[S.id]}),evalTarget:e(n,{fields:[K.evalTargetId],references:[n.id]})})),sa=i(fe,({one:e})=>({evalTarget:e(n,{fields:[fe.evalTargetId],references:[n.id]})})),ia=i(ge,({one:e})=>({evalTarget:e(n,{fields:[ge.evalTargetId],references:[n.id]})})),aa=i(Ne,({one:e})=>({evalTarget:e(n,{fields:[Ne.evalTargetId],references:[n.id]})})),da=i(ve,({one:e})=>({evalTarget:e(n,{fields:[ve.evalTargetId],references:[n.id]})})),ua=i(Ie,({one:e})=>({evalTarget:e(n,{fields:[Ie.evalTargetId],references:[n.id]})})),la=i(F,({one:e})=>({session:e(d,{fields:[F.sessionId],references:[d.id]}),profile:e(o,{fields:[F.userId],references:[o.id]})}));var Ge=0,Zn=0,Je=0,er=0;var ca=0;function xo(){Ge++,Ge>Zn&&(Zn=Ge)}m(xo,"trackDbOpStart");function go(){Ge>0&&Ge--}m(go,"trackDbOpEnd");function No(){Je++,Je>er&&(er=Je)}m(No,"trackHeavyDbOpStart");function vo(){Je>0&&Je--}m(vo,"trackHeavyDbOpEnd");function tr(){ca++}m(tr,"recordQueryDeadline");var wt,zt,ho=!1,Tt;var or,Dt,At;function sr(e){let t=process.env[e];if(!t)throw new Error(`Missing required env var: ${e}`);return t}m(sr,"getEnv");function ir(){if(ho)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,f=Number(process.env.PG_KEEP_ALIVE_S)||60;zt=rr(sr("DATABASE_URL"),{prepare:!1,max:t,connect_timeout:a,idle_timeout:c,keep_alive:f,max_lifetime:300,connection:{application_name:e,...l>0?{statement_timeout:l}:{}}}),wt=nr(zt,{schema:yt})}return wt}m(ir,"getDb");function ar(){if(ho)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=rr(sr("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=nr(Dt,{schema:yt})}return At}m(ar,"getHeavyDb");async function ma(){if(Tt)return Tt;ho=!0;let e=zt,t=or,a=Dt;return zt=void 0,wt=void 0,or=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(ma,"closeDb");var pa=new Set(["CONNECT_TIMEOUT","ETIMEDOUT","ENOTFOUND","ECONNREFUSED","EAI_AGAIN"]);function dr(e){let t=e,a=t?.code??t?.cause?.code??t?.errno;return a!==void 0&&pa.has(a)}m(dr,"isRetryableConnectError");var _a=new Set(["CONNECTION_CLOSED","ECONNRESET","EPIPE"]);function ur(e){let t=e,a=t?.code??t?.cause?.code??t?.errno;return a!==void 0&&_a.has(a)}m(ur,"isRetryableResetError");async function lr(e,t={}){let a=t.attempts??3,l=t.baseMs??100,c;for(let f=0;f<a;f++)try{return await e()}catch(h){c=h;let we=dr(h)||t.retryResets===!0&&ur(h);if(f===a-1||!we)throw h;await new Promise(G=>setTimeout(G,l*2**f))}throw c}m(lr,"withDbRetry");var jt=class extends Error{static{m(this,"QueryDeadlineError")}code="QUERY_DEADLINE";constructor(t){super(`Query exceeded the client-side deadline of ${t}ms \u2014 the DB pool is likely saturated (acquire-wait) or holding a dead socket; failing fast to avoid pinning the caller. See client.ts.`),this.name="QueryDeadlineError"}};function cr(){let e=Number(process.env.PG_QUERY_DEADLINE_MS);return Number.isFinite(e)&&e>=0?e:2e4}m(cr,"queryDeadlineMs");function fa(e,t){let a,l=new Promise((c,f)=>{a=setTimeout(()=>{tr(),f(new jt(t))},t);let h=a;typeof h.unref=="function"&&h.unref()});return Promise.race([e,l]).finally(()=>clearTimeout(a))}m(fa,"raceWithDeadline");var mr=new Set(["select","selectDistinct","selectDistinctOn","insert","update","delete","execute","with","$count","refreshMaterializedView"]),pr=new Set(["select","selectDistinct","selectDistinctOn","$count"]);function Io(e,t=!1,a=0,l=!1){return e===null||typeof e!="object"&&typeof e!="function"?e:new Proxy(e,{get(c,f,h){if(f==="then"){let G=Reflect.get(c,f,h);return typeof G!="function"?G:(xr,gr)=>{let Nr=l?No:xo,vr=l?vo:go;Nr();let yo=lr(()=>new Promise((hr,Ir)=>G.call(c,hr,Ir)),{retryResets:t});return(a>0?fa(yo,a):yo).finally(vr).then(xr,gr)}}let we=Reflect.get(c,f,h);return typeof we=="function"?(...G)=>Io(we.apply(c,G),t,a,l):we}})}m(Io,"wrapBuilder");function _r(e,t=!1){let a=t?No:xo,l=t?vo:go;a();try{return Promise.resolve(e()).finally(l)}catch(c){throw l(),c}}m(_r,"gaugeTransaction");var fr=new Proxy({},{get(e,t){let a=ir(),l=a[t];if(typeof t=="string"&&mr.has(t)&&typeof l=="function"){let c=pr.has(t),f=cr();return(...h)=>Io(l.apply(a,h),c,f)}return t==="transaction"&&typeof l=="function"?(...c)=>_r(()=>l.apply(a,c)):l}}),xa=new Proxy({},{get(e,t){let a=ar(),l=a[t];if(typeof t=="string"&&mr.has(t)&&typeof l=="function"){let c=pr.has(t);return(...f)=>Io(l.apply(a,f),c,0,!0)}return t==="transaction"&&typeof l=="function"?(...c)=>_r(()=>l.apply(a,c),!0):l}});export{o as a,x as b,d as c,ie as d,y as e,Oo as f,Co as g,qo as h,Mo as i,ir as j,ma as k};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{b as R}from"./chunk-ZL4MZMUK.js";import{
|
|
1
|
+
import{b as R}from"./chunk-ZL4MZMUK.js";import{a as S}from"./chunk-TDD7IOV2.js";import{a as p}from"./chunk-MODXEGCU.js";import{d as j,f as y}from"./chunk-RTWRHIKY.js";import{e as i,f as l}from"./chunk-H2ORWIEY.js";import{a as g}from"./chunk-ZLLER3HP.js";import{readFileSync as b}from"node:fs";import E from"node:path";import $ from"node:os";var N=5,L=Number(process.env.RULEMETRIC_MAX_SUGGESTION_PROJECTS??10),T=48,M=.5,k=400;async function O(){let d=E.join($.homedir(),".config","rulemetric","skills-registry.json");try{let o=b(d,"utf-8"),s=JSON.parse(o);return Date.now()-new Date(s.generatedAt).getTime()>T*60*60*1e3}catch{return!0}}g(O,"checkSkillsRegistryStale");var X=g(async(d,o)=>{let s=j();if(s==="none"){o.logger.warn("No LLM backend available (claude CLI missing and ANTHROPIC_API_KEY unset); skipping suggestion compute");return}o.logger.info(`Scoring backend: ${s}`);let r;try{r=(await i("/api/sessions/project-paths?limit="+L)).projectPaths}catch(e){o.logger.warn(`Failed to fetch project paths: ${e instanceof Error?e.message:String(e)}`);return}if(r.length===0){o.logger.info("No recent project paths; nothing to score");return}let m=new Map;try{let e=await i("/api/projects?limit=200");for(let t of e.projects??[])t.primaryCheckoutPath&&m.set(p(t.primaryCheckoutPath),t.id)}catch(e){o.logger.warn(`Failed to fetch projects for id resolution: ${e instanceof Error?e.message:String(e)}`)}let a=new Map;try{let e=await i("/api/catalog?limit=200");for(let t of e)a.set(t.id,{id:t.id,name:t.name,description:t.description??"",tags:t.tags??[],contentPreview:(t.content??"").slice(0,k)})}catch(e){o.logger.warn(`Failed to fetch catalog: ${e instanceof Error?e.message:String(e)}`)}try{let e=await i("/api/instructions?limit=100");for(let t of e.instructions??[])a.has(t.id)||a.set(t.id,{id:t.id,name:t.name,description:t.description??"",tags:t.tags??[],contentPreview:(t.content??"").slice(0,k)})}catch(e){o.logger.warn(`Failed to fetch personal instructions: ${e instanceof Error?e.message:String(e)}`)}let c=[...a.values()];if(c.length===0){o.logger.info("No candidate instructions; nothing to score");return}o.logger.info(`Scoring ${c.length} candidates across ${r.length} project(s)`);let u=0;for(let e of r)try{let t=p(e),f=S(t);if(f.length===0){o.logger.info(`Skipping ${t}: insufficient language signals`);continue}let C={name:E.basename(t),description:null,languages:f,topics:[],dependencies:[]},I=R(C,c),w=await y(I,"",4096);if(!w){o.logger.warn(`LLM returned null for ${t} (backend ${s})`);continue}let P=(w.recommendations??[]).filter(n=>typeof n.instructionId=="string"&&typeof n.score=="number"&&typeof n.reason=="string").map(n=>({instructionId:n.instructionId,score:n.score,reason:n.reason})).filter(n=>n.score>=M).sort((n,_)=>_.score-n.score).slice(0,N);if(P.length===0){o.logger.info(`No suggestions over threshold for ${t}`);continue}let h=m.get(t);await l("/api/instruction-suggestions/batch-upsert",{projectPath:t,...h?{projectId:h}:{},suggestions:P.map(n=>({instructionId:n.instructionId,score:n.score,reason:n.reason}))}),u++}catch(t){o.logger.warn(`Failed to score ${e}: ${t instanceof Error?t.message:String(t)}`)}if(await O())try{await l("/api/instruction-suggestions/mark-stale",{}),o.logger.warn("Skills registry is stale (>48h); marked all suggestions stale")}catch{}o.logger.info(`Done: scored ${u}/${r.length} projects`)},"cronSuggestInstructions");export{X as a};
|
|
@@ -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-
|
|
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-KXW3IWKQ.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,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}$(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 +1 @@
|
|
|
1
|
-
import{a as $}from"./chunk-
|
|
1
|
+
import{a as $}from"./chunk-EL5M4MAQ.js";import{e as w,f as k}from"./chunk-H2ORWIEY.js";import{a as u}from"./chunk-ZLLER3HP.js";function h(e){if(e.length===0)return{mean:0,stddev:0,min:0,max:0};let n=e.reduce((s,a)=>s+a,0)/e.length,o=e.reduce((s,a)=>s+(a-n)**2,0)/e.length;return{mean:Math.round(n*1e3)/1e3,stddev:Math.round(Math.sqrt(o)*1e3)/1e3,min:Math.min(...e),max:Math.max(...e)}}u(h,"computeStats");var x="with_target",E="without_target";function _(e){let n=e.grading.summary?.pass_rate;return typeof n=="number"&&n>=1}u(_,"fullPass");function b(e){return e.grading.summary?.pass_rate!=null}u(b,"hasGrading");function R(e){let n=e.timing.total_tokens;return typeof n=="number"&&n>0?n:void 0}u(R,"tokensOf");function v(e){let n=e.timing.duration_ms;return typeof n=="number"&&!isNaN(n)?n/1e3:void 0}u(v,"secondsOf");function y(e,n){let o={};for(let s of e)(o[n(s)]??=[]).push(s);return o}u(y,"groupBy");function C(e,n){let o=y(e.filter(b),i=>i.evalId),s=y(n.filter(b),i=>i.evalId),a=u((i,l)=>i.runNumber-l.runNumber,"byRun"),t=[];for(let i of Object.keys(o)){let l=o[i].sort(a),d=(s[i]??[]).sort(a);for(let r=0;r<Math.min(l.length,d.length);r++){let c={withScore:_(l[r])?1:0,withoutScore:_(d[r])?1:0},f=R(l[r]),g=R(d[r]);f!=null&&g!=null&&(c.withCost=f,c.withoutCost=g);let p=v(l[r]),m=v(d[r]);p!=null&&m!=null&&(c.withLatency=p,c.withoutLatency=m),t.push(c)}}return t}u(C,"pairRunsByEval");function T(e){let n=e.filter(r=>r.status==="completed");if(n.length===0)return{runSummary:{},verdict:null,notes:["No completed runs found"],totalRuns:0};let o=y(n,r=>r.configuration),s={},a=[];for(let[r,c]of Object.entries(o)){let f=c.filter(b).map(m=>m.grading.summary.pass_rate),g=c.map(v).filter(m=>m!=null),p=c.map(R).filter(m=>m!=null);s[r]={},f.length>0&&(s[r].pass_rate=h(f)),g.length>0&&(s[r].time_seconds=h(g)),p.length>0&&(s[r].tokens=h(p))}let t=null,i=o[x]??[],l=o[E]??[],d=C(i,l);if(d.length>0){if(t=$(d),!t.sufficient)a.push(t.insufficientReason??"Insufficient data for a significance verdict.");else if(t.significant){let r=t.delta>=0?"improves":"reduces",c=t.pValue!=null?`, McNemar p=${t.pValue.toFixed(4)}`:"";a.push(`Target ${r} the pass rate by ${Math.abs(t.delta*100).toFixed(0)}% (95% CI ${(t.ci.lower*100).toFixed(0)}\u2013${(t.ci.upper*100).toFixed(0)}%, n=${t.nWith}${c}).`)}else a.push(`No significant effect on pass rate (95% CI ${(t.ci.lower*100).toFixed(0)}\u2013${(t.ci.upper*100).toFixed(0)}%, n=${t.nWith}).`);t.costDelta!=null&&Math.round(t.costDelta)!==0&&a.push(`Token cost delta: ${t.costDelta>=0?"+":""}${Math.round(t.costDelta)} tokens/task.`),t.latencyDelta!=null&&Math.abs(t.latencyDelta)>1&&a.push(`Target ${t.latencyDelta>0?"adds":"saves"} ${Math.abs(t.latencyDelta).toFixed(1)}s/task.`)}for(let r of Object.values(s))if(r.pass_rate&&r.pass_rate.stddev>.2){a.push(`High pass-rate variance (stddev=${r.pass_rate.stddev.toFixed(2)}) \u2014 results may be unreliable.`);break}return{runSummary:s,verdict:t,notes:a,totalRuns:n.length}}u(T,"summarizeRuns");async function S(e,n){let o=n?`&iteration=${n}`:"",s=100,a=[];for(let t=0;t<1e5;t+=s){let i=await w(`/api/eval-targets/${e}/runs?limit=${s}&offset=${t}&activeCasesOnly=1${o}`);if(a.push(...i),i.length<s)break}return T(a)}u(S,"aggregateBenchmark");async function B(e,n,o){return k(`/api/eval-targets/${e}/benchmarks`,{iteration:n,runSummary:o.runSummary,notes:o.notes})}u(B,"postBenchmark");export{T as a,S as b,B as c};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as
|
|
1
|
+
import{a as j}from"./chunk-RDET7CKR.js";import{a as E}from"./chunk-NBTC5FNV.js";import{a as J}from"./chunk-TU2AR6XO.js";import{d as T}from"./chunk-NJ5UED3H.js";import{b as I,c as P,d as v}from"./chunk-ZR3MUNLS.js";import{a as b}from"./chunk-ZLLER3HP.js";import{useEffect as R,useState as i}from"react";import{Box as l,Text as s,useInput as Z}from"ink";import{jsx as t,jsxs as a}from"react/jsx-runtime";function K({onClose:A,activeOrg:F,defaultProjectPath:y,width:_}){let{jobs:u,error:L,loading:$,refetch:S}=j(20),[M,C]=i([]),[d,m]=i("list"),[f,w]=i(0),[h,g]=i(null),[x,B]=i(null),[p,c]=i(null);R(()=>{v().then(C).catch(o=>{let r=o instanceof Error?o.message:String(o);c(`couldn't load launchers: ${r}`),C([{tool:"claude_code",capabilities:{headless:!0,interactive:!0,remoteSpawn:!0}}])})},[]),R(()=>{if(!p)return;let o=setTimeout(()=>c(null),5e3);return()=>clearTimeout(o)},[p]),Z((o,r)=>{if(h){if(o==="y"||o==="Y"){let e=h.id;g(null),P(e).then(()=>{S(),c(`cancelled ${e.slice(0,8)}`)}).catch(n=>c(`cancel failed: ${n instanceof Error?n.message:String(n)}`))}else(o==="n"||o==="N"||r.escape)&&g(null);return}if(r.escape){if(d!=="none"){m("none");return}A();return}if(r.tab){m(e=>e==="list"?"form":e==="form"?"none":"list");return}if(o!=="q"&&d==="list"){if(r.upArrow)w(e=>Math.max(0,e-1));else if(r.downArrow)w(e=>Math.min(u.length-1,e+1));else if(o==="c"){let e=u[f];e&&(e.status==="running"||e.status==="queued"||e.status==="pending")&&g(e)}else if(o==="r"){let e=u[f],n=e?.result?.externalSessionId;e&&e.tool==="claude_code"&&n?(B({tool:"claude_code",projectPath:e.config.projectPath,resumeSessionId:n}),m("form")):c("resume needs a Claude Code session with a session id")}else if(o==="o"){let n=u[f]?.result?.externalSessionId;if(n){let O=process.env.RULEMETRIC_WEB_URL??"http://localhost:5174";import("node:child_process").then(({spawn:U})=>{U("open",[`${O}/sessions/${n}`],{detached:!0,stdio:"ignore"}).unref()})}}}});async function N(o){await I(o),B(null),m("list"),c("launched"),S()}return b(N,"handleSubmit"),a(l,{flexDirection:"column",borderStyle:"round",borderColor:T,width:_,paddingX:1,children:[a(l,{children:[t(s,{bold:!0,color:T,children:"Launcher"}),t(s,{dimColor:!0,children:" active org: "}),t(s,{children:F??"(none)"}),$&&t(s,{dimColor:!0,children:" loading\u2026"}),L&&a(s,{color:"#F55B5B",children:[" \u26A0 ",L]})]}),t(l,{marginTop:1,children:t(E,{jobs:u,selectedIndex:f,focused:d==="list"})}),t(l,{marginTop:1,children:t(J,{launchers:M,defaultProjectPath:x?.projectPath??y,defaultTool:x?.tool,defaultResumeSessionId:x?.resumeSessionId,focused:d==="form",onSubmit:N})}),h&&t(l,{marginTop:1,children:a(s,{color:"#FFD700",children:["Cancel job ",h.id.slice(0,8),"? (y/n)"]})}),p&&t(l,{marginTop:1,children:a(s,{dimColor:!0,children:["\xB7 ",p]})}),t(l,{marginTop:1,children:a(s,{dimColor:!0,children:["\u2191\u2193 select tab focus c cancel r resume o open esc ",d==="none"?"close":"back"]})})]})}b(K,"LauncherOverlay");export{K as a};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import{f as u}from"./chunk-RTWRHIKY.js";import{a}from"./chunk-ZLLER3HP.js";var h=5,l=a(t=>t==null?"n/a":`${Math.round(t*100)}%`,"pct");function d(t){return!t||t.length===0?"":`
|
|
2
|
+
|
|
3
|
+
## Prior cases that FAILED to discriminate \u2014 do NOT reproduce these
|
|
4
|
+
The cases below were run WITH and WITHOUT the instruction and did NOT separate the two
|
|
5
|
+
conditions (pass rate shown as with vs without). They measure nothing about the instruction \u2014
|
|
6
|
+
a case only helps if its pass rate MOVES between the two conditions. Replace them with cases
|
|
7
|
+
that WILL separate: target the specific behaviors THIS instruction uniquely changes, and avoid
|
|
8
|
+
tasks any competent agent passes or fails regardless of the rule.
|
|
9
|
+
${t.map(n=>`- "${n.name}" \u2014 ${l(n.withPassRate)} with vs ${l(n.withoutPassRate)} without (${n.reason})`).join(`
|
|
10
|
+
`)}`}a(d,"buildFeedbackBlock");var w=`You are designing eval test cases for an AI-coding-agent instruction (a CLAUDE.md rule, skill, or prompt). Your cases will be executed by running the prompt through an agent WITH and WITHOUT the instruction, then grading the outputs \u2014 so every case must be able to tell those two conditions apart.
|
|
11
|
+
|
|
12
|
+
Requirements for the set:
|
|
13
|
+
- Each case: a realistic task prompt a developer would give an agent, plus 2-3 expectations.
|
|
14
|
+
- Expectations must be DISCRIMINATING: they should pass when the instruction is followed and fail when it is not. An expectation that passes for any reasonable output is worthless.
|
|
15
|
+
- EVERY case MUST include at least one plain free-text expectation describing a QUALITATIVE outcome that requires judgment to assess \u2014 something a substring or regex check cannot settle (e.g. "Explains WHY the change is needed, not merely what changed"). These are graded by an LLM judge and are the ONLY expectations that can become human-review anchors; a case with none cannot help calibrate the judge, so never make a case entirely deterministic.
|
|
16
|
+
- You MAY ALSO add DETERMINISTIC expectations where an outcome is objectively checkable, using these exact prefixes (they are graded programmatically, not by an LLM judge) \u2014 pair them WITH a free-text expectation, do not use them alone:
|
|
17
|
+
- "contains: <substring>" \u2014 output must contain the substring (case-sensitive)
|
|
18
|
+
- "icontains: <substring>" \u2014 case-insensitive contains
|
|
19
|
+
- "not-contains: <substring>" \u2014 output must NOT contain the substring
|
|
20
|
+
- "regex: <pattern>" \u2014 output must match the pattern
|
|
21
|
+
- "json-valid" \u2014 output must parse as JSON
|
|
22
|
+
- Include exactly ONE "violation-attempt" case: a prompt that subtly encourages breaking the instruction's strongest prohibition; expectations assert the instruction still holds. Name it starting with "violation-attempt:".
|
|
23
|
+
- Name compliance cases starting with "compliance:".
|
|
24
|
+
- At most ${h} cases.
|
|
25
|
+
|
|
26
|
+
Respond with ONLY a valid JSON object:
|
|
27
|
+
{"cases": [{"name": "...", "prompt": "...", "expectations": ["..."]}]}`;async function y(t){let{content:r,name:n,feedback:p}=t,g=`## Instruction under test: ${n}
|
|
28
|
+
|
|
29
|
+
${r}${d(p)}`,s=await u(w,g,4e3);if(s===null)return null;let i=s.cases;if(!Array.isArray(i))throw new Error(`Case generator returned invalid shape (no cases array): ${JSON.stringify(s).slice(0,200)}`);let o=[];for(let m of i){let e=m;typeof e.name=="string"&&e.name.length>0&&typeof e.prompt=="string"&&e.prompt.length>0&&Array.isArray(e.expectations)&&e.expectations.length>0&&e.expectations.every(c=>typeof c=="string"&&c.length>0)&&o.push({name:e.name,prompt:e.prompt,expectations:e.expectations})}if(o.length===0)throw new Error(`Case generator produced no usable cases (${i.length} row(s), all malformed or empty)`);return o.slice(0,h)}a(y,"generateEvalCases");export{d as a,y as b};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as l}from"./chunk-
|
|
1
|
+
import{a as l}from"./chunk-EL5M4MAQ.js";import{a as r}from"./chunk-ZLLER3HP.js";var u=r(n=>{let t=n.grading.summary?.pass_rate;return typeof t=="number"?t:null},"passRateOf"),a=r(n=>(u(n)??0)>=1,"fullPass");function f(n,t){let i=new Map(n.filter(e=>u(e)!=null).map(e=>[e.evalName,e])),o=[];for(let e of t){if(u(e)==null)continue;let s=i.get(e.evalName);s&&o.push({withScore:a(e)?1:0,withoutScore:a(s)?1:0})}return o}r(f,"pairVersionResults");function d(n,t){let i=f(n,t);return i.length===0?null:l(i,{baseline:"prior-version"})}r(d,"buildVersionVerdict");function m(n,t,i){let o=`v${i} vs v${t}`;if(!n.sufficient)return`${o}: ${n.insufficientReason??"insufficient data"} \u2014 no effect claimed`;let e=n.delta>=0?"+":"",s=`95% CI ${(n.ci.lower*100).toFixed(0)}\u2013${(n.ci.upper*100).toFixed(0)}%`,c=n.significant?"significant":"not significant";return`${o}: ${e}${(n.delta*100).toFixed(0)}% pass rate (${s}, n=${n.nWith} paired, ${c})`}r(m,"formatVersionVerdict");export{f as a,d as b,m as c};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{c as e,d as o,j as y}from"./chunk-
|
|
1
|
+
import{c as e,d as o,j as y}from"./chunk-KXW3IWKQ.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 +1 @@
|
|
|
1
|
-
import{a as N}from"./chunk-5RBLIVBF.js";import{a as
|
|
1
|
+
import{a as N}from"./chunk-5RBLIVBF.js";import{a as T}from"./chunk-6V4WM73L.js";import{a as S}from"./chunk-GTOEWPIM.js";import{b as G}from"./chunk-VNYMMINL.js";import{a as C}from"./chunk-IL35G6CK.js";import{b as x}from"./chunk-WQ2BJQYB.js";import{e as k,f as E,h as d}from"./chunk-H2ORWIEY.js";import{a as h}from"./chunk-ZLLER3HP.js";async function W(v,f){let{mirrorId:s,evalTargetId:g,config:o}=v,a=h(e=>f.logger.info(e),"log"),i=await k(`/api/eval-targets/${g}`),$=await k(`/api/eval-targets/${g}/evals`);if($.length===0&&o.generateIfEmpty){a("No eval cases on target \u2014 generating from content via local LLM...");let e=await G({content:i.content,name:i.name});if(e===null)throw new Error("Case generation requires an LLM backend (claude CLI on PATH or ANTHROPIC_API_KEY) \u2014 none available on this worker.");let t=[];for(let n of e)t.push(await E(`/api/eval-targets/${g}/evals`,n));$=t,a(`Generated ${t.length} eval case(s)`)}if($.length===0)throw new N("No evals defined for target");let J=o.runsPerEval??1,R=o.timeout??12e4,j=o.iteration??1,y=new Set;if(f.job.attempts>1)for(let t=0;;t+=100){let n=await k(`/api/eval-targets/${g}/runs?jobId=${s}&limit=100&offset=${t}`);for(let r of n)y.add(`${r.evalId}|${r.configuration}|${r.runNumber}|${r.iteration}`);if(n.length<100)break}let _=[{name:"with_target",content:i.content}];o.skipBaseline||_.push({name:"without_target"});let p=[];for(let e of $)for(let t of _)for(let n=1;n<=J;n++)y.has(`${e.id}|${t.name}|${n}|${j}`)||p.push({eval_:e,configuration:t.name,targetContent:t.content,runNumber:n});y.size>0&&a(`Resuming attempt ${f.job.attempts}: ${y.size} run(s) already persisted, ${p.length} remaining`);let l=p.length,u=0,c=Math.min(o.parallel??1,4);await d(`/api/eval-jobs/${s}/progress`,{status:"running",progress:{total:l,completed:0,current:null,message:`Starting ${l} eval runs (concurrency: ${c})...`}});let b=[];async function I(e){let t=`${e.configuration} \xB7 ${e.eval_.name} \xB7 run#${e.runNumber}`;a(`[${u+1}/${l}] ${t}`);let n=c>1?T():null;try{let r=await x({prompt:e.eval_.prompt,targetContent:e.targetContent,workDir:n?.workDir,timeout:R,model:o.model}),m={};return!o.skipGrading&&e.eval_.expectations.length>0&&!r.error&&(m=await C({prompt:e.eval_.prompt,output:r.output,expectations:e.eval_.expectations,model:o.graderModel??o.model,timeout:R})),{jobId:s,evalId:e.eval_.id,evalTargetId:i.id,evalTargetVersion:i.version,configuration:e.configuration,runNumber:e.runNumber,iteration:j,status:r.error?"failed":"completed",outputs:r.error?{error:r.error}:{transcript:r.output,...r.model?{model:r.model}:{}},timing:{duration_ms:r.durationMs,total_tokens:r.totalTokens},grading:m,worktree:n?.isWorktree?!0:void 0}}finally{n?.cleanup()}}if(h(I,"processItem"),c<=1)for(let e of p){let t=`${e.configuration} \xB7 ${e.eval_.name} \xB7 run#${e.runNumber}`;await d(`/api/eval-jobs/${s}/progress`,{status:"running",progress:{total:l,completed:u,current:t,message:`Executing ${t}...`}});let n=await I(e);await E("/api/eval-runs",n),b.push(n),u++,await d(`/api/eval-jobs/${s}/progress`,{status:"running",progress:{total:l,completed:u,current:t,message:`Completed ${t}`}})}else{a(`Running ${l} evals with concurrency=${c} (worktree isolation)`);for(let e=0;e<p.length;e+=c){let t=p.slice(e,e+c),n=`batch ${Math.floor(e/c)+1}/${Math.ceil(p.length/c)}`;await d(`/api/eval-jobs/${s}/progress`,{status:"running",progress:{total:l,completed:u,current:n,message:`Executing ${n} (${t.length} parallel)...`}});let r=await Promise.all(t.map(I));for(let m of r)await E("/api/eval-runs",m),b.push(m),u++;await d(`/api/eval-jobs/${s}/progress`,{status:"running",progress:{total:l,completed:u,current:n,message:`Completed ${n}`}})}}let P=z(b),w;if(!o.skipGrading&&b.some(e=>e.grading&&Object.keys(e.grading).length>0))try{a(`Running meta-judge for job ${s}...`);let e=$.map(t=>{let r=b.filter(m=>m.evalId===t.id&&m.configuration==="with_target")[0];return{evalName:t.name,prompt:t.prompt,expectations:t.expectations,grading:r?.grading?r.grading:null,output:r?.outputs?.transcript?.slice(0,500)}});w=await S({targetName:i.name,evalResults:e,model:o.graderModel??o.model,timeout:6e4}),a(`Meta-judge: quality=${w.quality_score}/5, issues=${w.issues.length}`)}catch(e){a(`Meta-judge failed (non-fatal): ${e instanceof Error?e.message:String(e)}`)}let M=w?{...P,meta_judgement:w}:P;return a(`Job ${s} completed: ${u}/${l} runs`),await d(`/api/eval-jobs/${s}/state`,{result:M}).catch(e=>{a(`result persist failed: ${e instanceof Error?e.message:String(e)}`)}),M}h(W,"processEval");function z(v){let f=v.filter(a=>a.status==="completed"),s=v.filter(a=>a.status==="failed"),g=f.filter(a=>{let i=a.grading;return i&&Object.keys(i).length>0}),o=g.length>0?g.reduce((a,i)=>a+(i.grading?.summary?.pass_rate??0),0)/g.length:null;return{total:v.length,completed:f.length,failed:s.length,avgPassRate:o}}h(z,"buildSummary");export{W as a};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as C}from"./chunk-N7TGRFVZ.js";import{
|
|
1
|
+
import{a as C}from"./chunk-N7TGRFVZ.js";import{g as c,j as f}from"./chunk-KXW3IWKQ.js";import{c as m,d as p}from"./chunk-ZL4MZMUK.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,3 +1,3 @@
|
|
|
1
|
-
import{e as N}from"../../chunk-
|
|
1
|
+
import{e as N}from"../../chunk-25C5P7BF.js";import"../../chunk-TIOKY2IA.js";import"../../chunk-EXUPWAVK.js";import"../../chunk-RSKQRVPJ.js";import"../../chunk-XY4AK3TR.js";import"../../chunk-J66PBCNP.js";import"../../chunk-O2UOCI3Q.js";import"../../chunk-N7TGRFVZ.js";import"../../chunk-65TC72MN.js";import"../../chunk-YL3T4367.js";import"../../chunk-HDU5QPEO.js";import"../../chunk-QFVGUZDO.js";import"../../chunk-W2MOTOQE.js";import"../../chunk-6QKI756T.js";import"../../chunk-5RBLIVBF.js";import"../../chunk-4SFXTUFE.js";import{k as f}from"../../chunk-KXW3IWKQ.js";import"../../chunk-6V4WM73L.js";import"../../chunk-KAF3CYRW.js";import"../../chunk-UF6US7VU.js";import"../../chunk-KYDATXAB.js";import"../../chunk-ZL4MZMUK.js";import"../../chunk-CC4HVDUK.js";import"../../chunk-GTOEWPIM.js";import"../../chunk-TDD7IOV2.js";import"../../chunk-7DFNBRLY.js";import"../../chunk-MODXEGCU.js";import"../../chunk-VNYMMINL.js";import"../../chunk-RTWRHIKY.js";import"../../chunk-N7ODX6PO.js";import"../../chunk-67QCYUJU.js";import"../../chunk-GQRCSR2A.js";import"../../chunk-IL35G6CK.js";import"../../chunk-S6B2R2LL.js";import"../../chunk-EL5M4MAQ.js";import"../../chunk-WQ2BJQYB.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,4 +1,4 @@
|
|
|
1
|
-
import{b as h,c as f}from"../../chunk-
|
|
1
|
+
import{b as h,c as f}from"../../chunk-P6HUBBOD.js";import"../../chunk-EL5M4MAQ.js";import{a as m}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 c}from"../../chunk-H2ORWIEY.js";import"../../chunk-O6C2UGBY.js";import{a as u}from"../../chunk-ZLLER3HP.js";import{Args as p,Flags as v}from"@oclif/core";var d=class b extends m{static{u(this,"EvalBenchmarkCommand")}static description="Aggregate eval runs into a benchmark for a target";static examples=["<%= config.bin %> evals benchmark <target-id>","<%= config.bin %> evals benchmark <target-id> --iteration 2"];static args={targetId:p.string({description:"Eval target ID",required:!0})};static flags={iteration:v.integer({description:"Filter runs by iteration",default:1})};async run(){let{args:o,flags:l}=await this.parse(b);this.requireAuth();let g=await c(`/api/eval-targets/${o.targetId}`);this.log(`Aggregating benchmark for "${g.name}" v${g.version}, iteration ${l.iteration}`);let a=await h(o.targetId,l.iteration);a.totalRuns===0&&this.error("No completed runs found. Run evals first with `rulemetric evals run`."),this.log(`
|
|
2
2
|
Aggregated ${a.totalRuns} runs
|
|
3
3
|
`);for(let[e,n]of Object.entries(a.runSummary)){this.log(`${e}:`);for(let[r,i]of Object.entries(n)){let s=i;this.log(` ${r}: mean=${s.mean} stddev=${s.stddev} [${s.min}, ${s.max}]`)}}let t=a.verdict;if(t)if(this.log(`
|
|
4
4
|
Verdict (${t.mode}, baseline=${t.baseline}):`),!t.sufficient)this.log(` ${t.insufficientReason??"insufficient data"} \u2014 no effect claimed`);else{let e=t.delta>=0?"+":"";this.log(` pass-rate delta: ${e}${(t.delta*100).toFixed(0)}% (n=${t.nWith} paired)`),this.log(` 95% CI: ${(t.ci.lower*100).toFixed(0)}\u2013${(t.ci.upper*100).toFixed(0)}%`),t.pValue!=null&&this.log(` McNemar p: ${t.pValue.toFixed(4)}`),this.log(` significant: ${t.significant?"YES":"no"}`)}if(a.notes.length>0){this.log(`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{b as P,c as C}from"../../chunk-
|
|
1
|
+
import{b as P,c as C}from"../../chunk-XFNAFWWW.js";import{a as V}from"../../chunk-GQRCSR2A.js";import{a as N}from"../../chunk-IL35G6CK.js";import"../../chunk-S6B2R2LL.js";import"../../chunk-EL5M4MAQ.js";import{b as F}from"../../chunk-WQ2BJQYB.js";import{a as A}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 w,f as m,g as S}from"../../chunk-H2ORWIEY.js";import"../../chunk-O6C2UGBY.js";import{a as k}from"../../chunk-ZLLER3HP.js";import{createInterface as _}from"node:readline/promises";import{Args as q,Flags as g}from"@oclif/core";var $=class O extends A{static{k(this,"EvalOptimizeCommand")}static description="Iteratively optimize eval target content using eval results as feedback";static examples=["<%= config.bin %> evals optimize <target-id>","<%= config.bin %> evals optimize <target-id> --auto --max-iterations 3"];static args={targetId:q.string({description:"Eval target ID",required:!0})};static flags={auto:g.boolean({description:"Skip interactive review, apply suggestions automatically",default:!1}),"max-iterations":g.integer({description:"Maximum optimization iterations",default:5}),threshold:g.string({description:"Stop if pass rate reaches this threshold (0-1)",default:"0.95"}),model:g.string({description:"Model for eval execution"}),"analyzer-model":g.string({description:"Model for analysis/suggestions"}),timeout:g.integer({description:"Timeout per eval in ms",default:12e4})};async run(){let{args:n,flags:e}=await this.parse(O);this.requireAuth();let t=await w(`/api/eval-targets/${n.targetId}`),i=await w(`/api/eval-targets/${n.targetId}/evals`);i.length===0&&this.error("No evals found. Create some first with `rulemetric evals create`.");let s=[...i].sort(()=>Math.random()-.5),c=Math.ceil(s.length*.6),u=s.slice(0,c),d=s.slice(c);this.log(`Optimizing "${t.name}" v${t.version}`),this.log(`Evals: ${u.length} train, ${d.length} test`);let h=parseFloat(e.threshold);this.log(`Config: max ${e["max-iterations"]} iterations, threshold ${(h*100).toFixed(0)}%`),e.auto&&this.log("Mode: auto (no interactive review)"),this.log("");let T=t.version,f=0,x=0;for(let l=1;l<=e["max-iterations"];l++){this.log(`
|
|
2
2
|
=== Iteration ${l} ===`),this.log("Running train evals...");let b=await this.runEvalsOnTarget(t,u,e),p=this.computePassRate(b);if(this.log(`Train pass rate: ${(p*100).toFixed(1)}%`),p>=h){this.log(`Train score ${(p*100).toFixed(1)}% >= threshold ${(h*100).toFixed(0)}%. Stopping.`);let o=await this.runEvalsOnTarget(t,d,e),z=this.computePassRate(o);this.log(`Final test score: ${(z*100).toFixed(1)}%`),await m("/api/optimization-runs",{evalTargetId:t.id,type:"content",iteration:l,inputVersion:t.version,trainScore:p,testScore:z,analysis:{reason:"threshold_reached"},status:"completed"});break}this.log("Analyzing results...");let M=b.map(o=>({evalName:o.evalName,prompt:o.prompt,expectations:o.expectations,grading:o.grading})),a=await V({content:t.content,evalResults:M,model:e["analyzer-model"]??e.model,timeout:e.timeout});this.log(`
|
|
3
3
|
Assessment: ${a.overallAssessment}`),this.log(`Suggestions: ${a.suggestions.length}`);for(let o of a.suggestions)this.log(` - [${o.section}] ${o.reasoning}`);if(a.proposedContent===t.content){this.log("No changes proposed. Stopping."),await m("/api/optimization-runs",{evalTargetId:t.id,type:"content",iteration:l,inputVersion:t.version,trainScore:p,analysis:{reason:"no_changes"},status:"completed"});break}if(!e.auto&&!await this.confirm(`
|
|
4
4
|
Apply the proposed changes as a new version? [y/N] `)){this.log("Changes not applied. Stopping."),await m("/api/optimization-runs",{evalTargetId:t.id,type:"content",iteration:l,inputVersion:t.version,trainScore:p,analysis:{reason:"user_declined",suggestions:a.suggestions},status:"completed"});break}let r=await S(`/api/eval-targets/${t.id}`,{content:a.proposedContent});this.log(`Created v${r.version}`),this.log(`Running test evals on v${t.version} (baseline) and v${r.version}...`);let E=await this.runEvalsOnTarget(t,d,e),R=await this.runEvalsOnTarget(r,d,e),v=this.computePassRate(R),I=this.computePassRate(E);this.log(`Test pass rate: v${t.version} ${(I*100).toFixed(1)}% \u2192 v${r.version} ${(v*100).toFixed(1)}%`);let y=P(E,R);if(y&&this.log(C(y,t.version,r.version)),await m("/api/optimization-runs",{evalTargetId:t.id,type:"content",iteration:l,inputVersion:t.version,outputVersion:r.version,trainScore:p,testScore:v,analysis:{suggestions:a.suggestions,overallAssessment:a.overallAssessment,priorTestScore:I,verdict:y},status:"completed"}),v>f)f=v,T=r.version,x=0;else if(x++,x>=2){this.log("No improvement for 2 consecutive iterations. Stopping.");break}t=r}this.log(`
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import{b as w}from"../../chunk-VNYMMINL.js";import"../../chunk-RTWRHIKY.js";import"../../chunk-N7ODX6PO.js";import"../../chunk-67QCYUJU.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 g,f as p,h as v}from"../../chunk-H2ORWIEY.js";import"../../chunk-O6C2UGBY.js";import{a as d}from"../../chunk-ZLLER3HP.js";import{Args as P,Flags as b}from"@oclif/core";var r=d(i=>i==null?"n/a":`${Math.round(i*100)}%`,"pct"),c=class i extends f{static{d(this,"EvalRefineCases")}static description="Retire non-discriminating eval cases and regenerate discriminating replacements (\xA76e)";static examples=["<%= config.bin %> evals refine-cases <target-id> # preview","<%= config.bin %> evals refine-cases <target-id> --yes # apply: retire + regenerate","<%= config.bin %> evals refine-cases <target-id> --yes --no-generate"];static args={targetId:P.string({description:"Eval target ID",required:!0})};static flags={yes:b.boolean({char:"y",description:"Apply (retire + regenerate). Without this, only previews."}),"no-generate":b.boolean({description:"Retire dead cases but do not regenerate replacements."})};async run(){let{args:$,flags:o}=await this.parse(i);this.requireAuth();let n=$.targetId,s=await g(`/api/eval-targets/${n}`),m=await g(`/api/eval-targets/${n}/judge-calibration`),t=m.caseDiscrimination;if(!t||t.cases.length===0&&t.unpairedCases.length===0){this.log("No case-discrimination data yet \u2014 run some evals with AND without the target first (`evals run` / the web Run Evals button), then refine.");return}let u=t.cases.filter(e=>!e.discriminating),a=[...u.map(e=>({evalId:e.evalId,name:e.name,feedback:{name:e.name,withPassRate:e.withPassRate,withoutPassRate:e.withoutPassRate,reason:e.note}})),...t.unpairedCases.map(e=>({evalId:e.evalId,name:e.name,feedback:{name:e.name,withPassRate:e.withPassRate??0,withoutPassRate:e.withoutPassRate,reason:"runs in only one cohort (no with-vs-without comparison possible)"}}))];if(this.log(`Target "${s.name}" v${s.version} \u2014 judge ${m.judge.currentModel??"(unstamped)"}`),this.log(`${t.total} diagnosable case(s): ${t.discriminating} discriminate, ${t.nonDiscriminating} flat/wrong-sign, ${t.unpaired} unpaired.`),a.length===0){this.log("Every case discriminates \u2014 nothing to retire. \u{1F389}");return}this.log(`
|
|
2
|
+
Would retire ${a.length} non-discriminating case(s):`);for(let e of u)this.log(` \u2717 ${e.name} \u2014 ${r(e.withPassRate)} with vs ${r(e.withoutPassRate)} without (\u0394${(e.separation*100).toFixed(0)}pp) \u2014 ${e.note}`);for(let e of t.unpairedCases)this.log(` \u2717 ${e.name} \u2014 ${r(e.withPassRate)} with vs ${r(e.withoutPassRate)} without \u2014 unpaired`);if(!o.yes){this.log(`
|
|
3
|
+
Preview only. Re-run with --yes to retire ${a.length} case(s)${o["no-generate"]?"":" and generate replacements"}.`);return}for(let e of a)await v(`/api/eval-targets/${n}/evals/${e.evalId}`,{retire:!0,retiredReason:e.feedback.reason}),this.log(` retired ${e.name}`);if(o["no-generate"]){this.log(`
|
|
4
|
+
Retired ${a.length} case(s). Skipped regeneration (--no-generate).`);return}this.log(`
|
|
5
|
+
Generating discriminating replacements via local LLM\u2026`);let l=await w({content:s.content,name:s.name,feedback:a.map(e=>e.feedback)});if(l===null){this.warn("No local LLM backend available \u2014 cases retired but no replacements generated. Install the `claude` CLI (or set ANTHROPIC_API_KEY), then run `evals refine-cases` again or add cases with `evals create`.");return}for(let e of l){let h=await p(`/api/eval-targets/${n}/evals`,{name:e.name,prompt:e.prompt,expectations:e.expectations});this.log(` + ${h.name} (${h.id})`)}this.log(`
|
|
6
|
+
Done: retired ${a.length}, added ${l.length}. Run \`rulemetric evals run ${n}\` to build depth on the refreshed set, then review discrimination.`)}};export{c as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as F}from"../chunk-DVN7GFJG.js";import{a as M}from"../chunk-O2SDD2WW.js";import{a as E}from"../chunk-GBMF3TP6.js";import{a as O}from"../chunk-WSCK4WNK.js";import{a as D}from"../chunk-4Z5ECCJE.js";import"../chunk-ARNZQBMX.js";import{a as B,b as S,c as R}from"../chunk-G6XGDHGC.js";import{a as $}from"../chunk-
|
|
1
|
+
import{a as F}from"../chunk-DVN7GFJG.js";import{a as M}from"../chunk-O2SDD2WW.js";import{a as E}from"../chunk-GBMF3TP6.js";import{a as O}from"../chunk-WSCK4WNK.js";import{a as D}from"../chunk-4Z5ECCJE.js";import"../chunk-ARNZQBMX.js";import{a as B,b as S,c as R}from"../chunk-G6XGDHGC.js";import{a as $}from"../chunk-SJGLRC2R.js";import"../chunk-RDET7CKR.js";import"../chunk-NBTC5FNV.js";import"../chunk-TU2AR6XO.js";import{a as u,b as T,d as a,e as v}from"../chunk-NJ5UED3H.js";import"../chunk-ZR3MUNLS.js";import"../chunk-ZXF5NE54.js";import"../chunk-7DFNBRLY.js";import{a as X}from"../chunk-3AV3GTMP.js";import"../chunk-H2ORWIEY.js";import"../chunk-O6C2UGBY.js";import{a as m}from"../chunk-ZLLER3HP.js";import{useState as w,useEffect as nt,useCallback as G,useRef as st}from"react";import{render as U,Box as c,Text as o,useInput as at,useApp as lt}from"ink";import{Fragment as ht,jsx as t,jsxs as h}from"react/jsx-runtime";var dt=90;function J(){let s=process.stdout.columns||80,n=Math.min(160,s),i=n>=dt,d=i?Math.floor(n/2):n,b=Math.max(6,Math.min(10,d-34));return{dashWidth:n,wide:i,halfWidth:d,barWidth:b}}m(J,"getLayout");function z({active:s,providerName:n}){return h(c,{justifyContent:"space-between",paddingX:1,children:[t(c,{gap:1,children:u.map(i=>t(o,{bold:s===i,color:s===i?a:v,children:s===i?`[ ${T[i]} ]`:` ${T[i]} `},i))}),n&&t(o,{color:a,bold:!0,children:n})]})}m(z,"PeriodTabs");function H({width:s,insightsFocused:n=!1}){return t(c,{borderStyle:"round",borderColor:v,width:s,justifyContent:"center",paddingX:1,children:h(o,{children:[t(o,{color:a,bold:!0,children:"<"}),t(o,{color:a,children:">"}),t(o,{dimColor:!0,children:" switch "}),t(o,{color:a,bold:!0,children:"q"}),t(o,{dimColor:!0,children:" quit "}),t(o,{color:a,bold:!0,children:"s"}),h(o,{dimColor:!0,children:[" ",n?"back":"suggestions"," "]}),t(o,{color:a,bold:!0,children:"1"}),t(o,{dimColor:!0,children:"-"}),t(o,{color:a,bold:!0,children:"5"}),t(o,{dimColor:!0,children:" period "}),t(o,{color:a,bold:!0,children:"r"}),t(o,{dimColor:!0,children:" refresh "}),t(o,{color:a,bold:!0,children:"n"}),t(o,{dimColor:!0,children:" new session "}),t(o,{color:a,bold:!0,children:"l"}),t(o,{dimColor:!0,children:" launcher"})]})})}m(H,"StatusBar");function ct({wide:s,width:n,children:i}){return s?t(c,{width:n,children:i}):t(ht,{children:i})}m(ct,"Row");function ut({initialLocal:s,initialApi:n,initialInstructions:i,initialPeriod:d,initialLauncherFocused:b=!1}){let{exit:j}=lt(),[e,L]=w(d),[K,Q]=w(s),[W,V]=w(n),[Z,tt]=w(i),[ot,k]=w(!1),[p,I]=w(!1),[Y,_]=w(b),et=X()?.orgSlug??null,y=st(null),it=J(),g=G(async()=>{k(!0);let[r,x,P]=await Promise.all([B(),S(),R()]);Q(r),V(x),tt(P),k(!1)},[]);nt(()=>{let r=setInterval(g,3e4);return()=>clearInterval(r)},[g]);let f=G(r=>{r!==e&&(L(r),y.current&&clearTimeout(y.current),y.current=setTimeout(g,300))},[e,g]);at((r,x)=>{if(Y)return;if(r==="q"){if(p){I(!1);return}j();return}if(r==="s"){I(A=>!A);return}if(x.escape&&p){I(!1);return}if(r==="l"&&!p){_(!0);return}if(p)return;if(r==="r"){g();return}if(r==="n"){import("../dist-FAVALJ5C.js").then(({getLauncher:A})=>{A("claude_code").launch({projectPath:process.cwd(),mode:"interactive"})});return}let P=u.indexOf(e);x.leftArrow?f(u[(P-1+u.length)%u.length]):x.rightArrow||x.tab?f(u[(P+1)%u.length]):r==="1"?f("today"):r==="2"?f("week"):r==="3"?f("30days"):r==="4"?f("month"):r==="5"&&f("all")});let{dashWidth:l,wide:q,halfWidth:rt,barWidth:C}=it,N=q?rt:l;return ot?h(c,{flexDirection:"column",width:l,children:[t(z,{active:e}),t(c,{borderStyle:"round",borderColor:a,paddingX:1,width:l,children:h(o,{dimColor:!0,children:["Loading ",T[e],"..."]})}),t(H,{width:l})]}):Y?t(c,{flexDirection:"column",width:l,children:t($,{onClose:()=>_(!1),activeOrg:et,defaultProjectPath:process.cwd(),width:l})}):h(c,{flexDirection:"column",width:l,children:[t(z,{active:e}),t(D,{local:K,api:W,label:T[e],width:l}),h(ct,{wide:q,width:l,children:[t(O,{api:W,width:N,barWidth:C}),t(F,{api:W,width:N,barWidth:C})]}),t(E,{instructions:Z,width:l,barWidth:C}),t(M,{api:W,width:l,focused:p}),t(H,{width:l,insightsFocused:p})]})}m(ut,"InteractiveDashboard");async function yt(s="week",n={}){let[i,d,b]=await Promise.all([B(),S(),R()]);if(process.stdin.isTTY&&process.stdout.isTTY){let{waitUntilExit:e}=U(t(ut,{initialLocal:i,initialApi:d,initialInstructions:b,initialPeriod:s,initialLauncherFocused:n.openLauncher??!1}));await e()}else{let e=J(),{unmount:L}=U(h(c,{flexDirection:"column",width:e.dashWidth,children:[t(D,{local:i,api:d,label:T[s],width:e.dashWidth}),t(O,{api:d,width:e.dashWidth,barWidth:e.barWidth}),t(F,{api:d,width:e.dashWidth,barWidth:e.barWidth}),t(E,{instructions:b,width:e.dashWidth,barWidth:e.barWidth}),t(M,{api:d,width:e.dashWidth})]}),{patchConsole:!1});L()}}m(yt,"renderDashboard");export{yt as renderDashboard};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"../../chunk-
|
|
1
|
+
import{a}from"../../chunk-SJGLRC2R.js";import"../../chunk-RDET7CKR.js";import"../../chunk-NBTC5FNV.js";import"../../chunk-TU2AR6XO.js";import"../../chunk-NJ5UED3H.js";import"../../chunk-ZR3MUNLS.js";import"../../chunk-ZXF5NE54.js";import"../../chunk-H2ORWIEY.js";import"../../chunk-O6C2UGBY.js";import"../../chunk-ZLLER3HP.js";export{a as LauncherOverlay};
|
package/dist/lib/agent-loop.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b,c,d,e}from"../chunk-
|
|
1
|
+
import{a,b,c,d,e}from"../chunk-25C5P7BF.js";import"../chunk-TIOKY2IA.js";import"../chunk-EXUPWAVK.js";import"../chunk-RSKQRVPJ.js";import"../chunk-XY4AK3TR.js";import"../chunk-J66PBCNP.js";import"../chunk-O2UOCI3Q.js";import"../chunk-N7TGRFVZ.js";import"../chunk-65TC72MN.js";import"../chunk-YL3T4367.js";import"../chunk-HDU5QPEO.js";import"../chunk-QFVGUZDO.js";import"../chunk-W2MOTOQE.js";import"../chunk-6QKI756T.js";import"../chunk-5RBLIVBF.js";import"../chunk-4SFXTUFE.js";import"../chunk-KXW3IWKQ.js";import"../chunk-6V4WM73L.js";import"../chunk-KAF3CYRW.js";import"../chunk-UF6US7VU.js";import"../chunk-KYDATXAB.js";import"../chunk-ZL4MZMUK.js";import"../chunk-CC4HVDUK.js";import"../chunk-GTOEWPIM.js";import"../chunk-TDD7IOV2.js";import"../chunk-7DFNBRLY.js";import"../chunk-MODXEGCU.js";import"../chunk-VNYMMINL.js";import"../chunk-RTWRHIKY.js";import"../chunk-N7ODX6PO.js";import"../chunk-67QCYUJU.js";import"../chunk-GQRCSR2A.js";import"../chunk-IL35G6CK.js";import"../chunk-S6B2R2LL.js";import"../chunk-EL5M4MAQ.js";import"../chunk-WQ2BJQYB.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 +1 @@
|
|
|
1
|
-
import{a,b,c}from"../chunk-
|
|
1
|
+
import{a,b,c}from"../chunk-P6HUBBOD.js";import"../chunk-EL5M4MAQ.js";import"../chunk-H2ORWIEY.js";import"../chunk-O6C2UGBY.js";import"../chunk-ZLLER3HP.js";export{b as aggregateBenchmark,c as postBenchmark,a as summarizeRuns};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"../chunk-
|
|
1
|
+
import{a,b}from"../chunk-VNYMMINL.js";import"../chunk-RTWRHIKY.js";import"../chunk-N7ODX6PO.js";import"../chunk-67QCYUJU.js";import"../chunk-ZLLER3HP.js";export{a as buildFeedbackBlock,b as generateEvalCases};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"../chunk-
|
|
1
|
+
import{a}from"../chunk-CC4HVDUK.js";import"../chunk-VNYMMINL.js";import"../chunk-RTWRHIKY.js";import"../chunk-N7ODX6PO.js";import"../chunk-67QCYUJU.js";import"../chunk-GQRCSR2A.js";import"../chunk-IL35G6CK.js";import"../chunk-S6B2R2LL.js";import"../chunk-WQ2BJQYB.js";import"../chunk-H2ORWIEY.js";import"../chunk-O6C2UGBY.js";import"../chunk-ZLLER3HP.js";export{a as processConversationJob};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"../../chunk-
|
|
1
|
+
import{a}from"../../chunk-KYDATXAB.js";import"../../chunk-ZL4MZMUK.js";import"../../chunk-TDD7IOV2.js";import"../../chunk-MODXEGCU.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 cronSuggestInstructions};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b}from"../../chunk-
|
|
1
|
+
import{a,b}from"../../chunk-J66PBCNP.js";import"../../chunk-KXW3IWKQ.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-
|
|
1
|
+
import{a}from"../../chunk-O2UOCI3Q.js";import"../../chunk-N7TGRFVZ.js";import"../../chunk-5RBLIVBF.js";import"../../chunk-KXW3IWKQ.js";import"../../chunk-ZLLER3HP.js";export{a as processAnnouncement};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"../../chunk-
|
|
1
|
+
import{a}from"../../chunk-YLVPZ3BS.js";import"../../chunk-N7TGRFVZ.js";import"../../chunk-KXW3IWKQ.js";import"../../chunk-ZL4MZMUK.js";import"../../chunk-ZLLER3HP.js";export{a as processChangelog};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"../../chunk-
|
|
1
|
+
import{a}from"../../chunk-65TC72MN.js";import"../../chunk-CC4HVDUK.js";import"../../chunk-VNYMMINL.js";import"../../chunk-RTWRHIKY.js";import"../../chunk-N7ODX6PO.js";import"../../chunk-67QCYUJU.js";import"../../chunk-GQRCSR2A.js";import"../../chunk-IL35G6CK.js";import"../../chunk-S6B2R2LL.js";import"../../chunk-WQ2BJQYB.js";import"../../chunk-H2ORWIEY.js";import"../../chunk-O6C2UGBY.js";import"../../chunk-ZLLER3HP.js";export{a as processConversation};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"../../chunk-
|
|
1
|
+
import{a}from"../../chunk-YL3T4367.js";import"../../chunk-5RBLIVBF.js";import"../../chunk-6V4WM73L.js";import"../../chunk-GTOEWPIM.js";import"../../chunk-VNYMMINL.js";import"../../chunk-RTWRHIKY.js";import"../../chunk-N7ODX6PO.js";import"../../chunk-67QCYUJU.js";import"../../chunk-IL35G6CK.js";import"../../chunk-S6B2R2LL.js";import"../../chunk-WQ2BJQYB.js";import"../../chunk-H2ORWIEY.js";import"../../chunk-O6C2UGBY.js";import"../../chunk-ZLLER3HP.js";export{a as processEval};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"../../chunk-
|
|
1
|
+
import{a}from"../../chunk-4SFXTUFE.js";import"../../chunk-KXW3IWKQ.js";import"../../chunk-IL35G6CK.js";import"../../chunk-S6B2R2LL.js";import"../../chunk-EL5M4MAQ.js";import"../../chunk-WQ2BJQYB.js";import"../../chunk-ZLLER3HP.js";export{a as processMemoryAb};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"../../chunk-
|
|
1
|
+
import{a}from"../../chunk-EXUPWAVK.js";import"../../chunk-6QKI756T.js";import"../../chunk-5RBLIVBF.js";import"../../chunk-KXW3IWKQ.js";import"../../chunk-7DFNBRLY.js";import"../../chunk-N7ODX6PO.js";import"../../chunk-ZLLER3HP.js";export{a as processRunCleanup};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"../../chunk-
|
|
1
|
+
import{a}from"../../chunk-XY4AK3TR.js";import"../../chunk-KXW3IWKQ.js";import"../../chunk-RTWRHIKY.js";import"../../chunk-N7ODX6PO.js";import"../../chunk-67QCYUJU.js";import"../../chunk-ZLLER3HP.js";export{a as processSessionGoal};
|
package/dist/lib/manual-tasks.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as l}from"../chunk-
|
|
1
|
+
import{a as l}from"../chunk-YLVPZ3BS.js";import"../chunk-N7TGRFVZ.js";import"../chunk-KXW3IWKQ.js";import{a as u}from"../chunk-UF6US7VU.js";import{a as g}from"../chunk-KYDATXAB.js";import"../chunk-ZL4MZMUK.js";import"../chunk-TDD7IOV2.js";import"../chunk-MODXEGCU.js";import"../chunk-RTWRHIKY.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 +1 @@
|
|
|
1
|
-
import{a,b,c}from"../chunk-
|
|
1
|
+
import{a,b,c}from"../chunk-XFNAFWWW.js";import"../chunk-EL5M4MAQ.js";import"../chunk-ZLLER3HP.js";export{b as buildVersionVerdict,c as formatVersionVerdict,a as pairVersionResults};
|
package/oclif.manifest.json
CHANGED
|
@@ -1449,6 +1449,61 @@
|
|
|
1449
1449
|
"optimize.js"
|
|
1450
1450
|
]
|
|
1451
1451
|
},
|
|
1452
|
+
"evals:refine-cases": {
|
|
1453
|
+
"aliases": [],
|
|
1454
|
+
"args": {
|
|
1455
|
+
"targetId": {
|
|
1456
|
+
"description": "Eval target ID",
|
|
1457
|
+
"name": "targetId",
|
|
1458
|
+
"required": true
|
|
1459
|
+
}
|
|
1460
|
+
},
|
|
1461
|
+
"description": "Retire non-discriminating eval cases and regenerate discriminating replacements (§6e)",
|
|
1462
|
+
"examples": [
|
|
1463
|
+
"<%= config.bin %> evals refine-cases <target-id> # preview",
|
|
1464
|
+
"<%= config.bin %> evals refine-cases <target-id> --yes # apply: retire + regenerate",
|
|
1465
|
+
"<%= config.bin %> evals refine-cases <target-id> --yes --no-generate"
|
|
1466
|
+
],
|
|
1467
|
+
"flags": {
|
|
1468
|
+
"api-url": {
|
|
1469
|
+
"description": "Override API base URL",
|
|
1470
|
+
"env": "RULEMETRIC_API_URL",
|
|
1471
|
+
"hidden": true,
|
|
1472
|
+
"name": "api-url",
|
|
1473
|
+
"hasDynamicHelp": false,
|
|
1474
|
+
"multiple": false,
|
|
1475
|
+
"type": "option"
|
|
1476
|
+
},
|
|
1477
|
+
"yes": {
|
|
1478
|
+
"char": "y",
|
|
1479
|
+
"description": "Apply (retire + regenerate). Without this, only previews.",
|
|
1480
|
+
"name": "yes",
|
|
1481
|
+
"allowNo": false,
|
|
1482
|
+
"type": "boolean"
|
|
1483
|
+
},
|
|
1484
|
+
"no-generate": {
|
|
1485
|
+
"description": "Retire dead cases but do not regenerate replacements.",
|
|
1486
|
+
"name": "no-generate",
|
|
1487
|
+
"allowNo": false,
|
|
1488
|
+
"type": "boolean"
|
|
1489
|
+
}
|
|
1490
|
+
},
|
|
1491
|
+
"hasDynamicHelp": false,
|
|
1492
|
+
"hiddenAliases": [],
|
|
1493
|
+
"id": "evals:refine-cases",
|
|
1494
|
+
"pluginAlias": "@rulemetric/cli",
|
|
1495
|
+
"pluginName": "@rulemetric/cli",
|
|
1496
|
+
"pluginType": "core",
|
|
1497
|
+
"strict": true,
|
|
1498
|
+
"enableJsonFlag": false,
|
|
1499
|
+
"isESM": true,
|
|
1500
|
+
"relativePath": [
|
|
1501
|
+
"dist",
|
|
1502
|
+
"commands",
|
|
1503
|
+
"evals",
|
|
1504
|
+
"refine-cases.js"
|
|
1505
|
+
]
|
|
1506
|
+
},
|
|
1452
1507
|
"evals:run": {
|
|
1453
1508
|
"aliases": [],
|
|
1454
1509
|
"args": {
|
|
@@ -4077,5 +4132,5 @@
|
|
|
4077
4132
|
]
|
|
4078
4133
|
}
|
|
4079
4134
|
},
|
|
4080
|
-
"version": "0.7.
|
|
4135
|
+
"version": "0.7.20"
|
|
4081
4136
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rulemetric/cli",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.20",
|
|
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/
|
|
78
|
-
"@rulemetric/
|
|
79
|
-
"@rulemetric/skills-registry": "0.7.
|
|
77
|
+
"@rulemetric/hooks": "0.7.20",
|
|
78
|
+
"@rulemetric/proxy": "0.7.20",
|
|
79
|
+
"@rulemetric/skills-registry": "0.7.20"
|
|
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": {
|
package/dist/chunk-5XP7WWJR.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import{f as r}from"./chunk-RTWRHIKY.js";import{a as o}from"./chunk-ZLLER3HP.js";var i=5,g=`You are designing eval test cases for an AI-coding-agent instruction (a CLAUDE.md rule, skill, or prompt). Your cases will be executed by running the prompt through an agent WITH and WITHOUT the instruction, then grading the outputs \u2014 so every case must be able to tell those two conditions apart.
|
|
2
|
-
|
|
3
|
-
Requirements for the set:
|
|
4
|
-
- Each case: a realistic task prompt a developer would give an agent, plus 1-3 expectations.
|
|
5
|
-
- Expectations must be DISCRIMINATING: they should pass when the instruction is followed and fail when it is not. An expectation that passes for any reasonable output is worthless.
|
|
6
|
-
- Prefer DETERMINISTIC expectations wherever the outcome is objectively checkable, using these exact prefixes (they are graded programmatically, not by an LLM judge):
|
|
7
|
-
- "contains: <substring>" \u2014 output must contain the substring (case-sensitive)
|
|
8
|
-
- "icontains: <substring>" \u2014 case-insensitive contains
|
|
9
|
-
- "not-contains: <substring>" \u2014 output must NOT contain the substring
|
|
10
|
-
- "regex: <pattern>" \u2014 output must match the pattern
|
|
11
|
-
- "json-valid" \u2014 output must parse as JSON
|
|
12
|
-
Use plain free-text expectations only for genuinely subjective outcomes.
|
|
13
|
-
- Include exactly ONE "violation-attempt" case: a prompt that subtly encourages breaking the instruction's strongest prohibition; expectations assert the instruction still holds. Name it starting with "violation-attempt:".
|
|
14
|
-
- Name compliance cases starting with "compliance:".
|
|
15
|
-
- At most ${i} cases.
|
|
16
|
-
|
|
17
|
-
Respond with ONLY a valid JSON object:
|
|
18
|
-
{"cases": [{"name": "...", "prompt": "...", "expectations": ["..."]}]}`;async function d(c){let{content:p,name:l}=c,u=`## Instruction under test: ${l}
|
|
19
|
-
|
|
20
|
-
${p}`,e=await r(g,u,4e3);if(e===null)return null;let n=e.cases;if(!Array.isArray(n))throw new Error(`Case generator returned invalid shape (no cases array): ${JSON.stringify(e).slice(0,200)}`);let s=[];for(let m of n){let t=m;typeof t.name=="string"&&t.name.length>0&&typeof t.prompt=="string"&&t.prompt.length>0&&Array.isArray(t.expectations)&&t.expectations.length>0&&t.expectations.every(a=>typeof a=="string"&&a.length>0)&&s.push({name:t.name,prompt:t.prompt,expectations:t.expectations})}if(s.length===0)throw new Error(`Case generator produced no usable cases (${n.length} row(s), all malformed or empty)`);return s.slice(0,i)}o(d,"generateEvalCases");export{d as a};
|
package/dist/chunk-AP4TQRZJ.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as m,c as yr}from"./chunk-ZLLER3HP.js";import{boolean as Ao,pgTable as Tr,text as Qe,timestamp as Rt,uuid as zo}from"drizzle-orm/pg-core";import{pgTable as Ye,text as te,timestamp as Ae,jsonb as To,uuid as J,primaryKey as wo}from"drizzle-orm/pg-core";var u=Ye("organizations",{id:J("id").primaryKey().defaultRandom(),name:te("name").unique().notNull(),slug:te("slug").unique().notNull(),metadata:To("metadata"),createdAt:Ae("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Ae("updated_at",{withTimezone:!0}).defaultNow()}),v=Ye("teams",{id:J("id").primaryKey().defaultRandom(),orgId:J("org_id").references(()=>u.id,{onDelete:"cascade"}),name:te("name").notNull(),slug:te("slug").notNull(),metadata:To("metadata"),createdAt:Ae("created_at",{withTimezone:!0}).defaultNow()}),oe=Ye("user_organizations",{userId:J("user_id").notNull(),orgId:J("org_id").references(()=>u.id,{onDelete:"cascade"}).notNull(),role:te("role").notNull().default("member"),createdAt:Ae("created_at",{withTimezone:!0}).defaultNow()},e=>[wo({columns:[e.userId,e.orgId]})]),ne=Ye("user_teams",{userId:J("user_id").notNull(),teamId:J("team_id").references(()=>v.id,{onDelete:"cascade"}).notNull(),role:te("role").notNull().default("member"),createdAt:Ae("created_at",{withTimezone:!0}).defaultNow()},e=>[wo({columns:[e.userId,e.teamId]})]);var o=Tr("profiles",{id:zo("id").primaryKey(),email:Qe("email"),displayName:Qe("display_name"),activeOrgId:zo("active_org_id").references(()=>u.id,{onDelete:"set null"}),isSuperadmin:Ao("is_superadmin").notNull().default(!1),claudeCodePlan:Qe("claude_code_plan"),planSource:Qe("plan_source").notNull().default("detected"),setupCompletedAt:Rt("setup_completed_at",{withTimezone:!0}),liveSendSkipped:Ao("live_send_skipped").notNull().default(!1),createdAt:Rt("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Rt("updated_at",{withTimezone:!0}).defaultNow()});import{pgTable as jr,text as se,timestamp as St,jsonb as ko,uuid as $e,integer as Rr,boolean as br,index as Kt}from"drizzle-orm/pg-core";import{boolean as Ar,jsonb as zr,pgTable as Et,primaryKey as Ro,text as Y,timestamp as De,uniqueIndex as kt,uuid as Q}from"drizzle-orm/pg-core";import{sql as Dr}from"drizzle-orm";import{pgTable as Do,text as g,timestamp as ze,jsonb as Xe,uuid as C,integer as bt,boolean as wr,uniqueIndex as jo,index as We}from"drizzle-orm/pg-core";var r=Do("instructions",{id:C("id").primaryKey().defaultRandom(),name:g("name").notNull(),description:g("description").notNull(),type:g("type").notNull().default("instruction"),scope:g("scope").notNull(),scopeRef:C("scope_ref"),version:g("version").notNull(),content:g("content").notNull(),frontmatter:Xe("frontmatter").notNull(),slots:Xe("slots"),tags:g("tags").array(),compatibility:g("compatibility").array(),createdBy:C("created_by"),createdAt:ze("created_at",{withTimezone:!0}).defaultNow(),updatedAt:ze("updated_at",{withTimezone:!0}).defaultNow(),archived:wr("archived").default(!1),archivedAt:ze("archived_at",{withTimezone:!0}),archivedBy:C("archived_by"),forkedFromId:C("forked_from_id").references(()=>r.id,{onDelete:"set null"}),upstreamVersion:g("upstream_version"),badge:g("badge"),contentHash:g("content_hash"),contextIdentity:g("context_identity"),scanScore:bt("scan_score"),scanFindings:Xe("scan_findings"),popularityScore:bt("popularity_score"),sourceUpdatedAt:ze("source_updated_at",{withTimezone:!0})},e=>[jo("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=Do("instruction_versions",{id:C("id").primaryKey().defaultRandom(),instructionId:C("instruction_id").references(()=>r.id,{onDelete:"cascade"}),versionNumber:bt("version_number").notNull(),content:g("content").notNull(),frontmatter:Xe("frontmatter").notNull(),changeSummary:g("change_summary"),createdBy:C("created_by"),createdAt:ze("created_at",{withTimezone:!0}).defaultNow()},e=>[jo("instruction_versions_instruction_version_idx").on(e.instructionId,e.versionNumber)]);var s=Et("projects",{id:Q("id").primaryKey().defaultRandom(),orgId:Q("org_id").references(()=>u.id,{onDelete:"cascade"}),name:Y("name").notNull(),description:Y("description"),githubRepo:Y("github_repo"),gitRemoteUrl:Y("git_remote_url"),gitRootCommit:Y("git_root_commit"),gitRemoteAliases:Y("git_remote_aliases").array().notNull().default([]),metadata:zr("metadata"),createdBy:Q("created_by"),createdAt:De("created_at",{withTimezone:!0}).defaultNow(),updatedAt:De("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(Dr`${e.gitRemoteUrl} IS NOT NULL`)]),q=Et("project_instructions",{projectId:Q("project_id").references(()=>s.id,{onDelete:"cascade"}).notNull(),instructionId:Q("instruction_id").references(()=>r.id,{onDelete:"cascade"}).notNull(),addedAt:De("added_at",{withTimezone:!0}).defaultNow(),addedBy:Q("added_by")},e=>[Ro({columns:[e.projectId,e.instructionId]})]),bo=Et("project_checkouts",{projectId:Q("project_id").references(()=>s.id,{onDelete:"cascade"}).notNull(),path:Y("path").notNull(),isWorktree:Ar("is_worktree").notNull().default(!1),firstSeen:De("first_seen",{withTimezone:!0}).notNull().defaultNow(),lastSeen:De("last_seen",{withTimezone:!0}).notNull().defaultNow()},e=>[Ro({columns:[e.projectId,e.path]}),kt("project_checkouts_path_unique").on(e.path)]);var x=jr("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:ko("tool_spec").notNull().default([]),autoWorktree:br("auto_worktree").notNull().default(!0),status:se("status").notNull().default("pending"),sessionCount:Rr("session_count").notNull().default(0),metadata:ko("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 I,timestamp as je,jsonb as W,uuid as j,integer as Ze,uniqueIndex as Eo,index as z}from"drizzle-orm/pg-core";var d=Pt("sessions",{id:j("id").primaryKey().defaultRandom(),userId:j("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),externalSessionId:I("external_session_id"),projectId:j("project_id").references(()=>s.id,{onDelete:"set null"}),orgId:j("org_id").references(()=>u.id,{onDelete:"set null"}),tool:I("tool").notNull(),projectPath:I("project_path"),gitBranch:I("git_branch"),startedAt:je("started_at",{withTimezone:!0}).notNull(),endedAt:je("ended_at",{withTimezone:!0}),eventCount:Ze("event_count").default(0),tokenUsage:W("token_usage"),analysis:W("analysis"),analyzedAt:je("analyzed_at",{withTimezone:!0}),analyzedEventCount:Ze("analyzed_event_count"),analyzedTurnCount:Ze("analyzed_turn_count"),metadata:W("metadata").default({}),origin:I("origin").notNull().default("unknown"),runId:j("run_id").references(()=>x.id,{onDelete:"set null"}),model:I("model"),harnessVersion:I("harness_version"),createdAt:je("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),Eo("idx_sessions_user_external").on(e.userId,e.externalSessionId)]),ie=Pt("session_events",{id:j("id").primaryKey().defaultRandom(),sessionId:j("session_id").notNull().references(()=>d.id,{onDelete:"cascade"}),sequence:Ze("sequence").notNull(),eventType:I("event_type").notNull(),content:I("content"),toolName:I("tool_name"),toolInput:W("tool_input"),toolOutput:W("tool_output"),tokenUsage:W("token_usage"),model:I("model"),timestamp:je("timestamp",{withTimezone:!0}).notNull(),metadata:W("metadata").default({})},e=>[Eo("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)]),M=Pt("session_instructions",{sessionId:j("session_id").notNull().references(()=>d.id,{onDelete:"cascade"}),instructionId:j("instruction_id").notNull().references(()=>r.id,{onDelete:"cascade"}),linkMethod:I("link_method").notNull()},e=>[z("idx_session_instructions_instruction_id").on(e.instructionId)]);import{pgTable as kr,text as ae,timestamp as Ot,uuid as Re,integer as So,index as et}from"drizzle-orm/pg-core";var y=kr("memories",{id:Re("id").primaryKey().defaultRandom(),userId:Re("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),orgId:Re("org_id"),projectId:Re("project_id").references(()=>s.id,{onDelete:"set null"}),version:So("version").notNull().default(1),parentId:Re("parent_id").references(()=>y.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:So("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 Er,text as be,timestamp as Ct,uuid as qt,integer as Ko,jsonb as Sr,index as Po}from"drizzle-orm/pg-core";var Oo=Er("memory_experiments",{id:qt("id").primaryKey().defaultRandom(),memoryId:qt("memory_id").notNull().references(()=>y.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:Sr("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=>[Po("idx_memory_experiments_memory").on(e.memoryId),Po("idx_memory_experiments_user").on(e.userId)]);import{boolean as Kr,date as Pr,index as Mt,integer as Or,jsonb as Cr,pgTable as Bt,text as w,timestamp as B,uniqueIndex as qr,uuid as de}from"drizzle-orm/pg-core";var Co=Bt("announcements",{id:de("id").primaryKey().defaultRandom(),version:w("version").notNull().unique(),releaseDate:Pr("release_date").notNull(),subject:w("subject").notNull(),htmlBody:w("html_body").notNull(),textBody:w("text_body").notNull(),sections:Cr("sections").notNull().default({}),status:w("status").notNull().default("draft"),recipientCount:Or("recipient_count"),sentAt:B("sent_at",{withTimezone:!0}),sentBy:de("sent_by"),error:w("error"),createdAt:B("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:B("updated_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Mt("idx_announcements_status").on(e.status),Mt("idx_announcements_created").on(e.createdAt)]),qo=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:B("sent_at",{withTimezone:!0}),createdAt:B("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[qr("uniq_announcement_deliveries_announcement_user").on(e.announcementId,e.userId),Mt("idx_announcement_deliveries_user").on(e.userId,e.createdAt)]),Mo=Bt("notification_preferences",{userId:de("user_id").primaryKey(),productAnnouncements:Kr("product_announcements").notNull().default(!0),unsubscribeToken:w("unsubscribe_token").notNull().unique(),unsubscribedAt:B("unsubscribed_at",{withTimezone:!0}),createdAt:B("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:B("updated_at",{withTimezone:!0}).notNull().defaultNow()});import{pgTable as Mr,text as Lt,timestamp as tt,uuid as ot,index as Bo}from"drizzle-orm/pg-core";var R=Mr("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(()=>v.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=>[Bo("idx_org_invitations_token").on(e.token),Bo("idx_org_invitations_org").on(e.orgId)]);import{pgTable as Br,text as Lr,timestamp as Ur,jsonb as Hr,uuid as Ut,index as Lo}from"drizzle-orm/pg-core";var ue=Br("instruction_events",{id:Ut("id").primaryKey().defaultRandom(),instructionId:Ut("instruction_id").notNull().references(()=>r.id,{onDelete:"cascade"}),eventType:Lr("event_type").notNull(),actorId:Ut("actor_id").notNull(),metadata:Hr("metadata"),createdAt:Ur("created_at",{withTimezone:!0}).defaultNow()},e=>[Lo("idx_instruction_events_instruction").on(e.instructionId),Lo("idx_instruction_events_type").on(e.eventType)]);import{pgTable as Uo,text as nt,timestamp as Ho,uuid as D,integer as Vo,index as le,unique as Vr}from"drizzle-orm/pg-core";var b=Uo("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:Vo("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:Ho("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=Uo("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:Vo("treatment_version").notNull().default(1),assignmentId:D("assignment_id").references(()=>b.id,{onDelete:"set null"}),method:nt("method").notNull(),exposedAt:Ho("exposed_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Vr("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 Fr,text as Ht,timestamp as Gr,uuid as rt,integer as Jr,index as Fo,uniqueIndex as Yr}from"drizzle-orm/pg-core";var Go=Fr("pending_treatment_exposures",{id:rt("id").primaryKey().defaultRandom(),userId:rt("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),externalSessionId:Ht("external_session_id").notNull(),treatmentType:Ht("treatment_type").notNull(),treatmentId:rt("treatment_id").notNull(),treatmentVersion:Jr("treatment_version").notNull().default(1),method:Ht("method").notNull().default("injected"),projectId:rt("project_id").references(()=>s.id,{onDelete:"set null"}),createdAt:Gr("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Yr("pending_treatment_exposures_unique").on(e.externalSessionId,e.treatmentType,e.treatmentId,e.treatmentVersion),Fo("idx_pending_treatment_exposures_ext").on(e.externalSessionId),Fo("idx_pending_treatment_exposures_user").on(e.userId)]);import{pgTable as Qr,text as ce,timestamp as Vt,uuid as Ft,jsonb as Wr,uniqueIndex as Xr,index as Jo}from"drizzle-orm/pg-core";var st=Qr("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:Wr("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=>[Xr("idx_session_terminal_targets_user_target").on(e.userId,e.target),Jo("idx_session_terminal_targets_session").on(e.sessionId),Jo("idx_session_terminal_targets_user_status").on(e.userId,e.status)]);import{boolean as $r,index as it,jsonb as Yo,pgTable as Zr,text as X,timestamp as ke,uuid as at,integer as es}from"drizzle-orm/pg-core";var Qo=Zr("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:X("target").notNull(),message:X("message").notNull(),submit:$r("submit").notNull().default(!0),delivery:X("delivery").notNull().default("live"),status:X("status").notNull().default("pending"),result:Yo("result"),error:X("error"),attempts:es("attempts").notNull().default(0),taskKind:X("task_kind"),payload:Yo("payload"),claimedBy:X("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=>[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 Xo,text as $,timestamp as dt,jsonb as $o,uuid as L,integer as ts,boolean as os,uniqueIndex as ns,index as Wo,primaryKey as rs}from"drizzle-orm/pg-core";var A=Xo("packs",{id:L("id").primaryKey().defaultRandom(),name:$("name").notNull(),description:$("description").notNull(),scope:$("scope").notNull(),scopeRef:L("scope_ref"),version:$("version").notNull().default("1.0.0"),tags:$("tags").array(),badge:$("badge"),metadata:$o("metadata"),createdBy:L("created_by"),createdAt:dt("created_at",{withTimezone:!0}).defaultNow(),updatedAt:dt("updated_at",{withTimezone:!0}).defaultNow(),archived:os("archived").default(!1),archivedAt:dt("archived_at",{withTimezone:!0}),archivedBy:L("archived_by"),forkedFromId:L("forked_from_id").references(()=>A.id,{onDelete:"set null"}),upstreamVersion:$("upstream_version")},e=>[ns("packs_name_scope_ref_idx").on(e.name,e.scope,e.scopeRef),Wo("idx_packs_scope").on(e.scope,e.scopeRef),Wo("idx_packs_created_by").on(e.createdBy)]),U=Xo("pack_instructions",{packId:L("pack_id").references(()=>A.id,{onDelete:"cascade"}).notNull(),instructionId:L("instruction_id").references(()=>r.id,{onDelete:"cascade"}).notNull(),position:ts("position").notNull().default(0),slotOverrides:$o("slot_overrides"),addedAt:dt("added_at",{withTimezone:!0}).defaultNow(),addedBy:L("added_by")},e=>[rs({columns:[e.packId,e.instructionId]})]);import{pgTable as ss,text as Gt,timestamp as is,jsonb as as,uuid as Jt,index as me}from"drizzle-orm/pg-core";var pe=ss("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:as("metadata"),traceId:Gt("trace_id"),createdAt:is("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 ds,text as ut,timestamp as Zo,jsonb as us,uuid as en,index as Yt}from"drizzle-orm/pg-core";var tn=ds("worker_connections",{id:en("id").primaryKey().defaultRandom(),userId:en("user_id").notNull(),workerType:ut("worker_type").notNull().default("mcp"),clientName:ut("client_name").notNull(),clientVersion:ut("client_version"),workerVersion:ut("worker_version"),lastHeartbeat:Zo("last_heartbeat",{withTimezone:!0}).notNull().defaultNow(),connectedAt:Zo("connected_at",{withTimezone:!0}).notNull().defaultNow(),metadata:us("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 ls,text as lt,timestamp as cs,jsonb as ms,uuid as on,index as nn}from"drizzle-orm/pg-core";var rn=ls("cli_setup_events",{id:on("id").primaryKey().defaultRandom(),userId:on("user_id").notNull(),deviceId:lt("device_id").notNull(),event:lt("event").notNull(),cliVersion:lt("cli_version"),os:lt("os"),props:ms("props").notNull().default({}),createdAt:cs("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[nn("idx_cli_setup_events_user").on(e.userId,e.createdAt),nn("idx_cli_setup_events_device").on(e.deviceId,e.createdAt)]);import{pgTable as ps,text as Z,integer as _s,boolean as fs,timestamp as xs,jsonb as gs,uuid as Ns,index as sn}from"drizzle-orm/pg-core";var an=ps("cli_error_events",{id:Ns("id").primaryKey().defaultRandom(),deviceId:Z("device_id"),event:Z("event").notNull(),command:Z("command"),statusCode:_s("status_code"),message:Z("message"),cliVersion:Z("cli_version"),os:Z("os"),nodeVersion:Z("node_version"),proxied:fs("proxied"),props:gs("props").notNull().default({}),createdAt:xs("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[sn("idx_cli_error_events_created").on(e.createdAt),sn("idx_cli_error_events_device").on(e.deviceId,e.createdAt)]);import{pgTable as _e,text as _,timestamp as E,jsonb as T,uuid as p,integer as H,boolean as dn,index as N,unique as vs}from"drizzle-orm/pg-core";var n=_e("eval_targets",{id:p("id").primaryKey().defaultRandom(),userId:p("user_id").notNull(),name:_("name").notNull(),type:_("type").notNull(),content:_("content").notNull(),description:_("description").notNull().default(""),metadata:T("metadata").notNull().default({}),version:H("version").notNull().default(1),parentId:p("parent_id").references(()=>n.id,{onDelete:"set null"}),createdAt:E("created_at",{withTimezone:!0}).defaultNow(),updatedAt:E("updated_at",{withTimezone:!0}).defaultNow()},e=>[N("eval_targets_name_user_idx").on(e.name,e.userId),N("idx_eval_targets_user").on(e.userId),N("idx_eval_targets_type").on(e.type),N("idx_eval_targets_parent").on(e.parentId)]),S=_e("evals",{id:p("id").primaryKey().defaultRandom(),evalTargetId:p("eval_target_id").notNull().references(()=>n.id,{onDelete:"cascade"}),name:_("name").notNull(),prompt:_("prompt").notNull(),expectedOutput:_("expected_output").notNull().default(""),files:T("files").notNull().default([]),expectations:T("expectations").notNull().default([]),createdAt:E("created_at",{withTimezone:!0}).defaultNow(),updatedAt:E("updated_at",{withTimezone:!0}).defaultNow()},e=>[N("idx_evals_target").on(e.evalTargetId)]),K=_e("eval_runs",{id:p("id").primaryKey().defaultRandom(),jobId:p("job_id"),evalId:p("eval_id").notNull().references(()=>S.id,{onDelete:"cascade"}),evalTargetId:p("eval_target_id").notNull().references(()=>n.id,{onDelete:"cascade"}),evalTargetVersion:H("eval_target_version").notNull(),configuration:_("configuration").notNull(),runNumber:H("run_number").notNull().default(1),iteration:H("iteration").notNull().default(1),status:_("status").notNull().default("completed"),outputs:T("outputs").notNull().default({}),timing:T("timing").notNull().default({}),grading:T("grading").notNull().default({}),comparison:T("comparison"),createdAt:E("created_at",{withTimezone:!0}).defaultNow()},e=>[N("idx_eval_runs_eval").on(e.evalId),N("idx_eval_runs_target").on(e.evalTargetId),N("idx_eval_runs_iteration").on(e.evalTargetId,e.iteration)]),un=_e("eval_comparisons",{id:p("id").primaryKey().defaultRandom(),userId:p("user_id").notNull(),targetAId:p("target_a_id").notNull().references(()=>n.id,{onDelete:"cascade"}),targetBId:p("target_b_id").notNull().references(()=>n.id,{onDelete:"cascade"}),targetAVersion:H("target_a_version").notNull(),targetBVersion:H("target_b_version").notNull(),isSwapped:dn("is_swapped").notNull().default(!1),winnerTargetId:p("winner_target_id").references(()=>n.id,{onDelete:"set null"}),perEval:T("per_eval").notNull().default([]),overall:T("overall").notNull().default({}),rawOutput:_("raw_output"),model:_("model"),status:_("status").notNull().default("completed"),createdAt:E("created_at",{withTimezone:!0}).defaultNow()},e=>[N("idx_eval_comparisons_target_a").on(e.targetAId),N("idx_eval_comparisons_target_b").on(e.targetBId),N("idx_eval_comparisons_user").on(e.userId)]),ln=_e("eval_grade_annotations",{id:p("id").primaryKey().defaultRandom(),userId:p("user_id").notNull(),evalRunId:p("eval_run_id").notNull().references(()=>K.id,{onDelete:"cascade"}),evalTargetId:p("eval_target_id").notNull().references(()=>n.id,{onDelete:"cascade"}),expectationIndex:H("expectation_index").notNull(),expectationText:_("expectation_text").notNull(),judgePassed:dn("judge_passed").notNull(),judgeMethod:_("judge_method").notNull(),judgeModel:_("judge_model"),verdict:_("verdict").notNull(),flag:_("flag"),note:_("note"),createdAt:E("created_at",{withTimezone:!0}).defaultNow(),updatedAt:E("updated_at",{withTimezone:!0}).defaultNow()},e=>[N("idx_eval_grade_annotations_target").on(e.evalTargetId),N("idx_eval_grade_annotations_run").on(e.evalRunId),vs("eval_grade_annotations_eval_run_id_expectation_index_key").on(e.evalRunId,e.expectationIndex)]),fe=_e("benchmarks",{id:p("id").primaryKey().defaultRandom(),evalTargetId:p("eval_target_id").notNull().references(()=>n.id,{onDelete:"cascade"}),iteration:H("iteration").notNull().default(1),runSummary:T("run_summary").notNull().default({}),notes:T("notes").notNull().default([]),feedback:T("feedback"),createdAt:E("created_at",{withTimezone:!0}).defaultNow()},e=>[N("idx_benchmarks_target").on(e.evalTargetId)]);import{pgTable as mn,text as Qt,timestamp as Wt,jsonb as pn,uuid as xe,integer as Ee,index as ct,real as cn}from"drizzle-orm/pg-core";var ge=mn("trigger_evals",{id:xe("id").primaryKey().defaultRandom(),evalTargetId:xe("eval_target_id").notNull().references(()=>n.id,{onDelete:"cascade"}),userId:xe("user_id").notNull(),queries:pn("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=mn("optimization_runs",{id:xe("id").primaryKey().defaultRandom(),evalTargetId:xe("eval_target_id").notNull().references(()=>n.id,{onDelete:"cascade"}),userId:xe("user_id").notNull(),type:Qt("type").notNull(),iteration:Ee("iteration").notNull(),inputVersion:Ee("input_version").notNull(),outputVersion:Ee("output_version"),trainScore:cn("train_score"),testScore:cn("test_score"),analysis:pn("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 hs,text as V,timestamp as Is,jsonb as Se,uuid as Xt,integer as $t,real as ys,index as Ke,uniqueIndex as _n}from"drizzle-orm/pg-core";var F=hs("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:V("provider").notNull(),model:V("model").notNull(),systemPrompt:V("system_prompt").notNull(),injectedInstructions:Se("injected_instructions").notNull().default([]),messagesSummary:Se("messages_summary").notNull(),tools:Se("tools").notNull().default([]),systemHash:V("system_hash").notNull(),requestHash:V("request_hash").notNull().default(""),toolsHash:V("tools_hash"),injectedHash:V("injected_hash"),messagesDelta:Se("messages_delta").default([]),messagesDeltaRef:V("messages_delta_ref"),maxTokens:$t("max_tokens"),temperature:ys("temperature"),estimatedTokens:$t("estimated_tokens"),capturedAt:Is("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),_n("idx_snapshots_session_request").on(e.sessionId,e.requestHash),_n("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 Ts,text as fn,timestamp as ws,jsonb as As,integer as zs,index as Ds}from"drizzle-orm/pg-core";var xn=Ts("content_blobs",{hash:fn("hash").primaryKey(),contentType:fn("content_type").notNull(),content:As("content").notNull(),sizeBytes:zs("size_bytes").notNull().default(0),createdAt:ws("created_at",{withTimezone:!0}).defaultNow()},e=>[Ds("idx_content_blobs_type").on(e.contentType)]);import{pgTable as js,text as mt,timestamp as Pe,jsonb as pt,uuid as Zt,index as _t,integer as Rs}from"drizzle-orm/pg-core";var ve=js("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:Rs("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 bs,text as Oe,timestamp as Ce,jsonb as gn,uuid as Nn,integer as ks,index as vn}from"drizzle-orm/pg-core";var hn=bs("agent_jobs",{id:Nn("id").primaryKey().defaultRandom(),userId:Nn("user_id").notNull(),taskKind:Oe("task_kind").notNull(),status:Oe("status").notNull().default("pending"),payload:gn("payload").notNull(),dedupeKey:Oe("dedupe_key"),result:gn("result"),error:Oe("error"),attempts:ks("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=>[vn("idx_agent_jobs_claim").on(e.userId,e.status,e.taskKind,e.createdAt),vn("idx_agent_jobs_dedupe").on(e.userId,e.taskKind,e.dedupeKey)]);import{pgTable as Es,text as qe,timestamp as Me,jsonb as ft,uuid as eo,index as xt,integer as Ss}from"drizzle-orm/pg-core";var In=Es("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:Ss("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 Ks,text as to,timestamp as gt,uuid as yn,index as Ps,uniqueIndex as Os}from"drizzle-orm/pg-core";var he=Ks("api_keys",{id:yn("id").primaryKey().defaultRandom(),userId:yn("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),name:to("name").notNull(),keyHash:to("key_hash").notNull(),keyPrefix:to("key_prefix").notNull(),lastUsedAt:gt("last_used_at",{withTimezone:!0}),expiresAt:gt("expires_at",{withTimezone:!0}),revokedAt:gt("revoked_at",{withTimezone:!0}),createdAt:gt("created_at",{withTimezone:!0}).defaultNow()},e=>[Ps("idx_api_keys_user").on(e.userId),Os("idx_api_keys_hash").on(e.keyHash)]);import{pgTable as Cs,text as oo,timestamp as Tn,uuid as qs,index as Ms}from"drizzle-orm/pg-core";var wn=Cs("extension_auth_codes",{code:oo("code").primaryKey(),userId:qs("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),editor:oo("editor"),email:oo("email"),expiresAt:Tn("expires_at",{withTimezone:!0}).notNull(),createdAt:Tn("created_at",{withTimezone:!0}).defaultNow()},e=>[Ms("idx_ext_auth_codes_expiry").on(e.expiresAt)]);import{pgTable as Bs,text as Ls,timestamp as An,jsonb as Us,uuid as no,index as zn}from"drizzle-orm/pg-core";var Ie=Bs("eval_conversations",{id:no("id").primaryKey().defaultRandom(),evalTargetId:no("eval_target_id").notNull().references(()=>n.id,{onDelete:"cascade"}),userId:no("user_id").notNull(),messages:Us("messages").notNull().default([]),status:Ls("status").notNull().default("active"),createdAt:An("created_at",{withTimezone:!0}).defaultNow(),updatedAt:An("updated_at",{withTimezone:!0}).defaultNow()},e=>[zn("idx_eval_conversations_target").on(e.evalTargetId),zn("idx_eval_conversations_user").on(e.userId)]);import{pgTable as Hs,text as P,timestamp as Dn,jsonb as Vs,uuid as ro}from"drizzle-orm/pg-core";var jn=Hs("skill_submissions",{id:ro("id").primaryKey().defaultRandom(),skillId:P("skill_id").notNull(),name:P("name").notNull(),description:P("description").notNull(),category:P("category").notNull(),tools:P("tools").array().notNull(),tags:P("tags").array().default([]),content:P("content").notNull(),status:P("status").notNull().default("pending"),submittedBy:ro("submitted_by").notNull(),reviewedBy:ro("reviewed_by"),reviewNote:P("review_note"),metadata:Vs("metadata"),createdAt:Dn("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Dn("updated_at",{withTimezone:!0}).defaultNow()});import{pgTable as Fs,text as Be,timestamp as Rn,jsonb as Gs,uuid as Js,uniqueIndex as Ys,index as bn}from"drizzle-orm/pg-core";var kn=Fs("harness_releases",{id:Js("id").primaryKey().defaultRandom(),harness:Be("harness").notNull(),version:Be("version").notNull(),publishedAt:Rn("published_at",{withTimezone:!0}).notNull(),title:Be("title"),body:Be("body"),categories:Gs("categories").default({}),url:Be("url"),createdAt:Rn("created_at",{withTimezone:!0}).defaultNow()},e=>[Ys("idx_harness_releases_unique").on(e.harness,e.version),bn("idx_harness_releases_harness").on(e.harness),bn("idx_harness_releases_published").on(e.publishedAt)]);import{pgTable as Qs,text as ye,timestamp as En,jsonb as Ws,uuid as Sn,index as Kn,uniqueIndex as Xs}from"drizzle-orm/pg-core";var so=Qs("notifications",{id:Sn("id").primaryKey().defaultRandom(),userId:Sn("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:Ws("metadata").notNull().default({}),readAt:En("read_at",{withTimezone:!0}),createdAt:En("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Kn("idx_notifications_user_created").on(e.userId,e.createdAt),Kn("idx_notifications_user_unread").on(e.userId),Xs("idx_notifications_source_dedup").on(e.userId,e.sourceTable,e.sourceId)]);import{pgTable as $s,text as Le,timestamp as Ue,jsonb as io,uuid as ao,index as Nt,integer as Zs}from"drizzle-orm/pg-core";var Te=$s("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:Zs("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(()=>x.id,{onDelete:"set null"})},e=>[Nt("idx_launch_jobs_user").on(e.userId),Nt("idx_launch_jobs_status").on(e.status),Nt("idx_launch_jobs_pending").on(e.userId,e.status),Nt("idx_launch_jobs_run").on(e.runId)]);import{pgTable as Pn,uuid as O,text as He,real as ei,timestamp as vt,boolean as ti,uniqueIndex as oi,index as Ve}from"drizzle-orm/pg-core";var uo=Pn("instruction_suggestions",{id:O("id").primaryKey().defaultRandom(),userId:O("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),instructionId:O("instruction_id").notNull().references(()=>r.id,{onDelete:"cascade"}),projectPath:He("project_path").notNull(),projectId:O("project_id").references(()=>s.id,{onDelete:"set null"}),score:ei("score").notNull(),reason:He("reason").notNull(),generatedAt:vt("generated_at",{withTimezone:!0}).notNull().defaultNow(),isStale:ti("is_stale").notNull().default(!1),dismissedAt:vt("dismissed_at",{withTimezone:!0}),acceptedAt:vt("accepted_at",{withTimezone:!0}),promotedToInstructionId:O("promoted_to_instruction_id").references(()=>r.id,{onDelete:"set null"})},e=>[oi("idx_instruction_suggestions_user_project_instruction").on(e.userId,e.projectPath,e.instructionId),Ve("idx_instruction_suggestions_user_project").on(e.userId,e.projectPath),Ve("idx_instruction_suggestions_user_proj_id").on(e.userId,e.projectId),Ve("idx_instruction_suggestions_generated_at").on(e.generatedAt)]),On=Pn("instruction_suggestion_events",{id:O("id").primaryKey().defaultRandom(),suggestionId:O("suggestion_id").notNull().references(()=>uo.id,{onDelete:"cascade"}),userId:O("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),eventType:He("event_type").notNull(),tool:He("tool"),sessionId:O("session_id"),projectPath:He("project_path").notNull(),createdAt:vt("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Ve("idx_instruction_suggestion_events_suggestion_id").on(e.suggestionId),Ve("idx_instruction_suggestion_events_user_id").on(e.userId)]);import{pgTable as ni,text as lo,integer as ri,numeric as Fe,timestamp as co,index as si,primaryKey as ii}from"drizzle-orm/pg-core";var Cn=ni("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:ri("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=>[ii({columns:[e.provider,e.modelId,e.effectiveFrom]}),si("idx_model_pricing_active").on(e.provider,e.modelId,e.effectiveFrom.desc())]);import{pgTable as ai,text as ee,numeric as qn,timestamp as Mn,uuid as Bn,jsonb as di,index as Ln}from"drizzle-orm/pg-core";var Un=ai("limit_observations",{id:Bn("id").primaryKey().defaultRandom(),observedAt:Mn("observed_at",{withTimezone:!0}).notNull().defaultNow(),provider:ee("provider").notNull(),plan:ee("plan").notNull(),limitType:ee("limit_type").notNull(),value:qn("value").notNull(),unit:ee("unit").notNull(),comparator:ee("comparator").notNull().default("="),resetsAt:Mn("resets_at",{withTimezone:!0}),sourceType:ee("source_type").notNull(),sourceUrl:ee("source_url"),sourceEvidence:di("source_evidence"),confidence:qn("confidence").notNull(),userId:Bn("user_id")},e=>[Ln("idx_limit_obs_lookup").on(e.provider,e.plan,e.limitType,e.observedAt.desc()),Ln("idx_limit_obs_user").on(e.userId,e.observedAt.desc())]);import{pgTable as ui,text as ht,timestamp as li,uuid as ci,jsonb as mi,boolean as pi,uniqueIndex as _i}from"drizzle-orm/pg-core";var Hn=ui("provider_docs_snapshots",{id:ci("id").primaryKey().defaultRandom(),fetchedAt:li("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:pi("parse_success").notNull(),parseErrors:mi("parse_errors")},e=>[_i("idx_docs_dedup").on(e.provider,e.docUrl,e.contentHash)]);import{pgTable as fi,text as It,numeric as Vn,timestamp as Fn,uuid as xi,primaryKey as gi,index as Ni}from"drizzle-orm/pg-core";var Gn=fi("plan_limits_active",{provider:It("provider").notNull(),plan:It("plan").notNull(),limitType:It("limit_type").notNull(),value:Vn("value").notNull(),unit:It("unit").notNull(),effectiveFrom:Fn("effective_from",{withTimezone:!0}).notNull(),effectiveUntil:Fn("effective_until",{withTimezone:!0}),confidence:Vn("confidence").notNull(),sourceObservationIds:xi("source_observation_ids").array().notNull()},e=>[gi({columns:[e.provider,e.plan,e.limitType,e.effectiveFrom]}),Ni("idx_plan_limits_lookup").on(e.provider,e.plan,e.limitType,e.effectiveFrom.desc())]);import{pgTable as vi,text as mo,timestamp as hi,uuid as Jn,jsonb as Ii,index as yi}from"drizzle-orm/pg-core";var Yn=vi("alert_dispatches",{id:Jn("id").primaryKey().defaultRandom(),userId:Jn("user_id").notNull(),alertKey:mo("alert_key").notNull(),severity:mo("severity").notNull(),lastDispatchedAt:hi("last_dispatched_at",{withTimezone:!0}).notNull().defaultNow(),lastState:Ii("last_state").notNull(),channel:mo("channel").notNull()},e=>[yi("idx_alert_user_key").on(e.userId,e.alertKey,e.lastDispatchedAt.desc())]);import{pgTable as Ti,text as po,timestamp as Qn,uuid as _o,integer as wi,index as Ai,unique as zi}from"drizzle-orm/pg-core";var Wn=Ti("scaffolding_fingerprints",{id:_o("id").primaryKey().defaultRandom(),userId:_o("user_id").notNull(),harness:po("harness").notNull(),model:po("model").notNull(),toolsHash:po("tools_hash").notNull(),firstSeenAt:Qn("first_seen_at",{withTimezone:!0}).notNull().defaultNow(),lastSeenAt:Qn("last_seen_at",{withTimezone:!0}).notNull().defaultNow(),snapshotCount:wi("snapshot_count").notNull().default(1),firstSessionId:_o("first_session_id")},e=>[zi("scaffolding_fingerprints_user_id_harness_model_tools_hash_key").on(e.userId,e.harness,e.model,e.toolsHash),Ai("idx_scaffolding_fp_segment").on(e.userId,e.harness,e.model)]);import{pgTable as Di,text as fo,timestamp as ji,jsonb as Ri,uuid as Xn,integer as bi,unique as ki}from"drizzle-orm/pg-core";var $n=Di("scaffolding_segments",{id:Xn("id").primaryKey().defaultRandom(),userId:Xn("user_id").notNull(),harness:fo("harness").notNull(),model:fo("model").notNull(),coreNames:Ri("core_names").notNull(),coreHash:fo("core_hash").notNull(),activeFingerprints:bi("active_fingerprints").notNull(),computedAt:ji("computed_at",{withTimezone:!0}).notNull().defaultNow()},e=>[ki("scaffolding_segments_user_id_harness_model_key").on(e.userId,e.harness,e.model)]);import{drizzle as nr}from"drizzle-orm/postgres-js";import rr from"postgres";var yt={};yr(yt,{agentJobs:()=>hn,agentRuns:()=>x,agentRunsRelations:()=>Gi,alertDispatches:()=>Yn,announcementDeliveries:()=>qo,announcements:()=>Co,apiKeys:()=>he,apiKeysRelations:()=>Si,benchmarks:()=>fe,benchmarksRelations:()=>ra,cliErrorEvents:()=>an,cliSetupEvents:()=>rn,contentBlobs:()=>xn,contextSnapshots:()=>F,contextSnapshotsRelations:()=>ua,evalComparisons:()=>un,evalConversations:()=>Ie,evalConversationsRelations:()=>da,evalGradeAnnotations:()=>ln,evalJobs:()=>ve,evalJobsRelations:()=>aa,evalRuns:()=>K,evalRunsRelations:()=>na,evalTargets:()=>n,evalTargetsRelations:()=>ta,evals:()=>S,evalsRelations:()=>oa,extensionAuthCodes:()=>wn,harnessReleases:()=>kn,insightsJobs:()=>In,instructionEvents:()=>ue,instructionEventsRelations:()=>Bi,instructionSuggestionEvents:()=>On,instructionSuggestions:()=>uo,instructionUsageEvents:()=>pe,instructionUsageEventsRelations:()=>ea,instructionVersions:()=>re,instructionVersionsRelations:()=>Ui,instructions:()=>r,instructionsRelations:()=>Mi,launchJobs:()=>Te,launchJobsRelations:()=>Ji,limitObservations:()=>Un,memories:()=>y,memoriesRelations:()=>Li,memoryExperiments:()=>Oo,modelPricing:()=>Cn,notificationPreferences:()=>Mo,notifications:()=>so,optimizationRuns:()=>Ne,optimizationRunsRelations:()=>ia,orgInvitations:()=>R,orgInvitationsRelations:()=>Oi,organizations:()=>u,organizationsRelations:()=>Ki,packInstructions:()=>U,packInstructionsRelations:()=>Zi,packs:()=>A,packsRelations:()=>$i,pendingTreatmentExposures:()=>Go,planLimitsActive:()=>Gn,profiles:()=>o,profilesRelations:()=>Ei,projectCheckouts:()=>bo,projectInstructions:()=>q,projectInstructionsRelations:()=>Vi,projects:()=>s,projectsRelations:()=>Hi,providerDocsSnapshots:()=>Hn,scaffoldingFingerprints:()=>Wn,scaffoldingSegments:()=>$n,sessionEvents:()=>ie,sessionEventsRelations:()=>Yi,sessionInstructions:()=>M,sessionInstructionsRelations:()=>Qi,sessionSendJobs:()=>Qo,sessionTerminalTargets:()=>st,sessions:()=>d,sessionsRelations:()=>Fi,skillSubmissions:()=>jn,teams:()=>v,teamsRelations:()=>Pi,treatmentAssignments:()=>b,treatmentAssignmentsRelations:()=>Wi,treatmentExposures:()=>k,treatmentExposuresRelations:()=>Xi,triggerEvals:()=>ge,triggerEvalsRelations:()=>sa,userOrganizations:()=>oe,userOrganizationsRelations:()=>Ci,userTeams:()=>ne,userTeamsRelations:()=>qi,workerConnections:()=>tn});import{relations as i}from"drizzle-orm";var Ei=i(o,({many:e})=>({sessions:e(d),contextSnapshots:e(F),apiKeys:e(he)})),Si=i(he,({one:e})=>({profile:e(o,{fields:[he.userId],references:[o.id]})})),Ki=i(u,({many:e})=>({teams:e(v),userOrganizations:e(oe),projects:e(s),invitations:e(R)})),Pi=i(v,({one:e,many:t})=>({organization:e(u,{fields:[v.orgId],references:[u.id]}),userTeams:t(ne),invitations:t(R)})),Oi=i(R,({one:e})=>({organization:e(u,{fields:[R.orgId],references:[u.id]}),team:e(v,{fields:[R.teamId],references:[v.id]}),inviter:e(o,{fields:[R.invitedBy],references:[o.id]})})),Ci=i(oe,({one:e})=>({organization:e(u,{fields:[oe.orgId],references:[u.id]})})),qi=i(ne,({one:e})=>({team:e(v,{fields:[ne.teamId],references:[v.id]})})),Mi=i(r,({one:e,many:t})=>({versions:t(re),projectInstructions:t(q),events:t(ue),usageEvents:t(pe),sessionInstructions:t(M),packInstructions:t(U),forkedFrom:e(r,{fields:[r.forkedFromId],references:[r.id]})})),Bi=i(ue,({one:e})=>({instruction:e(r,{fields:[ue.instructionId],references:[r.id]})})),Li=i(y,({one:e,many:t})=>({project:e(s,{fields:[y.projectId],references:[s.id]}),parent:e(y,{fields:[y.parentId],references:[y.id]}),versions:t(y)})),Ui=i(re,({one:e})=>({instruction:e(r,{fields:[re.instructionId],references:[r.id]})})),Hi=i(s,({one:e,many:t})=>({organization:e(u,{fields:[s.orgId],references:[u.id]}),projectInstructions:t(q),sessions:t(d)})),Vi=i(q,({one:e})=>({project:e(s,{fields:[q.projectId],references:[s.id]}),instruction:e(r,{fields:[q.instructionId],references:[r.id]})})),Fi=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(x,{fields:[d.runId],references:[x.id]}),events:t(ie),sessionInstructions:t(M),treatmentExposures:t(k),contextSnapshots:t(F)})),Gi=i(x,({one:e,many:t})=>({profile:e(o,{fields:[x.userId],references:[o.id]}),organization:e(u,{fields:[x.orgId],references:[u.id]}),project:e(s,{fields:[x.projectId],references:[s.id]}),sessions:t(d),launchJobs:t(Te)})),Ji=i(Te,({one:e})=>({run:e(x,{fields:[Te.runId],references:[x.id]})})),Yi=i(ie,({one:e})=>({session:e(d,{fields:[ie.sessionId],references:[d.id]})})),Qi=i(M,({one:e})=>({session:e(d,{fields:[M.sessionId],references:[d.id]}),instruction:e(r,{fields:[M.instructionId],references:[r.id]})})),Wi=i(b,({one:e,many:t})=>({owner:e(o,{fields:[b.userId],references:[o.id]}),project:e(s,{fields:[b.projectId],references:[s.id]}),exposures:t(k)})),Xi=i(k,({one:e})=>({session:e(d,{fields:[k.sessionId],references:[d.id]}),owner:e(o,{fields:[k.userId],references:[o.id]}),assignment:e(b,{fields:[k.assignmentId],references:[b.id]})})),$i=i(A,({one:e,many:t})=>({packInstructions:t(U),forkedFrom:e(A,{fields:[A.forkedFromId],references:[A.id]})})),Zi=i(U,({one:e})=>({pack:e(A,{fields:[U.packId],references:[A.id]}),instruction:e(r,{fields:[U.instructionId],references:[r.id]})})),ea=i(pe,({one:e})=>({instruction:e(r,{fields:[pe.instructionId],references:[r.id]})})),ta=i(n,({one:e,many:t})=>({parent:e(n,{fields:[n.parentId],references:[n.id]}),evals:t(S),evalRuns:t(K),benchmarks:t(fe),triggerEvals:t(ge),optimizationRuns:t(Ne),evalJobs:t(ve),evalConversations:t(Ie)})),oa=i(S,({one:e,many:t})=>({evalTarget:e(n,{fields:[S.evalTargetId],references:[n.id]}),runs:t(K)})),na=i(K,({one:e})=>({eval:e(S,{fields:[K.evalId],references:[S.id]}),evalTarget:e(n,{fields:[K.evalTargetId],references:[n.id]})})),ra=i(fe,({one:e})=>({evalTarget:e(n,{fields:[fe.evalTargetId],references:[n.id]})})),sa=i(ge,({one:e})=>({evalTarget:e(n,{fields:[ge.evalTargetId],references:[n.id]})})),ia=i(Ne,({one:e})=>({evalTarget:e(n,{fields:[Ne.evalTargetId],references:[n.id]})})),aa=i(ve,({one:e})=>({evalTarget:e(n,{fields:[ve.evalTargetId],references:[n.id]})})),da=i(Ie,({one:e})=>({evalTarget:e(n,{fields:[Ie.evalTargetId],references:[n.id]})})),ua=i(F,({one:e})=>({session:e(d,{fields:[F.sessionId],references:[d.id]}),profile:e(o,{fields:[F.userId],references:[o.id]})}));var Ge=0,Zn=0,Je=0,er=0;var la=0;function xo(){Ge++,Ge>Zn&&(Zn=Ge)}m(xo,"trackDbOpStart");function go(){Ge>0&&Ge--}m(go,"trackDbOpEnd");function No(){Je++,Je>er&&(er=Je)}m(No,"trackHeavyDbOpStart");function vo(){Je>0&&Je--}m(vo,"trackHeavyDbOpEnd");function tr(){la++}m(tr,"recordQueryDeadline");var wt,zt,ho=!1,Tt;var or,Dt,At;function sr(e){let t=process.env[e];if(!t)throw new Error(`Missing required env var: ${e}`);return t}m(sr,"getEnv");function ir(){if(ho)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,f=Number(process.env.PG_KEEP_ALIVE_S)||60;zt=rr(sr("DATABASE_URL"),{prepare:!1,max:t,connect_timeout:a,idle_timeout:c,keep_alive:f,max_lifetime:300,connection:{application_name:e,...l>0?{statement_timeout:l}:{}}}),wt=nr(zt,{schema:yt})}return wt}m(ir,"getDb");function ar(){if(ho)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=rr(sr("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=nr(Dt,{schema:yt})}return At}m(ar,"getHeavyDb");async function ca(){if(Tt)return Tt;ho=!0;let e=zt,t=or,a=Dt;return zt=void 0,wt=void 0,or=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(ca,"closeDb");var ma=new Set(["CONNECT_TIMEOUT","ETIMEDOUT","ENOTFOUND","ECONNREFUSED","EAI_AGAIN"]);function dr(e){let t=e,a=t?.code??t?.cause?.code??t?.errno;return a!==void 0&&ma.has(a)}m(dr,"isRetryableConnectError");var pa=new Set(["CONNECTION_CLOSED","ECONNRESET","EPIPE"]);function ur(e){let t=e,a=t?.code??t?.cause?.code??t?.errno;return a!==void 0&&pa.has(a)}m(ur,"isRetryableResetError");async function lr(e,t={}){let a=t.attempts??3,l=t.baseMs??100,c;for(let f=0;f<a;f++)try{return await e()}catch(h){c=h;let we=dr(h)||t.retryResets===!0&&ur(h);if(f===a-1||!we)throw h;await new Promise(G=>setTimeout(G,l*2**f))}throw c}m(lr,"withDbRetry");var jt=class extends Error{static{m(this,"QueryDeadlineError")}code="QUERY_DEADLINE";constructor(t){super(`Query exceeded the client-side deadline of ${t}ms \u2014 the DB pool is likely saturated (acquire-wait) or holding a dead socket; failing fast to avoid pinning the caller. See client.ts.`),this.name="QueryDeadlineError"}};function cr(){let e=Number(process.env.PG_QUERY_DEADLINE_MS);return Number.isFinite(e)&&e>=0?e:2e4}m(cr,"queryDeadlineMs");function _a(e,t){let a,l=new Promise((c,f)=>{a=setTimeout(()=>{tr(),f(new jt(t))},t);let h=a;typeof h.unref=="function"&&h.unref()});return Promise.race([e,l]).finally(()=>clearTimeout(a))}m(_a,"raceWithDeadline");var mr=new Set(["select","selectDistinct","selectDistinctOn","insert","update","delete","execute","with","$count","refreshMaterializedView"]),pr=new Set(["select","selectDistinct","selectDistinctOn","$count"]);function Io(e,t=!1,a=0,l=!1){return e===null||typeof e!="object"&&typeof e!="function"?e:new Proxy(e,{get(c,f,h){if(f==="then"){let G=Reflect.get(c,f,h);return typeof G!="function"?G:(xr,gr)=>{let Nr=l?No:xo,vr=l?vo:go;Nr();let yo=lr(()=>new Promise((hr,Ir)=>G.call(c,hr,Ir)),{retryResets:t});return(a>0?_a(yo,a):yo).finally(vr).then(xr,gr)}}let we=Reflect.get(c,f,h);return typeof we=="function"?(...G)=>Io(we.apply(c,G),t,a,l):we}})}m(Io,"wrapBuilder");function _r(e,t=!1){let a=t?No:xo,l=t?vo:go;a();try{return Promise.resolve(e()).finally(l)}catch(c){throw l(),c}}m(_r,"gaugeTransaction");var fr=new Proxy({},{get(e,t){let a=ir(),l=a[t];if(typeof t=="string"&&mr.has(t)&&typeof l=="function"){let c=pr.has(t),f=cr();return(...h)=>Io(l.apply(a,h),c,f)}return t==="transaction"&&typeof l=="function"?(...c)=>_r(()=>l.apply(a,c)):l}}),fa=new Proxy({},{get(e,t){let a=ar(),l=a[t];if(typeof t=="string"&&mr.has(t)&&typeof l=="function"){let c=pr.has(t);return(...f)=>Io(l.apply(a,f),c,0,!0)}return t==="transaction"&&typeof l=="function"?(...c)=>_r(()=>l.apply(a,c),!0):l}});export{o as a,x as b,d as c,ie as d,y as e,Oo as f,Co as g,qo as h,Mo as i,ir as j,ca as k};
|