@crewx/sdk 0.9.0-rc.56 → 0.9.0-rc.57
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/esm/index.js +1 -1
- package/dist/index.js +1 -1
- package/dist/plugins/index.js +4 -4
- package/package.json +1 -1
package/dist/esm/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import*as G from'path';import G__default,{join,resolve,dirname,isAbsolute,basename}from'path';import {fileURLToPath}from'url';import*as Ni from'fs';import {existsSync,readFileSync,readdirSync,mkdirSync,writeFileSync,renameSync,appendFileSync,promises,statSync}from'fs';import {createHash,randomUUID,randomBytes}from'crypto';import {spawn,execFile,execFileSync}from'child_process';import {StringDecoder}from'string_decoder';import {ndJsonStream,ClientSideConnection}from'@agentclientprotocol/sdk';import {load,dump}from'js-yaml';import {getEncoding}from'js-tiktoken';import {Tiktoken}from'js-tiktoken/lite';import jr from'js-tiktoken/ranks/o200k_base';import {z}from'zod';import {createRequire}from'module';import*as Oe from'handlebars';import Oe__default from'handlebars';import {readFile,access,readdir}from'fs/promises';import {EventEmitter}from'events';import {AsyncLocalStorage}from'async_hooks';import {sql,eq,desc,and,isNull,lt as lt$1,or as or$1,notLike,like,asc,inArray,gte,isNotNull,ne}from'drizzle-orm';import*as is from'os';import is__default,{homedir}from'os';import {sqliteTable,text,integer,real,index,unique,uniqueIndex,primaryKey}from'drizzle-orm/sqlite-core';import {McpServer}from'@modelcontextprotocol/sdk/server/mcp.js';import {WebStandardStreamableHTTPServerTransport}from'@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js';import {performance}from'perf_hooks';var Sr=Object.defineProperty;var Ga=Object.getOwnPropertyDescriptor;var Ka=Object.getOwnPropertyNames;var Va=Object.prototype.hasOwnProperty;var de=(n=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(n,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):n)(function(n){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+n+'" is not supported')});var M=(n,e)=>()=>(n&&(e=n(n=0)),e);var Bn=(n,e)=>{for(var t in e)Sr(n,t,{get:e[t],enumerable:true});},Ja=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Ka(e))!Va.call(n,o)&&o!==t&&Sr(n,o,{get:()=>e[o],enumerable:!(r=Ga(e,o))||r.enumerable});return n};var ks=n=>Ja(Sr({},"__esModule",{value:true}),n);var _s,Qa,y,w,p=M(()=>{_s=()=>fileURLToPath(import.meta.url),Qa=()=>G__default.dirname(_s()),y=Qa(),w=_s();});var vs,Or,xs,Mr=M(()=>{p();vs=["flagship","balanced","speed"],Or={claude:{models:[{id:"claude-fable-5",name:"Claude Fable 5",contextWindowTokens:1e6,tier:"flagship",recommended:true},{id:"claude-opus-5",name:"Claude Opus 5",contextWindowTokens:1e6,tier:"flagship",recommended:true},{id:"claude-sonnet-5",name:"Claude Sonnet 5",contextWindowTokens:1e6,tier:"balanced",recommended:true},{id:"claude-opus-4-8[1m]",name:"Claude Opus 4.8",contextWindowTokens:1e6,tier:"flagship"},{id:"claude-opus-4-7[1m]",name:"Claude Opus 4.7",contextWindowTokens:1e6,tier:"flagship"},{id:"claude-opus-4-6[1m]",name:"Claude Opus 4.6",contextWindowTokens:1e6,tier:"flagship"},{id:"claude-sonnet-4-6[1m]",name:"Claude Sonnet 4.6",contextWindowTokens:1e6,tier:"balanced"},{id:"claude-haiku-4-5",name:"Claude Haiku 4.5",contextWindowTokens:2e5,tier:"speed"}],modes:[{id:"default",name:"Default",description:"Uses Claude's default permission handling with normal approval prompts."},{id:"acceptEdits",name:"Accept Edits",description:"Allows file edits without approval; other permission checks remain in place."},{id:"plan",name:"Plan",description:"Keeps Claude in plan mode so it can inspect and propose changes without applying them."},{id:"dontAsk",name:"Don't Ask",description:"Does not ask for permissions; only pre-approved tool actions can proceed."},{id:"bypassPermissions",name:"Bypass Permissions",description:"Bypasses Claude permission checks so tools can run without approval prompts."}],effort:["low","medium","high"],modelOverrides:{"claude-fable-5":{effort:["low","medium","high","xhigh","max"],defaultEffort:"high"},"claude-opus-5":{effort:["low","medium","high","xhigh","max"],defaultEffort:"high"},"claude-sonnet-5":{effort:["low","medium","high","xhigh","max"],defaultEffort:"high"},"claude-opus-4-8[1m]":{effort:["low","medium","high","xhigh","max"],defaultEffort:"high"},"claude-opus-4-7[1m]":{effort:["low","medium","high","xhigh","max"],defaultEffort:"high"},"claude-opus-4-6[1m]":{effort:["low","medium","high","max"],defaultEffort:"high"},"claude-sonnet-4-6[1m]":{effort:["low","medium","high","max"],defaultEffort:"high"},"claude-haiku-4-5":{effort:[]}}},codex:{models:[{id:"gpt-5.6-sol",name:"GPT-5.6 Sol",contextWindowTokens:105e4,tier:"flagship",recommended:true},{id:"gpt-5.6-terra",name:"GPT-5.6 Terra",contextWindowTokens:105e4,tier:"balanced",recommended:true},{id:"gpt-5.6-luna",name:"GPT-5.6 Luna",contextWindowTokens:105e4,tier:"speed",recommended:true},{id:"gpt-5.5",name:"GPT-5.5",contextWindowTokens:105e4,tier:"flagship"},{id:"gpt-5.4",name:"GPT-5.4",contextWindowTokens:105e4,tier:"flagship"},{id:"gpt-5.4-mini",name:"GPT-5.4 Mini",contextWindowTokens:4e5,tier:"speed"},{id:"gpt-5.3-codex",name:"GPT-5.3 Codex",contextWindowTokens:4e5,tier:"flagship"},{id:"gpt-5.3-codex-spark",name:"GPT-5.3 Codex Spark",contextWindowTokens:128e3,tier:"speed"}],modes:[{id:"agent",name:"Agent",description:"Uses the workspace-write sandbox; can read and modify workspace files without full machine access."},{id:"read-only",name:"Read Only",description:"Uses the read-only sandbox; can inspect files but cannot write to the workspace."},{id:"plan",name:"Plan",description:"Uses the read-only sandbox for planning and inspection; cannot write to the workspace."},{id:"agent-full-access",name:"Agent Full Access",description:"Bypasses approvals and the sandbox; can access and modify files beyond the workspace."},{id:"yolo",name:"YOLO",description:"Bypasses approvals and the sandbox for unrestricted execution and full filesystem access."}],effort:["minimal","low","medium","high"],modelOverrides:{"gpt-5.6-sol":{effort:["none","low","medium","high","xhigh","max"],defaultEffort:"xhigh"},"gpt-5.6-terra":{effort:["none","low","medium","high","xhigh","max"],defaultEffort:"high"},"gpt-5.6-luna":{effort:["none","low","medium","high","xhigh","max"],defaultEffort:"high"},"gpt-5.5":{effort:["minimal","low","medium","high","xhigh"],defaultEffort:"high"}}},opencode:{models:[],modes:[{id:"plan",name:"Plan",description:"Uses the plan agent without --auto; planning follows standard approval behavior."},{id:"plan-auto",name:"Plan \xB7 Auto",description:"Uses the plan agent with --auto; planning uses automatic approvals."},{id:"build",name:"Build",description:"Uses the build agent without --auto; work follows standard approval behavior."},{id:"build-auto",name:"Build \xB7 Auto",description:"Uses the build agent with --auto; work uses automatic approvals."}],effort:[],modelOverrides:{}},copilot:{models:[{id:"auto",name:"Auto"},{id:"claude-sonnet-5",name:"Claude Sonnet 5",contextWindowTokens:1e6,tier:"balanced"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6",contextWindowTokens:1e6,tier:"balanced"},{id:"gpt-5.5",name:"GPT-5.5",contextWindowTokens:105e4,tier:"flagship"},{id:"gpt-5.4",name:"GPT-5.4",contextWindowTokens:105e4,tier:"flagship"},{id:"gemini-3.1-pro",name:"Gemini 3.1 Pro",contextWindowTokens:1048576,tier:"flagship"}],modes:[{id:"interactive",name:"Interactive",description:"Passes --mode interactive; tool access follows Copilot's interactive mode behavior."},{id:"plan",name:"Plan",description:"Passes --mode plan; planning and permission behavior follow Copilot's plan mode."},{id:"autopilot",name:"Autopilot",description:"Passes --mode autopilot; execution behavior follows Copilot's autonomous mode."}],effort:["none","low","medium","high","xhigh","max"],modelOverrides:{}},antigravity:{models:[{id:"gemini-3.6-flash-high",name:"Gemini 3.6 Flash (High)",contextWindowTokens:1048576,tier:"balanced"},{id:"gemini-3.6-flash-medium",name:"Gemini 3.6 Flash (Medium)",contextWindowTokens:1048576,tier:"balanced"},{id:"gemini-3.6-flash-low",name:"Gemini 3.6 Flash (Low)",contextWindowTokens:1048576,tier:"balanced"},{id:"Gemini 3.5 Flash (Medium)",name:"Gemini 3.5 Flash (Medium)",contextWindowTokens:1048576,tier:"balanced"},{id:"Gemini 3.5 Flash (High)",name:"Gemini 3.5 Flash (High)",contextWindowTokens:1048576,tier:"balanced"},{id:"Gemini 3.5 Flash (Low)",name:"Gemini 3.5 Flash (Low)",contextWindowTokens:1048576,tier:"balanced"},{id:"Gemini 3.1 Pro (Low)",name:"Gemini 3.1 Pro (Low)",contextWindowTokens:1048576,tier:"flagship"},{id:"Gemini 3.1 Pro (High)",name:"Gemini 3.1 Pro (High)",contextWindowTokens:1048576,tier:"flagship"},{id:"Claude Sonnet 4.6 (Thinking)",name:"Claude Sonnet 4.6 (Thinking)",contextWindowTokens:1e6,tier:"balanced"},{id:"Claude Opus 4.6 (Thinking)",name:"Claude Opus 4.6 (Thinking)",contextWindowTokens:1e6,tier:"flagship"},{id:"GPT-OSS 120B (Medium)",name:"GPT-OSS 120B (Medium)",contextWindowTokens:128e3,tier:"balanced"}],modes:[],effort:[],modelOverrides:{}},grok:{models:[{id:"grok-4.6",name:"Grok 4.6",contextWindowTokens:5e5,tier:"flagship",recommended:true},{id:"grok-4.5",name:"Grok 4.5",contextWindowTokens:5e5,tier:"flagship"}],modes:[{id:"agent",name:"Agent",description:"Automatically approves tool calls inside the workspace sandbox; it cannot access the rest of the machine."},{id:"read-only",name:"Read Only",description:"Uses a read-only sandbox and plan permission mode; it can inspect files but cannot modify the workspace."},{id:"plan",name:"Plan",description:"Uses plan permission mode with a read-only sandbox; it can inspect and propose work but cannot modify files."},{id:"agent-full-access",name:"Agent Full Access",description:"Automatically approves tool calls with the sandbox disabled; it can access and modify files across the machine."},{id:"yolo",name:"YOLO",description:"Automatically approves tool calls with the sandbox disabled; it can access and modify files across the machine."}],effort:["low","medium","high"],modelOverrides:{"grok-4.6":{effort:["low","medium","high","xhigh"],defaultEffort:"high"},"grok-4.5":{effort:["low","medium","high"],defaultEffort:"high"}}}},xs={version:1,providers:{"cli/codex":{model:"gpt-5.6-sol",query:{mode:"agent",effort:"high"},execute:{mode:"agent-full-access",effort:"xhigh"}},"cli/claude":{model:"claude-opus-5",query:{mode:"default",effort:"high"},execute:{mode:"bypassPermissions",effort:"xhigh"}},"cli/grok":{model:"grok-4.6",query:{mode:"agent",effort:"high"},execute:{mode:"agent-full-access",effort:"xhigh"}}}},Object.fromEntries(Object.entries(Or).map(([n,e])=>[n,e.models]));});var dt,Nr,Es,Dr=M(()=>{p();dt={"claude-fable-5":{input:10,cachedInput:1,output:50},"claude-opus-5":{input:5,cachedInput:.5,output:25},"claude-opus-4-8":{input:5,cachedInput:.5,output:25},"claude-opus-4-7":{input:5,cachedInput:.5,output:25},"claude-opus-4-6":{input:5,cachedInput:.5,output:25},"claude-sonnet-5":{input:2,cachedInput:.2,output:10},"claude-sonnet-4-6":{input:3,cachedInput:.3,output:15},"claude-haiku-4-5":{input:1,cachedInput:.1,output:5},"gpt-5.6-sol":{input:5,cachedInput:.5,output:30},"gpt-5.6-terra":{input:2,cachedInput:.2,output:12},"gpt-5.6-luna":{input:.2,cachedInput:.02,output:1.2},"gpt-5.5":{input:5,cachedInput:.5,output:30},"gpt-5.4":{input:2.5,cachedInput:.25,output:15},"gpt-5.4-mini":{input:.75,cachedInput:.075,output:4.5},"gpt-5.3-codex":{input:1.75,cachedInput:.175,output:14},"gpt-5-mini":{input:.4,cachedInput:.1,output:1.6},"gpt-4.1":{input:2,cachedInput:.5,output:8},"gpt-4o":{input:2.5,cachedInput:1.25,output:10},"glm-5.2":{input:1.4,cachedInput:.26,output:4.4},"glm-5.1":{input:1.4,cachedInput:.26,output:4.4},"gemini-3.6-flash":{input:1.5,cachedInput:.15,output:7.5},"grok-4.6":{input:2,cachedInput:.5,output:6},"grok-4.5":{input:2,cachedInput:.3,output:6}},Nr=new Set(["gpt-5.3-codex-spark"]),Es=new Set(["Claude Opus 4.6 (Thinking)","Claude Sonnet 4.6 (Thinking)","GPT-OSS 120B (Medium)","Gemini 3.1 Pro (High)","Gemini 3.1 Pro (Low)","Gemini 3.5 Flash (High)","Gemini 3.5 Flash (Low)","Gemini 3.5 Flash (Medium)","auto","claude-fable-5","claude-haiku-4-5","claude-opus-4-6[1m]","claude-opus-4-7[1m]","claude-opus-4-8[1m]","claude-opus-5","claude-sonnet-4-6","claude-sonnet-4-6[1m]","claude-sonnet-5","gemini-3.1-pro","gemini-3.6-flash-high","gemini-3.6-flash-low","gemini-3.6-flash-medium","gpt-5.3-codex","gpt-5.3-codex-spark","gpt-5.4","gpt-5.4-mini","gpt-5.5","gpt-5.6-luna","gpt-5.6-sol","gpt-5.6-terra","grok-4.5","grok-4.6"]);});function As(n){Zt=n;}function Rs(n){Ts=Object.fromEntries(Object.entries(n).map(([e,t])=>[e,{...t}]));}function Lr(n){let e=n.toLowerCase().trim();e=e.replace(/\[[^\]]*\]$/g,"");let t=e.lastIndexOf("/");return t>=0&&(e=e.slice(t+1)),e=e.replace(/-\d{8}$/,""),e}function td(n){if(!n)return;let e="inputPerMillionTokensUsd"in n?n.inputPerMillionTokensUsd:n.input,t="outputPerMillionTokensUsd"in n?n.outputPerMillionTokensUsd:n.output;if(!(!Number.isFinite(e)||e<=0||!Number.isFinite(t)||t<=0))return {inputPerMillionTokensUsd:e,outputPerMillionTokensUsd:t}}function bs(n){if(!n)return;let e=n.replace(/\[[^\]]*\]$/g,"");return td(Ts[e]??dt[e])}function nd(n){if(!n)return Qt;let e=Lr(n),t=ed[e];if(t)return Zt[t]??dt[t]??Qt;if(Zt[e])return Zt[e];if(dt[e])return dt[e];if(Nr.has(e))return console.warn(`[pricing] unpublished model pricing: ${n}, cost_usd=0`),Qt;if(Es.has(e))return console.warn(`[pricing] missing catalog pricing: ${n}, cost_usd=0`),Qt;let r={...dt,...Zt};for(let o of Object.keys(r))if(e.includes(o))return r[o];return console.warn(`[pricing] Unknown model: ${n}, cost_usd=0`),Qt}function rd(n,e,t,r=0,o){let s=nd(t),i=Math.min(r,n),d=(n-i)*s.input/1e6,l=i*s.cachedInput/1e6,c=e*s.output/1e6;return d+l+c}function Ps(n,e,t,r,o,s){return n&&n>0?n:!e&&!t?0:rd(e??0,t??0,o,r??0)}var ed,Qt,Zt,Ts,Mt=M(()=>{p();Dr();Dr();ed={opus:"claude-opus-4-8",sonnet:"claude-sonnet-4-6",haiku:"claude-haiku-4-5","codex-mini":"gpt-5.3-codex",codex:"gpt-5.3-codex"},Qt={input:0,cachedInput:0,output:0},Zt={},Ts={};});function en(n){return id.get(n)??n}var od,sd,Cs,id,Fn=M(()=>{p();od="claude-opus-4-8",sd="claude-opus-4-8[1m]",Cs=[{baseModelId:"claude-opus-4-8",catalogModelId:"claude-opus-4-8[1m]"},{baseModelId:"claude-opus-4-7",catalogModelId:"claude-opus-4-7[1m]"},{baseModelId:"claude-opus-4-6",catalogModelId:"claude-opus-4-6[1m]"},{baseModelId:"claude-sonnet-4-6",catalogModelId:"claude-sonnet-4-6[1m]"}],id=new Map(Cs.map(({baseModelId:n,catalogModelId:e})=>[n,e]));});function Ss(){return {models:[],modes:[],effort:[],modelOverrides:{}}}function ad(n){return Array.isArray(n)?{models:n,modes:[],effort:[],modelOverrides:{}}:n?{models:n.models??[],modes:n.modes??[],effort:n.effort??[],modelOverrides:n.modelOverrides??{}}:Ss()}function Ur(n){$r=Object.fromEntries(Object.entries(n).map(([e,t])=>[e,ad(t)]));}function dd(){$r={};}function tn(n){Is={...n};}function De(n){return Le(n).models}function Le(n){return $r[n]??Or[n]??Ss()}function Wn(n){return Is[n]??xs.providers[n]}function nn(n){return Le(n).modes}function lt(n,e){let t=Le(n);return e?t.modelOverrides[en(e)]?.effort??t.effort:t.effort}function Os(n){return Le(n).modelOverrides}function rn(){return De("claude")}function Br(){return De("codex")}function Fr(){return De("copilot")}function Wr(){return De("antigravity")}function on(n,e){let t=new Map;for(let r of [...n,...e]){let o=t.get(r.id);if(!o){let{apiPricing:s,recommended:i,...a}=r;t.set(r.id,{...a,...i===true?{recommended:true}:{},...s!=null?{apiPricing:{...s}}:{}});continue}!o.name&&r.name&&(o.name=r.name),o.description==null&&r.description!=null&&(o.description=r.description),o.contextWindowTokens==null&&r.contextWindowTokens!=null&&(o.contextWindowTokens=r.contextWindowTokens),o.tier==null&&r.tier!=null&&(o.tier=r.tier),o.recommended!==true&&r.recommended===true&&(o.recommended=true),o.apiPricing==null&&r.apiPricing!=null&&(o.apiPricing={...r.apiPricing});}return Array.from(t.values())}function sn(n){return n.map(e=>{let{apiPricing:t,...r}=e,o=bs(e.id);return o?{...r,apiPricing:o}:r})}var $r,Is,ge=M(()=>{p();Mr();Mt();Fn();$r={},Is={};});function Yn(n){return typeof n!="string"?void 0:n.trim()||void 0}function Qn(n){return Yn(n)?.toLowerCase()??""}function Dt(n){try{return statSync(n).isFile()}catch{return false}}function Bd(n,e){if(n===e)return true;let t=G__default.relative(n,e);return t!==""&&!t.startsWith("..")&&!G__default.isAbsolute(t)}function Fd(n,e){if(G__default.basename(n)!==".bin")return false;let t=G__default.dirname(n);if(G__default.basename(t)!=="node_modules")return false;let r=G__default.dirname(t);return Bd(r,e)}function an(n,e={}){if(n.includes("/")||n.includes("\\")||G__default.isAbsolute(n))return n;let t=e.platform??process.platform,r=e.env??process.env,o=G__default.resolve(e.cwd??process.cwd()),s=(e.resolution??"global_first")==="global_first",i=r.PATH??r.Path??process.env.PATH??process.env.Path??"",a=t==="win32"?";":":",d=i.split(a).map(g=>g.trim()).filter(Boolean),l=G__default.extname(n).length>0,c=r.PATHEXT??r.Pathext??process.env.PATHEXT??process.env.Pathext??".EXE;.CMD;.BAT;.COM",f=t==="win32"?l?[""]:c.split(";").map(g=>g.trim()).filter(Boolean).map(g=>g.startsWith(".")?g:`.${g}`):[""];for(let g of d){let m=G__default.resolve(o,g);if(!(s&&Fd(m,o)))for(let v of f){let h=Qn(v),x=v.toUpperCase();for(let k of [v,h,x]){let _=G__default.join(m,`${n}${k}`);if(Dt(_))return _}}}return n}function Wd(n,e){return an(n,{env:e,platform:"win32",resolution:"local_first"})}function jd(n){if(!Dt(n))return null;try{let e=readFileSync(n,"utf8"),t=G__default.dirname(n),r=[];for(let a of e.matchAll(/"([^"\r\n]*)"/g)){let c=(a[1]??"").match(/%~?dp0%?\s*[\\/]*(.*)$/i)?.[1]?.trim();if(!c)continue;let f=c.replace(/[\\/]+/g,G__default.sep).replace(/^[\\/]+/,""),g=G__default.resolve(t,f);Dt(g)&&r.push(g);}let o=[],s=new Map;for(let a of e.matchAll(/SET\s+"(\w+)=%~?dp0%?[\\/]?([^"]+)"/gi)){let d=a[1].toUpperCase(),l=a[2].trim().replace(/[\\/]+/g,G__default.sep).replace(/^[\\/]+/,"");s.set(d,G__default.resolve(t,l));}for(let a of e.split(/\r?\n/))if(a.includes("%*"))for(let d of a.matchAll(/"%(\w+)%"/g)){let l=s.get(d[1].toUpperCase());l&&Dt(l)&&o.push(l);}let i=a=>a.find(d=>{let l=Qn(G__default.basename(d));return l!=="node.exe"&&l!=="node"})??null;return i(o)??i(r)}catch{return null}}function Hd(n,e){if(typeof e=="string")return Yn(e)||null;if(!e||typeof e!="object")return null;if(n){let t=e[n],r=typeof t=="string"?Yn(t):void 0;if(r)return r}for(let t of Object.values(e)){let r=typeof t=="string"?Yn(t):void 0;if(r)return r}return null}function qd(n,e){if(!e)return null;let t=G__default.dirname(n),r=[G__default.resolve(t,"..",e),G__default.resolve(t,"node_modules",e)];for(let o of r){let s=G__default.join(o,"package.json");if(Dt(s))try{let i=JSON.parse(readFileSync(s,"utf8")),a=Hd(e,i.bin);if(!a)continue;let d=G__default.resolve(o,a);if(Dt(d))return d}catch{}}return null}function zd(n){let e=n.platform??process.platform,t=n.env??process.env,r=n.execPath??process.execPath,o=n.cwd,s=n.resolution;if(e!=="win32")return {command:an(n.command,{cwd:o,env:t,platform:e,resolution:s}),leadingArgv:[],resolution:"direct"};let i=an(n.command,{cwd:o,env:t,platform:e,resolution:s}),a=Qn(G__default.extname(i));if(a===".js"||a===".cjs"||a===".mjs")return {command:r,leadingArgv:[i],resolution:"node-entrypoint",windowsHide:true};if(a===".cmd"||a===".bat"){let d=jd(i)??qd(i,n.packageName);return d?Qn(G__default.extname(d))===".exe"?{command:d,leadingArgv:[],resolution:"exe-entrypoint",windowsHide:true}:{command:r,leadingArgv:[d],resolution:"node-entrypoint",windowsHide:true}:{command:i,leadingArgv:[],resolution:"unresolved-wrapper"}}return {command:i,leadingArgv:[],resolution:"direct"}}function Gd(n){if(n.candidate.resolution!=="unresolved-wrapper")return {command:n.candidate.command,leadingArgv:n.candidate.leadingArgv,resolution:n.candidate.resolution,windowsHide:n.candidate.windowsHide};if(n.allowShellFallback===true)return {command:n.candidate.command,leadingArgv:[],resolution:"shell-fallback",shell:true};throw new Error(`${G__default.basename(n.candidate.command)} wrapper resolved, but no executable/Node entrypoint could be resolved without shell execution.`)}function gt(n){let e=zd(n);return Gd({candidate:e,allowShellFallback:n.allowShellFallback})}function ft(n,e){return {command:n.command,argv:[...n.leadingArgv,...e],resolution:n.resolution,shell:n.shell,windowsHide:n.windowsHide}}var Lt=M(()=>{p();});function Kd(n){if(n.type!=="usage"||!("input_tokens"in n))return null;let e=Number(n.input_tokens??0),t=Number(n.output_tokens??0),o="cache_read_input_tokens"in n?Number(n.cache_read_input_tokens):void 0,s="cached_input_tokens"in n?Number(n.cached_input_tokens):void 0,i=o!==void 0?o:s??0;return {inputTokens:o!==void 0?e+o:e,outputTokens:t,cachedInputTokens:i}}function Vd(n){let e=n.usage;if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e;if(!("input_tokens"in t))return null;let r=Number(t.input_tokens??0),o=Number(t.output_tokens??0),i="cache_read_input_tokens"in t?Number(t.cache_read_input_tokens):void 0,a="cached_input_tokens"in t?Number(t.cached_input_tokens):void 0,d=i!==void 0?i:a??0;return {inputTokens:i!==void 0?r+i:r,outputTokens:o,cachedInputTokens:d}}function Jd(n){if(n.type!=="step_finish")return null;let t=n.part?.tokens;if(!t)return null;let r=Number(t.input??0),o=Number(t.output??0),s=t.cache,i=s?Number(s.read??0):0;return {inputTokens:r+i,outputTokens:o,cachedInputTokens:i}}function Ws(n){let e=new Map,t;for(let s of n.split(`
|
|
1
|
+
import*as G from'path';import G__default,{join,resolve,dirname,isAbsolute,basename}from'path';import {fileURLToPath}from'url';import*as Ni from'fs';import {existsSync,readFileSync,readdirSync,mkdirSync,writeFileSync,renameSync,appendFileSync,promises,statSync}from'fs';import {createHash,randomUUID,randomBytes}from'crypto';import {spawn,execFile,execFileSync}from'child_process';import {StringDecoder}from'string_decoder';import {ndJsonStream,ClientSideConnection}from'@agentclientprotocol/sdk';import {load,dump}from'js-yaml';import {getEncoding}from'js-tiktoken';import {Tiktoken}from'js-tiktoken/lite';import jr from'js-tiktoken/ranks/o200k_base';import {z}from'zod';import {createRequire}from'module';import*as Oe from'handlebars';import Oe__default from'handlebars';import {readFile,access,readdir}from'fs/promises';import {EventEmitter}from'events';import {AsyncLocalStorage}from'async_hooks';import {sql,eq,desc,and,isNull,lt as lt$1,or as or$1,notLike,like,asc,inArray,gte,isNotNull,ne}from'drizzle-orm';import*as is from'os';import is__default,{homedir}from'os';import {sqliteTable,text,integer,real,index,unique,uniqueIndex,primaryKey}from'drizzle-orm/sqlite-core';import {McpServer}from'@modelcontextprotocol/sdk/server/mcp.js';import {WebStandardStreamableHTTPServerTransport}from'@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js';import {performance}from'perf_hooks';var Sr=Object.defineProperty;var Ga=Object.getOwnPropertyDescriptor;var Ka=Object.getOwnPropertyNames;var Va=Object.prototype.hasOwnProperty;var de=(n=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(n,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):n)(function(n){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+n+'" is not supported')});var M=(n,e)=>()=>(n&&(e=n(n=0)),e);var Bn=(n,e)=>{for(var t in e)Sr(n,t,{get:e[t],enumerable:true});},Ja=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Ka(e))!Va.call(n,o)&&o!==t&&Sr(n,o,{get:()=>e[o],enumerable:!(r=Ga(e,o))||r.enumerable});return n};var ks=n=>Ja(Sr({},"__esModule",{value:true}),n);var _s,Qa,y,w,p=M(()=>{_s=()=>fileURLToPath(import.meta.url),Qa=()=>G__default.dirname(_s()),y=Qa(),w=_s();});var vs,Or,xs,Mr=M(()=>{p();vs=["flagship","balanced","speed"],Or={claude:{models:[{id:"claude-fable-5",name:"Claude Fable 5",contextWindowTokens:1e6,tier:"flagship",recommended:true},{id:"claude-opus-5",name:"Claude Opus 5",contextWindowTokens:1e6,tier:"flagship",recommended:true},{id:"claude-sonnet-5",name:"Claude Sonnet 5",contextWindowTokens:1e6,tier:"balanced",recommended:true},{id:"claude-opus-4-8[1m]",name:"Claude Opus 4.8",contextWindowTokens:1e6,tier:"flagship"},{id:"claude-opus-4-7[1m]",name:"Claude Opus 4.7",contextWindowTokens:1e6,tier:"flagship"},{id:"claude-opus-4-6[1m]",name:"Claude Opus 4.6",contextWindowTokens:1e6,tier:"flagship"},{id:"claude-sonnet-4-6[1m]",name:"Claude Sonnet 4.6",contextWindowTokens:1e6,tier:"balanced"},{id:"claude-haiku-4-5",name:"Claude Haiku 4.5",contextWindowTokens:2e5,tier:"speed"}],modes:[{id:"default",name:"Default",description:"Uses Claude's default permission handling with normal approval prompts."},{id:"acceptEdits",name:"Accept Edits",description:"Allows file edits without approval; other permission checks remain in place."},{id:"plan",name:"Plan",description:"Keeps Claude in plan mode so it can inspect and propose changes without applying them."},{id:"dontAsk",name:"Don't Ask",description:"Does not ask for permissions; only pre-approved tool actions can proceed."},{id:"bypassPermissions",name:"Bypass Permissions",description:"Bypasses Claude permission checks so tools can run without approval prompts."}],effort:["low","medium","high"],modelOverrides:{"claude-fable-5":{effort:["low","medium","high","xhigh","max"],defaultEffort:"high"},"claude-opus-5":{effort:["low","medium","high","xhigh","max"],defaultEffort:"high"},"claude-sonnet-5":{effort:["low","medium","high","xhigh","max"],defaultEffort:"high"},"claude-opus-4-8[1m]":{effort:["low","medium","high","xhigh","max"],defaultEffort:"high"},"claude-opus-4-7[1m]":{effort:["low","medium","high","xhigh","max"],defaultEffort:"high"},"claude-opus-4-6[1m]":{effort:["low","medium","high","max"],defaultEffort:"high"},"claude-sonnet-4-6[1m]":{effort:["low","medium","high","max"],defaultEffort:"high"},"claude-haiku-4-5":{effort:[]}}},codex:{models:[{id:"gpt-5.6-sol",name:"GPT-5.6 Sol",contextWindowTokens:105e4,tier:"flagship",recommended:true},{id:"gpt-5.6-terra",name:"GPT-5.6 Terra",contextWindowTokens:105e4,tier:"balanced",recommended:true},{id:"gpt-5.6-luna",name:"GPT-5.6 Luna",contextWindowTokens:105e4,tier:"speed",recommended:true},{id:"gpt-5.5",name:"GPT-5.5",contextWindowTokens:105e4,tier:"flagship"},{id:"gpt-5.4",name:"GPT-5.4",contextWindowTokens:105e4,tier:"flagship"},{id:"gpt-5.4-mini",name:"GPT-5.4 Mini",contextWindowTokens:4e5,tier:"speed"},{id:"gpt-5.3-codex",name:"GPT-5.3 Codex",contextWindowTokens:4e5,tier:"flagship"},{id:"gpt-5.3-codex-spark",name:"GPT-5.3 Codex Spark",contextWindowTokens:128e3,tier:"speed"}],modes:[{id:"agent",name:"Agent",description:"Uses the workspace-write sandbox; can read and modify workspace files without full machine access."},{id:"read-only",name:"Read Only",description:"Uses the read-only sandbox; can inspect files but cannot write to the workspace."},{id:"plan",name:"Plan",description:"Uses the read-only sandbox for planning and inspection; cannot write to the workspace."},{id:"agent-full-access",name:"Agent Full Access",description:"Bypasses approvals and the sandbox; can access and modify files beyond the workspace."},{id:"yolo",name:"YOLO",description:"Bypasses approvals and the sandbox for unrestricted execution and full filesystem access."}],effort:["minimal","low","medium","high"],modelOverrides:{"gpt-5.6-sol":{effort:["none","low","medium","high","xhigh","max"],defaultEffort:"xhigh"},"gpt-5.6-terra":{effort:["none","low","medium","high","xhigh","max"],defaultEffort:"high"},"gpt-5.6-luna":{effort:["none","low","medium","high","xhigh","max"],defaultEffort:"high"},"gpt-5.5":{effort:["minimal","low","medium","high","xhigh"],defaultEffort:"high"}}},opencode:{models:[],modes:[{id:"plan",name:"Plan",description:"Uses the plan agent without --auto; planning follows standard approval behavior."},{id:"plan-auto",name:"Plan \xB7 Auto",description:"Uses the plan agent with --auto; planning uses automatic approvals."},{id:"build",name:"Build",description:"Uses the build agent without --auto; work follows standard approval behavior."},{id:"build-auto",name:"Build \xB7 Auto",description:"Uses the build agent with --auto; work uses automatic approvals."}],effort:[],modelOverrides:{}},copilot:{models:[{id:"auto",name:"Auto"},{id:"claude-sonnet-5",name:"Claude Sonnet 5",contextWindowTokens:1e6,tier:"balanced"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6",contextWindowTokens:1e6,tier:"balanced"},{id:"gpt-5.5",name:"GPT-5.5",contextWindowTokens:105e4,tier:"flagship"},{id:"gpt-5.4",name:"GPT-5.4",contextWindowTokens:105e4,tier:"flagship"},{id:"gemini-3.1-pro",name:"Gemini 3.1 Pro",contextWindowTokens:1048576,tier:"flagship"}],modes:[{id:"interactive",name:"Interactive",description:"Passes --mode interactive; tool access follows Copilot's interactive mode behavior."},{id:"plan",name:"Plan",description:"Passes --mode plan; planning and permission behavior follow Copilot's plan mode."},{id:"autopilot",name:"Autopilot",description:"Passes --mode autopilot; execution behavior follows Copilot's autonomous mode."}],effort:["none","low","medium","high","xhigh","max"],modelOverrides:{}},antigravity:{models:[{id:"gemini-3.6-flash-high",name:"Gemini 3.6 Flash (High)",contextWindowTokens:1048576,tier:"balanced"},{id:"gemini-3.6-flash-medium",name:"Gemini 3.6 Flash (Medium)",contextWindowTokens:1048576,tier:"balanced"},{id:"gemini-3.6-flash-low",name:"Gemini 3.6 Flash (Low)",contextWindowTokens:1048576,tier:"balanced"},{id:"Gemini 3.5 Flash (Medium)",name:"Gemini 3.5 Flash (Medium)",contextWindowTokens:1048576,tier:"balanced"},{id:"Gemini 3.5 Flash (High)",name:"Gemini 3.5 Flash (High)",contextWindowTokens:1048576,tier:"balanced"},{id:"Gemini 3.5 Flash (Low)",name:"Gemini 3.5 Flash (Low)",contextWindowTokens:1048576,tier:"balanced"},{id:"Gemini 3.1 Pro (Low)",name:"Gemini 3.1 Pro (Low)",contextWindowTokens:1048576,tier:"flagship"},{id:"Gemini 3.1 Pro (High)",name:"Gemini 3.1 Pro (High)",contextWindowTokens:1048576,tier:"flagship"},{id:"Claude Sonnet 4.6 (Thinking)",name:"Claude Sonnet 4.6 (Thinking)",contextWindowTokens:1e6,tier:"balanced"},{id:"Claude Opus 4.6 (Thinking)",name:"Claude Opus 4.6 (Thinking)",contextWindowTokens:1e6,tier:"flagship"},{id:"GPT-OSS 120B (Medium)",name:"GPT-OSS 120B (Medium)",contextWindowTokens:128e3,tier:"balanced"}],modes:[],effort:[],modelOverrides:{}},grok:{models:[{id:"grok-4.6",name:"Grok 4.6",contextWindowTokens:5e5,tier:"flagship",recommended:true},{id:"grok-4.5",name:"Grok 4.5",contextWindowTokens:5e5,tier:"flagship"}],modes:[{id:"agent",name:"Agent",description:"Automatically approves tool calls inside the workspace sandbox; it cannot access the rest of the machine."},{id:"read-only",name:"Read Only",description:"Uses a read-only sandbox and plan permission mode; it can inspect files but cannot modify the workspace."},{id:"plan",name:"Plan",description:"Uses plan permission mode with a read-only sandbox; it can inspect and propose work but cannot modify files."},{id:"agent-full-access",name:"Agent Full Access",description:"Automatically approves tool calls with the sandbox disabled; it can access and modify files across the machine."},{id:"yolo",name:"YOLO",description:"Automatically approves tool calls with the sandbox disabled; it can access and modify files across the machine."}],effort:["low","medium","high"],modelOverrides:{"grok-4.6":{effort:["low","medium","high","xhigh"],defaultEffort:"high"},"grok-4.5":{effort:["low","medium","high"],defaultEffort:"high"}}}},xs={version:1,providers:{"cli/codex":{model:"gpt-5.6-sol",query:{mode:"agent",effort:"high"},execute:{mode:"agent-full-access",effort:"xhigh"}},"cli/claude":{model:"claude-opus-5",query:{mode:"default",effort:"high"},execute:{mode:"bypassPermissions",effort:"xhigh"}},"cli/grok":{model:"grok-4.6",query:{mode:"agent",effort:"high"},execute:{mode:"agent-full-access",effort:"xhigh"}}}},Object.fromEntries(Object.entries(Or).map(([n,e])=>[n,e.models]));});var dt,Nr,Es,Dr=M(()=>{p();dt={"claude-fable-5":{input:10,cachedInput:1,output:50},"claude-opus-5":{input:5,cachedInput:.5,output:25},"claude-opus-4-8":{input:5,cachedInput:.5,output:25},"claude-opus-4-7":{input:5,cachedInput:.5,output:25},"claude-opus-4-6":{input:5,cachedInput:.5,output:25},"claude-sonnet-5":{input:2,cachedInput:.2,output:10},"claude-sonnet-4-6":{input:3,cachedInput:.3,output:15},"claude-haiku-4-5":{input:1,cachedInput:.1,output:5},"gpt-5.6-sol":{input:5,cachedInput:.5,output:30},"gpt-5.6-terra":{input:2,cachedInput:.2,output:12},"gpt-5.6-luna":{input:.2,cachedInput:.02,output:1.2},"gpt-5.5":{input:5,cachedInput:.5,output:30},"gpt-5.4":{input:2.5,cachedInput:.25,output:15},"gpt-5.4-mini":{input:.75,cachedInput:.075,output:4.5},"gpt-5.3-codex":{input:1.75,cachedInput:.175,output:14},"gpt-5-mini":{input:.4,cachedInput:.1,output:1.6},"gpt-4.1":{input:2,cachedInput:.5,output:8},"gpt-4o":{input:2.5,cachedInput:1.25,output:10},"glm-5.2":{input:1.4,cachedInput:.26,output:4.4},"glm-5.1":{input:1.4,cachedInput:.26,output:4.4},"gemini-3.6-flash":{input:1.5,cachedInput:.15,output:7.5},"grok-4.6":{input:2,cachedInput:.5,output:6},"grok-4.5":{input:2,cachedInput:.3,output:6}},Nr=new Set(["gpt-5.3-codex-spark"]),Es=new Set(["Claude Opus 4.6 (Thinking)","Claude Sonnet 4.6 (Thinking)","GPT-OSS 120B (Medium)","Gemini 3.1 Pro (High)","Gemini 3.1 Pro (Low)","Gemini 3.5 Flash (High)","Gemini 3.5 Flash (Low)","Gemini 3.5 Flash (Medium)","auto","claude-fable-5","claude-haiku-4-5","claude-opus-4-6[1m]","claude-opus-4-7[1m]","claude-opus-4-8[1m]","claude-opus-5","claude-sonnet-4-6","claude-sonnet-4-6[1m]","claude-sonnet-5","gemini-3.1-pro","gemini-3.6-flash-high","gemini-3.6-flash-low","gemini-3.6-flash-medium","gpt-5.3-codex","gpt-5.3-codex-spark","gpt-5.4","gpt-5.4-mini","gpt-5.5","gpt-5.6-luna","gpt-5.6-sol","gpt-5.6-terra","grok-4.5","grok-4.6"]);});function As(n){Zt=n;}function Rs(n){Ts=Object.fromEntries(Object.entries(n).map(([e,t])=>[e,{...t}]));}function Lr(n){let e=n.toLowerCase().trim();e=e.replace(/\[[^\]]*\]$/g,"");let t=e.lastIndexOf("/");return t>=0&&(e=e.slice(t+1)),e=e.replace(/-\d{8}$/,""),e}function td(n){if(!n)return;let e="inputPerMillionTokensUsd"in n?n.inputPerMillionTokensUsd:n.input,t="outputPerMillionTokensUsd"in n?n.outputPerMillionTokensUsd:n.output;if(!(!Number.isFinite(e)||e<=0||!Number.isFinite(t)||t<=0))return {inputPerMillionTokensUsd:e,outputPerMillionTokensUsd:t}}function bs(n){if(!n)return;let e=n.replace(/\[[^\]]*\]$/g,"");return td(Ts[e]??dt[e])}function nd(n){if(!n)return console.warn("[pricing] missing model id; cost is being recorded as 0"),Qt;let e=Lr(n),t=ed[e];if(t)return Zt[t]??dt[t]??Qt;if(Zt[e])return Zt[e];if(dt[e])return dt[e];if(Nr.has(e))return console.warn(`[pricing] unpublished model pricing: ${n}, cost_usd=0`),Qt;if(Es.has(e))return console.warn(`[pricing] missing catalog pricing: ${n}, cost_usd=0`),Qt;let r={...dt,...Zt};for(let o of Object.keys(r))if(e.includes(o))return r[o];return console.warn(`[pricing] Unknown model: ${n}, cost_usd=0`),Qt}function rd(n,e,t,r=0,o){let s=nd(t),i=Math.min(r,n),d=(n-i)*s.input/1e6,l=i*s.cachedInput/1e6,c=e*s.output/1e6;return d+l+c}function Ps(n,e,t,r,o,s){return n&&n>0?n:!e&&!t?0:rd(e??0,t??0,o,r??0)}var ed,Qt,Zt,Ts,Mt=M(()=>{p();Dr();Dr();ed={opus:"claude-opus-4-8",sonnet:"claude-sonnet-4-6",haiku:"claude-haiku-4-5","codex-mini":"gpt-5.3-codex",codex:"gpt-5.3-codex"},Qt={input:0,cachedInput:0,output:0},Zt={},Ts={};});function en(n){return id.get(n)??n}var od,sd,Cs,id,Fn=M(()=>{p();od="claude-opus-4-8",sd="claude-opus-4-8[1m]",Cs=[{baseModelId:"claude-opus-4-8",catalogModelId:"claude-opus-4-8[1m]"},{baseModelId:"claude-opus-4-7",catalogModelId:"claude-opus-4-7[1m]"},{baseModelId:"claude-opus-4-6",catalogModelId:"claude-opus-4-6[1m]"},{baseModelId:"claude-sonnet-4-6",catalogModelId:"claude-sonnet-4-6[1m]"}],id=new Map(Cs.map(({baseModelId:n,catalogModelId:e})=>[n,e]));});function Ss(){return {models:[],modes:[],effort:[],modelOverrides:{}}}function ad(n){return Array.isArray(n)?{models:n,modes:[],effort:[],modelOverrides:{}}:n?{models:n.models??[],modes:n.modes??[],effort:n.effort??[],modelOverrides:n.modelOverrides??{}}:Ss()}function Ur(n){$r=Object.fromEntries(Object.entries(n).map(([e,t])=>[e,ad(t)]));}function dd(){$r={};}function tn(n){Is={...n};}function De(n){return Le(n).models}function Le(n){return $r[n]??Or[n]??Ss()}function Wn(n){return Is[n]??xs.providers[n]}function nn(n){return Le(n).modes}function lt(n,e){let t=Le(n);return e?t.modelOverrides[en(e)]?.effort??t.effort:t.effort}function Os(n){return Le(n).modelOverrides}function rn(){return De("claude")}function Br(){return De("codex")}function Fr(){return De("copilot")}function Wr(){return De("antigravity")}function on(n,e){let t=new Map;for(let r of [...n,...e]){let o=t.get(r.id);if(!o){let{apiPricing:s,recommended:i,...a}=r;t.set(r.id,{...a,...i===true?{recommended:true}:{},...s!=null?{apiPricing:{...s}}:{}});continue}!o.name&&r.name&&(o.name=r.name),o.description==null&&r.description!=null&&(o.description=r.description),o.contextWindowTokens==null&&r.contextWindowTokens!=null&&(o.contextWindowTokens=r.contextWindowTokens),o.tier==null&&r.tier!=null&&(o.tier=r.tier),o.recommended!==true&&r.recommended===true&&(o.recommended=true),o.apiPricing==null&&r.apiPricing!=null&&(o.apiPricing={...r.apiPricing});}return Array.from(t.values())}function sn(n){return n.map(e=>{let{apiPricing:t,...r}=e,o=bs(e.id);return o?{...r,apiPricing:o}:r})}var $r,Is,ge=M(()=>{p();Mr();Mt();Fn();$r={},Is={};});function Yn(n){return typeof n!="string"?void 0:n.trim()||void 0}function Qn(n){return Yn(n)?.toLowerCase()??""}function Dt(n){try{return statSync(n).isFile()}catch{return false}}function Bd(n,e){if(n===e)return true;let t=G__default.relative(n,e);return t!==""&&!t.startsWith("..")&&!G__default.isAbsolute(t)}function Fd(n,e){if(G__default.basename(n)!==".bin")return false;let t=G__default.dirname(n);if(G__default.basename(t)!=="node_modules")return false;let r=G__default.dirname(t);return Bd(r,e)}function an(n,e={}){if(n.includes("/")||n.includes("\\")||G__default.isAbsolute(n))return n;let t=e.platform??process.platform,r=e.env??process.env,o=G__default.resolve(e.cwd??process.cwd()),s=(e.resolution??"global_first")==="global_first",i=r.PATH??r.Path??process.env.PATH??process.env.Path??"",a=t==="win32"?";":":",d=i.split(a).map(g=>g.trim()).filter(Boolean),l=G__default.extname(n).length>0,c=r.PATHEXT??r.Pathext??process.env.PATHEXT??process.env.Pathext??".EXE;.CMD;.BAT;.COM",f=t==="win32"?l?[""]:c.split(";").map(g=>g.trim()).filter(Boolean).map(g=>g.startsWith(".")?g:`.${g}`):[""];for(let g of d){let m=G__default.resolve(o,g);if(!(s&&Fd(m,o)))for(let v of f){let h=Qn(v),x=v.toUpperCase();for(let k of [v,h,x]){let _=G__default.join(m,`${n}${k}`);if(Dt(_))return _}}}return n}function Wd(n,e){return an(n,{env:e,platform:"win32",resolution:"local_first"})}function jd(n){if(!Dt(n))return null;try{let e=readFileSync(n,"utf8"),t=G__default.dirname(n),r=[];for(let a of e.matchAll(/"([^"\r\n]*)"/g)){let c=(a[1]??"").match(/%~?dp0%?\s*[\\/]*(.*)$/i)?.[1]?.trim();if(!c)continue;let f=c.replace(/[\\/]+/g,G__default.sep).replace(/^[\\/]+/,""),g=G__default.resolve(t,f);Dt(g)&&r.push(g);}let o=[],s=new Map;for(let a of e.matchAll(/SET\s+"(\w+)=%~?dp0%?[\\/]?([^"]+)"/gi)){let d=a[1].toUpperCase(),l=a[2].trim().replace(/[\\/]+/g,G__default.sep).replace(/^[\\/]+/,"");s.set(d,G__default.resolve(t,l));}for(let a of e.split(/\r?\n/))if(a.includes("%*"))for(let d of a.matchAll(/"%(\w+)%"/g)){let l=s.get(d[1].toUpperCase());l&&Dt(l)&&o.push(l);}let i=a=>a.find(d=>{let l=Qn(G__default.basename(d));return l!=="node.exe"&&l!=="node"})??null;return i(o)??i(r)}catch{return null}}function Hd(n,e){if(typeof e=="string")return Yn(e)||null;if(!e||typeof e!="object")return null;if(n){let t=e[n],r=typeof t=="string"?Yn(t):void 0;if(r)return r}for(let t of Object.values(e)){let r=typeof t=="string"?Yn(t):void 0;if(r)return r}return null}function qd(n,e){if(!e)return null;let t=G__default.dirname(n),r=[G__default.resolve(t,"..",e),G__default.resolve(t,"node_modules",e)];for(let o of r){let s=G__default.join(o,"package.json");if(Dt(s))try{let i=JSON.parse(readFileSync(s,"utf8")),a=Hd(e,i.bin);if(!a)continue;let d=G__default.resolve(o,a);if(Dt(d))return d}catch{}}return null}function zd(n){let e=n.platform??process.platform,t=n.env??process.env,r=n.execPath??process.execPath,o=n.cwd,s=n.resolution;if(e!=="win32")return {command:an(n.command,{cwd:o,env:t,platform:e,resolution:s}),leadingArgv:[],resolution:"direct"};let i=an(n.command,{cwd:o,env:t,platform:e,resolution:s}),a=Qn(G__default.extname(i));if(a===".js"||a===".cjs"||a===".mjs")return {command:r,leadingArgv:[i],resolution:"node-entrypoint",windowsHide:true};if(a===".cmd"||a===".bat"){let d=jd(i)??qd(i,n.packageName);return d?Qn(G__default.extname(d))===".exe"?{command:d,leadingArgv:[],resolution:"exe-entrypoint",windowsHide:true}:{command:r,leadingArgv:[d],resolution:"node-entrypoint",windowsHide:true}:{command:i,leadingArgv:[],resolution:"unresolved-wrapper"}}return {command:i,leadingArgv:[],resolution:"direct"}}function Gd(n){if(n.candidate.resolution!=="unresolved-wrapper")return {command:n.candidate.command,leadingArgv:n.candidate.leadingArgv,resolution:n.candidate.resolution,windowsHide:n.candidate.windowsHide};if(n.allowShellFallback===true)return {command:n.candidate.command,leadingArgv:[],resolution:"shell-fallback",shell:true};throw new Error(`${G__default.basename(n.candidate.command)} wrapper resolved, but no executable/Node entrypoint could be resolved without shell execution.`)}function gt(n){let e=zd(n);return Gd({candidate:e,allowShellFallback:n.allowShellFallback})}function ft(n,e){return {command:n.command,argv:[...n.leadingArgv,...e],resolution:n.resolution,shell:n.shell,windowsHide:n.windowsHide}}var Lt=M(()=>{p();});function Kd(n){if(n.type!=="usage"||!("input_tokens"in n))return null;let e=Number(n.input_tokens??0),t=Number(n.output_tokens??0),o="cache_read_input_tokens"in n?Number(n.cache_read_input_tokens):void 0,s="cached_input_tokens"in n?Number(n.cached_input_tokens):void 0,i=o!==void 0?o:s??0;return {inputTokens:o!==void 0?e+o:e,outputTokens:t,cachedInputTokens:i}}function Vd(n){let e=n.usage;if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e;if(!("input_tokens"in t))return null;let r=Number(t.input_tokens??0),o=Number(t.output_tokens??0),i="cache_read_input_tokens"in t?Number(t.cache_read_input_tokens):void 0,a="cached_input_tokens"in t?Number(t.cached_input_tokens):void 0,d=i!==void 0?i:a??0;return {inputTokens:i!==void 0?r+i:r,outputTokens:o,cachedInputTokens:d}}function Jd(n){if(n.type!=="step_finish")return null;let t=n.part?.tokens;if(!t)return null;let r=Number(t.input??0),o=Number(t.output??0),s=t.cache,i=s?Number(s.read??0):0;return {inputTokens:r+i,outputTokens:o,cachedInputTokens:i}}function Ws(n){let e=new Map,t;for(let s of n.split(`
|
|
2
2
|
`))if(s.trim())try{let i=JSON.parse(s);if(i.type!=="assistant")continue;let a=i.message,d=a?.id,l=a?.usage;if(typeof d!="string"||!l)continue;let c=Number(l.input_tokens??0),f=Number(l.cache_read_input_tokens??0);e.set(d,{inputTokens:c+f,cachedInputTokens:f});let g=a?.model;typeof g=="string"&&g&&(t=g);}catch{}if(e.size===0)return;let r=0,o=0;for(let s of e.values())r+=s.inputTokens,o+=s.cachedInputTokens;return {inputTokens:r,cachedInputTokens:o,model:t}}function Ue(n){if(!n||!n.trim())return;let e=null,t=null;for(let r of n.split(`
|
|
3
3
|
`))if(r.trim())try{let o=JSON.parse(r),s=Jd(o);if(s){t||(t={inputTokens:0,outputTokens:0,cachedInputTokens:0}),t.inputTokens+=s.inputTokens,t.outputTokens+=s.outputTokens,t.cachedInputTokens+=s.cachedInputTokens;continue}let i=Kd(o)??Vd(o);i&&(e=i);}catch{}return t||(e??void 0)}var mt=M(()=>{p();});var P,yt,ht,$t=M(()=>{p();P=class extends Error{constructor(t,r,o){super(t);this.providerStr=r;this.name="ProviderError",this.code=o?.code??"UNKNOWN",this.kind=o?.kind??(this.code==="UNKNOWN"?"transient":void 0),this.retryAfterMs=o?.retryAfterMs;}providerStr;code;kind;retryAfterMs;stdout},yt=class extends P{constructor(e,t){super(e,t,{code:"TIMEOUT_IDLE",kind:"permanent"}),this.name="IdleTimeoutError";}},ht=class extends P{constructor(e,t){super(e,t,{code:"TIMEOUT_TOTAL",kind:"permanent"}),this.name="TotalTimeoutError";}};});var Ce,Zn=M(()=>{p();$t();Ce=class extends P{name="RateLimitError";constructor(e,t="cli/claude"){super(e,t,{code:"QUOTA_EXHAUSTED",kind:"transient"});}};});function we(n){return /crewx\s+(x|execute)\s/.test(n)}function ke(n,e){let t=e.match(/@(\S+)/);return {timestamp:n,type:"agent_call",targetAgent:t?.[1]?.replace(/["']/g,""),toolInput:e}}var Ut=M(()=>{p();});function _e(n){if(typeof n=="string")return n;if(!n||typeof n!="object")return JSON.stringify(n??{});let e=n;return typeof e.command=="string"?e.command:typeof e.file_path=="string"?e.file_path:typeof e.filePath=="string"?e.filePath:typeof e.path=="string"?e.path:typeof e.query=="string"?e.query:typeof e.pattern=="string"?e.pattern:typeof e.url=="string"?e.url:typeof e.prompt=="string"?e.prompt.length>200?e.prompt.slice(0,200)+"\u2026":e.prompt:typeof e.description=="string"?e.description:JSON.stringify(e)}var Bt=M(()=>{p();});function wt(n){return Xd[n]??n}function Jr(n){if(!n)return "";let e=n.lastIndexOf("/");return e===-1?n.trim():n.slice(e+1).trim()}function js(n){if(!n)return false;let e=Le(n);return e.models.length>0||e.modes.length>0||e.effort.length>0||Object.keys(e.modelOverrides).length>0}function Hs(n,e){if(!n)return false;let t=Le(n),r=typeof e=="string"?en(e):void 0;return t.models.length>0||t.effort.length>0||r!=null&&Array.isArray(t.modelOverrides[r]?.effort)}function Xr(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}function Yd(n,e,t){let r=n,o=false,s=false,i=[],a=()=>(o||(r={...n},o=true),r),d=typeof r.provider=="string"&&r.provider.trim()?Jr(r.provider):e,l=typeof r.model=="string"&&r.model.trim()?r.model.trim():t;if(js(d)){if(typeof r.mode=="string"){let f=d==="claude"?wt(r.mode):r.mode,g=nn(d).map(m=>d==="claude"?wt(m.id):m.id);f!==r.mode&&(a().mode=f,s=true),g.includes(f)||(delete a().mode,i.push("mode"));}typeof r.effort=="string"&&Hs(d,l)&&(lt(d,l).includes(r.effort)||(delete a().effort,i.push("effort")));}let c=r.overdrive;if(Xr(c)){let f=Jr(typeof c.provider=="string"?c.provider:void 0),g=typeof c.model=="string"?c.model:void 0;if(js(f)){let m,v=()=>(m||(m={...c},a().overdrive=m),m);if(typeof c.mode=="string"){let h=f==="claude"?wt(c.mode):c.mode,x=nn(f).map(k=>f==="claude"?wt(k.id):k.id);h!==c.mode&&(v().mode=h,s=true),x.includes(h)||(delete v().mode,i.push("overdrive.mode"));}typeof c.effort=="string"&&Hs(f,g)&&(lt(f,g).includes(c.effort)||(delete v().effort,i.push("overdrive.effort")));}}return {block:r,removed:i,changed:s}}function Qd(n){let{options:e}=n;if(!Xr(e))return {options:e,changed:false,removed:[]};let t=Jr(n.provider),r=[],o=false,s=e,i=false,a=()=>(i||(s={...e},i=true),s);for(let d of ["query","execute"]){let l=e[d];if(!Xr(l))continue;let{block:c,removed:f,changed:g}=Yd(l,t,n.model);(g||f.length>0)&&(a()[d]=c,r.push(...f.map(m=>`${d}.${m}`)),o=true);}return {options:s,changed:o,removed:r}}var Xd,Yr=M(()=>{p();ge();Fn();Xd={auto:"default"};});function Ft(n){if(!n)return {};let e=n.match(/^(.+?)\[([^\]]+)\]$/);if(e){let t=e[2].toLowerCase();return Zd.has(t)?{model:e[1],effort:e[2]}:{model:n}}return {model:n}}function qs(n){switch(n){case "agent-full-access":case "yolo":return ["--dangerously-bypass-approvals-and-sandbox"];case "read-only":case "plan":return ["--sandbox","read-only"];case "agent":return ["--sandbox","workspace-write"];default:return []}}function zs(n){switch(n){case "agent-full-access":case "yolo":return ["--dangerously-bypass-approvals-and-sandbox"];case "read-only":case "plan":return ["-c","sandbox_mode=read-only"];case "agent":return ["-c","sandbox_mode=workspace-write"];default:return []}}function Gs(n){return n?["-c",`model_reasoning_effort=${n}`]:[]}function Ks(n){if(!n)return [];let e=new Set(["acceptEdits","bypassPermissions","default","delegate","dontAsk","plan"]),t=wt(n);return e.has(t)?["--permission-mode",t]:[]}function Vs(n){return n?new Set(["low","medium","high","xhigh","max"]).has(n)?["--effort",n]:[]:[]}function Js(n){switch(n){case "plan":case "read-only":return ["--permission-mode","plan","--sandbox","read-only"];case "agent":return ["--always-approve","--sandbox","workspace"];case "agent-full-access":case "yolo":return ["--always-approve","--sandbox","off"];case "default":case "acceptEdits":case "auto":case "dontAsk":case "bypassPermissions":return ["--permission-mode",n];default:return []}}function Xs(n){return n?new Set(["low","medium","high","xhigh"]).has(n)?["--effort",n]:[]:[]}var Zd,er=M(()=>{p();Yr();Zd=new Set(["minimal","low","medium","high","xhigh","max"]);});function tl(n){let t=n.message?.content;return Array.isArray(t)?t.map(r=>typeof r.text=="string"?r.text.trim():"").filter(Boolean).join(`
|
|
4
4
|
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
'use strict';var Oi=require('fs'),z=require('path'),crypto$1=require('crypto'),child_process=require('child_process'),string_decoder=require('string_decoder'),sdk=require('@agentclientprotocol/sdk'),jsYaml=require('js-yaml'),jsTiktoken=require('js-tiktoken'),lite=require('js-tiktoken/lite'),Wr=require('js-tiktoken/ranks/o200k_base'),zod=require('zod'),module$1=require('module'),Se=require('handlebars'),promises=require('fs/promises'),events=require('events'),async_hooks=require('async_hooks'),drizzleOrm=require('drizzle-orm'),ss=require('os'),sqliteCore=require('drizzle-orm/sqlite-core'),mcp_js=require('@modelcontextprotocol/sdk/server/mcp.js'),webStandardStreamableHttp_js=require('@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js'),perf_hooks=require('perf_hooks');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var Oi__namespace=/*#__PURE__*/_interopNamespace(Oi);var z__namespace=/*#__PURE__*/_interopNamespace(z);var Wr__default=/*#__PURE__*/_interopDefault(Wr);var Se__namespace=/*#__PURE__*/_interopNamespace(Se);var ss__namespace=/*#__PURE__*/_interopNamespace(ss);var Ir=Object.defineProperty;var qa=Object.getOwnPropertyDescriptor;var za=Object.getOwnPropertyNames;var Ga=Object.prototype.hasOwnProperty;var ae=(n=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(n,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):n)(function(n){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+n+'" is not supported')});var O=(n,e)=>()=>(n&&(e=n(n=0)),e);var Un=(n,e)=>{for(var t in e)Ir(n,t,{get:e[t],enumerable:true});},Ka=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of za(e))!Ga.call(n,o)&&o!==t&&Ir(n,o,{get:()=>e[o],enumerable:!(r=qa(e,o))||r.enumerable});return n};var ws=n=>Ka(Ir({},"__esModule",{value:true}),n);var p=O(()=>{});var ks,Sr,_s,Or=O(()=>{p();ks=["flagship","balanced","speed"],Sr={claude:{models:[{id:"claude-fable-5",name:"Claude Fable 5",contextWindowTokens:1e6,tier:"flagship",recommended:true},{id:"claude-opus-5",name:"Claude Opus 5",contextWindowTokens:1e6,tier:"flagship",recommended:true},{id:"claude-sonnet-5",name:"Claude Sonnet 5",contextWindowTokens:1e6,tier:"balanced",recommended:true},{id:"claude-opus-4-8[1m]",name:"Claude Opus 4.8",contextWindowTokens:1e6,tier:"flagship"},{id:"claude-opus-4-7[1m]",name:"Claude Opus 4.7",contextWindowTokens:1e6,tier:"flagship"},{id:"claude-opus-4-6[1m]",name:"Claude Opus 4.6",contextWindowTokens:1e6,tier:"flagship"},{id:"claude-sonnet-4-6[1m]",name:"Claude Sonnet 4.6",contextWindowTokens:1e6,tier:"balanced"},{id:"claude-haiku-4-5",name:"Claude Haiku 4.5",contextWindowTokens:2e5,tier:"speed"}],modes:[{id:"default",name:"Default",description:"Uses Claude's default permission handling with normal approval prompts."},{id:"acceptEdits",name:"Accept Edits",description:"Allows file edits without approval; other permission checks remain in place."},{id:"plan",name:"Plan",description:"Keeps Claude in plan mode so it can inspect and propose changes without applying them."},{id:"dontAsk",name:"Don't Ask",description:"Does not ask for permissions; only pre-approved tool actions can proceed."},{id:"bypassPermissions",name:"Bypass Permissions",description:"Bypasses Claude permission checks so tools can run without approval prompts."}],effort:["low","medium","high"],modelOverrides:{"claude-fable-5":{effort:["low","medium","high","xhigh","max"],defaultEffort:"high"},"claude-opus-5":{effort:["low","medium","high","xhigh","max"],defaultEffort:"high"},"claude-sonnet-5":{effort:["low","medium","high","xhigh","max"],defaultEffort:"high"},"claude-opus-4-8[1m]":{effort:["low","medium","high","xhigh","max"],defaultEffort:"high"},"claude-opus-4-7[1m]":{effort:["low","medium","high","xhigh","max"],defaultEffort:"high"},"claude-opus-4-6[1m]":{effort:["low","medium","high","max"],defaultEffort:"high"},"claude-sonnet-4-6[1m]":{effort:["low","medium","high","max"],defaultEffort:"high"},"claude-haiku-4-5":{effort:[]}}},codex:{models:[{id:"gpt-5.6-sol",name:"GPT-5.6 Sol",contextWindowTokens:105e4,tier:"flagship",recommended:true},{id:"gpt-5.6-terra",name:"GPT-5.6 Terra",contextWindowTokens:105e4,tier:"balanced",recommended:true},{id:"gpt-5.6-luna",name:"GPT-5.6 Luna",contextWindowTokens:105e4,tier:"speed",recommended:true},{id:"gpt-5.5",name:"GPT-5.5",contextWindowTokens:105e4,tier:"flagship"},{id:"gpt-5.4",name:"GPT-5.4",contextWindowTokens:105e4,tier:"flagship"},{id:"gpt-5.4-mini",name:"GPT-5.4 Mini",contextWindowTokens:4e5,tier:"speed"},{id:"gpt-5.3-codex",name:"GPT-5.3 Codex",contextWindowTokens:4e5,tier:"flagship"},{id:"gpt-5.3-codex-spark",name:"GPT-5.3 Codex Spark",contextWindowTokens:128e3,tier:"speed"}],modes:[{id:"agent",name:"Agent",description:"Uses the workspace-write sandbox; can read and modify workspace files without full machine access."},{id:"read-only",name:"Read Only",description:"Uses the read-only sandbox; can inspect files but cannot write to the workspace."},{id:"plan",name:"Plan",description:"Uses the read-only sandbox for planning and inspection; cannot write to the workspace."},{id:"agent-full-access",name:"Agent Full Access",description:"Bypasses approvals and the sandbox; can access and modify files beyond the workspace."},{id:"yolo",name:"YOLO",description:"Bypasses approvals and the sandbox for unrestricted execution and full filesystem access."}],effort:["minimal","low","medium","high"],modelOverrides:{"gpt-5.6-sol":{effort:["none","low","medium","high","xhigh","max"],defaultEffort:"xhigh"},"gpt-5.6-terra":{effort:["none","low","medium","high","xhigh","max"],defaultEffort:"high"},"gpt-5.6-luna":{effort:["none","low","medium","high","xhigh","max"],defaultEffort:"high"},"gpt-5.5":{effort:["minimal","low","medium","high","xhigh"],defaultEffort:"high"}}},opencode:{models:[],modes:[{id:"plan",name:"Plan",description:"Uses the plan agent without --auto; planning follows standard approval behavior."},{id:"plan-auto",name:"Plan \xB7 Auto",description:"Uses the plan agent with --auto; planning uses automatic approvals."},{id:"build",name:"Build",description:"Uses the build agent without --auto; work follows standard approval behavior."},{id:"build-auto",name:"Build \xB7 Auto",description:"Uses the build agent with --auto; work uses automatic approvals."}],effort:[],modelOverrides:{}},copilot:{models:[{id:"auto",name:"Auto"},{id:"claude-sonnet-5",name:"Claude Sonnet 5",contextWindowTokens:1e6,tier:"balanced"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6",contextWindowTokens:1e6,tier:"balanced"},{id:"gpt-5.5",name:"GPT-5.5",contextWindowTokens:105e4,tier:"flagship"},{id:"gpt-5.4",name:"GPT-5.4",contextWindowTokens:105e4,tier:"flagship"},{id:"gemini-3.1-pro",name:"Gemini 3.1 Pro",contextWindowTokens:1048576,tier:"flagship"}],modes:[{id:"interactive",name:"Interactive",description:"Passes --mode interactive; tool access follows Copilot's interactive mode behavior."},{id:"plan",name:"Plan",description:"Passes --mode plan; planning and permission behavior follow Copilot's plan mode."},{id:"autopilot",name:"Autopilot",description:"Passes --mode autopilot; execution behavior follows Copilot's autonomous mode."}],effort:["none","low","medium","high","xhigh","max"],modelOverrides:{}},antigravity:{models:[{id:"gemini-3.6-flash-high",name:"Gemini 3.6 Flash (High)",contextWindowTokens:1048576,tier:"balanced"},{id:"gemini-3.6-flash-medium",name:"Gemini 3.6 Flash (Medium)",contextWindowTokens:1048576,tier:"balanced"},{id:"gemini-3.6-flash-low",name:"Gemini 3.6 Flash (Low)",contextWindowTokens:1048576,tier:"balanced"},{id:"Gemini 3.5 Flash (Medium)",name:"Gemini 3.5 Flash (Medium)",contextWindowTokens:1048576,tier:"balanced"},{id:"Gemini 3.5 Flash (High)",name:"Gemini 3.5 Flash (High)",contextWindowTokens:1048576,tier:"balanced"},{id:"Gemini 3.5 Flash (Low)",name:"Gemini 3.5 Flash (Low)",contextWindowTokens:1048576,tier:"balanced"},{id:"Gemini 3.1 Pro (Low)",name:"Gemini 3.1 Pro (Low)",contextWindowTokens:1048576,tier:"flagship"},{id:"Gemini 3.1 Pro (High)",name:"Gemini 3.1 Pro (High)",contextWindowTokens:1048576,tier:"flagship"},{id:"Claude Sonnet 4.6 (Thinking)",name:"Claude Sonnet 4.6 (Thinking)",contextWindowTokens:1e6,tier:"balanced"},{id:"Claude Opus 4.6 (Thinking)",name:"Claude Opus 4.6 (Thinking)",contextWindowTokens:1e6,tier:"flagship"},{id:"GPT-OSS 120B (Medium)",name:"GPT-OSS 120B (Medium)",contextWindowTokens:128e3,tier:"balanced"}],modes:[],effort:[],modelOverrides:{}},grok:{models:[{id:"grok-4.6",name:"Grok 4.6",contextWindowTokens:5e5,tier:"flagship",recommended:true},{id:"grok-4.5",name:"Grok 4.5",contextWindowTokens:5e5,tier:"flagship"}],modes:[{id:"agent",name:"Agent",description:"Automatically approves tool calls inside the workspace sandbox; it cannot access the rest of the machine."},{id:"read-only",name:"Read Only",description:"Uses a read-only sandbox and plan permission mode; it can inspect files but cannot modify the workspace."},{id:"plan",name:"Plan",description:"Uses plan permission mode with a read-only sandbox; it can inspect and propose work but cannot modify files."},{id:"agent-full-access",name:"Agent Full Access",description:"Automatically approves tool calls with the sandbox disabled; it can access and modify files across the machine."},{id:"yolo",name:"YOLO",description:"Automatically approves tool calls with the sandbox disabled; it can access and modify files across the machine."}],effort:["low","medium","high"],modelOverrides:{"grok-4.6":{effort:["low","medium","high","xhigh"],defaultEffort:"high"},"grok-4.5":{effort:["low","medium","high"],defaultEffort:"high"}}}},_s={version:1,providers:{"cli/codex":{model:"gpt-5.6-sol",query:{mode:"agent",effort:"high"},execute:{mode:"agent-full-access",effort:"xhigh"}},"cli/claude":{model:"claude-opus-5",query:{mode:"default",effort:"high"},execute:{mode:"bypassPermissions",effort:"xhigh"}},"cli/grok":{model:"grok-4.6",query:{mode:"agent",effort:"high"},execute:{mode:"agent-full-access",effort:"xhigh"}}}},Object.fromEntries(Object.entries(Sr).map(([n,e])=>[n,e.models]));});var at,Mr,vs,Nr=O(()=>{p();at={"claude-fable-5":{input:10,cachedInput:1,output:50},"claude-opus-5":{input:5,cachedInput:.5,output:25},"claude-opus-4-8":{input:5,cachedInput:.5,output:25},"claude-opus-4-7":{input:5,cachedInput:.5,output:25},"claude-opus-4-6":{input:5,cachedInput:.5,output:25},"claude-sonnet-5":{input:2,cachedInput:.2,output:10},"claude-sonnet-4-6":{input:3,cachedInput:.3,output:15},"claude-haiku-4-5":{input:1,cachedInput:.1,output:5},"gpt-5.6-sol":{input:5,cachedInput:.5,output:30},"gpt-5.6-terra":{input:2,cachedInput:.2,output:12},"gpt-5.6-luna":{input:.2,cachedInput:.02,output:1.2},"gpt-5.5":{input:5,cachedInput:.5,output:30},"gpt-5.4":{input:2.5,cachedInput:.25,output:15},"gpt-5.4-mini":{input:.75,cachedInput:.075,output:4.5},"gpt-5.3-codex":{input:1.75,cachedInput:.175,output:14},"gpt-5-mini":{input:.4,cachedInput:.1,output:1.6},"gpt-4.1":{input:2,cachedInput:.5,output:8},"gpt-4o":{input:2.5,cachedInput:1.25,output:10},"glm-5.2":{input:1.4,cachedInput:.26,output:4.4},"glm-5.1":{input:1.4,cachedInput:.26,output:4.4},"gemini-3.6-flash":{input:1.5,cachedInput:.15,output:7.5},"grok-4.6":{input:2,cachedInput:.5,output:6},"grok-4.5":{input:2,cachedInput:.3,output:6}},Mr=new Set(["gpt-5.3-codex-spark"]),vs=new Set(["Claude Opus 4.6 (Thinking)","Claude Sonnet 4.6 (Thinking)","GPT-OSS 120B (Medium)","Gemini 3.1 Pro (High)","Gemini 3.1 Pro (Low)","Gemini 3.5 Flash (High)","Gemini 3.5 Flash (Low)","Gemini 3.5 Flash (Medium)","auto","claude-fable-5","claude-haiku-4-5","claude-opus-4-6[1m]","claude-opus-4-7[1m]","claude-opus-4-8[1m]","claude-opus-5","claude-sonnet-4-6","claude-sonnet-4-6[1m]","claude-sonnet-5","gemini-3.1-pro","gemini-3.6-flash-high","gemini-3.6-flash-low","gemini-3.6-flash-medium","gpt-5.3-codex","gpt-5.3-codex-spark","gpt-5.4","gpt-5.4-mini","gpt-5.5","gpt-5.6-luna","gpt-5.6-sol","gpt-5.6-terra","grok-4.5","grok-4.6"]);});function Es(n){Qt=n;}function Ts(n){xs=Object.fromEntries(Object.entries(n).map(([e,t])=>[e,{...t}]));}function Dr(n){let e=n.toLowerCase().trim();e=e.replace(/\[[^\]]*\]$/g,"");let t=e.lastIndexOf("/");return t>=0&&(e=e.slice(t+1)),e=e.replace(/-\d{8}$/,""),e}function Xa(n){if(!n)return;let e="inputPerMillionTokensUsd"in n?n.inputPerMillionTokensUsd:n.input,t="outputPerMillionTokensUsd"in n?n.outputPerMillionTokensUsd:n.output;if(!(!Number.isFinite(e)||e<=0||!Number.isFinite(t)||t<=0))return {inputPerMillionTokensUsd:e,outputPerMillionTokensUsd:t}}function As(n){if(!n)return;let e=n.replace(/\[[^\]]*\]$/g,"");return Xa(xs[e]??at[e])}function Ya(n){if(!n)return Yt;let e=Dr(n),t=Ja[e];if(t)return Qt[t]??at[t]??Yt;if(Qt[e])return Qt[e];if(at[e])return at[e];if(Mr.has(e))return console.warn(`[pricing] unpublished model pricing: ${n}, cost_usd=0`),Yt;if(vs.has(e))return console.warn(`[pricing] missing catalog pricing: ${n}, cost_usd=0`),Yt;let r={...at,...Qt};for(let o of Object.keys(r))if(e.includes(o))return r[o];return console.warn(`[pricing] Unknown model: ${n}, cost_usd=0`),Yt}function Qa(n,e,t,r=0,o){let s=Ya(t),i=Math.min(r,n),d=(n-i)*s.input/1e6,l=i*s.cachedInput/1e6,c=e*s.output/1e6;return d+l+c}function Rs(n,e,t,r,o,s){return n&&n>0?n:!e&&!t?0:Qa(e??0,t??0,o,r??0)}var Ja,Yt,Qt,xs,Ot=O(()=>{p();Nr();Nr();Ja={opus:"claude-opus-4-8",sonnet:"claude-sonnet-4-6",haiku:"claude-haiku-4-5","codex-mini":"gpt-5.3-codex",codex:"gpt-5.3-codex"},Yt={input:0,cachedInput:0,output:0},Qt={},xs={};});function Zt(n){return td.get(n)??n}exports.CLAUDE_OPUS_4_8_BASE_MODEL_ID=void 0;exports.CLAUDE_OPUS_4_8_LEGACY_MODEL_ID=void 0;exports.CLAUDE_MODEL_COMPATIBILITY_PAIRS=void 0;var td,Bn=O(()=>{p();exports.CLAUDE_OPUS_4_8_BASE_MODEL_ID="claude-opus-4-8",exports.CLAUDE_OPUS_4_8_LEGACY_MODEL_ID="claude-opus-4-8[1m]",exports.CLAUDE_MODEL_COMPATIBILITY_PAIRS=[{baseModelId:"claude-opus-4-8",catalogModelId:"claude-opus-4-8[1m]"},{baseModelId:"claude-opus-4-7",catalogModelId:"claude-opus-4-7[1m]"},{baseModelId:"claude-opus-4-6",catalogModelId:"claude-opus-4-6[1m]"},{baseModelId:"claude-sonnet-4-6",catalogModelId:"claude-sonnet-4-6[1m]"}],td=new Map(exports.CLAUDE_MODEL_COMPATIBILITY_PAIRS.map(({baseModelId:n,catalogModelId:e})=>[n,e]));});function Cs(){return {models:[],modes:[],effort:[],modelOverrides:{}}}function nd(n){return Array.isArray(n)?{models:n,modes:[],effort:[],modelOverrides:{}}:n?{models:n.models??[],modes:n.modes??[],effort:n.effort??[],modelOverrides:n.modelOverrides??{}}:Cs()}function $r(n){Lr=Object.fromEntries(Object.entries(n).map(([e,t])=>[e,nd(t)]));}function rd(){Lr={};}function en(n){Ps={...n};}function Ne(n){return De(n).models}function De(n){return Lr[n]??Sr[n]??Cs()}function Fn(n){return Ps[n]??_s.providers[n]}function tn(n){return De(n).modes}function dt(n,e){let t=De(n);return e?t.modelOverrides[Zt(e)]?.effort??t.effort:t.effort}function Is(n){return De(n).modelOverrides}function nn(){return Ne("claude")}function Ur(){return Ne("codex")}function Br(){return Ne("copilot")}function Fr(){return Ne("antigravity")}function rn(n,e){let t=new Map;for(let r of [...n,...e]){let o=t.get(r.id);if(!o){let{apiPricing:s,recommended:i,...a}=r;t.set(r.id,{...a,...i===true?{recommended:true}:{},...s!=null?{apiPricing:{...s}}:{}});continue}!o.name&&r.name&&(o.name=r.name),o.description==null&&r.description!=null&&(o.description=r.description),o.contextWindowTokens==null&&r.contextWindowTokens!=null&&(o.contextWindowTokens=r.contextWindowTokens),o.tier==null&&r.tier!=null&&(o.tier=r.tier),o.recommended!==true&&r.recommended===true&&(o.recommended=true),o.apiPricing==null&&r.apiPricing!=null&&(o.apiPricing={...r.apiPricing});}return Array.from(t.values())}function on(n){return n.map(e=>{let{apiPricing:t,...r}=e,o=As(e.id);return o?{...r,apiPricing:o}:r})}var Lr,Ps,pe=O(()=>{p();Or();Ot();Bn();Lr={},Ps={};});function Xn(n){return typeof n!="string"?void 0:n.trim()||void 0}function Yn(n){return Xn(n)?.toLowerCase()??""}function Nt(n){try{return Oi.statSync(n).isFile()}catch{return false}}function Nd(n,e){if(n===e)return true;let t=z__namespace.default.relative(n,e);return t!==""&&!t.startsWith("..")&&!z__namespace.default.isAbsolute(t)}function Dd(n,e){if(z__namespace.default.basename(n)!==".bin")return false;let t=z__namespace.default.dirname(n);if(z__namespace.default.basename(t)!=="node_modules")return false;let r=z__namespace.default.dirname(t);return Nd(r,e)}function sn(n,e={}){if(n.includes("/")||n.includes("\\")||z__namespace.default.isAbsolute(n))return n;let t=e.platform??process.platform,r=e.env??process.env,o=z__namespace.default.resolve(e.cwd??process.cwd()),s=(e.resolution??"global_first")==="global_first",i=r.PATH??r.Path??process.env.PATH??process.env.Path??"",a=t==="win32"?";":":",d=i.split(a).map(g=>g.trim()).filter(Boolean),l=z__namespace.default.extname(n).length>0,c=r.PATHEXT??r.Pathext??process.env.PATHEXT??process.env.Pathext??".EXE;.CMD;.BAT;.COM",f=t==="win32"?l?[""]:c.split(";").map(g=>g.trim()).filter(Boolean).map(g=>g.startsWith(".")?g:`.${g}`):[""];for(let g of d){let m=z__namespace.default.resolve(o,g);if(!(s&&Dd(m,o)))for(let _ of f){let y=Yn(_),v=_.toUpperCase();for(let w of [_,y,v]){let k=z__namespace.default.join(m,`${n}${w}`);if(Nt(k))return k}}}return n}function Ld(n,e){return sn(n,{env:e,platform:"win32",resolution:"local_first"})}function $d(n){if(!Nt(n))return null;try{let e=Oi.readFileSync(n,"utf8"),t=z__namespace.default.dirname(n),r=[];for(let a of e.matchAll(/"([^"\r\n]*)"/g)){let c=(a[1]??"").match(/%~?dp0%?\s*[\\/]*(.*)$/i)?.[1]?.trim();if(!c)continue;let f=c.replace(/[\\/]+/g,z__namespace.default.sep).replace(/^[\\/]+/,""),g=z__namespace.default.resolve(t,f);Nt(g)&&r.push(g);}let o=[],s=new Map;for(let a of e.matchAll(/SET\s+"(\w+)=%~?dp0%?[\\/]?([^"]+)"/gi)){let d=a[1].toUpperCase(),l=a[2].trim().replace(/[\\/]+/g,z__namespace.default.sep).replace(/^[\\/]+/,"");s.set(d,z__namespace.default.resolve(t,l));}for(let a of e.split(/\r?\n/))if(a.includes("%*"))for(let d of a.matchAll(/"%(\w+)%"/g)){let l=s.get(d[1].toUpperCase());l&&Nt(l)&&o.push(l);}let i=a=>a.find(d=>{let l=Yn(z__namespace.default.basename(d));return l!=="node.exe"&&l!=="node"})??null;return i(o)??i(r)}catch{return null}}function Ud(n,e){if(typeof e=="string")return Xn(e)||null;if(!e||typeof e!="object")return null;if(n){let t=e[n],r=typeof t=="string"?Xn(t):void 0;if(r)return r}for(let t of Object.values(e)){let r=typeof t=="string"?Xn(t):void 0;if(r)return r}return null}function Bd(n,e){if(!e)return null;let t=z__namespace.default.dirname(n),r=[z__namespace.default.resolve(t,"..",e),z__namespace.default.resolve(t,"node_modules",e)];for(let o of r){let s=z__namespace.default.join(o,"package.json");if(Nt(s))try{let i=JSON.parse(Oi.readFileSync(s,"utf8")),a=Ud(e,i.bin);if(!a)continue;let d=z__namespace.default.resolve(o,a);if(Nt(d))return d}catch{}}return null}function Fd(n){let e=n.platform??process.platform,t=n.env??process.env,r=n.execPath??process.execPath,o=n.cwd,s=n.resolution;if(e!=="win32")return {command:sn(n.command,{cwd:o,env:t,platform:e,resolution:s}),leadingArgv:[],resolution:"direct"};let i=sn(n.command,{cwd:o,env:t,platform:e,resolution:s}),a=Yn(z__namespace.default.extname(i));if(a===".js"||a===".cjs"||a===".mjs")return {command:r,leadingArgv:[i],resolution:"node-entrypoint",windowsHide:true};if(a===".cmd"||a===".bat"){let d=$d(i)??Bd(i,n.packageName);return d?Yn(z__namespace.default.extname(d))===".exe"?{command:d,leadingArgv:[],resolution:"exe-entrypoint",windowsHide:true}:{command:r,leadingArgv:[d],resolution:"node-entrypoint",windowsHide:true}:{command:i,leadingArgv:[],resolution:"unresolved-wrapper"}}return {command:i,leadingArgv:[],resolution:"direct"}}function Wd(n){if(n.candidate.resolution!=="unresolved-wrapper")return {command:n.candidate.command,leadingArgv:n.candidate.leadingArgv,resolution:n.candidate.resolution,windowsHide:n.candidate.windowsHide};if(n.allowShellFallback===true)return {command:n.candidate.command,leadingArgv:[],resolution:"shell-fallback",shell:true};throw new Error(`${z__namespace.default.basename(n.candidate.command)} wrapper resolved, but no executable/Node entrypoint could be resolved without shell execution.`)}function pt(n){let e=Fd(n);return Wd({candidate:e,allowShellFallback:n.allowShellFallback})}function gt(n,e){return {command:n.command,argv:[...n.leadingArgv,...e],resolution:n.resolution,shell:n.shell,windowsHide:n.windowsHide}}var Dt=O(()=>{p();});function jd(n){if(n.type!=="usage"||!("input_tokens"in n))return null;let e=Number(n.input_tokens??0),t=Number(n.output_tokens??0),o="cache_read_input_tokens"in n?Number(n.cache_read_input_tokens):void 0,s="cached_input_tokens"in n?Number(n.cached_input_tokens):void 0,i=o!==void 0?o:s??0;return {inputTokens:o!==void 0?e+o:e,outputTokens:t,cachedInputTokens:i}}function Hd(n){let e=n.usage;if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e;if(!("input_tokens"in t))return null;let r=Number(t.input_tokens??0),o=Number(t.output_tokens??0),i="cache_read_input_tokens"in t?Number(t.cache_read_input_tokens):void 0,a="cached_input_tokens"in t?Number(t.cached_input_tokens):void 0,d=i!==void 0?i:a??0;return {inputTokens:i!==void 0?r+i:r,outputTokens:o,cachedInputTokens:d}}function qd(n){if(n.type!=="step_finish")return null;let t=n.part?.tokens;if(!t)return null;let r=Number(t.input??0),o=Number(t.output??0),s=t.cache,i=s?Number(s.read??0):0;return {inputTokens:r+i,outputTokens:o,cachedInputTokens:i}}function Bs(n){let e=new Map,t;for(let s of n.split(`
|
|
1
|
+
'use strict';var Oi=require('fs'),z=require('path'),crypto$1=require('crypto'),child_process=require('child_process'),string_decoder=require('string_decoder'),sdk=require('@agentclientprotocol/sdk'),jsYaml=require('js-yaml'),jsTiktoken=require('js-tiktoken'),lite=require('js-tiktoken/lite'),Wr=require('js-tiktoken/ranks/o200k_base'),zod=require('zod'),module$1=require('module'),Se=require('handlebars'),promises=require('fs/promises'),events=require('events'),async_hooks=require('async_hooks'),drizzleOrm=require('drizzle-orm'),ss=require('os'),sqliteCore=require('drizzle-orm/sqlite-core'),mcp_js=require('@modelcontextprotocol/sdk/server/mcp.js'),webStandardStreamableHttp_js=require('@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js'),perf_hooks=require('perf_hooks');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var Oi__namespace=/*#__PURE__*/_interopNamespace(Oi);var z__namespace=/*#__PURE__*/_interopNamespace(z);var Wr__default=/*#__PURE__*/_interopDefault(Wr);var Se__namespace=/*#__PURE__*/_interopNamespace(Se);var ss__namespace=/*#__PURE__*/_interopNamespace(ss);var Ir=Object.defineProperty;var qa=Object.getOwnPropertyDescriptor;var za=Object.getOwnPropertyNames;var Ga=Object.prototype.hasOwnProperty;var ae=(n=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(n,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):n)(function(n){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+n+'" is not supported')});var O=(n,e)=>()=>(n&&(e=n(n=0)),e);var Un=(n,e)=>{for(var t in e)Ir(n,t,{get:e[t],enumerable:true});},Ka=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of za(e))!Ga.call(n,o)&&o!==t&&Ir(n,o,{get:()=>e[o],enumerable:!(r=qa(e,o))||r.enumerable});return n};var ws=n=>Ka(Ir({},"__esModule",{value:true}),n);var p=O(()=>{});var ks,Sr,_s,Or=O(()=>{p();ks=["flagship","balanced","speed"],Sr={claude:{models:[{id:"claude-fable-5",name:"Claude Fable 5",contextWindowTokens:1e6,tier:"flagship",recommended:true},{id:"claude-opus-5",name:"Claude Opus 5",contextWindowTokens:1e6,tier:"flagship",recommended:true},{id:"claude-sonnet-5",name:"Claude Sonnet 5",contextWindowTokens:1e6,tier:"balanced",recommended:true},{id:"claude-opus-4-8[1m]",name:"Claude Opus 4.8",contextWindowTokens:1e6,tier:"flagship"},{id:"claude-opus-4-7[1m]",name:"Claude Opus 4.7",contextWindowTokens:1e6,tier:"flagship"},{id:"claude-opus-4-6[1m]",name:"Claude Opus 4.6",contextWindowTokens:1e6,tier:"flagship"},{id:"claude-sonnet-4-6[1m]",name:"Claude Sonnet 4.6",contextWindowTokens:1e6,tier:"balanced"},{id:"claude-haiku-4-5",name:"Claude Haiku 4.5",contextWindowTokens:2e5,tier:"speed"}],modes:[{id:"default",name:"Default",description:"Uses Claude's default permission handling with normal approval prompts."},{id:"acceptEdits",name:"Accept Edits",description:"Allows file edits without approval; other permission checks remain in place."},{id:"plan",name:"Plan",description:"Keeps Claude in plan mode so it can inspect and propose changes without applying them."},{id:"dontAsk",name:"Don't Ask",description:"Does not ask for permissions; only pre-approved tool actions can proceed."},{id:"bypassPermissions",name:"Bypass Permissions",description:"Bypasses Claude permission checks so tools can run without approval prompts."}],effort:["low","medium","high"],modelOverrides:{"claude-fable-5":{effort:["low","medium","high","xhigh","max"],defaultEffort:"high"},"claude-opus-5":{effort:["low","medium","high","xhigh","max"],defaultEffort:"high"},"claude-sonnet-5":{effort:["low","medium","high","xhigh","max"],defaultEffort:"high"},"claude-opus-4-8[1m]":{effort:["low","medium","high","xhigh","max"],defaultEffort:"high"},"claude-opus-4-7[1m]":{effort:["low","medium","high","xhigh","max"],defaultEffort:"high"},"claude-opus-4-6[1m]":{effort:["low","medium","high","max"],defaultEffort:"high"},"claude-sonnet-4-6[1m]":{effort:["low","medium","high","max"],defaultEffort:"high"},"claude-haiku-4-5":{effort:[]}}},codex:{models:[{id:"gpt-5.6-sol",name:"GPT-5.6 Sol",contextWindowTokens:105e4,tier:"flagship",recommended:true},{id:"gpt-5.6-terra",name:"GPT-5.6 Terra",contextWindowTokens:105e4,tier:"balanced",recommended:true},{id:"gpt-5.6-luna",name:"GPT-5.6 Luna",contextWindowTokens:105e4,tier:"speed",recommended:true},{id:"gpt-5.5",name:"GPT-5.5",contextWindowTokens:105e4,tier:"flagship"},{id:"gpt-5.4",name:"GPT-5.4",contextWindowTokens:105e4,tier:"flagship"},{id:"gpt-5.4-mini",name:"GPT-5.4 Mini",contextWindowTokens:4e5,tier:"speed"},{id:"gpt-5.3-codex",name:"GPT-5.3 Codex",contextWindowTokens:4e5,tier:"flagship"},{id:"gpt-5.3-codex-spark",name:"GPT-5.3 Codex Spark",contextWindowTokens:128e3,tier:"speed"}],modes:[{id:"agent",name:"Agent",description:"Uses the workspace-write sandbox; can read and modify workspace files without full machine access."},{id:"read-only",name:"Read Only",description:"Uses the read-only sandbox; can inspect files but cannot write to the workspace."},{id:"plan",name:"Plan",description:"Uses the read-only sandbox for planning and inspection; cannot write to the workspace."},{id:"agent-full-access",name:"Agent Full Access",description:"Bypasses approvals and the sandbox; can access and modify files beyond the workspace."},{id:"yolo",name:"YOLO",description:"Bypasses approvals and the sandbox for unrestricted execution and full filesystem access."}],effort:["minimal","low","medium","high"],modelOverrides:{"gpt-5.6-sol":{effort:["none","low","medium","high","xhigh","max"],defaultEffort:"xhigh"},"gpt-5.6-terra":{effort:["none","low","medium","high","xhigh","max"],defaultEffort:"high"},"gpt-5.6-luna":{effort:["none","low","medium","high","xhigh","max"],defaultEffort:"high"},"gpt-5.5":{effort:["minimal","low","medium","high","xhigh"],defaultEffort:"high"}}},opencode:{models:[],modes:[{id:"plan",name:"Plan",description:"Uses the plan agent without --auto; planning follows standard approval behavior."},{id:"plan-auto",name:"Plan \xB7 Auto",description:"Uses the plan agent with --auto; planning uses automatic approvals."},{id:"build",name:"Build",description:"Uses the build agent without --auto; work follows standard approval behavior."},{id:"build-auto",name:"Build \xB7 Auto",description:"Uses the build agent with --auto; work uses automatic approvals."}],effort:[],modelOverrides:{}},copilot:{models:[{id:"auto",name:"Auto"},{id:"claude-sonnet-5",name:"Claude Sonnet 5",contextWindowTokens:1e6,tier:"balanced"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6",contextWindowTokens:1e6,tier:"balanced"},{id:"gpt-5.5",name:"GPT-5.5",contextWindowTokens:105e4,tier:"flagship"},{id:"gpt-5.4",name:"GPT-5.4",contextWindowTokens:105e4,tier:"flagship"},{id:"gemini-3.1-pro",name:"Gemini 3.1 Pro",contextWindowTokens:1048576,tier:"flagship"}],modes:[{id:"interactive",name:"Interactive",description:"Passes --mode interactive; tool access follows Copilot's interactive mode behavior."},{id:"plan",name:"Plan",description:"Passes --mode plan; planning and permission behavior follow Copilot's plan mode."},{id:"autopilot",name:"Autopilot",description:"Passes --mode autopilot; execution behavior follows Copilot's autonomous mode."}],effort:["none","low","medium","high","xhigh","max"],modelOverrides:{}},antigravity:{models:[{id:"gemini-3.6-flash-high",name:"Gemini 3.6 Flash (High)",contextWindowTokens:1048576,tier:"balanced"},{id:"gemini-3.6-flash-medium",name:"Gemini 3.6 Flash (Medium)",contextWindowTokens:1048576,tier:"balanced"},{id:"gemini-3.6-flash-low",name:"Gemini 3.6 Flash (Low)",contextWindowTokens:1048576,tier:"balanced"},{id:"Gemini 3.5 Flash (Medium)",name:"Gemini 3.5 Flash (Medium)",contextWindowTokens:1048576,tier:"balanced"},{id:"Gemini 3.5 Flash (High)",name:"Gemini 3.5 Flash (High)",contextWindowTokens:1048576,tier:"balanced"},{id:"Gemini 3.5 Flash (Low)",name:"Gemini 3.5 Flash (Low)",contextWindowTokens:1048576,tier:"balanced"},{id:"Gemini 3.1 Pro (Low)",name:"Gemini 3.1 Pro (Low)",contextWindowTokens:1048576,tier:"flagship"},{id:"Gemini 3.1 Pro (High)",name:"Gemini 3.1 Pro (High)",contextWindowTokens:1048576,tier:"flagship"},{id:"Claude Sonnet 4.6 (Thinking)",name:"Claude Sonnet 4.6 (Thinking)",contextWindowTokens:1e6,tier:"balanced"},{id:"Claude Opus 4.6 (Thinking)",name:"Claude Opus 4.6 (Thinking)",contextWindowTokens:1e6,tier:"flagship"},{id:"GPT-OSS 120B (Medium)",name:"GPT-OSS 120B (Medium)",contextWindowTokens:128e3,tier:"balanced"}],modes:[],effort:[],modelOverrides:{}},grok:{models:[{id:"grok-4.6",name:"Grok 4.6",contextWindowTokens:5e5,tier:"flagship",recommended:true},{id:"grok-4.5",name:"Grok 4.5",contextWindowTokens:5e5,tier:"flagship"}],modes:[{id:"agent",name:"Agent",description:"Automatically approves tool calls inside the workspace sandbox; it cannot access the rest of the machine."},{id:"read-only",name:"Read Only",description:"Uses a read-only sandbox and plan permission mode; it can inspect files but cannot modify the workspace."},{id:"plan",name:"Plan",description:"Uses plan permission mode with a read-only sandbox; it can inspect and propose work but cannot modify files."},{id:"agent-full-access",name:"Agent Full Access",description:"Automatically approves tool calls with the sandbox disabled; it can access and modify files across the machine."},{id:"yolo",name:"YOLO",description:"Automatically approves tool calls with the sandbox disabled; it can access and modify files across the machine."}],effort:["low","medium","high"],modelOverrides:{"grok-4.6":{effort:["low","medium","high","xhigh"],defaultEffort:"high"},"grok-4.5":{effort:["low","medium","high"],defaultEffort:"high"}}}},_s={version:1,providers:{"cli/codex":{model:"gpt-5.6-sol",query:{mode:"agent",effort:"high"},execute:{mode:"agent-full-access",effort:"xhigh"}},"cli/claude":{model:"claude-opus-5",query:{mode:"default",effort:"high"},execute:{mode:"bypassPermissions",effort:"xhigh"}},"cli/grok":{model:"grok-4.6",query:{mode:"agent",effort:"high"},execute:{mode:"agent-full-access",effort:"xhigh"}}}},Object.fromEntries(Object.entries(Sr).map(([n,e])=>[n,e.models]));});var at,Mr,vs,Nr=O(()=>{p();at={"claude-fable-5":{input:10,cachedInput:1,output:50},"claude-opus-5":{input:5,cachedInput:.5,output:25},"claude-opus-4-8":{input:5,cachedInput:.5,output:25},"claude-opus-4-7":{input:5,cachedInput:.5,output:25},"claude-opus-4-6":{input:5,cachedInput:.5,output:25},"claude-sonnet-5":{input:2,cachedInput:.2,output:10},"claude-sonnet-4-6":{input:3,cachedInput:.3,output:15},"claude-haiku-4-5":{input:1,cachedInput:.1,output:5},"gpt-5.6-sol":{input:5,cachedInput:.5,output:30},"gpt-5.6-terra":{input:2,cachedInput:.2,output:12},"gpt-5.6-luna":{input:.2,cachedInput:.02,output:1.2},"gpt-5.5":{input:5,cachedInput:.5,output:30},"gpt-5.4":{input:2.5,cachedInput:.25,output:15},"gpt-5.4-mini":{input:.75,cachedInput:.075,output:4.5},"gpt-5.3-codex":{input:1.75,cachedInput:.175,output:14},"gpt-5-mini":{input:.4,cachedInput:.1,output:1.6},"gpt-4.1":{input:2,cachedInput:.5,output:8},"gpt-4o":{input:2.5,cachedInput:1.25,output:10},"glm-5.2":{input:1.4,cachedInput:.26,output:4.4},"glm-5.1":{input:1.4,cachedInput:.26,output:4.4},"gemini-3.6-flash":{input:1.5,cachedInput:.15,output:7.5},"grok-4.6":{input:2,cachedInput:.5,output:6},"grok-4.5":{input:2,cachedInput:.3,output:6}},Mr=new Set(["gpt-5.3-codex-spark"]),vs=new Set(["Claude Opus 4.6 (Thinking)","Claude Sonnet 4.6 (Thinking)","GPT-OSS 120B (Medium)","Gemini 3.1 Pro (High)","Gemini 3.1 Pro (Low)","Gemini 3.5 Flash (High)","Gemini 3.5 Flash (Low)","Gemini 3.5 Flash (Medium)","auto","claude-fable-5","claude-haiku-4-5","claude-opus-4-6[1m]","claude-opus-4-7[1m]","claude-opus-4-8[1m]","claude-opus-5","claude-sonnet-4-6","claude-sonnet-4-6[1m]","claude-sonnet-5","gemini-3.1-pro","gemini-3.6-flash-high","gemini-3.6-flash-low","gemini-3.6-flash-medium","gpt-5.3-codex","gpt-5.3-codex-spark","gpt-5.4","gpt-5.4-mini","gpt-5.5","gpt-5.6-luna","gpt-5.6-sol","gpt-5.6-terra","grok-4.5","grok-4.6"]);});function Es(n){Qt=n;}function Ts(n){xs=Object.fromEntries(Object.entries(n).map(([e,t])=>[e,{...t}]));}function Dr(n){let e=n.toLowerCase().trim();e=e.replace(/\[[^\]]*\]$/g,"");let t=e.lastIndexOf("/");return t>=0&&(e=e.slice(t+1)),e=e.replace(/-\d{8}$/,""),e}function Xa(n){if(!n)return;let e="inputPerMillionTokensUsd"in n?n.inputPerMillionTokensUsd:n.input,t="outputPerMillionTokensUsd"in n?n.outputPerMillionTokensUsd:n.output;if(!(!Number.isFinite(e)||e<=0||!Number.isFinite(t)||t<=0))return {inputPerMillionTokensUsd:e,outputPerMillionTokensUsd:t}}function As(n){if(!n)return;let e=n.replace(/\[[^\]]*\]$/g,"");return Xa(xs[e]??at[e])}function Ya(n){if(!n)return console.warn("[pricing] missing model id; cost is being recorded as 0"),Yt;let e=Dr(n),t=Ja[e];if(t)return Qt[t]??at[t]??Yt;if(Qt[e])return Qt[e];if(at[e])return at[e];if(Mr.has(e))return console.warn(`[pricing] unpublished model pricing: ${n}, cost_usd=0`),Yt;if(vs.has(e))return console.warn(`[pricing] missing catalog pricing: ${n}, cost_usd=0`),Yt;let r={...at,...Qt};for(let o of Object.keys(r))if(e.includes(o))return r[o];return console.warn(`[pricing] Unknown model: ${n}, cost_usd=0`),Yt}function Qa(n,e,t,r=0,o){let s=Ya(t),i=Math.min(r,n),d=(n-i)*s.input/1e6,l=i*s.cachedInput/1e6,c=e*s.output/1e6;return d+l+c}function Rs(n,e,t,r,o,s){return n&&n>0?n:!e&&!t?0:Qa(e??0,t??0,o,r??0)}var Ja,Yt,Qt,xs,Ot=O(()=>{p();Nr();Nr();Ja={opus:"claude-opus-4-8",sonnet:"claude-sonnet-4-6",haiku:"claude-haiku-4-5","codex-mini":"gpt-5.3-codex",codex:"gpt-5.3-codex"},Yt={input:0,cachedInput:0,output:0},Qt={},xs={};});function Zt(n){return td.get(n)??n}exports.CLAUDE_OPUS_4_8_BASE_MODEL_ID=void 0;exports.CLAUDE_OPUS_4_8_LEGACY_MODEL_ID=void 0;exports.CLAUDE_MODEL_COMPATIBILITY_PAIRS=void 0;var td,Bn=O(()=>{p();exports.CLAUDE_OPUS_4_8_BASE_MODEL_ID="claude-opus-4-8",exports.CLAUDE_OPUS_4_8_LEGACY_MODEL_ID="claude-opus-4-8[1m]",exports.CLAUDE_MODEL_COMPATIBILITY_PAIRS=[{baseModelId:"claude-opus-4-8",catalogModelId:"claude-opus-4-8[1m]"},{baseModelId:"claude-opus-4-7",catalogModelId:"claude-opus-4-7[1m]"},{baseModelId:"claude-opus-4-6",catalogModelId:"claude-opus-4-6[1m]"},{baseModelId:"claude-sonnet-4-6",catalogModelId:"claude-sonnet-4-6[1m]"}],td=new Map(exports.CLAUDE_MODEL_COMPATIBILITY_PAIRS.map(({baseModelId:n,catalogModelId:e})=>[n,e]));});function Cs(){return {models:[],modes:[],effort:[],modelOverrides:{}}}function nd(n){return Array.isArray(n)?{models:n,modes:[],effort:[],modelOverrides:{}}:n?{models:n.models??[],modes:n.modes??[],effort:n.effort??[],modelOverrides:n.modelOverrides??{}}:Cs()}function $r(n){Lr=Object.fromEntries(Object.entries(n).map(([e,t])=>[e,nd(t)]));}function rd(){Lr={};}function en(n){Ps={...n};}function Ne(n){return De(n).models}function De(n){return Lr[n]??Sr[n]??Cs()}function Fn(n){return Ps[n]??_s.providers[n]}function tn(n){return De(n).modes}function dt(n,e){let t=De(n);return e?t.modelOverrides[Zt(e)]?.effort??t.effort:t.effort}function Is(n){return De(n).modelOverrides}function nn(){return Ne("claude")}function Ur(){return Ne("codex")}function Br(){return Ne("copilot")}function Fr(){return Ne("antigravity")}function rn(n,e){let t=new Map;for(let r of [...n,...e]){let o=t.get(r.id);if(!o){let{apiPricing:s,recommended:i,...a}=r;t.set(r.id,{...a,...i===true?{recommended:true}:{},...s!=null?{apiPricing:{...s}}:{}});continue}!o.name&&r.name&&(o.name=r.name),o.description==null&&r.description!=null&&(o.description=r.description),o.contextWindowTokens==null&&r.contextWindowTokens!=null&&(o.contextWindowTokens=r.contextWindowTokens),o.tier==null&&r.tier!=null&&(o.tier=r.tier),o.recommended!==true&&r.recommended===true&&(o.recommended=true),o.apiPricing==null&&r.apiPricing!=null&&(o.apiPricing={...r.apiPricing});}return Array.from(t.values())}function on(n){return n.map(e=>{let{apiPricing:t,...r}=e,o=As(e.id);return o?{...r,apiPricing:o}:r})}var Lr,Ps,pe=O(()=>{p();Or();Ot();Bn();Lr={},Ps={};});function Xn(n){return typeof n!="string"?void 0:n.trim()||void 0}function Yn(n){return Xn(n)?.toLowerCase()??""}function Nt(n){try{return Oi.statSync(n).isFile()}catch{return false}}function Nd(n,e){if(n===e)return true;let t=z__namespace.default.relative(n,e);return t!==""&&!t.startsWith("..")&&!z__namespace.default.isAbsolute(t)}function Dd(n,e){if(z__namespace.default.basename(n)!==".bin")return false;let t=z__namespace.default.dirname(n);if(z__namespace.default.basename(t)!=="node_modules")return false;let r=z__namespace.default.dirname(t);return Nd(r,e)}function sn(n,e={}){if(n.includes("/")||n.includes("\\")||z__namespace.default.isAbsolute(n))return n;let t=e.platform??process.platform,r=e.env??process.env,o=z__namespace.default.resolve(e.cwd??process.cwd()),s=(e.resolution??"global_first")==="global_first",i=r.PATH??r.Path??process.env.PATH??process.env.Path??"",a=t==="win32"?";":":",d=i.split(a).map(g=>g.trim()).filter(Boolean),l=z__namespace.default.extname(n).length>0,c=r.PATHEXT??r.Pathext??process.env.PATHEXT??process.env.Pathext??".EXE;.CMD;.BAT;.COM",f=t==="win32"?l?[""]:c.split(";").map(g=>g.trim()).filter(Boolean).map(g=>g.startsWith(".")?g:`.${g}`):[""];for(let g of d){let m=z__namespace.default.resolve(o,g);if(!(s&&Dd(m,o)))for(let _ of f){let y=Yn(_),v=_.toUpperCase();for(let w of [_,y,v]){let k=z__namespace.default.join(m,`${n}${w}`);if(Nt(k))return k}}}return n}function Ld(n,e){return sn(n,{env:e,platform:"win32",resolution:"local_first"})}function $d(n){if(!Nt(n))return null;try{let e=Oi.readFileSync(n,"utf8"),t=z__namespace.default.dirname(n),r=[];for(let a of e.matchAll(/"([^"\r\n]*)"/g)){let c=(a[1]??"").match(/%~?dp0%?\s*[\\/]*(.*)$/i)?.[1]?.trim();if(!c)continue;let f=c.replace(/[\\/]+/g,z__namespace.default.sep).replace(/^[\\/]+/,""),g=z__namespace.default.resolve(t,f);Nt(g)&&r.push(g);}let o=[],s=new Map;for(let a of e.matchAll(/SET\s+"(\w+)=%~?dp0%?[\\/]?([^"]+)"/gi)){let d=a[1].toUpperCase(),l=a[2].trim().replace(/[\\/]+/g,z__namespace.default.sep).replace(/^[\\/]+/,"");s.set(d,z__namespace.default.resolve(t,l));}for(let a of e.split(/\r?\n/))if(a.includes("%*"))for(let d of a.matchAll(/"%(\w+)%"/g)){let l=s.get(d[1].toUpperCase());l&&Nt(l)&&o.push(l);}let i=a=>a.find(d=>{let l=Yn(z__namespace.default.basename(d));return l!=="node.exe"&&l!=="node"})??null;return i(o)??i(r)}catch{return null}}function Ud(n,e){if(typeof e=="string")return Xn(e)||null;if(!e||typeof e!="object")return null;if(n){let t=e[n],r=typeof t=="string"?Xn(t):void 0;if(r)return r}for(let t of Object.values(e)){let r=typeof t=="string"?Xn(t):void 0;if(r)return r}return null}function Bd(n,e){if(!e)return null;let t=z__namespace.default.dirname(n),r=[z__namespace.default.resolve(t,"..",e),z__namespace.default.resolve(t,"node_modules",e)];for(let o of r){let s=z__namespace.default.join(o,"package.json");if(Nt(s))try{let i=JSON.parse(Oi.readFileSync(s,"utf8")),a=Ud(e,i.bin);if(!a)continue;let d=z__namespace.default.resolve(o,a);if(Nt(d))return d}catch{}}return null}function Fd(n){let e=n.platform??process.platform,t=n.env??process.env,r=n.execPath??process.execPath,o=n.cwd,s=n.resolution;if(e!=="win32")return {command:sn(n.command,{cwd:o,env:t,platform:e,resolution:s}),leadingArgv:[],resolution:"direct"};let i=sn(n.command,{cwd:o,env:t,platform:e,resolution:s}),a=Yn(z__namespace.default.extname(i));if(a===".js"||a===".cjs"||a===".mjs")return {command:r,leadingArgv:[i],resolution:"node-entrypoint",windowsHide:true};if(a===".cmd"||a===".bat"){let d=$d(i)??Bd(i,n.packageName);return d?Yn(z__namespace.default.extname(d))===".exe"?{command:d,leadingArgv:[],resolution:"exe-entrypoint",windowsHide:true}:{command:r,leadingArgv:[d],resolution:"node-entrypoint",windowsHide:true}:{command:i,leadingArgv:[],resolution:"unresolved-wrapper"}}return {command:i,leadingArgv:[],resolution:"direct"}}function Wd(n){if(n.candidate.resolution!=="unresolved-wrapper")return {command:n.candidate.command,leadingArgv:n.candidate.leadingArgv,resolution:n.candidate.resolution,windowsHide:n.candidate.windowsHide};if(n.allowShellFallback===true)return {command:n.candidate.command,leadingArgv:[],resolution:"shell-fallback",shell:true};throw new Error(`${z__namespace.default.basename(n.candidate.command)} wrapper resolved, but no executable/Node entrypoint could be resolved without shell execution.`)}function pt(n){let e=Fd(n);return Wd({candidate:e,allowShellFallback:n.allowShellFallback})}function gt(n,e){return {command:n.command,argv:[...n.leadingArgv,...e],resolution:n.resolution,shell:n.shell,windowsHide:n.windowsHide}}var Dt=O(()=>{p();});function jd(n){if(n.type!=="usage"||!("input_tokens"in n))return null;let e=Number(n.input_tokens??0),t=Number(n.output_tokens??0),o="cache_read_input_tokens"in n?Number(n.cache_read_input_tokens):void 0,s="cached_input_tokens"in n?Number(n.cached_input_tokens):void 0,i=o!==void 0?o:s??0;return {inputTokens:o!==void 0?e+o:e,outputTokens:t,cachedInputTokens:i}}function Hd(n){let e=n.usage;if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e;if(!("input_tokens"in t))return null;let r=Number(t.input_tokens??0),o=Number(t.output_tokens??0),i="cache_read_input_tokens"in t?Number(t.cache_read_input_tokens):void 0,a="cached_input_tokens"in t?Number(t.cached_input_tokens):void 0,d=i!==void 0?i:a??0;return {inputTokens:i!==void 0?r+i:r,outputTokens:o,cachedInputTokens:d}}function qd(n){if(n.type!=="step_finish")return null;let t=n.part?.tokens;if(!t)return null;let r=Number(t.input??0),o=Number(t.output??0),s=t.cache,i=s?Number(s.read??0):0;return {inputTokens:r+i,outputTokens:o,cachedInputTokens:i}}function Bs(n){let e=new Map,t;for(let s of n.split(`
|
|
2
2
|
`))if(s.trim())try{let i=JSON.parse(s);if(i.type!=="assistant")continue;let a=i.message,d=a?.id,l=a?.usage;if(typeof d!="string"||!l)continue;let c=Number(l.input_tokens??0),f=Number(l.cache_read_input_tokens??0);e.set(d,{inputTokens:c+f,cachedInputTokens:f});let g=a?.model;typeof g=="string"&&g&&(t=g);}catch{}if(e.size===0)return;let r=0,o=0;for(let s of e.values())r+=s.inputTokens,o+=s.cachedInputTokens;return {inputTokens:r,cachedInputTokens:o,model:t}}function $e(n){if(!n||!n.trim())return;let e=null,t=null;for(let r of n.split(`
|
|
3
3
|
`))if(r.trim())try{let o=JSON.parse(r),s=qd(o);if(s){t||(t={inputTokens:0,outputTokens:0,cachedInputTokens:0}),t.inputTokens+=s.inputTokens,t.outputTokens+=s.outputTokens,t.cachedInputTokens+=s.cachedInputTokens;continue}let i=jd(o)??Hd(o);i&&(e=i);}catch{}return t||(e??void 0)}var ft=O(()=>{p();});exports.ProviderError=void 0;var mt,yt,Lt=O(()=>{p();exports.ProviderError=class extends Error{constructor(t,r,o){super(t);this.providerStr=r;this.name="ProviderError",this.code=o?.code??"UNKNOWN",this.kind=o?.kind??(this.code==="UNKNOWN"?"transient":void 0),this.retryAfterMs=o?.retryAfterMs;}providerStr;code;kind;retryAfterMs;stdout},mt=class extends exports.ProviderError{constructor(e,t){super(e,t,{code:"TIMEOUT_IDLE",kind:"permanent"}),this.name="IdleTimeoutError";}},yt=class extends exports.ProviderError{constructor(e,t){super(e,t,{code:"TIMEOUT_TOTAL",kind:"permanent"}),this.name="TotalTimeoutError";}};});exports.RateLimitError=void 0;var Qn=O(()=>{p();Lt();exports.RateLimitError=class extends exports.ProviderError{name="RateLimitError";constructor(e,t="cli/claude"){super(e,t,{code:"QUOTA_EXHAUSTED",kind:"transient"});}};});function he(n){return /crewx\s+(x|execute)\s/.test(n)}function we(n,e){let t=e.match(/@(\S+)/);return {timestamp:n,type:"agent_call",targetAgent:t?.[1]?.replace(/["']/g,""),toolInput:e}}var $t=O(()=>{p();});function ke(n){if(typeof n=="string")return n;if(!n||typeof n!="object")return JSON.stringify(n??{});let e=n;return typeof e.command=="string"?e.command:typeof e.file_path=="string"?e.file_path:typeof e.filePath=="string"?e.filePath:typeof e.path=="string"?e.path:typeof e.query=="string"?e.query:typeof e.pattern=="string"?e.pattern:typeof e.url=="string"?e.url:typeof e.prompt=="string"?e.prompt.length>200?e.prompt.slice(0,200)+"\u2026":e.prompt:typeof e.description=="string"?e.description:JSON.stringify(e)}var Ut=O(()=>{p();});function ht(n){return zd[n]??n}function Vr(n){if(!n)return "";let e=n.lastIndexOf("/");return e===-1?n.trim():n.slice(e+1).trim()}function Fs(n){if(!n)return false;let e=De(n);return e.models.length>0||e.modes.length>0||e.effort.length>0||Object.keys(e.modelOverrides).length>0}function Ws(n,e){if(!n)return false;let t=De(n),r=typeof e=="string"?Zt(e):void 0;return t.models.length>0||t.effort.length>0||r!=null&&Array.isArray(t.modelOverrides[r]?.effort)}function Jr(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)}function Gd(n,e,t){let r=n,o=false,s=false,i=[],a=()=>(o||(r={...n},o=true),r),d=typeof r.provider=="string"&&r.provider.trim()?Vr(r.provider):e,l=typeof r.model=="string"&&r.model.trim()?r.model.trim():t;if(Fs(d)){if(typeof r.mode=="string"){let f=d==="claude"?ht(r.mode):r.mode,g=tn(d).map(m=>d==="claude"?ht(m.id):m.id);f!==r.mode&&(a().mode=f,s=true),g.includes(f)||(delete a().mode,i.push("mode"));}typeof r.effort=="string"&&Ws(d,l)&&(dt(d,l).includes(r.effort)||(delete a().effort,i.push("effort")));}let c=r.overdrive;if(Jr(c)){let f=Vr(typeof c.provider=="string"?c.provider:void 0),g=typeof c.model=="string"?c.model:void 0;if(Fs(f)){let m,_=()=>(m||(m={...c},a().overdrive=m),m);if(typeof c.mode=="string"){let y=f==="claude"?ht(c.mode):c.mode,v=tn(f).map(w=>f==="claude"?ht(w.id):w.id);y!==c.mode&&(_().mode=y,s=true),v.includes(y)||(delete _().mode,i.push("overdrive.mode"));}typeof c.effort=="string"&&Ws(f,g)&&(dt(f,g).includes(c.effort)||(delete _().effort,i.push("overdrive.effort")));}}return {block:r,removed:i,changed:s}}function Kd(n){let{options:e}=n;if(!Jr(e))return {options:e,changed:false,removed:[]};let t=Vr(n.provider),r=[],o=false,s=e,i=false,a=()=>(i||(s={...e},i=true),s);for(let d of ["query","execute"]){let l=e[d];if(!Jr(l))continue;let{block:c,removed:f,changed:g}=Gd(l,t,n.model);(g||f.length>0)&&(a()[d]=c,r.push(...f.map(m=>`${d}.${m}`)),o=true);}return {options:s,changed:o,removed:r}}var zd,Xr=O(()=>{p();pe();Bn();zd={auto:"default"};});function Bt(n){if(!n)return {};let e=n.match(/^(.+?)\[([^\]]+)\]$/);if(e){let t=e[2].toLowerCase();return Vd.has(t)?{model:e[1],effort:e[2]}:{model:n}}return {model:n}}function js(n){switch(n){case "agent-full-access":case "yolo":return ["--dangerously-bypass-approvals-and-sandbox"];case "read-only":case "plan":return ["--sandbox","read-only"];case "agent":return ["--sandbox","workspace-write"];default:return []}}function Hs(n){switch(n){case "agent-full-access":case "yolo":return ["--dangerously-bypass-approvals-and-sandbox"];case "read-only":case "plan":return ["-c","sandbox_mode=read-only"];case "agent":return ["-c","sandbox_mode=workspace-write"];default:return []}}function qs(n){return n?["-c",`model_reasoning_effort=${n}`]:[]}function zs(n){if(!n)return [];let e=new Set(["acceptEdits","bypassPermissions","default","delegate","dontAsk","plan"]),t=ht(n);return e.has(t)?["--permission-mode",t]:[]}function Gs(n){return n?new Set(["low","medium","high","xhigh","max"]).has(n)?["--effort",n]:[]:[]}function Ks(n){switch(n){case "plan":case "read-only":return ["--permission-mode","plan","--sandbox","read-only"];case "agent":return ["--always-approve","--sandbox","workspace"];case "agent-full-access":case "yolo":return ["--always-approve","--sandbox","off"];case "default":case "acceptEdits":case "auto":case "dontAsk":case "bypassPermissions":return ["--permission-mode",n];default:return []}}function Vs(n){return n?new Set(["low","medium","high","xhigh"]).has(n)?["--effort",n]:[]:[]}var Vd,Zn=O(()=>{p();Xr();Vd=new Set(["minimal","low","medium","high","xhigh","max"]);});function Xd(n){let t=n.message?.content;return Array.isArray(t)?t.map(r=>typeof r.text=="string"?r.text.trim():"").filter(Boolean).join(`
|
|
4
4
|
|
package/dist/plugins/index.js
CHANGED
|
@@ -10,7 +10,7 @@ Message: ${n.message}
|
|
|
10
10
|
[${r}] INFO: Process closed with exit code: ${n.error?1:0}
|
|
11
11
|
`;fs.appendFileSync(s,i,"utf8"),this.logFiles.delete(n.traceId);}catch{}}));}detach(t){this.unsubs.forEach(n=>n()),this.unsubs=[],this.logFiles.clear();}};function Zt(d){let t=B__namespace.resolve(d);return process.platform==="win32"&&(t=t.replace(/\\/g,"/"),t=t.replace(/^([A-Z]):/,(n,s)=>`${s.toLowerCase()}:`)),t.length>1&&!/^[a-zA-Z]:\/$/.test(t)&&(t=t.replace(/\/+$/,"")),t}function It(d){let t=Zt(d);return crypto.createHash("sha256").update(t).digest("hex")}var et=class{resolveDbPath(){return process.env.CREWX_DB?process.env.CREWX_DB:process.env.CREWX_TRACES_DB?process.env.CREWX_TRACES_DB:B.join(ne__default.default.homedir(),".crewx","crewx.db")}resolveDbPaths(){return [this.resolveDbPath()]}isMissingTableError(t){return t instanceof Error&&/no such table:/i.test(t.message)}dbExists(t){return fs.existsSync(t??this.resolveDbPath())}};function T(d){let t=at("better-sqlite3"),{drizzle:n}=at("drizzle-orm/better-sqlite3"),s=new t(d);return s.exec("PRAGMA journal_mode = WAL"),s.exec("PRAGMA busy_timeout = 5000"),s.exec("PRAGMA foreign_keys = ON"),s.exec("PRAGMA analysis_limit = 400"),s.exec("PRAGMA optimize"),{db:n(s),runRaw:(r,o=[])=>s.prepare(r).run(...o),close:()=>s.close()}}var $t=new Set,se={agent_id:"TEXT",status:"TEXT DEFAULT 'running'",started_at:"TEXT",trace_id:"TEXT",parent_task_id:"TEXT",crewx_version:"TEXT",pid:"INTEGER",thread_id:"TEXT",workspace_id:"TEXT",workspace_ref:"TEXT",workspace_name:"TEXT",project_id:"TEXT",project_name:"TEXT"};function Et(d,t){return (d.get(`SELECT count(*) as cnt FROM sqlite_master WHERE type='table' AND name='${t}'`)?.cnt??0)>0}function re(d,t){if(t>0||!Et(d,"tasks"))return;let n=d.all("PRAGMA table_info(tasks)"),s=new Set(n.map(r=>r.name));for(let[r,o]of Object.entries(se))s.has(r)||d.run(`ALTER TABLE tasks ADD COLUMN ${r} ${o}`);}var oe={"0002_normalize_task_names":{workspace_name:"TEXT",project_name:"TEXT"}};function ie(d,t,n){if(!Et(d,"__drizzle_migrations")||!Et(d,"tasks"))return;let s=d.all(n`SELECT hash FROM __drizzle_migrations`),r=new Set(s.map(i=>i.hash)),o=JSON.parse(fs.readFileSync(B__namespace.default.join(t,"meta/_journal.json"),"utf-8"));for(let i of o.entries){let a=oe[i.tag];if(!a)continue;let c=B__namespace.default.join(t,`${i.tag}.sql`);if(!fs.existsSync(c))continue;let l=fs.readFileSync(c,"utf-8"),u=crypto.createHash("sha256").update(l).digest("hex");if(r.has(u))continue;let h=d.all("PRAGMA table_info(tasks)"),g=new Set(h.map(R=>R.name));for(let[R,A]of Object.entries(a))g.has(R)||(d.run(`ALTER TABLE tasks ADD COLUMN ${R} ${A}`),g.add(R));}}function ae(d,t,n){let s=d.all(n`SELECT hash FROM __drizzle_migrations`),r=new Set(s.map(i=>i.hash)),o=JSON.parse(fs.readFileSync(B__namespace.default.join(t,"meta/_journal.json"),"utf-8"));for(let i of o.entries){let a=B__namespace.default.join(t,`${i.tag}.sql`);if(!fs.existsSync(a))continue;let c=fs.readFileSync(a,"utf-8"),l=crypto.createHash("sha256").update(c).digest("hex");if(r.has(l))continue;let u=/ALTER\s+TABLE\s+[`"]?(\w+)[`"]?\s+ADD\s+[`"]?(\w+)[`"]?/gi,h=[],g;for(;(g=u.exec(c))!==null;)h.push({table:g[1],column:g[2]});if(h.length===0||!c.split(/-->\s*statement-breakpoint/).map(C=>C.trim()).filter(Boolean).every(C=>/^ALTER\s+TABLE\s+.+\s+ADD\s+/i.test(C)))continue;h.every(({table:C,column:I})=>d.all(`PRAGMA table_info("${C}")`).some(U=>U.name===I))&&d.run(n`INSERT INTO __drizzle_migrations (hash, created_at) VALUES (${l}, ${i.when})`);}}function de(d){let{migrate:t}=at("drizzle-orm/better-sqlite3/migrator"),{sql:n}=at("drizzle-orm"),s=[B__namespace.default.join(__dirname,"../migrations"),B__namespace.default.join(__dirname,"migrations"),B__namespace.default.join(__dirname,"../../../../drizzle/migrations"),B__namespace.default.join(process.cwd(),"drizzle/migrations")],r=s.find(l=>fs.existsSync(B__namespace.default.join(l,"meta/_journal.json")));if(!r)throw new Error(`migrations folder not found. Searched:
|
|
12
12
|
${s.join(`
|
|
13
|
-
`)}`);let o=d.get(n`SELECT count(*) as cnt FROM sqlite_master WHERE type='table' AND name='__drizzle_migrations'`),i=0;o?.cnt&&(i=d.get(n`SELECT count(*) as cnt FROM __drizzle_migrations`)?.cnt??0),re(d,i),o?.cnt&&(ae(d,r,n),ie(d,r,n)),t(d,{migrationsFolder:r});let c=(d.get(n`SELECT count(*) as cnt FROM __drizzle_migrations`)?.cnt??0)-i;if(c>0){let l=o?.cnt?"Database migrated":"Database initialized";console.error(`[crewx] ${l} (${c} migration${c>1?"s":""} applied).`);}}function lt(d,t){$t.has(t)||(de(d),$t.add(t));}var _=class extends Error{code;cause;constructor(t,n,s){super(n),this.name="RepositoryError",this.code=t,this.cause=s,Object.setPrototypeOf(this,new.target.prototype);}};var nt=sqliteCore.sqliteTable("workspaces",{id:sqliteCore.text("id").primaryKey(),slug:sqliteCore.text("slug").notNull().unique(),name:sqliteCore.text("name").notNull(),workspace_path:sqliteCore.text("workspace_path"),description:sqliteCore.text("description"),is_active:sqliteCore.integer("is_active").notNull().default(1),created_at:sqliteCore.text("created_at").notNull(),updated_at:sqliteCore.text("updated_at").notNull()});var e=sqliteCore.sqliteTable("tasks",{id:sqliteCore.text("id").primaryKey(),agent_id:sqliteCore.text("agent_id").notNull(),user_id:sqliteCore.text("user_id"),prompt:sqliteCore.text("prompt").notNull(),mode:sqliteCore.text("mode").notNull().default("execute"),status:sqliteCore.text("status").notNull().default("running"),result:sqliteCore.text("result"),error:sqliteCore.text("error"),started_at:sqliteCore.text("started_at").notNull(),completed_at:sqliteCore.text("completed_at"),duration_ms:sqliteCore.integer("duration_ms"),metadata:sqliteCore.text("metadata"),workspace_id:sqliteCore.text("workspace_id"),trace_id:sqliteCore.text("trace_id"),parent_task_id:sqliteCore.text("parent_task_id"),caller_agent_id:sqliteCore.text("caller_agent_id"),model:sqliteCore.text("model"),platform:sqliteCore.text("platform").default("cli"),crewx_version:sqliteCore.text("crewx_version"),input_tokens:sqliteCore.integer("input_tokens").default(0),output_tokens:sqliteCore.integer("output_tokens").default(0),cost_usd:sqliteCore.real("cost_usd").default(0),pid:sqliteCore.integer("pid"),rendered_prompt:sqliteCore.text("rendered_prompt"),command:sqliteCore.text("command"),coding_agent_command:sqliteCore.text("coding_agent_command"),exit_code:sqliteCore.integer("exit_code"),logs:sqliteCore.text("logs"),thread_id:sqliteCore.text("thread_id"),workspace_ref:sqliteCore.text("workspace_ref"),project_id:sqliteCore.text("project_id"),project_ref:sqliteCore.text("project_ref"),cached_input_tokens:sqliteCore.integer("cached_input_tokens").default(0),run_epoch:sqliteCore.integer("run_epoch").default(0)},d=>({idx_tasks_agent_id:sqliteCore.index("idx_tasks_agent_id").on(d.agent_id),idx_tasks_status:sqliteCore.index("idx_tasks_status").on(d.status),idx_tasks_started_at:sqliteCore.index("idx_tasks_started_at").on(d.started_at),idx_tasks_trace_id:sqliteCore.index("idx_tasks_trace_id").on(d.trace_id),idx_tasks_parent_task_id:sqliteCore.index("idx_tasks_parent_task_id").on(d.parent_task_id),idx_tasks_crewx_version:sqliteCore.index("idx_tasks_crewx_version").on(d.crewx_version),idx_tasks_pid:sqliteCore.index("idx_tasks_pid").on(d.pid),idx_tasks_thread_id:sqliteCore.index("idx_tasks_thread_id").on(d.thread_id),idx_tasks_workspace_id:sqliteCore.index("idx_tasks_workspace_id").on(d.workspace_id),idx_tasks_workspace_ref:sqliteCore.index("idx_tasks_workspace_ref").on(d.workspace_ref),idx_tasks_project_id:sqliteCore.index("idx_tasks_project_id").on(d.project_id),idx_tasks_ws_started:sqliteCore.index("idx_tasks_ws_started").on(d.workspace_id,d.started_at)}));var p=sqliteCore.sqliteTable("threads",{id:sqliteCore.text("id").primaryKey(),workspace_id:sqliteCore.text("workspace_id").references(()=>nt.id,{onDelete:"set null"}),platform:sqliteCore.text("platform").notNull().default("cli"),title:sqliteCore.text("title"),first_message:sqliteCore.text("first_message"),last_message:sqliteCore.text("last_message"),message_count:sqliteCore.integer("message_count").notNull().default(0),created_at:sqliteCore.text("created_at").notNull(),updated_at:sqliteCore.text("updated_at").notNull(),metadata:sqliteCore.text("metadata"),title_locked:sqliteCore.integer("title_locked").notNull().default(0),pinned:sqliteCore.integer("pinned").notNull().default(0),starred:sqliteCore.integer("starred").notNull().default(0)},d=>({idx_threads_updated_at:sqliteCore.index("idx_threads_updated_at").on(d.updated_at),idx_threads_workspace_id:sqliteCore.index("idx_threads_workspace_id").on(d.workspace_id),idx_threads_ws_updated:sqliteCore.index("idx_threads_ws_updated").on(d.workspace_id,d.updated_at),idx_threads_title:sqliteCore.index("idx_threads_title").on(d.title)}));var fe=sqliteCore.sqliteTable("spans",{id:sqliteCore.text("id").primaryKey(),task_id:sqliteCore.text("task_id").references(()=>e.id,{onDelete:"set null"}),parent_span_id:sqliteCore.text("parent_span_id").references(()=>fe.id,{onDelete:"set null"}),name:sqliteCore.text("name").notNull(),kind:sqliteCore.text("kind").notNull().default("internal"),status:sqliteCore.text("status").notNull().default("ok"),started_at:sqliteCore.text("started_at").notNull(),completed_at:sqliteCore.text("completed_at"),duration_ms:sqliteCore.integer("duration_ms"),input:sqliteCore.text("input"),output:sqliteCore.text("output"),error:sqliteCore.text("error"),attributes:sqliteCore.text("attributes")},d=>({idx_spans_task_id:sqliteCore.index("idx_spans_task_id").on(d.task_id),idx_spans_parent_span_id:sqliteCore.index("idx_spans_parent_span_id").on(d.parent_span_id)}));sqliteCore.sqliteTable("tool_calls",{id:sqliteCore.text("id").primaryKey(),task_id:sqliteCore.text("task_id").references(()=>e.id,{onDelete:"cascade"}),session_id:sqliteCore.text("session_id"),tool_name:sqliteCore.text("tool_name").notNull(),files:sqliteCore.text("files"),input:sqliteCore.text("input"),output:sqliteCore.text("output"),duration_ms:sqliteCore.integer("duration_ms"),timestamp:sqliteCore.text("timestamp").notNull()},d=>({idx_tool_calls_task_id:sqliteCore.index("idx_tool_calls_task_id").on(d.task_id),idx_tool_calls_tool_name:sqliteCore.index("idx_tool_calls_tool_name").on(d.tool_name),idx_tool_calls_timestamp:sqliteCore.index("idx_tool_calls_timestamp").on(d.timestamp)}));sqliteCore.sqliteTable("thread_boxes",{id:sqliteCore.text("id").primaryKey(),thread_id:sqliteCore.text("thread_id").notNull().references(()=>p.id,{onDelete:"cascade"}),seq:sqliteCore.integer("seq").notNull(),first_task_id:sqliteCore.text("first_task_id").notNull(),mid_task_id:sqliteCore.text("mid_task_id").notNull(),last_task_id:sqliteCore.text("last_task_id").notNull(),task_count:sqliteCore.integer("task_count").notNull(),summary:sqliteCore.text("summary"),source_tokens:sqliteCore.integer("source_tokens").notNull(),summary_tokens:sqliteCore.integer("summary_tokens"),created_at:sqliteCore.text("created_at").notNull()},d=>({idx_thread_boxes_thread_id:sqliteCore.index("idx_thread_boxes_thread_id").on(d.thread_id),idx_thread_boxes_seq:sqliteCore.index("idx_thread_boxes_seq").on(d.thread_id,d.seq),uniq_thread_boxes_thread_seq:sqliteCore.unique().on(d.thread_id,d.seq)}));sqliteCore.sqliteTable("request_logs",{id:sqliteCore.text("id").primaryKey(),path:sqliteCore.text("path").notNull(),method:sqliteCore.text("method").notNull(),status_code:sqliteCore.integer("status_code").notNull(),duration_ms:sqliteCore.integer("duration_ms").notNull(),ip:sqliteCore.text("ip"),request_headers:sqliteCore.text("request_headers"),response_headers:sqliteCore.text("response_headers"),request_body:sqliteCore.text("request_body"),response_body:sqliteCore.text("response_body"),query:sqliteCore.text("query"),user_id:sqliteCore.text("user_id"),project_id:sqliteCore.text("project_id"),partition_key:sqliteCore.text("partition_key").notNull(),timestamp:sqliteCore.text("timestamp").notNull().default(drizzleOrm.sql`(datetime('now'))`),metadata:sqliteCore.text("metadata")},d=>({idx_request_logs_timestamp:sqliteCore.index("idx_request_logs_timestamp").on(d.timestamp),idx_request_logs_path:sqliteCore.index("idx_request_logs_path").on(d.path),idx_request_logs_status_code:sqliteCore.index("idx_request_logs_status_code").on(d.status_code),idx_request_logs_partition_key:sqliteCore.index("idx_request_logs_partition_key").on(d.partition_key)}));sqliteCore.sqliteTable("usage_limit_snapshots",{id:sqliteCore.text("id").primaryKey(),provider:sqliteCore.text("provider").notNull(),account_ref:sqliteCore.text("account_ref").notNull().default("default"),limit_window:sqliteCore.text("limit_window").notNull(),bucket_start:sqliteCore.text("bucket_start").notNull(),captured_at:sqliteCore.text("captured_at").notNull(),used_percent:sqliteCore.integer("used_percent").notNull(),remaining_percent:sqliteCore.integer("remaining_percent").notNull(),resets_at:sqliteCore.text("resets_at"),source:sqliteCore.text("source").notNull(),metadata:sqliteCore.text("metadata")},d=>({uniq_usage_limit_snapshots_bucket:sqliteCore.uniqueIndex("uniq_usage_limit_snapshots_bucket").on(d.provider,d.account_ref,d.limit_window,d.bucket_start),idx_usage_limit_snapshots_window_bucket:sqliteCore.index("idx_usage_limit_snapshots_window_bucket").on(d.limit_window,d.bucket_start),idx_usage_limit_snapshots_provider_window_bucket:sqliteCore.index("idx_usage_limit_snapshots_provider_window_bucket").on(d.provider,d.limit_window,d.bucket_start)}));sqliteCore.sqliteTable("usage_reports",{id:sqliteCore.text("id").primaryKey(),workspace_id:sqliteCore.text("workspace_id").notNull(),month:sqliteCore.text("month").notNull(),generated_at:sqliteCore.text("generated_at").notNull(),source_range:sqliteCore.text("source_range").notNull(),tier:sqliteCore.text("tier").notNull(),total_tokens:sqliteCore.integer("total_tokens").notNull(),total_cost_usd:sqliteCore.real("total_cost_usd").notNull(),payload:sqliteCore.text("payload").notNull(),payload_hash:sqliteCore.text("payload_hash"),signature:sqliteCore.text("signature"),signed_at:sqliteCore.text("signed_at"),issuer:sqliteCore.text("issuer")},d=>({uniq_usage_reports_ws_month:sqliteCore.uniqueIndex("uniq_usage_reports_ws_month").on(d.workspace_id,d.month)}));sqliteCore.sqliteTable("notifications",{id:sqliteCore.text("id").primaryKey(),workspace_id:sqliteCore.text("workspace_id").notNull(),agent_id:sqliteCore.text("agent_id"),task_id:sqliteCore.text("task_id"),thread_id:sqliteCore.text("thread_id"),source:sqliteCore.text("source").notNull().default("agent"),level:sqliteCore.text("level").notNull().default("info"),title:sqliteCore.text("title").notNull(),body:sqliteCore.text("body"),target_user_id:sqliteCore.text("target_user_id"),created_at:sqliteCore.text("created_at").notNull(),metadata:sqliteCore.text("metadata")},d=>({idx_notifications_ws_created:sqliteCore.index("idx_notifications_ws_created").on(d.workspace_id,drizzleOrm.sql`${d.created_at} DESC`)}));sqliteCore.sqliteTable("notification_reads",{notification_id:sqliteCore.text("notification_id").notNull(),user_id:sqliteCore.text("user_id").notNull(),read_at:sqliteCore.text("read_at").notNull()},d=>({pk:sqliteCore.primaryKey({columns:[d.notification_id,d.user_id]})}));sqliteCore.sqliteTable("agent_suggestions",{id:sqliteCore.text("id").primaryKey(),workspace_id:sqliteCore.text("workspace_id").notNull(),agent_id:sqliteCore.text("agent_id").notNull(),task_id:sqliteCore.text("task_id"),type:sqliteCore.text("type").notNull(),status:sqliteCore.text("status").notNull().default("pending"),payload:sqliteCore.text("payload").notNull(),applied_commit_sha:sqliteCore.text("applied_commit_sha"),created_at:sqliteCore.text("created_at").notNull(),updated_at:sqliteCore.text("updated_at").notNull()},d=>({idx_agent_suggestions_ws_agent:sqliteCore.index("idx_agent_suggestions_ws_agent").on(d.workspace_id,d.agent_id),idx_agent_suggestions_ws_created:sqliteCore.index("idx_agent_suggestions_ws_created").on(d.workspace_id,d.created_at)}));function zt(d){let t=d.toLowerCase().trim();t=t.replace(/\[[^\]]*\]$/g,"");let n=t.lastIndexOf("/");return n>=0&&(t=t.slice(n+1)),t=t.replace(/-\d{8}$/,""),t}var K="2026-05-09",Fe="0.8.9-rc.13",G=10,X=parseInt(Fe.split("rc.")[1]),He=new Set(["workflow","mcp"]),Wt=600*1e3,gt=class extends et{dbPath;pidNullObservedSince=new Map;constructor(t={}){super(),t.dbPath?this.dbPath=t.dbPath:t.dbRoot&&(this.dbPath=B.join(t.dbRoot,".crewx","crewx.db"));}resolveDbPath(){return this.dbPath?this.dbPath:super.resolveDbPath()}openHandle(t){let n=this.resolveDbPath();if(t){let r=B.dirname(n);fs.existsSync(r)||fs.mkdirSync(r,{recursive:true});}else if(!fs.existsSync(n))throw new _("NOT_FOUND","Database not found");let s=T(n);if(t)try{lt(s.db,n);}catch(r){throw s.close(),r}return s}startTask(t){let n=this.openHandle(true);try{n.db.insert(e).values({id:t.id,agent_id:t.agentId,prompt:t.prompt,mode:t.mode,status:t.status,started_at:t.startedAt,pid:t.pid??null,parent_task_id:t.parentTaskId??null,caller_agent_id:t.callerAgentId??null,trace_id:t.traceId??null,command:t.command??null,metadata:t.metadata??null,workspace_id:t.workspaceId??null,platform:t.platform??"cli",crewx_version:t.crewxVersion??null,thread_id:t.threadId??null,model:t.model??null,rendered_prompt:t.renderedPrompt??null,coding_agent_command:t.codingAgentCommand??null}).onConflictDoUpdate({target:e.id,set:{pid:drizzleOrm.sql`COALESCE(excluded.pid, ${e.pid})`},setWhere:drizzleOrm.eq(e.status,"running")}).run();}catch(s){throw s instanceof _?s:new _("DB_ERROR","Failed to start task",s)}finally{n.close();}}finishTask(t){let n=this.openHandle(true);try{let s=t.runEpoch??null;n.runRaw(`UPDATE tasks SET status=?, result=?, error=?, completed_at=?, duration_ms=?,
|
|
13
|
+
`)}`);let o=d.get(n`SELECT count(*) as cnt FROM sqlite_master WHERE type='table' AND name='__drizzle_migrations'`),i=0;o?.cnt&&(i=d.get(n`SELECT count(*) as cnt FROM __drizzle_migrations`)?.cnt??0),re(d,i),o?.cnt&&(ae(d,r,n),ie(d,r,n)),t(d,{migrationsFolder:r});let c=(d.get(n`SELECT count(*) as cnt FROM __drizzle_migrations`)?.cnt??0)-i;if(c>0){let l=o?.cnt?"Database migrated":"Database initialized";console.error(`[crewx] ${l} (${c} migration${c>1?"s":""} applied).`);}}function lt(d,t){$t.has(t)||(de(d),$t.add(t));}var _=class extends Error{code;cause;constructor(t,n,s){super(n),this.name="RepositoryError",this.code=t,this.cause=s,Object.setPrototypeOf(this,new.target.prototype);}};var nt=sqliteCore.sqliteTable("workspaces",{id:sqliteCore.text("id").primaryKey(),slug:sqliteCore.text("slug").notNull().unique(),name:sqliteCore.text("name").notNull(),workspace_path:sqliteCore.text("workspace_path"),description:sqliteCore.text("description"),is_active:sqliteCore.integer("is_active").notNull().default(1),created_at:sqliteCore.text("created_at").notNull(),updated_at:sqliteCore.text("updated_at").notNull()});var e=sqliteCore.sqliteTable("tasks",{id:sqliteCore.text("id").primaryKey(),agent_id:sqliteCore.text("agent_id").notNull(),user_id:sqliteCore.text("user_id"),prompt:sqliteCore.text("prompt").notNull(),mode:sqliteCore.text("mode").notNull().default("execute"),status:sqliteCore.text("status").notNull().default("running"),result:sqliteCore.text("result"),error:sqliteCore.text("error"),started_at:sqliteCore.text("started_at").notNull(),completed_at:sqliteCore.text("completed_at"),duration_ms:sqliteCore.integer("duration_ms"),metadata:sqliteCore.text("metadata"),workspace_id:sqliteCore.text("workspace_id"),trace_id:sqliteCore.text("trace_id"),parent_task_id:sqliteCore.text("parent_task_id"),caller_agent_id:sqliteCore.text("caller_agent_id"),model:sqliteCore.text("model"),platform:sqliteCore.text("platform").default("cli"),crewx_version:sqliteCore.text("crewx_version"),input_tokens:sqliteCore.integer("input_tokens").default(0),output_tokens:sqliteCore.integer("output_tokens").default(0),cost_usd:sqliteCore.real("cost_usd").default(0),pid:sqliteCore.integer("pid"),rendered_prompt:sqliteCore.text("rendered_prompt"),command:sqliteCore.text("command"),coding_agent_command:sqliteCore.text("coding_agent_command"),exit_code:sqliteCore.integer("exit_code"),logs:sqliteCore.text("logs"),thread_id:sqliteCore.text("thread_id"),workspace_ref:sqliteCore.text("workspace_ref"),project_id:sqliteCore.text("project_id"),project_ref:sqliteCore.text("project_ref"),cached_input_tokens:sqliteCore.integer("cached_input_tokens").default(0),run_epoch:sqliteCore.integer("run_epoch").default(0)},d=>({idx_tasks_agent_id:sqliteCore.index("idx_tasks_agent_id").on(d.agent_id),idx_tasks_status:sqliteCore.index("idx_tasks_status").on(d.status),idx_tasks_started_at:sqliteCore.index("idx_tasks_started_at").on(d.started_at),idx_tasks_trace_id:sqliteCore.index("idx_tasks_trace_id").on(d.trace_id),idx_tasks_parent_task_id:sqliteCore.index("idx_tasks_parent_task_id").on(d.parent_task_id),idx_tasks_crewx_version:sqliteCore.index("idx_tasks_crewx_version").on(d.crewx_version),idx_tasks_pid:sqliteCore.index("idx_tasks_pid").on(d.pid),idx_tasks_thread_id:sqliteCore.index("idx_tasks_thread_id").on(d.thread_id),idx_tasks_workspace_id:sqliteCore.index("idx_tasks_workspace_id").on(d.workspace_id),idx_tasks_workspace_ref:sqliteCore.index("idx_tasks_workspace_ref").on(d.workspace_ref),idx_tasks_project_id:sqliteCore.index("idx_tasks_project_id").on(d.project_id),idx_tasks_ws_started:sqliteCore.index("idx_tasks_ws_started").on(d.workspace_id,d.started_at)}));var p=sqliteCore.sqliteTable("threads",{id:sqliteCore.text("id").primaryKey(),workspace_id:sqliteCore.text("workspace_id").references(()=>nt.id,{onDelete:"set null"}),platform:sqliteCore.text("platform").notNull().default("cli"),title:sqliteCore.text("title"),first_message:sqliteCore.text("first_message"),last_message:sqliteCore.text("last_message"),message_count:sqliteCore.integer("message_count").notNull().default(0),created_at:sqliteCore.text("created_at").notNull(),updated_at:sqliteCore.text("updated_at").notNull(),metadata:sqliteCore.text("metadata"),title_locked:sqliteCore.integer("title_locked").notNull().default(0),pinned:sqliteCore.integer("pinned").notNull().default(0),starred:sqliteCore.integer("starred").notNull().default(0)},d=>({idx_threads_updated_at:sqliteCore.index("idx_threads_updated_at").on(d.updated_at),idx_threads_workspace_id:sqliteCore.index("idx_threads_workspace_id").on(d.workspace_id),idx_threads_ws_updated:sqliteCore.index("idx_threads_ws_updated").on(d.workspace_id,d.updated_at),idx_threads_title:sqliteCore.index("idx_threads_title").on(d.title)}));var me=sqliteCore.sqliteTable("spans",{id:sqliteCore.text("id").primaryKey(),task_id:sqliteCore.text("task_id").references(()=>e.id,{onDelete:"set null"}),parent_span_id:sqliteCore.text("parent_span_id").references(()=>me.id,{onDelete:"set null"}),name:sqliteCore.text("name").notNull(),kind:sqliteCore.text("kind").notNull().default("internal"),status:sqliteCore.text("status").notNull().default("ok"),started_at:sqliteCore.text("started_at").notNull(),completed_at:sqliteCore.text("completed_at"),duration_ms:sqliteCore.integer("duration_ms"),input:sqliteCore.text("input"),output:sqliteCore.text("output"),error:sqliteCore.text("error"),attributes:sqliteCore.text("attributes")},d=>({idx_spans_task_id:sqliteCore.index("idx_spans_task_id").on(d.task_id),idx_spans_parent_span_id:sqliteCore.index("idx_spans_parent_span_id").on(d.parent_span_id)}));sqliteCore.sqliteTable("tool_calls",{id:sqliteCore.text("id").primaryKey(),task_id:sqliteCore.text("task_id").references(()=>e.id,{onDelete:"cascade"}),session_id:sqliteCore.text("session_id"),tool_name:sqliteCore.text("tool_name").notNull(),files:sqliteCore.text("files"),input:sqliteCore.text("input"),output:sqliteCore.text("output"),duration_ms:sqliteCore.integer("duration_ms"),timestamp:sqliteCore.text("timestamp").notNull()},d=>({idx_tool_calls_task_id:sqliteCore.index("idx_tool_calls_task_id").on(d.task_id),idx_tool_calls_tool_name:sqliteCore.index("idx_tool_calls_tool_name").on(d.tool_name),idx_tool_calls_timestamp:sqliteCore.index("idx_tool_calls_timestamp").on(d.timestamp)}));sqliteCore.sqliteTable("thread_boxes",{id:sqliteCore.text("id").primaryKey(),thread_id:sqliteCore.text("thread_id").notNull().references(()=>p.id,{onDelete:"cascade"}),seq:sqliteCore.integer("seq").notNull(),first_task_id:sqliteCore.text("first_task_id").notNull(),mid_task_id:sqliteCore.text("mid_task_id").notNull(),last_task_id:sqliteCore.text("last_task_id").notNull(),task_count:sqliteCore.integer("task_count").notNull(),summary:sqliteCore.text("summary"),source_tokens:sqliteCore.integer("source_tokens").notNull(),summary_tokens:sqliteCore.integer("summary_tokens"),created_at:sqliteCore.text("created_at").notNull()},d=>({idx_thread_boxes_thread_id:sqliteCore.index("idx_thread_boxes_thread_id").on(d.thread_id),idx_thread_boxes_seq:sqliteCore.index("idx_thread_boxes_seq").on(d.thread_id,d.seq),uniq_thread_boxes_thread_seq:sqliteCore.unique().on(d.thread_id,d.seq)}));sqliteCore.sqliteTable("request_logs",{id:sqliteCore.text("id").primaryKey(),path:sqliteCore.text("path").notNull(),method:sqliteCore.text("method").notNull(),status_code:sqliteCore.integer("status_code").notNull(),duration_ms:sqliteCore.integer("duration_ms").notNull(),ip:sqliteCore.text("ip"),request_headers:sqliteCore.text("request_headers"),response_headers:sqliteCore.text("response_headers"),request_body:sqliteCore.text("request_body"),response_body:sqliteCore.text("response_body"),query:sqliteCore.text("query"),user_id:sqliteCore.text("user_id"),project_id:sqliteCore.text("project_id"),partition_key:sqliteCore.text("partition_key").notNull(),timestamp:sqliteCore.text("timestamp").notNull().default(drizzleOrm.sql`(datetime('now'))`),metadata:sqliteCore.text("metadata")},d=>({idx_request_logs_timestamp:sqliteCore.index("idx_request_logs_timestamp").on(d.timestamp),idx_request_logs_path:sqliteCore.index("idx_request_logs_path").on(d.path),idx_request_logs_status_code:sqliteCore.index("idx_request_logs_status_code").on(d.status_code),idx_request_logs_partition_key:sqliteCore.index("idx_request_logs_partition_key").on(d.partition_key)}));sqliteCore.sqliteTable("usage_limit_snapshots",{id:sqliteCore.text("id").primaryKey(),provider:sqliteCore.text("provider").notNull(),account_ref:sqliteCore.text("account_ref").notNull().default("default"),limit_window:sqliteCore.text("limit_window").notNull(),bucket_start:sqliteCore.text("bucket_start").notNull(),captured_at:sqliteCore.text("captured_at").notNull(),used_percent:sqliteCore.integer("used_percent").notNull(),remaining_percent:sqliteCore.integer("remaining_percent").notNull(),resets_at:sqliteCore.text("resets_at"),source:sqliteCore.text("source").notNull(),metadata:sqliteCore.text("metadata")},d=>({uniq_usage_limit_snapshots_bucket:sqliteCore.uniqueIndex("uniq_usage_limit_snapshots_bucket").on(d.provider,d.account_ref,d.limit_window,d.bucket_start),idx_usage_limit_snapshots_window_bucket:sqliteCore.index("idx_usage_limit_snapshots_window_bucket").on(d.limit_window,d.bucket_start),idx_usage_limit_snapshots_provider_window_bucket:sqliteCore.index("idx_usage_limit_snapshots_provider_window_bucket").on(d.provider,d.limit_window,d.bucket_start)}));sqliteCore.sqliteTable("usage_reports",{id:sqliteCore.text("id").primaryKey(),workspace_id:sqliteCore.text("workspace_id").notNull(),month:sqliteCore.text("month").notNull(),generated_at:sqliteCore.text("generated_at").notNull(),source_range:sqliteCore.text("source_range").notNull(),tier:sqliteCore.text("tier").notNull(),total_tokens:sqliteCore.integer("total_tokens").notNull(),total_cost_usd:sqliteCore.real("total_cost_usd").notNull(),payload:sqliteCore.text("payload").notNull(),payload_hash:sqliteCore.text("payload_hash"),signature:sqliteCore.text("signature"),signed_at:sqliteCore.text("signed_at"),issuer:sqliteCore.text("issuer")},d=>({uniq_usage_reports_ws_month:sqliteCore.uniqueIndex("uniq_usage_reports_ws_month").on(d.workspace_id,d.month)}));sqliteCore.sqliteTable("notifications",{id:sqliteCore.text("id").primaryKey(),workspace_id:sqliteCore.text("workspace_id").notNull(),agent_id:sqliteCore.text("agent_id"),task_id:sqliteCore.text("task_id"),thread_id:sqliteCore.text("thread_id"),source:sqliteCore.text("source").notNull().default("agent"),level:sqliteCore.text("level").notNull().default("info"),title:sqliteCore.text("title").notNull(),body:sqliteCore.text("body"),target_user_id:sqliteCore.text("target_user_id"),created_at:sqliteCore.text("created_at").notNull(),metadata:sqliteCore.text("metadata")},d=>({idx_notifications_ws_created:sqliteCore.index("idx_notifications_ws_created").on(d.workspace_id,drizzleOrm.sql`${d.created_at} DESC`)}));sqliteCore.sqliteTable("notification_reads",{notification_id:sqliteCore.text("notification_id").notNull(),user_id:sqliteCore.text("user_id").notNull(),read_at:sqliteCore.text("read_at").notNull()},d=>({pk:sqliteCore.primaryKey({columns:[d.notification_id,d.user_id]})}));sqliteCore.sqliteTable("agent_suggestions",{id:sqliteCore.text("id").primaryKey(),workspace_id:sqliteCore.text("workspace_id").notNull(),agent_id:sqliteCore.text("agent_id").notNull(),task_id:sqliteCore.text("task_id"),type:sqliteCore.text("type").notNull(),status:sqliteCore.text("status").notNull().default("pending"),payload:sqliteCore.text("payload").notNull(),applied_commit_sha:sqliteCore.text("applied_commit_sha"),created_at:sqliteCore.text("created_at").notNull(),updated_at:sqliteCore.text("updated_at").notNull()},d=>({idx_agent_suggestions_ws_agent:sqliteCore.index("idx_agent_suggestions_ws_agent").on(d.workspace_id,d.agent_id),idx_agent_suggestions_ws_created:sqliteCore.index("idx_agent_suggestions_ws_created").on(d.workspace_id,d.created_at)}));function zt(d){let t=d.toLowerCase().trim();t=t.replace(/\[[^\]]*\]$/g,"");let n=t.lastIndexOf("/");return n>=0&&(t=t.slice(n+1)),t=t.replace(/-\d{8}$/,""),t}var K="2026-05-09",Fe="0.8.9-rc.13",G=10,X=parseInt(Fe.split("rc.")[1]),He=new Set(["workflow","mcp"]),Wt=600*1e3,gt=class extends et{dbPath;pidNullObservedSince=new Map;constructor(t={}){super(),t.dbPath?this.dbPath=t.dbPath:t.dbRoot&&(this.dbPath=B.join(t.dbRoot,".crewx","crewx.db"));}resolveDbPath(){return this.dbPath?this.dbPath:super.resolveDbPath()}openHandle(t){let n=this.resolveDbPath();if(t){let r=B.dirname(n);fs.existsSync(r)||fs.mkdirSync(r,{recursive:true});}else if(!fs.existsSync(n))throw new _("NOT_FOUND","Database not found");let s=T(n);if(t)try{lt(s.db,n);}catch(r){throw s.close(),r}return s}startTask(t){let n=this.openHandle(true);try{n.db.insert(e).values({id:t.id,agent_id:t.agentId,prompt:t.prompt,mode:t.mode,status:t.status,started_at:t.startedAt,pid:t.pid??null,parent_task_id:t.parentTaskId??null,caller_agent_id:t.callerAgentId??null,trace_id:t.traceId??null,command:t.command??null,metadata:t.metadata??null,workspace_id:t.workspaceId??null,platform:t.platform??"cli",crewx_version:t.crewxVersion??null,thread_id:t.threadId??null,model:t.model??null,rendered_prompt:t.renderedPrompt??null,coding_agent_command:t.codingAgentCommand??null}).onConflictDoUpdate({target:e.id,set:{pid:drizzleOrm.sql`COALESCE(excluded.pid, ${e.pid})`},setWhere:drizzleOrm.eq(e.status,"running")}).run();}catch(s){throw s instanceof _?s:new _("DB_ERROR","Failed to start task",s)}finally{n.close();}}finishTask(t){let n=this.openHandle(true);try{let s=t.runEpoch??null;n.runRaw(`UPDATE tasks SET status=?, result=?, error=?, completed_at=?, duration_ms=?,
|
|
14
14
|
exit_code=?, input_tokens=?, output_tokens=?, cached_input_tokens=?, cost_usd=?,
|
|
15
15
|
model=COALESCE(?, model)
|
|
16
16
|
WHERE id=? AND status='running' AND COALESCE(run_epoch, 0) = COALESCE(?, 0)`,[t.status,t.result??null,t.error??null,t.completedAt,t.durationMs??null,t.exitCode??null,t.inputTokens??0,t.outputTokens??0,t.cachedInputTokens??0,t.costUsd??0,t.model??null,t.id,s]);}catch(s){throw s instanceof _?s:new _("DB_ERROR","Failed to finish task",s)}finally{n.close();}}appendLog(t,n){let s=this.openHandle(true);try{s.db.transaction(r=>{let o=r.select({logs:e.logs}).from(e).where(drizzleOrm.eq(e.id,t)).limit(1).get(),i=o?.logs?JSON.parse(o.logs):[];i.push(n),r.update(e).set({logs:JSON.stringify(i)}).where(drizzleOrm.eq(e.id,t)).run();},{behavior:"immediate"});}catch(r){throw r instanceof _?r:new _("DB_ERROR","Failed to append log",r)}finally{s.close();}}getRunningTasks(){if(!this.dbExists())return [];let t=this.openHandle(false);try{return t.db.select().from(e).where(drizzleOrm.eq(e.status,"running")).orderBy(drizzleOrm.desc(e.started_at)).all()}catch(n){throw new _("DB_ERROR","Failed to get running tasks",n)}finally{t.close();}}getAllTasks(){if(!this.dbExists())return [];let t=this.openHandle(false);try{return t.db.select().from(e).orderBy(drizzleOrm.desc(e.started_at)).limit(100).all()}catch(n){throw new _("DB_ERROR","Failed to get all tasks",n)}finally{t.close();}}getTask(t){if(!this.dbExists())return;let n=this.openHandle(false);try{return n.db.select().from(e).where(drizzleOrm.eq(e.id,t)).limit(1).get()??void 0}catch(s){throw new _("DB_ERROR","Failed to get task",s)}finally{n.close();}}killTask(t){if(!this.dbExists())return {killed:false};let n=this.openHandle(true);try{let s=n.db.select({id:e.id,status:e.status,pid:e.pid}).from(e).where(drizzleOrm.eq(e.id,t)).limit(1).get();if(!s||s.status!=="running")return {killed:!1};if(s.pid)try{process.kill(s.pid,"SIGTERM");}catch{}return n.db.update(e).set({status:"failed",error:"Killed by user",completed_at:new Date().toISOString()}).where(drizzleOrm.and(drizzleOrm.eq(e.id,t),drizzleOrm.eq(e.status,"running"))).run(),{killed:!0,pid:s.pid??void 0}}catch(s){throw s instanceof _?s:new _("DB_ERROR","Failed to kill task",s)}finally{n.close();}}reapOrphanedTasks(){if(!this.dbExists())return 0;let t=this.openHandle(true);try{let n=t.db.select({id:e.id,pid:e.pid,platform:e.platform,run_epoch:e.run_epoch}).from(e).where(drizzleOrm.eq(e.status,"running")).all(),s=Date.now(),r=new Set,o=0;for(let i of n){if(i.pid){let l=!1;try{process.kill(i.pid,0),l=!0;}catch{}l||(t.db.update(e).set({status:"failed",error:"Reaped: process not found (orphaned task)",completed_at:new Date().toISOString()}).where(drizzleOrm.and(drizzleOrm.eq(e.id,i.id),drizzleOrm.eq(e.status,"running"))).run(),o++);continue}if(He.has(i.platform??"cli"))continue;let a=`${i.id}:${i.run_epoch??0}`;r.add(a);let c=this.pidNullObservedSince.get(a);if(c===void 0){this.pidNullObservedSince.set(a,s);continue}s-c>=Wt&&(t.db.update(e).set({status:"failed",error:"Reaped: pid never recorded after resume (stale running_instruction)",completed_at:new Date().toISOString()}).where(drizzleOrm.and(drizzleOrm.eq(e.id,i.id),drizzleOrm.eq(e.status,"running"))).run(),o++,this.pidNullObservedSince.delete(a));}for(let i of Array.from(this.pidNullObservedSince.keys()))r.has(i)||this.pidNullObservedSince.delete(i);return o}finally{t.close();}}reapRunningWorkflowTasks(t=Wt){if(!this.dbExists())return 0;let n=this.openHandle(true);try{let s=new Date(Date.now()-t).toISOString();return n.db.update(e).set({status:"failed",error:"Reaped: stale workflow run (finally not executed)",completed_at:new Date().toISOString()}).where(drizzleOrm.and(drizzleOrm.eq(e.status,"running"),drizzleOrm.eq(e.platform,"workflow"),drizzleOrm.isNull(e.pid),drizzleOrm.lt(e.started_at,s),drizzleOrm.or(drizzleOrm.isNull(e.metadata),drizzleOrm.notLike(e.metadata,'%"kind":"workflow_card"%')))).run().changes??0}finally{n.close();}}findTaskStatus(t,n){let s=this.resolveDbPaths();for(let r of s){if(!fs.existsSync(r))continue;let o=T(r);try{let i=n?drizzleOrm.eq(e.workspace_id,n):void 0,a=i?drizzleOrm.and(drizzleOrm.eq(e.id,t),i):drizzleOrm.eq(e.id,t),c=o.db.select().from(e).where(a).limit(1).get()??void 0;if(!c){let l=drizzleOrm.or(drizzleOrm.eq(e.thread_id,t),drizzleOrm.and(drizzleOrm.isNull(e.thread_id),drizzleOrm.like(e.command,`%--thread=${t}%`))),u=i?drizzleOrm.and(l,i):l;c=o.db.select().from(e).where(u).orderBy(drizzleOrm.desc(e.started_at)).limit(1).get()??void 0;}if(c)return c}catch(i){throw new _("DB_ERROR","Failed to find task status",i)}finally{o.close();}}}findChildTasks(t,n){let s=this.resolveDbPaths(),r=new Set,o=[];for(let i of s){if(!fs.existsSync(i))continue;let a=T(i);try{let c=n?drizzleOrm.and(drizzleOrm.eq(e.parent_task_id,t),drizzleOrm.eq(e.workspace_id,n)):drizzleOrm.eq(e.parent_task_id,t),l=a.db.select().from(e).where(c).orderBy(drizzleOrm.asc(e.started_at)).all();for(let u of l)r.has(u.id)||(r.add(u.id),o.push(u));}catch(c){throw new _("DB_ERROR","Failed to find child tasks",c)}finally{a.close();}}return o}getWorkspaceUsageSummary(t){if(!this.dbExists())return [];let n=this.openHandle(false);try{return n.db.all(t?drizzleOrm.sql`
|
|
@@ -255,7 +255,7 @@ ${s.join(`
|
|
|
255
255
|
FROM ${e}
|
|
256
256
|
${o}
|
|
257
257
|
ORDER BY ${e.started_at} ASC
|
|
258
|
-
`).map(a=>({threadId:a.thread_id,agentId:a.agent_id,startedAt:a.started_at,status:a.status,error:a.error,exitCode:a.exit_code}))}catch(o){throw new _("DB_ERROR","Failed to get tasks for report",o)}finally{r.close();}}findTaskEvidence(t){if(!this.dbExists())return [];let n=this.openHandle(false);try{let s=[];t.workspaceId&&s.push(drizzleOrm.eq(e.workspace_id,t.workspaceId)),t.agents&&t.agents.length>0&&s.push(drizzleOrm.inArray(e.agent_id,t.agents)),t.statuses&&t.statuses.length>0&&s.push(drizzleOrm.inArray(e.status,t.statuses)),t.from&&s.push(drizzleOrm.gte(e.started_at,t.from)),t.to&&s.push(drizzleOrm.lt(e.started_at,t.to));let r=s.length>0?drizzleOrm.and(...s):void 0,o=(t.order??"DESC")==="ASC"?drizzleOrm.asc(e.started_at):drizzleOrm.desc(e.started_at),i={id:e.id,agent_id:e.agent_id,status:e.status,prompt:e.prompt,started_at:e.started_at,completed_at:e.completed_at,thread_id:e.thread_id};return t.limit?n.db.select(i).from(e).where(r).orderBy(o).limit(t.limit).all():n.db.select(i).from(e).where(r).orderBy(o).all()}catch(s){throw new _("DB_ERROR","Failed to find task evidence",s)}finally{n.close();}}findThreadChains(t){if(!this.dbExists())return [];let n=this.openHandle(false);try{let s=t.maxThreads??8,r=t.maxTurnsPerThread??4,o=[drizzleOrm.isNotNull(e.thread_id),drizzleOrm.isNull(e.parent_task_id),drizzleOrm.isNull(e.caller_agent_id),drizzleOrm.or(drizzleOrm.isNull(e.platform),drizzleOrm.ne(e.platform,"workflow")),drizzleOrm.or(drizzleOrm.isNull(e.metadata),drizzleOrm.notLike(e.metadata,'%"kind":"workflow_card"%')),drizzleOrm.or(drizzleOrm.isNull(e.metadata),drizzleOrm.notLike(e.metadata,'%"retriedFromTaskId"%'))];t.workspaceId&&o.push(drizzleOrm.eq(e.workspace_id,t.workspaceId)),t.from&&o.push(drizzleOrm.gte(e.started_at,t.from)),t.to&&o.push(drizzleOrm.lt(e.started_at,t.to));let i=n.db.select({id:e.id,agent_id:e.agent_id,status:e.status,prompt:e.prompt,started_at:e.started_at,completed_at:e.completed_at,thread_id:e.thread_id}).from(e).where(drizzleOrm.and(...o)).orderBy(drizzleOrm.asc(e.started_at),drizzleOrm.asc(e.id)).all(),a=new Map;for(let l of i){if(!l.thread_id)continue;let u={id:l.id,agentId:l.agent_id,status:l.status,prompt:l.prompt,startedAt:l.started_at,completedAt:l.completed_at},h=a.get(l.thread_id);h?h.push(u):a.set(l.thread_id,[u]);}let c=[];for(let[l,u]of a){let h=u.filter(g=>g.agentId===t.targetAgentId).length;h<2||c.push({threadId:l,targetAgentTurnCount:h,turns:u});}return c.sort((l,u)=>{let h=l.turns[l.turns.length-1].startedAt,g=u.turns[u.turns.length-1].startedAt;return h<g?1:h>g?-1:0}),c.slice(0,s).map(l=>({threadId:l.threadId,targetAgentTurnCount:l.targetAgentTurnCount,turns:l.turns.slice(-r)}))}catch(s){throw new _("DB_ERROR","Failed to find thread chains",s)}finally{n.close();}}};var xt=class extends W{name="sqlite-tracing";unsubs=[];dbPath;version;constructor(t){super(),this.dbPath=B.join(t?.dbRoot??ne.homedir(),".crewx","crewx.db"),this.version=t?.version??"unknown";}attach(t){let n=new gt({dbPath:this.dbPath}),s=process.cwd(),o=fs.existsSync(B.join(s,"crewx.yaml"))||fs.existsSync(B.join(s,"crewx.yml"))?It(s):null,i=process.argv.join(" ");this.unsubs.push(t.on("task:start",a=>{try{let c=a.callerAgentId??null,l=a.parentTaskId??null,u=a.rootTraceId??a.traceId,h=a.metadata?JSON.stringify(a.metadata):JSON.stringify({provider:a.provider??"cli/claude"});n.startTask({id:a.traceId,agentId:a.agentRef.replace(/^@/,""),prompt:a.message,mode:a.mode,status:"running",pid:a.pid??null,startedAt:a.timestamp.toISOString(),crewxVersion:this.version,platform:a.platform??"cli",model:a.model??null,renderedPrompt:a.renderedPrompt??null,command:i,codingAgentCommand:a.codingAgentCommand??null,workspaceId:a.workspaceId??o,callerAgentId:c,parentTaskId:l,traceId:u,metadata:h,threadId:a.threadId??null});}catch{}}),t.on("task:output",a=>{try{n.appendLog(a.traceId,{timestamp:a.timestamp.toISOString(),level:a.level??"stdout",message:a.output});}catch{}}),t.on("task:end",a=>{try{let c=typeof a.metadata?.runEpoch=="number"?a.metadata.runEpoch:null,l=a.error?JSON.stringify({code:a.error.code,message:a.error.message,...a.error.providerCode?{providerCode:a.error.providerCode}:{}}):null;n.finishTask({id:a.traceId,status:a.error?"failed":"success",result:a.result??null,error:l,completedAt:a.timestamp.toISOString(),durationMs:a.durationMs,exitCode:a.exitCode??null,inputTokens:a.inputTokens??0,outputTokens:a.outputTokens??0,cachedInputTokens:a.cachedInputTokens??0,costUsd:a.costUsd??0,model:a.model??null,runEpoch:c});}catch{}}));}detach(t){this.unsubs.forEach(n=>n()),this.unsubs=[];}};var
|
|
258
|
+
`).map(a=>({threadId:a.thread_id,agentId:a.agent_id,startedAt:a.started_at,status:a.status,error:a.error,exitCode:a.exit_code}))}catch(o){throw new _("DB_ERROR","Failed to get tasks for report",o)}finally{r.close();}}findTaskEvidence(t){if(!this.dbExists())return [];let n=this.openHandle(false);try{let s=[];t.workspaceId&&s.push(drizzleOrm.eq(e.workspace_id,t.workspaceId)),t.agents&&t.agents.length>0&&s.push(drizzleOrm.inArray(e.agent_id,t.agents)),t.statuses&&t.statuses.length>0&&s.push(drizzleOrm.inArray(e.status,t.statuses)),t.from&&s.push(drizzleOrm.gte(e.started_at,t.from)),t.to&&s.push(drizzleOrm.lt(e.started_at,t.to));let r=s.length>0?drizzleOrm.and(...s):void 0,o=(t.order??"DESC")==="ASC"?drizzleOrm.asc(e.started_at):drizzleOrm.desc(e.started_at),i={id:e.id,agent_id:e.agent_id,status:e.status,prompt:e.prompt,started_at:e.started_at,completed_at:e.completed_at,thread_id:e.thread_id};return t.limit?n.db.select(i).from(e).where(r).orderBy(o).limit(t.limit).all():n.db.select(i).from(e).where(r).orderBy(o).all()}catch(s){throw new _("DB_ERROR","Failed to find task evidence",s)}finally{n.close();}}findThreadChains(t){if(!this.dbExists())return [];let n=this.openHandle(false);try{let s=t.maxThreads??8,r=t.maxTurnsPerThread??4,o=[drizzleOrm.isNotNull(e.thread_id),drizzleOrm.isNull(e.parent_task_id),drizzleOrm.isNull(e.caller_agent_id),drizzleOrm.or(drizzleOrm.isNull(e.platform),drizzleOrm.ne(e.platform,"workflow")),drizzleOrm.or(drizzleOrm.isNull(e.metadata),drizzleOrm.notLike(e.metadata,'%"kind":"workflow_card"%')),drizzleOrm.or(drizzleOrm.isNull(e.metadata),drizzleOrm.notLike(e.metadata,'%"retriedFromTaskId"%'))];t.workspaceId&&o.push(drizzleOrm.eq(e.workspace_id,t.workspaceId)),t.from&&o.push(drizzleOrm.gte(e.started_at,t.from)),t.to&&o.push(drizzleOrm.lt(e.started_at,t.to));let i=n.db.select({id:e.id,agent_id:e.agent_id,status:e.status,prompt:e.prompt,started_at:e.started_at,completed_at:e.completed_at,thread_id:e.thread_id}).from(e).where(drizzleOrm.and(...o)).orderBy(drizzleOrm.asc(e.started_at),drizzleOrm.asc(e.id)).all(),a=new Map;for(let l of i){if(!l.thread_id)continue;let u={id:l.id,agentId:l.agent_id,status:l.status,prompt:l.prompt,startedAt:l.started_at,completedAt:l.completed_at},h=a.get(l.thread_id);h?h.push(u):a.set(l.thread_id,[u]);}let c=[];for(let[l,u]of a){let h=u.filter(g=>g.agentId===t.targetAgentId).length;h<2||c.push({threadId:l,targetAgentTurnCount:h,turns:u});}return c.sort((l,u)=>{let h=l.turns[l.turns.length-1].startedAt,g=u.turns[u.turns.length-1].startedAt;return h<g?1:h>g?-1:0}),c.slice(0,s).map(l=>({threadId:l.threadId,targetAgentTurnCount:l.targetAgentTurnCount,turns:l.turns.slice(-r)}))}catch(s){throw new _("DB_ERROR","Failed to find thread chains",s)}finally{n.close();}}};var xt=class extends W{name="sqlite-tracing";unsubs=[];dbPath;version;constructor(t){super(),this.dbPath=B.join(t?.dbRoot??ne.homedir(),".crewx","crewx.db"),this.version=t?.version??"unknown";}attach(t){let n=new gt({dbPath:this.dbPath}),s=process.cwd(),o=fs.existsSync(B.join(s,"crewx.yaml"))||fs.existsSync(B.join(s,"crewx.yml"))?It(s):null,i=process.argv.join(" ");this.unsubs.push(t.on("task:start",a=>{try{let c=a.callerAgentId??null,l=a.parentTaskId??null,u=a.rootTraceId??a.traceId,h=a.metadata?JSON.stringify(a.metadata):JSON.stringify({provider:a.provider??"cli/claude"});n.startTask({id:a.traceId,agentId:a.agentRef.replace(/^@/,""),prompt:a.message,mode:a.mode,status:"running",pid:a.pid??null,startedAt:a.timestamp.toISOString(),crewxVersion:this.version,platform:a.platform??"cli",model:a.model??null,renderedPrompt:a.renderedPrompt??null,command:i,codingAgentCommand:a.codingAgentCommand??null,workspaceId:a.workspaceId??o,callerAgentId:c,parentTaskId:l,traceId:u,metadata:h,threadId:a.threadId??null});}catch{}}),t.on("task:output",a=>{try{n.appendLog(a.traceId,{timestamp:a.timestamp.toISOString(),level:a.level??"stdout",message:a.output});}catch{}}),t.on("task:end",a=>{try{let c=typeof a.metadata?.runEpoch=="number"?a.metadata.runEpoch:null,l=a.error?JSON.stringify({code:a.error.code,message:a.error.message,...a.error.providerCode?{providerCode:a.error.providerCode}:{}}):null;n.finishTask({id:a.traceId,status:a.error?"failed":"success",result:a.result??null,error:l,completedAt:a.timestamp.toISOString(),durationMs:a.durationMs,exitCode:a.exitCode??null,inputTokens:a.inputTokens??0,outputTokens:a.outputTokens??0,cachedInputTokens:a.cachedInputTokens??0,costUsd:a.costUsd??0,model:a.model??null,runEpoch:c});}catch{}}));}detach(t){this.unsubs.forEach(n=>n()),this.unsubs=[];}};var mt=class extends et{dbPath;constructor(t={}){super(),t.dbPath?this.dbPath=t.dbPath:t.dbRoot&&(this.dbPath=B.join(t.dbRoot,".crewx","crewx.db"));}resolveDbPath(){return this.dbPath?this.dbPath:super.resolveDbPath()}openHandle(t){let n=this.resolveDbPath();if(t){let r=B.dirname(n);fs.existsSync(r)||fs.mkdirSync(r,{recursive:true});}else if(!fs.existsSync(n))throw new _("NOT_FOUND","Database not found");let s=T(n);if(t)try{lt(s.db,n);}catch(r){throw s.close(),r}return s}validateWorkspaceId(t,n){return t.db.select({id:nt.id}).from(nt).where(drizzleOrm.eq(nt.id,n)).limit(1).get()?n:null}topLevelTaskPredicateSql(t="child"){return drizzleOrm.sql.raw(`NOT EXISTS (
|
|
259
259
|
SELECT 1 FROM tasks parent
|
|
260
260
|
WHERE parent.id = ${t}.parent_task_id
|
|
261
261
|
AND parent.thread_id = ${t}.thread_id
|
|
@@ -314,5 +314,5 @@ ${s.join(`
|
|
|
314
314
|
`),l},{behavior:"immediate"})}}catch(o){throw o instanceof _?o:new _("DB_ERROR","Failed to save user message",o)}finally{r.close();}}saveAssistantMessage(t,n,s){if(!this.dbExists())return;let r=this.openHandle(true);try{let o=new Date().toISOString();r.db.update(p).set({last_message:n,updated_at:o}).where(drizzleOrm.eq(p.id,t)).run();}catch(o){throw o instanceof _?o:new _("DB_ERROR","Failed to save assistant message",o)}finally{r.close();}}updateThread(t,n){if(!this.dbExists())return;let s=this.openHandle(true);try{let r={updated_at:new Date().toISOString()};n.title!==void 0&&(r.title=n.title,r.title_locked=1),n.titleLocked!==void 0&&(r.title_locked=n.titleLocked?1:0),s.db.update(p).set(r).where(drizzleOrm.eq(p.id,t)).run();}catch(r){throw r instanceof _?r:new _("DB_ERROR","Failed to update thread",r)}finally{s.close();}}togglePin(t,n){let s=this.openHandle(true);try{let r=n?drizzleOrm.and(drizzleOrm.eq(p.id,t),drizzleOrm.eq(p.workspace_id,n)):drizzleOrm.eq(p.id,t),o=s.db.select({pinned:p.pinned,metadata:p.metadata}).from(p).where(r).get();if(!o)return null;let i=o.pinned?0:1,a=o.metadata?JSON.parse(o.metadata):{};if(i){let c=n?drizzleOrm.and(drizzleOrm.eq(p.pinned,1),drizzleOrm.eq(p.workspace_id,n)):drizzleOrm.eq(p.pinned,1),l=s.db.select({metadata:p.metadata}).from(p).where(c).all(),u=null;for(let h of l){let g=h.metadata?JSON.parse(h.metadata):{};typeof g.pinOrder=="number"&&(u===null||g.pinOrder<u)&&(u=g.pinOrder);}a.pinOrder=u===null?0:u-1;}else delete a.pinOrder;return s.db.update(p).set({pinned:i,metadata:Object.keys(a).length>0?JSON.stringify(a):null}).where(r).run(),{pinned:!!i}}catch(r){throw r instanceof _?r:new _("DB_ERROR","Failed to toggle pin",r)}finally{s.close();}}reorderPins(t,n){let s=this.openHandle(true);try{for(let r=0;r<t.length;r++){let o=n?drizzleOrm.and(drizzleOrm.eq(p.id,t[r]),drizzleOrm.eq(p.workspace_id,n)):drizzleOrm.eq(p.id,t[r]),i=s.db.select({metadata:p.metadata}).from(p).where(o).get();if(!i)continue;let a=i.metadata?JSON.parse(i.metadata):{};a.pinOrder=r+1,s.db.update(p).set({metadata:JSON.stringify(a)}).where(o).run();}}catch(r){throw r instanceof _?r:new _("DB_ERROR","Failed to reorder pins",r)}finally{s.close();}}toggleStar(t,n){let s=this.openHandle(true);try{let r=n?drizzleOrm.and(drizzleOrm.eq(p.id,t),drizzleOrm.eq(p.workspace_id,n)):drizzleOrm.eq(p.id,t),o=s.db.select({starred:p.starred}).from(p).where(r).get();if(!o)return null;let i=o.starred?0:1;return s.db.update(p).set({starred:i}).where(r).run(),{starred:!!i}}catch(r){throw r instanceof _?r:new _("DB_ERROR","Failed to toggle star",r)}finally{s.close();}}resolveOverdriveForRequest(t,n,s,r){let i=this.openHandle(true);try{let a=n?drizzleOrm.and(drizzleOrm.eq(p.id,t),drizzleOrm.eq(p.workspace_id,n)):drizzleOrm.eq(p.id,t);return i.db.transaction(l=>{let u=l.select({metadata:p.metadata}).from(p).where(a).get();if(!u)return null;let h=u.metadata?JSON.parse(u.metadata):{},g=h.overdrive??{},R=r?.defaultTurns??g.defaultTurns??3,A=r?.updatedBy??"ui",C=new Date().toISOString(),I,P,U,st;switch(s){case "enable-count":{let rt=r?.turns??R,ot=r?.consumeCurrent?Math.max(rt-1,0):rt;I=ot>0?"count":"off",P=ot,U=!0,st="count";break}case "enable-latch":{I="latch",P=0,U=!0,st="latch";break}case "disable":{I="off",P=0,U=!1;break}default:{let rt=g.state??"off",ot=typeof g.remaining=="number"?g.remaining:0;if(rt==="count"&&ot>0){let Ct=ot-1;Ct<=0?(I="off",P=0):(I="count",P=Ct),U=!0,st="count";}else rt==="latch"?(I="latch",P=0,U=!0,st="latch"):(I="off",P=0,U=!1);break}}return h.overdrive={state:I,remaining:P,defaultTurns:R,updatedAt:C,updatedBy:A},l.update(p).set({metadata:JSON.stringify(h),updated_at:C}).where(a).run(),{applied:U,appliedMode:st,state:I,remaining:P}},{behavior:"immediate"})}catch(a){throw a instanceof _?a:new _("DB_ERROR","Failed to resolve overdrive",a)}finally{i.close();}}};function Ye(d){return d.replace(/<conversation_history[^>]*>[\s\S]*?<\/conversation_history>/g,"").split(`
|
|
315
315
|
`).filter(r=>!(r.startsWith("Loaded ")&&r.includes("layouts from")||r.includes("[dotenv@")||r.includes("[Nest]")&&r.includes("DEBUG")||r.startsWith("Registered custom layout:")||r.startsWith("Updated custom layout:"))).join(`
|
|
316
316
|
`).trim()}function Je(d){if(!d)return "";let t=d;try{let n=JSON.parse(t);Array.isArray(n)?t=n.filter(s=>s?.type==="text"&&s?.text).map(s=>s.text).join(`
|
|
317
|
-
`):n&&typeof n=="object"&&n.result!==void 0&&(t=n.result||"");}catch{t=Ye(t);}return t}var
|
|
318
|
-
`)[0].slice(0,200)),n.push({id:`${s.id}-assistant`,text:r,isAssistant:true,timestamp:new Date(s.started_at).getTime(),metadata:i});}}return n}};var At=class extends W{name="conversation";_provider;unsubStart=null;unsubEnd=null;constructor(t){super(),this._provider=new
|
|
317
|
+
`):n&&typeof n=="object"&&n.result!==void 0&&(t=n.result||"");}catch{t=Ye(t);}return t}var ft=class{dbPath;constructor(t){this.dbPath=t??B.join(ne.homedir(),".crewx","crewx.db");}getThreadRepo(){return new mt({dbPath:this.dbPath})}updateThread(t,n){this.getThreadRepo().updateThread(t,{title:n.title});}async ensureThread(t,n,s){let r=this.getThreadRepo(),o=r.findThreadById(t);if(o){if(o.platform!==n)throw new Error(`Thread '${t}' already exists with platform '${o.platform}' \u2014 cannot change to '${n}' (platform is immutable)`);return {created:false}}return r.ensureThread(t,n,s),{created:true}}async fetchHistory(t,n){let s=n?.limit??100,r=this.getThreadRepo(),o=r.findThreadById(t),i=r.findTopLevelTasks(t,void 0,s),a=new Set(["queued","cancelled"]);i=i.filter(u=>(!u.status||!a.has(u.status))&&(!n?.currentTraceId||u.trace_id!==n.currentTraceId));let c=o?.platform??"cli",l=this.rowsToMessages(i);return {threadId:t,platform:c,messages:l,metadata:{title:o?.title??void 0,firstMessage:o?.first_message??void 0,lastMessage:o?.last_message??void 0,messageCount:o?.message_count??0,updatedAt:o?.updated_at?new Date(o.updated_at).getTime():void 0}}}async saveUserMessage(t,n,s,r){let{firstMessage:o}=this.getThreadRepo().saveUserMessage(t,n);return {id:t,firstMessage:o}}async saveAssistantMessage(t,n,s,r){return this.getThreadRepo().saveAssistantMessage(t,n),{id:t}}close(){}normalizeStatus(t){if(t&&!["success","completed","done"].includes(t)){if(["failed","error"].includes(t))return "failed";if(t==="running")return "running"}}rowsToMessages(t){let n=[];for(let s of t){s.prompt&&n.push({id:`${s.id}-user`,text:s.prompt,isAssistant:false,timestamp:new Date(s.started_at).getTime(),metadata:{caller_agent_id:s.caller_agent_id}});let r=Je(s.result),o=this.normalizeStatus(s.status);if(r||o==="running"||o==="failed"){let i={agent_id:s.agent_id,task_id:s.id};o&&(i.status=o),o==="failed"&&s.error&&(i.reason=s.error.split(`
|
|
318
|
+
`)[0].slice(0,200)),n.push({id:`${s.id}-assistant`,text:r,isAssistant:true,timestamp:new Date(s.started_at).getTime(),metadata:i});}}return n}};var At=class extends W{name="conversation";_provider;unsubStart=null;unsubEnd=null;constructor(t){super(),this._provider=new ft(t?.dbPath);}get conversationProvider(){return this._provider}async afterUserMessage(t,n,s,r){}async afterAssistantMessage(t,n,s){}attach(t){this.unsubStart=t.on("task:start",async n=>{if(!n.threadId)return;let s=n.platform??"cli";try{let r=await this._provider.ensureThread(n.threadId,s,n.workspaceId),o=await this._provider.saveUserMessage(n.threadId,n.message??"");await this.afterUserMessage(n.threadId,o.id,r.created||o.firstMessage,n);}catch{}}),this.unsubEnd=t.on("task:end",async n=>{if(!n.result)return;let s=n.metadata?.threadId;if(!s)return;let r=n.agentRef?.replace(/^@/,"")??"";try{let{id:o}=await this._provider.saveAssistantMessage(s,n.result,r);await this.afterAssistantMessage(s,o,n);}catch{}});}detach(t){this.unsubStart?.(),this.unsubStart=null,this.unsubEnd?.(),this.unsubEnd=null,this._provider.close?.();}};exports.ConversationPlugin=At;exports.FileLoggerPlugin=wt;exports.SqliteTracingPlugin=xt;
|