@rulemetric/cli 0.7.30 → 0.7.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-63FTASVC.js +1 -0
- package/dist/chunk-A4OIPUKP.js +1 -0
- package/dist/{chunk-WYF5BIQW.js → chunk-C7L7HKVW.js} +1 -1
- package/dist/{chunk-JAPCCEKF.js → chunk-CYKELSHS.js} +1 -1
- package/dist/{chunk-6UTJGOBA.js → chunk-EA4ZLBKI.js} +1 -1
- package/dist/{chunk-35ST2BX7.js → chunk-IDWL4XOV.js} +1 -1
- package/dist/{chunk-4HZWSFSY.js → chunk-IYVMSRW7.js} +1 -1
- package/dist/{chunk-6N6NTMOR.js → chunk-L7K4M3GW.js} +1 -1
- package/dist/{chunk-M4YF7YO7.js → chunk-QAMTNSL4.js} +1 -1
- package/dist/{chunk-4O7MJUPH.js → chunk-SKULIA45.js} +1 -1
- package/dist/{chunk-CS2OQ3GC.js → chunk-V5IVQS7L.js} +1 -1
- package/dist/chunk-VLXCQ2DC.js +31 -0
- package/dist/{chunk-CBP7QZAN.js → chunk-WJA34DI7.js} +1 -1
- package/dist/{chunk-35ZDT2VL.js → chunk-YSOT3ITX.js} +8 -8
- package/dist/commands/auth/login.js +4 -1
- package/dist/commands/diagnostics.js +1 -1
- package/dist/commands/evals/agent.js +1 -1
- package/dist/commands/evals/benchmark.js +1 -1
- package/dist/commands/evals/optimize.js +1 -1
- package/dist/commands/gateway/ensure.js +1 -1
- package/dist/commands/hooks/install.js +1 -1
- package/dist/commands/hooks/uninstall.js +1 -1
- package/dist/commands/sessions/list.js +1 -1
- package/dist/commands/setup.js +1 -1
- package/dist/lib/agent-loop.js +1 -1
- package/dist/lib/editor-proxy-pins.js +1 -1
- package/dist/lib/eval-benchmark.js +1 -1
- package/dist/lib/handlers/distill-memories.js +1 -1
- package/dist/lib/handlers/process-announcement.js +1 -1
- package/dist/lib/handlers/process-changelog.js +1 -1
- package/dist/lib/handlers/process-memory-ab.js +1 -1
- package/dist/lib/handlers/process-run-cleanup.js +1 -1
- package/dist/lib/handlers/process-session-goal.js +1 -1
- package/dist/lib/hooks-config.js +1 -1
- package/dist/lib/manual-tasks.js +1 -1
- package/dist/lib/optimize-compare.js +1 -1
- package/dist/lib/setup-steps.js +1 -1
- package/oclif.manifest.json +14 -3
- package/package.json +6 -6
- package/dist/chunk-2JRDG4LJ.js +0 -31
- package/dist/chunk-KZ65LEUH.js +0 -1
- package/dist/chunk-X2ILN3KP.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{b as P,c as C}from"../../chunk-
|
|
1
|
+
import{b as P,c as C}from"../../chunk-C7L7HKVW.js";import{a as V}from"../../chunk-4VZLIGMS.js";import{a as N}from"../../chunk-KAWNGQS2.js";import"../../chunk-CDY7TQFZ.js";import"../../chunk-K25S2MGU.js";import"../../chunk-63FTASVC.js";import{c as F}from"../../chunk-HMMO27U4.js";import"../../chunk-SMGSLY5N.js";import"../../chunk-PJ3WHQ67.js";import"../../chunk-N7ODX6PO.js";import{a as A}from"../../chunk-PPKPCXJD.js";import"../../chunk-IZTIYR5Q.js";import"../../chunk-V44SRRYR.js";import"../../chunk-U6XEU573.js";import"../../chunk-VLOX6KOM.js";import"../../chunk-3AV3GTMP.js";import{e as w,f as m,g as S}from"../../chunk-H2ORWIEY.js";import"../../chunk-O6C2UGBY.js";import{a as k}from"../../chunk-ZLLER3HP.js";import{createInterface as _}from"node:readline/promises";import{Args as q,Flags as g}from"@oclif/core";var $=class O extends A{static{k(this,"EvalOptimizeCommand")}static description="Iteratively optimize eval target content using eval results as feedback";static examples=["<%= config.bin %> evals optimize <target-id>","<%= config.bin %> evals optimize <target-id> --auto --max-iterations 3"];static args={targetId:q.string({description:"Eval target ID",required:!0})};static flags={auto:g.boolean({description:"Skip interactive review, apply suggestions automatically",default:!1}),"max-iterations":g.integer({description:"Maximum optimization iterations",default:5}),threshold:g.string({description:"Stop if pass rate reaches this threshold (0-1)",default:"0.95"}),model:g.string({description:"Model for eval execution"}),"analyzer-model":g.string({description:"Model for analysis/suggestions"}),timeout:g.integer({description:"Timeout per eval in ms",default:12e4})};async run(){let{args:n,flags:e}=await this.parse(O);this.requireAuth();let t=await w(`/api/eval-targets/${n.targetId}`),i=await w(`/api/eval-targets/${n.targetId}/evals`);i.length===0&&this.error("No evals found. Create some first with `rulemetric evals create`.");let s=[...i].sort(()=>Math.random()-.5),c=Math.ceil(s.length*.6),u=s.slice(0,c),d=s.slice(c);this.log(`Optimizing "${t.name}" v${t.version}`),this.log(`Evals: ${u.length} train, ${d.length} test`);let h=parseFloat(e.threshold);this.log(`Config: max ${e["max-iterations"]} iterations, threshold ${(h*100).toFixed(0)}%`),e.auto&&this.log("Mode: auto (no interactive review)"),this.log("");let T=t.version,f=0,x=0;for(let l=1;l<=e["max-iterations"];l++){this.log(`
|
|
2
2
|
=== Iteration ${l} ===`),this.log("Running train evals...");let b=await this.runEvalsOnTarget(t,u,e),p=this.computePassRate(b);if(this.log(`Train pass rate: ${(p*100).toFixed(1)}%`),p>=h){this.log(`Train score ${(p*100).toFixed(1)}% >= threshold ${(h*100).toFixed(0)}%. Stopping.`);let o=await this.runEvalsOnTarget(t,d,e),z=this.computePassRate(o);this.log(`Final test score: ${(z*100).toFixed(1)}%`),await m("/api/optimization-runs",{evalTargetId:t.id,type:"content",iteration:l,inputVersion:t.version,trainScore:p,testScore:z,analysis:{reason:"threshold_reached"},status:"completed"});break}this.log("Analyzing results...");let M=b.map(o=>({evalName:o.evalName,prompt:o.prompt,expectations:o.expectations,grading:o.grading})),a=await V({content:t.content,evalResults:M,model:e["analyzer-model"]??e.model,timeout:e.timeout});this.log(`
|
|
3
3
|
Assessment: ${a.overallAssessment}`),this.log(`Suggestions: ${a.suggestions.length}`);for(let o of a.suggestions)this.log(` - [${o.section}] ${o.reasoning}`);if(a.proposedContent===t.content){this.log("No changes proposed. Stopping."),await m("/api/optimization-runs",{evalTargetId:t.id,type:"content",iteration:l,inputVersion:t.version,trainScore:p,analysis:{reason:"no_changes"},status:"completed"});break}if(!e.auto&&!await this.confirm(`
|
|
4
4
|
Apply the proposed changes as a new version? [y/N] `)){this.log("Changes not applied. Stopping."),await m("/api/optimization-runs",{evalTargetId:t.id,type:"content",iteration:l,inputVersion:t.version,trainScore:p,analysis:{reason:"user_declined",suggestions:a.suggestions},status:"completed"});break}let r=await S(`/api/eval-targets/${t.id}`,{content:a.proposedContent});this.log(`Created v${r.version}`),this.log(`Running test evals on v${t.version} (baseline) and v${r.version}...`);let E=await this.runEvalsOnTarget(t,d,e),R=await this.runEvalsOnTarget(r,d,e),v=this.computePassRate(R),I=this.computePassRate(E);this.log(`Test pass rate: v${t.version} ${(I*100).toFixed(1)}% \u2192 v${r.version} ${(v*100).toFixed(1)}%`);let y=P(E,R);if(y&&this.log(C(y,t.version,r.version)),await m("/api/optimization-runs",{evalTargetId:t.id,type:"content",iteration:l,inputVersion:t.version,outputVersion:r.version,trainScore:p,testScore:v,analysis:{suggestions:a.suggestions,overallAssessment:a.overallAssessment,priorTestScore:I,verdict:y},status:"completed"}),v>f)f=v,T=r.version,x=0;else if(x++,x>=2){this.log("No improvement for 2 consecutive iterations. Stopping.");break}t=r}this.log(`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{b as y,c as h}from"../../chunk-
|
|
1
|
+
import{b as y,c as h}from"../../chunk-CYKELSHS.js";import{B as l,E as g}from"../../chunk-VLXCQ2DC.js";import"../../chunk-I2DZGJRR.js";import{c as e,g as p,i as m,k as f}from"../../chunk-MVM6OGAF.js";import"../../chunk-KKDHD4XA.js";import{b as d,d as u}from"../../chunk-SZ62CP55.js";import{a as c}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}from"../../chunk-ZLLER3HP.js";import{spawn as S}from"node:child_process";import{existsSync as v,readFileSync as R,statSync as C,writeFileSync as M}from"node:fs";import{homedir as T}from"node:os";import{join as o}from"node:path";var s=o(T(),".config","rulemetric"),x=o(s,"proxy-addon.version"),_=o(s,"proxy.pid"),w=o(s,"proxy-drift-restart.at"),E=10*6e4,n=class P extends c{static{a(this,"GatewayEnsure")}static description="Ensure the gateway proxy is running (called by hooks, not for direct use)";static hidden=!0;async run(){await this.parse(P),this.maybeRestartStaleProxy();let t=await p(e);if(t.status==="ours-live"){let r=h(i=>{i==="vscode"?l(e):g(e)});r.length>0&&console.error(`[RuleMetric] Gateway healthy again \u2014 restored ${r.join(", ")} proxy settings.`);return}if(t.status==="foreign"){if(m())return;let r=y(e);console.error(`[RuleMetric] A non-RuleMetric process holds :${e} \u2014 cannot start gateway. `+(r.length>0?`Unpinned ${r.join(", ")} proxy settings so editors are not routed through it. `:"")+"Run `rulemetric diagnostics` if Claude Code HTTPS requests fail.");return}try{f(this.config.version)}catch(r){console.error(`[RuleMetric] Could not start gateway: ${r.message}`)}}maybeRestartStaleProxy(){try{if(!v(x))return;let t=R(x,"utf-8").trim();if(!t||t===this.config.version)return;let r=R(_,"utf-8").trim(),i=Number(r);if(!Number.isFinite(i)||!u(i,d))return;try{if(Date.now()-C(w).mtimeMs<E)return}catch{}M(w,new Date().toISOString()),S(process.execPath,[process.argv[1],"proxy","restart"],{detached:!0,stdio:"ignore"}).unref(),console.error(`[RuleMetric] Capture proxy is running CLI ${t} but ${this.config.version} is installed \u2014 restarting it in the background.`)}catch{}}};export{n as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as pt}from"../../chunk-6XEC6474.js";import{B as ut,E as dt,H as gt,I as ht,e as z,f as Q,g as Z,i as tt,j as et,k as st,n as ot,p as it,q as rt,r as at,u as nt,v as lt,y as ct}from"../../chunk-2JRDG4LJ.js";import{a as q,b as W,c as m,d as J,g as A}from"../../chunk-I2DZGJRR.js";import{c as s,g as X,h as D,i as F,k as O,l as V}from"../../chunk-MVM6OGAF.js";import{e as B}from"../../chunk-KKDHD4XA.js";import"../../chunk-SZ62CP55.js";import{a as f}from"../../chunk-PJ3WHQ67.js";import"../../chunk-N7ODX6PO.js";import{a as Y}from"../../chunk-XICLXXRH.js";import{a as M}from"../../chunk-PPKPCXJD.js";import"../../chunk-IZTIYR5Q.js";import{c as N}from"../../chunk-V44SRRYR.js";import"../../chunk-U6XEU573.js";import{b as L}from"../../chunk-VLOX6KOM.js";import"../../chunk-3AV3GTMP.js";import"../../chunk-H2ORWIEY.js";import{a as G}from"../../chunk-O6C2UGBY.js";import{a as v}from"../../chunk-ZLLER3HP.js";import{Flags as w}from"@oclif/core";import{execFileSync as ft,spawnSync as l}from"node:child_process";import{existsSync as c}from"node:fs";import{homedir as mt}from"node:os";import{join as _,dirname as Ct}from"node:path";function vt(){try{let d=ft("/bin/sh",["-c","command -v rulemetric"],{encoding:"utf-8"}).trim();if(d&&c(d))return Ct(d)}catch{}}v(vt,"resolveHookBinDir");function wt(){try{return ft("launchctl",["list","com.rulemetric.gateway"],{stdio:["ignore","pipe","pipe"]}),!0}catch{return!1}}v(wt,"isGatewayLaunchdManaged");var o=_(mt(),".mitmproxy","mitmproxy-ca-cert.pem"),R=class d extends M{static{v(this,"HooksInstall")}static description="Install session tracking hooks and context capture proxy for Claude Code";static examples=["<%= config.bin %> hooks install","<%= config.bin %> hooks install --global","<%= config.bin %> hooks install --no-proxy"];static flags={"no-proxy":w.boolean({default:!1,description:"Skip proxy/gateway configuration (hooks only)"}),"project-dir":w.string({description:"Project directory to install hooks in (defaults to cwd)"}),global:w.boolean({char:"g",default:!1,description:"Install hooks globally (~/.claude/settings.json) so all projects are tracked"}),"statusline-usage":w.boolean({default:!1,description:"Install the statusline shim so Claude Code pushes live rate_limits on every refresh (makes /usage rings update in real time without needing the proxy)"})};async run(){let{flags:i}=await this.parse(d),r=i.global,n=r?mt():i["project-dir"]??process.cwd(),x=_(n,".claude"),y=st(x,r),K=r?"settings.json":"settings.local.json",k=i["no-proxy"],P=!1,g=k?"no_proxy_flag":void 0,h=!1,S=[];r&&this.log(`Installing hooks globally \u2192 ${y}`);let{settings:a,recoveredBackup:$}=z(y);if($&&this.log(`[!!] ${y} was not valid JSON \u2014 backed it up to ${$} and continued with a fresh file.`),!r){let e=ot(_(x,"settings.json"),s);e.migrated&&(this.log("[OK] Moved RuleMetric machine-local state out of the shared .claude/settings.json (it now lives in .claude/settings.local.json)"),e.backupPath&&this.log(` Previous shared settings backed up \u2192 ${e.backupPath}`),e.removedStatusline&&c(q)&&!A(a)&&(a.statusLine=m))}let I=G();(I.accessToken||process.env.RULEMETRIC_ACCESS_TOKEN)&&!I.apiKey&&!process.env.RULEMETRIC_API_KEY&&await Y(this.log.bind(this),this.warn.bind(this),this.config.version);let yt=tt(a),C=vt();if(Z(a,C),this.log(yt?`[OK] Refreshed RuleMetric Claude Code session hooks \u2192 .claude/${K}`:`[OK] Installed RuleMetric Claude Code session hooks \u2192 .claude/${K}`),!k){let e=!!f("mitmdump");if(e||(this.log(""),this.log("[!!] mitmproxy not found \u2014 installing..."),S=["brew","pipx","uv"].filter(t=>!!f(t)),e=this.installMitmproxy(),e||(this.log("[!!] Could not install mitmproxy. Skipping proxy config."),this.log(" Install manually: pipx install mitmproxy"),this.log(" Then re-run: rulemetric hooks install"))),c(o))this.log("[OK] CA certificate found");else{this.log("[..] Generating CA certificate...");let t=f("mitmdump");t&&(l(t,["--set","listen_port=0","-q"],{timeout:5e3,stdio:"ignore"}),c(o)?this.log(`[OK] CA certificate generated at ${o}`):this.log("[!!] Could not generate CA cert"))}let u=c(o);u&&!this.isCACertTrusted()?(this.log("[..] Installing CA certificate into system trust store (requires admin)..."),h=this.trustCACert(),h?this.log("[OK] CA certificate trusted by system"):(this.log("[!!] Could not install CA cert automatically."),process.platform==="darwin"?this.log(` Run manually: sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ${o}`):process.platform==="linux"&&this.log(` Run manually: sudo cp ${o} /usr/local/share/ca-certificates/mitmproxy-ca.crt && sudo update-ca-certificates`))):u&&(this.log("[OK] CA certificate already trusted"),h=!0);let p=wt(),b=await X(s);if(p)this.log("[OK] Gateway managed by launchd (com.rulemetric.gateway)");else if(b.status==="ours-live")this.log("[OK] Gateway already running");else if(b.status==="foreign"&&F()){this.log("[..] Restarting gateway (running build predates the identity handshake)..."),V(),await new Promise(t=>setTimeout(t,500));try{let t=O(this.config.version);this.log(`[OK] Gateway restarted (PID ${t})`)}catch(t){this.log(`[!!] Could not restart gateway: ${t.message}`)}}else if(b.status!=="foreign")try{let t=O(this.config.version);this.log(`[OK] Gateway started (PID ${t})`)}catch(t){this.log(`[!!] Could not start gateway: ${t.message}`)}let j=await D(s,{timeoutMs:4e3});if(!u)g=e?"ca_not_generated":S.length===0?"no_package_manager":"mitmproxy_install_failed",this.log("[!!] No CA certificate \u2014 NOT setting HTTPS_PROXY (capture stays hooks-only)."),this.log(" Install mitmproxy, then re-run: rulemetric hooks install");else if(j.status==="foreign"&&!p){g="gateway_port_foreign";let t=B(s);this.log(`[!!] Port :${s} is held by a process that is NOT the RuleMetric gateway \u2014 NOT setting HTTPS_PROXY.`),this.log(t?` Holding the port: ${t}`:` Could not identify the holder (try: lsof -nP -iTCP:${s} -sTCP:LISTEN)`),this.log(" Capture still works via hooks. Free the port, then re-run: rulemetric hooks install")}else if(j.status==="dead")g="gateway_not_live",this.log(`[!!] Gateway is not answering on :${s} \u2014 NOT setting HTTPS_PROXY.`),this.log(" Capture still works via hooks. To enable deep (proxy) capture later:"),this.log(" rulemetric proxy start && rulemetric hooks install");else{let t=a.env??{};t.HTTPS_PROXY=`http://localhost:${s}`,t.NO_PROXY=et,c(o)&&(t.NODE_EXTRA_CA_CERTS=o),a.env=t,P=!0,this.log(`[OK] HTTPS_PROXY set to gateway on :${s} (verified live)`),nt(n,s,o)&&this.log("[OK] Cursor proxy configured \u2192 .cursor/settings.json"),lt(n,s,o)&&this.log("[OK] VS Code workspace proxy configured \u2192 .vscode/settings.json"),ut(s)&&this.log("[OK] VS Code user proxy configured \u2192 ~/Library/Application Support/Code/User/settings.json"),dt(s)&&this.log("[OK] Cursor user proxy configured \u2192 ~/Library/Application Support/Cursor/User/settings.json"),h?ct(s,o)&&this.log("[OK] HTTPS_PROXY set for GUI apps (launchctl + LaunchAgent)"):(g="ca_untrusted",this.log("[!!] CA not trusted \u2014 skipping machine-wide GUI proxy (would break native-app TLS)."),this.log(" Claude Code capture is unaffected. Trust the CA + re-run to enable cross-app capture."))}}if(!r){let e=it(n,C);e&&this.log(`[OK] Cursor hooks configured \u2192 ${e}`);let u=at(n,C);u&&this.log(`[OK] Copilot Agent hooks configured \u2192 ${u}`);let p=gt(n);p&&this.log(`[OK] Antigravity workspace hooks configured \u2192 ${p}`)}let E=ht();E&&this.log(`[OK] Antigravity user hooks configured \u2192 ${E}`);let H=rt(C);if(H&&this.log(`[OK] Cursor user hooks configured \u2192 ${H}`),i["statusline-usage"])if(A(a))this.log("[OK] Statusline shim already installed");else{let e=J(a);W(e),a.statusLine=m,e?this.log(`[OK] Statusline shim installed \u2192 ${m.command} (chains to: ${e})`):this.log(`[OK] Statusline shim installed \u2192 ${m.command}`),this.log(" Rate-limit rings will now update on Claude Code's statusline refresh cadence")}let{backupPath:U}=Q(y,a);U&&this.log(`[OK] Backed up previous settings \u2192 ${U}`),this.log(""),this.log("Setup complete! Next steps:"),r?(this.log(" 1. Install always-on API: rulemetric service install"),this.log(" 2. Start Claude Code in any project \u2014 all sessions tracked automatically"),this.log(""),this.log("The API service starts on login and restarts on crash.")):k?(this.log(" 1. Start Claude Code \u2014 sessions are captured by the hooks just installed"),this.log(""),this.log("No proxy means no mitmproxy / CA cert needed. The hooks capture full"),this.log("sessions on their own; re-run without --no-proxy to also capture system"),this.log("prompts for instruction-effectiveness linking.")):(this.log(" 1. Start Claude Code \u2014 sessions are captured by hooks immediately"),P?this.log(" 2. Full-depth capture is ON \u2014 the proxy is live on :"+s+"."):this.log(" 2. Enable full depth (proxy not yet live): rulemetric proxy start"),this.log(""),this.log("Hooks capture every session (lifecycle + transcript). The proxy adds the"),this.log("rendered system prompt (instruction-effectiveness linking) + cross-tool capture."),this.log(""),this.log("To capture traffic from other clients (Python, curl, etc.):"),this.log(' eval "$(rulemetric proxy env --all)"')),await L(),N("hooks_installed",{proxy:P,caTrusted:h,reason:g,installers:S,global:r},this.config.version);let T=await pt();this.log(""),T.available?this.log(`[OK] tmux found${T.version?` (v${T.version})`:""} \u2014 live send enabled`):this.log("[!!] tmux not found \u2014 live send will fall back to opening Terminal. Install with: brew install tmux")}installMitmproxy(){for(let[i,r]of[["pipx",["install","mitmproxy"]],["uv",["tool","install","mitmproxy"]],["brew",["install","mitmproxy"]]]){let n=f(i);if(n&&(this.log(` Installing via ${i}...`),l(n,[...r],{stdio:"inherit"}).status===0))return!0}return!1}isCACertTrusted(){return process.platform==="darwin"?l("security",["verify-cert","-c",o],{stdio:"pipe"}).status===0:process.platform==="linux"?c("/usr/local/share/ca-certificates/mitmproxy-ca.crt"):process.platform==="win32"?l("certutil",["-verify",o],{stdio:"pipe"}).status===0:!1}trustCACert(){return process.platform==="darwin"?l("sudo",["security","add-trusted-cert","-d","-r","trustRoot","-k","/Library/Keychains/System.keychain",o],{stdio:"inherit"}).status===0:process.platform==="linux"?l("sudo",["cp",o,"/usr/local/share/ca-certificates/mitmproxy-ca.crt"],{stdio:"inherit"}).status!==0?!1:l("sudo",["update-ca-certificates"],{stdio:"inherit"}).status===0:process.platform==="win32"?l("certutil",["-addstore","-f","Root",o],{stdio:"inherit"}).status===0:!1}};export{R as default};
|
|
1
|
+
import{a as pt}from"../../chunk-6XEC6474.js";import{B as ut,E as dt,H as gt,I as ht,e as z,f as Q,g as Z,i as tt,j as et,k as st,n as ot,p as it,q as rt,r as at,u as nt,v as lt,y as ct}from"../../chunk-VLXCQ2DC.js";import{a as q,b as W,c as m,d as J,g as A}from"../../chunk-I2DZGJRR.js";import{c as s,g as X,h as D,i as F,k as O,l as V}from"../../chunk-MVM6OGAF.js";import{e as B}from"../../chunk-KKDHD4XA.js";import"../../chunk-SZ62CP55.js";import{a as f}from"../../chunk-PJ3WHQ67.js";import"../../chunk-N7ODX6PO.js";import{a as Y}from"../../chunk-XICLXXRH.js";import{a as M}from"../../chunk-PPKPCXJD.js";import"../../chunk-IZTIYR5Q.js";import{c as N}from"../../chunk-V44SRRYR.js";import"../../chunk-U6XEU573.js";import{b as L}from"../../chunk-VLOX6KOM.js";import"../../chunk-3AV3GTMP.js";import"../../chunk-H2ORWIEY.js";import{a as G}from"../../chunk-O6C2UGBY.js";import{a as v}from"../../chunk-ZLLER3HP.js";import{Flags as w}from"@oclif/core";import{execFileSync as ft,spawnSync as l}from"node:child_process";import{existsSync as c}from"node:fs";import{homedir as mt}from"node:os";import{join as _,dirname as Ct}from"node:path";function vt(){try{let d=ft("/bin/sh",["-c","command -v rulemetric"],{encoding:"utf-8"}).trim();if(d&&c(d))return Ct(d)}catch{}}v(vt,"resolveHookBinDir");function wt(){try{return ft("launchctl",["list","com.rulemetric.gateway"],{stdio:["ignore","pipe","pipe"]}),!0}catch{return!1}}v(wt,"isGatewayLaunchdManaged");var o=_(mt(),".mitmproxy","mitmproxy-ca-cert.pem"),R=class d extends M{static{v(this,"HooksInstall")}static description="Install session tracking hooks and context capture proxy for Claude Code";static examples=["<%= config.bin %> hooks install","<%= config.bin %> hooks install --global","<%= config.bin %> hooks install --no-proxy"];static flags={"no-proxy":w.boolean({default:!1,description:"Skip proxy/gateway configuration (hooks only)"}),"project-dir":w.string({description:"Project directory to install hooks in (defaults to cwd)"}),global:w.boolean({char:"g",default:!1,description:"Install hooks globally (~/.claude/settings.json) so all projects are tracked"}),"statusline-usage":w.boolean({default:!1,description:"Install the statusline shim so Claude Code pushes live rate_limits on every refresh (makes /usage rings update in real time without needing the proxy)"})};async run(){let{flags:i}=await this.parse(d),r=i.global,n=r?mt():i["project-dir"]??process.cwd(),x=_(n,".claude"),y=st(x,r),K=r?"settings.json":"settings.local.json",k=i["no-proxy"],P=!1,g=k?"no_proxy_flag":void 0,h=!1,S=[];r&&this.log(`Installing hooks globally \u2192 ${y}`);let{settings:a,recoveredBackup:$}=z(y);if($&&this.log(`[!!] ${y} was not valid JSON \u2014 backed it up to ${$} and continued with a fresh file.`),!r){let e=ot(_(x,"settings.json"),s);e.migrated&&(this.log("[OK] Moved RuleMetric machine-local state out of the shared .claude/settings.json (it now lives in .claude/settings.local.json)"),e.backupPath&&this.log(` Previous shared settings backed up \u2192 ${e.backupPath}`),e.removedStatusline&&c(q)&&!A(a)&&(a.statusLine=m))}let I=G();(I.accessToken||process.env.RULEMETRIC_ACCESS_TOKEN)&&!I.apiKey&&!process.env.RULEMETRIC_API_KEY&&await Y(this.log.bind(this),this.warn.bind(this),this.config.version);let yt=tt(a),C=vt();if(Z(a,C),this.log(yt?`[OK] Refreshed RuleMetric Claude Code session hooks \u2192 .claude/${K}`:`[OK] Installed RuleMetric Claude Code session hooks \u2192 .claude/${K}`),!k){let e=!!f("mitmdump");if(e||(this.log(""),this.log("[!!] mitmproxy not found \u2014 installing..."),S=["brew","pipx","uv"].filter(t=>!!f(t)),e=this.installMitmproxy(),e||(this.log("[!!] Could not install mitmproxy. Skipping proxy config."),this.log(" Install manually: pipx install mitmproxy"),this.log(" Then re-run: rulemetric hooks install"))),c(o))this.log("[OK] CA certificate found");else{this.log("[..] Generating CA certificate...");let t=f("mitmdump");t&&(l(t,["--set","listen_port=0","-q"],{timeout:5e3,stdio:"ignore"}),c(o)?this.log(`[OK] CA certificate generated at ${o}`):this.log("[!!] Could not generate CA cert"))}let u=c(o);u&&!this.isCACertTrusted()?(this.log("[..] Installing CA certificate into system trust store (requires admin)..."),h=this.trustCACert(),h?this.log("[OK] CA certificate trusted by system"):(this.log("[!!] Could not install CA cert automatically."),process.platform==="darwin"?this.log(` Run manually: sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ${o}`):process.platform==="linux"&&this.log(` Run manually: sudo cp ${o} /usr/local/share/ca-certificates/mitmproxy-ca.crt && sudo update-ca-certificates`))):u&&(this.log("[OK] CA certificate already trusted"),h=!0);let p=wt(),b=await X(s);if(p)this.log("[OK] Gateway managed by launchd (com.rulemetric.gateway)");else if(b.status==="ours-live")this.log("[OK] Gateway already running");else if(b.status==="foreign"&&F()){this.log("[..] Restarting gateway (running build predates the identity handshake)..."),V(),await new Promise(t=>setTimeout(t,500));try{let t=O(this.config.version);this.log(`[OK] Gateway restarted (PID ${t})`)}catch(t){this.log(`[!!] Could not restart gateway: ${t.message}`)}}else if(b.status!=="foreign")try{let t=O(this.config.version);this.log(`[OK] Gateway started (PID ${t})`)}catch(t){this.log(`[!!] Could not start gateway: ${t.message}`)}let j=await D(s,{timeoutMs:4e3});if(!u)g=e?"ca_not_generated":S.length===0?"no_package_manager":"mitmproxy_install_failed",this.log("[!!] No CA certificate \u2014 NOT setting HTTPS_PROXY (capture stays hooks-only)."),this.log(" Install mitmproxy, then re-run: rulemetric hooks install");else if(j.status==="foreign"&&!p){g="gateway_port_foreign";let t=B(s);this.log(`[!!] Port :${s} is held by a process that is NOT the RuleMetric gateway \u2014 NOT setting HTTPS_PROXY.`),this.log(t?` Holding the port: ${t}`:` Could not identify the holder (try: lsof -nP -iTCP:${s} -sTCP:LISTEN)`),this.log(" Capture still works via hooks. Free the port, then re-run: rulemetric hooks install")}else if(j.status==="dead")g="gateway_not_live",this.log(`[!!] Gateway is not answering on :${s} \u2014 NOT setting HTTPS_PROXY.`),this.log(" Capture still works via hooks. To enable deep (proxy) capture later:"),this.log(" rulemetric proxy start && rulemetric hooks install");else{let t=a.env??{};t.HTTPS_PROXY=`http://localhost:${s}`,t.NO_PROXY=et,c(o)&&(t.NODE_EXTRA_CA_CERTS=o),a.env=t,P=!0,this.log(`[OK] HTTPS_PROXY set to gateway on :${s} (verified live)`),nt(n,s,o)&&this.log("[OK] Cursor proxy configured \u2192 .cursor/settings.json"),lt(n,s,o)&&this.log("[OK] VS Code workspace proxy configured \u2192 .vscode/settings.json"),ut(s)&&this.log("[OK] VS Code user proxy configured \u2192 ~/Library/Application Support/Code/User/settings.json"),dt(s)&&this.log("[OK] Cursor user proxy configured \u2192 ~/Library/Application Support/Cursor/User/settings.json"),h?ct(s,o)&&this.log("[OK] HTTPS_PROXY set for GUI apps (launchctl + LaunchAgent)"):(g="ca_untrusted",this.log("[!!] CA not trusted \u2014 skipping machine-wide GUI proxy (would break native-app TLS)."),this.log(" Claude Code capture is unaffected. Trust the CA + re-run to enable cross-app capture."))}}if(!r){let e=it(n,C);e&&this.log(`[OK] Cursor hooks configured \u2192 ${e}`);let u=at(n,C);u&&this.log(`[OK] Copilot Agent hooks configured \u2192 ${u}`);let p=gt(n);p&&this.log(`[OK] Antigravity workspace hooks configured \u2192 ${p}`)}let E=ht();E&&this.log(`[OK] Antigravity user hooks configured \u2192 ${E}`);let H=rt(C);if(H&&this.log(`[OK] Cursor user hooks configured \u2192 ${H}`),i["statusline-usage"])if(A(a))this.log("[OK] Statusline shim already installed");else{let e=J(a);W(e),a.statusLine=m,e?this.log(`[OK] Statusline shim installed \u2192 ${m.command} (chains to: ${e})`):this.log(`[OK] Statusline shim installed \u2192 ${m.command}`),this.log(" Rate-limit rings will now update on Claude Code's statusline refresh cadence")}let{backupPath:U}=Q(y,a);U&&this.log(`[OK] Backed up previous settings \u2192 ${U}`),this.log(""),this.log("Setup complete! Next steps:"),r?(this.log(" 1. Install always-on API: rulemetric service install"),this.log(" 2. Start Claude Code in any project \u2014 all sessions tracked automatically"),this.log(""),this.log("The API service starts on login and restarts on crash.")):k?(this.log(" 1. Start Claude Code \u2014 sessions are captured by the hooks just installed"),this.log(""),this.log("No proxy means no mitmproxy / CA cert needed. The hooks capture full"),this.log("sessions on their own; re-run without --no-proxy to also capture system"),this.log("prompts for instruction-effectiveness linking.")):(this.log(" 1. Start Claude Code \u2014 sessions are captured by hooks immediately"),P?this.log(" 2. Full-depth capture is ON \u2014 the proxy is live on :"+s+"."):this.log(" 2. Enable full depth (proxy not yet live): rulemetric proxy start"),this.log(""),this.log("Hooks capture every session (lifecycle + transcript). The proxy adds the"),this.log("rendered system prompt (instruction-effectiveness linking) + cross-tool capture."),this.log(""),this.log("To capture traffic from other clients (Python, curl, etc.):"),this.log(' eval "$(rulemetric proxy env --all)"')),await L(),N("hooks_installed",{proxy:P,caTrusted:h,reason:g,installers:S,global:r},this.config.version);let T=await pt();this.log(""),T.available?this.log(`[OK] tmux found${T.version?` (v${T.version})`:""} \u2014 live send enabled`):this.log("[!!] tmux not found \u2014 live send will fall back to opening Terminal. Install with: brew install tmux")}installMitmproxy(){for(let[i,r]of[["pipx",["install","mitmproxy"]],["uv",["tool","install","mitmproxy"]],["brew",["install","mitmproxy"]]]){let n=f(i);if(n&&(this.log(` Installing via ${i}...`),l(n,[...r],{stdio:"inherit"}).status===0))return!0}return!1}isCACertTrusted(){return process.platform==="darwin"?l("security",["verify-cert","-c",o],{stdio:"pipe"}).status===0:process.platform==="linux"?c("/usr/local/share/ca-certificates/mitmproxy-ca.crt"):process.platform==="win32"?l("certutil",["-verify",o],{stdio:"pipe"}).status===0:!1}trustCACert(){return process.platform==="darwin"?l("sudo",["security","add-trusted-cert","-d","-r","trustRoot","-k","/Library/Keychains/System.keychain",o],{stdio:"inherit"}).status===0:process.platform==="linux"?l("sudo",["cp",o,"/usr/local/share/ca-certificates/mitmproxy-ca.crt"],{stdio:"inherit"}).status!==0?!1:l("sudo",["update-ca-certificates"],{stdio:"inherit"}).status===0:process.platform==="win32"?l("certutil",["-addstore","-f","Root",o],{stdio:"inherit"}).status===0:!1}};export{R as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{C as x,F as k,J as C,K as S,o as h,s as p,t as g,w as v,x as y,z as R}from"../../chunk-
|
|
1
|
+
import{C as x,F as k,J as C,K as S,o as h,s as p,t as g,w as v,x as y,z as R}from"../../chunk-VLXCQ2DC.js";import"../../chunk-I2DZGJRR.js";import{c as f,l as d}from"../../chunk-MVM6OGAF.js";import"../../chunk-KKDHD4XA.js";import"../../chunk-SZ62CP55.js";import{a}from"../../chunk-PPKPCXJD.js";import"../../chunk-IZTIYR5Q.js";import"../../chunk-V44SRRYR.js";import"../../chunk-U6XEU573.js";import"../../chunk-VLOX6KOM.js";import"../../chunk-3AV3GTMP.js";import"../../chunk-H2ORWIEY.js";import"../../chunk-O6C2UGBY.js";import{a as i}from"../../chunk-ZLLER3HP.js";import{existsSync as n,readFileSync as A,writeFileSync as j}from"node:fs";import{spawnSync as t}from"node:child_process";import{homedir as O}from"node:os";import{join as c}from"node:path";var r=c(O(),".mitmproxy","mitmproxy-ca-cert.pem");function N(){return n(r)?process.platform==="darwin"?t("sudo",["security","remove-trusted-cert","-d",r],{stdio:"inherit"}).status===0:process.platform==="linux"?t("sudo",["rm","-f","/usr/local/share/ca-certificates/mitmproxy-ca.crt"],{stdio:"inherit"}).status!==0?!1:t("sudo",["update-ca-certificates","--fresh"],{stdio:"inherit"}).status===0:process.platform==="win32"?t("certutil",["-delstore","Root","mitmproxy"],{stdio:"inherit"}).status===0:!1:!1}i(N,"untrustCACert");var u=class extends a{static{i(this,"HooksUninstall")}static description="Remove session tracking hooks from the current project";static examples=["<%= config.bin %> hooks uninstall"];async run(){let w=c(process.cwd(),".claude"),l=h(w,f);if(l.length===0){this.log("No .claude/settings.json or .claude/settings.local.json found \u2014 nothing to uninstall.");return}let e=!1,m=!1;for(let o of l)o.recoveredBackup&&this.log(`[!!] ${o.configPath} was not valid JSON \u2014 backed up to ${o.recoveredBackup}; continuing.`),o.removedHooks&&this.log(`Removed RuleMetric hooks from .claude/${o.fileName}`),o.removedProxyEnv&&(this.log(`Removed HTTPS_PROXY, NO_PROXY and NODE_EXTRA_CA_CERTS from .claude/${o.fileName}`),m=!0),o.removedStatusline&&this.log(`Removed RuleMetric statusline shim from .claude/${o.fileName}`),e=e||o.changed;e||this.log("No hooks or proxy config found \u2014 nothing to uninstall."),p(process.cwd())&&(this.log("Removed RuleMetric hooks from .cursor/hooks.json"),e=!0),g()&&(this.log("Removed RuleMetric hooks from ~/.cursor/hooks.json"),e=!0);let s=c(process.cwd(),".cursor","settings.json");if(n(s))try{let o=JSON.parse(A(s,"utf-8"));o["http.proxy"]?.includes("localhost")&&(delete o["http.proxy"],delete o["http.proxyStrictSSL"],j(s,JSON.stringify(o,null,2)+`
|
|
2
2
|
`),this.log("Removed proxy config from .cursor/settings.json"),e=!0)}catch{}y(process.cwd())&&(this.log("Removed RuleMetric hooks from .github/hooks/"),e=!0),C(process.cwd())&&(this.log("Removed RuleMetric block from .agents/hooks.json"),e=!0),S()&&(this.log("Removed RuleMetric block from ~/.gemini/config/hooks.json"),e=!0),v(process.cwd())&&(this.log("Removed proxy config from .vscode/settings.json"),e=!0),x()&&(this.log("Removed proxy config from VS Code user settings"),e=!0),k()&&(this.log("Removed proxy config from Cursor user settings"),e=!0),R()&&(this.log("Removed HTTPS_PROXY LaunchAgent"),e=!0),m&&n(r)&&(this.log("Removing the mitmproxy CA from the system trust store (requires sudo)..."),N()?this.log("[OK] mitmproxy CA untrusted."):(this.log("[!!] Could not untrust the CA automatically. Remove it manually:"),process.platform==="darwin"?this.log(` sudo security remove-trusted-cert -d ${r}`):process.platform==="linux"&&this.log(" sudo rm -f /usr/local/share/ca-certificates/mitmproxy-ca.crt && sudo update-ca-certificates --fresh"))),d()&&this.log("Gateway stopped.")}};export{u as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"../../chunk-PPKPCXJD.js";import"../../chunk-IZTIYR5Q.js";import"../../chunk-V44SRRYR.js";import"../../chunk-U6XEU573.js";import"../../chunk-VLOX6KOM.js";import"../../chunk-3AV3GTMP.js";import{e as
|
|
1
|
+
import{a as l}from"../../chunk-5DIOZDDZ.js";import{a}from"../../chunk-PPKPCXJD.js";import"../../chunk-IZTIYR5Q.js";import"../../chunk-V44SRRYR.js";import"../../chunk-U6XEU573.js";import"../../chunk-VLOX6KOM.js";import"../../chunk-3AV3GTMP.js";import{e as r}from"../../chunk-H2ORWIEY.js";import"../../chunk-O6C2UGBY.js";import{a as n}from"../../chunk-ZLLER3HP.js";import{Flags as c}from"@oclif/core";var o=class d extends a{static{n(this,"SessionsList")}static description="List captured sessions";static examples=["<%= config.bin %> sessions list","<%= config.bin %> sessions list --tool claude_code","<%= config.bin %> sessions list --tool codex"];static flags={tool:c.string({description:`Filter by tool (${l.join(", ")})`}),limit:c.integer({description:"Max results",default:20})};async run(){let{flags:e}=await this.parse(d);this.requireAuth();let s=new URLSearchParams;e.tool&&s.set("tool",e.tool),s.set("limit",String(e.limit));let i=await r(`/api/sessions?${s}`);if(i.length===0){this.log("No sessions found.");return}for(let t of i){let p=t.projectPath?.split("/").pop()??"\u2014",m=t.analysis?.adherenceScore!=null?`${t.analysis.adherenceScore}%`:"\u2014",u=new Date(t.startedAt).toLocaleDateString();this.log(`${t.id.slice(0,8)} ${t.tool.padEnd(15)} ${p.padEnd(20)} ${String(t.eventCount).padStart(5)} events ${m.padStart(4)} adherence ${u}`)}}};export{o as default};
|
package/dist/commands/setup.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{c as l,d as h,f as m,g as p,h as f,i as y,j as r}from"../chunk-
|
|
1
|
+
import{c as l,d as h,f as m,g as p,h as f,i as y,j as r}from"../chunk-YSOT3ITX.js";import"../chunk-VLXCQ2DC.js";import"../chunk-I2DZGJRR.js";import"../chunk-MVM6OGAF.js";import"../chunk-KKDHD4XA.js";import"../chunk-SZ62CP55.js";import"../chunk-3BVHPQZW.js";import"../chunk-SMGSLY5N.js";import"../chunk-PJ3WHQ67.js";import"../chunk-N7ODX6PO.js";import{a as g}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 u}from"../chunk-ZLLER3HP.js";import{Args as b,Flags as c}from"@oclif/core";import*as w from"node:readline/promises";var d=class v extends g{static{u(this,"Setup")}static description="Agentic, transparent setup: plan / show diffs / apply the four core onboarding steps";static examples=["<%= config.bin %> setup # interactive walk (TTY)","<%= config.bin %> setup plan # read-only: every remaining artifact + diff","<%= config.bin %> setup hooks --show # print one step's diff","<%= config.bin %> setup hooks --apply # apply one step","<%= config.bin %> setup --json # machine-readable status (exit 0 iff complete)"];static args={target:b.string({description:`"plan" or a step id (${l.join(", ")})`,required:!1})};static flags={json:c.boolean({description:"Machine-readable output",default:!1}),show:c.boolean({description:"Print the step diff (read-only)",default:!1}),apply:c.boolean({description:"Apply the step",default:!1})};async run(){let{args:t,flags:e}=await this.parse(v),i=h();if(t.target==="plan"){await this.runPlan(i,e.json);return}if(t.target&&y(t.target)){if(e.apply){await f(t.target).apply(i);return}let n=await f(t.target).plan(i);this.printPlan(n);return}if(t.target&&this.error(`Unknown target "${t.target}". Use "plan" or one of: ${l.join(", ")}.`),e.json){let n=await r(i);this.log(JSON.stringify(n,null,2)),n.coreComplete||this.exit(1);return}await this.runInteractive(i)}async runPlan(t,e){let i=await r(t),n=p.filter(s=>!i.steps.find(a=>a.id===s.id)?.done),o=[];for(let s of n)o.push(await s.plan(t));if(e){this.log(JSON.stringify({...i,plans:o},null,2));return}if(o.length===0){this.log("[OK] All core steps complete \u2014 nothing to install.");return}this.log(`The following steps would be applied:
|
|
2
2
|
`);for(let s of o)this.printPlan(s),this.log("")}printPlan(t){this.log(`[..] ${t.title} (${t.id})`),t.command&&this.log(` command: ${t.command}`);for(let e of t.artifacts){this.log(` ${e.kind}: ${e.path}${e.masked?" (secret masked)":""}`);let i=m(e.before,e.after);for(let n of i.split(`
|
|
3
3
|
`))this.log(` ${n}`)}}async runInteractive(t){if(!process.stdin.isTTY){this.log("Not a TTY \u2014 interactive walk needs a terminal."),this.log("Use one of:"),this.log(" rulemetric setup plan \u2014 see every remaining artifact + diff"),this.log(" rulemetric setup <step> --show \u2014 print one step diff"),this.log(" rulemetric setup <step> --apply \u2014 apply one step"),this.log(" rulemetric setup --json \u2014 machine-readable status");return}let e=await r(t),i=p.filter(o=>!e.steps.find(s=>s.id===o.id)?.done);if(i.length===0){this.log("[OK] All core steps complete.");return}let n=w.createInterface({input:process.stdin,output:process.stdout});try{for(let o of i){let s=await o.plan(t);this.printPlan(s);let a=(await n.question(`Apply "${s.title}"? [y/N] `)).trim().toLowerCase();a==="y"||a==="yes"?(await o.apply(t),this.log(`[OK] Applied ${s.title}.`)):this.log(`[..] Skipped ${s.title}.`),this.log("")}}finally{n.close()}}};export{d as default};
|
package/dist/lib/agent-loop.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b,c,d,e}from"../chunk-
|
|
1
|
+
import{a,b,c,d,e}from"../chunk-L7K4M3GW.js";import"../chunk-TIOKY2IA.js";import"../chunk-QAMTNSL4.js";import"../chunk-RSKQRVPJ.js";import"../chunk-IDWL4XOV.js";import"../chunk-EA4ZLBKI.js";import"../chunk-N7TGRFVZ.js";import"../chunk-OSIP6FUD.js";import"../chunk-ULRVMH7O.js";import"../chunk-PRDYXO6Z.js";import"../chunk-QFVGUZDO.js";import"../chunk-T4P2NV3P.js";import"../chunk-BUWWFHGO.js";import"../chunk-MDPN46EY.js";import"../chunk-5RBLIVBF.js";import"../chunk-V5IVQS7L.js";import"../chunk-DUP232AH.js";import"../chunk-DO3KHK2X.js";import"../chunk-UF6US7VU.js";import"../chunk-MSTF7A7D.js";import"../chunk-ZL4MZMUK.js";import"../chunk-IYVMSRW7.js";import"../chunk-A4OIPUKP.js";import"../chunk-YQ56FQEO.js";import"../chunk-QQ2UPNBC.js";import"../chunk-TDD7IOV2.js";import"../chunk-MODXEGCU.js";import"../chunk-5DIOZDDZ.js";import"../chunk-4VZLIGMS.js";import"../chunk-UUMW6X2W.js";import"../chunk-HL755A5U.js";import"../chunk-6UEFCMR2.js";import"../chunk-CJRYYV76.js";import"../chunk-ZW5TAV3L.js";import"../chunk-L2CFSMBC.js";import"../chunk-Z72VHGV7.js";import"../chunk-KAWNGQS2.js";import"../chunk-CDY7TQFZ.js";import"../chunk-K25S2MGU.js";import"../chunk-63FTASVC.js";import"../chunk-HMMO27U4.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,c}from"../chunk-
|
|
1
|
+
import{a,b,c}from"../chunk-CYKELSHS.js";import"../chunk-VLXCQ2DC.js";import"../chunk-I2DZGJRR.js";import"../chunk-ZLLER3HP.js";export{a as defaultEditorPinPaths,c as repinEditorProxies,b as unpinEditorProxies};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b,c}from"../chunk-
|
|
1
|
+
import{a,b,c}from"../chunk-SKULIA45.js";import"../chunk-63FTASVC.js";import"../chunk-H2ORWIEY.js";import"../chunk-O6C2UGBY.js";import"../chunk-ZLLER3HP.js";export{b as aggregateBenchmark,c as postBenchmark,a as summarizeRuns};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b}from"../../chunk-
|
|
1
|
+
import{a,b}from"../../chunk-IYVMSRW7.js";import"../../chunk-A4OIPUKP.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-
|
|
1
|
+
import{a}from"../../chunk-EA4ZLBKI.js";import"../../chunk-N7TGRFVZ.js";import"../../chunk-5RBLIVBF.js";import"../../chunk-A4OIPUKP.js";import"../../chunk-ZLLER3HP.js";export{a as processAnnouncement};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"../../chunk-
|
|
1
|
+
import{a}from"../../chunk-WJA34DI7.js";import"../../chunk-N7TGRFVZ.js";import"../../chunk-ZL4MZMUK.js";import"../../chunk-A4OIPUKP.js";import"../../chunk-ZLLER3HP.js";export{a as processChangelog};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"../../chunk-
|
|
1
|
+
import{a}from"../../chunk-V5IVQS7L.js";import"../../chunk-A4OIPUKP.js";import"../../chunk-KAWNGQS2.js";import"../../chunk-CDY7TQFZ.js";import"../../chunk-K25S2MGU.js";import"../../chunk-63FTASVC.js";import"../../chunk-HMMO27U4.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-
|
|
1
|
+
import{a}from"../../chunk-QAMTNSL4.js";import"../../chunk-MDPN46EY.js";import"../../chunk-5RBLIVBF.js";import"../../chunk-A4OIPUKP.js";import"../../chunk-5DIOZDDZ.js";import"../../chunk-N7ODX6PO.js";import"../../chunk-ZLLER3HP.js";export{a as processRunCleanup};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"../../chunk-
|
|
1
|
+
import{a}from"../../chunk-IDWL4XOV.js";import"../../chunk-A4OIPUKP.js";import"../../chunk-SMGSLY5N.js";import"../../chunk-PJ3WHQ67.js";import"../../chunk-N7ODX6PO.js";import"../../chunk-ZLLER3HP.js";export{a as processSessionGoal};
|
package/dist/lib/hooks-config.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{A,B,C,D,E,F,G,H,I,J,K,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}from"../chunk-
|
|
1
|
+
import{A,B,C,D,E,F,G,H,I,J,K,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}from"../chunk-VLXCQ2DC.js";import"../chunk-I2DZGJRR.js";import"../chunk-ZLLER3HP.js";export{j as RULEMETRIC_NO_PROXY,k as claudeSettingsInstallPath,o as cleanClaudeSettingsFiles,a as detectInstalledTools,G as generateAntigravityHooksConfig,d as generateClaudeCodeHooksConfig,c as generateCopilotHooksConfig,b as generateCursorHooksConfig,D as getCursorUserSettingsPath,A as getVSCodeUserSettingsPath,h as hasRulemetricClaudeHooks,y as installMacOSProxyEnv,g as mergeClaudeCodeHooks,n as migrateSharedClaudeSettings,e as readClaudeSettings,J as removeAntigravityHooks,K as removeAntigravityUserHooks,i as removeClaudeCodeHooks,x as removeCopilotHooks,s as removeCursorHooks,t as removeCursorUserHooks,F as removeCursorUserProxyConfig,m as removeRulemetricMachineState,l as removeRulemetricProxyEnv,w as removeVSCodeProxyConfig,C as removeVSCodeUserProxyConfig,z as uninstallMacOSProxyEnv,H as writeAntigravityHooks,I as writeAntigravityUserHooks,f as writeClaudeSettingsWithBackup,r as writeCopilotHooks,p as writeCursorHooks,u as writeCursorProxyConfig,q as writeCursorUserHooks,E as writeCursorUserProxyConfig,v as writeVSCodeProxyConfig,B as writeVSCodeUserProxyConfig};
|
package/dist/lib/manual-tasks.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as l}from"../chunk-
|
|
1
|
+
import{a as l}from"../chunk-WJA34DI7.js";import"../chunk-N7TGRFVZ.js";import{a as u}from"../chunk-UF6US7VU.js";import{a as g}from"../chunk-MSTF7A7D.js";import"../chunk-ZL4MZMUK.js";import"../chunk-A4OIPUKP.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 +1 @@
|
|
|
1
|
-
import{a,b,c}from"../chunk-
|
|
1
|
+
import{a,b,c}from"../chunk-C7L7HKVW.js";import"../chunk-63FTASVC.js";import"../chunk-ZLLER3HP.js";export{b as buildVersionVerdict,c as formatVersionVerdict,a as pairVersionResults};
|
package/dist/lib/setup-steps.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b,c,d,e,f,g,h,i,j}from"../chunk-
|
|
1
|
+
import{a,b,c,d,e,f,g,h,i,j}from"../chunk-YSOT3ITX.js";import"../chunk-VLXCQ2DC.js";import"../chunk-I2DZGJRR.js";import"../chunk-MVM6OGAF.js";import"../chunk-KKDHD4XA.js";import"../chunk-SZ62CP55.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 ALL_STEP_IDS,a as CORE_STEP_IDS,b as OPTIONAL_STEP_IDS,g as STEPS,j as computeStatus,d as defaultContext,h as getStep,i as isStepId,e as maskToken,f as renderDiff};
|
package/oclif.manifest.json
CHANGED
|
@@ -571,6 +571,16 @@
|
|
|
571
571
|
"hasDynamicHelp": false,
|
|
572
572
|
"multiple": false,
|
|
573
573
|
"type": "option"
|
|
574
|
+
},
|
|
575
|
+
"api-key": {
|
|
576
|
+
"description": "Authenticate with an API key from https://rulemetric.com/connect (required for Google/GitHub sign-ins, which have no password)",
|
|
577
|
+
"exclusive": [
|
|
578
|
+
"password"
|
|
579
|
+
],
|
|
580
|
+
"name": "api-key",
|
|
581
|
+
"hasDynamicHelp": false,
|
|
582
|
+
"multiple": false,
|
|
583
|
+
"type": "option"
|
|
574
584
|
}
|
|
575
585
|
},
|
|
576
586
|
"hasDynamicHelp": false,
|
|
@@ -3670,7 +3680,8 @@
|
|
|
3670
3680
|
"description": "List captured sessions",
|
|
3671
3681
|
"examples": [
|
|
3672
3682
|
"<%= config.bin %> sessions list",
|
|
3673
|
-
"<%= config.bin %> sessions list --tool claude_code"
|
|
3683
|
+
"<%= config.bin %> sessions list --tool claude_code",
|
|
3684
|
+
"<%= config.bin %> sessions list --tool codex"
|
|
3674
3685
|
],
|
|
3675
3686
|
"flags": {
|
|
3676
3687
|
"api-url": {
|
|
@@ -3683,7 +3694,7 @@
|
|
|
3683
3694
|
"type": "option"
|
|
3684
3695
|
},
|
|
3685
3696
|
"tool": {
|
|
3686
|
-
"description": "Filter by tool (claude_code, cursor, vscode_copilot)",
|
|
3697
|
+
"description": "Filter by tool (claude_code, cursor, vscode_copilot, copilot_agent, rulemetric_mcp, codex, pi, opencode, antigravity)",
|
|
3687
3698
|
"name": "tool",
|
|
3688
3699
|
"hasDynamicHelp": false,
|
|
3689
3700
|
"multiple": false,
|
|
@@ -4323,5 +4334,5 @@
|
|
|
4323
4334
|
]
|
|
4324
4335
|
}
|
|
4325
4336
|
},
|
|
4326
|
-
"version": "0.7.
|
|
4337
|
+
"version": "0.7.31"
|
|
4327
4338
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rulemetric/cli",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.31",
|
|
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.
|
|
78
|
-
"@rulemetric/skills-registry": "0.7.
|
|
79
|
-
"@rulemetric/proxy": "0.7.
|
|
77
|
+
"@rulemetric/hooks": "0.7.31",
|
|
78
|
+
"@rulemetric/skills-registry": "0.7.31",
|
|
79
|
+
"@rulemetric/proxy": "0.7.31"
|
|
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,10 +95,10 @@
|
|
|
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
98
|
"@rulemetric/db": "0.0.1",
|
|
100
|
-
"@rulemetric/
|
|
99
|
+
"@rulemetric/core": "0.0.1",
|
|
101
100
|
"@rulemetric/effectiveness": "0.0.1",
|
|
101
|
+
"@rulemetric/email": "0.0.1",
|
|
102
102
|
"@rulemetric/session": "0.2.1",
|
|
103
103
|
"@rulemetric/telemetry": "0.0.1",
|
|
104
104
|
"@rulemetric/typescript-config": "0.0.0"
|
package/dist/chunk-2JRDG4LJ.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import{f as x}from"./chunk-I2DZGJRR.js";import{a as r}from"./chunk-ZLLER3HP.js";import{execSync as h}from"node:child_process";import{existsSync as c,mkdirSync as y,readFileSync as p,writeFileSync as a,unlinkSync as S,copyFileSync as $}from"node:fs";import{homedir as d}from"node:os";import{join as i,dirname as N}from"node:path";function q(e){let t=["claude_code"];return c(i(e,".cursor"))&&t.push("cursor"),c(i(e,".github"))&&t.push("copilot_agent"),c(i(e,".agents"))&&t.push("antigravity"),t}r(q,"detectInstalledTools");function U(e){let t=e?`PATH="${e}:$PATH" `:"",o=r(n=>({command:`${t}rulemetric hooks run ${n}`}),"cmd");return{version:1,hooks:{sessionStart:[o("session-start")],beforeSubmitPrompt:[o("user-prompt")],afterFileEdit:[o("post-tool-use")],beforeShellExecution:[o("post-tool-use")],afterShellExecution:[o("post-tool-use")],beforeMCPExecution:[o("post-tool-use")],afterMCPExecution:[o("post-tool-use")],afterAgentResponse:[o("assistant-response")],stop:[o("post-tool-use")],sessionEnd:[o("session-end")]}}}r(U,"generateCursorHooksConfig");function L(e){let t=e?`PATH="${e}:$PATH" `:"",o=r(n=>({type:"command",bash:`${t}rulemetric hooks run ${n}`}),"cmd");return{version:1,hooks:{sessionStart:[o("session-start")],userPromptSubmitted:[o("user-prompt")],postToolUse:[o("post-tool-use")],sessionEnd:[o("session-end")]}}}r(L,"generateCopilotHooksConfig");function B(e){let t=e?`PATH="${e}:$PATH" `:"",o=r(n=>({type:"command",command:`${t}rulemetric hooks run ${n}`}),"mk");return{SessionStart:[{hooks:[o("session-start")]}],UserPromptSubmit:[{hooks:[o("user-prompt")]}],PostToolUse:[{matcher:".*",hooks:[o("post-tool-use")]}],SessionEnd:[{hooks:[o("session-end")]}]}}r(B,"generateClaudeCodeHooksConfig");function J(e){if(!c(e))return{settings:{},recoveredBackup:null};let t=p(e,"utf-8");try{return{settings:JSON.parse(t),recoveredBackup:null}}catch{let o=`${e}.corrupt.bak`;return a(o,t),{settings:{},recoveredBackup:o}}}r(J,"readClaudeSettings");function b(e,t){y(N(e),{recursive:!0});let o=null;return c(e)&&(o=`${e}.bak`,$(e,o)),a(e,JSON.stringify(t,null,2)+`
|
|
2
|
-
`),{backupPath:o}}r(b,"writeClaudeSettingsWithBackup");function k(e){if(!c(e))return{};let t=p(e,"utf-8");try{return JSON.parse(t)}catch{try{a(`${e}.corrupt.bak`,t)}catch{}return null}}r(k,"readMergeableJson");function Q(e,t){let o=B(t),n=e.hooks??{};for(let[s,u]of Object.entries(o)){let l=n[s]??[];l.some(m=>m?.hooks?.some(f=>typeof f?.command=="string"&&f.command.includes("rulemetric")))||(n[s]=[...l,...u])}e.hooks=n}r(Q,"mergeClaudeCodeHooks");function Z(e){if(!e.hooks||typeof e.hooks!="object")return!1;let t=e.hooks;return Object.values(t).some(o=>Array.isArray(o)&&o.some(n=>n?.hooks?.some(s=>typeof s?.command=="string"&&s.command.includes("rulemetric"))))}r(Z,"hasRulemetricClaudeHooks");function D(e){if(!e.hooks||typeof e.hooks!="object")return!1;let t=e.hooks,o=0;for(let n of Object.keys(t)){let s=t[n];if(!Array.isArray(s))continue;let u=s.filter(l=>{let g=l?.hooks?.some(m=>typeof m?.command=="string"&&m.command.includes("rulemetric"));return g&&(o+=1),!g});u.length===0?delete t[n]:t[n]=u}return Object.keys(t).length===0&&delete e.hooks,o>0}r(D,"removeClaudeCodeHooks");var X="localhost,127.0.0.1,*.supabase.co,*.supabase.in";function tt(e,t){return i(e,t?"settings.json":"settings.local.json")}r(tt,"claudeSettingsInstallPath");function M(e,t){let o=e.env;if(!o||typeof o!="object")return!1;let n=!1,s=o.HTTPS_PROXY;(s===`http://localhost:${t}`||s===`http://127.0.0.1:${t}`)&&(delete o.HTTPS_PROXY,n=!0),o.NO_PROXY===X&&(delete o.NO_PROXY,n=!0);let u=o.NODE_EXTRA_CA_CERTS;return typeof u=="string"&&u.includes(".mitmproxy")&&u.endsWith("mitmproxy-ca-cert.pem")&&(delete o.NODE_EXTRA_CA_CERTS,n=!0),n&&Object.keys(o).length===0&&delete e.env,n}r(M,"removeRulemetricProxyEnv");function C(e,t){let o=D(e),n=M(e,t),s=x(e);return{removedHooks:o,removedProxyEnv:n,removedStatusline:s,removed:o||n||s}}r(C,"removeRulemetricMachineState");function et(e,t){let o={migrated:!1,backupPath:null,removedHooks:!1,removedProxyEnv:!1,removedStatusline:!1,removed:!1};if(!c(e))return o;let n;try{n=JSON.parse(p(e,"utf-8"))}catch{return o}let s=C(n,t);if(!s.removed)return o;let{backupPath:u}=b(e,n);return{...s,migrated:!0,backupPath:u}}r(et,"migrateSharedClaudeSettings");function ot(e,t){let o=[];for(let n of["settings.json","settings.local.json"]){let s=i(e,n);if(!c(s))continue;let{settings:u,recoveredBackup:l}=J(s),g=C(u,t);g.removed&&b(s,u),o.push({...g,configPath:s,fileName:n,recoveredBackup:l,changed:g.removed})}return o}r(ot,"cleanClaudeSettingsFiles");function R(e,t){if(!c(e))return null;let o=i(e,"hooks.json"),n=U(t),s=k(o);if(s===null)return null;let u=s,l={...u.hooks??{}},g=r(f=>typeof f=="object"&&f!==null&&"command"in f&&typeof f.command=="string"&&f.command.includes("rulemetric"),"isRulemetricHook");for(let[f,w]of Object.entries(n.hooks)){let j=(l[f]??[]).filter(_=>!g(_));l[f]=[...j,...w]}let m={version:u.version??n.version,hooks:l};return a(o,JSON.stringify(m,null,2)+`
|
|
3
|
-
`),o}r(R,"writeCursorHooksToDir");function nt(e,t){return R(i(e,".cursor"),t)}r(nt,"writeCursorHooks");function rt(e,t=d()){let o=i(t,".cursor");return c(o)?R(o,e):null}r(rt,"writeCursorUserHooks");function st(e,t){let o=i(e,".github");if(!c(o))return null;let n=i(o,"hooks");y(n,{recursive:!0});let s=i(n,"rulemetric.json"),u=L(t);return a(s,JSON.stringify(u,null,2)+`
|
|
4
|
-
`),s}r(st,"writeCopilotHooks");function A(e){if(!c(e))return!1;let t;try{t=JSON.parse(p(e,"utf-8"))}catch{return!1}if(!t.hooks)return!1;let o=!1;for(let[n,s]of Object.entries(t.hooks)){let u=s.filter(l=>{if(typeof l!="object"||l===null||!("command"in l))return!0;let g=l.command;return typeof g=="string"&&g.includes("rulemetric")?(o=!0,!1):!0});u.length===0?delete t.hooks[n]:t.hooks[n]=u}return o&&a(e,JSON.stringify(t,null,2)+`
|
|
5
|
-
`),o}r(A,"removeCursorHooksFromFile");function it(e){return A(i(e,".cursor","hooks.json"))}r(it,"removeCursorHooks");function ut(){return A(i(d(),".cursor","hooks.json"))}r(ut,"removeCursorUserHooks");function ct(e,t,o){let n=i(e,".cursor");if(!c(n))return!1;let s=i(n,"settings.json"),u=k(s);return u===null?!1:(u["http.proxy"]=`http://localhost:${t}`,u["http.proxyStrictSSL"]=c(o),a(s,JSON.stringify(u,null,2)+`
|
|
6
|
-
`),!0)}r(ct,"writeCursorProxyConfig");function lt(e,t,o){let n=i(e,".vscode");if(!c(n))return!1;let s=i(n,"settings.json"),u=k(s);if(u===null)return!1;u["http.proxy"]=`http://localhost:${t}`,u["http.proxyStrictSSL"]=c(o);let l=u["github.copilot.advanced"]??{};return l["debug.overrideProxyUrl"]=`http://localhost:${t}`,u["github.copilot.advanced"]=l,a(s,JSON.stringify(u,null,2)+`
|
|
7
|
-
`),!0}r(lt,"writeVSCodeProxyConfig");function at(e){let t=i(e,".vscode","settings.json");if(!c(t))return!1;let o;try{o=JSON.parse(p(t,"utf-8"))}catch{return!1}let n=!1;o["http.proxy"]&&(delete o["http.proxy"],delete o["http.proxyStrictSSL"],n=!0);let s=o["github.copilot.advanced"];return s?.["debug.overrideProxyUrl"]&&(delete s["debug.overrideProxyUrl"],Object.keys(s).length===0&&delete o["github.copilot.advanced"],n=!0),n&&a(t,JSON.stringify(o,null,2)+`
|
|
8
|
-
`),n}r(at,"removeVSCodeProxyConfig");function gt(e){let t=i(e,".github","hooks","rulemetric.json");return c(t)?(S(t),!0):!1}r(gt,"removeCopilotHooks");var H="com.rulemetric.env";function P(){return i(d(),"Library","LaunchAgents",`${H}.plist`)}r(P,"getLaunchAgentPath");function ft(e,t){if(process.platform!=="darwin")return!1;let o=`http://localhost:${e}`;try{h(`launchctl setenv HTTPS_PROXY ${o}`,{stdio:"pipe"}),c(t)&&h(`launchctl setenv NODE_EXTRA_CA_CERTS ${t}`,{stdio:"pipe"})}catch{return!1}let n=P(),s=i(d(),"Library","LaunchAgents");y(s,{recursive:!0});let u=c(t)?`launchctl setenv NODE_EXTRA_CA_CERTS ${t};`:"",l=`if nc -z -w 1 127.0.0.1 ${e} 2>/dev/null; then launchctl setenv HTTPS_PROXY ${o};${u} else launchctl unsetenv HTTPS_PROXY; launchctl unsetenv NODE_EXTRA_CA_CERTS; fi`,g=`<?xml version="1.0" encoding="UTF-8"?>
|
|
9
|
-
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
|
|
10
|
-
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
11
|
-
<plist version="1.0">
|
|
12
|
-
<dict>
|
|
13
|
-
<key>Label</key>
|
|
14
|
-
<string>${H}</string>
|
|
15
|
-
<key>ProgramArguments</key>
|
|
16
|
-
<array>
|
|
17
|
-
<string>/bin/sh</string>
|
|
18
|
-
<string>-c</string>
|
|
19
|
-
<string>${l}</string>
|
|
20
|
-
</array>
|
|
21
|
-
<key>RunAtLoad</key>
|
|
22
|
-
<true/>
|
|
23
|
-
</dict>
|
|
24
|
-
</plist>
|
|
25
|
-
`;return a(n,g),!0}r(ft,"installMacOSProxyEnv");function dt(){if(process.platform!=="darwin")return!1;let e=!1;try{h("launchctl unsetenv HTTPS_PROXY",{stdio:"pipe"}),h("launchctl unsetenv NODE_EXTRA_CA_CERTS",{stdio:"pipe"})}catch{}let t=P();return c(t)&&(S(t),e=!0),e}r(dt,"uninstallMacOSProxyEnv");function O(){return process.platform==="darwin"?i(d(),"Library","Application Support","Code","User","settings.json"):process.platform==="win32"?i(process.env.APPDATA??"","Code","User","settings.json"):i(d(),".config","Code","User","settings.json")}r(O,"getVSCodeUserSettingsPath");function pt(e){let t=O();if(!c(i(t,"..")))return!1;let o=k(t);return o===null||o["http.proxy"]&&!o["http.proxy"].includes("localhost")?!1:(o["http.proxy"]=`http://localhost:${e}`,o["http.proxyStrictSSL"]=!1,a(t,JSON.stringify(o,null,2)+`
|
|
26
|
-
`),!0)}r(pt,"writeVSCodeUserProxyConfig");function mt(){let e=O();if(!c(e))return!1;let t;try{t=JSON.parse(p(e,"utf-8"))}catch{return!1}return t["http.proxy"]?.includes("localhost")?(delete t["http.proxy"],delete t["http.proxyStrictSSL"],a(e,JSON.stringify(t,null,2)+`
|
|
27
|
-
`),!0):!1}r(mt,"removeVSCodeUserProxyConfig");function T(){return process.platform==="darwin"?i(d(),"Library","Application Support","Cursor","User","settings.json"):process.platform==="win32"?i(process.env.APPDATA??"","Cursor","User","settings.json"):i(d(),".config","Cursor","User","settings.json")}r(T,"getCursorUserSettingsPath");function kt(e){let t=T();if(!c(i(t,"..")))return!1;let o=k(t);return o===null||o["http.proxy"]&&!o["http.proxy"].includes("localhost")?!1:(o["http.proxy"]=`http://localhost:${e}`,o["http.proxyStrictSSL"]=!1,a(t,JSON.stringify(o,null,2)+`
|
|
28
|
-
`),!0)}r(kt,"writeCursorUserProxyConfig");function ht(){let e=T();if(!c(e))return!1;let t;try{t=JSON.parse(p(e,"utf-8"))}catch{return!1}return t["http.proxy"]?.includes("localhost")?(delete t["http.proxy"],delete t["http.proxyStrictSSL"],a(e,JSON.stringify(t,null,2)+`
|
|
29
|
-
`),!0):!1}r(ht,"removeCursorUserProxyConfig");function F(){let e=process.execPath,t=process.argv[1];return t&&t.endsWith("run.js")?`${e} ${t}`:"rulemetric"}r(F,"getRulemetricCommand");function Y(){let e=F(),t=r(o=>({type:"command",command:`RULEMETRIC_HOOK_TOOL=antigravity ${e} hooks run ${o}`,timeout:30}),"mk");return{rulemetric:{enabled:!0,SessionStart:[{hooks:[t("session-start")]}],PostToolUse:[{matcher:".*",hooks:[t("post-tool-use")]}],SessionEnd:[{hooks:[t("session-end")]}]}}}r(Y,"generateAntigravityHooksConfig");function E(e){let t=i(e,"hooks.json"),o=k(t);if(o===null)return null;let n=Y(),s={...o,rulemetric:n.rulemetric};return y(e,{recursive:!0}),a(t,JSON.stringify(s,null,2)+`
|
|
30
|
-
`),t}r(E,"writeAntigravityHooksToDir");function yt(e){return E(i(e,".agents"))}r(yt,"writeAntigravityHooks");function vt(e=d()){let t=i(e,".gemini");return c(t)?E(i(t,"config")):null}r(vt,"writeAntigravityUserHooks");function v(e){if(!c(e))return!1;let t;try{t=JSON.parse(p(e,"utf-8"))}catch{return!1}if(!("rulemetric"in t))return!1;if(delete t.rulemetric,Object.keys(t).length===0)try{S(e)}catch{}else a(e,JSON.stringify(t,null,2)+`
|
|
31
|
-
`);return!0}r(v,"removeAntigravityHooksFromFile");function St(e){return v(i(e,".agents","hooks.json"))}r(St,"removeAntigravityHooks");function xt(){let e=v(i(d(),".gemini","config","hooks.json")),t=v(i(d(),".gemini","hooks.json"));return e||t}r(xt,"removeAntigravityUserHooks");export{q as a,U as b,L as c,B as d,J as e,b as f,Q as g,Z as h,D as i,X as j,tt as k,M as l,C as m,et as n,ot as o,nt as p,rt as q,st as r,it as s,ut as t,ct as u,lt as v,at as w,gt as x,ft as y,dt as z,O as A,pt as B,mt as C,T as D,kt as E,ht as F,Y as G,yt as H,vt as I,St as J,xt as K};
|
package/dist/chunk-KZ65LEUH.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
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};
|
package/dist/chunk-X2ILN3KP.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as r}from"./chunk-ZLLER3HP.js";function g(e,o){let t=e,i=o,n=t+i;if(n===0)return{pValue:1,nDiscordant:0};let c=Math.min(t,i),d=Math.pow(.5,n),s=d;for(let a=1;a<=c;a++)d*=(n-a+1)/a,s+=d;return{pValue:Math.min(1,2*s),nDiscordant:n}}r(g,"mcnemarExact");function w(e,o,t=10){return{sufficient:e>=t&&o>=t,minN:t,nWith:e,nWithout:o,shortfall:{with:Math.max(0,t-e),without:Math.max(0,t-o)}}}r(w,"assessSufficiency");function R(e){let o=e>>>0;return()=>{o=o+1831565813|0;let t=Math.imul(o^o>>>15,1|o);return t=t+Math.imul(t^t>>>7,61|t)^t,((t^t>>>14)>>>0)/4294967296}}r(R,"mulberry32");function b(e,o){let t=e.length;if(t===1)return e[0];let i=(t-1)*o,n=Math.floor(i),c=Math.ceil(i);return n===c?e[n]:e[n]+(i-n)*(e[c]-e[n])}r(b,"sortedQuantile");function x(e,o={}){let t=e.length;if(t===0)return{estimate:0,lower:0,upper:0,iterations:0};let i=o.iterations??1e4,n=o.ciLevel??.95,c=R(o.seed??1),d=e.reduce((u,f)=>u+f,0)/t,s=new Array(i);for(let u=0;u<i;u++){let f=0;for(let h=0;h<t;h++)f+=e[c()*t|0];s[u]=f/t}s.sort((u,f)=>u-f);let a=(1-n)/2;return{estimate:d,lower:b(s,a),upper:b(s,1-a),iterations:i}}r(x,"pairedBootstrapCI");var M=r(e=>e===0||e===1,"isBinary");function A(e,o,t){return e.every(n=>n[o]!=null&&n[t]!=null)?e.reduce((n,c)=>n+(c[o]-c[t]),0)/e.length:null}r(A,"meanPairDelta");function T(e,o={}){let t=o.baseline??"no-rule",i=o.minN??10,n=e.length,c=e.map(l=>l.withScore-l.withoutScore),d=n===0?0:c.reduce((l,m)=>l+m,0)/n,s=x(c,{seed:o.seed,iterations:o.iterations}),a={lower:s.lower,upper:s.upper},u=e.every(l=>M(l.withScore)&&M(l.withoutScore)),f=null;if(u&&n>0){let l=0,m=0;for(let p of e)p.withScore===1&&p.withoutScore===0?l++:p.withScore===0&&p.withoutScore===1&&m++;f=g(l,m).pValue}let{sufficient:h}=w(n,n,i),_=a.lower>0||a.upper<0,v={mode:"controlled",baseline:t,delta:d,ci:a,pValue:f,significant:h&&_,sufficient:h,nWith:n,nWithout:n,costDelta:A(e,"withCost","withoutCost"),latencyDelta:A(e,"withLatency","withoutLatency"),confounded:!1};return h||(v.insufficientReason=`insufficient data: need >= ${i} paired tasks per cohort, have ${n}`),v}r(T,"buildControlledVerdict");export{T as a};
|