@rulemetric/cli 0.7.23 → 0.7.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- import{c as m,d as p}from"./chunk-ZL4MZMUK.js";import{a as C}from"./chunk-N7TGRFVZ.js";import{g as c,j as f}from"./chunk-KXW3IWKQ.js";import{a as r}from"./chunk-ZLLER3HP.js";import*as a from"node:fs/promises";import*as g from"node:path";import{eq as b}from"drizzle-orm";async function v(e){let n=e;for(let t=0;t<50;t++){try{return await a.stat(g.join(n,"pnpm-workspace.yaml")),n}catch{}let i=g.dirname(n);if(i===n)return null;n=i}return null}r(v,"findRepoRoot");async function k(e){if(e)try{return await a.readFile(e,"utf-8")}catch{return null}let n=await v(process.cwd())??process.cwd(),t=g.join(n,"CHANGELOG.md");try{return await a.readFile(t,"utf-8")}catch{return null}}r(k,"readChangelog");var _="https://rulemetric.com";function D(e){let n=e.date??new Date().toISOString().slice(0,10),t=C({version:e.version,date:n,sections:e.sections,unsubscribeUrl:"{{unsubscribe_url}}",recipientName:"{{recipient_name}}",productUrl:_});return{version:e.version,releaseDate:n,subject:t.subject,htmlBody:t.html,textBody:t.text,sections:e.sections}}r(D,"renderRow");async function R(e={}){let n=e.db??f(),t=e.logger??{info:r(s=>console.log(s),"info"),warn:r(s=>console.warn(s),"warn")},i=await k(e.changelogPath);if(i===null)return t.info("[cron_check_changelog] CHANGELOG.md not found; nothing to do"),{createdCount:0,skippedCount:0};let y=m(i),h=p(y);if(h.length===0)return t.info("[cron_check_changelog] No announceable entries; nothing to do"),{createdCount:0,skippedCount:0};let d=0,l=0;for(let s of h){if((await n.select({id:c.id}).from(c).where(b(c.version,s.version)).limit(1)).length>0){l++;continue}let o=D(s);try{await n.insert(c).values({version:o.version,releaseDate:o.releaseDate,subject:o.subject,htmlBody:o.htmlBody,textBody:o.textBody,sections:o.sections,status:"draft"}),d++,t.info(`[cron_check_changelog] Created draft announcement for ${o.version}`)}catch(u){let w=u instanceof Error?u.message:String(u);if(/duplicate key|unique/i.test(w)){l++;continue}throw u}}return t.info(`[cron_check_changelog] Done: created ${d}, skipped ${l}`),{createdCount:d,skippedCount:l}}r(R,"processChangelog");export{R as a};
1
+ import{c as m,d as p}from"./chunk-ZL4MZMUK.js";import{a as C}from"./chunk-N7TGRFVZ.js";import{g as c,j as f}from"./chunk-KZ65LEUH.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,4 +1,4 @@
1
- import{c as e,d as o,j as y}from"./chunk-KXW3IWKQ.js";import{f as d}from"./chunk-SMGSLY5N.js";import{a as g}from"./chunk-ZLLER3HP.js";import{eq as c,asc as P,sql as R}from"drizzle-orm";var T=1800*1e3,I=300*1e3,h=10,D=`Given these messages from an AI coding session, write a 1-2 sentence summary of what the user is trying to accomplish. Focus on the goal, not the steps. No preamble.
1
+ import{c as e,d as o,j as y}from"./chunk-KZ65LEUH.js";import{f as d}from"./chunk-SMGSLY5N.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,4 +1,4 @@
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-SMGSLY5N.js";import{a as y}from"./chunk-ZLLER3HP.js";import{eq as u,and as A,desc as E,inArray as j,isNotNull as D,sql as R}from"drizzle-orm";var x=50,k=24e3,C=3,L=3,O=40,P=4e3,X=new Set(["fact","decision","correction","convention"]),$=`You are distilling DURABLE, PROJECT-SPECIFIC knowledge from an AI coding session so a future agent working on the SAME project starts smarter.
1
+ import{a as I,c as i,d as r,e as a,j as M}from"./chunk-KZ65LEUH.js";import{f as v}from"./chunk-SMGSLY5N.js";import{a as y}from"./chunk-ZLLER3HP.js";import{eq as u,and as A,desc as E,inArray as j,isNotNull as D,sql as R}from"drizzle-orm";var x=50,k=24e3,C=3,L=3,O=40,P=4e3,X=new Set(["fact","decision","correction","convention"]),$=`You are distilling DURABLE, PROJECT-SPECIFIC knowledge from an AI coding session so a future agent working on the SAME project starts smarter.
2
2
 
3
3
  Extract ONLY facts / decisions / corrections / conventions that will STILL be true and useful in FUTURE sessions \u2014 architecture facts, deliberate design decisions, corrections of a wrong approach, or project conventions.
4
4
 
@@ -1,2 +1,2 @@
1
- import{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}
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-KZ65LEUH.js";import{a as g}from"./chunk-ZLLER3HP.js";import{and as y,eq as l,isNotNull as I}from"drizzle-orm";async function O($,p={}){let k=p.db??j(),b=p.removeWorktreeFn??R,n=p.log??(e=>process.stderr.write(`[process_run_cleanup] ${e}
2
2
  `)),{runId:t}=$,[i]=await k.select({id:s.id,userId:s.userId,projectPath:s.projectPath}).from(s).where(l(s.id,t)).limit(1);if(!i)throw new P(`Run ${t} not found`);if(!i.projectPath)throw new P(`Run ${t} has no projectPath; cannot resolve a repo root for worktree cleanup`);let c=i.projectPath,v=await k.select({id:r.id,projectPath:r.projectPath}).from(r).where(y(l(r.runId,t),l(r.userId,i.userId),I(r.endedAt))),a=[],u=0,d=0,h=0,m=0,w=new Set;for(let e of v)if(!(!e.projectPath||e.projectPath===c)&&!w.has(e.projectPath)){w.add(e.projectPath);try{let o=await b({repoRoot:c,worktreePath:e.projectPath});o.removed?(u++,a.push({sessionId:e.id,worktreePath:e.projectPath,status:"removed"}),n(`removed worktree ${e.projectPath} (session ${e.id})`)):o.reason==="dirty"?(d++,a.push({sessionId:e.id,worktreePath:e.projectPath,status:"skipped-dirty"}),n(`skipped dirty worktree ${e.projectPath} (session ${e.id}) \u2014 uncommitted changes`)):(h++,a.push({sessionId:e.id,worktreePath:e.projectPath,status:"absent"}),n(`worktree absent ${e.projectPath} (session ${e.id})`))}catch(o){let f=o instanceof Error?o.message:String(o);m++,a.push({sessionId:e.id,worktreePath:e.projectPath,status:"error",error:f.slice(0,1e3)}),n(`error removing worktree ${e.projectPath} (session ${e.id}): ${f}`)}}return n(`run ${t} cleanup: removed=${u} skippedDirty=${d} absent=${h} errored=${m}`),{runId:t,repoRoot:c,removed:u,skippedDirty:d,absent:h,errored:m,worktrees:a}}g(O,"processRunCleanup");export{O as a};
@@ -0,0 +1 @@
1
+ import{b as D,c as j}from"./chunk-6UEFCMR2.js";import{a as G}from"./chunk-YDRZDBHG.js";import{c as J}from"./chunk-K25S2MGU.js";import{b as B,c as R,d as N,e as z}from"./chunk-3BVHPQZW.js";import{e as f,g as T}from"./chunk-H2ORWIEY.js";import{a as p}from"./chunk-ZLLER3HP.js";function W(r,a,s){return s?r.reviewerModel===s||r.reviewerModel===`${a}:${s}`:r.reviewerEngine===a}p(W,"reviewMatchesReviewer");var C=100;function Z(r){let a=new Set;return r.forEach((s,d)=>{s.method!=="deterministic"&&a.add(d)}),a}p(Z,"llmExpectationIndexes");var w=class extends Error{constructor(s,d){super(d);this.reason=s}static{p(this,"JudgeReviewSkip")}};async function oe(r){let a=r.log??(()=>{}),s=r.warn??a,d=r.targetId,K=r.parallel??3,U=r.timeoutMs??12e4,v=await f(`/api/eval-targets/${d}`),u=(await f(`/api/eval-targets/${d}/annotations?limit=500`)).filter(e=>e.judgeMethod==="llm");if(u.length===0)throw new w("no-labels",`No human labels on "${v.name}" yet \u2014 label some runs in the Review tab first.`);let n;try{n=z({engineFlag:r.engineFlag??"auto",modelFlag:r.modelFlag,availability:N(),judgeModels:[...new Set(u.map(e=>e.judgeModel).filter(e=>e!=null))]})}catch(e){throw new w("no-engine",e instanceof Error?e.message:String(e))}a(`Reviewer: ${n.rationale}`);let c=0,b=u;if(r.skipReviewed){let e=await f(`/api/eval-targets/${d}/judge-reviews`),t=new Set(e.filter(i=>W(i,n.engine,r.modelFlag)).map(i=>`${i.evalRunId}:${i.expectationIndex}`));if(b=u.filter(i=>!t.has(`${i.evalRunId}:${i.expectationIndex}`)),c=u.length-b.length,b.length===0)return{targetName:v.name,reviewer:n,judgeModels:[],reviewerModel:n.model??`${n.engine} (CLI default)`,report:j([],0),persisted:0,alreadyReviewed:c,deferredPartialRuns:0}}let y=new Map;for(let e=0;;e+=C){let t=await f(`/api/eval-targets/${d}/runs?limit=${C}&offset=${e}`);for(let i of t)y.set(i.id,i);if(t.length<C)break}let q=await f(`/api/eval-targets/${d}/evals`),X=new Map(q.map(e=>[e.id,e.prompt])),o=new Map;for(let e of b){let t=o.get(e.evalRunId)??[];t.push(e),o.set(e.evalRunId,t)}let P=new Map;for(let e of u){let t=P.get(e.evalRunId)??new Set;t.add(e.expectationIndex),P.set(e.evalRunId,t)}let x=0;for(let[e]of[...o]){let t=y.get(e)?.grading?.expectations;if(!t)continue;let i=Z(t),g=P.get(e)??new Set;[...i].every(h=>g.has(h))||(o.delete(e),x+=1)}if(x>0&&a(`${x} partially-labeled run(s) deferred \u2014 a run is re-graded once, after all its assertions are labeled.`),o.size===0)return{targetName:v.name,reviewer:n,judgeModels:[],reviewerModel:n.model??`${n.engine} (CLI default)`,report:j([],0),persisted:0,alreadyReviewed:c,deferredPartialRuns:x};if(n.engine==="codex"&&n.model){let e=await J({prompt:"Reply with exactly: OK",model:n.model,timeout:6e4});if(e.error&&B(e.error)){if(n.model===R)throw new w("preflight-failed",`Codex fallback model ${R} is also unrunnable: ${e.error}`);s(`Your codex model "${n.model}" can't run on the installed CLI/account \u2014 falling back to ${R}.`),n={...n,model:R}}else if(e.error)throw new w("preflight-failed",`Codex preflight failed: ${e.error}`)}let S=[...o.values()].flat(),Y=[...new Set(S.map(e=>e.judgeModel).filter(e=>e!=null))];a(`Re-grading ${o.size} annotated run(s) / ${S.length} assertion(s) on "${v.name}"`+(c?` (${c} already reviewed \u2014 skipped)`:"")+".");let $=[],I=0,k=new Set,m=r.limit!=null?[...o.entries()].slice(0,Math.max(1,r.limit)):[...o.entries()];m.length<o.size&&a(`Sampling ${m.length} of ${o.size} annotated runs (limit).`);let H=0,Q=p(async()=>{for(;;){let e=H++;if(e>=m.length)return;let[t,i]=m[e],g=y.get(t),h=g?.grading?.expectations,O=g?.outputs?.transcript,F=g?X.get(g.evalId):void 0;if(!g||!h?.length||!O||!F){I+=i.length,s(`run ${t.slice(0,8)}: missing output/expectations/prompt \u2014 skipped`);continue}let M=await G({prompt:F,output:O,expectations:h.map(l=>l.text),model:n.model??void 0,timeout:U,engine:n.engine});M.judge_model&&k.add(M.judge_model);for(let l of i){let L=h[l.expectationIndex],A=M.expectations[l.expectationIndex];if(!L||!A||L.text!==l.expectationText){I+=1;continue}if(M.judge_model==null&&A.method==="llm"){I+=1;continue}$.push({runId:t,expectationIndex:l.expectationIndex,text:l.expectationText,humanPassed:D(l.verdict,l.judgePassed),judgeAPassed:l.judgePassed,judgeBPassed:A.passed})}a(` ${e+1}/${m.length} re-graded`)}},"workerFn");await Promise.all(Array.from({length:Math.max(1,Math.min(K,m.length))},Q));let V=j($,I),_=[...k][0]??n.model??`${n.engine} (CLI default)`,E=0;if($.length>0)try{E=(await T(`/api/eval-targets/${d}/judge-reviews`,{reviewerEngine:n.engine,reviewerModel:_,verdicts:$.map(t=>({evalRunId:t.runId,expectationIndex:t.expectationIndex,expectationText:t.text,judgePassed:t.judgeAPassed,humanPassed:t.humanPassed,reviewerPassed:t.judgeBPassed}))})).upserted,a(`Persisted ${E} reviewer verdict(s) \u2014 disagreements appear on the Review tab.`)}catch(e){s(`Could not persist reviewer verdicts: ${e instanceof Error?e.message:e}`)}return{targetName:v.name,reviewer:n,judgeModels:Y,reviewerModel:_,report:V,persisted:E,alreadyReviewed:c,deferredPartialRuns:x}}p(oe,"runJudgeReviewPass");export{W as a,Z as b,w as c,oe as d};
@@ -0,0 +1 @@
1
+ import{c as d,d as t}from"./chunk-BSXUH5FD.js";import{a as r}from"./chunk-ZLLER3HP.js";async function g(o,i){let{evalTargetId:s}=o;try{let e=await t({targetId:s,engineFlag:"auto",skipReviewed:!0,log:r(a=>i.logger.info(`[judge-review] ${a}`),"log"),warn:r(a=>i.logger.warn(`[judge-review] ${a}`),"warn")});return{evalTargetId:s,reviewerModel:e.reviewerModel,comparedPairs:e.report.pairs,disagreements:e.report.disagreements.length,persisted:e.persisted,alreadyReviewed:e.alreadyReviewed,deferredPartialRuns:e.deferredPartialRuns}}catch(e){if(e instanceof d)return i.logger.info(`[judge-review] skipped (${e.reason}): ${e.message}`),{evalTargetId:s,skipped:e.reason};throw e}}r(g,"processJudgeReview");export{g as a};
@@ -0,0 +1 @@
1
+ import{a as p,c as wr}from"./chunk-ZLLER3HP.js";import{boolean as zo,pgTable as Ar,text as $e,timestamp as kt,uuid as jo}from"drizzle-orm/pg-core";import{pgTable as Qe,text as oe,timestamp as Ae,jsonb as wo,uuid as J,primaryKey as Ao}from"drizzle-orm/pg-core";var u=Qe("organizations",{id:J("id").primaryKey().defaultRandom(),name:oe("name").unique().notNull(),slug:oe("slug").unique().notNull(),metadata:wo("metadata"),createdAt:Ae("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Ae("updated_at",{withTimezone:!0}).defaultNow()}),v=Qe("teams",{id:J("id").primaryKey().defaultRandom(),orgId:J("org_id").references(()=>u.id,{onDelete:"cascade"}),name:oe("name").notNull(),slug:oe("slug").notNull(),metadata:wo("metadata"),createdAt:Ae("created_at",{withTimezone:!0}).defaultNow()}),ne=Qe("user_organizations",{userId:J("user_id").notNull(),orgId:J("org_id").references(()=>u.id,{onDelete:"cascade"}).notNull(),role:oe("role").notNull().default("member"),createdAt:Ae("created_at",{withTimezone:!0}).defaultNow()},e=>[Ao({columns:[e.userId,e.orgId]})]),re=Qe("user_teams",{userId:J("user_id").notNull(),teamId:J("team_id").references(()=>v.id,{onDelete:"cascade"}).notNull(),role:oe("role").notNull().default("member"),createdAt:Ae("created_at",{withTimezone:!0}).defaultNow()},e=>[Ao({columns:[e.userId,e.teamId]})]);var o=Ar("profiles",{id:jo("id").primaryKey(),email:$e("email"),displayName:$e("display_name"),activeOrgId:jo("active_org_id").references(()=>u.id,{onDelete:"set null"}),isSuperadmin:zo("is_superadmin").notNull().default(!1),claudeCodePlan:$e("claude_code_plan"),planSource:$e("plan_source").notNull().default("detected"),setupCompletedAt:kt("setup_completed_at",{withTimezone:!0}),liveSendSkipped:zo("live_send_skipped").notNull().default(!1),createdAt:kt("created_at",{withTimezone:!0}).defaultNow(),updatedAt:kt("updated_at",{withTimezone:!0}).defaultNow()});import{pgTable as kr,text as ie,timestamp as Kt,jsonb as bo,uuid as Ze,integer as Er,boolean as br,index as Pt}from"drizzle-orm/pg-core";import{boolean as jr,jsonb as Dr,pgTable as St,primaryKey as ko,text as Y,timestamp as je,uniqueIndex as bt,uuid as Q}from"drizzle-orm/pg-core";import{sql as Rr}from"drizzle-orm";import{pgTable as Do,text as N,timestamp as ze,jsonb as Xe,uuid as q,integer as Et,boolean as zr,uniqueIndex as Ro,index as We}from"drizzle-orm/pg-core";var r=Do("instructions",{id:q("id").primaryKey().defaultRandom(),name:N("name").notNull(),description:N("description").notNull(),type:N("type").notNull().default("instruction"),scope:N("scope").notNull(),scopeRef:q("scope_ref"),version:N("version").notNull(),content:N("content").notNull(),frontmatter:Xe("frontmatter").notNull(),slots:Xe("slots"),tags:N("tags").array(),compatibility:N("compatibility").array(),createdBy:q("created_by"),createdAt:ze("created_at",{withTimezone:!0}).defaultNow(),updatedAt:ze("updated_at",{withTimezone:!0}).defaultNow(),archived:zr("archived").default(!1),archivedAt:ze("archived_at",{withTimezone:!0}),archivedBy:q("archived_by"),forkedFromId:q("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:Et("scan_score"),scanFindings:Xe("scan_findings"),popularityScore:Et("popularity_score"),sourceUpdatedAt:ze("source_updated_at",{withTimezone:!0})},e=>[Ro("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())]),se=Do("instruction_versions",{id:q("id").primaryKey().defaultRandom(),instructionId:q("instruction_id").references(()=>r.id,{onDelete:"cascade"}),versionNumber:Et("version_number").notNull(),content:N("content").notNull(),frontmatter:Xe("frontmatter").notNull(),changeSummary:N("change_summary"),createdBy:q("created_by"),createdAt:ze("created_at",{withTimezone:!0}).defaultNow()},e=>[Ro("instruction_versions_instruction_version_idx").on(e.instructionId,e.versionNumber)]);var s=St("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:Dr("metadata"),createdBy:Q("created_by"),createdAt:je("created_at",{withTimezone:!0}).defaultNow(),updatedAt:je("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(Rr`${e.gitRemoteUrl} IS NOT NULL`)]),M=St("project_instructions",{projectId:Q("project_id").references(()=>s.id,{onDelete:"cascade"}).notNull(),instructionId:Q("instruction_id").references(()=>r.id,{onDelete:"cascade"}).notNull(),addedAt:je("added_at",{withTimezone:!0}).defaultNow(),addedBy:Q("added_by")},e=>[ko({columns:[e.projectId,e.instructionId]})]),Eo=St("project_checkouts",{projectId:Q("project_id").references(()=>s.id,{onDelete:"cascade"}).notNull(),path:Y("path").notNull(),isWorktree:jr("is_worktree").notNull().default(!1),firstSeen:je("first_seen",{withTimezone:!0}).notNull().defaultNow(),lastSeen:je("last_seen",{withTimezone:!0}).notNull().defaultNow()},e=>[ko({columns:[e.projectId,e.path]}),bt("project_checkouts_path_unique").on(e.path)]);var g=kr("agent_runs",{id:Ze("id").primaryKey().defaultRandom(),userId:Ze("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),orgId:Ze("org_id").references(()=>u.id,{onDelete:"set null"}),projectId:Ze("project_id").references(()=>s.id,{onDelete:"set null"}),projectPath:ie("project_path"),gitRemote:ie("git_remote"),baseBranch:ie("base_branch"),title:ie("title"),prompt:ie("prompt"),toolSpec:bo("tool_spec").notNull().default([]),autoWorktree:br("auto_worktree").notNull().default(!0),status:ie("status").notNull().default("pending"),sessionCount:Er("session_count").notNull().default(0),metadata:bo("metadata").notNull().default({}),createdAt:Kt("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:Kt("updated_at",{withTimezone:!0}).notNull().defaultNow(),completedAt:Kt("completed_at",{withTimezone:!0})},e=>[Pt("idx_agent_runs_user").on(e.userId),Pt("idx_agent_runs_org_created").on(e.orgId,e.createdAt),Pt("idx_agent_runs_project").on(e.projectId)]);import{pgTable as Ot,text as y,timestamp as De,jsonb as $,uuid as k,integer as et,uniqueIndex as So,index as j}from"drizzle-orm/pg-core";var d=Ot("sessions",{id:k("id").primaryKey().defaultRandom(),userId:k("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),externalSessionId:y("external_session_id"),projectId:k("project_id").references(()=>s.id,{onDelete:"set null"}),orgId:k("org_id").references(()=>u.id,{onDelete:"set null"}),tool:y("tool").notNull(),projectPath:y("project_path"),gitBranch:y("git_branch"),startedAt:De("started_at",{withTimezone:!0}).notNull(),endedAt:De("ended_at",{withTimezone:!0}),eventCount:et("event_count").default(0),tokenUsage:$("token_usage"),analysis:$("analysis"),analyzedAt:De("analyzed_at",{withTimezone:!0}),analyzedEventCount:et("analyzed_event_count"),analyzedTurnCount:et("analyzed_turn_count"),metadata:$("metadata").default({}),origin:y("origin").notNull().default("unknown"),runId:k("run_id").references(()=>g.id,{onDelete:"set null"}),model:y("model"),harnessVersion:y("harness_version"),createdAt:De("created_at",{withTimezone:!0}).defaultNow()},e=>[j("idx_sessions_user").on(e.userId),j("idx_sessions_tool").on(e.tool),j("idx_sessions_started_at").on(e.startedAt),j("idx_sessions_project").on(e.projectId),j("idx_sessions_org_started_at").on(e.orgId,e.startedAt),j("idx_sessions_run").on(e.runId),So("idx_sessions_user_external").on(e.userId,e.externalSessionId)]),ae=Ot("session_events",{id:k("id").primaryKey().defaultRandom(),sessionId:k("session_id").notNull().references(()=>d.id,{onDelete:"cascade"}),sequence:et("sequence").notNull(),eventType:y("event_type").notNull(),content:y("content"),toolName:y("tool_name"),toolInput:$("tool_input"),toolOutput:$("tool_output"),tokenUsage:$("token_usage"),model:y("model"),timestamp:De("timestamp",{withTimezone:!0}).notNull(),metadata:$("metadata").default({})},e=>[So("session_events_session_sequence_idx").on(e.sessionId,e.sequence),j("idx_session_events_session_id").on(e.sessionId),j("idx_session_events_event_type").on(e.eventType),j("idx_session_events_model").on(e.model)]),L=Ot("session_instructions",{sessionId:k("session_id").notNull().references(()=>d.id,{onDelete:"cascade"}),instructionId:k("instruction_id").notNull().references(()=>r.id,{onDelete:"cascade"}),linkMethod:y("link_method").notNull()},e=>[j("idx_session_instructions_instruction_id").on(e.instructionId)]);import{pgTable as Sr,text as de,timestamp as Ct,uuid as Re,integer as Ko,index as tt}from"drizzle-orm/pg-core";var T=Sr("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:Ko("version").notNull().default(1),parentId:Re("parent_id").references(()=>T.id,{onDelete:"set null"}),kind:de("kind").notNull(),title:de("title").notNull(),body:de("body").notNull(),source:de("source").notNull(),status:de("status").notNull().default("active"),trustClass:de("trust_class"),trustVersion:Ko("trust_version"),trustComputedAt:Ct("trust_computed_at",{withTimezone:!0}),createdAt:Ct("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:Ct("updated_at",{withTimezone:!0}).notNull().defaultNow()},e=>[tt("idx_memories_user").on(e.userId),tt("idx_memories_project").on(e.projectId),tt("idx_memories_parent").on(e.parentId),tt("idx_memories_user_status").on(e.userId,e.status)]);import{pgTable as Kr,text as ke,timestamp as qt,uuid as Mt,integer as Po,jsonb as Pr,index as Oo}from"drizzle-orm/pg-core";var Co=Kr("memory_experiments",{id:Mt("id").primaryKey().defaultRandom(),memoryId:Mt("memory_id").notNull().references(()=>T.id,{onDelete:"cascade"}),userId:Mt("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),memoryVersion:Po("memory_version").notNull().default(1),taskPrompt:ke("task_prompt").notNull(),expectations:ke("expectations").array().notNull().default([]),trials:Po("trials").notNull().default(10),model:ke("model"),status:ke("status").notNull().default("pending"),result:Pr("result").$type(),error:ke("error"),createdAt:qt("created_at",{withTimezone:!0}).notNull().defaultNow(),startedAt:qt("started_at",{withTimezone:!0}),completedAt:qt("completed_at",{withTimezone:!0})},e=>[Oo("idx_memory_experiments_memory").on(e.memoryId),Oo("idx_memory_experiments_user").on(e.userId)]);import{boolean as Or,date as Cr,index as Lt,integer as qr,jsonb as Mr,pgTable as Bt,text as A,timestamp as B,uniqueIndex as Lr,uuid as ue}from"drizzle-orm/pg-core";var qo=Bt("announcements",{id:ue("id").primaryKey().defaultRandom(),version:A("version").notNull().unique(),releaseDate:Cr("release_date").notNull(),subject:A("subject").notNull(),htmlBody:A("html_body").notNull(),textBody:A("text_body").notNull(),sections:Mr("sections").notNull().default({}),status:A("status").notNull().default("draft"),recipientCount:qr("recipient_count"),sentAt:B("sent_at",{withTimezone:!0}),sentBy:ue("sent_by"),error:A("error"),createdAt:B("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:B("updated_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Lt("idx_announcements_status").on(e.status),Lt("idx_announcements_created").on(e.createdAt)]),Mo=Bt("announcement_deliveries",{id:ue("id").primaryKey().defaultRandom(),announcementId:ue("announcement_id").notNull(),userId:ue("user_id").notNull(),email:A("email").notNull(),status:A("status").notNull().default("pending"),providerId:A("provider_id"),error:A("error"),sentAt:B("sent_at",{withTimezone:!0}),createdAt:B("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Lr("uniq_announcement_deliveries_announcement_user").on(e.announcementId,e.userId),Lt("idx_announcement_deliveries_user").on(e.userId,e.createdAt)]),Lo=Bt("notification_preferences",{userId:ue("user_id").primaryKey(),productAnnouncements:Or("product_announcements").notNull().default(!0),unsubscribeToken:A("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 Br,text as Ut,timestamp as ot,uuid as nt,index as Bo}from"drizzle-orm/pg-core";var E=Br("org_invitations",{id:nt("id").primaryKey().defaultRandom(),orgId:nt("org_id").notNull().references(()=>u.id,{onDelete:"cascade"}),email:Ut("email").notNull(),role:Ut("role").notNull().default("member"),teamId:nt("team_id").references(()=>v.id,{onDelete:"set null"}),invitedBy:nt("invited_by").notNull().references(()=>o.id),token:Ut("token").notNull().unique(),expiresAt:ot("expires_at",{withTimezone:!0}).notNull(),acceptedAt:ot("accepted_at",{withTimezone:!0}),revokedAt:ot("revoked_at",{withTimezone:!0}),createdAt:ot("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 Ur,text as Hr,timestamp as Vr,jsonb as Fr,uuid as Ht,index as Uo}from"drizzle-orm/pg-core";var le=Ur("instruction_events",{id:Ht("id").primaryKey().defaultRandom(),instructionId:Ht("instruction_id").notNull().references(()=>r.id,{onDelete:"cascade"}),eventType:Hr("event_type").notNull(),actorId:Ht("actor_id").notNull(),metadata:Fr("metadata"),createdAt:Vr("created_at",{withTimezone:!0}).defaultNow()},e=>[Uo("idx_instruction_events_instruction").on(e.instructionId),Uo("idx_instruction_events_type").on(e.eventType)]);import{pgTable as Ho,text as rt,timestamp as Vo,uuid as D,integer as Fo,index as ce,unique as Gr}from"drizzle-orm/pg-core";var b=Ho("treatment_assignments",{id:D("id").primaryKey().defaultRandom(),userId:D("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),treatmentType:rt("treatment_type").notNull(),treatmentId:D("treatment_id").notNull(),treatmentVersion:Fo("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:rt("method").notNull(),assignedAt:Vo("assigned_at",{withTimezone:!0}).notNull().defaultNow()},e=>[ce("idx_treatment_assignments_user").on(e.userId),ce("idx_treatment_assignments_treatment").on(e.treatmentType,e.treatmentId),ce("idx_treatment_assignments_project").on(e.projectId)]),S=Ho("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:rt("treatment_type").notNull(),treatmentId:D("treatment_id").notNull(),treatmentVersion:Fo("treatment_version").notNull().default(1),assignmentId:D("assignment_id").references(()=>b.id,{onDelete:"set null"}),method:rt("method").notNull(),exposedAt:Vo("exposed_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Gr("treatment_exposures_unique").on(e.sessionId,e.treatmentType,e.treatmentId,e.treatmentVersion),ce("idx_treatment_exposures_treatment").on(e.treatmentType,e.treatmentId),ce("idx_treatment_exposures_user").on(e.userId),ce("idx_treatment_exposures_session").on(e.sessionId)]);import{pgTable as Jr,text as Vt,timestamp as Yr,uuid as st,integer as Qr,index as Go,uniqueIndex as $r}from"drizzle-orm/pg-core";var Jo=Jr("pending_treatment_exposures",{id:st("id").primaryKey().defaultRandom(),userId:st("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),externalSessionId:Vt("external_session_id").notNull(),treatmentType:Vt("treatment_type").notNull(),treatmentId:st("treatment_id").notNull(),treatmentVersion:Qr("treatment_version").notNull().default(1),method:Vt("method").notNull().default("injected"),projectId:st("project_id").references(()=>s.id,{onDelete:"set null"}),createdAt:Yr("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[$r("pending_treatment_exposures_unique").on(e.externalSessionId,e.treatmentType,e.treatmentId,e.treatmentVersion),Go("idx_pending_treatment_exposures_ext").on(e.externalSessionId),Go("idx_pending_treatment_exposures_user").on(e.userId)]);import{pgTable as Wr,text as me,timestamp as Ft,uuid as Gt,jsonb as Xr,uniqueIndex as Zr,index as Yo}from"drizzle-orm/pg-core";var it=Wr("session_terminal_targets",{id:Gt("id").primaryKey().defaultRandom(),userId:Gt("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),sessionId:Gt("session_id").references(()=>d.id,{onDelete:"set null"}),externalSessionId:me("external_session_id"),kind:me("kind").notNull(),target:me("target").notNull(),status:me("status").notNull().default("active"),attachCommand:me("attach_command").notNull(),projectPath:me("project_path"),metadata:Xr("metadata").notNull().default({}),lastSeenAt:Ft("last_seen_at",{withTimezone:!0}).defaultNow(),createdAt:Ft("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Ft("updated_at",{withTimezone:!0}).defaultNow()},e=>[Zr("idx_session_terminal_targets_user_target").on(e.userId,e.target),Yo("idx_session_terminal_targets_session").on(e.sessionId),Yo("idx_session_terminal_targets_user_status").on(e.userId,e.status)]);import{boolean as es,index as at,jsonb as Qo,pgTable as ts,text as W,timestamp as Ee,uuid as dt,integer as os}from"drizzle-orm/pg-core";var $o=ts("session_send_jobs",{id:dt("id").primaryKey().defaultRandom(),userId:dt("user_id").notNull(),sessionId:dt("session_id").notNull().references(()=>d.id,{onDelete:"cascade"}),terminalTargetId:dt("terminal_target_id").references(()=>it.id,{onDelete:"set null"}),target:W("target").notNull(),message:W("message").notNull(),submit:es("submit").notNull().default(!0),delivery:W("delivery").notNull().default("live"),status:W("status").notNull().default("pending"),result:Qo("result"),error:W("error"),attempts:os("attempts").notNull().default(0),taskKind:W("task_kind"),payload:Qo("payload"),claimedBy:W("claimed_by"),claimedAt:Ee("claimed_at",{withTimezone:!0}),leaseExpiresAt:Ee("lease_expires_at",{withTimezone:!0}),createdAt:Ee("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Ee("updated_at",{withTimezone:!0}).defaultNow(),completedAt:Ee("completed_at",{withTimezone:!0})},e=>[at("idx_session_send_jobs_user").on(e.userId),at("idx_session_send_jobs_session").on(e.sessionId),at("idx_session_send_jobs_status").on(e.status),at("idx_session_send_jobs_pending").on(e.userId,e.status)]);import{pgTable as Xo,text as X,timestamp as ut,jsonb as Zo,uuid as U,integer as ns,boolean as rs,uniqueIndex as ss,index as Wo,primaryKey as is}from"drizzle-orm/pg-core";var z=Xo("packs",{id:U("id").primaryKey().defaultRandom(),name:X("name").notNull(),description:X("description").notNull(),scope:X("scope").notNull(),scopeRef:U("scope_ref"),version:X("version").notNull().default("1.0.0"),tags:X("tags").array(),badge:X("badge"),metadata:Zo("metadata"),createdBy:U("created_by"),createdAt:ut("created_at",{withTimezone:!0}).defaultNow(),updatedAt:ut("updated_at",{withTimezone:!0}).defaultNow(),archived:rs("archived").default(!1),archivedAt:ut("archived_at",{withTimezone:!0}),archivedBy:U("archived_by"),forkedFromId:U("forked_from_id").references(()=>z.id,{onDelete:"set null"}),upstreamVersion:X("upstream_version")},e=>[ss("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)]),H=Xo("pack_instructions",{packId:U("pack_id").references(()=>z.id,{onDelete:"cascade"}).notNull(),instructionId:U("instruction_id").references(()=>r.id,{onDelete:"cascade"}).notNull(),position:ns("position").notNull().default(0),slotOverrides:Zo("slot_overrides"),addedAt:ut("added_at",{withTimezone:!0}).defaultNow(),addedBy:U("added_by")},e=>[is({columns:[e.packId,e.instructionId]})]);import{pgTable as as,text as Jt,timestamp as ds,jsonb as us,uuid as Yt,index as _e}from"drizzle-orm/pg-core";var pe=as("instruction_usage_events",{id:Yt("id").primaryKey().defaultRandom(),instructionId:Yt("instruction_id").references(()=>r.id,{onDelete:"set null"}),userId:Yt("user_id").notNull(),surface:Jt("surface").notNull(),action:Jt("action").notNull(),metadata:us("metadata"),traceId:Jt("trace_id"),createdAt:ds("created_at",{withTimezone:!0}).defaultNow()},e=>[_e("idx_usage_events_instruction").on(e.instructionId),_e("idx_usage_events_user").on(e.userId),_e("idx_usage_events_surface").on(e.surface),_e("idx_usage_events_action").on(e.action),_e("idx_usage_events_created_at").on(e.createdAt),_e("idx_usage_events_user_created").on(e.userId,e.createdAt)]);import{pgTable as ls,text as lt,timestamp as en,jsonb as cs,uuid as tn,index as Qt}from"drizzle-orm/pg-core";var on=ls("worker_connections",{id:tn("id").primaryKey().defaultRandom(),userId:tn("user_id").notNull(),workerType:lt("worker_type").notNull().default("mcp"),clientName:lt("client_name").notNull(),clientVersion:lt("client_version"),workerVersion:lt("worker_version"),lastHeartbeat:en("last_heartbeat",{withTimezone:!0}).notNull().defaultNow(),connectedAt:en("connected_at",{withTimezone:!0}).notNull().defaultNow(),metadata:cs("metadata")},e=>[Qt("idx_worker_connections_user").on(e.userId),Qt("idx_worker_connections_heartbeat").on(e.userId,e.lastHeartbeat),Qt("idx_worker_connections_type").on(e.userId,e.workerType)]);import{pgTable as ms,text as ct,timestamp as _s,jsonb as ps,uuid as nn,index as rn}from"drizzle-orm/pg-core";var sn=ms("cli_setup_events",{id:nn("id").primaryKey().defaultRandom(),userId:nn("user_id").notNull(),deviceId:ct("device_id").notNull(),event:ct("event").notNull(),cliVersion:ct("cli_version"),os:ct("os"),props:ps("props").notNull().default({}),createdAt:_s("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[rn("idx_cli_setup_events_user").on(e.userId,e.createdAt),rn("idx_cli_setup_events_device").on(e.deviceId,e.createdAt)]);import{pgTable as fs,text as Z,integer as xs,boolean as gs,timestamp as Ns,jsonb as vs,uuid as hs,index as an}from"drizzle-orm/pg-core";var dn=fs("cli_error_events",{id:hs("id").primaryKey().defaultRandom(),deviceId:Z("device_id"),event:Z("event").notNull(),command:Z("command"),statusCode:xs("status_code"),message:Z("message"),cliVersion:Z("cli_version"),os:Z("os"),nodeVersion:Z("node_version"),proxied:gs("proxied"),props:vs("props").notNull().default({}),createdAt:Ns("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[an("idx_cli_error_events_created").on(e.createdAt),an("idx_cli_error_events_device").on(e.deviceId,e.createdAt)]);import{sql as Is}from"drizzle-orm";import{pgTable as ee,text as m,timestamp as h,jsonb as w,uuid as c,integer as K,boolean as be,index as x,unique as un}from"drizzle-orm/pg-core";var n=ee("eval_targets",{id:c("id").primaryKey().defaultRandom(),userId:c("user_id").notNull(),name:m("name").notNull(),type:m("type").notNull(),content:m("content").notNull(),description:m("description").notNull().default(""),metadata:w("metadata").notNull().default({}),version:K("version").notNull().default(1),parentId:c("parent_id").references(()=>n.id,{onDelete:"set null"}),createdAt:h("created_at",{withTimezone:!0}).defaultNow(),updatedAt:h("updated_at",{withTimezone:!0}).defaultNow()},e=>[x("eval_targets_name_user_idx").on(e.name,e.userId),x("idx_eval_targets_user").on(e.userId),x("idx_eval_targets_type").on(e.type),x("idx_eval_targets_parent").on(e.parentId)]),P=ee("evals",{id:c("id").primaryKey().defaultRandom(),evalTargetId:c("eval_target_id").notNull().references(()=>n.id,{onDelete:"cascade"}),name:m("name").notNull(),prompt:m("prompt").notNull(),expectedOutput:m("expected_output").notNull().default(""),files:w("files").notNull().default([]),expectations:w("expectations").notNull().default([]),retiredAt:h("retired_at",{withTimezone:!0}),retiredReason:m("retired_reason"),createdAt:h("created_at",{withTimezone:!0}).defaultNow(),updatedAt:h("updated_at",{withTimezone:!0}).defaultNow()},e=>[x("idx_evals_target").on(e.evalTargetId),x("idx_evals_target_active").on(e.evalTargetId).where(Is`${e.retiredAt} IS NULL`)]),R=ee("eval_runs",{id:c("id").primaryKey().defaultRandom(),jobId:c("job_id"),evalId:c("eval_id").notNull().references(()=>P.id,{onDelete:"cascade"}),evalTargetId:c("eval_target_id").notNull().references(()=>n.id,{onDelete:"cascade"}),evalTargetVersion:K("eval_target_version").notNull(),configuration:m("configuration").notNull(),runNumber:K("run_number").notNull().default(1),iteration:K("iteration").notNull().default(1),status:m("status").notNull().default("completed"),outputs:w("outputs").notNull().default({}),timing:w("timing").notNull().default({}),grading:w("grading").notNull().default({}),comparison:w("comparison"),createdAt:h("created_at",{withTimezone:!0}).defaultNow()},e=>[x("idx_eval_runs_eval").on(e.evalId),x("idx_eval_runs_target").on(e.evalTargetId),x("idx_eval_runs_iteration").on(e.evalTargetId,e.iteration)]),ln=ee("eval_comparisons",{id:c("id").primaryKey().defaultRandom(),userId:c("user_id").notNull(),targetAId:c("target_a_id").notNull().references(()=>n.id,{onDelete:"cascade"}),targetBId:c("target_b_id").notNull().references(()=>n.id,{onDelete:"cascade"}),targetAVersion:K("target_a_version").notNull(),targetBVersion:K("target_b_version").notNull(),isSwapped:be("is_swapped").notNull().default(!1),winnerTargetId:c("winner_target_id").references(()=>n.id,{onDelete:"set null"}),perEval:w("per_eval").notNull().default([]),overall:w("overall").notNull().default({}),rawOutput:m("raw_output"),model:m("model"),status:m("status").notNull().default("completed"),createdAt:h("created_at",{withTimezone:!0}).defaultNow()},e=>[x("idx_eval_comparisons_target_a").on(e.targetAId),x("idx_eval_comparisons_target_b").on(e.targetBId),x("idx_eval_comparisons_user").on(e.userId)]),cn=ee("eval_grade_annotations",{id:c("id").primaryKey().defaultRandom(),userId:c("user_id").notNull(),evalRunId:c("eval_run_id").notNull().references(()=>R.id,{onDelete:"cascade"}),evalTargetId:c("eval_target_id").notNull().references(()=>n.id,{onDelete:"cascade"}),expectationIndex:K("expectation_index").notNull(),expectationText:m("expectation_text").notNull(),judgePassed:be("judge_passed").notNull(),judgeMethod:m("judge_method").notNull(),judgeModel:m("judge_model"),verdict:m("verdict").notNull(),flag:m("flag"),note:m("note"),createdAt:h("created_at",{withTimezone:!0}).defaultNow(),updatedAt:h("updated_at",{withTimezone:!0}).defaultNow()},e=>[x("idx_eval_grade_annotations_target").on(e.evalTargetId),x("idx_eval_grade_annotations_run").on(e.evalRunId),un("eval_grade_annotations_eval_run_id_expectation_index_key").on(e.evalRunId,e.expectationIndex)]),mn=ee("judge_reviewer_verdicts",{id:c("id").primaryKey().defaultRandom(),userId:c("user_id").notNull(),evalTargetId:c("eval_target_id").notNull().references(()=>n.id,{onDelete:"cascade"}),evalRunId:c("eval_run_id").notNull().references(()=>R.id,{onDelete:"cascade"}),expectationIndex:K("expectation_index").notNull(),expectationText:m("expectation_text").notNull(),judgePassed:be("judge_passed").notNull(),humanPassed:be("human_passed").notNull(),reviewerEngine:m("reviewer_engine").notNull(),reviewerModel:m("reviewer_model").notNull(),reviewerPassed:be("reviewer_passed").notNull(),resolvedAt:h("resolved_at",{withTimezone:!0}),resolution:m("resolution"),createdAt:h("created_at",{withTimezone:!0}).defaultNow(),updatedAt:h("updated_at",{withTimezone:!0}).defaultNow()},e=>[x("idx_jrv_target").on(e.evalTargetId),un("judge_reviewer_verdicts_eval_run_id_expectation_index_review_key").on(e.evalRunId,e.expectationIndex,e.reviewerModel)]),fe=ee("benchmarks",{id:c("id").primaryKey().defaultRandom(),evalTargetId:c("eval_target_id").notNull().references(()=>n.id,{onDelete:"cascade"}),iteration:K("iteration").notNull().default(1),runSummary:w("run_summary").notNull().default({}),notes:w("notes").notNull().default([]),feedback:w("feedback"),createdAt:h("created_at",{withTimezone:!0}).defaultNow()},e=>[x("idx_benchmarks_target").on(e.evalTargetId)]);import{pgTable as pn,text as $t,timestamp as Wt,jsonb as fn,uuid as xe,integer as Se,index as mt,real as _n}from"drizzle-orm/pg-core";var ge=pn("trigger_evals",{id:xe("id").primaryKey().defaultRandom(),evalTargetId:xe("eval_target_id").notNull().references(()=>n.id,{onDelete:"cascade"}),userId:xe("user_id").notNull(),queries:fn("queries").notNull().default([]),status:$t("status").notNull().default("pending_review"),trainIndices:Se("train_indices").array().default([]),testIndices:Se("test_indices").array().default([]),createdAt:Wt("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Wt("updated_at",{withTimezone:!0}).defaultNow()},e=>[mt("idx_trigger_evals_target").on(e.evalTargetId),mt("idx_trigger_evals_user").on(e.userId)]),Ne=pn("optimization_runs",{id:xe("id").primaryKey().defaultRandom(),evalTargetId:xe("eval_target_id").notNull().references(()=>n.id,{onDelete:"cascade"}),userId:xe("user_id").notNull(),type:$t("type").notNull(),iteration:Se("iteration").notNull(),inputVersion:Se("input_version").notNull(),outputVersion:Se("output_version"),trainScore:_n("train_score"),testScore:_n("test_score"),analysis:fn("analysis").notNull().default({}),status:$t("status").notNull().default("running"),createdAt:Wt("created_at",{withTimezone:!0}).defaultNow()},e=>[mt("idx_optimization_runs_target").on(e.evalTargetId),mt("idx_optimization_runs_user").on(e.userId)]);import{pgTable as ys,text as V,timestamp as Ts,jsonb as Ke,uuid as Xt,integer as Zt,real as ws,index as Pe,uniqueIndex as xn}from"drizzle-orm/pg-core";var F=ys("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:Zt("sequence").notNull().default(0),provider:V("provider").notNull(),model:V("model").notNull(),systemPrompt:V("system_prompt").notNull(),injectedInstructions:Ke("injected_instructions").notNull().default([]),messagesSummary:Ke("messages_summary").notNull(),tools:Ke("tools").notNull().default([]),systemHash:V("system_hash").notNull(),requestHash:V("request_hash").notNull().default(""),toolsHash:V("tools_hash"),injectedHash:V("injected_hash"),messagesDelta:Ke("messages_delta").default([]),messagesDeltaRef:V("messages_delta_ref"),maxTokens:Zt("max_tokens"),temperature:ws("temperature"),estimatedTokens:Zt("estimated_tokens"),capturedAt:Ts("captured_at",{withTimezone:!0}).notNull().defaultNow(),metadata:Ke("metadata").default({})},e=>[Pe("idx_context_snapshots_session").on(e.sessionId),Pe("idx_context_snapshots_user").on(e.userId),Pe("idx_context_snapshots_hash").on(e.systemHash),Pe("idx_context_snapshots_request_hash").on(e.requestHash),xn("idx_snapshots_session_request").on(e.sessionId,e.requestHash),xn("idx_snapshots_session_sequence").on(e.sessionId,e.sequence),Pe("idx_context_snapshots_user_session_captured").on(e.userId,e.sessionId,e.capturedAt.desc())]);import{pgTable as As,text as gn,timestamp as zs,jsonb as js,integer as Ds,index as Rs}from"drizzle-orm/pg-core";var Nn=As("content_blobs",{hash:gn("hash").primaryKey(),contentType:gn("content_type").notNull(),content:js("content").notNull(),sizeBytes:Ds("size_bytes").notNull().default(0),createdAt:zs("created_at",{withTimezone:!0}).defaultNow()},e=>[Rs("idx_content_blobs_type").on(e.contentType)]);import{pgTable as ks,text as _t,timestamp as Oe,jsonb as pt,uuid as eo,index as ft,integer as Es}from"drizzle-orm/pg-core";var ve=ks("eval_jobs",{id:eo("id").primaryKey().defaultRandom(),userId:eo("user_id").notNull(),evalTargetId:eo("eval_target_id").notNull().references(()=>n.id,{onDelete:"cascade"}),status:_t("status").notNull().default("pending"),config:pt("config").notNull().default({}),progress:pt("progress").notNull().default({}),result:pt("result"),error:_t("error"),attempts:Es("attempts").notNull().default(0),taskKind:_t("task_kind"),payload:pt("payload"),claimedBy:_t("claimed_by"),claimedAt:Oe("claimed_at",{withTimezone:!0}),leaseExpiresAt:Oe("lease_expires_at",{withTimezone:!0}),createdAt:Oe("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Oe("updated_at",{withTimezone:!0}).defaultNow(),completedAt:Oe("completed_at",{withTimezone:!0})},e=>[ft("idx_eval_jobs_user").on(e.userId),ft("idx_eval_jobs_target").on(e.evalTargetId),ft("idx_eval_jobs_status").on(e.status),ft("idx_eval_jobs_pending").on(e.userId,e.status)]);import{pgTable as bs,text as Ce,timestamp as qe,jsonb as vn,uuid as hn,integer as Ss,index as In}from"drizzle-orm/pg-core";var yn=bs("agent_jobs",{id:hn("id").primaryKey().defaultRandom(),userId:hn("user_id").notNull(),taskKind:Ce("task_kind").notNull(),status:Ce("status").notNull().default("pending"),payload:vn("payload").notNull(),dedupeKey:Ce("dedupe_key"),result:vn("result"),error:Ce("error"),attempts:Ss("attempts").notNull().default(0),claimedBy:Ce("claimed_by"),claimedAt:qe("claimed_at",{withTimezone:!0}),leaseExpiresAt:qe("lease_expires_at",{withTimezone:!0}),createdAt:qe("created_at",{withTimezone:!0}).notNull().defaultNow(),updatedAt:qe("updated_at",{withTimezone:!0}).notNull().defaultNow(),completedAt:qe("completed_at",{withTimezone:!0})},e=>[In("idx_agent_jobs_claim").on(e.userId,e.status,e.taskKind,e.createdAt),In("idx_agent_jobs_dedupe").on(e.userId,e.taskKind,e.dedupeKey)]);import{pgTable as Ks,text as Me,timestamp as Le,jsonb as xt,uuid as to,index as gt,integer as Ps}from"drizzle-orm/pg-core";var Tn=Ks("insights_jobs",{id:to("id").primaryKey().defaultRandom(),userId:to("user_id").notNull(),status:Me("status").notNull().default("pending"),projectPath:Me("project_path"),projectId:to("project_id").references(()=>s.id,{onDelete:"set null"}),config:xt("config").notNull().default({}),progress:xt("progress").notNull().default({}),result:xt("result"),error:Me("error"),attempts:Ps("attempts").notNull().default(0),taskKind:Me("task_kind"),payload:xt("payload"),claimedBy:Me("claimed_by"),claimedAt:Le("claimed_at",{withTimezone:!0}),leaseExpiresAt:Le("lease_expires_at",{withTimezone:!0}),createdAt:Le("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Le("updated_at",{withTimezone:!0}).defaultNow(),completedAt:Le("completed_at",{withTimezone:!0})},e=>[gt("idx_insights_jobs_user").on(e.userId),gt("idx_insights_jobs_status").on(e.status),gt("idx_insights_jobs_pending").on(e.userId,e.status),gt("idx_insights_jobs_project").on(e.projectId)]);import{pgTable as Os,text as oo,timestamp as Nt,uuid as wn,index as Cs,uniqueIndex as qs}from"drizzle-orm/pg-core";var he=Os("api_keys",{id:wn("id").primaryKey().defaultRandom(),userId:wn("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),name:oo("name").notNull(),keyHash:oo("key_hash").notNull(),keyPrefix:oo("key_prefix").notNull(),lastUsedAt:Nt("last_used_at",{withTimezone:!0}),expiresAt:Nt("expires_at",{withTimezone:!0}),revokedAt:Nt("revoked_at",{withTimezone:!0}),createdAt:Nt("created_at",{withTimezone:!0}).defaultNow()},e=>[Cs("idx_api_keys_user").on(e.userId),qs("idx_api_keys_hash").on(e.keyHash)]);import{pgTable as Ms,text as no,timestamp as An,uuid as Ls,index as Bs}from"drizzle-orm/pg-core";var zn=Ms("extension_auth_codes",{code:no("code").primaryKey(),userId:Ls("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),editor:no("editor"),email:no("email"),expiresAt:An("expires_at",{withTimezone:!0}).notNull(),createdAt:An("created_at",{withTimezone:!0}).defaultNow()},e=>[Bs("idx_ext_auth_codes_expiry").on(e.expiresAt)]);import{pgTable as Us,text as Hs,timestamp as jn,jsonb as Vs,uuid as ro,index as Dn}from"drizzle-orm/pg-core";var Ie=Us("eval_conversations",{id:ro("id").primaryKey().defaultRandom(),evalTargetId:ro("eval_target_id").notNull().references(()=>n.id,{onDelete:"cascade"}),userId:ro("user_id").notNull(),messages:Vs("messages").notNull().default([]),status:Hs("status").notNull().default("active"),createdAt:jn("created_at",{withTimezone:!0}).defaultNow(),updatedAt:jn("updated_at",{withTimezone:!0}).defaultNow()},e=>[Dn("idx_eval_conversations_target").on(e.evalTargetId),Dn("idx_eval_conversations_user").on(e.userId)]);import{pgTable as Fs,text as O,timestamp as Rn,jsonb as Gs,uuid as so}from"drizzle-orm/pg-core";var kn=Fs("skill_submissions",{id:so("id").primaryKey().defaultRandom(),skillId:O("skill_id").notNull(),name:O("name").notNull(),description:O("description").notNull(),category:O("category").notNull(),tools:O("tools").array().notNull(),tags:O("tags").array().default([]),content:O("content").notNull(),status:O("status").notNull().default("pending"),submittedBy:so("submitted_by").notNull(),reviewedBy:so("reviewed_by"),reviewNote:O("review_note"),metadata:Gs("metadata"),createdAt:Rn("created_at",{withTimezone:!0}).defaultNow(),updatedAt:Rn("updated_at",{withTimezone:!0}).defaultNow()});import{pgTable as Js,text as Be,timestamp as En,jsonb as Ys,uuid as Qs,uniqueIndex as $s,index as bn}from"drizzle-orm/pg-core";var Sn=Js("harness_releases",{id:Qs("id").primaryKey().defaultRandom(),harness:Be("harness").notNull(),version:Be("version").notNull(),publishedAt:En("published_at",{withTimezone:!0}).notNull(),title:Be("title"),body:Be("body"),categories:Ys("categories").default({}),url:Be("url"),createdAt:En("created_at",{withTimezone:!0}).defaultNow()},e=>[$s("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 Ws,text as ye,timestamp as Kn,jsonb as Xs,uuid as Pn,index as On,uniqueIndex as Zs}from"drizzle-orm/pg-core";var io=Ws("notifications",{id:Pn("id").primaryKey().defaultRandom(),userId:Pn("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:Xs("metadata").notNull().default({}),readAt:Kn("read_at",{withTimezone:!0}),createdAt:Kn("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[On("idx_notifications_user_created").on(e.userId,e.createdAt),On("idx_notifications_user_unread").on(e.userId),Zs("idx_notifications_source_dedup").on(e.userId,e.sourceTable,e.sourceId)]);import{pgTable as ei,text as Ue,timestamp as He,jsonb as ao,uuid as uo,index as vt,integer as ti}from"drizzle-orm/pg-core";var Te=ei("launch_jobs",{id:uo("id").primaryKey().defaultRandom(),userId:uo("user_id").notNull(),tool:Ue("tool").notNull(),status:Ue("status").notNull().default("pending"),config:ao("config").notNull().default({}),result:ao("result"),error:Ue("error"),attempts:ti("attempts").notNull().default(0),taskKind:Ue("task_kind"),payload:ao("payload"),claimedBy:Ue("claimed_by"),claimedAt:He("claimed_at",{withTimezone:!0}),leaseExpiresAt:He("lease_expires_at",{withTimezone:!0}),createdAt:He("created_at",{withTimezone:!0}).defaultNow(),updatedAt:He("updated_at",{withTimezone:!0}).defaultNow(),completedAt:He("completed_at",{withTimezone:!0}),runId:uo("run_id").references(()=>g.id,{onDelete:"set null"})},e=>[vt("idx_launch_jobs_user").on(e.userId),vt("idx_launch_jobs_status").on(e.status),vt("idx_launch_jobs_pending").on(e.userId,e.status),vt("idx_launch_jobs_run").on(e.runId)]);import{pgTable as Cn,uuid as C,text as Ve,real as oi,timestamp as ht,boolean as ni,uniqueIndex as ri,index as Fe}from"drizzle-orm/pg-core";var lo=Cn("instruction_suggestions",{id:C("id").primaryKey().defaultRandom(),userId:C("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),instructionId:C("instruction_id").notNull().references(()=>r.id,{onDelete:"cascade"}),projectPath:Ve("project_path").notNull(),projectId:C("project_id").references(()=>s.id,{onDelete:"set null"}),score:oi("score").notNull(),reason:Ve("reason").notNull(),generatedAt:ht("generated_at",{withTimezone:!0}).notNull().defaultNow(),isStale:ni("is_stale").notNull().default(!1),dismissedAt:ht("dismissed_at",{withTimezone:!0}),acceptedAt:ht("accepted_at",{withTimezone:!0}),promotedToInstructionId:C("promoted_to_instruction_id").references(()=>r.id,{onDelete:"set null"})},e=>[ri("idx_instruction_suggestions_user_project_instruction").on(e.userId,e.projectPath,e.instructionId),Fe("idx_instruction_suggestions_user_project").on(e.userId,e.projectPath),Fe("idx_instruction_suggestions_user_proj_id").on(e.userId,e.projectId),Fe("idx_instruction_suggestions_generated_at").on(e.generatedAt)]),qn=Cn("instruction_suggestion_events",{id:C("id").primaryKey().defaultRandom(),suggestionId:C("suggestion_id").notNull().references(()=>lo.id,{onDelete:"cascade"}),userId:C("user_id").notNull().references(()=>o.id,{onDelete:"cascade"}),eventType:Ve("event_type").notNull(),tool:Ve("tool"),sessionId:C("session_id"),projectPath:Ve("project_path").notNull(),createdAt:ht("created_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Fe("idx_instruction_suggestion_events_suggestion_id").on(e.suggestionId),Fe("idx_instruction_suggestion_events_user_id").on(e.userId)]);import{pgTable as si,text as co,integer as ii,numeric as Ge,timestamp as mo,index as ai,primaryKey as di}from"drizzle-orm/pg-core";var Mn=si("model_pricing",{provider:co("provider").notNull(),modelId:co("model_id").notNull(),inputPerM:Ge("input_per_m").notNull(),outputPerM:Ge("output_per_m").notNull(),cacheReadPerM:Ge("cache_read_per_m").notNull(),cacheWrite5mPerM:Ge("cache_write_5m_per_m").notNull(),cacheWrite1hPerM:Ge("cache_write_1h_per_m").notNull(),contextWindow:ii("context_window"),effectiveFrom:mo("effective_from",{withTimezone:!0}).notNull(),effectiveUntil:mo("effective_until",{withTimezone:!0}),source:co("source").notNull(),verifiedAt:mo("verified_at",{withTimezone:!0})},e=>[di({columns:[e.provider,e.modelId,e.effectiveFrom]}),ai("idx_model_pricing_active").on(e.provider,e.modelId,e.effectiveFrom.desc())]);import{pgTable as ui,text as te,numeric as Ln,timestamp as Bn,uuid as Un,jsonb as li,index as Hn}from"drizzle-orm/pg-core";var Vn=ui("limit_observations",{id:Un("id").primaryKey().defaultRandom(),observedAt:Bn("observed_at",{withTimezone:!0}).notNull().defaultNow(),provider:te("provider").notNull(),plan:te("plan").notNull(),limitType:te("limit_type").notNull(),value:Ln("value").notNull(),unit:te("unit").notNull(),comparator:te("comparator").notNull().default("="),resetsAt:Bn("resets_at",{withTimezone:!0}),sourceType:te("source_type").notNull(),sourceUrl:te("source_url"),sourceEvidence:li("source_evidence"),confidence:Ln("confidence").notNull(),userId:Un("user_id")},e=>[Hn("idx_limit_obs_lookup").on(e.provider,e.plan,e.limitType,e.observedAt.desc()),Hn("idx_limit_obs_user").on(e.userId,e.observedAt.desc())]);import{pgTable as ci,text as It,timestamp as mi,uuid as _i,jsonb as pi,boolean as fi,uniqueIndex as xi}from"drizzle-orm/pg-core";var Fn=ci("provider_docs_snapshots",{id:_i("id").primaryKey().defaultRandom(),fetchedAt:mi("fetched_at",{withTimezone:!0}).notNull().defaultNow(),provider:It("provider").notNull(),docUrl:It("doc_url").notNull(),contentHash:It("content_hash").notNull(),content:It("content").notNull(),parseSuccess:fi("parse_success").notNull(),parseErrors:pi("parse_errors")},e=>[xi("idx_docs_dedup").on(e.provider,e.docUrl,e.contentHash)]);import{pgTable as gi,text as yt,numeric as Gn,timestamp as Jn,uuid as Ni,primaryKey as vi,index as hi}from"drizzle-orm/pg-core";var Yn=gi("plan_limits_active",{provider:yt("provider").notNull(),plan:yt("plan").notNull(),limitType:yt("limit_type").notNull(),value:Gn("value").notNull(),unit:yt("unit").notNull(),effectiveFrom:Jn("effective_from",{withTimezone:!0}).notNull(),effectiveUntil:Jn("effective_until",{withTimezone:!0}),confidence:Gn("confidence").notNull(),sourceObservationIds:Ni("source_observation_ids").array().notNull()},e=>[vi({columns:[e.provider,e.plan,e.limitType,e.effectiveFrom]}),hi("idx_plan_limits_lookup").on(e.provider,e.plan,e.limitType,e.effectiveFrom.desc())]);import{pgTable as Ii,text as _o,timestamp as yi,uuid as Qn,jsonb as Ti,index as wi}from"drizzle-orm/pg-core";var $n=Ii("alert_dispatches",{id:Qn("id").primaryKey().defaultRandom(),userId:Qn("user_id").notNull(),alertKey:_o("alert_key").notNull(),severity:_o("severity").notNull(),lastDispatchedAt:yi("last_dispatched_at",{withTimezone:!0}).notNull().defaultNow(),lastState:Ti("last_state").notNull(),channel:_o("channel").notNull()},e=>[wi("idx_alert_user_key").on(e.userId,e.alertKey,e.lastDispatchedAt.desc())]);import{pgTable as Ai,text as po,timestamp as Wn,uuid as fo,integer as zi,index as ji,unique as Di}from"drizzle-orm/pg-core";var Xn=Ai("scaffolding_fingerprints",{id:fo("id").primaryKey().defaultRandom(),userId:fo("user_id").notNull(),harness:po("harness").notNull(),model:po("model").notNull(),toolsHash:po("tools_hash").notNull(),firstSeenAt:Wn("first_seen_at",{withTimezone:!0}).notNull().defaultNow(),lastSeenAt:Wn("last_seen_at",{withTimezone:!0}).notNull().defaultNow(),snapshotCount:zi("snapshot_count").notNull().default(1),firstSessionId:fo("first_session_id")},e=>[Di("scaffolding_fingerprints_user_id_harness_model_tools_hash_key").on(e.userId,e.harness,e.model,e.toolsHash),ji("idx_scaffolding_fp_segment").on(e.userId,e.harness,e.model)]);import{pgTable as Ri,text as xo,timestamp as ki,jsonb as Ei,uuid as Zn,integer as bi,unique as Si}from"drizzle-orm/pg-core";var er=Ri("scaffolding_segments",{id:Zn("id").primaryKey().defaultRandom(),userId:Zn("user_id").notNull(),harness:xo("harness").notNull(),model:xo("model").notNull(),coreNames:Ei("core_names").notNull(),coreHash:xo("core_hash").notNull(),activeFingerprints:bi("active_fingerprints").notNull(),computedAt:ki("computed_at",{withTimezone:!0}).notNull().defaultNow()},e=>[Si("scaffolding_segments_user_id_harness_model_key").on(e.userId,e.harness,e.model)]);import{drizzle as sr}from"drizzle-orm/postgres-js";import ir from"postgres";var Tt={};wr(Tt,{agentJobs:()=>yn,agentRuns:()=>g,agentRunsRelations:()=>Yi,alertDispatches:()=>$n,announcementDeliveries:()=>Mo,announcements:()=>qo,apiKeys:()=>he,apiKeysRelations:()=>Pi,benchmarks:()=>fe,benchmarksRelations:()=>ia,cliErrorEvents:()=>dn,cliSetupEvents:()=>sn,contentBlobs:()=>Nn,contextSnapshots:()=>F,contextSnapshotsRelations:()=>ca,evalComparisons:()=>ln,evalConversations:()=>Ie,evalConversationsRelations:()=>la,evalGradeAnnotations:()=>cn,evalJobs:()=>ve,evalJobsRelations:()=>ua,evalRuns:()=>R,evalRunsRelations:()=>sa,evalTargets:()=>n,evalTargetsRelations:()=>na,evals:()=>P,evalsRelations:()=>ra,extensionAuthCodes:()=>zn,harnessReleases:()=>Sn,insightsJobs:()=>Tn,instructionEvents:()=>le,instructionEventsRelations:()=>Ui,instructionSuggestionEvents:()=>qn,instructionSuggestions:()=>lo,instructionUsageEvents:()=>pe,instructionUsageEventsRelations:()=>oa,instructionVersions:()=>se,instructionVersionsRelations:()=>Vi,instructions:()=>r,instructionsRelations:()=>Bi,judgeReviewerVerdicts:()=>mn,launchJobs:()=>Te,launchJobsRelations:()=>Qi,limitObservations:()=>Vn,memories:()=>T,memoriesRelations:()=>Hi,memoryExperiments:()=>Co,modelPricing:()=>Mn,notificationPreferences:()=>Lo,notifications:()=>io,optimizationRuns:()=>Ne,optimizationRunsRelations:()=>da,orgInvitations:()=>E,orgInvitationsRelations:()=>qi,organizations:()=>u,organizationsRelations:()=>Oi,packInstructions:()=>H,packInstructionsRelations:()=>ta,packs:()=>z,packsRelations:()=>ea,pendingTreatmentExposures:()=>Jo,planLimitsActive:()=>Yn,profiles:()=>o,profilesRelations:()=>Ki,projectCheckouts:()=>Eo,projectInstructions:()=>M,projectInstructionsRelations:()=>Gi,projects:()=>s,projectsRelations:()=>Fi,providerDocsSnapshots:()=>Fn,scaffoldingFingerprints:()=>Xn,scaffoldingSegments:()=>er,sessionEvents:()=>ae,sessionEventsRelations:()=>$i,sessionInstructions:()=>L,sessionInstructionsRelations:()=>Wi,sessionSendJobs:()=>$o,sessionTerminalTargets:()=>it,sessions:()=>d,sessionsRelations:()=>Ji,skillSubmissions:()=>kn,teams:()=>v,teamsRelations:()=>Ci,treatmentAssignments:()=>b,treatmentAssignmentsRelations:()=>Xi,treatmentExposures:()=>S,treatmentExposuresRelations:()=>Zi,triggerEvals:()=>ge,triggerEvalsRelations:()=>aa,userOrganizations:()=>ne,userOrganizationsRelations:()=>Mi,userTeams:()=>re,userTeamsRelations:()=>Li,workerConnections:()=>on});import{relations as i}from"drizzle-orm";var Ki=i(o,({many:e})=>({sessions:e(d),contextSnapshots:e(F),apiKeys:e(he)})),Pi=i(he,({one:e})=>({profile:e(o,{fields:[he.userId],references:[o.id]})})),Oi=i(u,({many:e})=>({teams:e(v),userOrganizations:e(ne),projects:e(s),invitations:e(E)})),Ci=i(v,({one:e,many:t})=>({organization:e(u,{fields:[v.orgId],references:[u.id]}),userTeams:t(re),invitations:t(E)})),qi=i(E,({one:e})=>({organization:e(u,{fields:[E.orgId],references:[u.id]}),team:e(v,{fields:[E.teamId],references:[v.id]}),inviter:e(o,{fields:[E.invitedBy],references:[o.id]})})),Mi=i(ne,({one:e})=>({organization:e(u,{fields:[ne.orgId],references:[u.id]})})),Li=i(re,({one:e})=>({team:e(v,{fields:[re.teamId],references:[v.id]})})),Bi=i(r,({one:e,many:t})=>({versions:t(se),projectInstructions:t(M),events:t(le),usageEvents:t(pe),sessionInstructions:t(L),packInstructions:t(H),forkedFrom:e(r,{fields:[r.forkedFromId],references:[r.id]})})),Ui=i(le,({one:e})=>({instruction:e(r,{fields:[le.instructionId],references:[r.id]})})),Hi=i(T,({one:e,many:t})=>({project:e(s,{fields:[T.projectId],references:[s.id]}),parent:e(T,{fields:[T.parentId],references:[T.id]}),versions:t(T)})),Vi=i(se,({one:e})=>({instruction:e(r,{fields:[se.instructionId],references:[r.id]})})),Fi=i(s,({one:e,many:t})=>({organization:e(u,{fields:[s.orgId],references:[u.id]}),projectInstructions:t(M),sessions:t(d)})),Gi=i(M,({one:e})=>({project:e(s,{fields:[M.projectId],references:[s.id]}),instruction:e(r,{fields:[M.instructionId],references:[r.id]})})),Ji=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(g,{fields:[d.runId],references:[g.id]}),events:t(ae),sessionInstructions:t(L),treatmentExposures:t(S),contextSnapshots:t(F)})),Yi=i(g,({one:e,many:t})=>({profile:e(o,{fields:[g.userId],references:[o.id]}),organization:e(u,{fields:[g.orgId],references:[u.id]}),project:e(s,{fields:[g.projectId],references:[s.id]}),sessions:t(d),launchJobs:t(Te)})),Qi=i(Te,({one:e})=>({run:e(g,{fields:[Te.runId],references:[g.id]})})),$i=i(ae,({one:e})=>({session:e(d,{fields:[ae.sessionId],references:[d.id]})})),Wi=i(L,({one:e})=>({session:e(d,{fields:[L.sessionId],references:[d.id]}),instruction:e(r,{fields:[L.instructionId],references:[r.id]})})),Xi=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(S)})),Zi=i(S,({one:e})=>({session:e(d,{fields:[S.sessionId],references:[d.id]}),owner:e(o,{fields:[S.userId],references:[o.id]}),assignment:e(b,{fields:[S.assignmentId],references:[b.id]})})),ea=i(z,({one:e,many:t})=>({packInstructions:t(H),forkedFrom:e(z,{fields:[z.forkedFromId],references:[z.id]})})),ta=i(H,({one:e})=>({pack:e(z,{fields:[H.packId],references:[z.id]}),instruction:e(r,{fields:[H.instructionId],references:[r.id]})})),oa=i(pe,({one:e})=>({instruction:e(r,{fields:[pe.instructionId],references:[r.id]})})),na=i(n,({one:e,many:t})=>({parent:e(n,{fields:[n.parentId],references:[n.id]}),evals:t(P),evalRuns:t(R),benchmarks:t(fe),triggerEvals:t(ge),optimizationRuns:t(Ne),evalJobs:t(ve),evalConversations:t(Ie)})),ra=i(P,({one:e,many:t})=>({evalTarget:e(n,{fields:[P.evalTargetId],references:[n.id]}),runs:t(R)})),sa=i(R,({one:e})=>({eval:e(P,{fields:[R.evalId],references:[P.id]}),evalTarget:e(n,{fields:[R.evalTargetId],references:[n.id]})})),ia=i(fe,({one:e})=>({evalTarget:e(n,{fields:[fe.evalTargetId],references:[n.id]})})),aa=i(ge,({one:e})=>({evalTarget:e(n,{fields:[ge.evalTargetId],references:[n.id]})})),da=i(Ne,({one:e})=>({evalTarget:e(n,{fields:[Ne.evalTargetId],references:[n.id]})})),ua=i(ve,({one:e})=>({evalTarget:e(n,{fields:[ve.evalTargetId],references:[n.id]})})),la=i(Ie,({one:e})=>({evalTarget:e(n,{fields:[Ie.evalTargetId],references:[n.id]})})),ca=i(F,({one:e})=>({session:e(d,{fields:[F.sessionId],references:[d.id]}),profile:e(o,{fields:[F.userId],references:[o.id]})}));var Je=0,tr=0,Ye=0,or=0;var ma=0;function go(){Je++,Je>tr&&(tr=Je)}p(go,"trackDbOpStart");function No(){Je>0&&Je--}p(No,"trackDbOpEnd");function vo(){Ye++,Ye>or&&(or=Ye)}p(vo,"trackHeavyDbOpStart");function ho(){Ye>0&&Ye--}p(ho,"trackHeavyDbOpEnd");function nr(){ma++}p(nr,"recordQueryDeadline");var At,jt,Io=!1,wt;var rr,Dt,zt;function ar(e){let t=process.env[e];if(!t)throw new Error(`Missing required env var: ${e}`);return t}p(ar,"getEnv");function dr(){if(Io)throw new Error("getDb() 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",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,_=Number(process.env.PG_IDLE_TIMEOUT)||5,f=Number(process.env.PG_KEEP_ALIVE_S)||60;jt=ir(ar("DATABASE_URL"),{prepare:!1,max:t,connect_timeout:a,idle_timeout:_,keep_alive:f,max_lifetime:300,connection:{application_name:e,...l>0?{statement_timeout:l}:{}}}),At=sr(jt,{schema:Tt})}return At}p(dr,"getDb");function ur(){if(Io)throw new Error("getHeavyDb() called after closeDb(): the connection pool is closed for shutdown. Stop issuing queries (timers/requests) before draining the pool.");if(!zt){let e=(process.env.PG_APPLICATION_NAME||"rulemetric")+":heavy",t=Number(process.env.PG_HEAVY_POOL_MAX)||2;Dt=ir(ar("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}}),zt=sr(Dt,{schema:Tt})}return zt}p(ur,"getHeavyDb");async function _a(){if(wt)return wt;Io=!0;let e=jt,t=rr,a=Dt;return jt=void 0,At=void 0,rr=void 0,Dt=void 0,zt=void 0,wt=Promise.allSettled([e?e.end({timeout:5}):Promise.resolve(),t?t.end({timeout:5}):Promise.resolve(),a?a.end({timeout:5}):Promise.resolve()]).then(()=>{}),wt}p(_a,"closeDb");var pa=new Set(["CONNECT_TIMEOUT","ETIMEDOUT","ENOTFOUND","ECONNREFUSED","EAI_AGAIN"]);function lr(e){let t=e,a=t?.code??t?.cause?.code??t?.errno;return a!==void 0&&pa.has(a)}p(lr,"isRetryableConnectError");var fa=new Set(["CONNECTION_CLOSED","ECONNRESET","EPIPE"]);function cr(e){let t=e,a=t?.code??t?.cause?.code??t?.errno;return a!==void 0&&fa.has(a)}p(cr,"isRetryableResetError");async function mr(e,t={}){let a=t.attempts??3,l=t.baseMs??100,_;for(let f=0;f<a;f++)try{return await e()}catch(I){_=I;let we=lr(I)||t.retryResets===!0&&cr(I);if(f===a-1||!we)throw I;await new Promise(G=>setTimeout(G,l*2**f))}throw _}p(mr,"withDbRetry");var Rt=class extends Error{static{p(this,"QueryDeadlineError")}code="QUERY_DEADLINE";constructor(t){super(`Query exceeded the client-side deadline of ${t}ms \u2014 the DB pool is likely saturated (acquire-wait) or holding a dead socket; failing fast to avoid pinning the caller. See client.ts.`),this.name="QueryDeadlineError"}};function _r(){let e=Number(process.env.PG_QUERY_DEADLINE_MS);return Number.isFinite(e)&&e>=0?e:2e4}p(_r,"queryDeadlineMs");function xa(e,t){let a,l=new Promise((_,f)=>{a=setTimeout(()=>{nr(),f(new Rt(t))},t);let I=a;typeof I.unref=="function"&&I.unref()});return Promise.race([e,l]).finally(()=>clearTimeout(a))}p(xa,"raceWithDeadline");var pr=new Set(["select","selectDistinct","selectDistinctOn","insert","update","delete","execute","with","$count","refreshMaterializedView"]),fr=new Set(["select","selectDistinct","selectDistinctOn","$count"]);function yo(e,t=!1,a=0,l=!1){return e===null||typeof e!="object"&&typeof e!="function"?e:new Proxy(e,{get(_,f,I){if(f==="then"){let G=Reflect.get(_,f,I);return typeof G!="function"?G:(Nr,vr)=>{let hr=l?vo:go,Ir=l?ho:No;hr();let To=mr(()=>new Promise((yr,Tr)=>G.call(_,yr,Tr)),{retryResets:t});return(a>0?xa(To,a):To).finally(Ir).then(Nr,vr)}}let we=Reflect.get(_,f,I);return typeof we=="function"?(...G)=>yo(we.apply(_,G),t,a,l):we}})}p(yo,"wrapBuilder");function xr(e,t=!1){let a=t?vo:go,l=t?ho:No;a();try{return Promise.resolve(e()).finally(l)}catch(_){throw l(),_}}p(xr,"gaugeTransaction");var gr=new Proxy({},{get(e,t){let a=dr(),l=a[t];if(typeof t=="string"&&pr.has(t)&&typeof l=="function"){let _=fr.has(t),f=_r();return(...I)=>yo(l.apply(a,I),_,f)}return t==="transaction"&&typeof l=="function"?(..._)=>xr(()=>l.apply(a,_)):l}}),ga=new Proxy({},{get(e,t){let a=ur(),l=a[t];if(typeof t=="string"&&pr.has(t)&&typeof l=="function"){let _=fr.has(t);return(...f)=>yo(l.apply(a,f),_,0,!0)}return t==="transaction"&&typeof l=="function"?(..._)=>xr(()=>l.apply(a,_),!0):l}});export{o as a,g as b,d as c,ae as d,T as e,Co as f,qo as g,Mo as h,Lo as i,dr as j,_a as k};
@@ -1,2 +1,2 @@
1
- import{a as R}from"./chunk-5RBLIVBF.js";import{b as B}from"./chunk-N7TGRFVZ.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}
1
+ import{a as R}from"./chunk-5RBLIVBF.js";import{b as B}from"./chunk-N7TGRFVZ.js";import{a as v,g as d,h as n,i as m,j as U}from"./chunk-KZ65LEUH.js";import{a as $}from"./chunk-ZLLER3HP.js";import{and as L,asc as j,eq as l,gt as q,isNotNull as F,sql as O}from"drizzle-orm";var _=100,C=10;async function G(I,s={}){let t=s.db??U(),D=s.sendEmail??B,p=s.log??(o=>process.stderr.write(`[process_announcement] ${o}
2
2
  `)),b=s.webBaseUrl??process.env.RULEMETRIC_WEB_URL??process.env.WEB_URL??"https://rulemetric.com",{announcementId:r}=I,[i]=await t.select().from(d).where(l(d.id,r)).limit(1);if(!i)throw new R(`Announcement ${r} not found`);if(i.status!=="queued"&&i.status!=="sending")throw new R(`Announcement ${r} is in status='${i.status}'; expected 'queued' or 'sending'.`);await t.update(d).set({status:"sending",updatedAt:new Date}).where(l(d.id,r)),p(`Sending announcement ${r} (${i.subject??""})`);let w=0,f=0,h=0,y=0,k=null;try{for(;;){let c=await t.select({userId:m.userId,email:v.email,displayName:v.displayName,unsubscribeToken:m.unsubscribeToken}).from(m).innerJoin(v,l(v.id,m.userId)).where(L(l(m.productAnnouncements,!0),F(v.email),k?q(m.userId,k):void 0)).orderBy(j(m.userId)).limit(_);if(c.length===0)break;k=c[c.length-1].userId;for(let A=0;A<c.length;A+=C){let P=c.slice(A,A+C),S=await Promise.allSettled(P.map(g=>W({recipient:g,announcement:i,webBaseUrl:b,sendEmail:D,db:t})));for(let g=0;g<S.length;g++){let u=S[g];if(u.status==="fulfilled")u.value.ok==="sent"?w++:u.value.ok==="skipped"?h++:(f++,u.value.provider==="noop"&&y++,p(` recipient ${P[g].userId}: send failed \u2014 ${u.value.error}`));else{f++;let T=u.reason instanceof Error?u.reason.message:String(u.reason);p(` recipient ${P[g].userId}: send failed \u2014 ${T}`)}}}if(c.length<_)break}y>0&&p(`WARNING: ${y} recipient(s) hit the noop email provider and were recorded as FAILED \u2014 no email provider is configured on this worker (set RESEND_API_KEY in ~/.config/rulemetric/env and reinstall the service)`);let o=await t.select({status:n.status,count:O`count(*)::int`}).from(n).where(l(n.announcementId,r)).groupBy(n.status),e={};for(let c of o)e[c.status]=c.count;let a=e.sent??0,E=e.failed??0,N=a===0&&E>0?"failed":"sent",x=E>0?`${E} of ${a+E} recipient(s) failed; see announcement_deliveries`:null;return await t.update(d).set({status:N,recipientCount:a,...N==="sent"?{sentAt:new Date}:{},error:x,updatedAt:new Date}).where(l(d.id,r)),p(`Done: status=${N} sent=${a} failed=${E} (this attempt: sent=${w} failed=${f} skipped=${h})`),{sent:w,failed:f,skipped:h}}catch(o){let e=o instanceof Error?o.message:String(o);throw await t.update(d).set({status:"failed",error:e.slice(0,1e3),updatedAt:new Date}).where(l(d.id,r)).catch(()=>{}),o}}$(G,"processAnnouncement");function K(I){return I.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}$(K,"escapeHtml");async function W(I){let{recipient:s,announcement:t,webBaseUrl:D,sendEmail:p,db:b}=I;if(!s.email)return{ok:"skipped",reason:"no-email"};let r=await b.insert(n).values({announcementId:t.id,userId:s.userId,email:s.email,status:"pending"}).onConflictDoNothing({target:[n.announcementId,n.userId]}).returning({id:n.id});if(r.length===0)return{ok:"skipped",reason:"already-claimed"};let i=r[0].id,w=D.replace(/\/$/,""),f=encodeURIComponent(s.unsubscribeToken),h=`${w}/unsubscribe/${f}`,y=s.displayName?.trim().split(/\s+/)[0]||"there",k=t.htmlBody.replaceAll("{{unsubscribe_url}}",h).replaceAll("{{recipient_name}}",K(y)),o=t.textBody.replaceAll("{{unsubscribe_url}}",h).replaceAll("{{recipient_name}}",y);try{let e=await p({to:s.email,subject:t.subject,html:k,text:o,fromName:"RuleMetric",idempotencyKey:i,headers:{"List-Unsubscribe":`<${w}/api/unsubscribe/${f}>`,"List-Unsubscribe-Post":"List-Unsubscribe=One-Click"}});if(e.provider==="noop"){let a="no email provider configured (RESEND_API_KEY unset on the worker)";return await b.update(n).set({status:"failed",error:a}).where(l(n.id,i)),{ok:"failed",error:a,provider:e.provider}}return await b.update(n).set({status:"sent",providerId:e.id,sentAt:new Date}).where(l(n.id,i)),{ok:"sent",providerId:e.id,provider:e.provider}}catch(e){let a=e instanceof Error?e.message:String(e);return await b.update(n).set({status:"failed",error:a.slice(0,1e3)}).where(l(n.id,i)).catch(()=>{}),{ok:"failed",error:a}}}$(W,"sendOne");export{G as a};
@@ -0,0 +1 @@
1
+ import{c as N}from"./chunk-TIOKY2IA.js";import{a as y}from"./chunk-35ST2BX7.js";import{a as S}from"./chunk-MYPDODRJ.js";import{a as h}from"./chunk-O23Z6LTP.js";import{a as I}from"./chunk-PRDYXO6Z.js";import{a as L}from"./chunk-KG3TW5QB.js";import{b as E}from"./chunk-W2MOTOQE.js";import{a as M}from"./chunk-WNAYTVCO.js";import{a as H}from"./chunk-ARZJNTMV.js";import{a as A}from"./chunk-RSKQRVPJ.js";import{a as x}from"./chunk-DO3KHK2X.js";import{a as k}from"./chunk-UF6US7VU.js";import{a as v}from"./chunk-MSTF7A7D.js";import{b as R}from"./chunk-4HZWSFSY.js";import{a as T}from"./chunk-LVOLDUFC.js";import{b}from"./chunk-5RBLIVBF.js";import{d as w}from"./chunk-3BVHPQZW.js";import{b as f,e as _,f as p}from"./chunk-H2ORWIEY.js";import{a as s}from"./chunk-ZLLER3HP.js";var B={process_eval:h,process_insights:I,process_launch:E,process_send_message:A,process_conversation:S,process_session_goal:y,distill_memories:R,memory_ab:M,process_announcement:T,process_run_cleanup:H,cron_suggest_instructions:v,cron_refresh_skills:k,cron_refresh_pricing:x,process_judge_review:L},P=Object.keys(B),W=new Set(["process_session_goal","process_announcement","process_run_cleanup","distill_memories","memory_ab"]);function $(e=process.env){return e.DATABASE_URL?P:P.filter(n=>!W.has(n))}s($,"availableCapabilities");var F=3e4,J=3e4,U=3e4,C=250,D=5e3,K=`thin-agent-${process.pid}`,g=null;function G(e,n,r,l){let c;try{let d=w();c={claude:d.claudeBin!=null,codex:d.codexBin!=null,codexModel:d.codexConfiguredModel}}catch{}let i=s(d=>{p("/api/workers/heartbeat",{workerType:"cli-worker",clientName:K,clientVersion:l,workerVersion:"0.1.0",currentJobId:null,inFlightCount:0,lastError:null,status:d,metadata:{capabilities:e,mode:"thin-agent",llmEngines:c}}).then(m=>{let t=m?.advisory;t&&t.message!==g?(g=t.message,a(r,{event:"worker_advisory",code:t.code,message:t.message})):t||(g=null)}).catch(m=>{a(r,{event:"presence_heartbeat_error",error:m instanceof Error?m.message:String(m)})})},"send");i("alive");let o=setInterval(()=>i("alive"),U);n.addEventListener("abort",()=>{clearInterval(o),i("shutting_down")},{once:!0})}s(G,"startPresenceHeartbeat");function a(e,n){try{e(JSON.stringify({ts:new Date().toISOString(),...n}))}catch{e(`[agent-loop] log_error event=${n.event}`)}}s(a,"structuredLog");function V(e,n){return n.aborted?Promise.resolve(!1):e<=0?Promise.resolve(!0):new Promise(r=>{let l=setTimeout(()=>{n.removeEventListener("abort",c),r(!0)},e),c=s(()=>{clearTimeout(l),n.removeEventListener("abort",c),r(!1)},"onAbort");n.addEventListener("abort",c,{once:!0})})}s(V,"abortableSleep");async function q(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(q,"pollForWork");function Q(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(Q,"makeHelpers");async function X(e,n,r){let l=B[e.kind],c=Date.now();if(a(r,{event:"claim",jobId:e.id,kind:e.kind,attempts:e.attempts}),!l){let o=`unknown kind: ${e.kind}`;a(r,{event:"fail",jobId:e.id,kind:e.kind,terminal:!0,error:o}),await p(`/api/work/${e.id}/fail`,{leaseToken:e.leaseToken,error:o,terminal:!0}).catch(()=>{});return}let i=setInterval(()=>{a(r,{event:"heartbeat",jobId:e.id}),p(`/api/work/${e.id}/heartbeat`,{leaseToken:e.leaseToken}).catch(o=>{a(r,{event:"heartbeat_error",jobId:e.id,error:o instanceof Error?o.message:String(o)})})},n);try{let o=Q(e.attempts,r),d=await l(e.payload,o)??{};clearInterval(i),a(r,{event:"complete",jobId:e.id,kind:e.kind,durationMs:Date.now()-c}),await p(`/api/work/${e.id}/complete`,{leaseToken:e.leaseToken,result:d})}catch(o){clearInterval(i);let d=b(o),m=o instanceof Error?o.message:String(o);a(r,{event:"fail",jobId:e.id,kind:e.kind,durationMs:Date.now()-c,terminal:d,error:m}),await p(`/api/work/${e.id}/fail`,{leaseToken:e.leaseToken,error:m,terminal:d}).catch(t=>{a(r,{event:"fail_post_error",jobId:e.id,error:t instanceof Error?t.message:String(t)})})}}s(X,"runOne");async function fe(e){let n=e.log??(()=>{}),r=e.pollWaitMs??F,l=e.heartbeatIntervalMs??J,c=e.capabilities??$(),i=C;a(n,{event:"agent_start",capabilities:c,pollWaitMs:r,heartbeatIntervalMs:l}),G(c,e.signal,n,e.version),N({signal:e.signal,log:n}).catch(t=>{a(n,{event:"tt_heartbeat_fatal",error:t instanceof Error?t.message:String(t)})});let o=5*6e4,d=0,m=s(()=>{if(!e.readInstalledVersion||!e.version)return!1;let t=Date.now();if(t-d<o)return!1;d=t;let u=e.readInstalledVersion();return!!(u&&u!==e.version)},"versionDrifted");for(;!e.signal.aborted;){if(m()){a(n,{event:"agent_version_drift",bootVersion:e.version,installedVersion:e.readInstalledVersion?.()??null}),e.onVersionDrift?.();break}let t=null;try{t=await q(c,r)}catch(u){let O=u instanceof f?u.statusCode:void 0;if(a(n,{event:"poll_error",status:O,error:u instanceof Error?u.message:String(u)}),!await V(i,e.signal))break;i=Math.min(i*2,D);continue}if(!t){if(a(n,{event:"poll_204"}),!await V(i,e.signal))break;i=Math.min(i*2,D);continue}i=C,await X(t,l,n)}a(n,{event:"agent_stop"})}s(fe,"runAgentLoop");export{B as a,P as b,$ as c,q as d,fe as e};
@@ -1 +1 @@
1
- import{e as u,f as t,j as x}from"./chunk-KXW3IWKQ.js";import{a as E}from"./chunk-YDRZDBHG.js";import{a as A}from"./chunk-CHA5SX4Y.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
+ import{e as u,f as t,j as x}from"./chunk-KZ65LEUH.js";import{a as E}from"./chunk-YDRZDBHG.js";import{a as A}from"./chunk-CHA5SX4Y.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,3 +1,3 @@
1
- import{e as N}from"../../chunk-TAWDHGWW.js";import"../../chunk-TIOKY2IA.js";import"../../chunk-MYPDODRJ.js";import"../../chunk-O23Z6LTP.js";import"../../chunk-PRDYXO6Z.js";import"../../chunk-QFVGUZDO.js";import"../../chunk-W2MOTOQE.js";import"../../chunk-F53QW6VG.js";import"../../chunk-EXUPWAVK.js";import"../../chunk-6QKI756T.js";import"../../chunk-RSKQRVPJ.js";import"../../chunk-AW6LN6ZU.js";import"../../chunk-DO3KHK2X.js";import"../../chunk-UF6US7VU.js";import"../../chunk-MSTF7A7D.js";import"../../chunk-TSS6ESRK.js";import"../../chunk-SD4SGJZY.js";import"../../chunk-5RBLIVBF.js";import"../../chunk-ZL4MZMUK.js";import"../../chunk-N7TGRFVZ.js";import{k as f}from"../../chunk-KXW3IWKQ.js";import"../../chunk-GTOEWPIM.js";import"../../chunk-6V4WM73L.js";import"../../chunk-JUF4JLZQ.js";import"../../chunk-TDD7IOV2.js";import"../../chunk-7DFNBRLY.js";import"../../chunk-MODXEGCU.js";import"../../chunk-GQRCSR2A.js";import"../../chunk-UUMW6X2W.js";import"../../chunk-YDRZDBHG.js";import"../../chunk-S6B2R2LL.js";import"../../chunk-K25S2MGU.js";import"../../chunk-CHA5SX4Y.js";import"../../chunk-WQ2BJQYB.js";import"../../chunk-3BVHPQZW.js";import"../../chunk-SMGSLY5N.js";import"../../chunk-PJ3WHQ67.js";import"../../chunk-N7ODX6PO.js";import{a as _}from"../../chunk-PPKPCXJD.js";import"../../chunk-IZTIYR5Q.js";import"../../chunk-V44SRRYR.js";import"../../chunk-U6XEU573.js";import"../../chunk-VLOX6KOM.js";import"../../chunk-3AV3GTMP.js";import"../../chunk-H2ORWIEY.js";import{e as R,l as w}from"../../chunk-O6C2UGBY.js";import{a as e}from"../../chunk-ZLLER3HP.js";import{trace as z,context as Q}from"@opentelemetry/api";import{NodeSDK as A}from"@opentelemetry/sdk-node";import{OTLPTraceExporter as I}from"@opentelemetry/exporter-trace-otlp-http";import{BatchSpanProcessor as L,ConsoleSpanExporter as C,SimpleSpanProcessor as D}from"@opentelemetry/sdk-trace-node";import{Resource as M}from"@opentelemetry/resources";import{ATTR_SERVICE_NAME as V,ATTR_SERVICE_VERSION as q}from"@opentelemetry/semantic-conventions";function b(t){if(!t)return{};let r={};for(let n of t.split(",")){let o=n.indexOf("=");if(o===-1)continue;let s=n.slice(0,o).trim(),i=n.slice(o+1).trim();s&&(r[s]=i)}return r}e(b,"parseOtlpHeaders");var c=null;function g(){return process.env.TELEMETRY_ENABLED!=="false"}e(g,"isTelemetryEnabled");function E(t){if(!g()||c!==null)return"off";let r=new M({[V]:t.serviceName,[q]:t.serviceVersion??"0.1.0"}),n=process.env.OTEL_EXPORTER_OTLP_ENDPOINT,o,s;if(n){let i=b(process.env.OTEL_EXPORTER_OTLP_HEADERS),u=new I({url:`${n}/v1/traces`,headers:i});s=new L(u),o="otlp"}else if(process.env.OTEL_SPAN_EXPORT==="none")s=void 0,o="silent";else{let i=new C;s=new D(i),o="console"}return c=new A({resource:r,spanProcessors:s?[s]:[]}),c.start(),o}e(E,"initTelemetry");async function d(){c&&(await c.shutdown(),c=null)}e(d,"shutdownTelemetry");import{SpanKind as ae,SpanStatusCode as ce}from"@opentelemetry/api";import{trace as de,context as me}from"@opentelemetry/api";import*as l from"@sentry/node";var h=!1;function y(t){if(h)return!1;let r=process.env.SENTRY_DSN;return r?(l.init({dsn:r,serverName:t.serviceName,environment:process.env.NODE_ENV??"development",tracesSampleRate:0}),h=!0,!0):!1}e(y,"initSentry");async function m(t){h&&await l.flush(t)}e(m,"flushSentry");import{existsSync as G,mkdirSync as U,readFileSync as v,unlinkSync as k,writeFileSync as O}from"node:fs";import{dirname as X,join as P}from"node:path";import{execFileSync as $}from"node:child_process";var a=P(w(),"evals-agent.lock");function j(t){try{return process.kill(t,0),!0}catch(r){return r.code==="EPERM"}}e(j,"pidAlive");function B(t){if(!j(t))return!1;try{let r=$("ps",["-p",String(t),"-o","command="],{encoding:"utf-8",stdio:["ignore","pipe","ignore"]});return/run\.js\s+evals\s+agent|evals\s+agent/.test(r)}catch{return!0}}e(B,"isLiveAgent");function H(){try{U(X(a),{recursive:!0})}catch{}for(let t=0;t<2;t++)try{return O(a,String(process.pid),{flag:"wx"}),{ok:!0}}catch(r){if(r.code!=="EEXIST")throw r;let n=0;try{n=Number(v(a,"utf-8").trim())}catch{}if(n&&n!==process.pid&&B(n))return{ok:!1,holder:n};try{k(a)}catch{}}try{O(a,String(process.pid))}catch{}return{ok:!0}}e(H,"acquireAgentLock");function S(){try{G(a)&&Number(v(a,"utf-8").trim())===process.pid&&k(a)}catch{}}e(S,"releaseAgentLock");var T=class t extends _{static{e(this,"EvalAgentCommand")}static description="The worker daemon: long-polls /api/work/next, claims jobs, and runs them locally. Installed as a launchd service by `rulemetric service install`.";static examples=["<%= config.bin %> evals agent"];async run(){await this.parse(t),this.requireAuth();let r=H();if(!r.ok){this.log(`Another rulemetric evals agent is already running (pid ${r.holder}). Refusing to start a second instance.`);return}process.env.PG_APPLICATION_NAME||="rulemetric-agent",y({serviceName:"rulemetric-agent"})&&this.log("[sentry] error capture enabled");let o=E({serviceName:"rulemetric-agent"});o==="otlp"?this.log(`[otel] traces exporting to ${process.env.OTEL_EXPORTER_OTLP_ENDPOINT}`):o==="console"?this.log("[otel] cron spans printing to stdout (set OTEL_EXPORTER_OTLP_ENDPOINT to ship to a backend)"):this.log("[otel] disabled (TELEMETRY_ENABLED=false)"),!R()&&!process.env.RULEMETRIC_API_KEY&&this.error("No auth token found. Run `rulemetric auth login` first."),this.log("Starting thin agent (Phase 4b parallel-run)..."),this.log(`Long-polling /api/work/next. Press Ctrl+C to stop.
1
+ import{e as N}from"../../chunk-QYKLIRMY.js";import"../../chunk-TIOKY2IA.js";import"../../chunk-35ST2BX7.js";import"../../chunk-MYPDODRJ.js";import"../../chunk-O23Z6LTP.js";import"../../chunk-PRDYXO6Z.js";import"../../chunk-QFVGUZDO.js";import"../../chunk-KG3TW5QB.js";import"../../chunk-W2MOTOQE.js";import"../../chunk-WNAYTVCO.js";import"../../chunk-ARZJNTMV.js";import"../../chunk-6QKI756T.js";import"../../chunk-RSKQRVPJ.js";import"../../chunk-DO3KHK2X.js";import"../../chunk-UF6US7VU.js";import"../../chunk-MSTF7A7D.js";import"../../chunk-4HZWSFSY.js";import"../../chunk-LVOLDUFC.js";import"../../chunk-5RBLIVBF.js";import"../../chunk-ZL4MZMUK.js";import"../../chunk-N7TGRFVZ.js";import{k as f}from"../../chunk-KZ65LEUH.js";import"../../chunk-GTOEWPIM.js";import"../../chunk-6V4WM73L.js";import"../../chunk-JUF4JLZQ.js";import"../../chunk-TDD7IOV2.js";import"../../chunk-7DFNBRLY.js";import"../../chunk-MODXEGCU.js";import"../../chunk-GQRCSR2A.js";import"../../chunk-UUMW6X2W.js";import"../../chunk-BSXUH5FD.js";import"../../chunk-6UEFCMR2.js";import"../../chunk-YDRZDBHG.js";import"../../chunk-S6B2R2LL.js";import"../../chunk-K25S2MGU.js";import"../../chunk-CHA5SX4Y.js";import"../../chunk-WQ2BJQYB.js";import"../../chunk-3BVHPQZW.js";import"../../chunk-SMGSLY5N.js";import"../../chunk-PJ3WHQ67.js";import"../../chunk-N7ODX6PO.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 +1 @@
1
- import{b as N,c as O}from"../../chunk-6UEFCMR2.js";import{a as T}from"../../chunk-YDRZDBHG.js";import"../../chunk-S6B2R2LL.js";import{c as L}from"../../chunk-K25S2MGU.js";import"../../chunk-WQ2BJQYB.js";import{b as F,c as m,d as _,e as H}from"../../chunk-3BVHPQZW.js";import"../../chunk-SMGSLY5N.js";import"../../chunk-PJ3WHQ67.js";import"../../chunk-N7ODX6PO.js";import{a as B}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 j}from"../../chunk-ZLLER3HP.js";import{Args as J,Flags as d}from"@oclif/core";var I=100,p=j(h=>h==null?"\u2014":`${(h*100).toFixed(0)}%`,"pct"),A=class h extends B{static{j(this,"EvalValidateJudge")}static description="Score a second model against your human judge-review labels (\xA76g validation pass)";static examples=["<%= config.bin %> evals validate-judge <target-id> # auto-detect installed CLIs","<%= config.bin %> evals validate-judge <target-id> --engine codex --model gpt-5.5","<%= config.bin %> evals validate-judge <target-id> --model claude-sonnet-5 --json","<%= config.bin %> evals validate-judge <target-id> --limit 5 # quick sample"];static args={targetId:J.string({description:"Eval target ID",required:!0})};static flags={model:d.string({description:"Second reviewer model. Default: resolved from your installed tooling (codex: your ~/.codex/config.toml model; claude: a tier that differs from the original judge)."}),engine:d.string({description:"CLI that runs the second reviewer. `auto` prefers your installed codex for a cross-vendor reviewer \u2014 two Claude models share a training lineage, so their agreement overstates independence.",options:["auto","claude","codex"],default:"auto"}),limit:d.integer({description:"Sample only the N most-recently-annotated runs (cost control / smoke)"}),parallel:d.integer({description:"Concurrent re-grades",default:3}),timeout:d.integer({description:"Timeout per re-grade in ms",default:12e4}),json:d.boolean({description:"Emit the full report as JSON"})};async run(){let{args:z,flags:a}=await this.parse(h);this.requireAuth();let f=z.targetId,b=await c(`/api/eval-targets/${f}`),v=(await c(`/api/eval-targets/${f}/annotations?limit=500`)).filter(e=>e.judgeMethod==="llm");v.length===0&&this.error(`No human labels on "${b.name}" yet \u2014 label some runs in the Review tab first; this command scores a second model against those labels.`);let C=new Map;for(let e=0;;e+=I){let o=await c(`/api/eval-targets/${f}/runs?limit=${I}&offset=${e}`);for(let g of o)C.set(g.id,g);if(o.length<I)break}let D=await c(`/api/eval-targets/${f}/evals`),V=new Map(D.map(e=>[e.id,e.prompt])),s=new Map;for(let e of v){let o=s.get(e.evalRunId)??[];o.push(e),s.set(e.evalRunId,o)}let r=[...new Set(v.map(e=>e.judgeModel).filter(e=>e!=null))],n;try{n=H({engineFlag:a.engine,modelFlag:a.model,availability:_(),judgeModels:r})}catch(e){this.error(e instanceof Error?e.message:String(e))}if(this.log(`Reviewer: ${n.rationale}`),n.engine==="codex"&&n.model){let e=await L({prompt:"Reply with exactly: OK",model:n.model,timeout:6e4});e.error&&F(e.error)?(n.model===m&&this.error(`Codex fallback model ${m} is also unrunnable: ${e.error}`),this.warn(`Your codex model "${n.model}" can't run on the installed CLI/account \u2014 falling back to ${m}. (${e.error.slice(0,160)})`),n={...n,model:m}):e.error&&this.error(`Codex preflight failed: ${e.error}`)}this.log(`Re-grading ${s.size} annotated run(s) / ${v.length} assertion(s) on "${b.name}"`+(r.length?` (original judge: ${r.join(", ")})`:"")+".");let M=[],x=0,w=new Set,l=a.limit!=null?[...s.entries()].slice(0,Math.max(1,a.limit)):[...s.entries()];l.length<s.size&&this.log(`Sampling ${l.length} of ${s.size} annotated runs (--limit).`);let q=0,G=j(async()=>{for(;;){let e=q++;if(e>=l.length)return;let[o,g]=l[e],u=C.get(o),y=u?.grading?.expectations,k=u?.outputs?.transcript,E=u?V.get(u.evalId):void 0;if(!u||!y?.length||!k||!E){x+=g.length,this.warn(`run ${o.slice(0,8)}: missing output/expectations/prompt \u2014 skipped`);continue}let $=await T({prompt:E,output:k,expectations:y.map(i=>i.text),model:n.model??void 0,timeout:a.timeout,engine:n.engine});$.judge_model&&w.add($.judge_model);for(let i of g){let S=y[i.expectationIndex],R=$.expectations[i.expectationIndex];if(!S||!R||S.text!==i.expectationText){x+=1;continue}if($.judge_model==null&&R.method==="llm"){x+=1;continue}M.push({runId:o,expectationIndex:i.expectationIndex,text:i.expectationText,humanPassed:N(i.verdict,i.judgePassed),judgeAPassed:i.judgePassed,judgeBPassed:R.passed})}this.log(` ${e+1}/${l.length} re-graded`)}},"worker");await Promise.all(Array.from({length:Math.max(1,Math.min(a.parallel,l.length))},G));let t=O(M,x),P=[...w].join(", ")||n.model||`${n.engine} (CLI default)`;if(r.length===1&&w.size===1&&r[0]===[...w][0]&&this.warn(`Second reviewer resolved to the SAME model as the original judge (${r[0]}) \u2014 this measures self-consistency, not independent review.`),a.json){this.log(JSON.stringify({target:b.name,judgeA:r,judgeB:P,...t},null,2));return}if(this.log(""),this.log(`Second reviewer: ${P} \u2014 scored against ${t.pairs} human-labeled assertion(s)`+(t.skipped?` (${t.skipped} skipped)`:"")),this.log(""),this.log(` reviewer vs HUMAN: ${p(t.bVsHuman.overall.rate)} overall \xB7 ${p(t.bVsHuman.onJudgePass.rate)} where judge passed \xB7 ${p(t.bVsHuman.onJudgeFail.rate)} where judge failed`),this.log(` original judge vs human: ${p(t.aVsHuman.overall.rate)} (your approve rate)`),this.log(` reviewer vs judge: ${p(t.bVsA.overall.rate)} (inter-model, not truth)`),this.log(` Cohen's \u03BA (reviewer vs human): ${t.kappaBvsHuman==null?"undefined (degenerate marginals)":t.kappaBvsHuman.toFixed(2)}`),this.log(""),t.suggestedAnchorWeight!=null&&this.log(` suggested \xA76g anchor weight if used as a passive label source: ${t.suggestedAnchorWeight.toFixed(2)} (misclassification attenuation (2\xB7acc\u22121)\xB2; validated:false either way)`),t.disagreements.length>0){this.log(""),this.log(` ${t.disagreements.length} disagreement(s) with your labels \u2014 worth reading:`);for(let e of t.disagreements.slice(0,10))this.log(` run ${e.runId.slice(0,8)} #${e.expectationIndex}: human=${e.humanPassed?"pass":"fail"} reviewer=${e.judgeBPassed?"pass":"fail"} \u2014 ${e.text.slice(0,80)}`);t.disagreements.length>10&&this.log(` \u2026 and ${t.disagreements.length-10} more (use --json for all)`)}}};export{A as default};
1
+ import{c,d as m}from"../../chunk-BSXUH5FD.js";import"../../chunk-6UEFCMR2.js";import"../../chunk-YDRZDBHG.js";import"../../chunk-S6B2R2LL.js";import"../../chunk-K25S2MGU.js";import"../../chunk-WQ2BJQYB.js";import"../../chunk-3BVHPQZW.js";import"../../chunk-SMGSLY5N.js";import"../../chunk-PJ3WHQ67.js";import"../../chunk-N7ODX6PO.js";import{a as u}from"../../chunk-PPKPCXJD.js";import"../../chunk-IZTIYR5Q.js";import"../../chunk-V44SRRYR.js";import"../../chunk-U6XEU573.js";import"../../chunk-VLOX6KOM.js";import"../../chunk-3AV3GTMP.js";import"../../chunk-H2ORWIEY.js";import"../../chunk-O6C2UGBY.js";import{a as r}from"../../chunk-ZLLER3HP.js";import{Args as p,Flags as s}from"@oclif/core";var o=r(n=>n==null?"\u2014":`${(n*100).toFixed(0)}%`,"pct"),g=class n extends u{static{r(this,"EvalValidateJudge")}static description="Score a second model against your human judge-review labels (\xA76g validation pass)";static examples=["<%= config.bin %> evals validate-judge <target-id> # auto-detect installed CLIs","<%= config.bin %> evals validate-judge <target-id> --engine codex --model gpt-5.5","<%= config.bin %> evals validate-judge <target-id> --model claude-sonnet-5 --json","<%= config.bin %> evals validate-judge <target-id> --limit 5 # quick sample"];static args={targetId:p.string({description:"Eval target ID",required:!0})};static flags={model:s.string({description:"Second reviewer model. Default: resolved from your installed tooling (codex: your ~/.codex/config.toml model; claude: a tier that differs from the original judge)."}),engine:s.string({description:"CLI that runs the second reviewer. `auto` prefers your installed codex for a cross-vendor reviewer \u2014 two Claude models share a training lineage, so their agreement overstates independence.",options:["auto","claude","codex"],default:"auto"}),limit:s.integer({description:"Sample only the N most-recently-annotated runs (cost control / smoke)"}),"skip-reviewed":s.boolean({description:"Only re-grade assertions this reviewer model has not ruled on yet",default:!1}),parallel:s.integer({description:"Concurrent re-grades",default:3}),timeout:s.integer({description:"Timeout per re-grade in ms",default:12e4}),json:s.boolean({description:"Emit the full report as JSON"})};async run(){let{args:h,flags:i}=await this.parse(n);this.requireAuth();let a;try{a=await m({targetId:h.targetId,engineFlag:i.engine,modelFlag:i.model,limit:i.limit,parallel:i.parallel,timeoutMs:i.timeout,skipReviewed:i["skip-reviewed"],log:r(t=>this.log(t),"log"),warn:r(t=>this.warn(t),"warn")})}catch(t){throw t instanceof c&&this.error(t.message),t}let{report:e,judgeModels:l,reviewerModel:d}=a;if(l.length===1&&l[0]===d&&this.warn(`Second reviewer resolved to the SAME model as the original judge (${l[0]}) \u2014 this measures self-consistency, not independent review.`),i.json){this.log(JSON.stringify({target:a.targetName,judgeA:l,judgeB:d,persisted:a.persisted,alreadyReviewed:a.alreadyReviewed,...e},null,2));return}if(e.pairs===0&&a.alreadyReviewed>0){this.log(`All ${a.alreadyReviewed} labeled assertion(s) already reviewed by ${d} \u2014 nothing new to grade.`);return}if(this.log(""),this.log(`Second reviewer: ${d} \u2014 scored against ${e.pairs} human-labeled assertion(s)`+(e.skipped?` (${e.skipped} skipped)`:"")),this.log(""),this.log(` reviewer vs HUMAN: ${o(e.bVsHuman.overall.rate)} overall \xB7 ${o(e.bVsHuman.onJudgePass.rate)} where judge passed \xB7 ${o(e.bVsHuman.onJudgeFail.rate)} where judge failed`),this.log(` original judge vs human: ${o(e.aVsHuman.overall.rate)} (your approve rate)`),this.log(` reviewer vs judge: ${o(e.bVsA.overall.rate)} (inter-model, not truth)`),this.log(` Cohen's \u03BA (reviewer vs human): ${e.kappaBvsHuman==null?"undefined (degenerate marginals)":e.kappaBvsHuman.toFixed(2)}`),this.log(""),e.suggestedAnchorWeight!=null&&this.log(` suggested \xA76g anchor weight if used as a passive label source: ${e.suggestedAnchorWeight.toFixed(2)} (misclassification attenuation (2\xB7acc\u22121)\xB2; validated:false either way)`),e.disagreements.length>0){this.log(""),this.log(` ${e.disagreements.length} disagreement(s) with your labels \u2014 flagged on the Review tab:`);for(let t of e.disagreements.slice(0,10))this.log(` run ${t.runId.slice(0,8)} #${t.expectationIndex}: human=${t.humanPassed?"pass":"fail"} reviewer=${t.judgeBPassed?"pass":"fail"} \u2014 ${t.text.slice(0,80)}`);e.disagreements.length>10&&this.log(` \u2026 and ${e.disagreements.length-10} more (use --json for all)`)}}};export{g as default};
@@ -1 +1 @@
1
- import{a,b,c,d,e}from"../chunk-TAWDHGWW.js";import"../chunk-TIOKY2IA.js";import"../chunk-MYPDODRJ.js";import"../chunk-O23Z6LTP.js";import"../chunk-PRDYXO6Z.js";import"../chunk-QFVGUZDO.js";import"../chunk-W2MOTOQE.js";import"../chunk-F53QW6VG.js";import"../chunk-EXUPWAVK.js";import"../chunk-6QKI756T.js";import"../chunk-RSKQRVPJ.js";import"../chunk-AW6LN6ZU.js";import"../chunk-DO3KHK2X.js";import"../chunk-UF6US7VU.js";import"../chunk-MSTF7A7D.js";import"../chunk-TSS6ESRK.js";import"../chunk-SD4SGJZY.js";import"../chunk-5RBLIVBF.js";import"../chunk-ZL4MZMUK.js";import"../chunk-N7TGRFVZ.js";import"../chunk-KXW3IWKQ.js";import"../chunk-GTOEWPIM.js";import"../chunk-6V4WM73L.js";import"../chunk-JUF4JLZQ.js";import"../chunk-TDD7IOV2.js";import"../chunk-7DFNBRLY.js";import"../chunk-MODXEGCU.js";import"../chunk-GQRCSR2A.js";import"../chunk-UUMW6X2W.js";import"../chunk-YDRZDBHG.js";import"../chunk-S6B2R2LL.js";import"../chunk-K25S2MGU.js";import"../chunk-CHA5SX4Y.js";import"../chunk-WQ2BJQYB.js";import"../chunk-3BVHPQZW.js";import"../chunk-SMGSLY5N.js";import"../chunk-PJ3WHQ67.js";import"../chunk-N7ODX6PO.js";import"../chunk-H2ORWIEY.js";import"../chunk-O6C2UGBY.js";import"../chunk-ZLLER3HP.js";export{b as CAPABILITIES,a as HANDLERS,c as availableCapabilities,d as pollForWork,e as runAgentLoop};
1
+ import{a,b,c,d,e}from"../chunk-QYKLIRMY.js";import"../chunk-TIOKY2IA.js";import"../chunk-35ST2BX7.js";import"../chunk-MYPDODRJ.js";import"../chunk-O23Z6LTP.js";import"../chunk-PRDYXO6Z.js";import"../chunk-QFVGUZDO.js";import"../chunk-KG3TW5QB.js";import"../chunk-W2MOTOQE.js";import"../chunk-WNAYTVCO.js";import"../chunk-ARZJNTMV.js";import"../chunk-6QKI756T.js";import"../chunk-RSKQRVPJ.js";import"../chunk-DO3KHK2X.js";import"../chunk-UF6US7VU.js";import"../chunk-MSTF7A7D.js";import"../chunk-4HZWSFSY.js";import"../chunk-LVOLDUFC.js";import"../chunk-5RBLIVBF.js";import"../chunk-ZL4MZMUK.js";import"../chunk-N7TGRFVZ.js";import"../chunk-KZ65LEUH.js";import"../chunk-GTOEWPIM.js";import"../chunk-6V4WM73L.js";import"../chunk-JUF4JLZQ.js";import"../chunk-TDD7IOV2.js";import"../chunk-7DFNBRLY.js";import"../chunk-MODXEGCU.js";import"../chunk-GQRCSR2A.js";import"../chunk-UUMW6X2W.js";import"../chunk-BSXUH5FD.js";import"../chunk-6UEFCMR2.js";import"../chunk-YDRZDBHG.js";import"../chunk-S6B2R2LL.js";import"../chunk-K25S2MGU.js";import"../chunk-CHA5SX4Y.js";import"../chunk-WQ2BJQYB.js";import"../chunk-3BVHPQZW.js";import"../chunk-SMGSLY5N.js";import"../chunk-PJ3WHQ67.js";import"../chunk-N7ODX6PO.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}from"../../chunk-TSS6ESRK.js";import"../../chunk-KXW3IWKQ.js";import"../../chunk-SMGSLY5N.js";import"../../chunk-PJ3WHQ67.js";import"../../chunk-N7ODX6PO.js";import"../../chunk-ZLLER3HP.js";export{b as distillMemories,a as selectNewMemories};
1
+ import{a,b}from"../../chunk-4HZWSFSY.js";import"../../chunk-KZ65LEUH.js";import"../../chunk-SMGSLY5N.js";import"../../chunk-PJ3WHQ67.js";import"../../chunk-N7ODX6PO.js";import"../../chunk-ZLLER3HP.js";export{b as distillMemories,a as selectNewMemories};
@@ -1 +1 @@
1
- import{a}from"../../chunk-SD4SGJZY.js";import"../../chunk-5RBLIVBF.js";import"../../chunk-N7TGRFVZ.js";import"../../chunk-KXW3IWKQ.js";import"../../chunk-ZLLER3HP.js";export{a as processAnnouncement};
1
+ import{a}from"../../chunk-LVOLDUFC.js";import"../../chunk-5RBLIVBF.js";import"../../chunk-N7TGRFVZ.js";import"../../chunk-KZ65LEUH.js";import"../../chunk-ZLLER3HP.js";export{a as processAnnouncement};
@@ -1 +1 @@
1
- import{a}from"../../chunk-NZ7NZEQV.js";import"../../chunk-ZL4MZMUK.js";import"../../chunk-N7TGRFVZ.js";import"../../chunk-KXW3IWKQ.js";import"../../chunk-ZLLER3HP.js";export{a as processChangelog};
1
+ import{a}from"../../chunk-2TX7TN5R.js";import"../../chunk-ZL4MZMUK.js";import"../../chunk-N7TGRFVZ.js";import"../../chunk-KZ65LEUH.js";import"../../chunk-ZLLER3HP.js";export{a as processChangelog};
@@ -0,0 +1 @@
1
+ import{a}from"../../chunk-KG3TW5QB.js";import"../../chunk-BSXUH5FD.js";import"../../chunk-6UEFCMR2.js";import"../../chunk-YDRZDBHG.js";import"../../chunk-S6B2R2LL.js";import"../../chunk-K25S2MGU.js";import"../../chunk-WQ2BJQYB.js";import"../../chunk-3BVHPQZW.js";import"../../chunk-SMGSLY5N.js";import"../../chunk-PJ3WHQ67.js";import"../../chunk-N7ODX6PO.js";import"../../chunk-H2ORWIEY.js";import"../../chunk-O6C2UGBY.js";import"../../chunk-ZLLER3HP.js";export{a as processJudgeReview};
@@ -1 +1 @@
1
- import{a}from"../../chunk-F53QW6VG.js";import"../../chunk-KXW3IWKQ.js";import"../../chunk-YDRZDBHG.js";import"../../chunk-S6B2R2LL.js";import"../../chunk-K25S2MGU.js";import"../../chunk-CHA5SX4Y.js";import"../../chunk-WQ2BJQYB.js";import"../../chunk-SMGSLY5N.js";import"../../chunk-PJ3WHQ67.js";import"../../chunk-N7ODX6PO.js";import"../../chunk-ZLLER3HP.js";export{a as processMemoryAb};
1
+ import{a}from"../../chunk-WNAYTVCO.js";import"../../chunk-KZ65LEUH.js";import"../../chunk-YDRZDBHG.js";import"../../chunk-S6B2R2LL.js";import"../../chunk-K25S2MGU.js";import"../../chunk-CHA5SX4Y.js";import"../../chunk-WQ2BJQYB.js";import"../../chunk-SMGSLY5N.js";import"../../chunk-PJ3WHQ67.js";import"../../chunk-N7ODX6PO.js";import"../../chunk-ZLLER3HP.js";export{a as processMemoryAb};
@@ -1 +1 @@
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
+ import{a}from"../../chunk-ARZJNTMV.js";import"../../chunk-6QKI756T.js";import"../../chunk-5RBLIVBF.js";import"../../chunk-KZ65LEUH.js";import"../../chunk-7DFNBRLY.js";import"../../chunk-N7ODX6PO.js";import"../../chunk-ZLLER3HP.js";export{a as processRunCleanup};
@@ -1 +1 @@
1
- import{a}from"../../chunk-AW6LN6ZU.js";import"../../chunk-KXW3IWKQ.js";import"../../chunk-SMGSLY5N.js";import"../../chunk-PJ3WHQ67.js";import"../../chunk-N7ODX6PO.js";import"../../chunk-ZLLER3HP.js";export{a as processSessionGoal};
1
+ import{a}from"../../chunk-35ST2BX7.js";import"../../chunk-KZ65LEUH.js";import"../../chunk-SMGSLY5N.js";import"../../chunk-PJ3WHQ67.js";import"../../chunk-N7ODX6PO.js";import"../../chunk-ZLLER3HP.js";export{a as processSessionGoal};
@@ -0,0 +1 @@
1
+ import{a,b,c,d}from"../chunk-BSXUH5FD.js";import"../chunk-6UEFCMR2.js";import"../chunk-YDRZDBHG.js";import"../chunk-S6B2R2LL.js";import"../chunk-K25S2MGU.js";import"../chunk-WQ2BJQYB.js";import"../chunk-3BVHPQZW.js";import"../chunk-SMGSLY5N.js";import"../chunk-PJ3WHQ67.js";import"../chunk-N7ODX6PO.js";import"../chunk-H2ORWIEY.js";import"../chunk-O6C2UGBY.js";import"../chunk-ZLLER3HP.js";export{c as JudgeReviewSkip,b as llmExpectationIndexes,a as reviewMatchesReviewer,d as runJudgeReviewPass};
@@ -1 +1 @@
1
- import{a as l}from"../chunk-NZ7NZEQV.js";import{a as u}from"../chunk-UF6US7VU.js";import{a as g}from"../chunk-MSTF7A7D.js";import"../chunk-ZL4MZMUK.js";import"../chunk-N7TGRFVZ.js";import"../chunk-KXW3IWKQ.js";import"../chunk-TDD7IOV2.js";import"../chunk-MODXEGCU.js";import{a as i}from"../chunk-GY5IJ4RS.js";import"../chunk-SMGSLY5N.js";import"../chunk-PJ3WHQ67.js";import"../chunk-N7ODX6PO.js";import"../chunk-H2ORWIEY.js";import"../chunk-O6C2UGBY.js";import{a as o}from"../chunk-ZLLER3HP.js";var c={cron_check_changelog:o(async(r,e)=>{let s=await l({logger:{info:o(t=>e.logger.info(t),"info"),warn:o(t=>e.logger.warn(t),"warn")}});e.logger.info(`[cron_check_changelog] result: created=${s.createdCount} skipped=${s.skippedCount}`)},"cron_check_changelog"),cron_suggest_instructions:o((r,e)=>g(r,e),"cron_suggest_instructions"),cron_refresh_skills:o((r,e)=>u(r,e),"cron_refresh_skills")},p=i.map(r=>{let e=c[r.name];if(!e)throw new Error(`manual-tasks: no handler registered for "${r.name}"`);return{...r,handler:e}});async function m(r){let e=p.find(n=>n.name===r);if(!e)return{name:r,durationMs:0,ok:!1,error:`Unknown task: ${r}`,logs:[]};let s=[],t={logger:{info:o(n=>s.push({level:"info",message:n}),"info"),warn:o(n=>s.push({level:"warn",message:n}),"warn"),error:o(n=>s.push({level:"error",message:n}),"error")},job:{attempts:0}},a=Date.now();try{return await e.handler({},t),{name:r,durationMs:Date.now()-a,ok:!0,logs:s}}catch(n){return{name:r,durationMs:Date.now()-a,ok:!1,error:n instanceof Error?n.message:String(n),logs:s}}}o(m,"runManualTask");export{p as MANUAL_TASKS,m as runManualTask};
1
+ import{a as l}from"../chunk-2TX7TN5R.js";import{a as u}from"../chunk-UF6US7VU.js";import{a as g}from"../chunk-MSTF7A7D.js";import"../chunk-ZL4MZMUK.js";import"../chunk-N7TGRFVZ.js";import"../chunk-KZ65LEUH.js";import"../chunk-TDD7IOV2.js";import"../chunk-MODXEGCU.js";import{a as i}from"../chunk-GY5IJ4RS.js";import"../chunk-SMGSLY5N.js";import"../chunk-PJ3WHQ67.js";import"../chunk-N7ODX6PO.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};
@@ -1750,6 +1750,12 @@
1750
1750
  "multiple": false,
1751
1751
  "type": "option"
1752
1752
  },
1753
+ "skip-reviewed": {
1754
+ "description": "Only re-grade assertions this reviewer model has not ruled on yet",
1755
+ "name": "skip-reviewed",
1756
+ "allowNo": false,
1757
+ "type": "boolean"
1758
+ },
1753
1759
  "parallel": {
1754
1760
  "description": "Concurrent re-grades",
1755
1761
  "name": "parallel",
@@ -4317,5 +4323,5 @@
4317
4323
  ]
4318
4324
  }
4319
4325
  },
4320
- "version": "0.7.23"
4326
+ "version": "0.7.25"
4321
4327
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rulemetric/cli",
3
- "version": "0.7.23",
3
+ "version": "0.7.25",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -74,9 +74,9 @@
74
74
  "postgres": "^3.4.0",
75
75
  "react": "^19.0.0",
76
76
  "zod": "^3.24.0",
77
- "@rulemetric/hooks": "0.7.23",
78
- "@rulemetric/proxy": "0.7.23",
79
- "@rulemetric/skills-registry": "0.7.23"
77
+ "@rulemetric/hooks": "0.7.25",
78
+ "@rulemetric/proxy": "0.7.25",
79
+ "@rulemetric/skills-registry": "0.7.25"
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": {
@@ -95,13 +95,13 @@
95
95
  "typescript": "^5.9.0",
96
96
  "vitest": "^3.2.0",
97
97
  "@rulemetric/api": "0.0.1",
98
- "@rulemetric/core": "0.0.1",
99
- "@rulemetric/db": "0.0.1",
100
98
  "@rulemetric/effectiveness": "0.0.1",
101
99
  "@rulemetric/email": "0.0.1",
102
100
  "@rulemetric/session": "0.2.1",
103
- "@rulemetric/telemetry": "0.0.1",
104
- "@rulemetric/typescript-config": "0.0.0"
101
+ "@rulemetric/core": "0.0.1",
102
+ "@rulemetric/db": "0.0.1",
103
+ "@rulemetric/typescript-config": "0.0.0",
104
+ "@rulemetric/telemetry": "0.0.1"
105
105
  },
106
106
  "scripts": {
107
107
  "build": "node scripts/build.mjs",
@@ -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 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 +0,0 @@
1
- import{c as x}from"./chunk-TIOKY2IA.js";import{a as S}from"./chunk-MYPDODRJ.js";import{a as h}from"./chunk-O23Z6LTP.js";import{a as I}from"./chunk-PRDYXO6Z.js";import{b as E}from"./chunk-W2MOTOQE.js";import{a as R}from"./chunk-F53QW6VG.js";import{a as H}from"./chunk-EXUPWAVK.js";import{a as A}from"./chunk-RSKQRVPJ.js";import{a as y}from"./chunk-AW6LN6ZU.js";import{a as L}from"./chunk-DO3KHK2X.js";import{a as k}from"./chunk-UF6US7VU.js";import{a as v}from"./chunk-MSTF7A7D.js";import{b as M}from"./chunk-TSS6ESRK.js";import{a as T}from"./chunk-SD4SGJZY.js";import{b}from"./chunk-5RBLIVBF.js";import{d as w}from"./chunk-3BVHPQZW.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:h,process_insights:I,process_launch:E,process_send_message:A,process_conversation:S,process_session_goal:y,distill_memories:M,memory_ab:R,process_announcement:T,process_run_cleanup:H,cron_suggest_instructions:v,cron_refresh_skills:k,cron_refresh_pricing:L},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,F=3e4,J=3e4,P=250,C=5e3,U=`thin-agent-${process.pid}`,g=null;function K(e,n,r,l){let c;try{let d=w();c={claude:d.claudeBin!=null,codex:d.codexBin!=null,codexModel:d.codexConfiguredModel}}catch{}let i=s(d=>{p("/api/workers/heartbeat",{workerType:"cli-worker",clientName:U,clientVersion:l,workerVersion:"0.1.0",currentJobId:null,inFlightCount:0,lastError:null,status:d,metadata:{capabilities:e,mode:"thin-agent",llmEngines:c}}).then(m=>{let t=m?.advisory;t&&t.message!==g?(g=t.message,a(r,{event:"worker_advisory",code:t.code,message:t.message})):t||(g=null)}).catch(m=>{a(r,{event:"presence_heartbeat_error",error:m instanceof Error?m.message:String(m)})})},"send");i("alive");let o=setInterval(()=>i("alive"),J);n.addEventListener("abort",()=>{clearInterval(o),i("shutting_down")},{once:!0})}s(K,"startPresenceHeartbeat");function a(e,n){try{e(JSON.stringify({ts:new Date().toISOString(),...n}))}catch{e(`[agent-loop] log_error event=${n.event}`)}}s(a,"structuredLog");function D(e,n){return n.aborted?Promise.resolve(!1):e<=0?Promise.resolve(!0):new Promise(r=>{let l=setTimeout(()=>{n.removeEventListener("abort",c),r(!0)},e),c=s(()=>{clearTimeout(l),n.removeEventListener("abort",c),r(!1)},"onAbort");n.addEventListener("abort",c,{once:!0})})}s(D,"abortableSleep");async function G(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(G,"pollForWork");function q(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(q,"makeHelpers");async function Q(e,n,r){let l=V[e.kind],c=Date.now();if(a(r,{event:"claim",jobId:e.id,kind:e.kind,attempts:e.attempts}),!l){let o=`unknown kind: ${e.kind}`;a(r,{event:"fail",jobId:e.id,kind:e.kind,terminal:!0,error:o}),await p(`/api/work/${e.id}/fail`,{leaseToken:e.leaseToken,error:o,terminal:!0}).catch(()=>{});return}let i=setInterval(()=>{a(r,{event:"heartbeat",jobId:e.id}),p(`/api/work/${e.id}/heartbeat`,{leaseToken:e.leaseToken}).catch(o=>{a(r,{event:"heartbeat_error",jobId:e.id,error:o instanceof Error?o.message:String(o)})})},n);try{let o=q(e.attempts,r),d=await l(e.payload,o)??{};clearInterval(i),a(r,{event:"complete",jobId:e.id,kind:e.kind,durationMs:Date.now()-c}),await p(`/api/work/${e.id}/complete`,{leaseToken:e.leaseToken,result:d})}catch(o){clearInterval(i);let d=b(o),m=o instanceof Error?o.message:String(o);a(r,{event:"fail",jobId:e.id,kind:e.kind,durationMs:Date.now()-c,terminal:d,error:m}),await p(`/api/work/${e.id}/fail`,{leaseToken:e.leaseToken,error:m,terminal:d}).catch(t=>{a(r,{event:"fail_post_error",jobId:e.id,error:t instanceof Error?t.message:String(t)})})}}s(Q,"runOne");async function pe(e){let n=e.log??(()=>{}),r=e.pollWaitMs??$,l=e.heartbeatIntervalMs??F,c=e.capabilities??W(),i=P;a(n,{event:"agent_start",capabilities:c,pollWaitMs:r,heartbeatIntervalMs:l}),K(c,e.signal,n,e.version),x({signal:e.signal,log:n}).catch(t=>{a(n,{event:"tt_heartbeat_fatal",error:t instanceof Error?t.message:String(t)})});let o=5*6e4,d=0,m=s(()=>{if(!e.readInstalledVersion||!e.version)return!1;let t=Date.now();if(t-d<o)return!1;d=t;let u=e.readInstalledVersion();return!!(u&&u!==e.version)},"versionDrifted");for(;!e.signal.aborted;){if(m()){a(n,{event:"agent_version_drift",bootVersion:e.version,installedVersion:e.readInstalledVersion?.()??null}),e.onVersionDrift?.();break}let t=null;try{t=await G(c,r)}catch(u){let B=u instanceof f?u.statusCode:void 0;if(a(n,{event:"poll_error",status:B,error:u instanceof Error?u.message:String(u)}),!await D(i,e.signal))break;i=Math.min(i*2,C);continue}if(!t){if(a(n,{event:"poll_204"}),!await D(i,e.signal))break;i=Math.min(i*2,C);continue}i=P,await Q(t,l,n)}a(n,{event:"agent_stop"})}s(pe,"runAgentLoop");export{V as a,N as b,W as c,G as d,pe as e};