@crewx/sdk 0.9.0-rc.62 → 0.9.0-rc.63

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/index.js CHANGED
@@ -1,76 +1,76 @@
1
- 'use strict';var Ua=require('fs'),K=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'),bo=require('js-tiktoken/ranks/o200k_base'),zod=require('zod'),module$1=require('module'),ze=require('handlebars'),promises=require('fs/promises'),events=require('events'),async_hooks=require('async_hooks'),drizzleOrm=require('drizzle-orm'),Ri=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 Ua__namespace=/*#__PURE__*/_interopNamespace(Ua);var K__namespace=/*#__PURE__*/_interopNamespace(K);var bo__default=/*#__PURE__*/_interopDefault(bo);var ze__namespace=/*#__PURE__*/_interopNamespace(ze);var Ri__namespace=/*#__PURE__*/_interopNamespace(Ri);var go=Object.defineProperty;var oc=Object.getOwnPropertyDescriptor;var ic=Object.getOwnPropertyNames;var sc=Object.prototype.hasOwnProperty;var ge=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,n)=>(typeof require<"u"?require:e)[n]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var D=(t,e)=>()=>(t&&(e=t(t=0)),e);var lr=(t,e)=>{for(var n in e)go(t,n,{get:e[n],enumerable:true});},ac=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of ic(e))!sc.call(t,o)&&o!==n&&go(t,o,{get:()=>e[o],enumerable:!(r=oc(e,o))||r.enumerable});return t};var cs=t=>ac(go({},"__esModule",{value:true}),t);var u=D(()=>{});var ls,mo,us,ho=D(()=>{u();ls=["flagship","balanced","speed"],mo={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:[]}},providerOptions:[]},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"}},providerOptions:[]},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:{},providerOptions:[]},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:{},providerOptions:[]},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:{},providerOptions:[]},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:"default",name:"Default",description:"Uses Grok's default permission handling."},{id:"acceptEdits",name:"Accept Edits",description:"Allows file edits without changing the selected sandbox profile."},{id:"auto",name:"Auto",description:"Uses Grok automatic permission handling."},{id:"dontAsk",name:"Don't Ask",description:"Does not ask for permission before tool execution."},{id:"bypassPermissions",name:"Bypass Permissions",description:"Bypasses Grok permission checks for tool execution."},{id:"plan",name:"Plan",description:"Keeps Grok in planning mode without applying changes."}],effort:["low","medium","high"],modelOverrides:{"grok-4.6":{effort:["low","medium","high","xhigh"],defaultEffort:"high"},"grok-4.5":{effort:["low","medium","high"],defaultEffort:"high"}},providerOptions:[{key:"alwaysApprove",type:"boolean"},{key:"sandbox",type:"enum",values:["workspace","read-only","off"]}]}},us={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:"default",effort:"high",providerOptions:{alwaysApprove:true,sandbox:"workspace"}},execute:{mode:"default",effort:"xhigh",providerOptions:{alwaysApprove:true,sandbox:"off"}}}}},Object.fromEntries(Object.entries(mo).map(([t,e])=>[t,e.models]));});var xt,yo,ps,wo=D(()=>{u();xt={"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}},yo=new Set(["gpt-5.3-codex-spark"]),ps=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 gs(t){gn=t;}function ms(t){fs=Object.fromEntries(Object.entries(t).map(([e,n])=>[e,{...n}]));}function _o(t){let e=t.toLowerCase().trim();e=e.replace(/\[[^\]]*\]$/g,"");let n=e.lastIndexOf("/");return n>=0&&(e=e.slice(n+1)),e=e.replace(/-\d{8}$/,""),e}function lc(t){if(!t)return;let e="inputPerMillionTokensUsd"in t?t.inputPerMillionTokensUsd:t.input,n="outputPerMillionTokensUsd"in t?t.outputPerMillionTokensUsd:t.output;if(!(!Number.isFinite(e)||e<=0||!Number.isFinite(n)||n<=0))return {inputPerMillionTokensUsd:e,outputPerMillionTokensUsd:n}}function hs(t){if(!t)return;let e=t.replace(/\[[^\]]*\]$/g,"");return lc(fs[e]??xt[e])}function uc(t){if(!t)return console.warn("[pricing] missing model id; cost is being recorded as 0"),fn;let e=_o(t),n=cc[e];if(n)return gn[n]??xt[n]??fn;if(gn[e])return gn[e];if(xt[e])return xt[e];if(yo.has(e))return console.warn(`[pricing] unpublished model pricing: ${t}, cost_usd=0`),fn;if(ps.has(e))return console.warn(`[pricing] missing catalog pricing: ${t}, cost_usd=0`),fn;let r={...xt,...gn};for(let o of Object.keys(r))if(e.includes(o))return r[o];return console.warn(`[pricing] Unknown model: ${t}, cost_usd=0`),fn}function pc(t,e,n,r=0,o){let i=uc(n),s=Math.min(r,t),d=(t-s)*i.input/1e6,c=s*i.cachedInput/1e6,l=e*i.output/1e6;return d+c+l}function ys(t,e,n,r,o,i){return t&&t>0?t:!e&&!n?0:pc(e??0,n??0,o,r??0)}var cc,fn,gn,fs,zt=D(()=>{u();wo();wo();cc={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"},fn={input:0,cachedInput:0,output:0},gn={},fs={};});function mn(t){return mc.get(t)??t}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 mc,ur=D(()=>{u();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]"}],mc=new Map(exports.CLAUDE_MODEL_COMPATIBILITY_PAIRS.map(({baseModelId:t,catalogModelId:e})=>[t,e]));});function ks(){return {models:[],modes:[],effort:[],modelOverrides:{},providerOptions:[]}}function hc(t){return Array.isArray(t)?{models:t,modes:[],effort:[],modelOverrides:{},providerOptions:[]}:t?{models:t.models??[],modes:t.modes??[],effort:t.effort??[],modelOverrides:t.modelOverrides??{},providerOptions:t.providerOptions??[]}:ks()}function vo(t){ko=Object.fromEntries(Object.entries(t).map(([e,n])=>[e,hc(n)]));}function yc(){ko={};}function hn(t){_s={...t};}function Ze(t){return Oe(t).models}function Oe(t){return ko[t]??mo[t]??ks()}function pr(t){return _s[t]??us.providers[t]}function yn(t){return Oe(t).modes}function Rt(t,e){let n=Oe(t);return e?n.modelOverrides[mn(e)]?.effort??n.effort:n.effort}function vs(t){return Oe(t).modelOverrides}function wn(){return Ze("claude")}function Eo(){return Ze("codex")}function xo(){return Ze("copilot")}function Ro(){return Ze("antigravity")}function _n(t,e){let n=new Map;for(let r of [...t,...e]){let o=n.get(r.id);if(!o){let{apiPricing:i,recommended:s,...a}=r;n.set(r.id,{...a,...s===true?{recommended:true}:{},...i!=null?{apiPricing:{...i}}:{}});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(n.values())}function kn(t){return t.map(e=>{let{apiPricing:n,...r}=e,o=hs(e.id);return o?{...r,apiPricing:o}:r})}var ko,_s,Re=D(()=>{u();ho();zt();ur();ko={},_s={};});function Er(t){return typeof t!="string"?void 0:t.trim()||void 0}function xr(t){return Er(t)?.toLowerCase()??""}function Vt(t){try{return Ua.statSync(t).isFile()}catch{return false}}function Jc(t,e){if(t===e)return true;let n=K__namespace.default.relative(t,e);return n!==""&&!n.startsWith("..")&&!K__namespace.default.isAbsolute(n)}function Kc(t,e){if(K__namespace.default.basename(t)!==".bin")return false;let n=K__namespace.default.dirname(t);if(K__namespace.default.basename(n)!=="node_modules")return false;let r=K__namespace.default.dirname(n);return Jc(r,e)}function vn(t,e={}){if(t.includes("/")||t.includes("\\")||K__namespace.default.isAbsolute(t))return t;let n=e.platform??process.platform,r=e.env??process.env,o=K__namespace.default.resolve(e.cwd??process.cwd()),i=(e.resolution??"global_first")==="global_first",s=r.PATH??r.Path??process.env.PATH??process.env.Path??"",a=n==="win32"?";":":",d=s.split(a).map(g=>g.trim()).filter(Boolean),c=K__namespace.default.extname(t).length>0,l=r.PATHEXT??r.Pathext??process.env.PATHEXT??process.env.Pathext??".EXE;.CMD;.BAT;.COM",f=n==="win32"?c?[""]:l.split(";").map(g=>g.trim()).filter(Boolean).map(g=>g.startsWith(".")?g:`.${g}`):[""];for(let g of d){let m=K__namespace.default.resolve(o,g);if(!(i&&Kc(m,o)))for(let k of f){let h=xr(k),v=k.toUpperCase();for(let w of [k,h,v]){let _=K__namespace.default.join(m,`${t}${w}`);if(Vt(_))return _}}}return t}function Xc(t,e){return vn(t,{env:e,platform:"win32",resolution:"local_first"})}function Yc(t){if(!Vt(t))return null;try{let e=Ua.readFileSync(t,"utf8"),n=K__namespace.default.dirname(t),r=[];for(let a of e.matchAll(/"([^"\r\n]*)"/g)){let l=(a[1]??"").match(/%~?dp0%?\s*[\\/]*(.*)$/i)?.[1]?.trim();if(!l)continue;let f=l.replace(/[\\/]+/g,K__namespace.default.sep).replace(/^[\\/]+/,""),g=K__namespace.default.resolve(n,f);Vt(g)&&r.push(g);}let o=[],i=new Map;for(let a of e.matchAll(/SET\s+"(\w+)=%~?dp0%?[\\/]?([^"]+)"/gi)){let d=a[1].toUpperCase(),c=a[2].trim().replace(/[\\/]+/g,K__namespace.default.sep).replace(/^[\\/]+/,"");i.set(d,K__namespace.default.resolve(n,c));}for(let a of e.split(/\r?\n/))if(a.includes("%*"))for(let d of a.matchAll(/"%(\w+)%"/g)){let c=i.get(d[1].toUpperCase());c&&Vt(c)&&o.push(c);}let s=a=>a.find(d=>{let c=xr(K__namespace.default.basename(d));return c!=="node.exe"&&c!=="node"})??null;return s(o)??s(r)}catch{return null}}function Qc(t,e){if(typeof e=="string")return Er(e)||null;if(!e||typeof e!="object")return null;if(t){let n=e[t],r=typeof n=="string"?Er(n):void 0;if(r)return r}for(let n of Object.values(e)){let r=typeof n=="string"?Er(n):void 0;if(r)return r}return null}function Zc(t,e){if(!e)return null;let n=K__namespace.default.dirname(t),r=[K__namespace.default.resolve(n,"..",e),K__namespace.default.resolve(n,"node_modules",e)];for(let o of r){let i=K__namespace.default.join(o,"package.json");if(Vt(i))try{let s=JSON.parse(Ua.readFileSync(i,"utf8")),a=Qc(e,s.bin);if(!a)continue;let d=K__namespace.default.resolve(o,a);if(Vt(d))return d}catch{}}return null}function el(t){let e=t.platform??process.platform,n=t.env??process.env,r=t.execPath??process.execPath,o=t.cwd,i=t.resolution;if(e!=="win32")return {command:vn(t.command,{cwd:o,env:n,platform:e,resolution:i}),leadingArgv:[],resolution:"direct"};let s=vn(t.command,{cwd:o,env:n,platform:e,resolution:i}),a=xr(K__namespace.default.extname(s));if(a===".js"||a===".cjs"||a===".mjs")return {command:r,leadingArgv:[s],resolution:"node-entrypoint",windowsHide:true};if(a===".cmd"||a===".bat"){let d=Yc(s)??Zc(s,t.packageName);return d?xr(K__namespace.default.extname(d))===".exe"?{command:d,leadingArgv:[],resolution:"exe-entrypoint",windowsHide:true}:{command:r,leadingArgv:[d],resolution:"node-entrypoint",windowsHide:true}:{command:s,leadingArgv:[],resolution:"unresolved-wrapper"}}return {command:s,leadingArgv:[],resolution:"direct"}}function tl(t){if(t.candidate.resolution!=="unresolved-wrapper")return {command:t.candidate.command,leadingArgv:t.candidate.leadingArgv,resolution:t.candidate.resolution,windowsHide:t.candidate.windowsHide};if(t.allowShellFallback===true)return {command:t.candidate.command,leadingArgv:[],resolution:"shell-fallback",shell:true};throw new Error(`${K__namespace.default.basename(t.candidate.command)} wrapper resolved, but no executable/Node entrypoint could be resolved without shell execution.`)}function It(t){let e=el(t);return tl({candidate:e,allowShellFallback:t.allowShellFallback})}function Pt(t,e){return {command:t.command,argv:[...t.leadingArgv,...e],resolution:t.resolution,shell:t.shell,windowsHide:t.windowsHide}}var Jt=D(()=>{u();});function nl(t){if(t.type!=="usage"||!("input_tokens"in t))return null;let e=Number(t.input_tokens??0),n=Number(t.output_tokens??0),o="cache_read_input_tokens"in t?Number(t.cache_read_input_tokens):void 0,i="cached_input_tokens"in t?Number(t.cached_input_tokens):void 0,s=o!==void 0?o:i??0;return {inputTokens:o!==void 0?e+o:e,outputTokens:n,cachedInputTokens:s}}function rl(t){let e=t.usage;if(!e||typeof e!="object"||Array.isArray(e))return null;let n=e;if(!("input_tokens"in n))return null;let r=Number(n.input_tokens??0),o=Number(n.output_tokens??0),s="cache_read_input_tokens"in n?Number(n.cache_read_input_tokens):void 0,a="cached_input_tokens"in n?Number(n.cached_input_tokens):void 0,d=s!==void 0?s:a??0;return {inputTokens:s!==void 0?r+s:r,outputTokens:o,cachedInputTokens:d}}function ol(t){if(t.type!=="step_finish")return null;let n=t.part?.tokens;if(!n)return null;let r=Number(n.input??0),o=Number(n.output??0),i=n.cache,s=i?Number(i.read??0):0;return {inputTokens:r+s,outputTokens:o,cachedInputTokens:s}}function Cs(t){let e=new Map,n;for(let i of t.split(`
2
- `))if(i.trim())try{let s=JSON.parse(i);if(s.type!=="assistant")continue;let a=s.message,d=a?.id,c=a?.usage;if(typeof d!="string"||!c)continue;let l=Number(c.input_tokens??0),f=Number(c.cache_read_input_tokens??0);e.set(d,{inputTokens:l+f,cachedInputTokens:f});let g=a?.model;typeof g=="string"&&g&&(n=g);}catch{}if(e.size===0)return;let r=0,o=0;for(let i of e.values())r+=i.inputTokens,o+=i.cachedInputTokens;return {inputTokens:r,cachedInputTokens:o,model:n}}function tt(t){if(!t||!t.trim())return;let e=null,n=null;for(let r of t.split(`
3
- `))if(r.trim())try{let o=JSON.parse(r),i=ol(o);if(i){n||(n={inputTokens:0,outputTokens:0,cachedInputTokens:0}),n.inputTokens+=i.inputTokens,n.outputTokens+=i.outputTokens,n.cachedInputTokens+=i.cachedInputTokens;continue}let s=nl(o)??rl(o);s&&(e=s);}catch{}return n||(e??void 0)}var Ct=D(()=>{u();});exports.ProviderError=void 0;var St,Ot,Kt=D(()=>{u();exports.ProviderError=class extends Error{constructor(n,r,o){super(n);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},St=class extends exports.ProviderError{constructor(e,n){super(e,n,{code:"TIMEOUT_IDLE",kind:"permanent"}),this.name="IdleTimeoutError";}},Ot=class extends exports.ProviderError{constructor(e,n){super(e,n,{code:"TIMEOUT_TOTAL",kind:"permanent"}),this.name="TotalTimeoutError";}};});exports.RateLimitError=void 0;var Rr=D(()=>{u();Kt();exports.RateLimitError=class extends exports.ProviderError{name="RateLimitError";constructor(e,n="cli/claude"){super(e,n,{code:"QUOTA_EXHAUSTED",kind:"transient"});}};});function Ne(t){return /crewx\s+(x|execute)\s/.test(t)}function De(t,e){let n=e.match(/@(\S+)/);return {timestamp:t,type:"agent_call",targetAgent:n?.[1]?.replace(/["']/g,""),toolInput:e}}var Xt=D(()=>{u();});function Me(t){if(typeof t=="string")return t;if(!t||typeof t!="object")return JSON.stringify(t??{});let e=t;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 Yt=D(()=>{u();});function Nt(t){return il[t]??t}function Oo(t){if(!t)return "";let e=t.lastIndexOf("/");return e===-1?t.trim():t.slice(e+1).trim()}function Ss(t){if(!t)return false;let e=Oe(t);return e.models.length>0||e.modes.length>0||e.effort.length>0||Object.keys(e.modelOverrides).length>0}function Os(t,e){if(!t)return false;let n=Oe(t),r=typeof e=="string"?mn(e):void 0;return n.models.length>0||n.effort.length>0||r!=null&&Array.isArray(n.modelOverrides[r]?.effort)}function No(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function sl(t,e,n){let r=t,o=false,i=false,s=[],a=()=>(o||(r={...t},o=true),r),d=typeof r.provider=="string"&&r.provider.trim()?Oo(r.provider):e,c=typeof r.model=="string"&&r.model.trim()?r.model.trim():n;if(Ss(d)){if(typeof r.mode=="string"){let f=d==="claude"?Nt(r.mode):r.mode,g=yn(d).map(m=>d==="claude"?Nt(m.id):m.id);f!==r.mode&&(a().mode=f,i=true),g.includes(f)||(delete a().mode,s.push("mode"));}typeof r.effort=="string"&&Os(d,c)&&(Rt(d,c).includes(r.effort)||(delete a().effort,s.push("effort")));}let l=r.overdrive;if(No(l)){let f=Oo(typeof l.provider=="string"?l.provider:void 0),g=typeof l.model=="string"?l.model:void 0;if(Ss(f)){let m,k=()=>(m||(m={...l},a().overdrive=m),m);if(typeof l.mode=="string"){let h=f==="claude"?Nt(l.mode):l.mode,v=yn(f).map(w=>f==="claude"?Nt(w.id):w.id);h!==l.mode&&(k().mode=h,i=true),v.includes(h)||(delete k().mode,s.push("overdrive.mode"));}typeof l.effort=="string"&&Os(f,g)&&(Rt(f,g).includes(l.effort)||(delete k().effort,s.push("overdrive.effort")));}}return {block:r,removed:s,changed:i}}function al(t){let{options:e}=t;if(!No(e))return {options:e,changed:false,removed:[]};let n=Oo(t.provider),r=[],o=false,i=e,s=false,a=()=>(s||(i={...e},s=true),i);for(let d of ["query","execute"]){let c=e[d];if(!No(c))continue;let{block:l,removed:f,changed:g}=sl(c,n,t.model);(g||f.length>0)&&(a()[d]=l,r.push(...f.map(m=>`${d}.${m}`)),o=true);}return {options:i,changed:o,removed:r}}var il,Do=D(()=>{u();Re();ur();il={auto:"default"};});function Qt(t){if(!t)return {};let e=t.match(/^(.+?)\[([^\]]+)\]$/);if(e){let n=e[2].toLowerCase();return dl.has(n)?{model:e[1],effort:e[2]}:{model:t}}return {model:t}}function Ns(t){switch(t){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 Ds(t){switch(t){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 Ms(t){return t?["-c",`model_reasoning_effort=${t}`]:[]}function Us(t){if(!t)return [];let e=new Set(["acceptEdits","bypassPermissions","default","delegate","dontAsk","plan"]),n=Nt(t);return e.has(n)?["--permission-mode",n]:[]}function Ls(t){return t?new Set(["low","medium","high","xhigh","max"]).has(t)?["--effort",t]:[]:[]}function $s(t){return t==="default"?[]:t&&cl.has(t)?["--permission-mode",t]:[]}function Bs(t){return t===true?["--always-approve"]:[]}function js(t,e=n=>console.warn(n)){return t===void 0?[]:t==="workspace"||t==="read-only"||t==="off"?["--sandbox",t]:(e(`[grok] Invalid sandbox value ${JSON.stringify(t)}; using workspace.`),["--sandbox","workspace"])}function Fs(t){return t?new Set(["low","medium","high","xhigh"]).has(t)?["--effort",t]:[]:[]}var dl,cl,br=D(()=>{u();Do();dl=new Set(["minimal","low","medium","high","xhigh","max"]);cl=new Set(["default","acceptEdits","auto","dontAsk","bypassPermissions","plan"]);});function ul(t){let n=t.message?.content;return Array.isArray(n)?n.map(r=>typeof r.text=="string"?r.text.trim():"").filter(Boolean).join(`
1
+ 'use strict';var Wa=require('fs'),X=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'),Io=require('js-tiktoken/ranks/o200k_base'),zod=require('zod'),module$1=require('module'),Ge=require('handlebars'),promises=require('fs/promises'),events=require('events'),async_hooks=require('async_hooks'),drizzleOrm=require('drizzle-orm'),Ci=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 Wa__namespace=/*#__PURE__*/_interopNamespace(Wa);var X__namespace=/*#__PURE__*/_interopNamespace(X);var Io__default=/*#__PURE__*/_interopDefault(Io);var Ge__namespace=/*#__PURE__*/_interopNamespace(Ge);var Ci__namespace=/*#__PURE__*/_interopNamespace(Ci);var yo=Object.defineProperty;var uc=Object.getOwnPropertyDescriptor;var pc=Object.getOwnPropertyNames;var fc=Object.prototype.hasOwnProperty;var he=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,n)=>(typeof require<"u"?require:e)[n]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var M=(t,e)=>()=>(t&&(e=t(t=0)),e);var fr=(t,e)=>{for(var n in e)yo(t,n,{get:e[n],enumerable:true});},gc=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of pc(e))!fc.call(t,o)&&o!==n&&yo(t,o,{get:()=>e[o],enumerable:!(r=uc(e,o))||r.enumerable});return t};var ms=t=>gc(yo({},"__esModule",{value:true}),t);var u=M(()=>{});var hs,_o,ys,wo=M(()=>{u();hs=["flagship","balanced","speed"],_o={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:[]}},providerOptions:[]},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"}},providerOptions:[]},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:{},providerOptions:[]},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:{},providerOptions:[]},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:{},providerOptions:[]},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:"default",name:"Default",description:"Uses Grok's default permission handling."},{id:"acceptEdits",name:"Accept Edits",description:"Allows file edits without changing the selected sandbox profile."},{id:"auto",name:"Auto",description:"Uses Grok automatic permission handling."},{id:"dontAsk",name:"Don't Ask",description:"Does not ask for permission before tool execution."},{id:"bypassPermissions",name:"Bypass Permissions",description:"Bypasses Grok permission checks for tool execution."},{id:"plan",name:"Plan",description:"Keeps Grok in planning mode without applying changes."}],effort:["low","medium","high"],modelOverrides:{"grok-4.6":{effort:["low","medium","high","xhigh"],defaultEffort:"high"},"grok-4.5":{effort:["low","medium","high"],defaultEffort:"high"}},providerOptions:[{key:"alwaysApprove",type:"boolean"},{key:"sandbox",type:"enum",values:["workspace","read-only","off"]}]}},ys={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:"default",effort:"high",providerOptions:{alwaysApprove:true,sandbox:"workspace"}},execute:{mode:"default",effort:"xhigh",providerOptions:{alwaysApprove:true,sandbox:"off"}}}}},Object.fromEntries(Object.entries(_o).map(([t,e])=>[t,e.models]));});var At,ko,_s,vo=M(()=>{u();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}},ko=new Set(["gpt-5.3-codex-spark"]),_s=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 ks(t){yn=t;}function vs(t){ws=Object.fromEntries(Object.entries(t).map(([e,n])=>[e,{...n}]));}function Eo(t){let e=t.toLowerCase().trim();e=e.replace(/\[[^\]]*\]$/g,"");let n=e.lastIndexOf("/");return n>=0&&(e=e.slice(n+1)),e=e.replace(/-\d{8}$/,""),e}function yc(t){if(!t)return;let e="inputPerMillionTokensUsd"in t?t.inputPerMillionTokensUsd:t.input,n="outputPerMillionTokensUsd"in t?t.outputPerMillionTokensUsd:t.output;if(!(!Number.isFinite(e)||e<=0||!Number.isFinite(n)||n<=0))return {inputPerMillionTokensUsd:e,outputPerMillionTokensUsd:n}}function Es(t){if(!t)return;let e=t.replace(/\[[^\]]*\]$/g,"");return yc(ws[e]??At[e])}function _c(t){if(!t)return console.warn("[pricing] missing model id; cost is being recorded as 0"),hn;let e=Eo(t),n=hc[e];if(n)return yn[n]??At[n]??hn;if(yn[e])return yn[e];if(At[e])return At[e];if(ko.has(e))return console.warn(`[pricing] unpublished model pricing: ${t}, cost_usd=0`),hn;if(_s.has(e))return console.warn(`[pricing] missing catalog pricing: ${t}, cost_usd=0`),hn;let r={...At,...yn};for(let o of Object.keys(r))if(e.includes(o))return r[o];return console.warn(`[pricing] Unknown model: ${t}, cost_usd=0`),hn}function wc(t,e,n,r=0,o){let i=_c(n),s=Math.min(r,t),d=(t-s)*i.input/1e6,c=s*i.cachedInput/1e6,l=e*i.output/1e6;return d+c+l}function Rs(t,e,n,r,o,i){return t&&t>0?t:!e&&!n?0:wc(e??0,n??0,o,r??0)}var hc,hn,yn,ws,Jt=M(()=>{u();vo();vo();hc={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"},hn={input:0,cachedInput:0,output:0},yn={},ws={};});function _n(t){return Ec.get(t)??t}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 Ec,gr=M(()=>{u();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]"}],Ec=new Map(exports.CLAUDE_MODEL_COMPATIBILITY_PAIRS.map(({baseModelId:t,catalogModelId:e})=>[t,e]));});function Ts(){return {models:[],modes:[],effort:[],modelOverrides:{},providerOptions:[]}}function Rc(t){return Array.isArray(t)?{models:t,modes:[],effort:[],modelOverrides:{},providerOptions:[]}:t?{models:t.models??[],modes:t.modes??[],effort:t.effort??[],modelOverrides:t.modelOverrides??{},providerOptions:t.providerOptions??[]}:Ts()}function xo(t){Ro=Object.fromEntries(Object.entries(t).map(([e,n])=>[e,Rc(n)]));}function xc(){Ro={};}function wn(t){bs={...t};}function rt(t){return De(t).models}function De(t){return Ro[t]??_o[t]??Ts()}function mr(t){return bs[t]??ys.providers[t]}function kn(t){return De(t).modes}function It(t,e){let n=De(t);return e?n.modelOverrides[_n(e)]?.effort??n.effort:n.effort}function As(t){return De(t).modelOverrides}function vn(){return rt("claude")}function bo(){return rt("codex")}function To(){return rt("copilot")}function Ao(){return rt("antigravity")}function En(t,e){let n=new Map;for(let r of [...t,...e]){let o=n.get(r.id);if(!o){let{apiPricing:i,recommended:s,...a}=r;n.set(r.id,{...a,...s===true?{recommended:true}:{},...i!=null?{apiPricing:{...i}}:{}});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(n.values())}function Rn(t){return t.map(e=>{let{apiPricing:n,...r}=e,o=Es(e.id);return o?{...r,apiPricing:o}:r})}var Ro,bs,be=M(()=>{u();wo();Jt();gr();Ro={},bs={};});function br(t){return typeof t!="string"?void 0:t.trim()||void 0}function Tr(t){return br(t)?.toLowerCase()??""}function Xt(t){try{return Wa.statSync(t).isFile()}catch{return false}}function tl(t,e){if(t===e)return true;let n=X__namespace.default.relative(t,e);return n!==""&&!n.startsWith("..")&&!X__namespace.default.isAbsolute(n)}function nl(t,e){if(X__namespace.default.basename(t)!==".bin")return false;let n=X__namespace.default.dirname(t);if(X__namespace.default.basename(n)!=="node_modules")return false;let r=X__namespace.default.dirname(n);return tl(r,e)}function xn(t,e={}){if(t.includes("/")||t.includes("\\")||X__namespace.default.isAbsolute(t))return t;let n=e.platform??process.platform,r=e.env??process.env,o=X__namespace.default.resolve(e.cwd??process.cwd()),i=(e.resolution??"global_first")==="global_first",s=r.PATH??r.Path??process.env.PATH??process.env.Path??"",a=n==="win32"?";":":",d=s.split(a).map(g=>g.trim()).filter(Boolean),c=X__namespace.default.extname(t).length>0,l=r.PATHEXT??r.Pathext??process.env.PATHEXT??process.env.Pathext??".EXE;.CMD;.BAT;.COM",f=n==="win32"?c?[""]:l.split(";").map(g=>g.trim()).filter(Boolean).map(g=>g.startsWith(".")?g:`.${g}`):[""];for(let g of d){let m=X__namespace.default.resolve(o,g);if(!(i&&nl(m,o)))for(let k of f){let h=Tr(k),v=k.toUpperCase();for(let _ of [k,h,v]){let w=X__namespace.default.join(m,`${t}${_}`);if(Xt(w))return w}}}return t}function rl(t,e){return xn(t,{env:e,platform:"win32",resolution:"local_first"})}function ol(t){if(!Xt(t))return null;try{let e=Wa.readFileSync(t,"utf8"),n=X__namespace.default.dirname(t),r=[];for(let a of e.matchAll(/"([^"\r\n]*)"/g)){let l=(a[1]??"").match(/%~?dp0%?\s*[\\/]*(.*)$/i)?.[1]?.trim();if(!l)continue;let f=l.replace(/[\\/]+/g,X__namespace.default.sep).replace(/^[\\/]+/,""),g=X__namespace.default.resolve(n,f);Xt(g)&&r.push(g);}let o=[],i=new Map;for(let a of e.matchAll(/SET\s+"(\w+)=%~?dp0%?[\\/]?([^"]+)"/gi)){let d=a[1].toUpperCase(),c=a[2].trim().replace(/[\\/]+/g,X__namespace.default.sep).replace(/^[\\/]+/,"");i.set(d,X__namespace.default.resolve(n,c));}for(let a of e.split(/\r?\n/))if(a.includes("%*"))for(let d of a.matchAll(/"%(\w+)%"/g)){let c=i.get(d[1].toUpperCase());c&&Xt(c)&&o.push(c);}let s=a=>a.find(d=>{let c=Tr(X__namespace.default.basename(d));return c!=="node.exe"&&c!=="node"})??null;return s(o)??s(r)}catch{return null}}function il(t,e){if(typeof e=="string")return br(e)||null;if(!e||typeof e!="object")return null;if(t){let n=e[t],r=typeof n=="string"?br(n):void 0;if(r)return r}for(let n of Object.values(e)){let r=typeof n=="string"?br(n):void 0;if(r)return r}return null}function sl(t,e){if(!e)return null;let n=X__namespace.default.dirname(t),r=[X__namespace.default.resolve(n,"..",e),X__namespace.default.resolve(n,"node_modules",e)];for(let o of r){let i=X__namespace.default.join(o,"package.json");if(Xt(i))try{let s=JSON.parse(Wa.readFileSync(i,"utf8")),a=il(e,s.bin);if(!a)continue;let d=X__namespace.default.resolve(o,a);if(Xt(d))return d}catch{}}return null}function al(t){let e=t.platform??process.platform,n=t.env??process.env,r=t.execPath??process.execPath,o=t.cwd,i=t.resolution;if(e!=="win32")return {command:xn(t.command,{cwd:o,env:n,platform:e,resolution:i}),leadingArgv:[],resolution:"direct"};let s=xn(t.command,{cwd:o,env:n,platform:e,resolution:i}),a=Tr(X__namespace.default.extname(s));if(a===".js"||a===".cjs"||a===".mjs")return {command:r,leadingArgv:[s],resolution:"node-entrypoint",windowsHide:true};if(a===".cmd"||a===".bat"){let d=ol(s)??sl(s,t.packageName);return d?Tr(X__namespace.default.extname(d))===".exe"?{command:d,leadingArgv:[],resolution:"exe-entrypoint",windowsHide:true}:{command:r,leadingArgv:[d],resolution:"node-entrypoint",windowsHide:true}:{command:s,leadingArgv:[],resolution:"unresolved-wrapper"}}return {command:s,leadingArgv:[],resolution:"direct"}}function dl(t){if(t.candidate.resolution!=="unresolved-wrapper")return {command:t.candidate.command,leadingArgv:t.candidate.leadingArgv,resolution:t.candidate.resolution,windowsHide:t.candidate.windowsHide};if(t.allowShellFallback===true)return {command:t.candidate.command,leadingArgv:[],resolution:"shell-fallback",shell:true};throw new Error(`${X__namespace.default.basename(t.candidate.command)} wrapper resolved, but no executable/Node entrypoint could be resolved without shell execution.`)}function Ot(t){let e=al(t);return dl({candidate:e,allowShellFallback:t.allowShellFallback})}function Dt(t,e){return {command:t.command,argv:[...t.leadingArgv,...e],resolution:t.resolution,shell:t.shell,windowsHide:t.windowsHide}}var Yt=M(()=>{u();});function cl(t){if(t.type!=="usage"||!("input_tokens"in t))return null;let e=Number(t.input_tokens??0),n=Number(t.output_tokens??0),o="cache_read_input_tokens"in t?Number(t.cache_read_input_tokens):void 0,i="cached_input_tokens"in t?Number(t.cached_input_tokens):void 0,s=o!==void 0?o:i??0;return {inputTokens:o!==void 0?e+o:e,outputTokens:n,cachedInputTokens:s}}function ll(t){let e=t.usage;if(!e||typeof e!="object"||Array.isArray(e))return null;let n=e;if(!("input_tokens"in n))return null;let r=Number(n.input_tokens??0),o=Number(n.output_tokens??0),s="cache_read_input_tokens"in n?Number(n.cache_read_input_tokens):void 0,a="cached_input_tokens"in n?Number(n.cached_input_tokens):void 0,d=s!==void 0?s:a??0;return {inputTokens:s!==void 0?r+s:r,outputTokens:o,cachedInputTokens:d}}function ul(t){if(t.type!=="step_finish")return null;let n=t.part?.tokens;if(!n)return null;let r=Number(n.input??0),o=Number(n.output??0),i=n.cache,s=i?Number(i.read??0):0;return {inputTokens:r+s,outputTokens:o,cachedInputTokens:s}}function Us(t){let e=new Map,n;for(let i of t.split(`
2
+ `))if(i.trim())try{let s=JSON.parse(i);if(s.type!=="assistant")continue;let a=s.message,d=a?.id,c=a?.usage;if(typeof d!="string"||!c)continue;let l=Number(c.input_tokens??0),f=Number(c.cache_read_input_tokens??0);e.set(d,{inputTokens:l+f,cachedInputTokens:f});let g=a?.model;typeof g=="string"&&g&&(n=g);}catch{}if(e.size===0)return;let r=0,o=0;for(let i of e.values())r+=i.inputTokens,o+=i.cachedInputTokens;return {inputTokens:r,cachedInputTokens:o,model:n}}function it(t){if(!t||!t.trim())return;let e=null,n=null;for(let r of t.split(`
3
+ `))if(r.trim())try{let o=JSON.parse(r),i=ul(o);if(i){n||(n={inputTokens:0,outputTokens:0,cachedInputTokens:0}),n.inputTokens+=i.inputTokens,n.outputTokens+=i.outputTokens,n.cachedInputTokens+=i.cachedInputTokens;continue}let s=cl(o)??ll(o);s&&(e=s);}catch{}return n||(e??void 0)}var Nt=M(()=>{u();});exports.ProviderError=void 0;var Mt,Ut,Qt=M(()=>{u();exports.ProviderError=class extends Error{constructor(n,r,o){super(n);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,n){super(e,n,{code:"TIMEOUT_IDLE",kind:"permanent"}),this.name="IdleTimeoutError";}},Ut=class extends exports.ProviderError{constructor(e,n){super(e,n,{code:"TIMEOUT_TOTAL",kind:"permanent"}),this.name="TotalTimeoutError";}};});exports.RateLimitError=void 0;var Ar=M(()=>{u();Qt();exports.RateLimitError=class extends exports.ProviderError{name="RateLimitError";constructor(e,n="cli/claude"){super(e,n,{code:"QUOTA_EXHAUSTED",kind:"transient"});}};});function Ne(t){return /crewx\s+(x|execute)\s/.test(t)}function Me(t,e){let n=e.match(/@(\S+)/);return {timestamp:t,type:"agent_call",targetAgent:n?.[1]?.replace(/["']/g,""),toolInput:e}}var Zt=M(()=>{u();});function Ue(t){if(typeof t=="string")return t;if(!t||typeof t!="object")return JSON.stringify(t??{});let e=t;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 en=M(()=>{u();});function Lt(t){return pl[t]??t}function Mo(t){if(!t)return "";let e=t.lastIndexOf("/");return e===-1?t.trim():t.slice(e+1).trim()}function Ls(t){if(!t)return false;let e=De(t);return e.models.length>0||e.modes.length>0||e.effort.length>0||Object.keys(e.modelOverrides).length>0}function js(t,e){if(!t)return false;let n=De(t),r=typeof e=="string"?_n(e):void 0;return n.models.length>0||n.effort.length>0||r!=null&&Array.isArray(n.modelOverrides[r]?.effort)}function Uo(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function fl(t,e,n){let r=t,o=false,i=false,s=[],a=()=>(o||(r={...t},o=true),r),d=typeof r.provider=="string"&&r.provider.trim()?Mo(r.provider):e,c=typeof r.model=="string"&&r.model.trim()?r.model.trim():n;if(Ls(d)){if(typeof r.mode=="string"){let f=d==="claude"?Lt(r.mode):r.mode,g=kn(d).map(m=>d==="claude"?Lt(m.id):m.id);f!==r.mode&&(a().mode=f,i=true),g.includes(f)||(delete a().mode,s.push("mode"));}typeof r.effort=="string"&&js(d,c)&&(It(d,c).includes(r.effort)||(delete a().effort,s.push("effort")));}let l=r.overdrive;if(Uo(l)){let f=Mo(typeof l.provider=="string"?l.provider:void 0),g=typeof l.model=="string"?l.model:void 0;if(Ls(f)){let m,k=()=>(m||(m={...l},a().overdrive=m),m);if(typeof l.mode=="string"){let h=f==="claude"?Lt(l.mode):l.mode,v=kn(f).map(_=>f==="claude"?Lt(_.id):_.id);h!==l.mode&&(k().mode=h,i=true),v.includes(h)||(delete k().mode,s.push("overdrive.mode"));}typeof l.effort=="string"&&js(f,g)&&(It(f,g).includes(l.effort)||(delete k().effort,s.push("overdrive.effort")));}}return {block:r,removed:s,changed:i}}function gl(t){let{options:e}=t;if(!Uo(e))return {options:e,changed:false,removed:[]};let n=Mo(t.provider),r=[],o=false,i=e,s=false,a=()=>(s||(i={...e},s=true),i);for(let d of ["query","execute"]){let c=e[d];if(!Uo(c))continue;let{block:l,removed:f,changed:g}=fl(c,n,t.model);(g||f.length>0)&&(a()[d]=l,r.push(...f.map(m=>`${d}.${m}`)),o=true);}return {options:i,changed:o,removed:r}}var pl,Lo=M(()=>{u();be();gr();pl={auto:"default"};});function tn(t){if(!t)return {};let e=t.match(/^(.+?)\[([^\]]+)\]$/);if(e){let n=e[2].toLowerCase();return ml.has(n)?{model:e[1],effort:e[2]}:{model:t}}return {model:t}}function $s(t){switch(t){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 Bs(t){switch(t){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 Fs(t){return t?["-c",`model_reasoning_effort=${t}`]:[]}function Hs(t){if(!t)return [];let e=new Set(["acceptEdits","bypassPermissions","default","delegate","dontAsk","plan"]),n=Lt(t);return e.has(n)?["--permission-mode",n]:[]}function Ws(t){return t?new Set(["low","medium","high","xhigh","max"]).has(t)?["--effort",t]:[]:[]}function qs(t){return t==="default"?[]:t&&hl.has(t)?["--permission-mode",t]:[]}function zs(t){return t===true?["--always-approve"]:[]}function Gs(t,e=n=>console.warn(n)){return t===void 0?[]:t==="workspace"||t==="read-only"||t==="off"?["--sandbox",t]:(e(`[grok] Invalid sandbox value ${JSON.stringify(t)}; using workspace.`),["--sandbox","workspace"])}function Vs(t){return t?new Set(["low","medium","high","xhigh"]).has(t)?["--effort",t]:[]:[]}var ml,hl,Ir=M(()=>{u();Lo();ml=new Set(["minimal","low","medium","high","xhigh","max"]);hl=new Set(["default","acceptEdits","auto","dontAsk","bypassPermissions","plan"]);});function _l(t){let n=t.message?.content;return Array.isArray(n)?n.map(r=>typeof r.text=="string"?r.text.trim():"").filter(Boolean).join(`
4
4
 
5
- `):""}function pl(t){let e=t.toLowerCase();return e.includes("out of extra usage")||e.includes("rate limit")||e.includes("quota")}function fl(t,e){let n=e.type;if(n==="text"){let r=String(e.text||"");return r?{timestamp:t,type:"text",content:r}:null}if(n==="thinking"){let r=typeof e.thinking=="string"?e.thinking.trim():"";return r?{timestamp:t,type:"thinking",content:r}:null}if(n==="tool_use"){let r=String(e.name||""),o=e.id,i=e.input,s=Me(i);return r==="Bash"&&Ne(s)?De(t,s):{timestamp:t,type:"tool_use",toolUseId:o,toolName:r,toolInput:s}}if(n==="tool_result"){let r=!!e.is_error,o=e.tool_use_id,i=e.output??e.content??"",s;return typeof i=="string"?s=i:Array.isArray(i)?s=i.filter(a=>a.type==="text"&&typeof a.text=="string").map(a=>a.text).join(`
6
- `):s=JSON.stringify(i),{timestamp:t,type:"tool_result",toolUseId:o,resultPreview:s,isError:r}}return null}var ll;exports.claudeAdapter=void 0;var Mo=D(()=>{u();Rr();Xt();Yt();br();Re();Ct();ll=new Set(["tool_progress"]),exports.claudeAdapter={command:"claude",meta:{displayName:"Claude",models:wn(),capabilities:{resume:true}},buildArgs(t,e,n){let{model:r,effort:o}=Qt(e.model),i=e.effort??o,s=Us(e.mode),a=Ls(i),d=r?["--model",r]:[],c=e.resumeSessionId?["--resume",e.resumeSessionId]:[];if(e.additionalArgs!==void 0){let f=[...e.additionalArgs];return f.indexOf("-p")!==-1?{args:["--output-format","stream-json","--verbose",...c,...s,...a,...d,...f],stdinMessage:t}:{args:["--output-format","stream-json","--verbose",...c,...s,...a,...d,...f],stdinMessage:t}}return {args:["-p","--output-format","stream-json","--verbose",...c,...s,...a,...d],stdinMessage:t}},extractText(t){let e=t.split(`
7
- `).filter(o=>o.trim()),n=[],r=null;for(let o of e)try{let i=JSON.parse(o);if(i.type==="assistant"&&Array.isArray(i.message?.content))for(let s of i.message.content)s.type==="text"&&typeof s.text=="string"&&s.text.trim()&&n.push(s.text.trim());i.type==="result"&&typeof i.result=="string"&&(r=i.result);}catch{}return n.length>0?n[n.length-1]:r||t.trim()},extractFailure(t){try{let e=JSON.parse(t);if(e.type==="rate_limit_event"){let n=e.rate_limit_info??{};if(n.status==="rejected")return new exports.RateLimitError(`Claude rate limit: ${n.rateLimitType??"unknown"} (status: ${n.status})`)}if(e.error==="rate_limit"){let n=ul(e);return new exports.RateLimitError(n?`Claude rate limit: ${n}`:"Claude rate limit")}if(e.type==="result"&&e.is_error===!0){let n=typeof e.result=="string"?e.result:"";if(pl(n))return new exports.RateLimitError(`Claude rate limit: ${n}`)}}catch{}return null},parseResultMeta(t){let e=t.split(`
8
- `);for(let r of e)if(r.trim())try{let o=JSON.parse(r);if(o.type==="result"){let i=o.usage,s=i?{inputTokens:Number(i.input_tokens??0)+Number(i.cache_read_input_tokens??0),outputTokens:Number(i.output_tokens??0),cachedInputTokens:Number(i.cache_read_input_tokens??0),costUsd:Number(o.total_cost_usd??0)}:null,a=o.modelUsage,d=a?Object.keys(a)[0]??null:null;return {usage:s,model:d}}}catch{}let n=Cs(t);return n?{usage:{inputTokens:n.inputTokens,outputTokens:0,cachedInputTokens:n.cachedInputTokens,costUsd:0},model:n.model??null}:{usage:null,model:null}},parseEvent(t,e){let n;try{n=JSON.parse(t);}catch{return []}let r=n.type;if(!r)return [];if(r!=="assistant"&&r!=="user")return [];let i=n.message?.content;if(!Array.isArray(i))return [];let s=e??new Date().toISOString(),a=[];for(let d of i){let c=fl(s,d);c&&a.push(c);}return a},suppressOutputLine(t){let e=t.trim();if(!e.startsWith("{")||!e.endsWith("}"))return false;try{let r=JSON.parse(e).type;return r?ll.has(r):!1}catch{return false}}};});var gl,ml;exports.copilotAdapter=void 0;var Uo=D(()=>{u();Ct();Xt();Yt();Re();gl=new Set(["interactive","plan","autopilot"]),ml=new Set(["none","low","medium","high","xhigh","max"]),exports.copilotAdapter={command:"copilot",meta:{displayName:"Copilot",models:xo()},buildArgs(t,e,n){let r=e.additionalArgs?[...e.additionalArgs]:[];return e.model&&r.push("--model",e.model),e.mode&&gl.has(e.mode)&&r.push("--mode",e.mode),e.effort&&ml.has(e.effort)&&r.push("--effort",e.effort),{args:r,stdinMessage:t}},extractText(t){let e=t.split(`
9
- `).filter(o=>o.trim()),n=[],r=null;for(let o of e)try{let i=JSON.parse(o);if(i.type==="assistant.message"&&typeof i.data?.content=="string"){let s=i.data.content;s.trim()&&n.push(s.trim());}i.type==="result"&&typeof i.result=="string"&&(r=i.result);}catch{}return n.length>0?n[n.length-1]:r||t.trim()},parseResultMeta(t){let e=tt(t);return e?{usage:{inputTokens:e.inputTokens,outputTokens:e.outputTokens,cachedInputTokens:e.cachedInputTokens,costUsd:0},model:null}:{usage:null,model:null}},parseEvent(t,e){let n;try{n=JSON.parse(t);}catch{return []}let r=n.type;if(!r)return [];if(!r.startsWith("tool.execution")&&!r.startsWith("assistant.")&&r!=="user.message")return [];let o=n.data;if(!o)return [];let i=e??new Date().toISOString(),s=o.toolCallId;if(r==="tool.execution_start"){let a=String(o.toolName||""),d=o.arguments,c=Me(d);return (a==="bash"||a==="Bash")&&Ne(c)?[De(i,c)]:[{timestamp:i,type:"tool_use",toolName:a,toolInput:c,...s&&{toolUseId:s}}]}if(r==="tool.execution_complete"){let a=o.error;if(a)return [{timestamp:i,type:"tool_result",isError:true,resultPreview:String(a.message||""),...s&&{toolUseId:s}}];let d=o.result,c=String(d?.content||"");return [{timestamp:i,type:"tool_result",resultPreview:c,isError:false,...s&&{toolUseId:s}}]}if(r==="assistant.message"){let a=String(o.content||"");return a?[{timestamp:i,type:"text",content:a}]:[]}return []}};});function yl(t){let e=[],n=0,r=false,o=false,i=0;for(let a=0;a<t.length;a++){let d=t[a];if(o){o=false;continue}if(d==="\\"&&r){o=true;continue}if(d==='"'){r=!r;continue}if(!r){if(d==="{")n++;else if(d==="}"&&(n--,n===0)){let c=t.slice(i,a+1).trim();c&&e.push(c),i=a+1;}}}let s=t.slice(i).trim();return s&&e.push(s),e}function wl(t){return t[0]==="exec"?t.slice(1):t}function _l(t,e){let n=e.type;if(n==="command_execution"){let r=String(e.command||"");return Ne(r)?[De(t,r)]:[{timestamp:t,type:"tool_use",toolName:"Bash",toolInput:r}]}return n==="web_search"?[]:n==="file_change"?[]:[]}function kl(t,e){let n=e.type;if(n==="message"||n==="text"){let r=e.content;if(Array.isArray(r))for(let o of r){let i=vl(t,o);if(i)return i}if(typeof e.text=="string")return {timestamp:t,type:"text",content:e.text}}if(n==="agent_message"&&typeof e.text=="string")return {timestamp:t,type:"text",content:e.text};if(n==="reasoning"){let r=typeof e.text=="string"?e.text.trim():"";return r?{timestamp:t,type:"thinking",content:r}:null}if(n==="command_execution"){let r=String(e.aggregated_output||e.output||""),o=!!e.is_error;return {timestamp:t,type:"tool_result",resultPreview:r,isError:o}}if(n==="tool_use"){let r=String(e.name||e.tool_name||""),o=e.input,i=Me(o);return r==="Bash"&&Ne(i)?De(t,i):{timestamp:t,type:"tool_use",toolName:r,toolInput:i}}if(n==="tool_result"){let r=!!e.is_error,o=String(e.output||e.content||"");return {timestamp:t,type:"tool_result",resultPreview:o,isError:r}}if(n==="web_search"){let r=e.action,o;if(r?.type==="search"){let i=r.queries;o=String(r.query||"")||(i?.length?i.join(", "):"")||String(e.query||"");}else o=e.query?"open: "+String(e.query):"";return o?{timestamp:t,type:"tool_use",toolName:"WebSearch",toolInput:o}:null}if(n==="file_change"){let r=e.changes;if(!Array.isArray(r)||r.length===0)return null;let o=r.map(s=>String(s.path||"")).filter(Boolean);if(o.length===0)return null;let i=o.length===1?o[0]:`${o.slice(0,2).join(", ")}${o.length>2?` (+${o.length-2})`:""}`;return {timestamp:t,type:"tool_use",toolName:"Edit",toolInput:i}}return null}function vl(t,e){let n=e.type;if(n==="text")return {timestamp:t,type:"text",content:String(e.text||"")};if(n==="tool_use"){let r=String(e.name||""),o=e.input,i=Me(o);return r==="Bash"&&Ne(i)?De(t,i):{timestamp:t,type:"tool_use",toolName:r,toolInput:i}}return null}var hl;exports.codexAdapter=void 0;var Lo=D(()=>{u();Ct();Xt();Yt();br();Re();hl=new Set(["turn.started","turn.completed","item.updated"]);exports.codexAdapter={command:"codex",meta:{displayName:"Codex",models:Eo(),capabilities:{resume:true}},buildArgs(t,e,n){let{model:r,effort:o}=Qt(e.model),i=e.effort??o,s=e.resumeSessionId?Ds(e.mode):Ns(e.mode),a=Ms(i),d=r?["-m",r]:[],c=wl(e.additionalArgs??[]),f=c.includes("--json")||c.includes("--experimental-json")?[]:["--json"];return e.resumeSessionId?{args:["exec","resume",...f,...s,...a,...d,...c,e.resumeSessionId,"-"],stdinMessage:t}:{args:["exec",...f,...s,...a,...d,...c],stdinMessage:t}},extractText(t){let e=t.split(`
10
- `).map(o=>o.trim()).filter(Boolean),n=[],r=null;for(let o of e)try{let i=JSON.parse(o);if(i.type==="item.completed"&&(i.item?.type==="message"||i.item?.type==="agent_message")&&typeof i.item?.text=="string"){let s=i.item.text;s.trim()&&n.push(s.trim());}i.type==="result"&&typeof i.result=="string"&&(r=i.result);}catch{}return n.length>0?n[n.length-1]:r||t.trim()},parseResultMeta(t){let e=tt(t);return e?{usage:{inputTokens:e.inputTokens,outputTokens:e.outputTokens,cachedInputTokens:e.cachedInputTokens,costUsd:0},model:null}:{usage:null,model:null}},parseEvent(t,e){let n=e??new Date().toISOString(),r=[],o;try{JSON.parse(t),o=[t];}catch{o=yl(t),o.length>1&&console.warn("[codex] parseEvent: falling back to concatenated-JSON split for a malformed line");}for(let i of o){let s;try{s=JSON.parse(i);}catch{continue}let a=s.type;if(!a||!a.startsWith("item.")&&!a.startsWith("turn.")&&!a.startsWith("thread."))continue;let d=s.item;if(d){if(a==="item.started"){r.push(..._l(n,d));continue}if(a==="item.completed"){let c=kl(n,d);c&&r.push(c);continue}}}return r},suppressOutputLine(t){let e=t.trim();if(!e.startsWith("{")||!e.endsWith("}"))return false;try{let r=JSON.parse(e).type;return r?hl.has(r):!1}catch{return false}}};});function Rl(t){return t?xl[t]??{agent:"build",autoApprove:false}:{agent:void 0,autoApprove:false}}function Pr(t,e){return t.some(n=>n===e||n.startsWith(`${e}=`))}function bl(t){let e=[],n=0,r=false,o=false,i=0;for(let a=0;a<t.length;a++){let d=t[a];if(o){o=false;continue}if(d==="\\"&&r){o=true;continue}if(d==='"'){r=!r;continue}if(!r){if(d==="{")n++;else if(d==="}"&&(n--,n===0)){let c=t.slice(i,a+1).trim();c&&e.push(c),i=a+1;}}}let s=t.slice(i).trim();return s&&e.push(s),e}var El,xl;exports.opencodeAdapter=void 0;var $o=D(()=>{u();Ct();Yt();El=new Set(["step_start","step_finish"]),xl={build:{agent:"build",autoApprove:false},"build-auto":{agent:"build",autoApprove:true},plan:{agent:"plan",autoApprove:false},"plan-auto":{agent:"plan",autoApprove:true}};exports.opencodeAdapter={command:"opencode",meta:{displayName:"OpenCode",capabilities:{resume:true}},buildArgs(t,e,n){let r=e.additionalArgs,o=r!==void 0?[...r]:["run"];Pr(o,"--format")||o.push("--format","json"),e.resumeSessionId&&!o.includes("-s")&&!o.includes("--session")&&o.push("-s",e.resumeSessionId);let{agent:i,autoApprove:s}=Rl(e.mode);Pr(o,"--agent")||i!==void 0&&o.push("--agent",i),s&&!Pr(o,"--auto")&&o.push("--auto"),e.effort!==void 0&&!Pr(o,"--variant")&&o.push("--variant",e.effort),e.model&&o.push("--model",e.model);let a;return !n&&!s&&!e.env?.OPENCODE_PERMISSION&&(a={OPENCODE_PERMISSION:JSON.stringify({external_directory:"allow"})}),{args:o,stdinMessage:t,env:a}},extractText(t){let e=t.split(`
11
- `).map(o=>o.trim()).filter(Boolean),n=[],r=null;for(let o of e)try{let i=JSON.parse(o);if(i.type==="text"&&typeof i.part?.text=="string"){let s=i.part.text;s.trim()&&n.push(s.trim());}i.type==="result"&&typeof i.result=="string"&&(r=i.result);}catch{}return n.length>0?n[n.length-1]:r||t.trim()},parseResultMeta(t){let e=tt(t);return e?{usage:{inputTokens:e.inputTokens,outputTokens:e.outputTokens,cachedInputTokens:e.cachedInputTokens,costUsd:0},model:null}:{usage:null,model:null}},parseEvent(t,e){let n=e??new Date().toISOString(),r=[],o;try{JSON.parse(t),o=[t];}catch{o=bl(t),o.length>1&&console.warn("[opencode] parseEvent: falling back to concatenated-JSON split for a malformed line");}for(let i of o){let s;try{s=JSON.parse(i);}catch{continue}let a=s.type;if(a){if(a==="text"){let c=s.part?.text;c&&r.push({timestamp:n,type:"text",content:c});continue}if(a==="tool_use"){let d=s.part;if(!d)continue;let c=String(d.tool||""),l=String(d.callID||""),f=d.state,g=String(f?.status||""),m=f?.input,k=Me(m);if(r.push({timestamp:n,type:"tool_use",toolName:c,toolUseId:l,toolInput:k}),g==="completed"&&f?.output!==void 0){let h=f.output,v=typeof h=="string"?h:JSON.stringify(h);r.push({timestamp:n,type:"tool_result",toolUseId:l,resultPreview:v,isError:false});}else g==="error"&&r.push({timestamp:n,type:"tool_result",toolUseId:l,resultPreview:String(f?.error||"tool error"),isError:true});continue}}}return r},suppressOutputLine(t){let e=t.trim();if(!e.startsWith("{")||!e.endsWith("}"))return false;try{let r=JSON.parse(e).type;return r?El.has(r):!1}catch{return false}}};});var Bo,jo=D(()=>{u();Kt();Re();Bo={command:"agy",meta:{displayName:"Antigravity",models:Ro(),defaultTimeoutMs:{query:12e4,execute:3e5},defaultIdleMs:0},buildArgs(t,e,n){if(e.additionalArgs!==void 0){let o=[...e.additionalArgs];return o.includes("--print")||o.unshift("--print",t),e.model&&o.push("--model",e.model),o.push("--dangerously-skip-permissions"),{args:o}}let r=["--print",t,"--dangerously-skip-permissions"];return e.model&&r.push("--model",e.model),{args:r}},extractText(t){let e=t.trim();if(!e)throw new exports.ProviderError("Antigravity CLI returned empty output with exit code 0. agy may have hidden an auth/quota/model error in its log file; inspect ~/.gemini/antigravity-cli/log for details.","cli/antigravity",{code:"EMPTY_OUTPUT",kind:"transient"});return e},parseResultMeta(t){return {usage:null,model:null}},parseEvent(t,e){return []}};});var Hs,Ws=D(()=>{u();Xt();Yt();Hs={parseEvent(t,e){let n;try{n=JSON.parse(t);}catch{return []}let r=n.type;if(!r)return [];if(r!=="message"&&r!=="tool_use"&&r!=="tool_result")return [];let o=e??new Date().toISOString();if(r==="message"){if(n.role!=="assistant")return [];let s=n.content;return s?[{timestamp:o,type:"text",content:s}]:[]}if(r==="tool_use"){let i=String(n.tool_name||""),s=n.tool_id,a=n.parameters,d=Me(a);return /^bash$/i.test(i)&&Ne(d)?[De(o,d)]:[{timestamp:o,type:"tool_use",toolName:i,toolUseId:s,toolInput:d}]}if(r==="tool_result"){let i=n.tool_id,s=String(n.output||""),a=n.status!=="success";return [{timestamp:o,type:"tool_result",toolUseId:i,resultPreview:s,isError:a}]}return []}};});function Zt(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function Or(t){return Zt(t)?t:void 0}function _e(t){return typeof t=="string"?t:void 0}function Dt(t){let e=typeof t=="number"?t:Number(t??0);return Number.isFinite(e)?e:0}function Cl(t){let e=[],n=-1,r=0,o=false,i=false;for(let s=0;s<t.length;s+=1){let a=t[s];if(n===-1){(a==="{"||a==="[")&&(n=s,r=1);continue}if(i){i=false;continue}if(a==="\\"&&o){i=true;continue}if(a==='"'){o=!o;continue}o||(a==="{"||a==="["?r+=1:(a==="}"||a==="]")&&(r-=1,r===0&&(e.push(t.slice(n,s+1)),n=-1)));}return n!==-1&&e.push(t.slice(n)),e}function En(t){let e=t.trim();if(!e)return [];try{let n=JSON.parse(e);return Zt(n)?[n]:[]}catch{return Cl(e).flatMap(n=>{try{let r=JSON.parse(n);return Zt(r)?[r]:[]}catch{return []}})}}function xn(t){let e=JSON.stringify(t);return e===void 0?String(t):e}function Rn(t){if(typeof t=="string")return t;if(Array.isArray(t)){let e=t.map(Rn).filter(n=>n!==void 0);return e.length>0?e.join(`
12
- `):void 0}if(Zt(t)){if(typeof t.text=="string")return t.text;if(typeof t.message=="string")return t.message;if(typeof t.error=="string")return t.error;if(t.type==="text"&&typeof t.data=="string")return t.data;for(let e of ["content","FileContent","rawOutput"]){let n=Rn(t[e]);if(n!==void 0)return n}}}function Sl(t){if(t.rawOutput!==null&&t.rawOutput!==void 0)return Rn(t.rawOutput)??xn(t.rawOutput);if(t.content!==null&&t.content!==void 0)return Rn(t.content)??xn(t.content);if(t.result!==null&&t.result!==void 0)return Rn(t.result)??xn(t.result)}function Js(t){let e=Or(t.error),n=[t.message,t.errorMessage,e?.message,e?.detail,typeof t.error=="string"?t.error:void 0].find(r=>typeof r=="string"&&r.trim().length>0);return n?Ks(n):"Grok CLI reported an error."}function Ks(t){return (t.replace(Pl,"").split(/\r?\n/).map(n=>n.trim()).filter(Boolean)[0]??t.trim()).slice(0,500)}function Vs(t){return Il.test(t)}function Ol(t){let e=Or(t.modelUsage);return e?Object.keys(e)[0]??null:null}function Nl(t){let e=Or(t.usage);if(!e)return null;let n=Dt(e.cache_read_input_tokens);return {inputTokens:Dt(e.input_tokens)+n,cachedInputTokens:n,outputTokens:Dt(e.output_tokens),costUsd:Dt(t.total_cost_usd)}}function Dl(t){let e=0,n=0,r=0,o=false,i=new Set;for(let s of t.split(`
13
- `).flatMap(En)){if(s.type!=="usage")continue;let a=Or(s.usage);if(!a)continue;let d=_e(s.signature);if(d&&d.length>0){let l=`signature:${d}`;if(i.has(l))continue;i.add(l);}let c=Dt(a.cache_read_input_tokens);e+=Dt(a.input_tokens)+c,n+=c,r+=Dt(a.output_tokens),o=true;}return o?{inputTokens:e,cachedInputTokens:n,outputTokens:r,costUsd:0}:null}function Ml(t,e){if(!Array.isArray(e.entries)||e.entries.length===0)return [];let n=[];for(let i of e.entries.slice(0,qs)){if(!Zt(i))continue;let s=_e(i.content)?.trim();if(!s)continue;let a=_e(i.status)?.trim(),d=_e(i.priority)?.trim(),c=[a?`status=${a}`:void 0,d?`priority=${d}`:void 0].filter(f=>!!f),l=c.length>0?` (${c.join(", ")})`:"";n.push(`- ${s}${l}`);}if(n.length===0)return [];e.entries.length>qs&&n.push(Gs);let r=n.join(`
14
- `),o=r.length>zs?`${r.slice(0,zs-1)}${Gs}`:r;return [{timestamp:t,type:"info",content:o}]}function Ul(t,e){let n=_e(e.type);if(n==="thought"){let r=_e(e.data);return r===void 0?[]:[{timestamp:t,type:"thinking",content:r}]}if(n==="text"){let r=_e(e.data);return r===void 0?[]:[{timestamp:t,type:"text",content:r}]}if(n==="plan")return Ml(t,e);if(n==="tool_call"){let r=_e(e.toolCallId),o=_e(e.toolName)??_e(e.title),i=e.rawInput===void 0?void 0:xn(e.rawInput);return [{timestamp:t,type:"tool_use",toolUseId:r,toolName:o,toolInput:i}]}if(n==="tool_call_update"){let r=_e(e.status);return r!=="completed"&&r!=="failed"&&r!=="error"?[]:[{timestamp:t,type:"tool_result",toolUseId:_e(e.toolCallId),toolName:_e(e.toolName)??_e(e.title),resultPreview:Sl(e),isError:r!=="completed"||e.isError===true}]}if(n==="error"){let r=Js(e);return [{timestamp:t,type:"error",content:r,errorMessage:r}]}return []}var Sr,Al,Il,Pl,qs,zs,Gs;exports.grokAdapter=void 0;var Fo=D(()=>{u();Kt();Rr();Re();br();Sr="cli/grok",Al=new Set(["available_commands","usage","end"]),Il=/(?:rate[\s_-]*limit|quota|usage[\s_-]*limit|too many requests|limit(?:ed|ing)?\s+(?:exceeded|reached))/i,Pl=/\u001b\[[0-?]*[ -/]*[@-~]/g,qs=20,zs=4e3,Gs="\u2026";exports.grokAdapter={command:"grok",createSessionId:()=>crypto$1.randomUUID(),meta:{displayName:"Grok",capabilities:{resume:true}},buildArgs(t,e){let{model:n,effort:r}=Qt(e.model),o=e.effort??r,i=e.resumeSessionId?["--resume",e.resumeSessionId]:e.providerSessionId?["--session-id",e.providerSessionId]:[],s=n?["--model",n]:[],a=n?Ze("grok").some(R=>R.id===n):false,d=n&&a?Rt("grok",n):[],c=!o||d.length===0||d.includes(o)?o:void 0,l=Fs(c),f=e.additionalArgs??[],g=R=>f.some(b=>b===R||b.startsWith(`${R}=`)),m=e.providerOptions,k=m?.alwaysApprove,h=m?.sandbox,v=g("--permission-mode")?[]:$s(e.mode),w=g("--always-approve")?[]:Bs(k),_=g("--sandbox")?[]:js(h);return {args:["--no-auto-update",...i,"--single",t,"--output-format","streaming-json","--no-alt-screen",...s,...l,...v,...w,..._,...f]}},extractText(t){let e=[],n=false;for(let r of t.split(`
15
- `).flatMap(En))typeof r.type=="string"&&(n=true),r.type==="text"&&typeof r.data=="string"&&e.push(r.data);return e.length>0?e.join(""):n?"":t.trim()},extractFailure(t){for(let e of En(t))if(e.type==="error"){let n=Js(e);return Vs(xn(e))?new exports.RateLimitError(n,Sr):new exports.ProviderError(n,Sr)}return null},interpretExit(t,e){if(t===0)return null;let n=Ks(e)||`Grok CLI exited with code ${t}.`;return Vs(e)?new exports.RateLimitError(n,Sr):new exports.ProviderError(n,Sr)},parseResultMeta(t){let n=t.split(`
16
- `).flatMap(En).find(r=>r.type==="end");return n?{usage:Nl(n),model:Ol(n)}:{usage:Dl(t),model:null}},parseEvent(t,e){let n=e??new Date().toISOString();return En(t).flatMap(r=>Ul(n,r))},suppressOutputLine(t){let e=t.trim();if(!e.startsWith("{")||!e.endsWith("}"))return false;try{let n=JSON.parse(e);return Zt(n)&&typeof n.type=="string"?Al.has(n.type):!1}catch{return false}}};});function bn(t,e,n){if(n){let r=exports.BUILTIN_ADAPTERS[n];if(r?.parseEvent)return r.parseEvent(e,t);let o=Ll[n];if(o?.parseEvent)return o.parseEvent(e,t)}for(let r of Object.values(exports.BUILTIN_ADAPTERS)){let o=r.parseEvent?.(e,t)??[];if(o.length>0)return o}return []}exports.BUILTIN_ADAPTERS=void 0;var Ll,ft=D(()=>{u();Mo();Uo();Lo();$o();jo();Ws();Fo();Mo();Uo();Lo();$o();jo();Fo();Xt();exports.BUILTIN_ADAPTERS={codex:exports.codexAdapter,claude:exports.claudeAdapter,opencode:exports.opencodeAdapter,antigravity:Bo,copilot:exports.copilotAdapter,grok:exports.grokAdapter},Ll={gemini:Hs};});var en,Ho=D(()=>{u();en=class{timeoutMs;onIdleCb;now;timer=null;lastActivity=0;settled=false;constructor(e){this.timeoutMs=e.timeoutMs,this.onIdleCb=e.onIdle,this.now=e.now??Date.now;}start(){this.settled||(this.lastActivity=this.now(),this.scheduleCheck());}refresh(){this.settled||(this.lastActivity=this.now());}stop(){this.settled||(this.settled=true,this.timer&&(clearTimeout(this.timer),this.timer=null));}scheduleCheck(){if(this.settled)return;let e=this.timeoutMs-(this.now()-this.lastActivity);if(e<=0){this.fireIdle();return}this.timer=setTimeout(()=>this.scheduleCheck(),e),this.timer.unref();}fireIdle(){this.settled||(this.settled=true,this.timer=null,this.onIdleCb());}};});function Xs(t,e){if(t===void 0||t==="")return e;let n=parseInt(t,10);return Number.isNaN(n)?e:n}function Wo(t=process.env){let e=t.CREWX_TIMEOUT_IDLE;if(e===void 0||e==="")return;let n=parseInt(e,10);if(!(!Number.isFinite(n)||n<=0))return n}function Ys(t=process.env){return {queryMs:Xs(t.CREWX_TIMEOUT_QUERY,288e5),executeMs:Xs(t.CREWX_TIMEOUT_EXECUTE,288e5),idleMs:Wo(t)??6e5}}var Dr=D(()=>{u();});function Bl(t){let e=t.split(`
5
+ `):""}function wl(t){let e=t.toLowerCase();return e.includes("out of extra usage")||e.includes("rate limit")||e.includes("quota")}function kl(t,e){let n=e.type;if(n==="text"){let r=String(e.text||"");return r?{timestamp:t,type:"text",content:r}:null}if(n==="thinking"){let r=typeof e.thinking=="string"?e.thinking.trim():"";return r?{timestamp:t,type:"thinking",content:r}:null}if(n==="tool_use"){let r=String(e.name||""),o=e.id,i=e.input,s=Ue(i);return r==="Bash"&&Ne(s)?Me(t,s):{timestamp:t,type:"tool_use",toolUseId:o,toolName:r,toolInput:s}}if(n==="tool_result"){let r=!!e.is_error,o=e.tool_use_id,i=e.output??e.content??"",s;return typeof i=="string"?s=i:Array.isArray(i)?s=i.filter(a=>a.type==="text"&&typeof a.text=="string").map(a=>a.text).join(`
6
+ `):s=JSON.stringify(i),{timestamp:t,type:"tool_result",toolUseId:o,resultPreview:s,isError:r}}return null}var yl;exports.claudeAdapter=void 0;var jo=M(()=>{u();Ar();Zt();en();Ir();be();Nt();yl=new Set(["tool_progress"]),exports.claudeAdapter={command:"claude",meta:{displayName:"Claude",models:vn(),capabilities:{resume:true}},buildArgs(t,e,n){let{model:r,effort:o}=tn(e.model),i=e.effort??o,s=Hs(e.mode),a=Ws(i),d=r?["--model",r]:[],c=e.resumeSessionId?["--resume",e.resumeSessionId]:[];if(e.additionalArgs!==void 0){let f=[...e.additionalArgs];return f.indexOf("-p")!==-1?{args:["--output-format","stream-json","--verbose",...c,...s,...a,...d,...f],stdinMessage:t}:{args:["--output-format","stream-json","--verbose",...c,...s,...a,...d,...f],stdinMessage:t}}return {args:["-p","--output-format","stream-json","--verbose",...c,...s,...a,...d],stdinMessage:t}},extractText(t){let e=t.split(`
7
+ `).filter(o=>o.trim()),n=[],r=null;for(let o of e)try{let i=JSON.parse(o);if(i.type==="assistant"&&Array.isArray(i.message?.content))for(let s of i.message.content)s.type==="text"&&typeof s.text=="string"&&s.text.trim()&&n.push(s.text.trim());i.type==="result"&&typeof i.result=="string"&&(r=i.result);}catch{}return n.length>0?n[n.length-1]:r||t.trim()},extractFailure(t){try{let e=JSON.parse(t);if(e.type==="rate_limit_event"){let n=e.rate_limit_info??{};if(n.status==="rejected")return new exports.RateLimitError(`Claude rate limit: ${n.rateLimitType??"unknown"} (status: ${n.status})`)}if(e.error==="rate_limit"){let n=_l(e);return new exports.RateLimitError(n?`Claude rate limit: ${n}`:"Claude rate limit")}if(e.type==="result"&&e.is_error===!0){let n=typeof e.result=="string"?e.result:"";if(wl(n))return new exports.RateLimitError(`Claude rate limit: ${n}`)}}catch{}return null},parseResultMeta(t){let e=t.split(`
8
+ `);for(let r of e)if(r.trim())try{let o=JSON.parse(r);if(o.type==="result"){let i=o.usage,s=i?{inputTokens:Number(i.input_tokens??0)+Number(i.cache_read_input_tokens??0),outputTokens:Number(i.output_tokens??0),cachedInputTokens:Number(i.cache_read_input_tokens??0),costUsd:Number(o.total_cost_usd??0)}:null,a=o.modelUsage,d=a?Object.keys(a)[0]??null:null;return {usage:s,model:d}}}catch{}let n=Us(t);return n?{usage:{inputTokens:n.inputTokens,outputTokens:0,cachedInputTokens:n.cachedInputTokens,costUsd:0},model:n.model??null}:{usage:null,model:null}},parseEvent(t,e){let n;try{n=JSON.parse(t);}catch{return []}let r=n.type;if(!r)return [];if(r!=="assistant"&&r!=="user")return [];let i=n.message?.content;if(!Array.isArray(i))return [];let s=e??new Date().toISOString(),a=[];for(let d of i){let c=kl(s,d);c&&a.push(c);}return a},suppressOutputLine(t){let e=t.trim();if(!e.startsWith("{")||!e.endsWith("}"))return false;try{let r=JSON.parse(e).type;return r?yl.has(r):!1}catch{return false}}};});var vl,El;exports.copilotAdapter=void 0;var $o=M(()=>{u();Nt();Zt();en();be();vl=new Set(["interactive","plan","autopilot"]),El=new Set(["none","low","medium","high","xhigh","max"]),exports.copilotAdapter={command:"copilot",meta:{displayName:"Copilot",models:To()},buildArgs(t,e,n){let r=e.additionalArgs?[...e.additionalArgs]:[];return e.model&&r.push("--model",e.model),e.mode&&vl.has(e.mode)&&r.push("--mode",e.mode),e.effort&&El.has(e.effort)&&r.push("--effort",e.effort),{args:r,stdinMessage:t}},extractText(t){let e=t.split(`
9
+ `).filter(o=>o.trim()),n=[],r=null;for(let o of e)try{let i=JSON.parse(o);if(i.type==="assistant.message"&&typeof i.data?.content=="string"){let s=i.data.content;s.trim()&&n.push(s.trim());}i.type==="result"&&typeof i.result=="string"&&(r=i.result);}catch{}return n.length>0?n[n.length-1]:r||t.trim()},parseResultMeta(t){let e=it(t);return e?{usage:{inputTokens:e.inputTokens,outputTokens:e.outputTokens,cachedInputTokens:e.cachedInputTokens,costUsd:0},model:null}:{usage:null,model:null}},parseEvent(t,e){let n;try{n=JSON.parse(t);}catch{return []}let r=n.type;if(!r)return [];if(!r.startsWith("tool.execution")&&!r.startsWith("assistant.")&&r!=="user.message")return [];let o=n.data;if(!o)return [];let i=e??new Date().toISOString(),s=o.toolCallId;if(r==="tool.execution_start"){let a=String(o.toolName||""),d=o.arguments,c=Ue(d);return (a==="bash"||a==="Bash")&&Ne(c)?[Me(i,c)]:[{timestamp:i,type:"tool_use",toolName:a,toolInput:c,...s&&{toolUseId:s}}]}if(r==="tool.execution_complete"){let a=o.error;if(a)return [{timestamp:i,type:"tool_result",isError:true,resultPreview:String(a.message||""),...s&&{toolUseId:s}}];let d=o.result,c=String(d?.content||"");return [{timestamp:i,type:"tool_result",resultPreview:c,isError:false,...s&&{toolUseId:s}}]}if(r==="assistant.message"){let a=String(o.content||"");return a?[{timestamp:i,type:"text",content:a}]:[]}return []}};});function xl(t){let e=[],n=0,r=false,o=false,i=0;for(let a=0;a<t.length;a++){let d=t[a];if(o){o=false;continue}if(d==="\\"&&r){o=true;continue}if(d==='"'){r=!r;continue}if(!r){if(d==="{")n++;else if(d==="}"&&(n--,n===0)){let c=t.slice(i,a+1).trim();c&&e.push(c),i=a+1;}}}let s=t.slice(i).trim();return s&&e.push(s),e}function bl(t){return t[0]==="exec"?t.slice(1):t}function Tl(t,e){let n=e.type;if(n==="command_execution"){let r=String(e.command||"");return Ne(r)?[Me(t,r)]:[{timestamp:t,type:"tool_use",toolName:"Bash",toolInput:r}]}return n==="web_search"?[]:n==="file_change"?[]:[]}function Al(t,e){let n=e.type;if(n==="message"||n==="text"){let r=e.content;if(Array.isArray(r))for(let o of r){let i=Il(t,o);if(i)return i}if(typeof e.text=="string")return {timestamp:t,type:"text",content:e.text}}if(n==="agent_message"&&typeof e.text=="string")return {timestamp:t,type:"text",content:e.text};if(n==="reasoning"){let r=typeof e.text=="string"?e.text.trim():"";return r?{timestamp:t,type:"thinking",content:r}:null}if(n==="command_execution"){let r=String(e.aggregated_output||e.output||""),o=!!e.is_error;return {timestamp:t,type:"tool_result",resultPreview:r,isError:o}}if(n==="tool_use"){let r=String(e.name||e.tool_name||""),o=e.input,i=Ue(o);return r==="Bash"&&Ne(i)?Me(t,i):{timestamp:t,type:"tool_use",toolName:r,toolInput:i}}if(n==="tool_result"){let r=!!e.is_error,o=String(e.output||e.content||"");return {timestamp:t,type:"tool_result",resultPreview:o,isError:r}}if(n==="web_search"){let r=e.action,o;if(r?.type==="search"){let i=r.queries;o=String(r.query||"")||(i?.length?i.join(", "):"")||String(e.query||"");}else o=e.query?"open: "+String(e.query):"";return o?{timestamp:t,type:"tool_use",toolName:"WebSearch",toolInput:o}:null}if(n==="file_change"){let r=e.changes;if(!Array.isArray(r)||r.length===0)return null;let o=r.map(s=>String(s.path||"")).filter(Boolean);if(o.length===0)return null;let i=o.length===1?o[0]:`${o.slice(0,2).join(", ")}${o.length>2?` (+${o.length-2})`:""}`;return {timestamp:t,type:"tool_use",toolName:"Edit",toolInput:i}}return null}function Il(t,e){let n=e.type;if(n==="text")return {timestamp:t,type:"text",content:String(e.text||"")};if(n==="tool_use"){let r=String(e.name||""),o=e.input,i=Ue(o);return r==="Bash"&&Ne(i)?Me(t,i):{timestamp:t,type:"tool_use",toolName:r,toolInput:i}}return null}var Rl;exports.codexAdapter=void 0;var Bo=M(()=>{u();Nt();Zt();en();Ir();be();Rl=new Set(["turn.started","turn.completed","item.updated"]);exports.codexAdapter={command:"codex",meta:{displayName:"Codex",models:bo(),capabilities:{resume:true}},buildArgs(t,e,n){let{model:r,effort:o}=tn(e.model),i=e.effort??o,s=e.resumeSessionId?Bs(e.mode):$s(e.mode),a=Fs(i),d=r?["-m",r]:[],c=bl(e.additionalArgs??[]),f=c.includes("--json")||c.includes("--experimental-json")?[]:["--json"];return e.resumeSessionId?{args:["exec","resume",...f,...s,...a,...d,...c,e.resumeSessionId,"-"],stdinMessage:t}:{args:["exec",...f,...s,...a,...d,...c],stdinMessage:t}},extractText(t){let e=t.split(`
10
+ `).map(o=>o.trim()).filter(Boolean),n=[],r=null;for(let o of e)try{let i=JSON.parse(o);if(i.type==="item.completed"&&(i.item?.type==="message"||i.item?.type==="agent_message")&&typeof i.item?.text=="string"){let s=i.item.text;s.trim()&&n.push(s.trim());}i.type==="result"&&typeof i.result=="string"&&(r=i.result);}catch{}return n.length>0?n[n.length-1]:r||t.trim()},parseResultMeta(t){let e=it(t);return e?{usage:{inputTokens:e.inputTokens,outputTokens:e.outputTokens,cachedInputTokens:e.cachedInputTokens,costUsd:0},model:null}:{usage:null,model:null}},parseEvent(t,e){let n=e??new Date().toISOString(),r=[],o;try{JSON.parse(t),o=[t];}catch{o=xl(t),o.length>1&&console.warn("[codex] parseEvent: falling back to concatenated-JSON split for a malformed line");}for(let i of o){let s;try{s=JSON.parse(i);}catch{continue}let a=s.type;if(!a||!a.startsWith("item.")&&!a.startsWith("turn.")&&!a.startsWith("thread."))continue;let d=s.item;if(d){if(a==="item.started"){r.push(...Tl(n,d));continue}if(a==="item.completed"){let c=Al(n,d);c&&r.push(c);continue}}}return r},suppressOutputLine(t){let e=t.trim();if(!e.startsWith("{")||!e.endsWith("}"))return false;try{let r=JSON.parse(e).type;return r?Rl.has(r):!1}catch{return false}}};});function Sl(t){return t?Cl[t]??{agent:"build",autoApprove:false}:{agent:void 0,autoApprove:false}}function Or(t,e){return t.some(n=>n===e||n.startsWith(`${e}=`))}function Ol(t){let e=[],n=0,r=false,o=false,i=0;for(let a=0;a<t.length;a++){let d=t[a];if(o){o=false;continue}if(d==="\\"&&r){o=true;continue}if(d==='"'){r=!r;continue}if(!r){if(d==="{")n++;else if(d==="}"&&(n--,n===0)){let c=t.slice(i,a+1).trim();c&&e.push(c),i=a+1;}}}let s=t.slice(i).trim();return s&&e.push(s),e}var Pl,Cl;exports.opencodeAdapter=void 0;var Fo=M(()=>{u();Nt();en();Pl=new Set(["step_start","step_finish"]),Cl={build:{agent:"build",autoApprove:false},"build-auto":{agent:"build",autoApprove:true},plan:{agent:"plan",autoApprove:false},"plan-auto":{agent:"plan",autoApprove:true}};exports.opencodeAdapter={command:"opencode",meta:{displayName:"OpenCode",capabilities:{resume:true}},buildArgs(t,e,n){let r=e.additionalArgs,o=r!==void 0?[...r]:["run"];Or(o,"--format")||o.push("--format","json"),e.resumeSessionId&&!o.includes("-s")&&!o.includes("--session")&&o.push("-s",e.resumeSessionId);let{agent:i,autoApprove:s}=Sl(e.mode);Or(o,"--agent")||i!==void 0&&o.push("--agent",i),s&&!Or(o,"--auto")&&o.push("--auto"),e.effort!==void 0&&!Or(o,"--variant")&&o.push("--variant",e.effort),e.model&&o.push("--model",e.model);let a;return !n&&!s&&!e.env?.OPENCODE_PERMISSION&&(a={OPENCODE_PERMISSION:JSON.stringify({external_directory:"allow"})}),{args:o,stdinMessage:t,env:a}},extractText(t){let e=t.split(`
11
+ `).map(o=>o.trim()).filter(Boolean),n=[],r=null;for(let o of e)try{let i=JSON.parse(o);if(i.type==="text"&&typeof i.part?.text=="string"){let s=i.part.text;s.trim()&&n.push(s.trim());}i.type==="result"&&typeof i.result=="string"&&(r=i.result);}catch{}return n.length>0?n[n.length-1]:r||t.trim()},parseResultMeta(t){let e=it(t);return e?{usage:{inputTokens:e.inputTokens,outputTokens:e.outputTokens,cachedInputTokens:e.cachedInputTokens,costUsd:0},model:null}:{usage:null,model:null}},parseEvent(t,e){let n=e??new Date().toISOString(),r=[],o;try{JSON.parse(t),o=[t];}catch{o=Ol(t),o.length>1&&console.warn("[opencode] parseEvent: falling back to concatenated-JSON split for a malformed line");}for(let i of o){let s;try{s=JSON.parse(i);}catch{continue}let a=s.type;if(a){if(a==="text"){let c=s.part?.text;c&&r.push({timestamp:n,type:"text",content:c});continue}if(a==="tool_use"){let d=s.part;if(!d)continue;let c=String(d.tool||""),l=String(d.callID||""),f=d.state,g=String(f?.status||""),m=f?.input,k=Ue(m);if(r.push({timestamp:n,type:"tool_use",toolName:c,toolUseId:l,toolInput:k}),g==="completed"&&f?.output!==void 0){let h=f.output,v=typeof h=="string"?h:JSON.stringify(h);r.push({timestamp:n,type:"tool_result",toolUseId:l,resultPreview:v,isError:false});}else g==="error"&&r.push({timestamp:n,type:"tool_result",toolUseId:l,resultPreview:String(f?.error||"tool error"),isError:true});continue}}}return r},suppressOutputLine(t){let e=t.trim();if(!e.startsWith("{")||!e.endsWith("}"))return false;try{let r=JSON.parse(e).type;return r?Pl.has(r):!1}catch{return false}}};});var Ho,Wo=M(()=>{u();Qt();be();Ho={command:"agy",meta:{displayName:"Antigravity",models:Ao(),defaultTimeoutMs:{query:12e4,execute:3e5},defaultIdleMs:0},buildArgs(t,e,n){if(e.additionalArgs!==void 0){let o=[...e.additionalArgs];return o.includes("--print")||o.unshift("--print",t),e.model&&o.push("--model",e.model),o.push("--dangerously-skip-permissions"),{args:o}}let r=["--print",t,"--dangerously-skip-permissions"];return e.model&&r.push("--model",e.model),{args:r}},extractText(t){let e=t.trim();if(!e)throw new exports.ProviderError("Antigravity CLI returned empty output with exit code 0. agy may have hidden an auth/quota/model error in its log file; inspect ~/.gemini/antigravity-cli/log for details.","cli/antigravity",{code:"EMPTY_OUTPUT",kind:"transient"});return e},parseResultMeta(t){return {usage:null,model:null}},parseEvent(t,e){return []}};});var Js,Ks=M(()=>{u();Zt();en();Js={parseEvent(t,e){let n;try{n=JSON.parse(t);}catch{return []}let r=n.type;if(!r)return [];if(r!=="message"&&r!=="tool_use"&&r!=="tool_result")return [];let o=e??new Date().toISOString();if(r==="message"){if(n.role!=="assistant")return [];let s=n.content;return s?[{timestamp:o,type:"text",content:s}]:[]}if(r==="tool_use"){let i=String(n.tool_name||""),s=n.tool_id,a=n.parameters,d=Ue(a);return /^bash$/i.test(i)&&Ne(d)?[Me(o,d)]:[{timestamp:o,type:"tool_use",toolName:i,toolUseId:s,toolInput:d}]}if(r==="tool_result"){let i=n.tool_id,s=String(n.output||""),a=n.status!=="success";return [{timestamp:o,type:"tool_result",toolUseId:i,resultPreview:s,isError:a}]}return []}};});function nn(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function Mr(t){return nn(t)?t:void 0}function ke(t){return typeof t=="string"?t:void 0}function jt(t){let e=typeof t=="number"?t:Number(t??0);return Number.isFinite(e)?e:0}function Ll(t){let e=[],n=-1,r=0,o=false,i=false;for(let s=0;s<t.length;s+=1){let a=t[s];if(n===-1){(a==="{"||a==="[")&&(n=s,r=1);continue}if(i){i=false;continue}if(a==="\\"&&o){i=true;continue}if(a==='"'){o=!o;continue}o||(a==="{"||a==="["?r+=1:(a==="}"||a==="]")&&(r-=1,r===0&&(e.push(t.slice(n,s+1)),n=-1)));}return n!==-1&&e.push(t.slice(n)),e}function bn(t){let e=t.trim();if(!e)return [];try{let n=JSON.parse(e);return nn(n)?[n]:[]}catch{return Ll(e).flatMap(n=>{try{let r=JSON.parse(n);return nn(r)?[r]:[]}catch{return []}})}}function Tn(t){let e=JSON.stringify(t);return e===void 0?String(t):e}function An(t){if(typeof t=="string")return t;if(Array.isArray(t)){let e=t.map(An).filter(n=>n!==void 0);return e.length>0?e.join(`
12
+ `):void 0}if(nn(t)){if(typeof t.text=="string")return t.text;if(typeof t.message=="string")return t.message;if(typeof t.error=="string")return t.error;if(t.type==="text"&&typeof t.data=="string")return t.data;for(let e of ["content","FileContent","rawOutput"]){let n=An(t[e]);if(n!==void 0)return n}}}function jl(t){if(t.rawOutput!==null&&t.rawOutput!==void 0)return An(t.rawOutput)??Tn(t.rawOutput);if(t.content!==null&&t.content!==void 0)return An(t.content)??Tn(t.content);if(t.result!==null&&t.result!==void 0)return An(t.result)??Tn(t.result)}function ea(t){let e=Mr(t.error),n=[t.message,t.errorMessage,e?.message,e?.detail,typeof t.error=="string"?t.error:void 0].find(r=>typeof r=="string"&&r.trim().length>0);return n?ta(n):"Grok CLI reported an error."}function ta(t){return (t.replace(Ul,"").split(/\r?\n/).map(n=>n.trim()).filter(Boolean)[0]??t.trim()).slice(0,500)}function Zs(t){return Ml.test(t)}function $l(t){let e=Mr(t.modelUsage);return e?Object.keys(e)[0]??null:null}function Bl(t){let e=Mr(t.usage);if(!e)return null;let n=jt(e.cache_read_input_tokens);return {inputTokens:jt(e.input_tokens)+n,cachedInputTokens:n,outputTokens:jt(e.output_tokens),costUsd:jt(t.total_cost_usd)}}function Fl(t){let e=0,n=0,r=0,o=false,i=new Set;for(let s of t.split(`
13
+ `).flatMap(bn)){if(s.type!=="usage")continue;let a=Mr(s.usage);if(!a)continue;let d=ke(s.signature);if(d&&d.length>0){let l=`signature:${d}`;if(i.has(l))continue;i.add(l);}let c=jt(a.cache_read_input_tokens);e+=jt(a.input_tokens)+c,n+=c,r+=jt(a.output_tokens),o=true;}return o?{inputTokens:e,cachedInputTokens:n,outputTokens:r,costUsd:0}:null}function Hl(t,e){if(!Array.isArray(e.entries)||e.entries.length===0)return [];let n=[];for(let i of e.entries.slice(0,Xs)){if(!nn(i))continue;let s=ke(i.content)?.trim();if(!s)continue;let a=ke(i.status)?.trim(),d=ke(i.priority)?.trim(),c=[a?`status=${a}`:void 0,d?`priority=${d}`:void 0].filter(f=>!!f),l=c.length>0?` (${c.join(", ")})`:"";n.push(`- ${s}${l}`);}if(n.length===0)return [];e.entries.length>Xs&&n.push(Qs);let r=n.join(`
14
+ `),o=r.length>Ys?`${r.slice(0,Ys-1)}${Qs}`:r;return [{timestamp:t,type:"info",content:o}]}function Wl(t,e){let n=ke(e.type);if(n==="thought"){let r=ke(e.data);return r===void 0?[]:[{timestamp:t,type:"thinking",content:r}]}if(n==="text"){let r=ke(e.data);return r===void 0?[]:[{timestamp:t,type:"text",content:r}]}if(n==="plan")return Hl(t,e);if(n==="tool_call"){let r=ke(e.toolCallId),o=ke(e.toolName)??ke(e.title),i=e.rawInput===void 0?void 0:Tn(e.rawInput);return [{timestamp:t,type:"tool_use",toolUseId:r,toolName:o,toolInput:i}]}if(n==="tool_call_update"){let r=ke(e.status);return r!=="completed"&&r!=="failed"&&r!=="error"?[]:[{timestamp:t,type:"tool_result",toolUseId:ke(e.toolCallId),toolName:ke(e.toolName)??ke(e.title),resultPreview:jl(e),isError:r!=="completed"||e.isError===true}]}if(n==="error"){let r=ea(e);return [{timestamp:t,type:"error",content:r,errorMessage:r}]}return []}var Nr,Nl,Ml,Ul,Xs,Ys,Qs;exports.grokAdapter=void 0;var qo=M(()=>{u();Qt();Ar();be();Ir();Nr="cli/grok",Nl=new Set(["available_commands","usage","end"]),Ml=/(?:rate[\s_-]*limit|quota|usage[\s_-]*limit|too many requests|limit(?:ed|ing)?\s+(?:exceeded|reached))/i,Ul=/\u001b\[[0-?]*[ -/]*[@-~]/g,Xs=20,Ys=4e3,Qs="\u2026";exports.grokAdapter={command:"grok",createSessionId:()=>crypto$1.randomUUID(),meta:{displayName:"Grok",capabilities:{resume:true}},buildArgs(t,e){let{model:n,effort:r}=tn(e.model),o=e.effort??r,i=e.resumeSessionId?["--resume",e.resumeSessionId]:e.providerSessionId?["--session-id",e.providerSessionId]:[],s=n?["--model",n]:[],a=n?rt("grok").some(x=>x.id===n):false,d=n&&a?It("grok",n):[],c=!o||d.length===0||d.includes(o)?o:void 0,l=Vs(c),f=e.additionalArgs??[],g=x=>f.some(b=>b===x||b.startsWith(`${x}=`)),m=e.providerOptions,k=m?.alwaysApprove,h=m?.sandbox,v=g("--permission-mode")?[]:qs(e.mode),_=g("--always-approve")?[]:zs(k),w=g("--sandbox")?[]:Gs(h);return {args:["--no-auto-update",...i,"--single",t,"--output-format","streaming-json","--no-alt-screen",...s,...l,...v,..._,...w,...f]}},extractText(t){let e=[],n=false;for(let r of t.split(`
15
+ `).flatMap(bn))typeof r.type=="string"&&(n=true),r.type==="text"&&typeof r.data=="string"&&e.push(r.data);return e.length>0?e.join(""):n?"":t.trim()},extractFailure(t){for(let e of bn(t))if(e.type==="error"){let n=ea(e);return Zs(Tn(e))?new exports.RateLimitError(n,Nr):new exports.ProviderError(n,Nr)}return null},interpretExit(t,e){if(t===0)return null;let n=ta(e)||`Grok CLI exited with code ${t}.`;return Zs(e)?new exports.RateLimitError(n,Nr):new exports.ProviderError(n,Nr)},parseResultMeta(t){let n=t.split(`
16
+ `).flatMap(bn).find(r=>r.type==="end");return n?{usage:Bl(n),model:$l(n)}:{usage:Fl(t),model:null}},parseEvent(t,e){let n=e??new Date().toISOString();return bn(t).flatMap(r=>Wl(n,r))},suppressOutputLine(t){let e=t.trim();if(!e.startsWith("{")||!e.endsWith("}"))return false;try{let n=JSON.parse(e);return nn(n)&&typeof n.type=="string"?Nl.has(n.type):!1}catch{return false}}};});function In(t,e,n){if(n){let r=exports.BUILTIN_ADAPTERS[n];if(r?.parseEvent)return r.parseEvent(e,t);let o=ql[n];if(o?.parseEvent)return o.parseEvent(e,t)}for(let r of Object.values(exports.BUILTIN_ADAPTERS)){let o=r.parseEvent?.(e,t)??[];if(o.length>0)return o}return []}exports.BUILTIN_ADAPTERS=void 0;var ql,ht=M(()=>{u();jo();$o();Bo();Fo();Wo();Ks();qo();jo();$o();Bo();Fo();Wo();qo();Zt();exports.BUILTIN_ADAPTERS={codex:exports.codexAdapter,claude:exports.claudeAdapter,opencode:exports.opencodeAdapter,antigravity:Ho,copilot:exports.copilotAdapter,grok:exports.grokAdapter},ql={gemini:Js};});var rn,zo=M(()=>{u();rn=class{timeoutMs;onIdleCb;now;timer=null;lastActivity=0;settled=false;constructor(e){this.timeoutMs=e.timeoutMs,this.onIdleCb=e.onIdle,this.now=e.now??Date.now;}start(){this.settled||(this.lastActivity=this.now(),this.scheduleCheck());}refresh(){this.settled||(this.lastActivity=this.now());}stop(){this.settled||(this.settled=true,this.timer&&(clearTimeout(this.timer),this.timer=null));}scheduleCheck(){if(this.settled)return;let e=this.timeoutMs-(this.now()-this.lastActivity);if(e<=0){this.fireIdle();return}this.timer=setTimeout(()=>this.scheduleCheck(),e),this.timer.unref();}fireIdle(){this.settled||(this.settled=true,this.timer=null,this.onIdleCb());}};});function na(t,e){if(t===void 0||t==="")return e;let n=parseInt(t,10);return Number.isNaN(n)?e:n}function Go(t=process.env){let e=t.CREWX_TIMEOUT_IDLE;if(e===void 0||e==="")return;let n=parseInt(e,10);if(!(!Number.isFinite(n)||n<=0))return n}function ra(t=process.env){return {queryMs:na(t.CREWX_TIMEOUT_QUERY,288e5),executeMs:na(t.CREWX_TIMEOUT_EXECUTE,288e5),idleMs:Go(t)??6e5}}var Lr=M(()=>{u();});function Gl(t){let e=t.split(`
17
17
  `).filter(d=>d.trim()),n=[],r=[],o=[],i=[],s=[],a=null;for(let d of e)try{let c=JSON.parse(d);if(c.type==="assistant"&&Array.isArray(c.message?.content))for(let l of c.message.content)l.type==="text"&&typeof l.text=="string"&&l.text.trim()&&n.push(l.text.trim());if(c.type==="message"&&c.role==="assistant"&&c.delta===!0&&typeof c.content=="string"&&r.push(c.content),c.type==="assistant.message"&&typeof c.data?.content=="string"){let l=c.data.content;l.trim()&&o.push(l.trim());}if(c.type==="item.completed"&&(c.item?.type==="message"||c.item?.type==="agent_message")&&typeof c.item?.text=="string"){let l=c.item.text;l.trim()&&i.push(l.trim());}if(c.type==="text"&&typeof c.part?.text=="string"){let l=c.part.text;l.trim()&&s.push(l.trim());}c.type==="result"&&typeof c.result=="string"&&(a=c.result);}catch{}return n.length>0?n.join(`
18
18
 
19
19
  `):r.length>0?r.join(""):o.length>0?o.join(`
20
20
 
21
21
  `):i.length>0?i.join(`
22
22
 
23
- `):s.length>0?s.join(""):a||t.trim()}function jl(t){let e=tt(t);return e?{inputTokens:e.inputTokens,outputTokens:e.outputTokens,cachedInputTokens:e.cachedInputTokens,costUsd:0}:null}function Fl(t,e,n=process.platform){return t==="copilot"&&n==="win32"&&e instanceof exports.ProviderError&&e.message.includes('CLI command "copilot" not found')}function Zs(t,e,n,r,o,i,s){return new Promise((a,d)=>{let c=o?.timeoutMs??288e5,l=o?.idleMs??6e5,f={...process.env,...o?.env??{}},g=o?.cwd??process.cwd(),m=It({command:t,env:f,cwd:g,allowShellFallback:true}),k=Pt(m,e),h=child_process.spawn(k.command,k.argv,{env:f,cwd:o?.cwd,stdio:["pipe","pipe","pipe"],shell:k.shell??false,windowsHide:k.windowsHide,detached:process.platform!=="win32"});h.stdin.on("error",O=>{O.code!=="EPIPE"&&o?.onOutput?.(`stdin error: ${O.message}`,"stderr");}),i!==void 0&&h.stdin.write(i),h.stdin.end(),h.pid!==void 0&&o?.onPid?.(h.pid);let v=false,w=false,_=O=>{if(h.pid!==void 0)try{process.platform==="win32"?h.kill(O):process.kill(-h.pid,O);}catch{}},R=()=>{_("SIGKILL");},L=setTimeout(()=>{v||(w=true,A?.stop(),_("SIGTERM"),setTimeout(R,Tn).unref());},c);L.unref();let A=l>0?new en({timeoutMs:l,onIdle:()=>{if(v)return;v=true,clearTimeout(L),_("SIGTERM"),setTimeout(R,Tn).unref();let O=Math.round(l/6e4);H(new St(`${n} produced no output for ${O}m (idle timeout). Process killed. The CLI may be waiting on interactive input or stuck \u2014 check the prompt or retry.`,n));}}):null;A?.start();let Z=new string_decoder.StringDecoder("utf8"),P=new string_decoder.StringDecoder("utf8"),F="",ce="",X="",re="",H=O=>{O instanceof Error&&(O.stdout=F),d(O);};h.stdout.on("data",O=>{A?.refresh();let te=Z.write(O);F+=te,X+=te;let z=X.split(`
24
- `);X=z.pop()??"";for(let $ of z)if($.trim()&&(o?.onOutput?.($,"stdout"),s?.extractFailure)){let W=s.extractFailure($);if(W){v=true,clearTimeout(L),A?.stop(),_("SIGTERM"),setTimeout(R,Tn).unref(),H(W);return}}}),h.stderr.on("data",O=>{A?.refresh();let te=P.write(O);ce+=te,re+=te;let z=re.split(`
25
- `);re=z.pop()??"";for(let $ of z)$.trim()&&o?.onOutput?.($,"stderr");}),h.on("error",O=>{v=true,clearTimeout(L),A?.stop(),O.code==="ENOENT"?H(new exports.ProviderError(`CLI command "${t}" not found. Is ${n} installed?`,n)):H(new exports.ProviderError(`Spawn error: ${O.message}`,n));}),h.on("close",(O,te)=>{if(v)return;v=true,clearTimeout(L),A?.stop();let z=Z.end(),$=P.end();z&&(F+=z,X+=z),$&&(ce+=$,re+=$),X.trim()&&o?.onOutput?.(X,"stdout"),re.trim()&&o?.onOutput?.(re,"stderr");let W=O??0;if(o?.onExitCode?.(W),w)return H(new Ot(`Total runtime exceeded ${c}ms; process killed.`,n));if(te)return H(new exports.ProviderError(`Process terminated by signal ${te}`,n,{code:"PROVIDER_CRASHED",kind:"permanent"}));if(W!==0){if(s?.interpretExit){let ee=s.interpretExit(W,ce);if(ee){H(ee);return}}H(new exports.ProviderError(`Process exited with code ${W}: ${ce.slice(0,500)}`,n));return}let fe;try{fe=s?s.extractText(F):Bl(F);}catch(ee){H(ee instanceof Error?ee:new exports.ProviderError(String(ee),n));return}a({stdout:F,parsed:fe});});})}function nt(t,e){ea.set(t,e);}function rt(t,e){let n=t.split("/");if(n.length!==2)throw new exports.ProviderError(`Invalid provider format: "${t}". Expected namespace/id (e.g., cli/claude)`,t);let[r,o]=n,i=ea.get(r);if(i)return i(o,t);if(r==="cli"){let s=exports.BUILTIN_ADAPTERS[o];if(!s)throw new exports.ProviderError(`Unknown CLI provider id: "${o}". Supported: ${Object.keys(exports.BUILTIN_ADAPTERS).join(", ")}`,t);return new qo(o,s,t,e)}throw new exports.ProviderError(`Unsupported provider namespace: "${r}". Register a factory with registerProviderFactory('${r}', factory).`,t)}function ta(t,e,n){if(!t||!e)return t??{};let r=e({providerStr:n.providerStr,providerId:n.providerId,mode:t.mode});return r.length===0?t:{...t,additionalArgs:[...t.additionalArgs??[],...r]}}var Tn;exports.ClientToolCallRequiredError=void 0;var ea,qo,qe=D(()=>{u();Jt();Ct();ft();Kt();Ho();Dr();Kt();Tn=2e3;exports.ClientToolCallRequiredError=class extends Error{constructor(n,r){super(`Client tool call required: ${n.toolName}`);this.toolCall=n;this.continuationState=r;}toolCall;continuationState;name="ClientToolCallRequiredError"},ea=new Map;qo=class{constructor(e,n,r,o){this.providerId=e;this.adapter=n;this.providerStr=r;this.additionalArgsProvider=o;}providerId;adapter;providerStr;additionalArgsProvider;async execute(e,n){let r=this.composeMessage(e,n),o=this.prepareProviderSession(this.applyAdditionalArgs(n)),{args:i,stdinMessage:s,env:a}=this.adapter.buildArgs(r,o,true);o.onCommand?.(`${this.adapter.command} ${i.join(" ")}`);let d=a?{...o,env:{...o.env??{},...a}}:o,{stdout:c,parsed:l}=await this.runProcess(i,d,s);return this.handleResultMeta(c,o),l}async query(e,n){let r=this.composeMessage(e,n),o=this.prepareProviderSession(this.applyAdditionalArgs(n)),{args:i,stdinMessage:s,env:a}=this.adapter.buildArgs(r,o,false);o.onCommand?.(`${this.adapter.command} ${i.join(" ")}`);let d=a?{...o,env:{...o.env??{},...a}}:o,{stdout:c,parsed:l}=await this.runProcess(i,d,s);return this.handleResultMeta(c,o),l}applyAdditionalArgs(e){return ta(e,this.additionalArgsProvider,{providerStr:this.providerStr,providerId:this.providerId})}prepareProviderSession(e){if(!this.adapter.createSessionId)return e;if(e.resumeSessionId)return e.onProviderSessionId?.(e.resumeSessionId),{...e,providerSessionId:void 0};let n=this.adapter.createSessionId();return e.onProviderSessionId?.(n),{...e,providerSessionId:n}}composeMessage(e,n){return n?.systemPrompt?`${n.systemPrompt}
23
+ `):s.length>0?s.join(""):a||t.trim()}function Vl(t){let e=it(t);return e?{inputTokens:e.inputTokens,outputTokens:e.outputTokens,cachedInputTokens:e.cachedInputTokens,costUsd:0}:null}function Jl(t,e,n=process.platform){return t==="copilot"&&n==="win32"&&e instanceof exports.ProviderError&&e.message.includes('CLI command "copilot" not found')}function ia(t,e,n,r,o,i,s){return new Promise((a,d)=>{let c=o?.timeoutMs??288e5,l=o?.idleMs??6e5,f={...process.env,...o?.env??{}},g=o?.cwd??process.cwd(),m=Ot({command:t,env:f,cwd:g,allowShellFallback:true}),k=Dt(m,e),h=child_process.spawn(k.command,k.argv,{env:f,cwd:o?.cwd,stdio:["pipe","pipe","pipe"],shell:k.shell??false,windowsHide:k.windowsHide,detached:process.platform!=="win32"});h.stdin.on("error",O=>{O.code!=="EPIPE"&&o?.onOutput?.(`stdin error: ${O.message}`,"stderr");}),i!==void 0&&h.stdin.write(i),h.stdin.end(),h.pid!==void 0&&o?.onPid?.(h.pid);let v=false,_=false,w=O=>{if(h.pid!==void 0)try{process.platform==="win32"?h.kill(O):process.kill(-h.pid,O);}catch{}},x=()=>{w("SIGKILL");},L=setTimeout(()=>{v||(_=true,A?.stop(),w("SIGTERM"),setTimeout(x,Pn).unref());},c);L.unref();let A=l>0?new rn({timeoutMs:l,onIdle:()=>{if(v)return;v=true,clearTimeout(L),w("SIGTERM"),setTimeout(x,Pn).unref();let O=Math.round(l/6e4);H(new Mt(`${n} produced no output for ${O}m (idle timeout). Process killed. The CLI may be waiting on interactive input or stuck \u2014 check the prompt or retry.`,n));}}):null;A?.start();let ee=new string_decoder.StringDecoder("utf8"),C=new string_decoder.StringDecoder("utf8"),F="",ue="",Q="",oe="",H=O=>{O instanceof Error&&(O.stdout=F),d(O);};h.stdout.on("data",O=>{A?.refresh();let ne=ee.write(O);F+=ne,Q+=ne;let G=Q.split(`
24
+ `);Q=G.pop()??"";for(let j of G)if(j.trim()&&(o?.onOutput?.(j,"stdout"),s?.extractFailure)){let W=s.extractFailure(j);if(W){v=true,clearTimeout(L),A?.stop(),w("SIGTERM"),setTimeout(x,Pn).unref(),H(W);return}}}),h.stderr.on("data",O=>{A?.refresh();let ne=C.write(O);ue+=ne,oe+=ne;let G=oe.split(`
25
+ `);oe=G.pop()??"";for(let j of G)j.trim()&&o?.onOutput?.(j,"stderr");}),h.on("error",O=>{v=true,clearTimeout(L),A?.stop(),O.code==="ENOENT"?H(new exports.ProviderError(`CLI command "${t}" not found. Is ${n} installed?`,n)):H(new exports.ProviderError(`Spawn error: ${O.message}`,n));}),h.on("close",(O,ne)=>{if(v)return;v=true,clearTimeout(L),A?.stop();let G=ee.end(),j=C.end();G&&(F+=G,Q+=G),j&&(ue+=j,oe+=j),Q.trim()&&o?.onOutput?.(Q,"stdout"),oe.trim()&&o?.onOutput?.(oe,"stderr");let W=O??0;if(o?.onExitCode?.(W),_)return H(new Ut(`Total runtime exceeded ${c}ms; process killed.`,n));if(ne)return H(new exports.ProviderError(`Process terminated by signal ${ne}`,n,{code:"PROVIDER_CRASHED",kind:"permanent"}));if(W!==0){if(s?.interpretExit){let te=s.interpretExit(W,ue);if(te){H(te);return}}H(new exports.ProviderError(`Process exited with code ${W}: ${ue.slice(0,500)}`,n));return}let me;try{me=s?s.extractText(F):Gl(F);}catch(te){H(te instanceof Error?te:new exports.ProviderError(String(te),n));return}a({stdout:F,parsed:me});});})}function st(t,e){sa.set(t,e);}function at(t,e){let n=t.split("/");if(n.length!==2)throw new exports.ProviderError(`Invalid provider format: "${t}". Expected namespace/id (e.g., cli/claude)`,t);let[r,o]=n,i=sa.get(r);if(i)return i(o,t);if(r==="cli"){let s=exports.BUILTIN_ADAPTERS[o];if(!s)throw new exports.ProviderError(`Unknown CLI provider id: "${o}". Supported: ${Object.keys(exports.BUILTIN_ADAPTERS).join(", ")}`,t);return new Vo(o,s,t,e)}throw new exports.ProviderError(`Unsupported provider namespace: "${r}". Register a factory with registerProviderFactory('${r}', factory).`,t)}function aa(t,e,n){if(!t||!e)return t??{};let r=e({providerStr:n.providerStr,providerId:n.providerId,mode:t.mode});return r.length===0?t:{...t,additionalArgs:[...t.additionalArgs??[],...r]}}var Pn;exports.ClientToolCallRequiredError=void 0;var sa,Vo,ze=M(()=>{u();Yt();Nt();ht();Qt();zo();Lr();Qt();Pn=2e3;exports.ClientToolCallRequiredError=class extends Error{constructor(n,r){super(`Client tool call required: ${n.toolName}`);this.toolCall=n;this.continuationState=r;}toolCall;continuationState;name="ClientToolCallRequiredError"},sa=new Map;Vo=class{constructor(e,n,r,o){this.providerId=e;this.adapter=n;this.providerStr=r;this.additionalArgsProvider=o;}providerId;adapter;providerStr;additionalArgsProvider;async execute(e,n){let r=this.composeMessage(e,n),o=this.prepareProviderSession(this.applyAdditionalArgs(n)),{args:i,stdinMessage:s,env:a}=this.adapter.buildArgs(r,o,true);o.onCommand?.(`${this.adapter.command} ${i.join(" ")}`);let d=a?{...o,env:{...o.env??{},...a}}:o,{stdout:c,parsed:l}=await this.runProcess(i,d,s);return this.handleResultMeta(c,o),l}async query(e,n){let r=this.composeMessage(e,n),o=this.prepareProviderSession(this.applyAdditionalArgs(n)),{args:i,stdinMessage:s,env:a}=this.adapter.buildArgs(r,o,false);o.onCommand?.(`${this.adapter.command} ${i.join(" ")}`);let d=a?{...o,env:{...o.env??{},...a}}:o,{stdout:c,parsed:l}=await this.runProcess(i,d,s);return this.handleResultMeta(c,o),l}applyAdditionalArgs(e){return aa(e,this.additionalArgsProvider,{providerStr:this.providerStr,providerId:this.providerId})}prepareProviderSession(e){if(!this.adapter.createSessionId)return e;if(e.resumeSessionId)return e.onProviderSessionId?.(e.resumeSessionId),{...e,providerSessionId:void 0};let n=this.adapter.createSessionId();return e.onProviderSessionId?.(n),{...e,providerSessionId:n}}composeMessage(e,n){return n?.systemPrompt?`${n.systemPrompt}
26
26
 
27
27
  ---
28
28
 
29
- ${e}`:e}async runProcess(e,n,r){try{return await Zs(this.adapter.command,e,this.providerStr,this.providerId,n,r,this.adapter)}catch(o){if(Fl(this.providerId,o)){let i=e[0]==="copilot"?e:["copilot",...e];try{return await Zs("gh",i,this.providerStr,this.providerId,n,r,this.adapter)}catch(s){throw this.recoverPartialUsage(s,n),s}}throw this.recoverPartialUsage(o,n),o}}recoverPartialUsage(e,n){let r=e instanceof Error?e.stdout:void 0;typeof r=="string"&&r.length>0&&this.handleResultMeta(r,n);}handleResultMeta(e,n){if(!this.adapter.parseResultMeta){let s=jl(e);s&&n?.onUsage&&n.onUsage(s);return}let{usage:r,model:o}=this.adapter.parseResultMeta(e);r&&n?.onUsage&&n.onUsage(r);let i=o??(this.providerId==="opencode"?n?.model??null:null);i&&n?.onModel&&n.onModel(i);}};});function fi(t){let e=t.update;if(e.sessionUpdate==="agent_message_chunk"){let n=e.content;if(n.type==="text"&&typeof n.text=="string")return n.text}return null}function Le(t,e){try{let n=JSON.parse(t);if(n!=null&&typeof n=="object"&&typeof n.type=="string"&&Hu.has(n.type)){let r=e??new Date().toISOString();return [{...n,timestamp:n.timestamp||r}]}}catch{}return []}var Hu,gt=D(()=>{u();Hu=new Set(["text","tool_use","tool_result","error","running_instruction","agent_call"]);});var rd,od;exports.VercelProviderRuntime=void 0;var Pi=D(()=>{u();qe();rd=10,od=50,exports.VercelProviderRuntime=class{config;constructor(e){this.config=e;}async query(e,n){return this._run(e,"query",n)}async execute(e,n){return this._run(e,"execute",n)}async _run(e,n,r){let{generateText:o,tool:i}=await import('ai'),s=this.convertTools(r?.tools??[],i),a=this.createModel(r?.model),d=Math.min(r?.maxSteps??this.config.maxSteps??rd,od);try{let c=0,l=await o({model:a,system:r?.systemPrompt??void 0,prompt:e,tools:s,maxSteps:d,...this.config.temperature!==void 0&&{temperature:this.config.temperature},...this.config.maxTokens!==void 0&&{maxTokens:this.config.maxTokens},onStepFinish:g=>{if(c++,!!r?.onOutput){if(g.toolCalls&&g.toolCalls.length>0)for(let m of g.toolCalls)r.onOutput(JSON.stringify({type:"assistant",message:{content:[{type:"tool_use",id:m.toolCallId,name:m.toolName,input:m.args}]}}),"stdout");if(g.toolResults&&g.toolResults.length>0)for(let m of g.toolResults){let k=typeof m.result=="string"?m.result:JSON.stringify(m.result);r.onOutput(JSON.stringify({type:"user",message:{content:[{type:"tool_result",tool_use_id:m.toolCallId,output:k,is_error:!1}]}}),"stdout");}}}}),f=new Set((r?.tools??[]).filter(g=>!g.execute).map(g=>g.name));if(l.finishReason==="tool-calls"&&Array.isArray(l.toolCalls)&&l.toolCalls.length>0){let g=l.toolCalls.filter(m=>f.has(m.toolName));if(g.length>0){let m=g[0];throw new exports.ClientToolCallRequiredError({toolCallId:m.toolCallId,toolName:m.toolName,args:m.args},{userMessage:e,responseMessages:l.response?.messages??[],toolDefinitions:r?.tools??[],maxSteps:d,systemPrompt:r?.systemPrompt,modelOverride:r?.model})}}if(r?.onUsage&&l.usage){let g={inputTokens:l.usage.promptTokens??0,outputTokens:l.usage.completionTokens??0,cachedInputTokens:0,costUsd:0};r.onUsage(g);}return r?.onModel&&r.onModel(r.model??this.config.model),l.text??""}catch(c){throw c instanceof exports.ClientToolCallRequiredError?c:c.status===401?new exports.ProviderError(`Authentication failed for ${this.config.provider}. Check your API key.`,this.config.provider):c.status===429?new exports.ProviderError(`Rate limit exceeded for ${this.config.provider}.`,this.config.provider):new exports.ProviderError(`Provider error: ${c.message}`,this.config.provider)}}async continueWithToolResults(e,n,r){let{generateText:o,tool:i}=await import('ai'),s=this.convertTools(e.toolDefinitions,i),a=this.createModel(e.modelOverride),d=Math.min(e.maxSteps??this.config.maxSteps??rd,od),c=[{role:"user",content:e.userMessage},...e.responseMessages,{role:"tool",content:n.map(l=>({type:"tool-result",toolCallId:l.toolCallId,toolName:l.toolName,result:typeof l.result=="string"?l.result:JSON.stringify(l.result)}))}];try{let l=await o({model:a,system:e.systemPrompt??void 0,messages:c,tools:s,maxSteps:d,...this.config.temperature!==void 0&&{temperature:this.config.temperature},...this.config.maxTokens!==void 0&&{maxTokens:this.config.maxTokens}}),f=new Set(e.toolDefinitions.filter(g=>!g.execute).map(g=>g.name));if(l.finishReason==="tool-calls"&&Array.isArray(l.toolCalls)&&l.toolCalls.length>0){let g=l.toolCalls.filter(m=>f.has(m.toolName));if(g.length>0){let m=g[0];throw new exports.ClientToolCallRequiredError({toolCallId:m.toolCallId,toolName:m.toolName,args:m.args},{userMessage:e.userMessage,responseMessages:[...e.responseMessages,{role:"tool",content:n.map(k=>({type:"tool-result",toolCallId:k.toolCallId,toolName:k.toolName,result:typeof k.result=="string"?k.result:JSON.stringify(k.result)}))},...l.response?.messages??[]],toolDefinitions:e.toolDefinitions,maxSteps:e.maxSteps,systemPrompt:e.systemPrompt,modelOverride:e.modelOverride})}}return r?.onUsage&&l.usage&&r.onUsage({inputTokens:l.usage.promptTokens??0,outputTokens:l.usage.completionTokens??0,cachedInputTokens:0,costUsd:0}),r?.onModel&&r.onModel(e.modelOverride??this.config.model),l.text??""}catch(l){throw l instanceof exports.ClientToolCallRequiredError?l:new exports.ProviderError(`Provider error: ${l.message}`,this.config.provider)}}convertTools(e,n){let{z:r}=ge("zod"),o={};for(let i of e){let s=this.jsonSchemaToZod(i.parameters??{},r);i.execute?o[i.name]=n({description:i.description,parameters:s,execute:async a=>i.execute(a)}):o[i.name]=n({description:i.description,parameters:s});}return o}jsonSchemaToZod(e,n){if(!e||!e.properties)return n.object({});let r={},o=e.properties,i=e.required??[];for(let[s,a]of Object.entries(o)){let d;switch(a.type){case "string":d=n.string();break;case "number":d=n.number();break;case "integer":d=n.number().int();break;case "boolean":d=n.boolean();break;case "array":d=n.array(n.any());break;default:d=n.any();}a.description&&(d=d.describe(a.description)),i.includes(s)||(d=d.optional()),r[s]=d;}return n.object(r)}createModel(e){let{provider:n,apiKey:r,baseURL:o}=this.config,i=e||this.config.model;switch(n){case "api/openrouter":{let{createOpenAI:s}=ge("@ai-sdk/openai");return s({apiKey:r||process.env.OPENROUTER_API_KEY,baseURL:o||"https://openrouter.ai/api/v1"})(i)}case "api/openai":{let{createOpenAI:s}=ge("@ai-sdk/openai");return s({apiKey:r||process.env.OPENAI_API_KEY,...o&&{baseURL:o}})(i)}case "api/anthropic":{let{createAnthropic:s}=ge("@ai-sdk/anthropic");return s({apiKey:r||process.env.ANTHROPIC_API_KEY,...o&&{baseURL:o}})(i)}case "api/google":{let{createGoogleGenerativeAI:s}=ge("@ai-sdk/google");return s({apiKey:r||process.env.GOOGLE_API_KEY})(i)}default:throw new exports.ProviderError(`Unsupported API provider: ${n}`,n)}}};});var sd={};lr(sd,{registerApiProviders:()=>id});function id(t){nt("api",(e,n)=>{let r=t?.apiKeys?.[e];return new exports.VercelProviderRuntime({provider:n,model:"",apiKey:r,maxSteps:t?.defaults?.maxSteps,temperature:t?.defaults?.temperature})});}var Ci=D(()=>{u();qe();Pi();});exports.AcpProtocolError=void 0;var Si=D(()=>{u();exports.AcpProtocolError=class extends Error{constructor(n,r,o){super(n);this.code=r;this.data=o;}code;data;name="AcpProtocolError"};});var Df,Mf,ad,dd,Uf;exports.AcpConnection=void 0;var no=D(()=>{u();Jt();Si();qe();Ho();Dr();Df=-32e3,Mf=2e3,ad=3e4,dd=1e4,Uf=8*36e5,exports.AcpConnection=class{constructor(e){this.options=e;}options;proc=null;sdkConnection=null;disposed=false;stderrBuffer="";collectedStderr="";pendingUpdateCallback=null;idleWatchdog=null;idleReject=null;idlePromise=null;authMethods=[];_initResponse=null;get initResponse(){return this._initResponse}async connect(e){if(this.disposed)throw new exports.ProviderError("AcpConnection has been disposed","acp");let n=this.options.spawn,r=process.platform==="win32"&&(n.shellOnWindows??true),o={...process.env,...this.options.env??{}},i=this.options.cwd??process.cwd(),s;try{let w=It({command:n.command,env:o,cwd:i,allowShellFallback:r});s=Pt(w,n.args);}catch(w){throw new exports.ProviderError(w instanceof Error?w.message:String(w),"acp")}let a=child_process.spawn(s.command,s.argv,{stdio:["pipe","pipe","pipe"],env:o,cwd:this.options.cwd,shell:s.shell??false,windowsHide:true,detached:process.platform!=="win32"});a.pid!==void 0&&this.options.onPid?.(a.pid),a.stderr.on("data",w=>{let _=w.toString();this.collectedStderr+=_,this.stderrBuffer+=_;let R=this.stderrBuffer.split(`
30
- `);this.stderrBuffer=R.pop()??"";for(let b of R)b.trim()&&this.options.onStderr?.(b);}),this.proc=a;let d=this.options.idleMs??6e5;d>0&&(this.idlePromise=new Promise((w,_)=>{this.idleReject=_;}),this.idlePromise.catch(()=>{}),this.idleWatchdog=new en({timeoutMs:d,onIdle:()=>{let w=Math.round(d/6e4),_=new St(`acp produced no output for ${w}m (idle timeout). Process killed. The CLI may be waiting on interactive input or stuck \u2014 check the prompt or retry.`,"acp");this.idleReject?.(_),this.dispose();}}),this.idleWatchdog.start()),a.stdin.on("error",w=>{w.code!=="EPIPE"&&this.options.onStderr?.(`ACP stdin error: ${w.message}`);});let c=new WritableStream({write:w=>new Promise((_,R)=>{a.stdin.write(w,b=>{b?R(b):_();});}),close:()=>{a.stdin.end();}}),l=new ReadableStream({start:w=>{a.stdout.on("data",_=>{this.idleWatchdog?.refresh(),w.enqueue(new Uint8Array(_));}),a.stdout.on("end",()=>{w.close();}),a.stdout.on("error",_=>{w.error(_);});}}),f=sdk.ndJsonStream(c,l),g=this,m=new sdk.ClientSideConnection(w=>({requestPermission:async _=>{if(g.options.configOptions?.allow_all!==void 0){let R=_.options;if(Array.isArray(R)&&R.length>0)return {outcome:{outcome:"selected",optionId:(R.find(L=>L.kind==="allow_once")??R.find(L=>L.kind?.startsWith("allow_"))??R[0]).optionId}}}return {outcome:{outcome:"cancelled"}}},sessionUpdate:async _=>{g.pendingUpdateCallback?.(_);}}),f);this.sdkConnection=m;let k=new Promise((w,_)=>{a.on("error",R=>{if(R.code==="ENOENT"){let L=n.command==="npx"&&n.args.length>0?`@agentclientprotocol/${n.args[0]}`:n.command;_(new exports.ProviderError(`ACP command "${n.command}" not found. Is the ACP adapter installed? Try: npm install -g ${L}`,"acp"));}else _(new exports.ProviderError(`ACP spawn error: ${R.message}`,"acp"));});}),h=this.doInitialize(m,e),v=new Promise((w,_)=>{setTimeout(()=>{_(new exports.AcpProtocolError(`ACP connect timeout after ${ad}ms. The ACP adapter may not be installed or may require interactive setup.`));},ad).unref();});await Promise.race([h,v,k]);}async doInitialize(e,n){let r=await e.initialize({protocolVersion:1,clientCapabilities:{auth:{}},clientInfo:{name:n?.name??"crewx-sdk",version:n?.version??"0.8.4"}});this._initResponse=r,this.authMethods=r.authMethods??[];}async newSession(e){if(!this.sdkConnection)throw new exports.ProviderError("AcpConnection not connected. Call connect() first.","acp");try{return await this.newSessionWithTimeout(e)}catch(n){if(!this.isAuthError(n))throw n;return await this.tryAuthenticate(),this.newSessionWithTimeout(e)}}async newSessionWithTimeout(e){return (await this.newSessionRawTimeout(e)).sessionId}async newSessionRaw(e){if(!this.sdkConnection)throw new exports.ProviderError("AcpConnection not connected. Call connect() first.","acp");try{return await this.newSessionRawTimeout(e)}catch(n){if(!this.isAuthError(n))throw n;return await this.tryAuthenticate(),this.newSessionRawTimeout(e)}}async newSessionRawTimeout(e){let n=this.sdkConnection.newSession(e),r=new Promise((o,i)=>{setTimeout(()=>{i(new exports.AcpProtocolError(`ACP session/new timeout after ${dd}ms`));},dd).unref();});return Promise.race([n,r])}isAuthError(e){return typeof e=="object"&&e!==null&&"code"in e&&e.code===Df}async tryAuthenticate(){if(!this.sdkConnection)throw new exports.ProviderError("AcpConnection not connected.","acp");let e=this.authMethods.find(r=>r.type==="env_var"&&this.hasEnvVarsFor(r));if(e){await this.sdkConnection.authenticate({methodId:e.id});return}let n=this.authMethods.map(r=>`${r.id} (${r.type??"agent"})`).join(", ");if(this.authMethods.length>0){let r=this.authMethods.filter(o=>o.type==="env_var");if(r.length>0){let o=r.flatMap(i=>(i.vars??[]).filter(s=>!s.optional&&!process.env[s.name]).map(s=>s.name));throw new exports.AcpProtocolError(`ACP authentication required. Missing environment variables: ${o.join(", ")}. Set them in your shell or crewx.yaml env block.`)}throw new exports.AcpProtocolError(`ACP authentication required but no supported method found. Available methods: ${n}. CrewX currently supports env_var authentication only.`)}throw new exports.AcpProtocolError("ACP agent requires authentication but advertised no auth methods.")}hasEnvVarsFor(e){return !e.vars||e.vars.length===0?true:e.vars.filter(n=>!n.optional).every(n=>!!process.env[n.name])}async setModel(e,n){if(!this.sdkConnection)throw new exports.ProviderError("AcpConnection not connected. Call connect() first.","acp");await this.sdkConnection.unstable_setSessionModel({sessionId:e,modelId:n});}async setMode(e,n){if(!this.sdkConnection)throw new exports.ProviderError("AcpConnection not connected. Call connect() first.","acp");await this.sdkConnection.setSessionMode({sessionId:e,modeId:n});}async setConfigOption(e,n,r){if(!this.sdkConnection)throw new exports.ProviderError("AcpConnection not connected. Call connect() first.","acp");await this.sdkConnection.setSessionConfigOption({sessionId:e,configId:n,value:r});}async prompt(e,n,r,o){if(!this.sdkConnection||!this.proc)throw new exports.ProviderError("AcpConnection not connected. Call connect() first.","acp");this.pendingUpdateCallback=r??null;let i=this.sdkConnection,s=this.proc,a=o??Uf,d=false,c=i.prompt({sessionId:e,prompt:n}).finally(()=>{d=true;}),l=new Promise((m,k)=>{setTimeout(()=>{i.cancel({sessionId:e}).catch(()=>{}),k(new Ot(`ACP prompt timeout after ${a}ms`,"acp"));},a).unref();}),f=new Promise((m,k)=>{let h=(R,b,L)=>{if(d)return;let A=b!=null?`signal=${b}`:`code=${String(R)}`;k(new exports.ProviderError(`ACP process terminated unexpectedly (${A}) [${L}]: ${this.collectedStderr.slice(-500)}`,"acp"));},v=(R,b)=>h(R,b,"exit"),w=(R,b)=>h(R,b,"close");s.once("exit",v),s.once("close",w);let _=()=>{s.off("exit",v),s.off("close",w);};c.then(_,_);}),g=[c,l,f];this.idlePromise&&g.push(this.idlePromise);try{return await Promise.race(g)}finally{this.pendingUpdateCallback=null;}}async dispose(){if(this.disposed)return;this.disposed=true,this.idleWatchdog?.stop(),this.pendingUpdateCallback=null,this.sdkConnection=null;let e=this.proc;if(!e)return;this.proc=null,this.stderrBuffer.trim()&&(this.options.onStderr?.(this.stderrBuffer),this.stderrBuffer="");let n=e.pid,r=o=>{if(n!==void 0&&process.platform!=="win32")try{process.kill(-n,o);}catch{}else try{e.kill(o);}catch{}};await new Promise(o=>{let i=()=>{clearTimeout(s),o();};e.once("close",i),e.once("error",i);try{r("SIGTERM");}catch{i();return}let s=setTimeout(()=>{r("SIGKILL");},Mf);});}get isConnected(){return !this.disposed&&this.sdkConnection!==null&&this.proc!==null}};});function cd(t,e){if(t!=null&&typeof t=="object"){let n=t;if(typeof n.command=="string")return n.command;if(typeof n.file_path=="string")return n.file_path;if(typeof n.filePath=="string")return n.filePath;if(typeof n.path=="string")return n.path;if(typeof n.query=="string")return n.query;if(typeof n.pattern=="string")return n.pattern;if(typeof n.url=="string")return n.url;if(Object.keys(n).length>0)return JSON.stringify(n)}if(e&&e.length>0)return e.map(n=>n.path).join(", ")}var Lf;exports.AcpProviderRuntime=void 0;var Oi=D(()=>{u();gt();no();Lf={read:"Read",edit:"Edit",delete:"Delete",move:"Move",search:"Search",execute:"Bash",think:"Think",fetch:"WebFetch",switch_mode:"SwitchMode"};exports.AcpProviderRuntime=class{constructor(e,n,r){this.adapter=n;}adapter;async query(e,n){return this.runPrompt(e,n)}async execute(e,n){return this.runPrompt(e,n)}async dispose(){}async runPrompt(e,n){let{command:r,args:o}=this.adapter.spawn;n?.onCommand?.(`${r} ${o.join(" ")}`);let i=this.adapter.buildSpawnEnv?.(n?.model??""),s=i?{...n?.env,...i}:n?.env,a=new exports.AcpConnection({spawn:this.adapter.spawn,env:s,cwd:n?.cwd,timeoutMs:n?.timeoutMs,idleMs:n?.idleMs,onPid:n?.onPid,onStderr:d=>n?.onOutput?.(d,"stderr"),configOptions:n?.configOptions});try{await a.connect(this.adapter.clientInfo);let d=this.adapter.buildSessionParams({cwd:n?.cwd,env:n?.env,model:n?.model,systemPrompt:n?.systemPrompt}),c=await a.newSession(d);await this.applySessionOptions(a,c,n);let l=this.composePrompt(e,n),f=[],g=await a.prompt(c,l,m=>this.handleUpdate(m,n,f),n?.timeoutMs);return this.handleUsage(g,n),f.join("")}finally{await a.dispose().catch(()=>{});}}async applySessionOptions(e,n,r){if(r?.model&&r.model!=="default"&&!this.adapter.buildSpawnEnv){let o=this.adapter.buildEffortAction?.(r.effort??"",r.model);try{o?.type==="set_model"?await e.setModel(n,o.modelId):await e.setModel(n,r.model);}catch(i){console.warn(`[acp] setModel(${r.model}) failed: ${i instanceof Error?i.message:String(i)}`);}}if(r?.mode){let o=this.adapter.resolveMode?.(r.mode)??r.mode;if(o)try{await e.setMode(n,o);}catch(i){console.warn(`[acp] setMode(${o}) failed: ${i instanceof Error?i.message:String(i)}`);}}if(r?.effort){let o=this.adapter.buildEffortAction?.(r.effort,r.model);if(o&&o.type==="set_config_option")try{await e.setConfigOption(n,o.configId,o.value);}catch(i){console.warn(`[acp] setConfigOption(${o.configId}) effort failed: ${i instanceof Error?i.message:String(i)}`);}}if(r?.configOptions)for(let[o,i]of Object.entries(r.configOptions))try{await e.setConfigOption(n,o,i);}catch(s){console.warn(`[acp] setConfigOption(${o}) failed, retrying: ${s instanceof Error?s.message:String(s)}`);try{await new Promise(a=>setTimeout(a,500)),await e.setConfigOption(n,o,i);}catch(a){console.warn(`[acp] setConfigOption(${o}) retry failed: ${a instanceof Error?a.message:String(a)}`);}}}composePrompt(e,n){let r=[];return n?.systemPrompt?.trim()&&(r.push(n.systemPrompt),r.push("---")),n?.context&&(r.push(n.context),r.push("---")),r.push(e),[{type:"text",text:r.join(`
29
+ ${e}`:e}async runProcess(e,n,r){try{return await ia(this.adapter.command,e,this.providerStr,this.providerId,n,r,this.adapter)}catch(o){if(Jl(this.providerId,o)){let i=e[0]==="copilot"?e:["copilot",...e];try{return await ia("gh",i,this.providerStr,this.providerId,n,r,this.adapter)}catch(s){throw this.recoverPartialUsage(s,n),s}}throw this.recoverPartialUsage(o,n),o}}recoverPartialUsage(e,n){let r=e instanceof Error?e.stdout:void 0;typeof r=="string"&&r.length>0&&this.handleResultMeta(r,n);}handleResultMeta(e,n){if(!this.adapter.parseResultMeta){let s=Vl(e);s&&n?.onUsage&&n.onUsage(s);return}let{usage:r,model:o}=this.adapter.parseResultMeta(e);r&&n?.onUsage&&n.onUsage(r);let i=o??(this.providerId==="opencode"?n?.model??null:null);i&&n?.onModel&&n.onModel(i);}};});function hi(t){let e=t.update;if(e.sessionUpdate==="agent_message_chunk"){let n=e.content;if(n.type==="text"&&typeof n.text=="string")return n.text}return null}function je(t,e){try{let n=JSON.parse(t);if(n!=null&&typeof n=="object"&&typeof n.type=="string"&&Ku.has(n.type)){let r=e??new Date().toISOString();return [{...n,timestamp:n.timestamp||r}]}}catch{}return []}var Ku,yt=M(()=>{u();Ku=new Set(["text","tool_use","tool_result","error","running_instruction","agent_call"]);});var ld,ud;exports.VercelProviderRuntime=void 0;var Mi=M(()=>{u();ze();ld=10,ud=50,exports.VercelProviderRuntime=class{config;constructor(e){this.config=e;}async query(e,n){return this._run(e,"query",n)}async execute(e,n){return this._run(e,"execute",n)}async _run(e,n,r){let{generateText:o,tool:i}=await import('ai'),s=this.convertTools(r?.tools??[],i),a=this.createModel(r?.model),d=Math.min(r?.maxSteps??this.config.maxSteps??ld,ud);try{let c=0,l=await o({model:a,system:r?.systemPrompt??void 0,prompt:e,tools:s,maxSteps:d,...this.config.temperature!==void 0&&{temperature:this.config.temperature},...this.config.maxTokens!==void 0&&{maxTokens:this.config.maxTokens},onStepFinish:g=>{if(c++,!!r?.onOutput){if(g.toolCalls&&g.toolCalls.length>0)for(let m of g.toolCalls)r.onOutput(JSON.stringify({type:"assistant",message:{content:[{type:"tool_use",id:m.toolCallId,name:m.toolName,input:m.args}]}}),"stdout");if(g.toolResults&&g.toolResults.length>0)for(let m of g.toolResults){let k=typeof m.result=="string"?m.result:JSON.stringify(m.result);r.onOutput(JSON.stringify({type:"user",message:{content:[{type:"tool_result",tool_use_id:m.toolCallId,output:k,is_error:!1}]}}),"stdout");}}}}),f=new Set((r?.tools??[]).filter(g=>!g.execute).map(g=>g.name));if(l.finishReason==="tool-calls"&&Array.isArray(l.toolCalls)&&l.toolCalls.length>0){let g=l.toolCalls.filter(m=>f.has(m.toolName));if(g.length>0){let m=g[0];throw new exports.ClientToolCallRequiredError({toolCallId:m.toolCallId,toolName:m.toolName,args:m.args},{userMessage:e,responseMessages:l.response?.messages??[],toolDefinitions:r?.tools??[],maxSteps:d,systemPrompt:r?.systemPrompt,modelOverride:r?.model})}}if(r?.onUsage&&l.usage){let g={inputTokens:l.usage.promptTokens??0,outputTokens:l.usage.completionTokens??0,cachedInputTokens:0,costUsd:0};r.onUsage(g);}return r?.onModel&&r.onModel(r.model??this.config.model),l.text??""}catch(c){throw c instanceof exports.ClientToolCallRequiredError?c:c.status===401?new exports.ProviderError(`Authentication failed for ${this.config.provider}. Check your API key.`,this.config.provider):c.status===429?new exports.ProviderError(`Rate limit exceeded for ${this.config.provider}.`,this.config.provider):new exports.ProviderError(`Provider error: ${c.message}`,this.config.provider)}}async continueWithToolResults(e,n,r){let{generateText:o,tool:i}=await import('ai'),s=this.convertTools(e.toolDefinitions,i),a=this.createModel(e.modelOverride),d=Math.min(e.maxSteps??this.config.maxSteps??ld,ud),c=[{role:"user",content:e.userMessage},...e.responseMessages,{role:"tool",content:n.map(l=>({type:"tool-result",toolCallId:l.toolCallId,toolName:l.toolName,result:typeof l.result=="string"?l.result:JSON.stringify(l.result)}))}];try{let l=await o({model:a,system:e.systemPrompt??void 0,messages:c,tools:s,maxSteps:d,...this.config.temperature!==void 0&&{temperature:this.config.temperature},...this.config.maxTokens!==void 0&&{maxTokens:this.config.maxTokens}}),f=new Set(e.toolDefinitions.filter(g=>!g.execute).map(g=>g.name));if(l.finishReason==="tool-calls"&&Array.isArray(l.toolCalls)&&l.toolCalls.length>0){let g=l.toolCalls.filter(m=>f.has(m.toolName));if(g.length>0){let m=g[0];throw new exports.ClientToolCallRequiredError({toolCallId:m.toolCallId,toolName:m.toolName,args:m.args},{userMessage:e.userMessage,responseMessages:[...e.responseMessages,{role:"tool",content:n.map(k=>({type:"tool-result",toolCallId:k.toolCallId,toolName:k.toolName,result:typeof k.result=="string"?k.result:JSON.stringify(k.result)}))},...l.response?.messages??[]],toolDefinitions:e.toolDefinitions,maxSteps:e.maxSteps,systemPrompt:e.systemPrompt,modelOverride:e.modelOverride})}}return r?.onUsage&&l.usage&&r.onUsage({inputTokens:l.usage.promptTokens??0,outputTokens:l.usage.completionTokens??0,cachedInputTokens:0,costUsd:0}),r?.onModel&&r.onModel(e.modelOverride??this.config.model),l.text??""}catch(l){throw l instanceof exports.ClientToolCallRequiredError?l:new exports.ProviderError(`Provider error: ${l.message}`,this.config.provider)}}convertTools(e,n){let{z:r}=he("zod"),o={};for(let i of e){let s=this.jsonSchemaToZod(i.parameters??{},r);i.execute?o[i.name]=n({description:i.description,parameters:s,execute:async a=>i.execute(a)}):o[i.name]=n({description:i.description,parameters:s});}return o}jsonSchemaToZod(e,n){if(!e||!e.properties)return n.object({});let r={},o=e.properties,i=e.required??[];for(let[s,a]of Object.entries(o)){let d;switch(a.type){case "string":d=n.string();break;case "number":d=n.number();break;case "integer":d=n.number().int();break;case "boolean":d=n.boolean();break;case "array":d=n.array(n.any());break;default:d=n.any();}a.description&&(d=d.describe(a.description)),i.includes(s)||(d=d.optional()),r[s]=d;}return n.object(r)}createModel(e){let{provider:n,apiKey:r,baseURL:o}=this.config,i=e||this.config.model;switch(n){case "api/openrouter":{let{createOpenAI:s}=he("@ai-sdk/openai");return s({apiKey:r||process.env.OPENROUTER_API_KEY,baseURL:o||"https://openrouter.ai/api/v1"})(i)}case "api/openai":{let{createOpenAI:s}=he("@ai-sdk/openai");return s({apiKey:r||process.env.OPENAI_API_KEY,...o&&{baseURL:o}})(i)}case "api/anthropic":{let{createAnthropic:s}=he("@ai-sdk/anthropic");return s({apiKey:r||process.env.ANTHROPIC_API_KEY,...o&&{baseURL:o}})(i)}case "api/google":{let{createGoogleGenerativeAI:s}=he("@ai-sdk/google");return s({apiKey:r||process.env.GOOGLE_API_KEY})(i)}default:throw new exports.ProviderError(`Unsupported API provider: ${n}`,n)}}};});var fd={};fr(fd,{registerApiProviders:()=>pd});function pd(t){st("api",(e,n)=>{let r=t?.apiKeys?.[e];return new exports.VercelProviderRuntime({provider:n,model:"",apiKey:r,maxSteps:t?.defaults?.maxSteps,temperature:t?.defaults?.temperature})});}var Ui=M(()=>{u();ze();Mi();});exports.AcpProtocolError=void 0;var Li=M(()=>{u();exports.AcpProtocolError=class extends Error{constructor(n,r,o){super(n);this.code=r;this.data=o;}code;data;name="AcpProtocolError"};});var Wf,qf,gd,md,zf;exports.AcpConnection=void 0;var io=M(()=>{u();Yt();Li();ze();zo();Lr();Wf=-32e3,qf=2e3,gd=3e4,md=1e4,zf=8*36e5,exports.AcpConnection=class{constructor(e){this.options=e;}options;proc=null;sdkConnection=null;disposed=false;stderrBuffer="";collectedStderr="";pendingUpdateCallback=null;idleWatchdog=null;idleReject=null;idlePromise=null;authMethods=[];_initResponse=null;get initResponse(){return this._initResponse}async connect(e){if(this.disposed)throw new exports.ProviderError("AcpConnection has been disposed","acp");let n=this.options.spawn,r=process.platform==="win32"&&(n.shellOnWindows??true),o={...process.env,...this.options.env??{}},i=this.options.cwd??process.cwd(),s;try{let _=Ot({command:n.command,env:o,cwd:i,allowShellFallback:r});s=Dt(_,n.args);}catch(_){throw new exports.ProviderError(_ instanceof Error?_.message:String(_),"acp")}let a=child_process.spawn(s.command,s.argv,{stdio:["pipe","pipe","pipe"],env:o,cwd:this.options.cwd,shell:s.shell??false,windowsHide:true,detached:process.platform!=="win32"});a.pid!==void 0&&this.options.onPid?.(a.pid),a.stderr.on("data",_=>{let w=_.toString();this.collectedStderr+=w,this.stderrBuffer+=w;let x=this.stderrBuffer.split(`
30
+ `);this.stderrBuffer=x.pop()??"";for(let b of x)b.trim()&&this.options.onStderr?.(b);}),this.proc=a;let d=this.options.idleMs??6e5;d>0&&(this.idlePromise=new Promise((_,w)=>{this.idleReject=w;}),this.idlePromise.catch(()=>{}),this.idleWatchdog=new rn({timeoutMs:d,onIdle:()=>{let _=Math.round(d/6e4),w=new Mt(`acp produced no output for ${_}m (idle timeout). Process killed. The CLI may be waiting on interactive input or stuck \u2014 check the prompt or retry.`,"acp");this.idleReject?.(w),this.dispose();}}),this.idleWatchdog.start()),a.stdin.on("error",_=>{_.code!=="EPIPE"&&this.options.onStderr?.(`ACP stdin error: ${_.message}`);});let c=new WritableStream({write:_=>new Promise((w,x)=>{a.stdin.write(_,b=>{b?x(b):w();});}),close:()=>{a.stdin.end();}}),l=new ReadableStream({start:_=>{a.stdout.on("data",w=>{this.idleWatchdog?.refresh(),_.enqueue(new Uint8Array(w));}),a.stdout.on("end",()=>{_.close();}),a.stdout.on("error",w=>{_.error(w);});}}),f=sdk.ndJsonStream(c,l),g=this,m=new sdk.ClientSideConnection(_=>({requestPermission:async w=>{if(g.options.configOptions?.allow_all!==void 0){let x=w.options;if(Array.isArray(x)&&x.length>0)return {outcome:{outcome:"selected",optionId:(x.find(L=>L.kind==="allow_once")??x.find(L=>L.kind?.startsWith("allow_"))??x[0]).optionId}}}return {outcome:{outcome:"cancelled"}}},sessionUpdate:async w=>{g.pendingUpdateCallback?.(w);}}),f);this.sdkConnection=m;let k=new Promise((_,w)=>{a.on("error",x=>{if(x.code==="ENOENT"){let L=n.command==="npx"&&n.args.length>0?`@agentclientprotocol/${n.args[0]}`:n.command;w(new exports.ProviderError(`ACP command "${n.command}" not found. Is the ACP adapter installed? Try: npm install -g ${L}`,"acp"));}else w(new exports.ProviderError(`ACP spawn error: ${x.message}`,"acp"));});}),h=this.doInitialize(m,e),v=new Promise((_,w)=>{setTimeout(()=>{w(new exports.AcpProtocolError(`ACP connect timeout after ${gd}ms. The ACP adapter may not be installed or may require interactive setup.`));},gd).unref();});await Promise.race([h,v,k]);}async doInitialize(e,n){let r=await e.initialize({protocolVersion:1,clientCapabilities:{auth:{}},clientInfo:{name:n?.name??"crewx-sdk",version:n?.version??"0.8.4"}});this._initResponse=r,this.authMethods=r.authMethods??[];}async newSession(e){if(!this.sdkConnection)throw new exports.ProviderError("AcpConnection not connected. Call connect() first.","acp");try{return await this.newSessionWithTimeout(e)}catch(n){if(!this.isAuthError(n))throw n;return await this.tryAuthenticate(),this.newSessionWithTimeout(e)}}async newSessionWithTimeout(e){return (await this.newSessionRawTimeout(e)).sessionId}async newSessionRaw(e){if(!this.sdkConnection)throw new exports.ProviderError("AcpConnection not connected. Call connect() first.","acp");try{return await this.newSessionRawTimeout(e)}catch(n){if(!this.isAuthError(n))throw n;return await this.tryAuthenticate(),this.newSessionRawTimeout(e)}}async newSessionRawTimeout(e){let n=this.sdkConnection.newSession(e),r=new Promise((o,i)=>{setTimeout(()=>{i(new exports.AcpProtocolError(`ACP session/new timeout after ${md}ms`));},md).unref();});return Promise.race([n,r])}isAuthError(e){return typeof e=="object"&&e!==null&&"code"in e&&e.code===Wf}async tryAuthenticate(){if(!this.sdkConnection)throw new exports.ProviderError("AcpConnection not connected.","acp");let e=this.authMethods.find(r=>r.type==="env_var"&&this.hasEnvVarsFor(r));if(e){await this.sdkConnection.authenticate({methodId:e.id});return}let n=this.authMethods.map(r=>`${r.id} (${r.type??"agent"})`).join(", ");if(this.authMethods.length>0){let r=this.authMethods.filter(o=>o.type==="env_var");if(r.length>0){let o=r.flatMap(i=>(i.vars??[]).filter(s=>!s.optional&&!process.env[s.name]).map(s=>s.name));throw new exports.AcpProtocolError(`ACP authentication required. Missing environment variables: ${o.join(", ")}. Set them in your shell or crewx.yaml env block.`)}throw new exports.AcpProtocolError(`ACP authentication required but no supported method found. Available methods: ${n}. CrewX currently supports env_var authentication only.`)}throw new exports.AcpProtocolError("ACP agent requires authentication but advertised no auth methods.")}hasEnvVarsFor(e){return !e.vars||e.vars.length===0?true:e.vars.filter(n=>!n.optional).every(n=>!!process.env[n.name])}async setModel(e,n){if(!this.sdkConnection)throw new exports.ProviderError("AcpConnection not connected. Call connect() first.","acp");await this.sdkConnection.unstable_setSessionModel({sessionId:e,modelId:n});}async setMode(e,n){if(!this.sdkConnection)throw new exports.ProviderError("AcpConnection not connected. Call connect() first.","acp");await this.sdkConnection.setSessionMode({sessionId:e,modeId:n});}async setConfigOption(e,n,r){if(!this.sdkConnection)throw new exports.ProviderError("AcpConnection not connected. Call connect() first.","acp");await this.sdkConnection.setSessionConfigOption({sessionId:e,configId:n,value:r});}async prompt(e,n,r,o){if(!this.sdkConnection||!this.proc)throw new exports.ProviderError("AcpConnection not connected. Call connect() first.","acp");this.pendingUpdateCallback=r??null;let i=this.sdkConnection,s=this.proc,a=o??zf,d=false,c=i.prompt({sessionId:e,prompt:n}).finally(()=>{d=true;}),l=new Promise((m,k)=>{setTimeout(()=>{i.cancel({sessionId:e}).catch(()=>{}),k(new Ut(`ACP prompt timeout after ${a}ms`,"acp"));},a).unref();}),f=new Promise((m,k)=>{let h=(x,b,L)=>{if(d)return;let A=b!=null?`signal=${b}`:`code=${String(x)}`;k(new exports.ProviderError(`ACP process terminated unexpectedly (${A}) [${L}]: ${this.collectedStderr.slice(-500)}`,"acp"));},v=(x,b)=>h(x,b,"exit"),_=(x,b)=>h(x,b,"close");s.once("exit",v),s.once("close",_);let w=()=>{s.off("exit",v),s.off("close",_);};c.then(w,w);}),g=[c,l,f];this.idlePromise&&g.push(this.idlePromise);try{return await Promise.race(g)}finally{this.pendingUpdateCallback=null;}}async dispose(){if(this.disposed)return;this.disposed=true,this.idleWatchdog?.stop(),this.pendingUpdateCallback=null,this.sdkConnection=null;let e=this.proc;if(!e)return;this.proc=null,this.stderrBuffer.trim()&&(this.options.onStderr?.(this.stderrBuffer),this.stderrBuffer="");let n=e.pid,r=o=>{if(n!==void 0&&process.platform!=="win32")try{process.kill(-n,o);}catch{}else try{e.kill(o);}catch{}};await new Promise(o=>{let i=()=>{clearTimeout(s),o();};e.once("close",i),e.once("error",i);try{r("SIGTERM");}catch{i();return}let s=setTimeout(()=>{r("SIGKILL");},qf);});}get isConnected(){return !this.disposed&&this.sdkConnection!==null&&this.proc!==null}};});function hd(t,e){if(t!=null&&typeof t=="object"){let n=t;if(typeof n.command=="string")return n.command;if(typeof n.file_path=="string")return n.file_path;if(typeof n.filePath=="string")return n.filePath;if(typeof n.path=="string")return n.path;if(typeof n.query=="string")return n.query;if(typeof n.pattern=="string")return n.pattern;if(typeof n.url=="string")return n.url;if(Object.keys(n).length>0)return JSON.stringify(n)}if(e&&e.length>0)return e.map(n=>n.path).join(", ")}var Gf;exports.AcpProviderRuntime=void 0;var ji=M(()=>{u();yt();io();Gf={read:"Read",edit:"Edit",delete:"Delete",move:"Move",search:"Search",execute:"Bash",think:"Think",fetch:"WebFetch",switch_mode:"SwitchMode"};exports.AcpProviderRuntime=class{constructor(e,n,r){this.adapter=n;}adapter;async query(e,n){return this.runPrompt(e,n)}async execute(e,n){return this.runPrompt(e,n)}async dispose(){}async runPrompt(e,n){let{command:r,args:o}=this.adapter.spawn;n?.onCommand?.(`${r} ${o.join(" ")}`);let i=this.adapter.buildSpawnEnv?.(n?.model??""),s=i?{...n?.env,...i}:n?.env,a=new exports.AcpConnection({spawn:this.adapter.spawn,env:s,cwd:n?.cwd,timeoutMs:n?.timeoutMs,idleMs:n?.idleMs,onPid:n?.onPid,onStderr:d=>n?.onOutput?.(d,"stderr"),configOptions:n?.configOptions});try{await a.connect(this.adapter.clientInfo);let d=this.adapter.buildSessionParams({cwd:n?.cwd,env:n?.env,model:n?.model,systemPrompt:n?.systemPrompt}),c=await a.newSession(d);await this.applySessionOptions(a,c,n);let l=this.composePrompt(e,n),f=[],g=await a.prompt(c,l,m=>this.handleUpdate(m,n,f),n?.timeoutMs);return this.handleUsage(g,n),f.join("")}finally{await a.dispose().catch(()=>{});}}async applySessionOptions(e,n,r){if(r?.model&&r.model!=="default"&&!this.adapter.buildSpawnEnv){let o=this.adapter.buildEffortAction?.(r.effort??"",r.model);try{o?.type==="set_model"?await e.setModel(n,o.modelId):await e.setModel(n,r.model);}catch(i){console.warn(`[acp] setModel(${r.model}) failed: ${i instanceof Error?i.message:String(i)}`);}}if(r?.mode){let o=this.adapter.resolveMode?.(r.mode)??r.mode;if(o)try{await e.setMode(n,o);}catch(i){console.warn(`[acp] setMode(${o}) failed: ${i instanceof Error?i.message:String(i)}`);}}if(r?.effort){let o=this.adapter.buildEffortAction?.(r.effort,r.model);if(o&&o.type==="set_config_option")try{await e.setConfigOption(n,o.configId,o.value);}catch(i){console.warn(`[acp] setConfigOption(${o.configId}) effort failed: ${i instanceof Error?i.message:String(i)}`);}}if(r?.configOptions)for(let[o,i]of Object.entries(r.configOptions))try{await e.setConfigOption(n,o,i);}catch(s){console.warn(`[acp] setConfigOption(${o}) failed, retrying: ${s instanceof Error?s.message:String(s)}`);try{await new Promise(a=>setTimeout(a,500)),await e.setConfigOption(n,o,i);}catch(a){console.warn(`[acp] setConfigOption(${o}) retry failed: ${a instanceof Error?a.message:String(a)}`);}}}composePrompt(e,n){let r=[];return n?.systemPrompt?.trim()&&(r.push(n.systemPrompt),r.push("---")),n?.context&&(r.push(n.context),r.push("---")),r.push(e),[{type:"text",text:r.join(`
31
31
 
32
- `)}]}handleUpdate(e,n,r){let o=e.update;if(o.sessionUpdate==="agent_message_chunk"){let i=null;this.adapter.extractTextFromUpdate?i=this.adapter.extractTextFromUpdate(e):i=fi(e),i!==null&&(r.push(i),n?.onOutput?.(i,"stdout"));}else if(o.sessionUpdate==="tool_call"){this.pushBlockBoundary(r);let i=new Date().toISOString(),s=o,a={title:s.title??"",kind:s.kind,rawInput:s.rawInput,rawOutput:s.rawOutput,locations:s.locations,_meta:s._meta},d=this.resolveToolCall(a),c={timestamp:i,type:"tool_use",toolUseId:s.toolCallId,toolName:d.toolName,toolInput:d.toolInput};n?.onTaskLog?.([c]);}else if(o.sessionUpdate==="tool_call_update"){let i=new Date().toISOString(),s=o;if(s.status==="completed"||s.status==="failed"){let d=this.extractResultPreview(s.rawOutput),c={timestamp:i,type:"tool_result",toolUseId:s.toolCallId,resultPreview:d,isError:s.status==="failed"};n?.onTaskLog?.([c]);}else if(s.rawInput!=null&&typeof s.rawInput=="object"&&Object.keys(s.rawInput).length>0){this.pushBlockBoundary(r);let d={title:s.title??"",kind:s.kind,rawInput:s.rawInput,rawOutput:s.rawOutput,locations:s.locations,_meta:s._meta},c=this.resolveToolCall(d),l={timestamp:i,type:"tool_use",toolUseId:s.toolCallId,toolName:c.toolName,toolInput:c.toolInput};n?.onTaskLog?.([l]);}}else o.sessionUpdate;}pushBlockBoundary(e){e.length===0||e[e.length-1].endsWith(`
32
+ `)}]}handleUpdate(e,n,r){let o=e.update;if(o.sessionUpdate==="agent_message_chunk"){let i=null;this.adapter.extractTextFromUpdate?i=this.adapter.extractTextFromUpdate(e):i=hi(e),i!==null&&(r.push(i),n?.onOutput?.(i,"stdout"));}else if(o.sessionUpdate==="tool_call"){this.pushBlockBoundary(r);let i=new Date().toISOString(),s=o,a={title:s.title??"",kind:s.kind,rawInput:s.rawInput,rawOutput:s.rawOutput,locations:s.locations,_meta:s._meta},d=this.resolveToolCall(a),c={timestamp:i,type:"tool_use",toolUseId:s.toolCallId,toolName:d.toolName,toolInput:d.toolInput};n?.onTaskLog?.([c]);}else if(o.sessionUpdate==="tool_call_update"){let i=new Date().toISOString(),s=o;if(s.status==="completed"||s.status==="failed"){let d=this.extractResultPreview(s.rawOutput),c={timestamp:i,type:"tool_result",toolUseId:s.toolCallId,resultPreview:d,isError:s.status==="failed"};n?.onTaskLog?.([c]);}else if(s.rawInput!=null&&typeof s.rawInput=="object"&&Object.keys(s.rawInput).length>0){this.pushBlockBoundary(r);let d={title:s.title??"",kind:s.kind,rawInput:s.rawInput,rawOutput:s.rawOutput,locations:s.locations,_meta:s._meta},c=this.resolveToolCall(d),l={timestamp:i,type:"tool_use",toolUseId:s.toolCallId,toolName:c.toolName,toolInput:c.toolInput};n?.onTaskLog?.([l]);}}else o.sessionUpdate;}pushBlockBoundary(e){e.length===0||e[e.length-1].endsWith(`
33
33
 
34
34
  `)||e.push(`
35
35
 
36
- `);}resolveToolCall(e){let n=e._meta;if(n?.claudeCode?.toolName)return {toolName:n.claudeCode.toolName,toolInput:cd(e.rawInput,e.locations)??(e.title||void 0)};if(this.adapter.parseToolCall){let i=this.adapter.parseToolCall(e);if(i)return {toolName:i.toolName??e.title??"unknown",toolInput:i.toolInput}}let r=Lf[e.kind??""]??e.title??"unknown",o=cd(e.rawInput,e.locations)??(e.title||void 0);return {toolName:r,toolInput:o}}extractResultPreview(e){if(e!=null){if(typeof e=="string")return e;if(Array.isArray(e)){let n=e.filter(r=>r!=null&&typeof r=="object"&&r.type==="text"&&typeof r.text=="string").map(r=>r.text);if(n.length>0)return n.join(`
37
- `)}if(typeof e=="object"){let n=e;if(typeof n.formatted_output=="string")return n.formatted_output;if(typeof n.content=="string")return n.content;if(Array.isArray(n.content)){let r=this.extractResultPreview(n.content);if(r)return r}if(typeof n.output=="string")return n.output;if(typeof n.text=="string")return n.text;if(typeof n.message=="string")return n.message;if(n.result!=null){let r=this.extractResultPreview(n.result);if(r)return r}if(n.error!=null){let r=this.extractResultPreview(n.error);if(r)return r}}return JSON.stringify(e)}}handleUsage(e,n){if(!n?.onUsage)return;if(this.adapter.extractUsage){let o=this.adapter.extractUsage(e);if(o){n.onUsage(o);return}}let r=e.usage;r&&n.onUsage({inputTokens:r.inputTokens??0,outputTokens:r.outputTokens??0,cachedInputTokens:r.cachedReadTokens??0,costUsd:0});}};});exports.claudeAcpAdapter=void 0;var Ni=D(()=>{u();gt();exports.claudeAcpAdapter={spawn:{command:"npx",args:["-y","@agentclientprotocol/claude-agent-acp"],shellOnWindows:true},npmPackage:"@agentclientprotocol/claude-agent-acp",clientInfo:{name:"crewx-sdk",version:"0.8.4"},meta:{displayName:"Claude",defaultMode:"default"},buildSessionParams(t){return {cwd:t.cwd??process.cwd(),mcpServers:[]}},extractUsage(t){let e=t.usage;return e?{inputTokens:(e.inputTokens??0)+(e.cachedReadTokens??0),outputTokens:e.outputTokens??0,cachedInputTokens:e.cachedReadTokens??0,costUsd:0}:null},yoloModeId:"bypassPermissions",buildEffortAction(t){return t?{type:"set_config_option",configId:"effort",value:t}:null},buildSpawnEnv(t){if(!(!t||t==="default"))return {ANTHROPIC_MODEL:t}},resolveMode(t){return {yolo:"bypassPermissions"}[t]??t},parseEvent:Le};});exports.codexAcpAdapter=void 0;var Di=D(()=>{u();gt();exports.codexAcpAdapter={spawn:{command:"npx",args:["-y","@agentclientprotocol/codex-acp"],shellOnWindows:true},npmPackage:"@agentclientprotocol/codex-acp",clientInfo:{name:"crewx-sdk",version:"0.8.4"},meta:{displayName:"Codex",defaultMode:"agent"},buildSessionParams(t){return {cwd:t.cwd??process.cwd(),mcpServers:[]}},extractUsage(t){let e=t.usage;return e?{inputTokens:(e.inputTokens??0)+(e.cachedReadTokens??0),outputTokens:e.outputTokens??0,cachedInputTokens:e.cachedReadTokens??0,costUsd:0}:null},yoloModeId:"agent-full-access",buildEffortAction(t,e){if(!e)return null;let n=e.match(/^(.+?)\[([^\]]+)\]$/),r=n?n[1]:e,o=n?n[2]:void 0;return {type:"set_model",modelId:`${r}[${t||o||"medium"}]`}},resolveMode(t){return {yolo:"agent-full-access",default:"agent",plan:"read-only"}[t]??t},parseEvent:Le};});var on;exports.copilotAcpAdapter=void 0;var Mi=D(()=>{u();gt();on="https://agentclientprotocol.com/protocol/session-modes",exports.copilotAcpAdapter={spawn:{command:"copilot",args:["--acp"],shellOnWindows:false},clientInfo:{name:"crewx-sdk",version:"0.8.4"},meta:{displayName:"GitHub Copilot"},buildSessionParams(t){return {cwd:t.cwd?K.resolve(t.cwd):process.cwd(),mcpServers:[]}},yoloModeId:`${on}#autopilot`,buildEffortAction(t){return t?{type:"set_config_option",configId:"reasoning_effort",value:t}:null},resolveMode(t){return t.startsWith("https://")?t:{yolo:`${on}#autopilot`,default:`${on}#agent`,agent:`${on}#agent`,plan:`${on}#plan`,autopilot:`${on}#autopilot`}[t]??null},parseEvent:Le};});exports.opencodeAcpAdapter=void 0;var Ui=D(()=>{u();gt();exports.opencodeAcpAdapter={spawn:{command:"opencode",args:["acp"],shellOnWindows:false},clientInfo:{name:"crewx-sdk",version:"0.8.4"},meta:{displayName:"OpenCode"},buildSessionParams(t){return {cwd:t.cwd??process.cwd(),mcpServers:[]}},buildEffortAction(t){return null},resolveMode(t){return t},parseEvent:Le};});exports.ACP_ADAPTERS=void 0;var ao=D(()=>{u();Ni();Di();Mi();Ui();Ni();Di();Mi();Ui();exports.ACP_ADAPTERS={codex:exports.codexAcpAdapter,claude:exports.claudeAcpAdapter,opencode:exports.opencodeAcpAdapter,copilot:exports.copilotAcpAdapter};});var ud={};lr(ud,{registerAcpProviders:()=>ld});function ld(t){if(t){nt("acp",t);return}nt("acp",(e,n)=>{let r=exports.ACP_ADAPTERS[e];if(!r)throw new exports.ProviderError(`Unknown ACP provider id: "${e}". Supported: ${Object.keys(exports.ACP_ADAPTERS).join(", ")}`,n);return new exports.AcpProviderRuntime(e,r,n)});}var Li=D(()=>{u();qe();Oi();ao();qe();});function Bf(t){if(!t)return t;let e=t.trim().replace(/\/+$/,"");return e.toLowerCase().endsWith("/mcp")?e.slice(0,-4):e}exports.McpHttpTransport=void 0;var $i=D(()=>{u();exports.McpHttpTransport=class{endpoint;headers;timeoutMs;constructor(e){let n=Bf(e.url);this.endpoint=`${n}/mcp`,this.headers={"Content-Type":"application/json",...e.headers??{}},e.apiKey&&(this.headers.Authorization=`Bearer ${e.apiKey}`),this.timeoutMs=e.timeoutMs??3e4;}async send(e){let n=new AbortController,r=setTimeout(()=>n.abort(),this.timeoutMs);try{let o=await fetch(this.endpoint,{method:"POST",headers:this.headers,body:JSON.stringify(e),signal:n.signal});if(clearTimeout(r),!o.ok){let a=await o.text();throw new Error(`HTTP ${o.status}: ${o.statusText}${a?` - ${a}`:""}`)}let i=o.headers.get("content-type");if(i?.includes("application/json"))return await o.json();let s=await o.text();return {jsonrpc:"2.0",id:e.id,error:{code:-32600,message:`Unexpected response content-type: ${i}`,data:s}}}catch(o){throw clearTimeout(r),o instanceof Error&&o.name==="AbortError"?new Error(`MCP-HTTP request timeout after ${this.timeoutMs}ms to ${this.endpoint}`):o}}async close(){}};});exports.RemoteAgentManager=void 0;var Bi=D(()=>{u();$i();exports.RemoteAgentManager=class{logger;configs=new Map;transports=new Map;constructor(e={}){this.logger=e.logger??(()=>{});}loadConfig(e,n){this.validateConfig(n),this.configs.set(e,n),this.transports.set(e,new exports.McpHttpTransport({url:n.url,apiKey:n.apiKey,headers:n.headers,timeoutMs:n.timeoutMs})),this.logger(`Loaded remote agent config for: ${e}`,"debug");}loadConfigWithTransport(e,n,r){this.validateConfig(n),this.configs.set(e,n),this.transports.set(e,r),this.logger(`Loaded remote agent config for: ${e} (custom transport)`,"debug");}getConfig(e){return this.configs.get(e)}isRemoteAgent(e){return this.configs.has(e)}getRemoteAgentIds(){return Array.from(this.configs.keys())}async query(e,n){let r=this.requireConfig(e),o=r.tools?.query??"crewx_queryAgent",s={agentId:r.agentId??e,query:n.query};n.context&&(s.context=n.context),n.model&&(s.model=n.model),n.platform&&(s.platform=n.platform),n.messages?.length&&(s.messages=n.messages);try{let a=await this.callRemoteTool(e,o,s);return this.normalizeResponse(a)}catch(a){let d=a instanceof Error?a.message:String(a);throw this.logger(`Remote query failed for agent ${e}: ${d}`,"error"),a}}async execute(e,n){let r=this.requireConfig(e),o=r.tools?.execute??"crewx_executeAgent",s={agentId:r.agentId??e,task:n.task};n.context&&(s.context=n.context),n.model&&(s.model=n.model),n.platform&&(s.platform=n.platform),n.messages?.length&&(s.messages=n.messages);try{let a=await this.callRemoteTool(e,o,s);return this.normalizeResponse(a)}catch(a){let d=a instanceof Error?a.message:String(a);throw this.logger(`Remote execute failed for agent ${e}: ${d}`,"error"),a}}mapToolNames(e,n){let r=this.requireConfig(e);r.tools={query:n.query??r.tools?.query??"crewx_queryAgent",execute:n.execute??r.tools?.execute??"crewx_executeAgent"},this.logger(`Updated tool name mapping for agent ${e}`,"debug");}async clearConfigs(){for(let e of this.transports.values())await e.close();this.configs.clear(),this.transports.clear(),this.logger("Cleared all remote agent configurations","debug");}requireConfig(e){let n=this.configs.get(e);if(!n)throw new Error(`Agent ${e} is not configured as a remote agent`);return n}async callRemoteTool(e,n,r){let o=this.transports.get(e);if(!o)throw new Error(`No transport available for agent ${e}`);let i={jsonrpc:"2.0",id:`${n}-${Date.now()}`,method:"tools/call",params:{name:n,arguments:r}};this.logger(`Calling remote MCP tool ${n} for agent ${e}`,"debug");let s=await o.send(i);if(s.error)throw new Error(s.error.message||"MCP server returned an error");return s.result}normalizeResponse(e){if(!e)return {success:false,content:[{type:"text",text:"Remote agent returned no response."}]};let n=e;if(Array.isArray(n.content)&&n.content.length>0)return n;let r=n.response??n.implementation??n.message??n.output,o=typeof r=="string"?r:JSON.stringify(r??e,null,2);return {...n,content:[{type:"text",text:o}]}}validateConfig(e){if(!e.url)throw new Error("Remote agent configuration requires a URL");if(!e.url.startsWith("http://")&&!e.url.startsWith("https://"))throw new Error("Remote agent URL must start with http:// or https://");if(e.type!=="mcp-http")throw new Error(`Unsupported remote agent type: ${e.type}`)}};});var fd={};lr(fd,{RemoteProviderRuntime:()=>exports.RemoteProviderRuntime,createRemoteProviderFactory:()=>pd,resolveFileRemoteAgent:()=>Vf});function zf(t){let e=Ua.readFileSync(t,"utf-8"),n=jsYaml.load(e);return {agents:Array.isArray(n?.agents)?n.agents:void 0}}function Gf(t){let e=Array.isArray(t.provider)?t.provider[0]:t.provider;return e||(Array.isArray(t.inline?.provider)?t.inline.provider[0]:t.inline?.provider)}function Vf(t,e=zf,n=Ua.existsSync){let r=t.location.replace("file://","");if(!n(r))throw new Error(`Remote config file not found: ${r}`);if(!t.external_agent_id)throw new Error(`external_agent_id is required for file:// remote provider "${t.id}"`);let i=e(r).agents?.find(d=>d.id===t.external_agent_id);if(!i)throw new Error(`Agent "${t.external_agent_id}" not found in ${r}`);let s=Gf(i);if(!s)throw new Error(`Agent "${t.external_agent_id}" in ${r} has no provider configured`);if(s.startsWith("remote/"))throw new Error(`Chained remotes not allowed: ${t.id} \u2192 ${s}`);let a=K.resolve(K.dirname(r),i.working_directory??".");return {agent:{...i,working_directory:a},provider:s}}function pd(t,e=rt){return (n,r)=>{let o=t.get(n);if(!o)throw new Error(`Remote provider "${n}" not found. Available: ${Array.from(t.keys()).join(", ")||"(none)"}`);if(o.location.startsWith("file://"))throw new Error(`Remote provider "${n}" uses file:// location which is not supported at the SDK level. Use the CLI commands (crewx query / crewx execute) which handle file:// remotes automatically.`);return new exports.RemoteProviderRuntime(n,o,e)}}function Jf(t,e){let n=e.location;if(!n)throw new Error("Remote provider config requires a location");if(!n.startsWith("http://")&&!n.startsWith("https://"))throw new Error(`Unsupported remote location protocol for MCP-HTTP: ${n}`);return {type:"mcp-http",url:n,apiKey:e.apiKey,headers:e.headers,timeoutMs:e.timeout?.query??3e4,agentId:e.external_agent_id??t}}exports.RemoteProviderRuntime=void 0;var ji=D(()=>{u();qe();Bi();exports.RemoteProviderRuntime=class{manager;agentId;constructor(e,n,r=rt){this.agentId=n.external_agent_id??e,this.manager=new exports.RemoteAgentManager;let o=Jf(e,n);this.manager.loadConfig(this.agentId,o);}async query(e,n){return (await this.manager.query(this.agentId,{agentId:this.agentId,query:e,model:n?.model,context:n?.context??n?.systemPrompt})).content.map(o=>o.text).join(`
36
+ `);}resolveToolCall(e){let n=e._meta;if(n?.claudeCode?.toolName)return {toolName:n.claudeCode.toolName,toolInput:hd(e.rawInput,e.locations)??(e.title||void 0)};if(this.adapter.parseToolCall){let i=this.adapter.parseToolCall(e);if(i)return {toolName:i.toolName??e.title??"unknown",toolInput:i.toolInput}}let r=Gf[e.kind??""]??e.title??"unknown",o=hd(e.rawInput,e.locations)??(e.title||void 0);return {toolName:r,toolInput:o}}extractResultPreview(e){if(e!=null){if(typeof e=="string")return e;if(Array.isArray(e)){let n=e.filter(r=>r!=null&&typeof r=="object"&&r.type==="text"&&typeof r.text=="string").map(r=>r.text);if(n.length>0)return n.join(`
37
+ `)}if(typeof e=="object"){let n=e;if(typeof n.formatted_output=="string")return n.formatted_output;if(typeof n.content=="string")return n.content;if(Array.isArray(n.content)){let r=this.extractResultPreview(n.content);if(r)return r}if(typeof n.output=="string")return n.output;if(typeof n.text=="string")return n.text;if(typeof n.message=="string")return n.message;if(n.result!=null){let r=this.extractResultPreview(n.result);if(r)return r}if(n.error!=null){let r=this.extractResultPreview(n.error);if(r)return r}}return JSON.stringify(e)}}handleUsage(e,n){if(!n?.onUsage)return;if(this.adapter.extractUsage){let o=this.adapter.extractUsage(e);if(o){n.onUsage(o);return}}let r=e.usage;r&&n.onUsage({inputTokens:r.inputTokens??0,outputTokens:r.outputTokens??0,cachedInputTokens:r.cachedReadTokens??0,costUsd:0});}};});exports.claudeAcpAdapter=void 0;var $i=M(()=>{u();yt();exports.claudeAcpAdapter={spawn:{command:"npx",args:["-y","@agentclientprotocol/claude-agent-acp"],shellOnWindows:true},npmPackage:"@agentclientprotocol/claude-agent-acp",clientInfo:{name:"crewx-sdk",version:"0.8.4"},meta:{displayName:"Claude",defaultMode:"default"},buildSessionParams(t){return {cwd:t.cwd??process.cwd(),mcpServers:[]}},extractUsage(t){let e=t.usage;return e?{inputTokens:(e.inputTokens??0)+(e.cachedReadTokens??0),outputTokens:e.outputTokens??0,cachedInputTokens:e.cachedReadTokens??0,costUsd:0}:null},yoloModeId:"bypassPermissions",buildEffortAction(t){return t?{type:"set_config_option",configId:"effort",value:t}:null},buildSpawnEnv(t){if(!(!t||t==="default"))return {ANTHROPIC_MODEL:t}},resolveMode(t){return {yolo:"bypassPermissions"}[t]??t},parseEvent:je};});exports.codexAcpAdapter=void 0;var Bi=M(()=>{u();yt();exports.codexAcpAdapter={spawn:{command:"npx",args:["-y","@agentclientprotocol/codex-acp"],shellOnWindows:true},npmPackage:"@agentclientprotocol/codex-acp",clientInfo:{name:"crewx-sdk",version:"0.8.4"},meta:{displayName:"Codex",defaultMode:"agent"},buildSessionParams(t){return {cwd:t.cwd??process.cwd(),mcpServers:[]}},extractUsage(t){let e=t.usage;return e?{inputTokens:(e.inputTokens??0)+(e.cachedReadTokens??0),outputTokens:e.outputTokens??0,cachedInputTokens:e.cachedReadTokens??0,costUsd:0}:null},yoloModeId:"agent-full-access",buildEffortAction(t,e){if(!e)return null;let n=e.match(/^(.+?)\[([^\]]+)\]$/),r=n?n[1]:e,o=n?n[2]:void 0;return {type:"set_model",modelId:`${r}[${t||o||"medium"}]`}},resolveMode(t){return {yolo:"agent-full-access",default:"agent",plan:"read-only"}[t]??t},parseEvent:je};});var dn;exports.copilotAcpAdapter=void 0;var Fi=M(()=>{u();yt();dn="https://agentclientprotocol.com/protocol/session-modes",exports.copilotAcpAdapter={spawn:{command:"copilot",args:["--acp"],shellOnWindows:false},clientInfo:{name:"crewx-sdk",version:"0.8.4"},meta:{displayName:"GitHub Copilot"},buildSessionParams(t){return {cwd:t.cwd?X.resolve(t.cwd):process.cwd(),mcpServers:[]}},yoloModeId:`${dn}#autopilot`,buildEffortAction(t){return t?{type:"set_config_option",configId:"reasoning_effort",value:t}:null},resolveMode(t){return t.startsWith("https://")?t:{yolo:`${dn}#autopilot`,default:`${dn}#agent`,agent:`${dn}#agent`,plan:`${dn}#plan`,autopilot:`${dn}#autopilot`}[t]??null},parseEvent:je};});exports.opencodeAcpAdapter=void 0;var Hi=M(()=>{u();yt();exports.opencodeAcpAdapter={spawn:{command:"opencode",args:["acp"],shellOnWindows:false},clientInfo:{name:"crewx-sdk",version:"0.8.4"},meta:{displayName:"OpenCode"},buildSessionParams(t){return {cwd:t.cwd??process.cwd(),mcpServers:[]}},buildEffortAction(t){return null},resolveMode(t){return t},parseEvent:je};});exports.ACP_ADAPTERS=void 0;var uo=M(()=>{u();$i();Bi();Fi();Hi();$i();Bi();Fi();Hi();exports.ACP_ADAPTERS={codex:exports.codexAcpAdapter,claude:exports.claudeAcpAdapter,opencode:exports.opencodeAcpAdapter,copilot:exports.copilotAcpAdapter};});var _d={};fr(_d,{registerAcpProviders:()=>yd});function yd(t){if(t){st("acp",t);return}st("acp",(e,n)=>{let r=exports.ACP_ADAPTERS[e];if(!r)throw new exports.ProviderError(`Unknown ACP provider id: "${e}". Supported: ${Object.keys(exports.ACP_ADAPTERS).join(", ")}`,n);return new exports.AcpProviderRuntime(e,r,n)});}var Wi=M(()=>{u();ze();ji();uo();ze();});function Jf(t){if(!t)return t;let e=t.trim().replace(/\/+$/,"");return e.toLowerCase().endsWith("/mcp")?e.slice(0,-4):e}exports.McpHttpTransport=void 0;var qi=M(()=>{u();exports.McpHttpTransport=class{endpoint;headers;timeoutMs;constructor(e){let n=Jf(e.url);this.endpoint=`${n}/mcp`,this.headers={"Content-Type":"application/json",...e.headers??{}},e.apiKey&&(this.headers.Authorization=`Bearer ${e.apiKey}`),this.timeoutMs=e.timeoutMs??3e4;}async send(e){let n=new AbortController,r=setTimeout(()=>n.abort(),this.timeoutMs);try{let o=await fetch(this.endpoint,{method:"POST",headers:this.headers,body:JSON.stringify(e),signal:n.signal});if(clearTimeout(r),!o.ok){let a=await o.text();throw new Error(`HTTP ${o.status}: ${o.statusText}${a?` - ${a}`:""}`)}let i=o.headers.get("content-type");if(i?.includes("application/json"))return await o.json();let s=await o.text();return {jsonrpc:"2.0",id:e.id,error:{code:-32600,message:`Unexpected response content-type: ${i}`,data:s}}}catch(o){throw clearTimeout(r),o instanceof Error&&o.name==="AbortError"?new Error(`MCP-HTTP request timeout after ${this.timeoutMs}ms to ${this.endpoint}`):o}}async close(){}};});exports.RemoteAgentManager=void 0;var zi=M(()=>{u();qi();exports.RemoteAgentManager=class{logger;configs=new Map;transports=new Map;constructor(e={}){this.logger=e.logger??(()=>{});}loadConfig(e,n){this.validateConfig(n),this.configs.set(e,n),this.transports.set(e,new exports.McpHttpTransport({url:n.url,apiKey:n.apiKey,headers:n.headers,timeoutMs:n.timeoutMs})),this.logger(`Loaded remote agent config for: ${e}`,"debug");}loadConfigWithTransport(e,n,r){this.validateConfig(n),this.configs.set(e,n),this.transports.set(e,r),this.logger(`Loaded remote agent config for: ${e} (custom transport)`,"debug");}getConfig(e){return this.configs.get(e)}isRemoteAgent(e){return this.configs.has(e)}getRemoteAgentIds(){return Array.from(this.configs.keys())}async query(e,n){let r=this.requireConfig(e),o=r.tools?.query??"crewx_queryAgent",s={agentId:r.agentId??e,query:n.query};n.context&&(s.context=n.context),n.model&&(s.model=n.model),n.platform&&(s.platform=n.platform),n.messages?.length&&(s.messages=n.messages);try{let a=await this.callRemoteTool(e,o,s);return this.normalizeResponse(a)}catch(a){let d=a instanceof Error?a.message:String(a);throw this.logger(`Remote query failed for agent ${e}: ${d}`,"error"),a}}async execute(e,n){let r=this.requireConfig(e),o=r.tools?.execute??"crewx_executeAgent",s={agentId:r.agentId??e,task:n.task};n.context&&(s.context=n.context),n.model&&(s.model=n.model),n.platform&&(s.platform=n.platform),n.messages?.length&&(s.messages=n.messages);try{let a=await this.callRemoteTool(e,o,s);return this.normalizeResponse(a)}catch(a){let d=a instanceof Error?a.message:String(a);throw this.logger(`Remote execute failed for agent ${e}: ${d}`,"error"),a}}mapToolNames(e,n){let r=this.requireConfig(e);r.tools={query:n.query??r.tools?.query??"crewx_queryAgent",execute:n.execute??r.tools?.execute??"crewx_executeAgent"},this.logger(`Updated tool name mapping for agent ${e}`,"debug");}async clearConfigs(){for(let e of this.transports.values())await e.close();this.configs.clear(),this.transports.clear(),this.logger("Cleared all remote agent configurations","debug");}requireConfig(e){let n=this.configs.get(e);if(!n)throw new Error(`Agent ${e} is not configured as a remote agent`);return n}async callRemoteTool(e,n,r){let o=this.transports.get(e);if(!o)throw new Error(`No transport available for agent ${e}`);let i={jsonrpc:"2.0",id:`${n}-${Date.now()}`,method:"tools/call",params:{name:n,arguments:r}};this.logger(`Calling remote MCP tool ${n} for agent ${e}`,"debug");let s=await o.send(i);if(s.error)throw new Error(s.error.message||"MCP server returned an error");return s.result}normalizeResponse(e){if(!e)return {success:false,content:[{type:"text",text:"Remote agent returned no response."}]};let n=e;if(Array.isArray(n.content)&&n.content.length>0)return n;let r=n.response??n.implementation??n.message??n.output,o=typeof r=="string"?r:JSON.stringify(r??e,null,2);return {...n,content:[{type:"text",text:o}]}}validateConfig(e){if(!e.url)throw new Error("Remote agent configuration requires a URL");if(!e.url.startsWith("http://")&&!e.url.startsWith("https://"))throw new Error("Remote agent URL must start with http:// or https://");if(e.type!=="mcp-http")throw new Error(`Unsupported remote agent type: ${e.type}`)}};});var kd={};fr(kd,{RemoteProviderRuntime:()=>exports.RemoteProviderRuntime,createRemoteProviderFactory:()=>wd,resolveFileRemoteAgent:()=>ng});function eg(t){let e=Wa.readFileSync(t,"utf-8"),n=jsYaml.load(e);return {agents:Array.isArray(n?.agents)?n.agents:void 0}}function tg(t){let e=Array.isArray(t.provider)?t.provider[0]:t.provider;return e||(Array.isArray(t.inline?.provider)?t.inline.provider[0]:t.inline?.provider)}function ng(t,e=eg,n=Wa.existsSync){let r=t.location.replace("file://","");if(!n(r))throw new Error(`Remote config file not found: ${r}`);if(!t.external_agent_id)throw new Error(`external_agent_id is required for file:// remote provider "${t.id}"`);let i=e(r).agents?.find(d=>d.id===t.external_agent_id);if(!i)throw new Error(`Agent "${t.external_agent_id}" not found in ${r}`);let s=tg(i);if(!s)throw new Error(`Agent "${t.external_agent_id}" in ${r} has no provider configured`);if(s.startsWith("remote/"))throw new Error(`Chained remotes not allowed: ${t.id} \u2192 ${s}`);let a=X.resolve(X.dirname(r),i.working_directory??".");return {agent:{...i,working_directory:a},provider:s}}function wd(t,e=at){return (n,r)=>{let o=t.get(n);if(!o)throw new Error(`Remote provider "${n}" not found. Available: ${Array.from(t.keys()).join(", ")||"(none)"}`);if(o.location.startsWith("file://"))throw new Error(`Remote provider "${n}" uses file:// location which is not supported at the SDK level. Use the CLI commands (crewx query / crewx execute) which handle file:// remotes automatically.`);return new exports.RemoteProviderRuntime(n,o,e)}}function rg(t,e){let n=e.location;if(!n)throw new Error("Remote provider config requires a location");if(!n.startsWith("http://")&&!n.startsWith("https://"))throw new Error(`Unsupported remote location protocol for MCP-HTTP: ${n}`);return {type:"mcp-http",url:n,apiKey:e.apiKey,headers:e.headers,timeoutMs:e.timeout?.query??3e4,agentId:e.external_agent_id??t}}exports.RemoteProviderRuntime=void 0;var Gi=M(()=>{u();ze();zi();exports.RemoteProviderRuntime=class{manager;agentId;constructor(e,n,r=at){this.agentId=n.external_agent_id??e,this.manager=new exports.RemoteAgentManager;let o=rg(e,n);this.manager.loadConfig(this.agentId,o);}async query(e,n){return (await this.manager.query(this.agentId,{agentId:this.agentId,query:e,model:n?.model,context:n?.context??n?.systemPrompt})).content.map(o=>o.text).join(`
38
38
  `)}async execute(e,n){return (await this.manager.execute(this.agentId,{agentId:this.agentId,task:e,model:n?.model,context:n?.context??n?.systemPrompt})).content.map(o=>o.text).join(`
39
- `)}};});var yd={};lr(yd,{PluginProviderRuntime:()=>exports.PluginProviderRuntime,createPluginProviderFactory:()=>hd});function hd(t){return (e,n)=>{let r=t.get(e);if(!r)throw new exports.ProviderError(`Plugin provider "${e}" not found. Available: ${Array.from(t.keys()).join(", ")||"(none)"}`,`plugin/${e}`);return new exports.PluginProviderRuntime(e,r)}}function gd(t,e,n,r){let o=t.map(i=>i.replace(/\{model\}/g,e));return r&&o.push(n),o}function Xf(t){if(!t||typeof t!="string")throw new Error("Plugin provider requires a cli_command")}function md(t){if(!Array.isArray(t))throw new Error("CLI arguments must be an array");for(let e of t)if(typeof e!="string")throw new Error("Each CLI argument must be a string")}function Yf(t){for(let{pattern:e}of t)if(typeof e!="string")throw new Error("Error pattern must be a string")}function Qf(t){for(let[e,n]of Object.entries(t))if(typeof e!="string"||typeof n!="string")throw new Error("env entries must be string key/value pairs")}exports.PluginProviderRuntime=void 0;var Fi=D(()=>{u();qe();Jt();exports.PluginProviderRuntime=class{constructor(e,n){this.config=n;this.providerStr=`plugin/${e}`,Xf(n.cli_command),md(n.query_args),md(n.execute_args),n.error_patterns&&Yf(n.error_patterns),n.env&&Qf(n.env);}config;providerStr;async query(e,n){let r=n?.model??this.config.default_model??"default",o=gd(this.config.query_args,r,e,this.config.prompt_in_args),i=this.config.prompt_in_args?void 0:e;n?.onCommand?.(`${this.config.cli_command} ${o.join(" ")}`);let s=this.config.timeout?.query??6e5;return this.runProcess(o,n,i,s)}async execute(e,n){let r=n?.model??this.config.default_model??"default",o=gd(this.config.execute_args,r,e,this.config.prompt_in_args),i=this.config.prompt_in_args?void 0:e;n?.onCommand?.(`${this.config.cli_command} ${o.join(" ")}`);let s=this.config.timeout?.execute??6e5;return this.runProcess(o,n,i,s)}runProcess(e,n,r,o){return new Promise((i,s)=>{let a={...process.env,...this.config.env??{}},d=It({command:this.config.cli_command,env:a,cwd:process.cwd(),resolution:this.config.prefer_local_bin?"local_first":"global_first",allowShellFallback:true}),c=Pt(d,e),l=child_process.spawn(c.command,c.argv,{env:a,shell:c.shell??false,stdio:["pipe","pipe","pipe"],windowsHide:c.windowsHide});r!==void 0&&l.stdin.write(r),l.stdin.end(),l.pid!==void 0&&n?.onPid?.(l.pid);let f="",g="",m="",k="";l.stdout.on("data",v=>{let w=v.toString();f+=w,m+=w;let _=m.split(`
40
- `);m=_.pop()??"";for(let R of _)R.trim()&&n?.onOutput?.(R,"stdout");}),l.stderr.on("data",v=>{let w=v.toString();g+=w,k+=w;let _=k.split(`
41
- `);k=_.pop()??"";for(let R of _)R.trim()&&n?.onOutput?.(R,"stderr");});let h=setTimeout(()=>{l.kill("SIGTERM"),s(new exports.ProviderError(`Plugin provider "${this.providerStr}" timed out after ${o}ms`,this.providerStr));},o);l.on("error",v=>{if(clearTimeout(h),v.code==="ENOENT"){let w=this.config.not_installed_message??`CLI command "${this.config.cli_command}" not found. Is ${this.config.id} installed?`;s(new exports.ProviderError(w,this.providerStr));}else s(new exports.ProviderError(`Spawn error: ${v.message}`,this.providerStr));}),l.on("close",v=>{clearTimeout(h),m.trim()&&n?.onOutput?.(m,"stdout"),k.trim()&&n?.onOutput?.(k,"stderr");let w=v??0;if(n?.onExitCode?.(w),this.config.error_patterns){let _=g||f;for(let R of this.config.error_patterns)if(_.includes(R.pattern)){s(new exports.ProviderError(R.message,this.providerStr));return}}if(v!==0){s(new exports.ProviderError(`Process exited with code ${v}: ${g.slice(0,500)}`,this.providerStr));return}i(f.trim());});})}};});u();u();u();function dc(t){let e=o=>o.replace(/[.+^${}()|[\]\\]/g,"\\$&"),r=t.split("/").map(o=>o==="**"?".*":o.split("*").map(e).join("[^/]*"));return new RegExp(`^${r.join("\\/")}$`)}function Fe(t,e){try{return dc(e).test(t)}catch{return false}}u();u();u();Re();var Rs=60,fr=30,gr=80,To="o200k_base",kc=`
39
+ `)}};});var xd={};fr(xd,{PluginProviderRuntime:()=>exports.PluginProviderRuntime,createPluginProviderFactory:()=>Rd});function Rd(t){return (e,n)=>{let r=t.get(e);if(!r)throw new exports.ProviderError(`Plugin provider "${e}" not found. Available: ${Array.from(t.keys()).join(", ")||"(none)"}`,`plugin/${e}`);return new exports.PluginProviderRuntime(e,r)}}function vd(t,e,n,r){let o=t.map(i=>i.replace(/\{model\}/g,e));return r&&o.push(n),o}function ig(t){if(!t||typeof t!="string")throw new Error("Plugin provider requires a cli_command")}function Ed(t){if(!Array.isArray(t))throw new Error("CLI arguments must be an array");for(let e of t)if(typeof e!="string")throw new Error("Each CLI argument must be a string")}function sg(t){for(let{pattern:e}of t)if(typeof e!="string")throw new Error("Error pattern must be a string")}function ag(t){for(let[e,n]of Object.entries(t))if(typeof e!="string"||typeof n!="string")throw new Error("env entries must be string key/value pairs")}exports.PluginProviderRuntime=void 0;var Vi=M(()=>{u();ze();Yt();exports.PluginProviderRuntime=class{constructor(e,n){this.config=n;this.providerStr=`plugin/${e}`,ig(n.cli_command),Ed(n.query_args),Ed(n.execute_args),n.error_patterns&&sg(n.error_patterns),n.env&&ag(n.env);}config;providerStr;async query(e,n){let r=n?.model??this.config.default_model??"default",o=vd(this.config.query_args,r,e,this.config.prompt_in_args),i=this.config.prompt_in_args?void 0:e;n?.onCommand?.(`${this.config.cli_command} ${o.join(" ")}`);let s=this.config.timeout?.query??6e5;return this.runProcess(o,n,i,s)}async execute(e,n){let r=n?.model??this.config.default_model??"default",o=vd(this.config.execute_args,r,e,this.config.prompt_in_args),i=this.config.prompt_in_args?void 0:e;n?.onCommand?.(`${this.config.cli_command} ${o.join(" ")}`);let s=this.config.timeout?.execute??6e5;return this.runProcess(o,n,i,s)}runProcess(e,n,r,o){return new Promise((i,s)=>{let a={...process.env,...this.config.env??{}},d=Ot({command:this.config.cli_command,env:a,cwd:process.cwd(),resolution:this.config.prefer_local_bin?"local_first":"global_first",allowShellFallback:true}),c=Dt(d,e),l=child_process.spawn(c.command,c.argv,{env:a,shell:c.shell??false,stdio:["pipe","pipe","pipe"],windowsHide:c.windowsHide});r!==void 0&&l.stdin.write(r),l.stdin.end(),l.pid!==void 0&&n?.onPid?.(l.pid);let f="",g="",m="",k="";l.stdout.on("data",v=>{let _=v.toString();f+=_,m+=_;let w=m.split(`
40
+ `);m=w.pop()??"";for(let x of w)x.trim()&&n?.onOutput?.(x,"stdout");}),l.stderr.on("data",v=>{let _=v.toString();g+=_,k+=_;let w=k.split(`
41
+ `);k=w.pop()??"";for(let x of w)x.trim()&&n?.onOutput?.(x,"stderr");});let h=setTimeout(()=>{l.kill("SIGTERM"),s(new exports.ProviderError(`Plugin provider "${this.providerStr}" timed out after ${o}ms`,this.providerStr));},o);l.on("error",v=>{if(clearTimeout(h),v.code==="ENOENT"){let _=this.config.not_installed_message??`CLI command "${this.config.cli_command}" not found. Is ${this.config.id} installed?`;s(new exports.ProviderError(_,this.providerStr));}else s(new exports.ProviderError(`Spawn error: ${v.message}`,this.providerStr));}),l.on("close",v=>{clearTimeout(h),m.trim()&&n?.onOutput?.(m,"stdout"),k.trim()&&n?.onOutput?.(k,"stderr");let _=v??0;if(n?.onExitCode?.(_),this.config.error_patterns){let w=g||f;for(let x of this.config.error_patterns)if(w.includes(x.pattern)){s(new exports.ProviderError(x.message,this.providerStr));return}}if(v!==0){s(new exports.ProviderError(`Process exited with code ${v}: ${g.slice(0,500)}`,this.providerStr));return}i(f.trim());});})}};});u();u();u();function mc(t){let e=o=>o.replace(/[.+^${}()|[\]\\]/g,"\\$&"),r=t.split("/").map(o=>o==="**"?".*":o.split("*").map(e).join("[^/]*"));return new RegExp(`^${r.join("\\/")}$`)}function He(t,e){try{return mc(e).test(t)}catch{return false}}u();u();u();be();var Cs=60,hr=30,yr=80,Po="o200k_base",Ac=`
42
42
 
43
43
  ---
44
44
 
45
- `,mr="system_prompt\\n\\n---\\n\\nmessage",Ao="message",vc=16384,Ec=Object.keys(bo__default.default.special_tokens),Es,xs;function bs(){return Es??=jsTiktoken.getEncoding(To),Es}function xc(){return xs??=new lite.Tiktoken(bo__default.default),xs}function Rc(t){return Ec.some(e=>t.includes(e))}function bc(t){return t===void 0?vc:!Number.isFinite(t)||t<=0?0:Math.floor(t)}function Tc(t={}){let e=bc(t.pieceCacheMaxEntries),n=new Map,r=t.observePieceCache;return o=>{if(Rc(o))return r?.({type:"full_encode",reason:"special_token"}),bs().encode(o).length;let i=0,s=new RegExp(bo__default.default.pat_str,"ug");for(let a of o.matchAll(s)){let d=a[0],c=n.get(d);if(c!==void 0){n.delete(d),n.set(d,c),r?.({type:"hit",piece:d,tokenCount:c}),i+=c;continue}let l=xc().encode(d).length;if(r?.({type:"miss",piece:d,tokenCount:l}),e>0){if(n.size>=e){let f=n.keys().next().value;if(f!==void 0){let g=n.get(f);n.delete(f),r?.({type:"evict",piece:f,tokenCount:g});}}n.set(d,l);}i+=l;}return i}}function Io(t){let e=t.trim(),n=e.indexOf("/");return n===-1?e:e.slice(n+1)}function Ac(t){if(t===void 0)return Rs;if(!(!Number.isFinite(t)||!Number.isInteger(t))&&!(t<fr||t>gr))return t}function Ic(t){return typeof t=="number"&&Number.isInteger(t)&&t>0}function Pc(t){return /^gpt-5(?:$|[.-])/.test(t)}function hr(t={}){let e=t.provider?Io(t.provider):"",n=t.model??"",r={provider:e,model:n,encoding:To,exact:Pc(n)};return r.exact||(r.fallbackReason="vendor_tokenizer_unavailable"),r}function yr(t,e={}){return {tokenCount:bs().encode(t).length,tokenizer:hr(e)}}function Cc(t){let e=t.systemPrompt??"";return e?`${e}${kc}${t.message}`:t.message}function Po(t,e){return e(Cc(t))}function Sc(t={},e={}){let n=hr(t),r=Tc(e);return {metadata:n,countTokens:r}}function Co(t={}){return Sc(t)}function wr(t){let e=t.provider,n=Io(e),r=hr({provider:n,model:t.model}),o=Ac(t.inputBudgetPercent);if(o===void 0)return {resolved:false,requestedProvider:e,provider:n,model:t.model,reason:"invalid_input_budget_percent",tokenizer:r};let i=Oe(n);if(i.models.length===0)return {resolved:false,requestedProvider:e,provider:n,model:t.model,inputBudgetPercent:o,reason:"provider_catalog_unavailable",tokenizer:r};let s=i.models.find(a=>a.id===t.model);return s?Ic(s.contextWindowTokens)?{resolved:true,requestedProvider:e,provider:n,model:t.model,contextWindowTokens:s.contextWindowTokens,inputBudgetPercent:o,inputBudgetTokens:Math.floor(s.contextWindowTokens*o/100),tokenizer:r}:{resolved:false,requestedProvider:e,provider:n,model:t.model,inputBudgetPercent:o,reason:"context_window_tokens_unavailable",tokenizer:r}:{resolved:false,requestedProvider:e,provider:n,model:t.model,inputBudgetPercent:o,reason:"model_not_found",tokenizer:r}}var Nc=zod.z.object({model:zod.z.string().optional(),system_prompt:zod.z.string().optional(),prompt:zod.z.string().optional(),layout:zod.z.union([zod.z.string(),zod.z.object({id:zod.z.string(),props:zod.z.record(zod.z.unknown()).optional()}),zod.z.object({props:zod.z.record(zod.z.unknown())}),zod.z.object({template:zod.z.string()})]).optional()}).catchall(zod.z.unknown()),Ts=zod.z.object({include:zod.z.array(zod.z.string()).optional()}).optional(),Dc=zod.z.object({id:zod.z.string(),name:zod.z.string().optional(),role:zod.z.string().optional(),team:zod.z.string().optional(),provider:zod.z.union([zod.z.string(),zod.z.array(zod.z.string())]),working_directory:zod.z.string().optional(),description:zod.z.string().optional(),tags:zod.z.array(zod.z.string()).optional(),inline:Nc.optional(),skills:Ts}).catchall(zod.z.unknown()),Mc=zod.z.object({id:zod.z.string(),name:zod.z.string(),workflow_id:zod.z.string(),description:zod.z.string().optional(),goal_id:zod.z.string().optional()}),Uc=zod.z.number().finite().int().min(fr).max(gr),Lc=zod.z.object({inputBudgetPercent:Uc.optional()}).catchall(zod.z.unknown()),$c=zod.z.object({continuity:Lc.optional()}).catchall(zod.z.unknown()),Bc=zod.z.object({bin_resolution:zod.z.enum(["global_first","local_first"]).optional(),dreaming:$c.optional(),wi:zod.z.object({boards:zod.z.array(zod.z.unknown()).optional().catch(()=>{})}).catchall(zod.z.unknown()).optional().catch(()=>{})}).catchall(zod.z.unknown()),As=zod.z.object({agents:zod.z.array(Dc).optional(),hooks:zod.z.array(zod.z.unknown()).optional(),settings:Bc.optional(),skills:zod.z.unknown().optional(),layouts:zod.z.record(zod.z.unknown()).optional(),documents:zod.z.record(zod.z.unknown()).optional()}).catchall(zod.z.unknown());var bt=class extends Error{constructor(n,r){super(n);this.cause=r;this.name="ConfigLoadError";}cause};function _r(t){if(!t||typeof t!="string"||!t.trim())throw new bt("YAML content must be a non-empty string");let e;try{e=jsYaml.load(t);}catch(o){throw new bt(`YAML parse error: ${o.message}`,o)}let n=Hc(e),r=As.safeParse(n);if(!r.success)throw new bt(`Config validation error: ${r.error.message}`);return r.data}function kr(t){let e;try{e=Ua.readFileSync(t,"utf-8");}catch(n){throw new bt(`Cannot read file: ${t}`,n)}return _r(e)}function Hc(t){if(!t||typeof t!="object")return {agents:[]};let e=t,n;if(e.agents&&typeof e.agents=="object"&&!Array.isArray(e.agents)){let o=e.agents;n=Object.entries(o).map(([i,s])=>({id:i,...s&&typeof s=="object"?s:{}}));}else if(Array.isArray(e.agents))n=e.agents;else return {...e,agents:[]};let r=n.map(o=>{if(o.provider===void 0&&o.inline&&typeof o.inline=="object"){let i=o.inline;if(i.provider!==void 0)return {...o,provider:i.provider}}return o});return {...e,agents:r}}u();var Tt=K.join("templates","agents"),At=K.join("templates","workflows");function Is(){try{let e=(typeof ge=="function"?ge:module$1.createRequire(typeof __filename<"u"?__filename:process.cwd()+"/")).resolve("@crewx/sdk/package.json");return K.dirname(e)}catch{return null}}function Gt(t){if(t&&Ua.existsSync(t))return t;let e=process.env.CREWX_SDK_TEMPLATES_PATH;if(e&&Ua.existsSync(e))return e;let n=Is();if(n){let o=K.join(n,Tt);if(Ua.existsSync(o))return o}let r=[K.join(__dirname,"..",Tt),K.join(__dirname,"..","..",Tt),K.join(__dirname,"..","..","..",Tt),K.join(process.cwd(),"packages","sdk",Tt),K.join(process.cwd(),Tt)];for(let o of r)if(Ua.existsSync(o))return o;throw new Error(`[@crewx/sdk] Templates directory not found.
46
- `+(n?` package anchor: ${K.join(n,Tt)}
45
+ `,_r="system_prompt\\n\\n---\\n\\nmessage",Co="message",Ic=16384,Pc=Object.keys(Io__default.default.special_tokens),Is,Ps;function Ss(){return Is??=jsTiktoken.getEncoding(Po),Is}function Cc(){return Ps??=new lite.Tiktoken(Io__default.default),Ps}function Sc(t){return Pc.some(e=>t.includes(e))}function Oc(t){return t===void 0?Ic:!Number.isFinite(t)||t<=0?0:Math.floor(t)}function Dc(t={}){let e=Oc(t.pieceCacheMaxEntries),n=new Map,r=t.observePieceCache;return o=>{if(Sc(o))return r?.({type:"full_encode",reason:"special_token"}),Ss().encode(o).length;let i=0,s=new RegExp(Io__default.default.pat_str,"ug");for(let a of o.matchAll(s)){let d=a[0],c=n.get(d);if(c!==void 0){n.delete(d),n.set(d,c),r?.({type:"hit",piece:d,tokenCount:c}),i+=c;continue}let l=Cc().encode(d).length;if(r?.({type:"miss",piece:d,tokenCount:l}),e>0){if(n.size>=e){let f=n.keys().next().value;if(f!==void 0){let g=n.get(f);n.delete(f),r?.({type:"evict",piece:f,tokenCount:g});}}n.set(d,l);}i+=l;}return i}}function So(t){let e=t.trim(),n=e.indexOf("/");return n===-1?e:e.slice(n+1)}function Nc(t){if(t===void 0)return Cs;if(!(!Number.isFinite(t)||!Number.isInteger(t))&&!(t<hr||t>yr))return t}function Mc(t){return typeof t=="number"&&Number.isInteger(t)&&t>0}function Uc(t){return /^gpt-5(?:$|[.-])/.test(t)}function wr(t={}){let e=t.provider?So(t.provider):"",n=t.model??"",r={provider:e,model:n,encoding:Po,exact:Uc(n)};return r.exact||(r.fallbackReason="vendor_tokenizer_unavailable"),r}function kr(t,e={}){return {tokenCount:Ss().encode(t).length,tokenizer:wr(e)}}function Lc(t){let e=t.systemPrompt??"";return e?`${e}${Ac}${t.message}`:t.message}function Oo(t,e){return e(Lc(t))}function jc(t={},e={}){let n=wr(t),r=Dc(e);return {metadata:n,countTokens:r}}function Do(t={}){return jc(t)}function vr(t){let e=t.provider,n=So(e),r=wr({provider:n,model:t.model}),o=Nc(t.inputBudgetPercent);if(o===void 0)return {resolved:false,requestedProvider:e,provider:n,model:t.model,reason:"invalid_input_budget_percent",tokenizer:r};let i=De(n);if(i.models.length===0)return {resolved:false,requestedProvider:e,provider:n,model:t.model,inputBudgetPercent:o,reason:"provider_catalog_unavailable",tokenizer:r};let s=i.models.find(a=>a.id===t.model);return s?Mc(s.contextWindowTokens)?{resolved:true,requestedProvider:e,provider:n,model:t.model,contextWindowTokens:s.contextWindowTokens,inputBudgetPercent:o,inputBudgetTokens:Math.floor(s.contextWindowTokens*o/100),tokenizer:r}:{resolved:false,requestedProvider:e,provider:n,model:t.model,inputBudgetPercent:o,reason:"context_window_tokens_unavailable",tokenizer:r}:{resolved:false,requestedProvider:e,provider:n,model:t.model,inputBudgetPercent:o,reason:"model_not_found",tokenizer:r}}var Bc=zod.z.object({model:zod.z.string().optional(),system_prompt:zod.z.string().optional(),prompt:zod.z.string().optional(),layout:zod.z.union([zod.z.string(),zod.z.object({id:zod.z.string(),props:zod.z.record(zod.z.unknown()).optional()}),zod.z.object({props:zod.z.record(zod.z.unknown())}),zod.z.object({template:zod.z.string()})]).optional()}).catchall(zod.z.unknown()),Os=zod.z.object({include:zod.z.array(zod.z.string()).optional()}).optional(),Fc=zod.z.object({id:zod.z.string(),name:zod.z.string().optional(),role:zod.z.string().optional(),team:zod.z.string().optional(),provider:zod.z.union([zod.z.string(),zod.z.array(zod.z.string())]),working_directory:zod.z.string().optional(),description:zod.z.string().optional(),tags:zod.z.array(zod.z.string()).optional(),inline:Bc.optional(),skills:Os}).catchall(zod.z.unknown()),Hc=zod.z.object({id:zod.z.string(),name:zod.z.string(),workflow_id:zod.z.string(),description:zod.z.string().optional(),goal_id:zod.z.string().optional()}),Wc=zod.z.number().finite().int().min(hr).max(yr),qc=zod.z.object({inputBudgetPercent:Wc.optional()}).catchall(zod.z.unknown()),zc=zod.z.object({continuity:qc.optional()}).catchall(zod.z.unknown()),Gc=zod.z.object({bin_resolution:zod.z.enum(["global_first","local_first"]).optional(),dreaming:zc.optional(),wi:zod.z.object({boards:zod.z.array(zod.z.unknown()).optional().catch(()=>{})}).catchall(zod.z.unknown()).optional().catch(()=>{})}).catchall(zod.z.unknown()),Ds=zod.z.object({agents:zod.z.array(Fc).optional(),hooks:zod.z.array(zod.z.unknown()).optional(),settings:Gc.optional(),skills:zod.z.unknown().optional(),layouts:zod.z.record(zod.z.unknown()).optional(),documents:zod.z.record(zod.z.unknown()).optional()}).catchall(zod.z.unknown());var Pt=class extends Error{constructor(n,r){super(n);this.cause=r;this.name="ConfigLoadError";}cause};function Er(t){if(!t||typeof t!="string"||!t.trim())throw new Pt("YAML content must be a non-empty string");let e;try{e=jsYaml.load(t);}catch(o){throw new Pt(`YAML parse error: ${o.message}`,o)}let n=Kc(e),r=Ds.safeParse(n);if(!r.success)throw new Pt(`Config validation error: ${r.error.message}`);return r.data}function Rr(t){let e;try{e=Wa.readFileSync(t,"utf-8");}catch(n){throw new Pt(`Cannot read file: ${t}`,n)}return Er(e)}function Kc(t){if(!t||typeof t!="object")return {agents:[]};let e=t,n;if(e.agents&&typeof e.agents=="object"&&!Array.isArray(e.agents)){let o=e.agents;n=Object.entries(o).map(([i,s])=>({id:i,...s&&typeof s=="object"?s:{}}));}else if(Array.isArray(e.agents))n=e.agents;else return {...e,agents:[]};let r=n.map(o=>{if(o.provider===void 0&&o.inline&&typeof o.inline=="object"){let i=o.inline;if(i.provider!==void 0)return {...o,provider:i.provider}}return o});return {...e,agents:r}}u();var Ct=X.join("templates","agents"),St=X.join("templates","workflows");function Ns(){try{let e=(typeof he=="function"?he:module$1.createRequire(typeof __filename<"u"?__filename:process.cwd()+"/")).resolve("@crewx/sdk/package.json");return X.dirname(e)}catch{return null}}function Kt(t){if(t&&Wa.existsSync(t))return t;let e=process.env.CREWX_SDK_TEMPLATES_PATH;if(e&&Wa.existsSync(e))return e;let n=Ns();if(n){let o=X.join(n,Ct);if(Wa.existsSync(o))return o}let r=[X.join(__dirname,"..",Ct),X.join(__dirname,"..","..",Ct),X.join(__dirname,"..","..","..",Ct),X.join(process.cwd(),"packages","sdk",Ct),X.join(process.cwd(),Ct)];for(let o of r)if(Wa.existsSync(o))return o;throw new Error(`[@crewx/sdk] Templates directory not found.
46
+ `+(n?` package anchor: ${X.join(n,Ct)}
47
47
  `:` package anchor: (unresolved)
48
48
  `)+r.map(o=>` candidate: ${o}`).join(`
49
49
  `)+`
50
- Set CREWX_SDK_TEMPLATES_PATH or pass options.templatesPath.`)}function So(){let t=Gt();return {yamlPath:K.join(t,"default.yaml"),dir:t}}function zc(t){if(t&&Ua.existsSync(t))return t;let e=process.env.CREWX_SDK_WORKFLOW_TEMPLATES_PATH;if(e&&Ua.existsSync(e))return e;let n=Is();if(n){let o=K.join(n,At);if(Ua.existsSync(o))return o}let r=[K.join(__dirname,"..",At),K.join(__dirname,"..","..",At),K.join(__dirname,"..","..","..",At),K.join(process.cwd(),"packages","sdk",At),K.join(process.cwd(),At)];for(let o of r)if(Ua.existsSync(o))return o;throw new Error(`[@crewx/sdk] Workflow templates directory not found.
51
- `+(n?` package anchor: ${K.join(n,At)}
50
+ Set CREWX_SDK_TEMPLATES_PATH or pass options.templatesPath.`)}function No(){let t=Kt();return {yamlPath:X.join(t,"default.yaml"),dir:t}}function Qc(t){if(t&&Wa.existsSync(t))return t;let e=process.env.CREWX_SDK_WORKFLOW_TEMPLATES_PATH;if(e&&Wa.existsSync(e))return e;let n=Ns();if(n){let o=X.join(n,St);if(Wa.existsSync(o))return o}let r=[X.join(__dirname,"..",St),X.join(__dirname,"..","..",St),X.join(__dirname,"..","..","..",St),X.join(process.cwd(),"packages","sdk",St),X.join(process.cwd(),St)];for(let o of r)if(Wa.existsSync(o))return o;throw new Error(`[@crewx/sdk] Workflow templates directory not found.
51
+ `+(n?` package anchor: ${X.join(n,St)}
52
52
  `:` package anchor: (unresolved)
53
53
  `)+r.map(o=>` candidate: ${o}`).join(`
54
54
  `)+`
55
- Set CREWX_SDK_WORKFLOW_TEMPLATES_PATH or pass options.templatesPath.`)}u();var et=class extends Error{constructor(e,n){let r=n.length>0?` Available: ${n.join(", ")}`:"";super(`Agent not found: "${e}".${r}`),this.name="AgentNotFoundError";}},Gc={claude:{id:"claude",provider:"cli/claude"},copilot:{id:"copilot",provider:"cli/copilot"},codex:{id:"codex",provider:"cli/codex"}};function vr(t,e){let n=t.startsWith("@")?t.slice(1):t,r=e.find(i=>i.id===n);if(r)return r;let o=Gc[n];if(o)return o;throw new et(t,e.map(i=>i.id))}qe();Dr();zt();u();u();function Hl(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function Wl(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function In(t){if(!Hl(t)||Wl(t,"grok"))return t;let e=t.mode,n;switch(e){case "agent":n={...t,grok:{alwaysApprove:true,sandbox:"workspace"}},delete n.mode;break;case "agent-full-access":case "yolo":n={...t,grok:{alwaysApprove:true,sandbox:"off"}},delete n.mode;break;case "read-only":case "plan":n={...t,mode:"plan",grok:{alwaysApprove:false,sandbox:"read-only"}};break;default:return t}return n}function zo(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function na(t){if(t)return t.slice(t.lastIndexOf("/")+1)}function ql(t,e){let n=t.providerOptions;if(zo(n)){let i=na(e),s=i?n[i]:void 0;return zo(s)?{...s}:{...n}}let r=na(e),o=r?t[r]:void 0;return zo(o)?{...o}:void 0}function Mr(t){if(!t||typeof t!="object"||Array.isArray(t))return;let e=t,n=typeof e.provider=="string"?e.provider.trim():void 0,r=n?.slice(n.lastIndexOf("/")+1)==="grok",o=Object.prototype.hasOwnProperty.call(e,"grok")||Object.prototype.hasOwnProperty.call(e,"providerOptions"),i=r&&!o?In(e):e,s={};typeof i.provider=="string"&&i.provider.trim()&&(s.provider=i.provider.trim()),typeof i.model=="string"&&i.model.trim()&&(s.model=i.model.trim()),typeof i.mode=="string"&&i.mode.trim()&&(s.mode=i.mode.trim()),typeof i.effort=="string"&&i.effort.trim()&&(s.effort=i.effort.trim());let a=ql(i,s.provider);return a&&(s.providerOptions=a),s}function Go(t){if(t==null||t===false)return {active:false};if(t===true)return {active:true};if(typeof t=="object"){let e=t.mode;return {active:true,mode:e==="count"||e==="latch"?e:void 0}}return {active:false}}function Vo(t,e,n,r){if(!r.active)return {active:false,crossProvider:false};if(!t||typeof t!="object"||Array.isArray(t))return {active:false,crossProvider:false};let i=t[e];if(!i||typeof i!="object"||Array.isArray(i))return {active:false,crossProvider:false};let s=Mr(i.overdrive);if(!s||!s.provider||!s.model)return {active:false,crossProvider:false};let a=s.provider!==n;return {active:true,provider:s.provider,model:s.model,mode:s.mode,effort:s.effort,crossProvider:a,providerOptions:s.providerOptions}}function Jo(t,e){if(!t||typeof t!="object"||Array.isArray(t))return {};let r=t[e];if(!r||typeof r!="object"||Array.isArray(r))return {};let o=r,i={};return o.provider!==void 0&&(typeof o.provider=="string"?o.provider.trim()&&(i.provider=o.provider.trim()):console.warn(`[crewx] options.${e}.provider must be a single string; ignoring non-string value (${JSON.stringify(o.provider)})`)),typeof o.model=="string"&&o.model.trim()&&(i.model=o.model.trim()),i}u();u();var Gl=[/^ANTHROPIC_/i,/^OPENAI_/i,/^AWS_SECRET/i,/^SLACK_/i,/^GITHUB_TOKEN$/i,/^CREWX_MCP_KEY$/i,/^DATABASE_/i,/^AWS_ACCESS_KEY/i,/^AWS_SESSION_TOKEN$/i,/^GH_TOKEN$/i,/^GH_APP_/i,/^NPM_TOKEN$/i,/^NPM_AUTH/i,/^GOOGLE_APPLICATION/i,/^GCLOUD_/i,/^AZURE_/i,/^ARM_/i,/^DOCKER_PASSWORD$/i,/^DOCKER_AUTH/i,/^SSH_PRIVATE/i,/^SSH_AUTH_SOCK$/i,/^CI_JOB_TOKEN$/i,/^ACTIONS_RUNTIME_TOKEN$/i,/^VAULT_TOKEN$/i,/^SONAR_TOKEN$/i,/^CODECOV_TOKEN$/i,/TOKEN$/i,/SECRET$/i,/PASSWORD$/i,/API_KEY$/i],Vl=/[;|&`$(){}!><\n\r]/,Jl=2,Kl=["*","**","*:*","* *","**/*"];function Xl(){let t={};for(let[e,n]of Object.entries(process.env))n!==void 0&&(Gl.some(r=>r.test(e))||(t[e]=n));return t}function Yl(t){if(Vl.test(t))throw new Error(`exec blocked: shell metacharacter detected in "${t}"`)}function Ql(t){return /^npx\s+@crewx\/[\w-]+/.test(t)}function Zl(t){if(Kl.includes(t.trim()))throw new Error(`exec config error: overly broad pattern "${t}" is not allowed`);if(!/^[\w./@-]/.test(t))throw new Error("exec config error: pattern must start with a command name")}function eu(t,e){let n=e.allow??[],r=e.deny??[];for(let o of [...n,...r])Zl(o);return r.some(o=>Fe(t,o))?false:Ql(t)?true:n.some(o=>Fe(t,o))}var ra=false;function tu(t){ra=t;}function Pn(t){if(!ra)return;let e=JSON.stringify({span:"template_exec",...t,timestamp:new Date().toISOString()});console.error(e);}function nu(t){let e=[],n="",r=false,o=false;for(let i=0;i<t.length;i++){let s=t[i];s==="'"&&!o?r=!r:s==='"'&&!r?o=!o:s===" "&&!r&&!o?n.length>0&&(e.push(n),n=""):n+=s;}return n.length>0&&e.push(n),e}function oa(t,e){let n=Date.now(),r=parseInt(process.env.CREWX_EXEC_DEPTH??"0",10);if(isNaN(r)||r>=Jl)return Pn({command:t,status:"denied",reason:"invalid or max recursion depth"}),"(exec blocked: max recursion depth reached)";try{Yl(t);}catch{return Pn({command:t,status:"denied",reason:"shell metacharacter detected"}),`(exec blocked: shell metacharacter detected in "${t}")`}if(!eu(t,e))return Pn({command:t,status:"denied",reason:"not in allow list"}),`(exec blocked: ${t})`;try{let o=nu(t),[i,...s]=o;if(!i)return `(exec failed: ${t})`;let a=Xl(),d=child_process.execFileSync(i,s,{timeout:e.timeout??5e3,maxBuffer:64*1024,encoding:"utf-8",env:{...a,CREWX_EXEC_DEPTH:String(r+1)},stdio:["pipe","pipe","pipe"]}),c=Date.now()-n;return Pn({command:t,status:"allowed",allowed_by:"policy",duration_ms:c}),`<exec-output cmd="${t}">
55
+ Set CREWX_SDK_WORKFLOW_TEMPLATES_PATH or pass options.templatesPath.`)}u();var ot=class extends Error{constructor(e,n){let r=n.length>0?` Available: ${n.join(", ")}`:"";super(`Agent not found: "${e}".${r}`),this.name="AgentNotFoundError";}},Zc={claude:{id:"claude",provider:"cli/claude"},copilot:{id:"copilot",provider:"cli/copilot"},codex:{id:"codex",provider:"cli/codex"}};function xr(t,e){let n=t.startsWith("@")?t.slice(1):t,r=e.find(i=>i.id===n);if(r)return r;let o=Zc[n];if(o)return o;throw new ot(t,e.map(i=>i.id))}ze();Lr();Jt();u();u();function Kl(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function Xl(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function Sn(t){if(!Kl(t)||Xl(t,"grok"))return t;let e=t.mode,n;switch(e){case "agent":n={...t,grok:{alwaysApprove:true,sandbox:"workspace"}},delete n.mode;break;case "agent-full-access":case "yolo":n={...t,grok:{alwaysApprove:true,sandbox:"off"}},delete n.mode;break;case "read-only":case "plan":n={...t,mode:"plan",grok:{alwaysApprove:false,sandbox:"read-only"}};break;default:return t}return n}function Jo(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function da(t){if(t)return t.slice(t.lastIndexOf("/")+1)}function Yl(t,e){let n=t.providerOptions;if(Jo(n)){let i=da(e),s=i?n[i]:void 0;return Jo(s)?{...s}:{...n}}let r=da(e),o=r?t[r]:void 0;return Jo(o)?{...o}:void 0}function jr(t){if(!t||typeof t!="object"||Array.isArray(t))return;let e=t,n=typeof e.provider=="string"?e.provider.trim():void 0,r=n?.slice(n.lastIndexOf("/")+1)==="grok",o=Object.prototype.hasOwnProperty.call(e,"grok")||Object.prototype.hasOwnProperty.call(e,"providerOptions"),i=r&&!o?Sn(e):e,s={};typeof i.provider=="string"&&i.provider.trim()&&(s.provider=i.provider.trim()),typeof i.model=="string"&&i.model.trim()&&(s.model=i.model.trim()),typeof i.mode=="string"&&i.mode.trim()&&(s.mode=i.mode.trim()),typeof i.effort=="string"&&i.effort.trim()&&(s.effort=i.effort.trim());let a=Yl(i,s.provider);return a&&(s.providerOptions=a),s}function Ko(t){if(t==null||t===false)return {active:false};if(t===true)return {active:true};if(typeof t=="object"){let e=t.mode;return {active:true,mode:e==="count"||e==="latch"?e:void 0}}return {active:false}}function Xo(t,e,n,r){if(!r.active)return {active:false,crossProvider:false};if(!t||typeof t!="object"||Array.isArray(t))return {active:false,crossProvider:false};let i=t[e];if(!i||typeof i!="object"||Array.isArray(i))return {active:false,crossProvider:false};let s=jr(i.overdrive);if(!s||!s.provider||!s.model)return {active:false,crossProvider:false};let a=s.provider!==n;return {active:true,provider:s.provider,model:s.model,mode:s.mode,effort:s.effort,crossProvider:a,providerOptions:s.providerOptions}}function Yo(t,e){if(!t||typeof t!="object"||Array.isArray(t))return {};let r=t[e];if(!r||typeof r!="object"||Array.isArray(r))return {};let o=r,i={};return o.provider!==void 0&&(typeof o.provider=="string"?o.provider.trim()&&(i.provider=o.provider.trim()):console.warn(`[crewx] options.${e}.provider must be a single string; ignoring non-string value (${JSON.stringify(o.provider)})`)),typeof o.model=="string"&&o.model.trim()&&(i.model=o.model.trim()),i}u();u();var Zl=[/^ANTHROPIC_/i,/^OPENAI_/i,/^AWS_SECRET/i,/^SLACK_/i,/^GITHUB_TOKEN$/i,/^CREWX_MCP_KEY$/i,/^DATABASE_/i,/^AWS_ACCESS_KEY/i,/^AWS_SESSION_TOKEN$/i,/^GH_TOKEN$/i,/^GH_APP_/i,/^NPM_TOKEN$/i,/^NPM_AUTH/i,/^GOOGLE_APPLICATION/i,/^GCLOUD_/i,/^AZURE_/i,/^ARM_/i,/^DOCKER_PASSWORD$/i,/^DOCKER_AUTH/i,/^SSH_PRIVATE/i,/^SSH_AUTH_SOCK$/i,/^CI_JOB_TOKEN$/i,/^ACTIONS_RUNTIME_TOKEN$/i,/^VAULT_TOKEN$/i,/^SONAR_TOKEN$/i,/^CODECOV_TOKEN$/i,/TOKEN$/i,/SECRET$/i,/PASSWORD$/i,/API_KEY$/i],eu=/[;|&`$(){}!><\n\r]/,tu=2,nu=["*","**","*:*","* *","**/*"];function ru(){let t={};for(let[e,n]of Object.entries(process.env))n!==void 0&&(Zl.some(r=>r.test(e))||(t[e]=n));return t}function ou(t){if(eu.test(t))throw new Error(`exec blocked: shell metacharacter detected in "${t}"`)}function iu(t){return /^npx\s+@crewx\/[\w-]+/.test(t)}function su(t){if(nu.includes(t.trim()))throw new Error(`exec config error: overly broad pattern "${t}" is not allowed`);if(!/^[\w./@-]/.test(t))throw new Error("exec config error: pattern must start with a command name")}function au(t,e){let n=e.allow??[],r=e.deny??[];for(let o of [...n,...r])su(o);return r.some(o=>He(t,o))?false:iu(t)?true:n.some(o=>He(t,o))}var ca=false;function du(t){ca=t;}function On(t){if(!ca)return;let e=JSON.stringify({span:"template_exec",...t,timestamp:new Date().toISOString()});console.error(e);}function cu(t){let e=[],n="",r=false,o=false;for(let i=0;i<t.length;i++){let s=t[i];s==="'"&&!o?r=!r:s==='"'&&!r?o=!o:s===" "&&!r&&!o?n.length>0&&(e.push(n),n=""):n+=s;}return n.length>0&&e.push(n),e}function la(t,e){let n=Date.now(),r=parseInt(process.env.CREWX_EXEC_DEPTH??"0",10);if(isNaN(r)||r>=tu)return On({command:t,status:"denied",reason:"invalid or max recursion depth"}),"(exec blocked: max recursion depth reached)";try{ou(t);}catch{return On({command:t,status:"denied",reason:"shell metacharacter detected"}),`(exec blocked: shell metacharacter detected in "${t}")`}if(!au(t,e))return On({command:t,status:"denied",reason:"not in allow list"}),`(exec blocked: ${t})`;try{let o=cu(t),[i,...s]=o;if(!i)return `(exec failed: ${t})`;let a=ru(),d=child_process.execFileSync(i,s,{timeout:e.timeout??5e3,maxBuffer:64*1024,encoding:"utf-8",env:{...a,CREWX_EXEC_DEPTH:String(r+1)},stdio:["pipe","pipe","pipe"]}),c=Date.now()-n;return On({command:t,status:"allowed",allowed_by:"policy",duration_ms:c}),`<exec-output cmd="${t}">
56
56
  ${d.trim()}
57
- </exec-output>`}catch{return Pn({command:t,status:"error",reason:"execution failed"}),`(exec failed: ${t})`}}u();function ia(t){return t==null?"":String(t)}u();function sa(t,e){return `\`\`\`${e?.hash?.lang??""}
57
+ </exec-output>`}catch{return On({command:t,status:"error",reason:"execution failed"}),`(exec failed: ${t})`}}u();function ua(t){return t==null?"":String(t)}u();function pa(t,e){return `\`\`\`${e?.hash?.lang??""}
58
58
  ${t??""}
59
- \`\`\``}u();u();function Ko(t){let e=n=>String(n).padStart(2,"0");return `${t.getFullYear()}${e(t.getMonth()+1)}${e(t.getDate())}T${e(t.getHours())}${e(t.getMinutes())}${e(t.getSeconds())}`}function Xo(t){let e=t.toISOString();return `${e.slice(0,10)} ${e.slice(11,19)} UTC`}function Yo(t,e){if(!t)return "";if(t.length<=e)return t;let n=t.length-e;return `${t.substring(0,e)} (...+${n} chars)`}function Qo(t){return Array.isArray(t)||typeof t=="string"?t.length:0}function Zo(t){return typeof t!="string"?"":t.replace(/\{\{/g,"&#123;&#123;").replace(/\}\}/g,"&#125;&#125;")}var aa=["B","KB","MB","GB"];function ei(t){if(t===0)return "0 B";let e=Math.min(Math.floor(Math.log(t)/Math.log(1024)),aa.length-1);return `${Math.round(t/Math.pow(1024,e)*100)/100} ${aa[e]}`}function ti(t){if(!t)return "";try{let e=t instanceof Date?t:new Date(t);return isNaN(e.getTime())?"":Xo(e)}catch{return ""}}var Cn=class{hbs;execPolicy;execEnabled;constructor(e={}){this.hbs=ze__namespace.create(),this.execPolicy=e.execPolicy??{allow:[],deny:[]},this.execEnabled=e.execEnabled??true,this.registerHelpers();}registerHelpers(){let e=this.hbs,n=this.execPolicy,r=this.execEnabled;e.registerHelper("exec",function(o){return typeof o!="string"?"":r?new e.SafeString(oa(o,n)):"(exec disabled)"}),e.registerHelper("include",function(o){return new e.SafeString(ia(o))}),e.registerHelper("fenced_code",function(o,i){return new e.SafeString(sa(o,i))}),e.registerHelper("eq",function(o,i){return o===i}),e.registerHelper("ne",function(o,i){return o!==i}),e.registerHelper("and",function(o,i){return o&&i}),e.registerHelper("or",function(o,i){return o||i}),e.registerHelper("not",function(o){return !o}),e.registerHelper("contains",function(o,i){return Array.isArray(o)&&o.includes(i)}),e.registerHelper("json",function(o){return JSON.stringify(o,null,2)}),e.registerHelper("truncate",function(o,i){return Yo(o,i)}),e.registerHelper("length",function(o){return Qo(o)}),e.registerHelper("escapeHandlebars",function(o){return new e.SafeString(Zo(o))}),e.registerHelper("formatFileSize",function(o){return ei(o)}),e.registerHelper("formatTimestamp",function(o){return ti(o)});}async render(e,n={}){return this.hbs.compile(e,{noEscape:true})(n)}};u();u();var Ur=class{async readFile(e){return promises.readFile(e,"utf-8")}async exists(e){try{return await promises.access(e),!0}catch{return false}}resolvePath(...e){return e.length===1?K.resolve(e[0]):K.resolve(K.join(...e))}isAbsolute(e){return K.isAbsolute(e)}async readdir(e){try{return await promises.readdir(e)}catch{return []}}},Mt=new Ur;var Ut=class{docs=new Map;fs;constructor(e){this.fs=e??Mt;}async load(e,n){if(e)for(let[r,o]of Object.entries(e)){let i=o;if(typeof i=="string")this.docs.set(r,{content:i});else if(i&&typeof i=="object"){let s=i;"content"in s&&typeof s.content=="string"?this.docs.set(r,{content:s.content}):"path"in s&&typeof s.path=="string"?await this.loadFromFile(r,s.path,n):console.warn(`[DocumentLoader] Skipping '${r}': unsupported format`);}else console.warn(`[DocumentLoader] Skipping '${r}': unsupported format`);}}async getContent(e){return this.docs.get(e)?.content}async getToc(e){let n=this.docs.get(e);if(!n)return;let r=[];for(let o of n.content.split(`
59
+ \`\`\``}u();u();function Qo(t){let e=n=>String(n).padStart(2,"0");return `${t.getFullYear()}${e(t.getMonth()+1)}${e(t.getDate())}T${e(t.getHours())}${e(t.getMinutes())}${e(t.getSeconds())}`}function Zo(t){let e=t.toISOString();return `${e.slice(0,10)} ${e.slice(11,19)} UTC`}function ei(t,e){if(!t)return "";if(t.length<=e)return t;let n=t.length-e;return `${t.substring(0,e)} (...+${n} chars)`}function ti(t){return Array.isArray(t)||typeof t=="string"?t.length:0}function ni(t){return typeof t!="string"?"":t.replace(/\{\{/g,"&#123;&#123;").replace(/\}\}/g,"&#125;&#125;")}var fa=["B","KB","MB","GB"];function ri(t){if(t===0)return "0 B";let e=Math.min(Math.floor(Math.log(t)/Math.log(1024)),fa.length-1);return `${Math.round(t/Math.pow(1024,e)*100)/100} ${fa[e]}`}function oi(t){if(!t)return "";try{let e=t instanceof Date?t:new Date(t);return isNaN(e.getTime())?"":Zo(e)}catch{return ""}}var Dn=class{hbs;execPolicy;execEnabled;constructor(e={}){this.hbs=Ge__namespace.create(),this.execPolicy=e.execPolicy??{allow:[],deny:[]},this.execEnabled=e.execEnabled??true,this.registerHelpers();}registerHelpers(){let e=this.hbs,n=this.execPolicy,r=this.execEnabled;e.registerHelper("exec",function(o){return typeof o!="string"?"":r?new e.SafeString(la(o,n)):"(exec disabled)"}),e.registerHelper("include",function(o){return new e.SafeString(ua(o))}),e.registerHelper("fenced_code",function(o,i){return new e.SafeString(pa(o,i))}),e.registerHelper("eq",function(o,i){return o===i}),e.registerHelper("ne",function(o,i){return o!==i}),e.registerHelper("and",function(o,i){return o&&i}),e.registerHelper("or",function(o,i){return o||i}),e.registerHelper("not",function(o){return !o}),e.registerHelper("contains",function(o,i){return Array.isArray(o)&&o.includes(i)}),e.registerHelper("json",function(o){return JSON.stringify(o,null,2)}),e.registerHelper("truncate",function(o,i){return ei(o,i)}),e.registerHelper("length",function(o){return ti(o)}),e.registerHelper("escapeHandlebars",function(o){return new e.SafeString(ni(o))}),e.registerHelper("formatFileSize",function(o){return ri(o)}),e.registerHelper("formatTimestamp",function(o){return oi(o)});}async render(e,n={}){return this.hbs.compile(e,{noEscape:true})(n)}};u();u();var $r=class{async readFile(e){return promises.readFile(e,"utf-8")}async exists(e){try{return await promises.access(e),!0}catch{return false}}resolvePath(...e){return e.length===1?X.resolve(e[0]):X.resolve(X.join(...e))}isAbsolute(e){return X.isAbsolute(e)}async readdir(e){try{return await promises.readdir(e)}catch{return []}}},$t=new $r;var Bt=class{docs=new Map;fs;constructor(e){this.fs=e??$t;}async load(e,n){if(e)for(let[r,o]of Object.entries(e)){let i=o;if(typeof i=="string")this.docs.set(r,{content:i});else if(i&&typeof i=="object"){let s=i;"content"in s&&typeof s.content=="string"?this.docs.set(r,{content:s.content}):"path"in s&&typeof s.path=="string"?await this.loadFromFile(r,s.path,n):console.warn(`[DocumentLoader] Skipping '${r}': unsupported format`);}else console.warn(`[DocumentLoader] Skipping '${r}': unsupported format`);}}async getContent(e){return this.docs.get(e)?.content}async getToc(e){let n=this.docs.get(e);if(!n)return;let r=[];for(let o of n.content.split(`
60
60
  `)){let i=/^(#{1,6})\s+(.+)$/.exec(o.trim());i&&r.push({depth:i[1].length,text:i[2].trim()});}if(r.length!==0)return r.map(({depth:o,text:i})=>`${" ".repeat(o-1)}- ${i}`).join(`
61
- `)}getPath(e){return this.docs.get(e)?.path}getNames(){return Array.from(this.docs.keys())}async buildContext(){let e={};for(let n of this.docs.keys()){let r=await this.getContent(n)??"",o=await this.getToc(n),i=this.getPath(n);e[n]={content:r,toc:o,...i?{path:i}:{}};}return e}async loadFromFile(e,n,r){try{let o=this.resolve(n,r),i=await this.fs.readFile(o);this.docs.set(e,{content:i,path:o});}catch(o){let i=o instanceof Error?o.message:String(o);console.warn(`[DocumentLoader] Failed to load '${e}' from '${n}': ${i}`);}}resolve(e,n){return this.fs.isAbsolute(e)?e:n?this.fs.resolvePath(n,e):this.fs.resolvePath(e)}};u();u();var ke=class extends Error{constructor(n,r,o){super(n);this.layoutId=r;this.cause=o;this.name="LayoutLoadError";}layoutId;cause},ot=class extends Error{constructor(n,r=[],o){super(n);this.errors=r;this.cause=o;this.name="PropsValidationError";}errors;cause};var pu={validationMode:"lenient",fallbackLayoutId:"crewx/default"},Sn=class{layouts=new Map;options;constructor(e){this.options={...pu,...e,templatesPath:e?.templatesPath??Gt()},this.loadAllLayouts();}load(e,n){let r=this.layouts.get(e);if(!r){let o=this.normalizeLayoutId(e);r=this.layouts.get(o);}if(!r&&(console.warn(`Layout not found: ${e}, falling back to ${this.options.fallbackLayoutId}`),r=this.layouts.get(this.options.fallbackLayoutId),!r))throw new ke(`Fallback layout not found: ${this.options.fallbackLayoutId}`,this.options.fallbackLayoutId);return n&&Object.keys(n).length>0?{...r,defaultProps:{...r.defaultProps,...n}}:r}getLayoutIds(){return Array.from(this.layouts.keys())}hasLayout(e){if(this.layouts.has(e))return true;let n=this.normalizeLayoutId(e);return this.layouts.has(n)}reload(){this.layouts.clear(),this.loadAllLayouts();}registerLayout(e,n){if(!e||typeof e!="string")throw new ke("Layout ID must be a non-empty string",e);let r=typeof n=="string"?{template:n}:n,o=typeof r.template=="string"?r.template:"";if(!o||o.trim().length===0)throw new ke(`Custom layout template is empty for ${e}`,e);let i=r.propsSchema||{},s=this.extractDefaultProps(i),a=r.defaultProps||{},d={id:e,version:r.version||"1.0.0",description:r.description||`Custom layout ${e}`,template:o,propsSchema:this.parsePropsSchema(i),defaultProps:{...s,...a}},c=this.layouts.get(e),l=c?.template===o&&JSON.stringify(c?.defaultProps??{})===JSON.stringify(d.defaultProps??{})&&JSON.stringify(c?.propsSchema??{})===JSON.stringify(d.propsSchema??{});this.layouts.set(e,d),process.env.CREWX_VERBOSE==="1"&&(c?l||console.error(`Updated custom layout: ${e}`):console.error(`Registered custom layout: ${e}`));}registerLayouts(e){for(let[n,r]of Object.entries(e))try{this.registerLayout(n,r);}catch(o){console.warn(`Failed to register custom layout ${n}:`,o instanceof Error?o.message:o);}}loadAllLayouts(){let e=this.options.templatesPath;if(!Ua.existsSync(e))throw new ke(`Templates directory not found: ${e}`,void 0,new Error(`Directory does not exist: ${e}`));try{let n=Ua.readdirSync(e).filter(r=>r.endsWith(".yaml")||r.endsWith(".yml"));n.length===0&&console.warn(`No layout files found in ${e}`);for(let r of n){let o=r.replace(/\.(yaml|yml)$/,""),i=K__namespace.join(e,r);try{let s=this.loadLayoutFile(i,o),a=`crewx/${o}`;this.layouts.set(a,s),a!=="crewx/minimal"&&process.env.CREWX_VERBOSE==="1"&&console.error(`Loaded layout: ${a} from ${r}`);}catch(s){console.error(`Failed to load layout file ${r}:`,s);}}process.env.CREWX_VERBOSE==="1"&&console.error(`Loaded ${this.layouts.size} layouts from ${e}`);}catch(n){throw new ke(`Failed to read layouts directory: ${e}`,void 0,n instanceof Error?n:new Error(String(n)))}}loadLayoutFile(e,n){try{let r=Ua.readFileSync(e,"utf-8");if(!r||r.trim().length===0)throw console.warn(`Empty YAML file: ${e}, will use fallback`),new ke(`Empty YAML file: ${e}`,n,new Error("File content is empty"));let o=jsYaml.load(r);if(!o||typeof o!="object")throw console.warn(`Invalid YAML content in ${e} (parsed as ${typeof o}), will use fallback`),new ke(`Invalid or empty YAML in ${e}`,n,new Error("YAML parsing returned null/undefined or non-object"));if(o.layouts&&typeof o.layouts=="object"){let i=this.resolveLayoutEntry(o.layouts,n);if(!i||i.template.trim().length===0)throw console.warn(`Empty or missing layout template in ${e} for ${n}`),new ke(`Layout template not found or empty in layouts map: ${n}`,n);let s=i.propsSchema||o.propsSchema||{};return {id:`crewx/${n}`,version:o.version||"1.0.0",description:o.description||`CrewX ${n} layout`,template:i.template,propsSchema:this.parsePropsSchema(s),defaultProps:this.extractDefaultProps(s)}}else {if(!o.template||typeof o.template=="string"&&o.template.trim().length===0)throw console.warn(`Empty or missing template field in ${e}`),new ke(`Layout template is missing or empty in ${e}`,n);return {id:o.id||`crewx/${n}`,version:o.version||"1.0.0",description:o.description||"",template:o.template,propsSchema:this.parsePropsSchema(o.propsSchema||{}),defaultProps:this.extractDefaultProps(o.propsSchema||{})}}}catch(r){throw new ke(`Failed to load layout file: ${e}`,n,r instanceof Error?r:new Error(String(r)))}}parsePropsSchema(e){let n={};for(let[r,o]of Object.entries(e))typeof o=="object"&&o!==null&&(n[r]=o);return n}extractDefaultProps(e){let n={};for(let[r,o]of Object.entries(e))o&&typeof o=="object"&&("defaultValue"in o?n[r]=o.defaultValue:"default"in o&&(n[r]=o.default));return n}normalizeLayoutId(e){return e?e.includes("/")?e:`crewx/${e}`:this.options.fallbackLayoutId}resolveLayoutEntry(e,n){let r=new Set;if(n)if(r.add(n),n.includes("/")){let o=n.split("/"),i=o[o.length-1];i&&r.add(i);}else r.add(`crewx/${n}`);r.add("default");for(let o of r){let i=e[o];if(typeof i=="string"&&i.trim().length>0)return {template:i};if(i&&typeof i=="object"&&typeof i.template=="string"&&i.template.trim().length>0)return {template:i.template,propsSchema:i.propsSchema}}for(let o of Object.values(e)){if(typeof o=="string"&&o.trim().length>0)return {template:o};let i=o;if(i&&typeof i=="object"&&typeof i.template=="string"&&i.template.trim().length>0)return {template:i.template,propsSchema:i.propsSchema}}}};u();u();u();function Lt(t){return String(Math.floor(Math.abs(t))).padStart(2,"0")}function On(t){if(!(t instanceof Date)||Number.isNaN(t.getTime()))return "";let e=-t.getTimezoneOffset(),n=e>=0?"+":"-";return `${t.getFullYear()}-${Lt(t.getMonth()+1)}-${Lt(t.getDate())}T${Lt(t.getHours())}:${Lt(t.getMinutes())}:${Lt(t.getSeconds())}${n}${Lt(e/60)}:${Lt(e%60)}`}function fu(t){return t.map(e=>{let n=typeof e?.timestamp=="number"?e.timestamp:null;return n===null?e:{...e,created_at:On(new Date(n))}})}function gu(t){let e=[];for(let n of t)n?.isAssistant&&n?.metadata?.agent_id?e.push(String(n.metadata.agent_id)):!n?.isAssistant&&n?.metadata?.caller_agent_id&&e.push(String(n.metadata.caller_agent_id));return Array.from(new Set(e))}function ua(...t){let e=t[t.length-1],n=t[0],r=t[1],o=typeof t[2]=="string"?t[2]:"",i=typeof t[3]=="string"?t[3]:"";if(!Array.isArray(n)||n.length===0||!(e&&typeof e.fn=="function"))return "";let a=gu(n),d=a.length>0?a[0]:"",c=Date.now(),l={messages:fu(n),platform:typeof r=="string"?r:"",messagesCount:n.length,agentIds:a,primaryAgentId:d,currentAgentId:o,threadId:i,now:On(new Date(c))};return e.fn(l)}u();var Nn=class{defaultMode;constructor(e={}){this.defaultMode=e.defaultMode??"lenient";}validate(e,n,r=this.defaultMode){let o=[],i=this.validateObject(e??{},n,r,["props"],o);if(o.length>0&&r==="strict")throw new ot("Props validation failed in strict mode",o);return {valid:o.length===0,props:i,errors:o}}validateObject(e,n,r,o,i){let s={};if(r==="strict")for(let a of Object.keys(e))n[a]||i.push({path:this.buildPath([...o,a]),message:`Unknown prop '${a}'`,value:e[a]});for(let[a,d]of Object.entries(n)){let c=[...o,a],l=e[a],f=this.resolveProp(l,d,c,r,i);f.shouldAssign&&(s[a]=f.value);}return s}resolveProp(e,n,r,o,i){let s=this.buildPath(r);if(this.isNil(e)){if(n.isRequired&&i.push({path:s,message:`Required prop '${r[r.length-1]}' is missing`}),n.defaultValue!==void 0)return {shouldAssign:true,value:this.cloneValue(n.defaultValue)};if(n.type==="shape"&&n.shape){let d=this.applyDefaults(n.shape);if(Object.keys(d).length>0)return {shouldAssign:true,value:d}}return {shouldAssign:false}}let a=this.validateType(e,n,r,o,i);if(!a.valid){if(n.type==="shape"&&a.value&&this.isPlainObject(a.value))return {shouldAssign:true,value:a.value};if(i.push({path:s,message:a.error??"Invalid value",value:e}),n.defaultValue!==void 0)return {shouldAssign:true,value:this.cloneValue(n.defaultValue)};if(n.type==="shape"&&n.shape){let d=this.applyDefaults(n.shape);if(Object.keys(d).length>0)return {shouldAssign:true,value:d}}return {shouldAssign:false}}return {shouldAssign:true,value:a.value}}validateType(e,n,r,o,i){let{type:s}=n;switch(s){case "string":return this.validateString(e,n);case "number":return this.validateNumber(e,n);case "bool":return this.validateBoolean(e);case "array":return this.validateArray(e,n);case "arrayOf":return this.validateArrayOf(e,n,r,o,i);case "object":return this.validatePlainObject(e);case "shape":return this.validateShape(e,n,r,o,i);case "oneOfType":return this.validateOneOfType(e,n);case "func":return this.validateFunction(e);case "node":return {valid:true,value:e};default:return {valid:true,value:e}}}validateString(e,n){return typeof e!="string"?{valid:false,error:`Expected string, got ${this.describeType(e)}`}:n.oneOf&&!n.oneOf.includes(e)?{valid:false,error:`Expected one of: ${n.oneOf.join(", ")}`}:n.minLength!==void 0&&e.length<n.minLength?{valid:false,error:`String length must be >= ${n.minLength}`}:n.maxLength!==void 0&&e.length>n.maxLength?{valid:false,error:`String length must be <= ${n.maxLength}`}:n.pattern&&!new RegExp(n.pattern).test(e)?{valid:false,error:`String does not match pattern ${n.pattern}`}:{valid:true,value:e}}validateNumber(e,n){return typeof e!="number"||Number.isNaN(e)?{valid:false,error:`Expected number, got ${this.describeType(e)}`}:n.min!==void 0&&e<n.min?{valid:false,error:`Number must be >= ${n.min}`}:n.max!==void 0&&e>n.max?{valid:false,error:`Number must be <= ${n.max}`}:n.oneOf&&!n.oneOf.includes(e)?{valid:false,error:`Expected one of: ${n.oneOf.join(", ")}`}:{valid:true,value:e}}validateBoolean(e){return typeof e!="boolean"?{valid:false,error:`Expected boolean, got ${this.describeType(e)}`}:{valid:true,value:e}}validateArray(e,n){return Array.isArray(e)?n.minLength!==void 0&&e.length<n.minLength?{valid:false,error:`Array length must be >= ${n.minLength}`}:n.maxLength!==void 0&&e.length>n.maxLength?{valid:false,error:`Array length must be <= ${n.maxLength}`}:{valid:true,value:[...e]}:{valid:false,error:`Expected array, got ${this.describeType(e)}`}}validateArrayOf(e,n,r,o,i){let s=this.validateArray(e,n);if(!s.valid)return s;let a=[],d=n.itemType,c=n.itemOneOf,l=i.length;return s.value.forEach((f,g)=>{let m=[...r,String(g)];if(d){let k=this.validateType(f,{type:d},m,o,i);k.valid?a.push(k.value):i.push({path:this.buildPath(m),message:k.error??"Invalid array item",value:f});}else a.push(f);c&&!c.includes(f)&&i.push({path:this.buildPath(m),message:`Array item must be one of: ${c.join(", ")}`,value:f});}),{valid:i.length===l,value:a}}validatePlainObject(e){return this.isPlainObject(e)?{valid:true,value:{...e}}:{valid:false,error:`Expected object, got ${this.describeType(e)}`}}validateFunction(e){return typeof e!="function"?{valid:false,error:`Expected function, got ${this.describeType(e)}`}:{valid:true,value:e}}validateShape(e,n,r,o,i){if(!this.isPlainObject(e))return {valid:false,error:`Expected object, got ${this.describeType(e)}`};let s=i.length,a=this.validateObject(e,n.shape??{},o,r,i);return {valid:i.length===s,value:a}}validateOneOfType(e,n){let r=n.types??[];return r.some(i=>this.matchesType(e,i))?{valid:true,value:e}:{valid:false,error:`Value does not match any allowed type: ${r.join(", ")}`}}matchesType(e,n){switch(n){case "string":return typeof e=="string";case "number":return typeof e=="number"&&!Number.isNaN(e);case "bool":case "boolean":return typeof e=="boolean";case "array":return Array.isArray(e);case "object":return this.isPlainObject(e);case "func":case "function":return typeof e=="function";case "shape":return this.isPlainObject(e);case "node":return e==null||typeof e!="symbol";default:return true}}applyDefaults(e){let n={};for(let[r,o]of Object.entries(e)){if(o.defaultValue!==void 0){n[r]=this.cloneValue(o.defaultValue);continue}if(o.type==="shape"&&o.shape){let i=this.applyDefaults(o.shape);Object.keys(i).length>0&&(n[r]=i);}}return n}cloneValue(e){if(Array.isArray(e))return e.map(n=>this.cloneValue(n));if(this.isPlainObject(e)){let n={};for(let[r,o]of Object.entries(e))n[r]=this.cloneValue(o);return n}return e}isPlainObject(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}isNil(e){return e==null}buildPath(e){return e.join(".")}describeType(e){return Array.isArray(e)?"array":e===null?"null":typeof e}};var Dn=class{handlebars;propsValidator;constructor(e){this.handlebars=ze__namespace.default.create(),this.propsValidator=e??new Nn,this.registerHelpers();}render(e,n,r={}){try{let o=this.prepareRenderContext(e,n,r);return this.handlebars.compile(e.template,{noEscape:!0})(o)}catch(o){throw o instanceof Error?new Error(`Template rendering failed for layout '${e.id}': ${o.message}`):new Error(`Unknown error rendering layout '${e.id}'`)}}validate(e,n,r="lenient"){return this.executeValidation(e,n,r)}resolveProps(e,n,r="lenient"){let o=this.mergeProps(e.defaultProps,n);return !e.propsSchema||Object.keys(e.propsSchema).length===0?{valid:true,props:o,errors:[]}:this.executeValidation(o,e.propsSchema,r)}prepareRenderContext(e,n,r){let{validationMode:o="lenient",skipValidation:i=false}=r,s=i?this.mergeProps(e.defaultProps,n.props):this.resolveProps(e,n.props,o).props;return {...n,vars:this.sanitizeVars(n.vars),props:s}}registerHelpers(){this.handlebars.registerHelper("formatConversation",ua),ze__namespace.default.helpers.each&&this.handlebars.registerHelper("each",ze__namespace.default.helpers.each),ze__namespace.default.helpers.if&&this.handlebars.registerHelper("if",ze__namespace.default.helpers.if),ze__namespace.default.helpers.unless&&this.handlebars.registerHelper("unless",ze__namespace.default.helpers.unless),ze__namespace.default.helpers.with&&this.handlebars.registerHelper("with",ze__namespace.default.helpers.with),this.handlebars.registerHelper("eq",function(e,n){return e===n}),this.handlebars.registerHelper("ne",function(e,n){return e!==n}),this.handlebars.registerHelper("gt",function(e,n){return e>n}),this.handlebars.registerHelper("lt",function(e,n){return e<n}),this.handlebars.registerHelper("json",function(e){return new ze__namespace.default.SafeString(JSON.stringify(e))}),this.handlebars.registerHelper("raw",function(e){return typeof e?.fn=="function"?e.fn(this):""}),this.handlebars.registerHelper("escapeHandlebars",function(e){return typeof e!="string"?"":e.replace(/\{\{/g,"&#123;&#123;").replace(/\}\}/g,"&#125;&#125;")}),this.handlebars.registerHelper("formatFileSize",function(e){if(e===0)return "0 B";let n=["B","KB","MB","GB"],r=Math.floor(Math.log(e)/Math.log(1024));return Math.round(e/Math.pow(1024,r)*100)/100+" "+n[r]});}executeValidation(e,n,r){try{return this.propsValidator.validate(e,n,r)}catch(o){if(o instanceof ot&&o.errors&&o.errors.length>0){let i=o.errors[0];if(i)throw new ot(i.message,o.errors)}throw o}}mergeProps(e,n){let r=this.cloneDeep(e??{});return n?this.deepMerge(r,n):r}deepMerge(e,n){for(let[r,o]of Object.entries(n)){if(this.isPlainObject(o)){let i=e[r];e[r]=this.deepMerge(this.isPlainObject(i)?i:{},o);continue}if(Array.isArray(o)){e[r]=this.cloneDeep(o);continue}e[r]=o;}return e}cloneDeep(e){if(Array.isArray(e))return e.map(n=>this.cloneDeep(n));if(this.isPlainObject(e)){let n={};for(let[r,o]of Object.entries(e))n[r]=this.cloneDeep(o);return n}return e}isPlainObject(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}sanitizeVars(e){if(!e)return {};let n={...e};if(typeof e.user_input=="string"){n.user_input_raw=e.user_input;let r=e.user_input.replace(/\{\{\{/g,"&#123;&#123;&#123;").replace(/\}\}\}/g,"&#125;&#125;&#125;").replace(/\{\{/g,"&#123;&#123;").replace(/\}\}/g,"&#125;&#125;");n.user_input=this.handlebars.escapeExpression(r);}return n}};u();var ni="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";function mu(t){let e=crypto$1.randomBytes(t*2),n="";for(let r=0;r<e.length&&n.length<t;r++){let o=e[r];o<248&&(n+=ni[o%62]);}for(;n.length<t;)n+=ni[crypto$1.randomBytes(1)[0]%62];return n}function it(t){return `${t}_${mu(8)}`}function hu(t,e){let{createHash:n}=ge("crypto"),r=n("sha256").update(e).digest(),o=Buffer.alloc(8);for(let s=0;s<32;s++)o[s%8]^=r[s];let i="";for(let s of o)i+=ni[s%62];return `${t}_${i}`}u();function fa(t,e){return n=>{try{let r=e(n);r instanceof Promise&&r.catch(o=>{console.error(`[crewx] event listener error (${t}): ${o instanceof Error?o.message:String(o)}`);});}catch(r){console.error(`[crewx] event listener error (${t}): ${r instanceof Error?r.message:String(r)}`);}}}var Mn=class{_emitter=new events.EventEmitter;on(e,n){let r=fa(e,n);return this._emitter.on(e,r),()=>this._emitter.off(e,r)}once(e,n){let r=fa(e,n);return this._emitter.once(e,r),()=>this._emitter.off(e,r)}emit(e,n){this._emitter.emit(e,n);}};u();function ri(t){let e=new Map,n=r=>r.startsWith(`${t}::`)?r:`${t}::${r}`;return {async get(r){let o=e.get(n(r));return o?o.value:void 0},async set(r,o){e.set(n(r),{value:o});},async delete(r){return e.delete(n(r))},async list(r){let o=r?n(r):`${t}::`,i=[];for(let s of e.keys())s.startsWith(o)&&i.push(s.slice(t.length+2));return i}}}u();var oi=new async_hooks.AsyncLocalStorage;function _u(){return oi}function ku(t,e){return oi.run(t,e)}function ii(t){let e=t.log??t.logger??{debug:()=>{},info:()=>{},warn:()=>{},error:()=>{}},n=t.agentRunner??{run:async()=>({output:""})},r=t.db??{get:async()=>{},set:async()=>{},delete:async()=>false,list:async()=>[]},o=t.storage??{put:async()=>"",get:async()=>{},delete:async()=>false},i=t.audit??{log:async()=>{}},s=t.onInbound??(async()=>({accepted:true})),a=t.onEmitEvent??(async()=>({accepted:true})),d=t.onUpdateMessage??(async()=>{}),c=t.onResolveUser??(async g=>({userId:g,displayName:g})),l=async g=>{let m=oi.getStore();if(!m){e.warn("respondSync called outside sync window \u2014 graceful degradation (no-op)",{textPreview:typeof g=="object"&&"text"in g?g.text.slice(0,80):void 0});return}let k="text"in g?g.text:"";m.res.status(200).json({text:k});},f=t.httpRouter??{registerRoute:()=>{e.warn("httpRouter not configured \u2014 registerRoute is a no-op");}};return {instanceId:t.instanceId,config:t.config,capabilities:t.capabilities,log:e,agentRunner:n,db:r,storage:o,audit:i,abortSignal:t.abortSignal??new AbortController().signal,httpRouter:f,inbound:s,emitEvent:a,updateMessage:d,resolveUser:c,respondSync:l}}ft();u();var vu=/^-\s*Status:\s*active/m,Eu=/^---\n([\s\S]*?)\n---/,xu=/^type:\s*goal\s*$/m;async function ga(t,e=Mt,n){let r=typeof n=="string"?[n]:Array.isArray(n)?n:void 0;if(r){let a=[];for(let d of r){let c=e.resolvePath(t,d);await e.exists(c)&&a.push(await e.readFile(c));}return a.join(`
61
+ `)}getPath(e){return this.docs.get(e)?.path}getNames(){return Array.from(this.docs.keys())}async buildContext(){let e={};for(let n of this.docs.keys()){let r=await this.getContent(n)??"",o=await this.getToc(n),i=this.getPath(n);e[n]={content:r,toc:o,...i?{path:i}:{}};}return e}async loadFromFile(e,n,r){try{let o=this.resolve(n,r),i=await this.fs.readFile(o);this.docs.set(e,{content:i,path:o});}catch(o){let i=o instanceof Error?o.message:String(o);console.warn(`[DocumentLoader] Failed to load '${e}' from '${n}': ${i}`);}}resolve(e,n){return this.fs.isAbsolute(e)?e:n?this.fs.resolvePath(n,e):this.fs.resolvePath(e)}};u();u();var ve=class extends Error{constructor(n,r,o){super(n);this.layoutId=r;this.cause=o;this.name="LayoutLoadError";}layoutId;cause},dt=class extends Error{constructor(n,r=[],o){super(n);this.errors=r;this.cause=o;this.name="PropsValidationError";}errors;cause};var wu={validationMode:"lenient",fallbackLayoutId:"crewx/default"},Nn=class{layouts=new Map;options;constructor(e){this.options={...wu,...e,templatesPath:e?.templatesPath??Kt()},this.loadAllLayouts();}load(e,n){let r=this.layouts.get(e);if(!r){let o=this.normalizeLayoutId(e);r=this.layouts.get(o);}if(!r&&(console.warn(`Layout not found: ${e}, falling back to ${this.options.fallbackLayoutId}`),r=this.layouts.get(this.options.fallbackLayoutId),!r))throw new ve(`Fallback layout not found: ${this.options.fallbackLayoutId}`,this.options.fallbackLayoutId);return n&&Object.keys(n).length>0?{...r,defaultProps:{...r.defaultProps,...n}}:r}getLayoutIds(){return Array.from(this.layouts.keys())}hasLayout(e){if(this.layouts.has(e))return true;let n=this.normalizeLayoutId(e);return this.layouts.has(n)}reload(){this.layouts.clear(),this.loadAllLayouts();}registerLayout(e,n){if(!e||typeof e!="string")throw new ve("Layout ID must be a non-empty string",e);let r=typeof n=="string"?{template:n}:n,o=typeof r.template=="string"?r.template:"";if(!o||o.trim().length===0)throw new ve(`Custom layout template is empty for ${e}`,e);let i=r.propsSchema||{},s=this.extractDefaultProps(i),a=r.defaultProps||{},d={id:e,version:r.version||"1.0.0",description:r.description||`Custom layout ${e}`,template:o,propsSchema:this.parsePropsSchema(i),defaultProps:{...s,...a}},c=this.layouts.get(e),l=c?.template===o&&JSON.stringify(c?.defaultProps??{})===JSON.stringify(d.defaultProps??{})&&JSON.stringify(c?.propsSchema??{})===JSON.stringify(d.propsSchema??{});this.layouts.set(e,d),process.env.CREWX_VERBOSE==="1"&&(c?l||console.error(`Updated custom layout: ${e}`):console.error(`Registered custom layout: ${e}`));}registerLayouts(e){for(let[n,r]of Object.entries(e))try{this.registerLayout(n,r);}catch(o){console.warn(`Failed to register custom layout ${n}:`,o instanceof Error?o.message:o);}}loadAllLayouts(){let e=this.options.templatesPath;if(!Wa.existsSync(e))throw new ve(`Templates directory not found: ${e}`,void 0,new Error(`Directory does not exist: ${e}`));try{let n=Wa.readdirSync(e).filter(r=>r.endsWith(".yaml")||r.endsWith(".yml"));n.length===0&&console.warn(`No layout files found in ${e}`);for(let r of n){let o=r.replace(/\.(yaml|yml)$/,""),i=X__namespace.join(e,r);try{let s=this.loadLayoutFile(i,o),a=`crewx/${o}`;this.layouts.set(a,s),a!=="crewx/minimal"&&process.env.CREWX_VERBOSE==="1"&&console.error(`Loaded layout: ${a} from ${r}`);}catch(s){console.error(`Failed to load layout file ${r}:`,s);}}process.env.CREWX_VERBOSE==="1"&&console.error(`Loaded ${this.layouts.size} layouts from ${e}`);}catch(n){throw new ve(`Failed to read layouts directory: ${e}`,void 0,n instanceof Error?n:new Error(String(n)))}}loadLayoutFile(e,n){try{let r=Wa.readFileSync(e,"utf-8");if(!r||r.trim().length===0)throw console.warn(`Empty YAML file: ${e}, will use fallback`),new ve(`Empty YAML file: ${e}`,n,new Error("File content is empty"));let o=jsYaml.load(r);if(!o||typeof o!="object")throw console.warn(`Invalid YAML content in ${e} (parsed as ${typeof o}), will use fallback`),new ve(`Invalid or empty YAML in ${e}`,n,new Error("YAML parsing returned null/undefined or non-object"));if(o.layouts&&typeof o.layouts=="object"){let i=this.resolveLayoutEntry(o.layouts,n);if(!i||i.template.trim().length===0)throw console.warn(`Empty or missing layout template in ${e} for ${n}`),new ve(`Layout template not found or empty in layouts map: ${n}`,n);let s=i.propsSchema||o.propsSchema||{};return {id:`crewx/${n}`,version:o.version||"1.0.0",description:o.description||`CrewX ${n} layout`,template:i.template,propsSchema:this.parsePropsSchema(s),defaultProps:this.extractDefaultProps(s)}}else {if(!o.template||typeof o.template=="string"&&o.template.trim().length===0)throw console.warn(`Empty or missing template field in ${e}`),new ve(`Layout template is missing or empty in ${e}`,n);return {id:o.id||`crewx/${n}`,version:o.version||"1.0.0",description:o.description||"",template:o.template,propsSchema:this.parsePropsSchema(o.propsSchema||{}),defaultProps:this.extractDefaultProps(o.propsSchema||{})}}}catch(r){throw new ve(`Failed to load layout file: ${e}`,n,r instanceof Error?r:new Error(String(r)))}}parsePropsSchema(e){let n={};for(let[r,o]of Object.entries(e))typeof o=="object"&&o!==null&&(n[r]=o);return n}extractDefaultProps(e){let n={};for(let[r,o]of Object.entries(e))o&&typeof o=="object"&&("defaultValue"in o?n[r]=o.defaultValue:"default"in o&&(n[r]=o.default));return n}normalizeLayoutId(e){return e?e.includes("/")?e:`crewx/${e}`:this.options.fallbackLayoutId}resolveLayoutEntry(e,n){let r=new Set;if(n)if(r.add(n),n.includes("/")){let o=n.split("/"),i=o[o.length-1];i&&r.add(i);}else r.add(`crewx/${n}`);r.add("default");for(let o of r){let i=e[o];if(typeof i=="string"&&i.trim().length>0)return {template:i};if(i&&typeof i=="object"&&typeof i.template=="string"&&i.template.trim().length>0)return {template:i.template,propsSchema:i.propsSchema}}for(let o of Object.values(e)){if(typeof o=="string"&&o.trim().length>0)return {template:o};let i=o;if(i&&typeof i=="object"&&typeof i.template=="string"&&i.template.trim().length>0)return {template:i.template,propsSchema:i.propsSchema}}}};u();u();u();function Ft(t){return String(Math.floor(Math.abs(t))).padStart(2,"0")}function Mn(t){if(!(t instanceof Date)||Number.isNaN(t.getTime()))return "";let e=-t.getTimezoneOffset(),n=e>=0?"+":"-";return `${t.getFullYear()}-${Ft(t.getMonth()+1)}-${Ft(t.getDate())}T${Ft(t.getHours())}:${Ft(t.getMinutes())}:${Ft(t.getSeconds())}${n}${Ft(e/60)}:${Ft(e%60)}`}function ku(t){return t.map(e=>{let n=typeof e?.timestamp=="number"?e.timestamp:null;return n===null?e:{...e,created_at:Mn(new Date(n))}})}function vu(t){let e=[];for(let n of t)n?.isAssistant&&n?.metadata?.agent_id?e.push(String(n.metadata.agent_id)):!n?.isAssistant&&n?.metadata?.caller_agent_id&&e.push(String(n.metadata.caller_agent_id));return Array.from(new Set(e))}function ya(...t){let e=t[t.length-1],n=t[0],r=t[1],o=typeof t[2]=="string"?t[2]:"",i=typeof t[3]=="string"?t[3]:"";if(!Array.isArray(n)||n.length===0||!(e&&typeof e.fn=="function"))return "";let a=vu(n),d=a.length>0?a[0]:"",c=Date.now(),l={messages:ku(n),platform:typeof r=="string"?r:"",messagesCount:n.length,agentIds:a,primaryAgentId:d,currentAgentId:o,threadId:i,now:Mn(new Date(c))};return e.fn(l)}u();var Un=class{defaultMode;constructor(e={}){this.defaultMode=e.defaultMode??"lenient";}validate(e,n,r=this.defaultMode){let o=[],i=this.validateObject(e??{},n,r,["props"],o);if(o.length>0&&r==="strict")throw new dt("Props validation failed in strict mode",o);return {valid:o.length===0,props:i,errors:o}}validateObject(e,n,r,o,i){let s={};if(r==="strict")for(let a of Object.keys(e))n[a]||i.push({path:this.buildPath([...o,a]),message:`Unknown prop '${a}'`,value:e[a]});for(let[a,d]of Object.entries(n)){let c=[...o,a],l=e[a],f=this.resolveProp(l,d,c,r,i);f.shouldAssign&&(s[a]=f.value);}return s}resolveProp(e,n,r,o,i){let s=this.buildPath(r);if(this.isNil(e)){if(n.isRequired&&i.push({path:s,message:`Required prop '${r[r.length-1]}' is missing`}),n.defaultValue!==void 0)return {shouldAssign:true,value:this.cloneValue(n.defaultValue)};if(n.type==="shape"&&n.shape){let d=this.applyDefaults(n.shape);if(Object.keys(d).length>0)return {shouldAssign:true,value:d}}return {shouldAssign:false}}let a=this.validateType(e,n,r,o,i);if(!a.valid){if(n.type==="shape"&&a.value&&this.isPlainObject(a.value))return {shouldAssign:true,value:a.value};if(i.push({path:s,message:a.error??"Invalid value",value:e}),n.defaultValue!==void 0)return {shouldAssign:true,value:this.cloneValue(n.defaultValue)};if(n.type==="shape"&&n.shape){let d=this.applyDefaults(n.shape);if(Object.keys(d).length>0)return {shouldAssign:true,value:d}}return {shouldAssign:false}}return {shouldAssign:true,value:a.value}}validateType(e,n,r,o,i){let{type:s}=n;switch(s){case "string":return this.validateString(e,n);case "number":return this.validateNumber(e,n);case "bool":return this.validateBoolean(e);case "array":return this.validateArray(e,n);case "arrayOf":return this.validateArrayOf(e,n,r,o,i);case "object":return this.validatePlainObject(e);case "shape":return this.validateShape(e,n,r,o,i);case "oneOfType":return this.validateOneOfType(e,n);case "func":return this.validateFunction(e);case "node":return {valid:true,value:e};default:return {valid:true,value:e}}}validateString(e,n){return typeof e!="string"?{valid:false,error:`Expected string, got ${this.describeType(e)}`}:n.oneOf&&!n.oneOf.includes(e)?{valid:false,error:`Expected one of: ${n.oneOf.join(", ")}`}:n.minLength!==void 0&&e.length<n.minLength?{valid:false,error:`String length must be >= ${n.minLength}`}:n.maxLength!==void 0&&e.length>n.maxLength?{valid:false,error:`String length must be <= ${n.maxLength}`}:n.pattern&&!new RegExp(n.pattern).test(e)?{valid:false,error:`String does not match pattern ${n.pattern}`}:{valid:true,value:e}}validateNumber(e,n){return typeof e!="number"||Number.isNaN(e)?{valid:false,error:`Expected number, got ${this.describeType(e)}`}:n.min!==void 0&&e<n.min?{valid:false,error:`Number must be >= ${n.min}`}:n.max!==void 0&&e>n.max?{valid:false,error:`Number must be <= ${n.max}`}:n.oneOf&&!n.oneOf.includes(e)?{valid:false,error:`Expected one of: ${n.oneOf.join(", ")}`}:{valid:true,value:e}}validateBoolean(e){return typeof e!="boolean"?{valid:false,error:`Expected boolean, got ${this.describeType(e)}`}:{valid:true,value:e}}validateArray(e,n){return Array.isArray(e)?n.minLength!==void 0&&e.length<n.minLength?{valid:false,error:`Array length must be >= ${n.minLength}`}:n.maxLength!==void 0&&e.length>n.maxLength?{valid:false,error:`Array length must be <= ${n.maxLength}`}:{valid:true,value:[...e]}:{valid:false,error:`Expected array, got ${this.describeType(e)}`}}validateArrayOf(e,n,r,o,i){let s=this.validateArray(e,n);if(!s.valid)return s;let a=[],d=n.itemType,c=n.itemOneOf,l=i.length;return s.value.forEach((f,g)=>{let m=[...r,String(g)];if(d){let k=this.validateType(f,{type:d},m,o,i);k.valid?a.push(k.value):i.push({path:this.buildPath(m),message:k.error??"Invalid array item",value:f});}else a.push(f);c&&!c.includes(f)&&i.push({path:this.buildPath(m),message:`Array item must be one of: ${c.join(", ")}`,value:f});}),{valid:i.length===l,value:a}}validatePlainObject(e){return this.isPlainObject(e)?{valid:true,value:{...e}}:{valid:false,error:`Expected object, got ${this.describeType(e)}`}}validateFunction(e){return typeof e!="function"?{valid:false,error:`Expected function, got ${this.describeType(e)}`}:{valid:true,value:e}}validateShape(e,n,r,o,i){if(!this.isPlainObject(e))return {valid:false,error:`Expected object, got ${this.describeType(e)}`};let s=i.length,a=this.validateObject(e,n.shape??{},o,r,i);return {valid:i.length===s,value:a}}validateOneOfType(e,n){let r=n.types??[];return r.some(i=>this.matchesType(e,i))?{valid:true,value:e}:{valid:false,error:`Value does not match any allowed type: ${r.join(", ")}`}}matchesType(e,n){switch(n){case "string":return typeof e=="string";case "number":return typeof e=="number"&&!Number.isNaN(e);case "bool":case "boolean":return typeof e=="boolean";case "array":return Array.isArray(e);case "object":return this.isPlainObject(e);case "func":case "function":return typeof e=="function";case "shape":return this.isPlainObject(e);case "node":return e==null||typeof e!="symbol";default:return true}}applyDefaults(e){let n={};for(let[r,o]of Object.entries(e)){if(o.defaultValue!==void 0){n[r]=this.cloneValue(o.defaultValue);continue}if(o.type==="shape"&&o.shape){let i=this.applyDefaults(o.shape);Object.keys(i).length>0&&(n[r]=i);}}return n}cloneValue(e){if(Array.isArray(e))return e.map(n=>this.cloneValue(n));if(this.isPlainObject(e)){let n={};for(let[r,o]of Object.entries(e))n[r]=this.cloneValue(o);return n}return e}isPlainObject(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}isNil(e){return e==null}buildPath(e){return e.join(".")}describeType(e){return Array.isArray(e)?"array":e===null?"null":typeof e}};var Ln=class{handlebars;propsValidator;constructor(e){this.handlebars=Ge__namespace.default.create(),this.propsValidator=e??new Un,this.registerHelpers();}render(e,n,r={}){try{let o=this.prepareRenderContext(e,n,r);return this.handlebars.compile(e.template,{noEscape:!0})(o)}catch(o){throw o instanceof Error?new Error(`Template rendering failed for layout '${e.id}': ${o.message}`):new Error(`Unknown error rendering layout '${e.id}'`)}}validate(e,n,r="lenient"){return this.executeValidation(e,n,r)}resolveProps(e,n,r="lenient"){let o=this.mergeProps(e.defaultProps,n);return !e.propsSchema||Object.keys(e.propsSchema).length===0?{valid:true,props:o,errors:[]}:this.executeValidation(o,e.propsSchema,r)}prepareRenderContext(e,n,r){let{validationMode:o="lenient",skipValidation:i=false}=r,s=i?this.mergeProps(e.defaultProps,n.props):this.resolveProps(e,n.props,o).props;return {...n,vars:this.sanitizeVars(n.vars),props:s}}registerHelpers(){this.handlebars.registerHelper("formatConversation",ya),Ge__namespace.default.helpers.each&&this.handlebars.registerHelper("each",Ge__namespace.default.helpers.each),Ge__namespace.default.helpers.if&&this.handlebars.registerHelper("if",Ge__namespace.default.helpers.if),Ge__namespace.default.helpers.unless&&this.handlebars.registerHelper("unless",Ge__namespace.default.helpers.unless),Ge__namespace.default.helpers.with&&this.handlebars.registerHelper("with",Ge__namespace.default.helpers.with),this.handlebars.registerHelper("eq",function(e,n){return e===n}),this.handlebars.registerHelper("ne",function(e,n){return e!==n}),this.handlebars.registerHelper("gt",function(e,n){return e>n}),this.handlebars.registerHelper("lt",function(e,n){return e<n}),this.handlebars.registerHelper("json",function(e){return new Ge__namespace.default.SafeString(JSON.stringify(e))}),this.handlebars.registerHelper("raw",function(e){return typeof e?.fn=="function"?e.fn(this):""}),this.handlebars.registerHelper("escapeHandlebars",function(e){return typeof e!="string"?"":e.replace(/\{\{/g,"&#123;&#123;").replace(/\}\}/g,"&#125;&#125;")}),this.handlebars.registerHelper("formatFileSize",function(e){if(e===0)return "0 B";let n=["B","KB","MB","GB"],r=Math.floor(Math.log(e)/Math.log(1024));return Math.round(e/Math.pow(1024,r)*100)/100+" "+n[r]});}executeValidation(e,n,r){try{return this.propsValidator.validate(e,n,r)}catch(o){if(o instanceof dt&&o.errors&&o.errors.length>0){let i=o.errors[0];if(i)throw new dt(i.message,o.errors)}throw o}}mergeProps(e,n){let r=this.cloneDeep(e??{});return n?this.deepMerge(r,n):r}deepMerge(e,n){for(let[r,o]of Object.entries(n)){if(this.isPlainObject(o)){let i=e[r];e[r]=this.deepMerge(this.isPlainObject(i)?i:{},o);continue}if(Array.isArray(o)){e[r]=this.cloneDeep(o);continue}e[r]=o;}return e}cloneDeep(e){if(Array.isArray(e))return e.map(n=>this.cloneDeep(n));if(this.isPlainObject(e)){let n={};for(let[r,o]of Object.entries(e))n[r]=this.cloneDeep(o);return n}return e}isPlainObject(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}sanitizeVars(e){if(!e)return {};let n={...e};if(typeof e.user_input=="string"){n.user_input_raw=e.user_input;let r=e.user_input.replace(/\{\{\{/g,"&#123;&#123;&#123;").replace(/\}\}\}/g,"&#125;&#125;&#125;").replace(/\{\{/g,"&#123;&#123;").replace(/\}\}/g,"&#125;&#125;");n.user_input=this.handlebars.escapeExpression(r);}return n}};u();var ii="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";function Eu(t){let e=crypto$1.randomBytes(t*2),n="";for(let r=0;r<e.length&&n.length<t;r++){let o=e[r];o<248&&(n+=ii[o%62]);}for(;n.length<t;)n+=ii[crypto$1.randomBytes(1)[0]%62];return n}function Ve(t){return `${t}_${Eu(8)}`}function Ru(t,e){let{createHash:n}=he("crypto"),r=n("sha256").update(e).digest(),o=Buffer.alloc(8);for(let s=0;s<32;s++)o[s%8]^=r[s];let i="";for(let s of o)i+=ii[s%62];return `${t}_${i}`}u();function wa(t,e){return n=>{try{let r=e(n);r instanceof Promise&&r.catch(o=>{console.error(`[crewx] event listener error (${t}): ${o instanceof Error?o.message:String(o)}`);});}catch(r){console.error(`[crewx] event listener error (${t}): ${r instanceof Error?r.message:String(r)}`);}}}var jn=class{_emitter=new events.EventEmitter;on(e,n){let r=wa(e,n);return this._emitter.on(e,r),()=>this._emitter.off(e,r)}once(e,n){let r=wa(e,n);return this._emitter.once(e,r),()=>this._emitter.off(e,r)}emit(e,n){this._emitter.emit(e,n);}};u();function si(t){let e=new Map,n=r=>r.startsWith(`${t}::`)?r:`${t}::${r}`;return {async get(r){let o=e.get(n(r));return o?o.value:void 0},async set(r,o){e.set(n(r),{value:o});},async delete(r){return e.delete(n(r))},async list(r){let o=r?n(r):`${t}::`,i=[];for(let s of e.keys())s.startsWith(o)&&i.push(s.slice(t.length+2));return i}}}u();var ai=new async_hooks.AsyncLocalStorage;function Tu(){return ai}function Au(t,e){return ai.run(t,e)}function di(t){let e=t.log??t.logger??{debug:()=>{},info:()=>{},warn:()=>{},error:()=>{}},n=t.agentRunner??{run:async()=>({output:""})},r=t.db??{get:async()=>{},set:async()=>{},delete:async()=>false,list:async()=>[]},o=t.storage??{put:async()=>"",get:async()=>{},delete:async()=>false},i=t.audit??{log:async()=>{}},s=t.onInbound??(async()=>({accepted:true})),a=t.onEmitEvent??(async()=>({accepted:true})),d=t.onUpdateMessage??(async()=>{}),c=t.onResolveUser??(async g=>({userId:g,displayName:g})),l=async g=>{let m=ai.getStore();if(!m){e.warn("respondSync called outside sync window \u2014 graceful degradation (no-op)",{textPreview:typeof g=="object"&&"text"in g?g.text.slice(0,80):void 0});return}let k="text"in g?g.text:"";m.res.status(200).json({text:k});},f=t.httpRouter??{registerRoute:()=>{e.warn("httpRouter not configured \u2014 registerRoute is a no-op");}};return {instanceId:t.instanceId,config:t.config,capabilities:t.capabilities,log:e,agentRunner:n,db:r,storage:o,audit:i,abortSignal:t.abortSignal??new AbortController().signal,httpRouter:f,inbound:s,emitEvent:a,updateMessage:d,resolveUser:c,respondSync:l}}ht();u();var Iu=/^-\s*Status:\s*active/m,Pu=/^---\n([\s\S]*?)\n---/,Cu=/^type:\s*goal\s*$/m;async function ka(t,e=$t,n){let r=typeof n=="string"?[n]:Array.isArray(n)?n:void 0;if(r){let a=[];for(let d of r){let c=e.resolvePath(t,d);await e.exists(c)&&a.push(await e.readFile(c));}return a.join(`
62
62
  ---
63
- `)}let i=(await e.readdir(t)).filter(a=>a.endsWith(".md"));if(i.length===0)return "";let s=[];for(let a of i){let d=e.resolvePath(t,a),c=await e.readFile(d),l=Eu.exec(c);!l||!xu.test(l[1])||vu.test(c)&&s.push(c);}return s.join(`
63
+ `)}let i=(await e.readdir(t)).filter(a=>a.endsWith(".md"));if(i.length===0)return "";let s=[];for(let a of i){let d=e.resolvePath(t,a),c=await e.readFile(d),l=Pu.exec(c);!l||!Cu.test(l[1])||Iu.test(c)&&s.push(c);}return s.join(`
64
64
  ---
65
- `)}u();function Ru(){let t=new Date,e=t.getFullYear(),n=String(t.getMonth()+1).padStart(2,"0"),r=String(t.getDate()).padStart(2,"0");return `${e}-${n}-${r}`}async function ma(t,e=Mt){let n=e.resolvePath(t,`${Ru()}.md`);return await e.exists(n)?e.readFile(n):""}u();Jt();ft();function si(t){if(t.startsWith("cli/"))return exports.BUILTIN_ADAPTERS[t.slice(4)]}function Tu(t,e={}){if(!t.startsWith("cli/"))return true;let r=(e.lookupAdapter??si)(t);if(!r?.command)return false;let o=vn(r.command,{env:e.env});return K__namespace.default.isAbsolute(o)}function ha(t,e={}){if(!Array.isArray(t))return t;if(t.length===0)return "cli/claude";for(let n of t)if(Tu(n,e))return n;return t[0]}u();var Un=new async_hooks.AsyncLocalStorage;function ai(t){if(t)return {parentTaskId:t.parentTaskId??null,rootTraceId:t.rootTraceId,callerAgentId:t.callerAgentId??null}}u();u();var Lr="<crewx_card";function Ln(t){return t===" "||t===" "||t===`
66
- `||t==="\r"||t==="\f"}function Iu(t){if(!t)return false;let e=t.charCodeAt(0);return e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||t==="_"||t===":"||t==="-"}function Pu(t){return t===void 0||Ln(t)||t==="/"||t===">"}function ya(t,e){let n=t[e],r=e+1;for(;r<t.length;){if(t[r]===n)return {end:r+1,value:t.slice(e+1,r)};r++;}return {end:t.length,value:t.slice(e+1)}}function Cu(t,e){if(t[e]==='"'||t[e]==="'")return ya(t,e);let n=e;for(;n<t.length&&!Ln(t[n])&&t[n]!==">";)n++;return {end:n,value:t.slice(e,n)}}function Su(t,e){let n=Object.create(null),r=e+Lr.length,o=false;for(;r<t.length;){let i=t[r];if(i===">")return {end:r+1,closed:true,attrs:n,privileged:o};if(Ln(i)||i==="/"){r++;continue}if(i==='"'||i==="'"){r=ya(t,r).end;continue}let s=r;for(;r<t.length&&Iu(t[r]);)r++;if(r===s){r++;continue}let a=t.slice(s,r);for(a==="proof"&&(o=true);r<t.length&&Ln(t[r]);)r++;if(t[r]!=="="){n[a]="";continue}for(r++;r<t.length&&Ln(t[r]);)r++;let d=Cu(t,r);n[a]=d.value,r=d.end;}return {end:t.length,closed:false,attrs:n,privileged:o}}function di(t,e){let n=Su(t,e);return {start:e,end:n.end,raw:t.slice(e,n.end),closed:n.closed,attrs:n.attrs,privileged:n.privileged}}function $n(t){let e=[],n=0;for(;n<t.length;){let r=t.indexOf(Lr,n);if(r<0)break;if(!Pu(t[r+Lr.length])){n=r+Lr.length;continue}let o=di(t,r);if(e.push(o),!o.closed)break;n=o.end;}return e}function wa(t){return t&&$n(t).find(r=>!!r.attrs.run_id?.trim())?.attrs.run_id?.trim()||void 0}u();u();var x=class extends Error{constructor(n,r=n,o){super(r);this.code=n;this.currentRevision=o;}code;currentRevision;name="UiRuntimeError"},ve=class extends Error{constructor(n){super("UI instance database operation will be retried");this.cause=n;}cause;name="UiRetryableDatabaseError"},Ae=class extends Error{constructor(n){super("UI instance revision reservation conflict");this.currentRevision=n;}currentRevision;name="UiReservationConflictError"};var Ou=/(?:proof|token|secret|password|cookie|authorization|private[_-]?key|stack|exception|plugin[_-]?text)/i,Nu=/(?:url|uri|endpoint|path|file(?:name|path)?|cwd|directory|dir|folder)$/i,Du=/<\/?[A-Za-z][^>]*>/,Mu=/^(?:[A-Za-z]:[\\/]|\\\\|~[\\/]|\/)/,Uu=/^(?:https?|file|ftp|ws|wss):\/\//i;function Ge(){throw new x("INPUT_INVALID","JSON value is not projection-safe")}function Lu(t){let e=Object.getPrototypeOf(t);return e===Object.prototype||e===null}function ci(t,e,n,r){if(e>8&&Ge(),t===null||typeof t=="string"||typeof t=="boolean")return typeof t=="string"&&(Du.test(t)||Uu.test(t)||Mu.test(t))&&Ge(),t;if(typeof t=="number")return Number.isFinite(t)||Ge(),t;(typeof t!="object"||t===void 0||typeof t=="function"||typeof t=="bigint")&&Ge();let o=t;n.has(o)&&Ge(),n.add(o);try{if(Array.isArray(t))return t.map(s=>ci(s,e+1,n));Lu(o)||Ge();let i={};for(let[s,a]of Object.entries(t))(Ou.test(s)||Nu.test(s))&&Ge(),i[s]=ci(a,e+1,n,s);return i}finally{n.delete(o);}}function oe(t){let e=ci(t,0,new Set);return (e===null||Array.isArray(e)||typeof e!="object")&&Ge(),e}function me(t){try{let e=JSON.stringify(t);return e===void 0&&Ge(),e}catch{Ge();}}function li(t){return Array.isArray(t)?t.map(li):t!==null&&typeof t=="object"?Object.fromEntries(Object.keys(t).sort().map(e=>[e,li(t[e])])):t}function _a(t){return me(li(t))}function Bn(t){return Buffer.byteLength(t,"utf8")}var ka="[workflow card omitted from AI context]",$u="[workflow UI instance omitted from AI context]",Bu=/\{\s*"instanceId"\s*:\s*"uic_[A-Za-z0-9_-]+"\s*\}/g;function $r(t){return typeof t=="string"?t.replace(Bu,$u):""}function Br(t){if(typeof t!="string"||t.length===0)return "";let e="",n=0;for(let r of $n(t))if(e+=t.slice(n,r.start),e+=r.privileged?ka:r.raw,n=r.end,!r.closed)break;return e+=t.slice(n),e}function ju(t){return t.replace(/</g,"&lt;").replace(/>/g,"&gt;")}function Fu(t,e){if(typeof t!="string")return "";let n=e?Br(t):t,r=e?$r(n):n;return ju(r)}function ui(t){return t.map(e=>({...e,text:Fu(e.text,e.isAssistant)}))}function tn(t,e){let n=ui(t);if(!e||e.length===0)return n;let r=[];for(let o of e)try{if(Object.keys(o).sort().join(",")!=="availableActions,definition,facts,instanceId,pendingDecision,recentChanges,revision"||!/^uic_[A-Za-z0-9_-]+$/.test(o.instanceId))continue;let s=oe(o),a=JSON.stringify(s);if(typeof a!="string"||Bn(a)>64*1024)continue;r.push(s);}catch{}return r.length===0?n:[...n,{text:`CrewX workflow context:
67
- ${JSON.stringify(r)}`,isAssistant:true}]}function pi(t){return ui(t.messages.map(e=>({text:e.text,isAssistant:e.isAssistant,timestamp:e.timestamp,metadata:e.metadata,files:void 0})))}u();ft();gt();u();u();var le=class{resolveDbPath(){return process.env.CREWX_DB?process.env.CREWX_DB:process.env.CREWX_TRACES_DB?process.env.CREWX_TRACES_DB:K.join(Ri__namespace.default.homedir(),".crewx","crewx.db")}resolveDbPaths(){return [this.resolveDbPath()]}isMissingTableError(e){return e instanceof Error&&/no such table:/i.test(e.message)}dbExists(e){return Ua.existsSync(e??this.resolveDbPath())}};u();function Q(t){let e=ge("better-sqlite3"),{drizzle:n}=ge("drizzle-orm/better-sqlite3"),r=new e(t);return r.exec("PRAGMA journal_mode = WAL"),r.exec("PRAGMA busy_timeout = 5000"),r.exec("PRAGMA foreign_keys = ON"),r.exec("PRAGMA analysis_limit = 400"),r.exec("PRAGMA optimize"),{db:n(r),runRaw:(o,i=[])=>r.prepare(o).run(...i),close:()=>r.close()}}u();var va=new Set,Gu={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 gi(t,e){return (t.get(`SELECT count(*) as cnt FROM sqlite_master WHERE type='table' AND name='${e}'`)?.cnt??0)>0}function Vu(t,e){if(e>0||!gi(t,"tasks"))return;let n=t.all("PRAGMA table_info(tasks)"),r=new Set(n.map(o=>o.name));for(let[o,i]of Object.entries(Gu))r.has(o)||t.run(`ALTER TABLE tasks ADD COLUMN ${o} ${i}`);}var Ju={"0002_normalize_task_names":{workspace_name:"TEXT",project_name:"TEXT"}};function Ku(t,e,n){if(!gi(t,"__drizzle_migrations")||!gi(t,"tasks"))return;let r=t.all(n`SELECT hash FROM __drizzle_migrations`),o=new Set(r.map(s=>s.hash)),i=JSON.parse(Ua.readFileSync(K__namespace.default.join(e,"meta/_journal.json"),"utf-8"));for(let s of i.entries){let a=Ju[s.tag];if(!a)continue;let d=K__namespace.default.join(e,`${s.tag}.sql`);if(!Ua.existsSync(d))continue;let c=Ua.readFileSync(d,"utf-8"),l=crypto$1.createHash("sha256").update(c).digest("hex");if(o.has(l))continue;let f=t.all("PRAGMA table_info(tasks)"),g=new Set(f.map(m=>m.name));for(let[m,k]of Object.entries(a))g.has(m)||(t.run(`ALTER TABLE tasks ADD COLUMN ${m} ${k}`),g.add(m));}}function Xu(t,e,n){let r=t.all(n`SELECT hash FROM __drizzle_migrations`),o=new Set(r.map(s=>s.hash)),i=JSON.parse(Ua.readFileSync(K__namespace.default.join(e,"meta/_journal.json"),"utf-8"));for(let s of i.entries){let a=K__namespace.default.join(e,`${s.tag}.sql`);if(!Ua.existsSync(a))continue;let d=Ua.readFileSync(a,"utf-8"),c=crypto$1.createHash("sha256").update(d).digest("hex");if(o.has(c))continue;let l=/ALTER\s+TABLE\s+[`"]?(\w+)[`"]?\s+ADD\s+[`"]?(\w+)[`"]?/gi,f=[],g;for(;(g=l.exec(d))!==null;)f.push({table:g[1],column:g[2]});if(f.length===0||!d.split(/-->\s*statement-breakpoint/).map(h=>h.trim()).filter(Boolean).every(h=>/^ALTER\s+TABLE\s+.+\s+ADD\s+/i.test(h)))continue;f.every(({table:h,column:v})=>t.all(`PRAGMA table_info("${h}")`).some(_=>_.name===v))&&t.run(n`INSERT INTO __drizzle_migrations (hash, created_at) VALUES (${c}, ${s.when})`);}}function Fr(t){let{migrate:e}=ge("drizzle-orm/better-sqlite3/migrator"),{sql:n}=ge("drizzle-orm"),r=[K__namespace.default.join(__dirname,"../migrations"),K__namespace.default.join(__dirname,"migrations"),K__namespace.default.join(__dirname,"../../../../drizzle/migrations"),K__namespace.default.join(process.cwd(),"drizzle/migrations")],o=r.find(c=>Ua.existsSync(K__namespace.default.join(c,"meta/_journal.json")));if(!o)throw new Error(`migrations folder not found. Searched:
65
+ `)}u();function Su(){let t=new Date,e=t.getFullYear(),n=String(t.getMonth()+1).padStart(2,"0"),r=String(t.getDate()).padStart(2,"0");return `${e}-${n}-${r}`}async function va(t,e=$t){let n=e.resolvePath(t,`${Su()}.md`);return await e.exists(n)?e.readFile(n):""}u();Yt();ht();function ci(t){if(t.startsWith("cli/"))return exports.BUILTIN_ADAPTERS[t.slice(4)]}function Du(t,e={}){if(!t.startsWith("cli/"))return true;let r=(e.lookupAdapter??ci)(t);if(!r?.command)return false;let o=xn(r.command,{env:e.env});return X__namespace.default.isAbsolute(o)}function Ea(t,e={}){if(!Array.isArray(t))return t;if(t.length===0)return "cli/claude";for(let n of t)if(Du(n,e))return n;return t[0]}u();var $n=new async_hooks.AsyncLocalStorage;function li(t){if(t)return {parentTaskId:t.parentTaskId??null,rootTraceId:t.rootTraceId,callerAgentId:t.callerAgentId??null}}u();u();var Br="<crewx_card";function Bn(t){return t===" "||t===" "||t===`
66
+ `||t==="\r"||t==="\f"}function Mu(t){if(!t)return false;let e=t.charCodeAt(0);return e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||t==="_"||t===":"||t==="-"}function Uu(t){return t===void 0||Bn(t)||t==="/"||t===">"}function Ra(t,e){let n=t[e],r=e+1;for(;r<t.length;){if(t[r]===n)return {end:r+1,value:t.slice(e+1,r)};r++;}return {end:t.length,value:t.slice(e+1)}}function Lu(t,e){if(t[e]==='"'||t[e]==="'")return Ra(t,e);let n=e;for(;n<t.length&&!Bn(t[n])&&t[n]!==">";)n++;return {end:n,value:t.slice(e,n)}}function ju(t,e){let n=Object.create(null),r=e+Br.length,o=false;for(;r<t.length;){let i=t[r];if(i===">")return {end:r+1,closed:true,attrs:n,privileged:o};if(Bn(i)||i==="/"){r++;continue}if(i==='"'||i==="'"){r=Ra(t,r).end;continue}let s=r;for(;r<t.length&&Mu(t[r]);)r++;if(r===s){r++;continue}let a=t.slice(s,r);for(a==="proof"&&(o=true);r<t.length&&Bn(t[r]);)r++;if(t[r]!=="="){n[a]="";continue}for(r++;r<t.length&&Bn(t[r]);)r++;let d=Lu(t,r);n[a]=d.value,r=d.end;}return {end:t.length,closed:false,attrs:n,privileged:o}}function ui(t,e){let n=ju(t,e);return {start:e,end:n.end,raw:t.slice(e,n.end),closed:n.closed,attrs:n.attrs,privileged:n.privileged}}function Fn(t){let e=[],n=0;for(;n<t.length;){let r=t.indexOf(Br,n);if(r<0)break;if(!Uu(t[r+Br.length])){n=r+Br.length;continue}let o=ui(t,r);if(e.push(o),!o.closed)break;n=o.end;}return e}function xa(t){return t&&Fn(t).find(r=>!!r.attrs.run_id?.trim())?.attrs.run_id?.trim()||void 0}u();u();var R=class extends Error{constructor(n,r=n,o){super(r);this.code=n;this.currentRevision=o;}code;currentRevision;name="UiRuntimeError"},Ee=class extends Error{constructor(n){super("UI instance database operation will be retried");this.cause=n;}cause;name="UiRetryableDatabaseError"},Ie=class extends Error{constructor(n){super("UI instance revision reservation conflict");this.currentRevision=n;}currentRevision;name="UiReservationConflictError"};var $u=/(?:proof|token|secret|password|cookie|authorization|private[_-]?key|stack|exception|plugin[_-]?text)/i,Bu=/(?:url|uri|endpoint|path|file(?:name|path)?|cwd|directory|dir|folder)$/i,Fu=/<\/?[A-Za-z][^>]*>/,Hu=/^(?:[A-Za-z]:[\\/]|\\\\|~[\\/]|\/)/,Wu=/^(?:https?|file|ftp|ws|wss):\/\//i;function Je(){throw new R("INPUT_INVALID","JSON value is not projection-safe")}function qu(t){let e=Object.getPrototypeOf(t);return e===Object.prototype||e===null}function pi(t,e,n,r){if(e>8&&Je(),t===null||typeof t=="string"||typeof t=="boolean")return typeof t=="string"&&(Fu.test(t)||Wu.test(t)||Hu.test(t))&&Je(),t;if(typeof t=="number")return Number.isFinite(t)||Je(),t;(typeof t!="object"||t===void 0||typeof t=="function"||typeof t=="bigint")&&Je();let o=t;n.has(o)&&Je(),n.add(o);try{if(Array.isArray(t))return t.map(s=>pi(s,e+1,n));qu(o)||Je();let i={};for(let[s,a]of Object.entries(t))($u.test(s)||Bu.test(s))&&Je(),i[s]=pi(a,e+1,n,s);return i}finally{n.delete(o);}}function ie(t){let e=pi(t,0,new Set);return (e===null||Array.isArray(e)||typeof e!="object")&&Je(),e}function ye(t){try{let e=JSON.stringify(t);return e===void 0&&Je(),e}catch{Je();}}function fi(t){return Array.isArray(t)?t.map(fi):t!==null&&typeof t=="object"?Object.fromEntries(Object.keys(t).sort().map(e=>[e,fi(t[e])])):t}function ba(t){return ye(fi(t))}function Hn(t){return Buffer.byteLength(t,"utf8")}var Ta="[workflow card omitted from AI context]",zu="[workflow UI instance omitted from AI context]",Gu=/\{\s*"instanceId"\s*:\s*"uic_[A-Za-z0-9_-]+"\s*\}/g;function Fr(t){return typeof t=="string"?t.replace(Gu,zu):""}function Hr(t){if(typeof t!="string"||t.length===0)return "";let e="",n=0;for(let r of Fn(t))if(e+=t.slice(n,r.start),e+=r.privileged?Ta:r.raw,n=r.end,!r.closed)break;return e+=t.slice(n),e}function Vu(t){return t.replace(/</g,"&lt;").replace(/>/g,"&gt;")}function Ju(t,e){if(typeof t!="string")return "";let n=e?Hr(t):t,r=e?Fr(n):n;return Vu(r)}function gi(t){return t.map(e=>({...e,text:Ju(e.text,e.isAssistant)}))}function on(t,e){let n=gi(t);if(!e||e.length===0)return n;let r=[];for(let o of e)try{if(Object.keys(o).sort().join(",")!=="availableActions,definition,facts,instanceId,pendingDecision,recentChanges,revision"||!/^uic_[A-Za-z0-9_-]+$/.test(o.instanceId))continue;let s=ie(o),a=JSON.stringify(s);if(typeof a!="string"||Hn(a)>64*1024)continue;r.push(s);}catch{}return r.length===0?n:[...n,{text:`CrewX workflow context:
67
+ ${JSON.stringify(r)}`,isAssistant:true}]}function mi(t){return gi(t.messages.map(e=>({text:e.text,isAssistant:e.isAssistant,timestamp:e.timestamp,metadata:e.metadata,files:void 0})))}u();ht();yt();u();u();var ce=class{resolveDbPath(){return process.env.CREWX_DB?process.env.CREWX_DB:process.env.CREWX_TRACES_DB?process.env.CREWX_TRACES_DB:X.join(Ci__namespace.default.homedir(),".crewx","crewx.db")}resolveDbPaths(){return [this.resolveDbPath()]}isMissingTableError(e){return e instanceof Error&&/no such table:/i.test(e.message)}dbExists(e){return Wa.existsSync(e??this.resolveDbPath())}};u();function Y(t){let e=he("better-sqlite3"),{drizzle:n}=he("drizzle-orm/better-sqlite3"),r=new e(t);return r.exec("PRAGMA journal_mode = WAL"),r.exec("PRAGMA busy_timeout = 5000"),r.exec("PRAGMA foreign_keys = ON"),r.exec("PRAGMA analysis_limit = 400"),r.exec("PRAGMA optimize"),{db:n(r),runRaw:(o,i=[])=>r.prepare(o).run(...i),close:()=>r.close()}}u();var Aa=new Set,Zu={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 yi(t,e){return (t.get(`SELECT count(*) as cnt FROM sqlite_master WHERE type='table' AND name='${e}'`)?.cnt??0)>0}function ep(t,e){if(e>0||!yi(t,"tasks"))return;let n=t.all("PRAGMA table_info(tasks)"),r=new Set(n.map(o=>o.name));for(let[o,i]of Object.entries(Zu))r.has(o)||t.run(`ALTER TABLE tasks ADD COLUMN ${o} ${i}`);}var tp={"0002_normalize_task_names":{workspace_name:"TEXT",project_name:"TEXT"},"0015_panoramic_gorilla_man":{project_id:"TEXT",workspace_id:"TEXT"}};function np(t,e,n){if(!yi(t,"__drizzle_migrations")||!yi(t,"tasks"))return;let r=t.all(n`SELECT hash FROM __drizzle_migrations`),o=new Set(r.map(s=>s.hash)),i=JSON.parse(Wa.readFileSync(X__namespace.default.join(e,"meta/_journal.json"),"utf-8"));for(let s of i.entries){let a=tp[s.tag];if(!a)continue;let d=X__namespace.default.join(e,`${s.tag}.sql`);if(!Wa.existsSync(d))continue;let c=Wa.readFileSync(d,"utf-8"),l=crypto$1.createHash("sha256").update(c).digest("hex");if(o.has(l))continue;let f=t.all("PRAGMA table_info(tasks)"),g=new Set(f.map(m=>m.name));for(let[m,k]of Object.entries(a))g.has(m)||(t.run(`ALTER TABLE tasks ADD COLUMN ${m} ${k}`),g.add(m));}}function rp(t,e,n){let r=t.all(n`SELECT hash FROM __drizzle_migrations`),o=new Set(r.map(s=>s.hash)),i=JSON.parse(Wa.readFileSync(X__namespace.default.join(e,"meta/_journal.json"),"utf-8"));for(let s of i.entries){let a=X__namespace.default.join(e,`${s.tag}.sql`);if(!Wa.existsSync(a))continue;let d=Wa.readFileSync(a,"utf-8"),c=crypto$1.createHash("sha256").update(d).digest("hex");if(o.has(c))continue;let l=/ALTER\s+TABLE\s+[`"]?(\w+)[`"]?\s+ADD\s+[`"]?(\w+)[`"]?/gi,f=[],g;for(;(g=l.exec(d))!==null;)f.push({table:g[1],column:g[2]});if(f.length===0||!d.split(/-->\s*statement-breakpoint/).map(h=>h.trim()).filter(Boolean).every(h=>/^ALTER\s+TABLE\s+.+\s+ADD\s+/i.test(h)))continue;f.every(({table:h,column:v})=>t.all(`PRAGMA table_info("${h}")`).some(w=>w.name===v))&&t.run(n`INSERT INTO __drizzle_migrations (hash, created_at) VALUES (${c}, ${s.when})`);}}function qr(t){let{migrate:e}=he("drizzle-orm/better-sqlite3/migrator"),{sql:n}=he("drizzle-orm"),r=[X__namespace.default.join(__dirname,"../migrations"),X__namespace.default.join(__dirname,"migrations"),X__namespace.default.join(__dirname,"../../../../drizzle/migrations"),X__namespace.default.join(process.cwd(),"drizzle/migrations")],o=r.find(c=>Wa.existsSync(X__namespace.default.join(c,"meta/_journal.json")));if(!o)throw new Error(`migrations folder not found. Searched:
68
68
  ${r.join(`
69
- `)}`);let i=t.get(n`SELECT count(*) as cnt FROM sqlite_master WHERE type='table' AND name='__drizzle_migrations'`),s=0;i?.cnt&&(s=t.get(n`SELECT count(*) as cnt FROM __drizzle_migrations`)?.cnt??0),Vu(t,s),i?.cnt&&(Xu(t,o,n),Ku(t,o,n)),e(t,{migrationsFolder:o});let d=(t.get(n`SELECT count(*) as cnt FROM __drizzle_migrations`)?.cnt??0)-s;if(d>0){let c=i?.cnt?"Database migrated":"Database initialized";console.error(`[crewx] ${c} (${d} migration${d>1?"s":""} applied).`);}}function he(t,e){va.has(e)||(Fr(t),va.add(e));}u();var C=class extends Error{code;cause;constructor(e,n,r){super(n),this.name="RepositoryError",this.code=e,this.cause=r,Object.setPrototypeOf(this,new.target.prototype);}};u();u();var jn=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()});u();var p=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)},t=>({idx_tasks_agent_id:sqliteCore.index("idx_tasks_agent_id").on(t.agent_id),idx_tasks_status:sqliteCore.index("idx_tasks_status").on(t.status),idx_tasks_started_at:sqliteCore.index("idx_tasks_started_at").on(t.started_at),idx_tasks_trace_id:sqliteCore.index("idx_tasks_trace_id").on(t.trace_id),idx_tasks_parent_task_id:sqliteCore.index("idx_tasks_parent_task_id").on(t.parent_task_id),idx_tasks_crewx_version:sqliteCore.index("idx_tasks_crewx_version").on(t.crewx_version),idx_tasks_pid:sqliteCore.index("idx_tasks_pid").on(t.pid),idx_tasks_thread_id:sqliteCore.index("idx_tasks_thread_id").on(t.thread_id),idx_tasks_workspace_id:sqliteCore.index("idx_tasks_workspace_id").on(t.workspace_id),idx_tasks_workspace_ref:sqliteCore.index("idx_tasks_workspace_ref").on(t.workspace_ref),idx_tasks_project_id:sqliteCore.index("idx_tasks_project_id").on(t.project_id),idx_tasks_ws_started:sqliteCore.index("idx_tasks_ws_started").on(t.workspace_id,t.started_at)}));u();var Fn=sqliteCore.sqliteTable("threads",{id:sqliteCore.text("id").primaryKey(),workspace_id:sqliteCore.text("workspace_id").references(()=>jn.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)},t=>({idx_threads_updated_at:sqliteCore.index("idx_threads_updated_at").on(t.updated_at),idx_threads_workspace_id:sqliteCore.index("idx_threads_workspace_id").on(t.workspace_id),idx_threads_ws_updated:sqliteCore.index("idx_threads_ws_updated").on(t.workspace_id,t.updated_at),idx_threads_title:sqliteCore.index("idx_threads_title").on(t.title)}));u();var mt=sqliteCore.sqliteTable("spans",{id:sqliteCore.text("id").primaryKey(),task_id:sqliteCore.text("task_id").references(()=>p.id,{onDelete:"set null"}),parent_span_id:sqliteCore.text("parent_span_id").references(()=>mt.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")},t=>({idx_spans_task_id:sqliteCore.index("idx_spans_task_id").on(t.task_id),idx_spans_parent_span_id:sqliteCore.index("idx_spans_parent_span_id").on(t.parent_span_id)}));u();sqliteCore.sqliteTable("tool_calls",{id:sqliteCore.text("id").primaryKey(),task_id:sqliteCore.text("task_id").references(()=>p.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()},t=>({idx_tool_calls_task_id:sqliteCore.index("idx_tool_calls_task_id").on(t.task_id),idx_tool_calls_tool_name:sqliteCore.index("idx_tool_calls_tool_name").on(t.tool_name),idx_tool_calls_timestamp:sqliteCore.index("idx_tool_calls_timestamp").on(t.timestamp)}));u();sqliteCore.sqliteTable("thread_boxes",{id:sqliteCore.text("id").primaryKey(),thread_id:sqliteCore.text("thread_id").notNull().references(()=>Fn.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()},t=>({idx_thread_boxes_thread_id:sqliteCore.index("idx_thread_boxes_thread_id").on(t.thread_id),idx_thread_boxes_seq:sqliteCore.index("idx_thread_boxes_seq").on(t.thread_id,t.seq),uniq_thread_boxes_thread_seq:sqliteCore.unique().on(t.thread_id,t.seq)}));u();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")},t=>({idx_request_logs_timestamp:sqliteCore.index("idx_request_logs_timestamp").on(t.timestamp),idx_request_logs_path:sqliteCore.index("idx_request_logs_path").on(t.path),idx_request_logs_status_code:sqliteCore.index("idx_request_logs_status_code").on(t.status_code),idx_request_logs_partition_key:sqliteCore.index("idx_request_logs_partition_key").on(t.partition_key)}));u();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")},t=>({uniq_usage_limit_snapshots_bucket:sqliteCore.uniqueIndex("uniq_usage_limit_snapshots_bucket").on(t.provider,t.account_ref,t.limit_window,t.bucket_start),idx_usage_limit_snapshots_window_bucket:sqliteCore.index("idx_usage_limit_snapshots_window_bucket").on(t.limit_window,t.bucket_start),idx_usage_limit_snapshots_provider_window_bucket:sqliteCore.index("idx_usage_limit_snapshots_provider_window_bucket").on(t.provider,t.limit_window,t.bucket_start)}));u();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")},t=>({uniq_usage_reports_ws_month:sqliteCore.uniqueIndex("uniq_usage_reports_ws_month").on(t.workspace_id,t.month)}));u();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")},t=>({idx_notifications_ws_created:sqliteCore.index("idx_notifications_ws_created").on(t.workspace_id,drizzleOrm.sql`${t.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()},t=>({pk:sqliteCore.primaryKey({columns:[t.notification_id,t.user_id]})}));u();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()},t=>({idx_agent_suggestions_ws_agent:sqliteCore.index("idx_agent_suggestions_ws_agent").on(t.workspace_id,t.agent_id),idx_agent_suggestions_ws_created:sqliteCore.index("idx_agent_suggestions_ws_created").on(t.workspace_id,t.created_at)}));u();sqliteCore.sqliteTable("ui_instances",{id:sqliteCore.text("id").primaryKey().notNull(),definition_id:sqliteCore.text("definition_id").notNull(),definition_version:sqliteCore.integer("definition_version").notNull(),definition_hash:sqliteCore.text("definition_hash").notNull(),workspace_id:sqliteCore.text("workspace_id").notNull(),thread_id:sqliteCore.text("thread_id").notNull(),anchor_task_id:sqliteCore.text("anchor_task_id"),domain_ref_json:sqliteCore.text("domain_ref_json").notNull(),state_json:sqliteCore.text("state_json").notNull(),revision:sqliteCore.integer("revision").notNull().default(0),status:sqliteCore.text("status").notNull().default("active"),granted_capabilities_json:sqliteCore.text("granted_capabilities_json").notNull().default("[]"),created_at:sqliteCore.integer("created_at").notNull(),updated_at:sqliteCore.integer("updated_at").notNull()},t=>({idCheck:sqliteCore.check("ui_instances_id_ck",drizzleOrm.sql`length(${t.id}) BETWEEN 5 AND 128 AND ${t.id} GLOB 'uic_*'`),definitionIdCheck:sqliteCore.check("ui_instances_definition_id_ck",drizzleOrm.sql`length(${t.definition_id}) BETWEEN 1 AND 128`),definitionVersionCheck:sqliteCore.check("ui_instances_definition_version_ck",drizzleOrm.sql`${t.definition_version} >= 1`),definitionHashCheck:sqliteCore.check("ui_instances_definition_hash_ck",drizzleOrm.sql`length(${t.definition_hash}) = 64 AND ${t.definition_hash} NOT GLOB '*[^0-9a-f]*'`),workspaceIdCheck:sqliteCore.check("ui_instances_workspace_id_ck",drizzleOrm.sql`length(${t.workspace_id}) BETWEEN 1 AND 256`),threadIdCheck:sqliteCore.check("ui_instances_thread_id_ck",drizzleOrm.sql`length(${t.thread_id}) BETWEEN 1 AND 256`),domainRefJsonCheck:sqliteCore.check("ui_instances_domain_ref_json_ck",drizzleOrm.sql`json_valid(${t.domain_ref_json}) AND json_type(${t.domain_ref_json}) = 'object'`),stateJsonCheck:sqliteCore.check("ui_instances_state_json_ck",drizzleOrm.sql`json_valid(${t.state_json}) AND json_type(${t.state_json}) = 'object'`),revisionCheck:sqliteCore.check("ui_instances_revision_ck",drizzleOrm.sql`${t.revision} >= 0`),statusCheck:sqliteCore.check("ui_instances_status_ck",drizzleOrm.sql`${t.status} IN ('active', 'completed', 'expired', 'revoked', 'unsupported')`),grantedCapabilitiesJsonCheck:sqliteCore.check("ui_instances_granted_capabilities_json_ck",drizzleOrm.sql`json_valid(${t.granted_capabilities_json}) AND json_type(${t.granted_capabilities_json}) = 'array'`),createdAtCheck:sqliteCore.check("ui_instances_created_at_ck",drizzleOrm.sql`${t.created_at} >= 0`),updatedAtCheck:sqliteCore.check("ui_instances_updated_at_ck",drizzleOrm.sql`${t.updated_at} >= ${t.created_at}`),workspaceThreadIdx:sqliteCore.index("ui_instances_workspace_thread_idx").on(t.workspace_id,t.thread_id)}));u();sqliteCore.sqliteTable("ui_action_receipts",{id:sqliteCore.text("id").primaryKey().notNull(),instance_id:sqliteCore.text("instance_id").notNull(),request_id:sqliteCore.text("request_id").notNull(),action_id:sqliteCore.text("action_id").notNull(),actor_json:sqliteCore.text("actor_json").notNull(),source:sqliteCore.text("source").notNull(),expected_revision:sqliteCore.integer("expected_revision").notNull(),before_revision:sqliteCore.integer("before_revision").notNull(),after_revision:sqliteCore.integer("after_revision"),status:sqliteCore.text("status").notNull(),outcome:sqliteCore.text("outcome"),input_json:sqliteCore.text("input_json").notNull(),result_json:sqliteCore.text("result_json"),error_code:sqliteCore.text("error_code"),requested_at:sqliteCore.integer("requested_at").notNull(),settled_at:sqliteCore.integer("settled_at")},t=>({idCheck:sqliteCore.check("ui_action_receipts_id_ck",drizzleOrm.sql`length(${t.id}) BETWEEN 5 AND 128`),instanceIdCheck:sqliteCore.check("ui_action_receipts_instance_id_ck",drizzleOrm.sql`length(${t.instance_id}) BETWEEN 1 AND 128`),requestIdCheck:sqliteCore.check("ui_action_receipts_request_id_ck",drizzleOrm.sql`length(${t.request_id}) BETWEEN 1 AND 128`),actionIdCheck:sqliteCore.check("ui_action_receipts_action_id_ck",drizzleOrm.sql`length(${t.action_id}) BETWEEN 1 AND 128`),actorJsonCheck:sqliteCore.check("ui_action_receipts_actor_json_ck",drizzleOrm.sql`json_valid(${t.actor_json}) AND json_type(${t.actor_json}) = 'object'`),sourceCheck:sqliteCore.check("ui_action_receipts_source_ck",drizzleOrm.sql`${t.source} IN ('ui_host', 'cli', 'system')`),expectedRevisionCheck:sqliteCore.check("ui_action_receipts_expected_revision_ck",drizzleOrm.sql`${t.expected_revision} >= 0`),beforeRevisionCheck:sqliteCore.check("ui_action_receipts_before_revision_ck",drizzleOrm.sql`${t.before_revision} >= 0`),afterRevisionCheck:sqliteCore.check("ui_action_receipts_after_revision_ck",drizzleOrm.sql`${t.after_revision} IS NULL OR ${t.after_revision} >= 0`),statusCheck:sqliteCore.check("ui_action_receipts_status_ck",drizzleOrm.sql`${t.status} IN ('requested', 'settled')`),outcomeCheck:sqliteCore.check("ui_action_receipts_outcome_ck",drizzleOrm.sql`${t.outcome} IS NULL OR ${t.outcome} IN ('succeeded', 'rejected', 'failed', 'conflicted', 'expired')`),inputJsonCheck:sqliteCore.check("ui_action_receipts_input_json_ck",drizzleOrm.sql`json_valid(${t.input_json}) AND json_type(${t.input_json}) = 'object'`),resultJsonCheck:sqliteCore.check("ui_action_receipts_result_json_ck",drizzleOrm.sql`${t.result_json} IS NULL OR (json_valid(${t.result_json}) AND json_type(${t.result_json}) = 'object')`),requestedAtCheck:sqliteCore.check("ui_action_receipts_requested_at_ck",drizzleOrm.sql`${t.requested_at} >= 0`),settledAtCheck:sqliteCore.check("ui_action_receipts_settled_at_ck",drizzleOrm.sql`${t.settled_at} IS NULL OR ${t.settled_at} >= ${t.requested_at}`),statusTransitionCheck:sqliteCore.check("ui_action_receipts_status_transition_ck",drizzleOrm.sql`(
69
+ `)}`);let i=t.get(n`SELECT count(*) as cnt FROM sqlite_master WHERE type='table' AND name='__drizzle_migrations'`),s=0;i?.cnt&&(s=t.get(n`SELECT count(*) as cnt FROM __drizzle_migrations`)?.cnt??0),ep(t,s),i?.cnt&&(rp(t,o,n),np(t,o,n)),e(t,{migrationsFolder:o});let d=(t.get(n`SELECT count(*) as cnt FROM __drizzle_migrations`)?.cnt??0)-s;if(d>0){let c=i?.cnt?"Database migrated":"Database initialized";console.error(`[crewx] ${c} (${d} migration${d>1?"s":""} applied).`);}}function pe(t,e){Aa.has(e)||(qr(t),Aa.add(e));}u();var P=class extends Error{code;cause;constructor(e,n,r){super(n),this.name="RepositoryError",this.code=e,this.cause=r,Object.setPrototypeOf(this,new.target.prototype);}};u();u();var Wn=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()});u();var p=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)},t=>({idx_tasks_agent_id:sqliteCore.index("idx_tasks_agent_id").on(t.agent_id),idx_tasks_status:sqliteCore.index("idx_tasks_status").on(t.status),idx_tasks_started_at:sqliteCore.index("idx_tasks_started_at").on(t.started_at),idx_tasks_trace_id:sqliteCore.index("idx_tasks_trace_id").on(t.trace_id),idx_tasks_parent_task_id:sqliteCore.index("idx_tasks_parent_task_id").on(t.parent_task_id),idx_tasks_crewx_version:sqliteCore.index("idx_tasks_crewx_version").on(t.crewx_version),idx_tasks_pid:sqliteCore.index("idx_tasks_pid").on(t.pid),idx_tasks_thread_id:sqliteCore.index("idx_tasks_thread_id").on(t.thread_id),idx_tasks_workspace_id:sqliteCore.index("idx_tasks_workspace_id").on(t.workspace_id),idx_tasks_workspace_ref:sqliteCore.index("idx_tasks_workspace_ref").on(t.workspace_ref),idx_tasks_project_id:sqliteCore.index("idx_tasks_project_id").on(t.project_id),idx_tasks_ws_started:sqliteCore.index("idx_tasks_ws_started").on(t.workspace_id,t.started_at)}));u();var qn=sqliteCore.sqliteTable("threads",{id:sqliteCore.text("id").primaryKey(),workspace_id:sqliteCore.text("workspace_id").references(()=>Wn.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)},t=>({idx_threads_updated_at:sqliteCore.index("idx_threads_updated_at").on(t.updated_at),idx_threads_workspace_id:sqliteCore.index("idx_threads_workspace_id").on(t.workspace_id),idx_threads_ws_updated:sqliteCore.index("idx_threads_ws_updated").on(t.workspace_id,t.updated_at),idx_threads_title:sqliteCore.index("idx_threads_title").on(t.title)}));u();var _t=sqliteCore.sqliteTable("spans",{id:sqliteCore.text("id").primaryKey(),task_id:sqliteCore.text("task_id").references(()=>p.id,{onDelete:"set null"}),parent_span_id:sqliteCore.text("parent_span_id").references(()=>_t.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")},t=>({idx_spans_task_id:sqliteCore.index("idx_spans_task_id").on(t.task_id),idx_spans_parent_span_id:sqliteCore.index("idx_spans_parent_span_id").on(t.parent_span_id)}));u();sqliteCore.sqliteTable("tool_calls",{id:sqliteCore.text("id").primaryKey(),task_id:sqliteCore.text("task_id").references(()=>p.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()},t=>({idx_tool_calls_task_id:sqliteCore.index("idx_tool_calls_task_id").on(t.task_id),idx_tool_calls_tool_name:sqliteCore.index("idx_tool_calls_tool_name").on(t.tool_name),idx_tool_calls_timestamp:sqliteCore.index("idx_tool_calls_timestamp").on(t.timestamp)}));u();sqliteCore.sqliteTable("thread_boxes",{id:sqliteCore.text("id").primaryKey(),thread_id:sqliteCore.text("thread_id").notNull().references(()=>qn.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()},t=>({idx_thread_boxes_thread_id:sqliteCore.index("idx_thread_boxes_thread_id").on(t.thread_id),idx_thread_boxes_seq:sqliteCore.index("idx_thread_boxes_seq").on(t.thread_id,t.seq),uniq_thread_boxes_thread_seq:sqliteCore.unique().on(t.thread_id,t.seq)}));u();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")},t=>({idx_request_logs_timestamp:sqliteCore.index("idx_request_logs_timestamp").on(t.timestamp),idx_request_logs_path:sqliteCore.index("idx_request_logs_path").on(t.path),idx_request_logs_status_code:sqliteCore.index("idx_request_logs_status_code").on(t.status_code),idx_request_logs_partition_key:sqliteCore.index("idx_request_logs_partition_key").on(t.partition_key)}));u();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")},t=>({uniq_usage_limit_snapshots_bucket:sqliteCore.uniqueIndex("uniq_usage_limit_snapshots_bucket").on(t.provider,t.account_ref,t.limit_window,t.bucket_start),idx_usage_limit_snapshots_window_bucket:sqliteCore.index("idx_usage_limit_snapshots_window_bucket").on(t.limit_window,t.bucket_start),idx_usage_limit_snapshots_provider_window_bucket:sqliteCore.index("idx_usage_limit_snapshots_provider_window_bucket").on(t.provider,t.limit_window,t.bucket_start)}));u();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")},t=>({uniq_usage_reports_ws_month:sqliteCore.uniqueIndex("uniq_usage_reports_ws_month").on(t.workspace_id,t.month)}));u();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")},t=>({idx_notifications_ws_created:sqliteCore.index("idx_notifications_ws_created").on(t.workspace_id,drizzleOrm.sql`${t.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()},t=>({pk:sqliteCore.primaryKey({columns:[t.notification_id,t.user_id]})}));u();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()},t=>({idx_agent_suggestions_ws_agent:sqliteCore.index("idx_agent_suggestions_ws_agent").on(t.workspace_id,t.agent_id),idx_agent_suggestions_ws_created:sqliteCore.index("idx_agent_suggestions_ws_created").on(t.workspace_id,t.created_at)}));u();sqliteCore.sqliteTable("ui_instances",{id:sqliteCore.text("id").primaryKey().notNull(),definition_id:sqliteCore.text("definition_id").notNull(),definition_version:sqliteCore.integer("definition_version").notNull(),definition_hash:sqliteCore.text("definition_hash").notNull(),workspace_id:sqliteCore.text("workspace_id").notNull(),thread_id:sqliteCore.text("thread_id").notNull(),anchor_task_id:sqliteCore.text("anchor_task_id"),domain_ref_json:sqliteCore.text("domain_ref_json").notNull(),state_json:sqliteCore.text("state_json").notNull(),revision:sqliteCore.integer("revision").notNull().default(0),status:sqliteCore.text("status").notNull().default("active"),granted_capabilities_json:sqliteCore.text("granted_capabilities_json").notNull().default("[]"),created_at:sqliteCore.integer("created_at").notNull(),updated_at:sqliteCore.integer("updated_at").notNull()},t=>({idCheck:sqliteCore.check("ui_instances_id_ck",drizzleOrm.sql`length(${t.id}) BETWEEN 5 AND 128 AND ${t.id} GLOB 'uic_*'`),definitionIdCheck:sqliteCore.check("ui_instances_definition_id_ck",drizzleOrm.sql`length(${t.definition_id}) BETWEEN 1 AND 128`),definitionVersionCheck:sqliteCore.check("ui_instances_definition_version_ck",drizzleOrm.sql`${t.definition_version} >= 1`),definitionHashCheck:sqliteCore.check("ui_instances_definition_hash_ck",drizzleOrm.sql`length(${t.definition_hash}) = 64 AND ${t.definition_hash} NOT GLOB '*[^0-9a-f]*'`),workspaceIdCheck:sqliteCore.check("ui_instances_workspace_id_ck",drizzleOrm.sql`length(${t.workspace_id}) BETWEEN 1 AND 256`),threadIdCheck:sqliteCore.check("ui_instances_thread_id_ck",drizzleOrm.sql`length(${t.thread_id}) BETWEEN 1 AND 256`),domainRefJsonCheck:sqliteCore.check("ui_instances_domain_ref_json_ck",drizzleOrm.sql`json_valid(${t.domain_ref_json}) AND json_type(${t.domain_ref_json}) = 'object'`),stateJsonCheck:sqliteCore.check("ui_instances_state_json_ck",drizzleOrm.sql`json_valid(${t.state_json}) AND json_type(${t.state_json}) = 'object'`),revisionCheck:sqliteCore.check("ui_instances_revision_ck",drizzleOrm.sql`${t.revision} >= 0`),statusCheck:sqliteCore.check("ui_instances_status_ck",drizzleOrm.sql`${t.status} IN ('active', 'completed', 'expired', 'revoked', 'unsupported')`),grantedCapabilitiesJsonCheck:sqliteCore.check("ui_instances_granted_capabilities_json_ck",drizzleOrm.sql`json_valid(${t.granted_capabilities_json}) AND json_type(${t.granted_capabilities_json}) = 'array'`),createdAtCheck:sqliteCore.check("ui_instances_created_at_ck",drizzleOrm.sql`${t.created_at} >= 0`),updatedAtCheck:sqliteCore.check("ui_instances_updated_at_ck",drizzleOrm.sql`${t.updated_at} >= ${t.created_at}`),workspaceThreadIdx:sqliteCore.index("ui_instances_workspace_thread_idx").on(t.workspace_id,t.thread_id)}));u();sqliteCore.sqliteTable("ui_action_receipts",{id:sqliteCore.text("id").primaryKey().notNull(),instance_id:sqliteCore.text("instance_id").notNull(),request_id:sqliteCore.text("request_id").notNull(),action_id:sqliteCore.text("action_id").notNull(),actor_json:sqliteCore.text("actor_json").notNull(),source:sqliteCore.text("source").notNull(),expected_revision:sqliteCore.integer("expected_revision").notNull(),before_revision:sqliteCore.integer("before_revision").notNull(),after_revision:sqliteCore.integer("after_revision"),status:sqliteCore.text("status").notNull(),outcome:sqliteCore.text("outcome"),input_json:sqliteCore.text("input_json").notNull(),result_json:sqliteCore.text("result_json"),error_code:sqliteCore.text("error_code"),requested_at:sqliteCore.integer("requested_at").notNull(),settled_at:sqliteCore.integer("settled_at")},t=>({idCheck:sqliteCore.check("ui_action_receipts_id_ck",drizzleOrm.sql`length(${t.id}) BETWEEN 5 AND 128`),instanceIdCheck:sqliteCore.check("ui_action_receipts_instance_id_ck",drizzleOrm.sql`length(${t.instance_id}) BETWEEN 1 AND 128`),requestIdCheck:sqliteCore.check("ui_action_receipts_request_id_ck",drizzleOrm.sql`length(${t.request_id}) BETWEEN 1 AND 128`),actionIdCheck:sqliteCore.check("ui_action_receipts_action_id_ck",drizzleOrm.sql`length(${t.action_id}) BETWEEN 1 AND 128`),actorJsonCheck:sqliteCore.check("ui_action_receipts_actor_json_ck",drizzleOrm.sql`json_valid(${t.actor_json}) AND json_type(${t.actor_json}) = 'object'`),sourceCheck:sqliteCore.check("ui_action_receipts_source_ck",drizzleOrm.sql`${t.source} IN ('ui_host', 'cli', 'system')`),expectedRevisionCheck:sqliteCore.check("ui_action_receipts_expected_revision_ck",drizzleOrm.sql`${t.expected_revision} >= 0`),beforeRevisionCheck:sqliteCore.check("ui_action_receipts_before_revision_ck",drizzleOrm.sql`${t.before_revision} >= 0`),afterRevisionCheck:sqliteCore.check("ui_action_receipts_after_revision_ck",drizzleOrm.sql`${t.after_revision} IS NULL OR ${t.after_revision} >= 0`),statusCheck:sqliteCore.check("ui_action_receipts_status_ck",drizzleOrm.sql`${t.status} IN ('requested', 'settled')`),outcomeCheck:sqliteCore.check("ui_action_receipts_outcome_ck",drizzleOrm.sql`${t.outcome} IS NULL OR ${t.outcome} IN ('succeeded', 'rejected', 'failed', 'conflicted', 'expired')`),inputJsonCheck:sqliteCore.check("ui_action_receipts_input_json_ck",drizzleOrm.sql`json_valid(${t.input_json}) AND json_type(${t.input_json}) = 'object'`),resultJsonCheck:sqliteCore.check("ui_action_receipts_result_json_ck",drizzleOrm.sql`${t.result_json} IS NULL OR (json_valid(${t.result_json}) AND json_type(${t.result_json}) = 'object')`),requestedAtCheck:sqliteCore.check("ui_action_receipts_requested_at_ck",drizzleOrm.sql`${t.requested_at} >= 0`),settledAtCheck:sqliteCore.check("ui_action_receipts_settled_at_ck",drizzleOrm.sql`${t.settled_at} IS NULL OR ${t.settled_at} >= ${t.requested_at}`),statusTransitionCheck:sqliteCore.check("ui_action_receipts_status_transition_ck",drizzleOrm.sql`(
70
70
  (${t.status} = 'requested' AND ${t.after_revision} IS NULL AND ${t.outcome} IS NULL AND ${t.settled_at} IS NULL)
71
71
  OR
72
72
  (${t.status} = 'settled' AND ${t.after_revision} IS NOT NULL AND ${t.outcome} IS NOT NULL AND ${t.settled_at} IS NOT NULL)
73
- )`),instanceRequestUnique:sqliteCore.uniqueIndex("ui_action_receipts_instance_request_uq").on(t.instance_id,t.request_id),instanceIdIdx:sqliteCore.index("ui_action_receipts_instance_id_idx").on(t.instance_id),requestedAtIdx:sqliteCore.index("ui_action_receipts_requested_at_idx").on(t.requested_at)}));zt();var yt="2026-05-09",Mp="0.8.9-rc.13",wt=10,_t=parseInt(Mp.split("rc.")[1]);function Da(){let t=drizzleOrm.sql`
73
+ )`),instanceRequestUnique:sqliteCore.uniqueIndex("ui_action_receipts_instance_request_uq").on(t.instance_id,t.request_id),instanceIdIdx:sqliteCore.index("ui_action_receipts_instance_id_idx").on(t.instance_id),requestedAtIdx:sqliteCore.index("ui_action_receipts_requested_at_idx").on(t.requested_at)}));u();var Ei=sqliteCore.sqliteTable("projects",{id:sqliteCore.text("id").primaryKey().notNull(),workspace_id:sqliteCore.text("workspace_id").notNull(),name:sqliteCore.text("name").notNull(),outcome:sqliteCore.text("outcome").notNull(),due_date:sqliteCore.text("due_date"),scene:sqliteCore.text("scene").notNull().default("planning"),stages_json:sqliteCore.text("stages_json").notNull(),stage_index:sqliteCore.integer("stage_index").notNull(),created_at:sqliteCore.text("created_at").notNull(),updated_at:sqliteCore.text("updated_at").notNull(),accepted_at:sqliteCore.text("accepted_at"),archived_at:sqliteCore.text("archived_at")},t=>({idCheck:sqliteCore.check("projects_id_ck",drizzleOrm.sql`${t.id} GLOB 'prj_*'`),sceneCheck:sqliteCore.check("projects_scene_ck",drizzleOrm.sql`${t.scene} IN ('planning', 'plan_review', 'running', 'human_wait', 'limit_wait', 'failed_stop', 'analyzing_feedback', 'replanned', 'awaiting_review', 'accepted')`),stagesJsonCheck:sqliteCore.check("projects_stages_json_ck",drizzleOrm.sql`json_valid(${t.stages_json}) AND json_type(${t.stages_json}) = 'array'`),stageIndexCheck:sqliteCore.check("projects_stage_index_ck",drizzleOrm.sql`${t.stage_index} >= 1`)}));sqliteCore.sqliteTable("project_criteria",{id:sqliteCore.text("id").primaryKey().notNull(),project_id:sqliteCore.text("project_id").notNull().references(()=>Ei.id,{onDelete:"cascade"}),position:sqliteCore.integer("position").notNull(),statement:sqliteCore.text("statement").notNull(),verify_status:sqliteCore.text("verify_status").notNull().default("pending"),verified_at:sqliteCore.text("verified_at"),evidence_json:sqliteCore.text("evidence_json").notNull().default("[]"),created_at:sqliteCore.text("created_at").notNull(),updated_at:sqliteCore.text("updated_at").notNull()},t=>({idCheck:sqliteCore.check("project_criteria_id_ck",drizzleOrm.sql`${t.id} GLOB 'pjc_*'`),verifyStatusCheck:sqliteCore.check("project_criteria_verify_status_ck",drizzleOrm.sql`${t.verify_status} IN ('pending', 'verifying', 'passed', 'failed')`),evidenceJsonCheck:sqliteCore.check("project_criteria_evidence_json_ck",drizzleOrm.sql`json_valid(${t.evidence_json}) AND json_type(${t.evidence_json}) = 'array'`),projectPositionUnique:sqliteCore.uniqueIndex("project_criteria_project_position_uq").on(t.project_id,t.position)}));sqliteCore.sqliteTable("project_events",{id:sqliteCore.text("id").primaryKey().notNull(),project_id:sqliteCore.text("project_id").notNull().references(()=>Ei.id,{onDelete:"restrict"}),seq:sqliteCore.integer("seq").notNull(),actor_type:sqliteCore.text("actor_type").notNull(),actor_id:sqliteCore.text("actor_id"),type:sqliteCore.text("type").notNull(),title:sqliteCore.text("title").notNull(),summary:sqliteCore.text("summary"),payload_json:sqliteCore.text("payload_json").notNull().default("{}"),created_at:sqliteCore.text("created_at").notNull()},t=>({idCheck:sqliteCore.check("project_events_id_ck",drizzleOrm.sql`${t.id} GLOB 'pje_*'`),actorTypeCheck:sqliteCore.check("project_events_actor_type_ck",drizzleOrm.sql`${t.actor_type} IN ('user', 'project_manager', 'system')`),payloadJsonCheck:sqliteCore.check("project_events_payload_json_ck",drizzleOrm.sql`json_valid(${t.payload_json}) AND json_type(${t.payload_json}) = 'object'`),projectSeqUnique:sqliteCore.uniqueIndex("project_events_project_seq_uq").on(t.project_id,t.seq)}));Jt();var vt="2026-05-09",qp="0.8.9-rc.13",Et=10,Rt=parseInt(qp.split("rc.")[1]);function Fa(){let t=drizzleOrm.sql`
74
74
  CASE
75
75
  WHEN ${p.model} LIKE 'claude-%' OR ${p.model} IN ('opus', 'sonnet', 'haiku', 'opus[1m]', 'sonnet[1m]') THEN 'claude'
76
76
  WHEN ${p.model} LIKE 'gpt-%' OR ${p.model} LIKE 'codex-%' THEN 'codex'
@@ -99,10 +99,10 @@ ${r.join(`
99
99
  WHEN trim(${o}) = '' THEN 'unknown'
100
100
  ELSE ${o}
101
101
  END
102
- `}var Up=new Set(["workflow","mcp"]),Ma=600*1e3,nn=class extends le{dbPath;pidNullObservedSince=new Map;constructor(e={}){super(),e.dbPath?this.dbPath=e.dbPath:e.dbRoot&&(this.dbPath=K.join(e.dbRoot,".crewx","crewx.db"));}resolveDbPath(){return this.dbPath?this.dbPath:super.resolveDbPath()}openHandle(e){let n=this.resolveDbPath();if(e){let o=K.dirname(n);Ua.existsSync(o)||Ua.mkdirSync(o,{recursive:true});}else if(!Ua.existsSync(n))throw new C("NOT_FOUND","Database not found");let r=Q(n);if(e)try{he(r.db,n);}catch(o){throw r.close(),o}return r}startTask(e){let n=this.openHandle(true);try{n.db.insert(p).values({id:e.id,agent_id:e.agentId,prompt:e.prompt,mode:e.mode,status:e.status,started_at:e.startedAt,pid:e.pid??null,parent_task_id:e.parentTaskId??null,caller_agent_id:e.callerAgentId??null,trace_id:e.traceId??null,command:e.command??null,metadata:e.metadata??null,workspace_id:e.workspaceId??null,platform:e.platform??"cli",crewx_version:e.crewxVersion??null,thread_id:e.threadId??null,model:e.model??null,rendered_prompt:e.renderedPrompt??null,coding_agent_command:e.codingAgentCommand??null}).onConflictDoUpdate({target:p.id,set:{pid:drizzleOrm.sql`COALESCE(excluded.pid, ${p.pid})`},setWhere:drizzleOrm.eq(p.status,"running")}).run();}catch(r){throw r instanceof C?r:new C("DB_ERROR","Failed to start task",r)}finally{n.close();}}finishTask(e){let n=this.openHandle(true);try{let r=e.runEpoch??null;n.runRaw(`UPDATE tasks SET status=?, result=?, error=?, completed_at=?, duration_ms=?,
102
+ `}var zp=new Set(["workflow","mcp"]),Ha=600*1e3,sn=class extends ce{dbPath;pidNullObservedSince=new Map;constructor(e={}){super(),e.dbPath?this.dbPath=e.dbPath:e.dbRoot&&(this.dbPath=X.join(e.dbRoot,".crewx","crewx.db"));}resolveDbPath(){return this.dbPath?this.dbPath:super.resolveDbPath()}openHandle(e){let n=this.resolveDbPath();if(e){let o=X.dirname(n);Wa.existsSync(o)||Wa.mkdirSync(o,{recursive:true});}else if(!Wa.existsSync(n))throw new P("NOT_FOUND","Database not found");let r=Y(n);if(e)try{pe(r.db,n);}catch(o){throw r.close(),o}return r}startTask(e){let n=this.openHandle(true);try{n.db.insert(p).values({id:e.id,agent_id:e.agentId,prompt:e.prompt,mode:e.mode,status:e.status,started_at:e.startedAt,pid:e.pid??null,parent_task_id:e.parentTaskId??null,caller_agent_id:e.callerAgentId??null,trace_id:e.traceId??null,command:e.command??null,metadata:e.metadata??null,workspace_id:e.workspaceId??null,project_id:e.projectId??null,platform:e.platform??"cli",crewx_version:e.crewxVersion??null,thread_id:e.threadId??null,model:e.model??null,rendered_prompt:e.renderedPrompt??null,coding_agent_command:e.codingAgentCommand??null}).onConflictDoUpdate({target:p.id,set:{pid:drizzleOrm.sql`COALESCE(excluded.pid, ${p.pid})`},setWhere:drizzleOrm.eq(p.status,"running")}).run();}catch(r){throw r instanceof P?r:new P("DB_ERROR","Failed to start task",r)}finally{n.close();}}listTasksByProjectId(e){if(!this.dbExists())return [];let n=this.openHandle(false);try{return n.db.select().from(p).where(drizzleOrm.eq(p.project_id,e)).orderBy(drizzleOrm.desc(p.started_at)).all()}catch(r){throw r instanceof P?r:new P("DB_ERROR","Failed to list tasks by project",r)}finally{n.close();}}finishTask(e){let n=this.openHandle(true);try{let r=e.runEpoch??null;n.runRaw(`UPDATE tasks SET status=?, result=?, error=?, completed_at=?, duration_ms=?,
103
103
  exit_code=?, input_tokens=?, output_tokens=?, cached_input_tokens=?, cost_usd=?,
104
104
  model=COALESCE(?, model)
105
- WHERE id=? AND status='running' AND COALESCE(run_epoch, 0) = COALESCE(?, 0)`,[e.status,e.result??null,e.error??null,e.completedAt,e.durationMs??null,e.exitCode??null,e.inputTokens??0,e.outputTokens??0,e.cachedInputTokens??0,e.costUsd??0,e.model??null,e.id,r]);}catch(r){throw r instanceof C?r:new C("DB_ERROR","Failed to finish task",r)}finally{n.close();}}appendLog(e,n){let r=this.openHandle(true);try{r.db.transaction(o=>{let i=o.select({logs:p.logs}).from(p).where(drizzleOrm.eq(p.id,e)).limit(1).get(),s=i?.logs?JSON.parse(i.logs):[];s.push(n),o.update(p).set({logs:JSON.stringify(s)}).where(drizzleOrm.eq(p.id,e)).run();},{behavior:"immediate"});}catch(o){throw o instanceof C?o:new C("DB_ERROR","Failed to append log",o)}finally{r.close();}}getRunningTasks(){if(!this.dbExists())return [];let e=this.openHandle(false);try{return e.db.select().from(p).where(drizzleOrm.eq(p.status,"running")).orderBy(drizzleOrm.desc(p.started_at)).all()}catch(n){throw new C("DB_ERROR","Failed to get running tasks",n)}finally{e.close();}}getAllTasks(){if(!this.dbExists())return [];let e=this.openHandle(false);try{return e.db.select().from(p).orderBy(drizzleOrm.desc(p.started_at)).limit(100).all()}catch(n){throw new C("DB_ERROR","Failed to get all tasks",n)}finally{e.close();}}getTask(e){if(!this.dbExists())return;let n=this.openHandle(false);try{return n.db.select().from(p).where(drizzleOrm.eq(p.id,e)).limit(1).get()??void 0}catch(r){throw new C("DB_ERROR","Failed to get task",r)}finally{n.close();}}killTask(e){if(!this.dbExists())return {killed:false};let n=this.openHandle(true);try{let r=n.db.select({id:p.id,status:p.status,pid:p.pid}).from(p).where(drizzleOrm.eq(p.id,e)).limit(1).get();if(!r||r.status!=="running")return {killed:!1};if(r.pid)try{process.kill(r.pid,"SIGTERM");}catch{}return n.db.update(p).set({status:"failed",error:"Killed by user",completed_at:new Date().toISOString()}).where(drizzleOrm.and(drizzleOrm.eq(p.id,e),drizzleOrm.eq(p.status,"running"))).run(),{killed:!0,pid:r.pid??void 0}}catch(r){throw r instanceof C?r:new C("DB_ERROR","Failed to kill task",r)}finally{n.close();}}reapOrphanedTasks(){if(!this.dbExists())return 0;let e=this.openHandle(true);try{let n=e.db.select({id:p.id,pid:p.pid,platform:p.platform,run_epoch:p.run_epoch}).from(p).where(drizzleOrm.eq(p.status,"running")).all(),r=Date.now(),o=new Set,i=0;for(let s of n){if(s.pid){let c=!1;try{process.kill(s.pid,0),c=!0;}catch{}c||(e.db.update(p).set({status:"failed",error:"Reaped: process not found (orphaned task)",completed_at:new Date().toISOString()}).where(drizzleOrm.and(drizzleOrm.eq(p.id,s.id),drizzleOrm.eq(p.status,"running"))).run(),i++);continue}if(Up.has(s.platform??"cli"))continue;let a=`${s.id}:${s.run_epoch??0}`;o.add(a);let d=this.pidNullObservedSince.get(a);if(d===void 0){this.pidNullObservedSince.set(a,r);continue}r-d>=Ma&&(e.db.update(p).set({status:"failed",error:"Reaped: pid never recorded after resume (stale running_instruction)",completed_at:new Date().toISOString()}).where(drizzleOrm.and(drizzleOrm.eq(p.id,s.id),drizzleOrm.eq(p.status,"running"))).run(),i++,this.pidNullObservedSince.delete(a));}for(let s of Array.from(this.pidNullObservedSince.keys()))o.has(s)||this.pidNullObservedSince.delete(s);return i}finally{e.close();}}reapRunningWorkflowTasks(e=Ma){if(!this.dbExists())return 0;let n=this.openHandle(true);try{let r=new Date(Date.now()-e).toISOString();return n.db.update(p).set({status:"failed",error:"Reaped: stale workflow run (finally not executed)",completed_at:new Date().toISOString()}).where(drizzleOrm.and(drizzleOrm.eq(p.status,"running"),drizzleOrm.eq(p.platform,"workflow"),drizzleOrm.isNull(p.pid),drizzleOrm.lt(p.started_at,r),drizzleOrm.or(drizzleOrm.isNull(p.metadata),drizzleOrm.and(drizzleOrm.notLike(p.metadata,'%"kind":"workflow_card"%'),drizzleOrm.notLike(p.metadata,'%"kind":"workflow_ui_instance"%'))))).run().changes??0}finally{n.close();}}findTaskStatus(e,n){let r=this.resolveDbPaths();for(let o of r){if(!Ua.existsSync(o))continue;let i=Q(o);try{let s=n?drizzleOrm.eq(p.workspace_id,n):void 0,a=s?drizzleOrm.and(drizzleOrm.eq(p.id,e),s):drizzleOrm.eq(p.id,e),d=i.db.select().from(p).where(a).limit(1).get()??void 0;if(!d){let c=drizzleOrm.or(drizzleOrm.eq(p.thread_id,e),drizzleOrm.and(drizzleOrm.isNull(p.thread_id),drizzleOrm.like(p.command,`%--thread=${e}%`))),l=s?drizzleOrm.and(c,s):c;d=i.db.select().from(p).where(l).orderBy(drizzleOrm.desc(p.started_at)).limit(1).get()??void 0;}if(d)return d}catch(s){throw new C("DB_ERROR","Failed to find task status",s)}finally{i.close();}}}findChildTasks(e,n){let r=this.resolveDbPaths(),o=new Set,i=[];for(let s of r){if(!Ua.existsSync(s))continue;let a=Q(s);try{let d=n?drizzleOrm.and(drizzleOrm.eq(p.parent_task_id,e),drizzleOrm.eq(p.workspace_id,n)):drizzleOrm.eq(p.parent_task_id,e),c=a.db.select().from(p).where(d).orderBy(drizzleOrm.asc(p.started_at)).all();for(let l of c)o.has(l.id)||(o.add(l.id),i.push(l));}catch(d){throw new C("DB_ERROR","Failed to find child tasks",d)}finally{a.close();}}return i}getWorkspaceUsageSummary(e){if(!this.dbExists())return [];let n=this.openHandle(false);try{return n.db.all(e?drizzleOrm.sql`
105
+ WHERE id=? AND status='running' AND COALESCE(run_epoch, 0) = COALESCE(?, 0)`,[e.status,e.result??null,e.error??null,e.completedAt,e.durationMs??null,e.exitCode??null,e.inputTokens??0,e.outputTokens??0,e.cachedInputTokens??0,e.costUsd??0,e.model??null,e.id,r]);}catch(r){throw r instanceof P?r:new P("DB_ERROR","Failed to finish task",r)}finally{n.close();}}appendLog(e,n){let r=this.openHandle(true);try{r.db.transaction(o=>{let i=o.select({logs:p.logs}).from(p).where(drizzleOrm.eq(p.id,e)).limit(1).get(),s=i?.logs?JSON.parse(i.logs):[];s.push(n),o.update(p).set({logs:JSON.stringify(s)}).where(drizzleOrm.eq(p.id,e)).run();},{behavior:"immediate"});}catch(o){throw o instanceof P?o:new P("DB_ERROR","Failed to append log",o)}finally{r.close();}}getRunningTasks(){if(!this.dbExists())return [];let e=this.openHandle(false);try{return e.db.select().from(p).where(drizzleOrm.eq(p.status,"running")).orderBy(drizzleOrm.desc(p.started_at)).all()}catch(n){throw new P("DB_ERROR","Failed to get running tasks",n)}finally{e.close();}}getAllTasks(){if(!this.dbExists())return [];let e=this.openHandle(false);try{return e.db.select().from(p).orderBy(drizzleOrm.desc(p.started_at)).limit(100).all()}catch(n){throw new P("DB_ERROR","Failed to get all tasks",n)}finally{e.close();}}getTask(e){if(!this.dbExists())return;let n=this.openHandle(false);try{return n.db.select().from(p).where(drizzleOrm.eq(p.id,e)).limit(1).get()??void 0}catch(r){throw new P("DB_ERROR","Failed to get task",r)}finally{n.close();}}killTask(e){if(!this.dbExists())return {killed:false};let n=this.openHandle(true);try{let r=n.db.select({id:p.id,status:p.status,pid:p.pid}).from(p).where(drizzleOrm.eq(p.id,e)).limit(1).get();if(!r||r.status!=="running")return {killed:!1};if(r.pid)try{process.kill(r.pid,"SIGTERM");}catch{}return n.db.update(p).set({status:"failed",error:"Killed by user",completed_at:new Date().toISOString()}).where(drizzleOrm.and(drizzleOrm.eq(p.id,e),drizzleOrm.eq(p.status,"running"))).run(),{killed:!0,pid:r.pid??void 0}}catch(r){throw r instanceof P?r:new P("DB_ERROR","Failed to kill task",r)}finally{n.close();}}reapOrphanedTasks(){if(!this.dbExists())return 0;let e=this.openHandle(true);try{let n=e.db.select({id:p.id,pid:p.pid,platform:p.platform,run_epoch:p.run_epoch}).from(p).where(drizzleOrm.eq(p.status,"running")).all(),r=Date.now(),o=new Set,i=0;for(let s of n){if(s.pid){let c=!1;try{process.kill(s.pid,0),c=!0;}catch{}c||(e.db.update(p).set({status:"failed",error:"Reaped: process not found (orphaned task)",completed_at:new Date().toISOString()}).where(drizzleOrm.and(drizzleOrm.eq(p.id,s.id),drizzleOrm.eq(p.status,"running"))).run(),i++);continue}if(zp.has(s.platform??"cli"))continue;let a=`${s.id}:${s.run_epoch??0}`;o.add(a);let d=this.pidNullObservedSince.get(a);if(d===void 0){this.pidNullObservedSince.set(a,r);continue}r-d>=Ha&&(e.db.update(p).set({status:"failed",error:"Reaped: pid never recorded after resume (stale running_instruction)",completed_at:new Date().toISOString()}).where(drizzleOrm.and(drizzleOrm.eq(p.id,s.id),drizzleOrm.eq(p.status,"running"))).run(),i++,this.pidNullObservedSince.delete(a));}for(let s of Array.from(this.pidNullObservedSince.keys()))o.has(s)||this.pidNullObservedSince.delete(s);return i}finally{e.close();}}reapRunningWorkflowTasks(e=Ha){if(!this.dbExists())return 0;let n=this.openHandle(true);try{let r=new Date(Date.now()-e).toISOString();return n.db.update(p).set({status:"failed",error:"Reaped: stale workflow run (finally not executed)",completed_at:new Date().toISOString()}).where(drizzleOrm.and(drizzleOrm.eq(p.status,"running"),drizzleOrm.eq(p.platform,"workflow"),drizzleOrm.isNull(p.pid),drizzleOrm.lt(p.started_at,r),drizzleOrm.or(drizzleOrm.isNull(p.metadata),drizzleOrm.and(drizzleOrm.notLike(p.metadata,'%"kind":"workflow_card"%'),drizzleOrm.notLike(p.metadata,'%"kind":"workflow_ui_instance"%'))))).run().changes??0}finally{n.close();}}findTaskStatus(e,n){let r=this.resolveDbPaths();for(let o of r){if(!Wa.existsSync(o))continue;let i=Y(o);try{let s=n?drizzleOrm.eq(p.workspace_id,n):void 0,a=s?drizzleOrm.and(drizzleOrm.eq(p.id,e),s):drizzleOrm.eq(p.id,e),d=i.db.select().from(p).where(a).limit(1).get()??void 0;if(!d){let c=drizzleOrm.or(drizzleOrm.eq(p.thread_id,e),drizzleOrm.and(drizzleOrm.isNull(p.thread_id),drizzleOrm.like(p.command,`%--thread=${e}%`))),l=s?drizzleOrm.and(c,s):c;d=i.db.select().from(p).where(l).orderBy(drizzleOrm.desc(p.started_at)).limit(1).get()??void 0;}if(d)return d}catch(s){throw new P("DB_ERROR","Failed to find task status",s)}finally{i.close();}}}findChildTasks(e,n){let r=this.resolveDbPaths(),o=new Set,i=[];for(let s of r){if(!Wa.existsSync(s))continue;let a=Y(s);try{let d=n?drizzleOrm.and(drizzleOrm.eq(p.parent_task_id,e),drizzleOrm.eq(p.workspace_id,n)):drizzleOrm.eq(p.parent_task_id,e),c=a.db.select().from(p).where(d).orderBy(drizzleOrm.asc(p.started_at)).all();for(let l of c)o.has(l.id)||(o.add(l.id),i.push(l));}catch(d){throw new P("DB_ERROR","Failed to find child tasks",d)}finally{a.close();}}return i}getWorkspaceUsageSummary(e){if(!this.dbExists())return [];let n=this.openHandle(false);try{return n.db.all(e?drizzleOrm.sql`
106
106
  SELECT
107
107
  COALESCE(workspace_id, 'unknown') AS workspace_id,
108
108
  COALESCE(SUM(input_tokens), 0) AS input_tokens,
@@ -123,7 +123,7 @@ ${r.join(`
123
123
  FROM tasks
124
124
  GROUP BY workspace_id
125
125
  ORDER BY (COALESCE(SUM(input_tokens), 0) + COALESCE(SUM(output_tokens), 0)) DESC
126
- `)}catch(r){throw new C("DB_ERROR","Failed to get workspace usage summary",r)}finally{n.close();}}getThreadTokenUsage(e,n){let r=this.resolveDbPaths(),o=new Set,i=0,s=0,a=0;for(let d of r){if(!Ua.existsSync(d))continue;let c=Q(d);try{let l=drizzleOrm.or(drizzleOrm.eq(p.thread_id,e),drizzleOrm.and(drizzleOrm.isNull(p.thread_id),drizzleOrm.like(p.command,`%--thread=${e}%`))),f=n?drizzleOrm.and(l,drizzleOrm.eq(p.workspace_id,n)):l,g=c.db.select({id:p.id,input_tokens:p.input_tokens,output_tokens:p.output_tokens,cost_usd:p.cost_usd}).from(p).where(f).all();for(let m of g)o.has(m.id)||(o.add(m.id),i+=m.input_tokens??0,s+=m.output_tokens??0,a+=m.cost_usd??0);}catch(l){throw new C("DB_ERROR","Failed to get thread token usage",l)}finally{c.close();}}return {inputTokens:i,outputTokens:s,costUsd:a}}findTasksByThread(e,n){let r=this.resolveDbPaths(),o=new Set,i=[];for(let s of r){if(!Ua.existsSync(s))continue;let a=Q(s);try{let d=drizzleOrm.or(drizzleOrm.eq(p.thread_id,e),drizzleOrm.and(drizzleOrm.isNull(p.thread_id),drizzleOrm.like(p.command,`%--thread=${e}%`))),c=n?drizzleOrm.and(d,drizzleOrm.eq(p.workspace_id,n)):d,l=a.db.select().from(p).where(c).orderBy(drizzleOrm.asc(p.started_at)).all();for(let f of l)o.has(f.id)||(o.add(f.id),i.push(f));}catch(d){throw new C("DB_ERROR","Failed to find tasks by thread",d)}finally{a.close();}}return i}parseWorkflowCardMetadata(e){if(!e)return {};try{let n=JSON.parse(e);return {kind:typeof n.kind=="string"?n.kind:void 0,workflowRunId:typeof n.workflowRunId=="string"?n.workflowRunId:void 0}}catch{return {}}}extractThreadIdFromCommand(e){return e?/--thread=(\S+)/.exec(e)?.[1]??null:null}findRunningWorkflowParentTasks(){if(!this.dbExists())return [];let e=[];for(let n of this.resolveDbPaths()){if(!Ua.existsSync(n))continue;let r=Q(n);try{e.push(...r.db.select({id:p.id,agent_id:p.agent_id,thread_id:p.thread_id,workspace_id:p.workspace_id,platform:p.platform,status:p.status,error:p.error,completed_at:p.completed_at,duration_ms:p.duration_ms,started_at:p.started_at,metadata:p.metadata}).from(p).where(drizzleOrm.and(drizzleOrm.eq(p.platform,"workflow"),drizzleOrm.or(drizzleOrm.like(p.metadata,'%"kind":"workflow_card"%'),drizzleOrm.like(p.metadata,'%"kind":"workflow_ui_instance"%')))).orderBy(drizzleOrm.desc(p.started_at)).all());}catch(o){throw new C("DB_ERROR","Failed to find workflow parent tasks",o)}finally{r.close();}}return e}batchFetchWorkflowCards(e,n){let r=new Map;if(e.length===0)return r;let o=new Set(e),i=new Map,s=n?drizzleOrm.eq(p.workspace_id,n):void 0,a=(d,c)=>{if(!d)return;let l=i.get(d);if(l&&c.started_at<=l)return;let f=this.parseWorkflowCardMetadata(c.metadata);f.kind!=="workflow_card"&&f.kind!=="workflow_ui_instance"||(i.set(d,c.started_at),r.set(d,{taskId:c.id,workflowRunId:f.workflowRunId,raw:c.result??void 0}));};for(let d of this.resolveDbPaths()){if(!Ua.existsSync(d))continue;let c=Q(d);try{let l=drizzleOrm.and(drizzleOrm.inArray(p.thread_id,e),drizzleOrm.or(drizzleOrm.like(p.metadata,'%"kind":"workflow_card"%'),drizzleOrm.like(p.metadata,'%"kind":"workflow_ui_instance"%'))),f=c.db.select({id:p.id,thread_id:p.thread_id,metadata:p.metadata,result:p.result,started_at:p.started_at}).from(p).where(s?drizzleOrm.and(l,s):l).all();for(let k of f)a(k.thread_id,k);let g=drizzleOrm.and(drizzleOrm.isNull(p.thread_id),drizzleOrm.or(drizzleOrm.like(p.metadata,'%"kind":"workflow_card"%'),drizzleOrm.like(p.metadata,'%"kind":"workflow_ui_instance"%'))),m=c.db.select({id:p.id,command:p.command,metadata:p.metadata,result:p.result,started_at:p.started_at}).from(p).where(s?drizzleOrm.and(g,s):g).all();for(let k of m){let h=this.extractThreadIdFromCommand(k.command);!h||!o.has(h)||a(h,k);}}catch(l){throw new C("DB_ERROR","Failed to batch fetch workflow cards",l)}finally{c.close();}}return r}findAllTasks(e){if(!this.dbExists())return {rows:[],total:0};let n=this.openHandle(false);try{let r=[];e.workspaceId&&r.push(drizzleOrm.eq(p.workspace_id,e.workspaceId));let o=e.agents&&e.agents.length>0?e.agents:e.agentId?[e.agentId]:null;o&&r.push(drizzleOrm.inArray(p.agent_id,o));let i=e.statuses&&e.statuses.length>0?e.statuses:e.status?[e.status]:null;i&&r.push(drizzleOrm.inArray(p.status,i));let s=e.q??e.search;s&&r.push(drizzleOrm.like(p.prompt,`%${s}%`)),e.from&&r.push(drizzleOrm.gte(p.started_at,e.from)),e.to&&r.push(drizzleOrm.lt(p.started_at,e.to));let a=r.length>0?drizzleOrm.and(...r):void 0,d=n.db.select({count:drizzleOrm.sql`count(*)`}).from(p).where(a).get(),c=(e.sortDir??"DESC")==="ASC"?drizzleOrm.asc(p.started_at):drizzleOrm.desc(p.started_at);return {rows:n.db.select().from(p).where(a).orderBy(c).limit(e.limit).offset(e.offset).all(),total:d?.count??0}}catch(r){throw new C("DB_ERROR","Failed to find all tasks",r)}finally{n.close();}}getAgentUsage(e,n,r){if(!this.dbExists())return [];let o=this.openHandle(false);try{return o.db.all(r?drizzleOrm.sql`
126
+ `)}catch(r){throw new P("DB_ERROR","Failed to get workspace usage summary",r)}finally{n.close();}}getThreadTokenUsage(e,n){let r=this.resolveDbPaths(),o=new Set,i=0,s=0,a=0;for(let d of r){if(!Wa.existsSync(d))continue;let c=Y(d);try{let l=drizzleOrm.or(drizzleOrm.eq(p.thread_id,e),drizzleOrm.and(drizzleOrm.isNull(p.thread_id),drizzleOrm.like(p.command,`%--thread=${e}%`))),f=n?drizzleOrm.and(l,drizzleOrm.eq(p.workspace_id,n)):l,g=c.db.select({id:p.id,input_tokens:p.input_tokens,output_tokens:p.output_tokens,cost_usd:p.cost_usd}).from(p).where(f).all();for(let m of g)o.has(m.id)||(o.add(m.id),i+=m.input_tokens??0,s+=m.output_tokens??0,a+=m.cost_usd??0);}catch(l){throw new P("DB_ERROR","Failed to get thread token usage",l)}finally{c.close();}}return {inputTokens:i,outputTokens:s,costUsd:a}}findTasksByThread(e,n){let r=this.resolveDbPaths(),o=new Set,i=[];for(let s of r){if(!Wa.existsSync(s))continue;let a=Y(s);try{let d=drizzleOrm.or(drizzleOrm.eq(p.thread_id,e),drizzleOrm.and(drizzleOrm.isNull(p.thread_id),drizzleOrm.like(p.command,`%--thread=${e}%`))),c=n?drizzleOrm.and(d,drizzleOrm.eq(p.workspace_id,n)):d,l=a.db.select().from(p).where(c).orderBy(drizzleOrm.asc(p.started_at)).all();for(let f of l)o.has(f.id)||(o.add(f.id),i.push(f));}catch(d){throw new P("DB_ERROR","Failed to find tasks by thread",d)}finally{a.close();}}return i}parseWorkflowCardMetadata(e){if(!e)return {};try{let n=JSON.parse(e);return {kind:typeof n.kind=="string"?n.kind:void 0,workflowRunId:typeof n.workflowRunId=="string"?n.workflowRunId:void 0}}catch{return {}}}extractThreadIdFromCommand(e){return e?/--thread=(\S+)/.exec(e)?.[1]??null:null}findRunningWorkflowParentTasks(){if(!this.dbExists())return [];let e=[];for(let n of this.resolveDbPaths()){if(!Wa.existsSync(n))continue;let r=Y(n);try{e.push(...r.db.select({id:p.id,agent_id:p.agent_id,thread_id:p.thread_id,workspace_id:p.workspace_id,platform:p.platform,status:p.status,error:p.error,completed_at:p.completed_at,duration_ms:p.duration_ms,started_at:p.started_at,metadata:p.metadata}).from(p).where(drizzleOrm.and(drizzleOrm.eq(p.platform,"workflow"),drizzleOrm.or(drizzleOrm.like(p.metadata,'%"kind":"workflow_card"%'),drizzleOrm.like(p.metadata,'%"kind":"workflow_ui_instance"%')))).orderBy(drizzleOrm.desc(p.started_at)).all());}catch(o){throw new P("DB_ERROR","Failed to find workflow parent tasks",o)}finally{r.close();}}return e}batchFetchWorkflowCards(e,n){let r=new Map;if(e.length===0)return r;let o=new Set(e),i=new Map,s=n?drizzleOrm.eq(p.workspace_id,n):void 0,a=(d,c)=>{if(!d)return;let l=i.get(d);if(l&&c.started_at<=l)return;let f=this.parseWorkflowCardMetadata(c.metadata);f.kind!=="workflow_card"&&f.kind!=="workflow_ui_instance"||(i.set(d,c.started_at),r.set(d,{taskId:c.id,workflowRunId:f.workflowRunId,raw:c.result??void 0}));};for(let d of this.resolveDbPaths()){if(!Wa.existsSync(d))continue;let c=Y(d);try{let l=drizzleOrm.and(drizzleOrm.inArray(p.thread_id,e),drizzleOrm.or(drizzleOrm.like(p.metadata,'%"kind":"workflow_card"%'),drizzleOrm.like(p.metadata,'%"kind":"workflow_ui_instance"%'))),f=c.db.select({id:p.id,thread_id:p.thread_id,metadata:p.metadata,result:p.result,started_at:p.started_at}).from(p).where(s?drizzleOrm.and(l,s):l).all();for(let k of f)a(k.thread_id,k);let g=drizzleOrm.and(drizzleOrm.isNull(p.thread_id),drizzleOrm.or(drizzleOrm.like(p.metadata,'%"kind":"workflow_card"%'),drizzleOrm.like(p.metadata,'%"kind":"workflow_ui_instance"%'))),m=c.db.select({id:p.id,command:p.command,metadata:p.metadata,result:p.result,started_at:p.started_at}).from(p).where(s?drizzleOrm.and(g,s):g).all();for(let k of m){let h=this.extractThreadIdFromCommand(k.command);!h||!o.has(h)||a(h,k);}}catch(l){throw new P("DB_ERROR","Failed to batch fetch workflow cards",l)}finally{c.close();}}return r}findAllTasks(e){if(!this.dbExists())return {rows:[],total:0};let n=this.openHandle(false);try{let r=[];e.workspaceId&&r.push(drizzleOrm.eq(p.workspace_id,e.workspaceId));let o=e.agents&&e.agents.length>0?e.agents:e.agentId?[e.agentId]:null;o&&r.push(drizzleOrm.inArray(p.agent_id,o));let i=e.statuses&&e.statuses.length>0?e.statuses:e.status?[e.status]:null;i&&r.push(drizzleOrm.inArray(p.status,i));let s=e.q??e.search;s&&r.push(drizzleOrm.like(p.prompt,`%${s}%`)),e.from&&r.push(drizzleOrm.gte(p.started_at,e.from)),e.to&&r.push(drizzleOrm.lt(p.started_at,e.to));let a=r.length>0?drizzleOrm.and(...r):void 0,d=n.db.select({count:drizzleOrm.sql`count(*)`}).from(p).where(a).get(),c=(e.sortDir??"DESC")==="ASC"?drizzleOrm.asc(p.started_at):drizzleOrm.desc(p.started_at);return {rows:n.db.select().from(p).where(a).orderBy(c).limit(e.limit).offset(e.offset).all(),total:d?.count??0}}catch(r){throw new P("DB_ERROR","Failed to find all tasks",r)}finally{n.close();}}getAgentUsage(e,n,r){if(!this.dbExists())return [];let o=this.openHandle(false);try{return o.db.all(r?drizzleOrm.sql`
127
127
  SELECT
128
128
  t.agent_id,
129
129
  t.workspace_id,
@@ -131,11 +131,11 @@ ${r.join(`
131
131
  COALESCE(SUM(
132
132
  COALESCE(t.input_tokens, 0)
133
133
  + CASE
134
- WHEN t.started_at >= ${yt}
134
+ WHEN t.started_at >= ${vt}
135
135
  AND (
136
136
  t.crewx_version IS NULL
137
137
  OR (t.crewx_version LIKE '0.8.%' AND t.crewx_version NOT LIKE '0.8.9%')
138
- OR (t.crewx_version LIKE '0.8.9-rc.%' AND CAST(SUBSTR(t.crewx_version, ${wt}) AS INTEGER) < ${_t})
138
+ OR (t.crewx_version LIKE '0.8.9-rc.%' AND CAST(SUBSTR(t.crewx_version, ${Et}) AS INTEGER) < ${Rt})
139
139
  )
140
140
  THEN COALESCE(t.cached_input_tokens, 0)
141
141
  ELSE 0
@@ -154,11 +154,11 @@ ${r.join(`
154
154
  COALESCE(SUM(
155
155
  COALESCE(t.input_tokens, 0)
156
156
  + CASE
157
- WHEN t.started_at >= ${yt}
157
+ WHEN t.started_at >= ${vt}
158
158
  AND (
159
159
  t.crewx_version IS NULL
160
160
  OR (t.crewx_version LIKE '0.8.%' AND t.crewx_version NOT LIKE '0.8.9%')
161
- OR (t.crewx_version LIKE '0.8.9-rc.%' AND CAST(SUBSTR(t.crewx_version, ${wt}) AS INTEGER) < ${_t})
161
+ OR (t.crewx_version LIKE '0.8.9-rc.%' AND CAST(SUBSTR(t.crewx_version, ${Et}) AS INTEGER) < ${Rt})
162
162
  )
163
163
  THEN COALESCE(t.cached_input_tokens, 0)
164
164
  ELSE 0
@@ -174,11 +174,11 @@ ${r.join(`
174
174
  COALESCE(SUM(
175
175
  COALESCE(t.input_tokens, 0)
176
176
  + CASE
177
- WHEN t.started_at >= ${yt}
177
+ WHEN t.started_at >= ${vt}
178
178
  AND (
179
179
  t.crewx_version IS NULL
180
180
  OR (t.crewx_version LIKE '0.8.%' AND t.crewx_version NOT LIKE '0.8.9%')
181
- OR (t.crewx_version LIKE '0.8.9-rc.%' AND CAST(SUBSTR(t.crewx_version, ${wt}) AS INTEGER) < ${_t})
181
+ OR (t.crewx_version LIKE '0.8.9-rc.%' AND CAST(SUBSTR(t.crewx_version, ${Et}) AS INTEGER) < ${Rt})
182
182
  )
183
183
  THEN COALESCE(t.cached_input_tokens, 0)
184
184
  ELSE 0
@@ -196,11 +196,11 @@ ${r.join(`
196
196
  COALESCE(SUM(
197
197
  COALESCE(t.input_tokens, 0)
198
198
  + CASE
199
- WHEN t.started_at >= ${yt}
199
+ WHEN t.started_at >= ${vt}
200
200
  AND (
201
201
  t.crewx_version IS NULL
202
202
  OR (t.crewx_version LIKE '0.8.%' AND t.crewx_version NOT LIKE '0.8.9%')
203
- OR (t.crewx_version LIKE '0.8.9-rc.%' AND CAST(SUBSTR(t.crewx_version, ${wt}) AS INTEGER) < ${_t})
203
+ OR (t.crewx_version LIKE '0.8.9-rc.%' AND CAST(SUBSTR(t.crewx_version, ${Et}) AS INTEGER) < ${Rt})
204
204
  )
205
205
  THEN COALESCE(t.cached_input_tokens, 0)
206
206
  ELSE 0
@@ -208,18 +208,18 @@ ${r.join(`
208
208
  ), 0)
209
209
  + COALESCE(SUM(t.output_tokens), 0)
210
210
  ) DESC
211
- `).map(s=>({agentId:s.agent_id,workspaceId:s.workspace_id??null,totalTasks:s.total_tasks,inputTokens:s.input_tokens,outputTokens:s.output_tokens,cachedInputTokens:s.cached_input_tokens,costUsd:s.cost_usd,totalTokens:s.input_tokens+s.output_tokens}))}catch(i){throw new C("DB_ERROR","Failed to get agent usage",i)}finally{o.close();}}getAgentUsageTrendRaw(e,n,r){if(!this.dbExists())return [];let o=this.openHandle(false);try{return o.db.all(r?drizzleOrm.sql`
211
+ `).map(s=>({agentId:s.agent_id,workspaceId:s.workspace_id??null,totalTasks:s.total_tasks,inputTokens:s.input_tokens,outputTokens:s.output_tokens,cachedInputTokens:s.cached_input_tokens,costUsd:s.cost_usd,totalTokens:s.input_tokens+s.output_tokens}))}catch(i){throw new P("DB_ERROR","Failed to get agent usage",i)}finally{o.close();}}getAgentUsageTrendRaw(e,n,r){if(!this.dbExists())return [];let o=this.openHandle(false);try{return o.db.all(r?drizzleOrm.sql`
212
212
  SELECT
213
213
  date(t.started_at) AS date,
214
214
  t.agent_id,
215
215
  COALESCE(SUM(
216
216
  COALESCE(t.input_tokens, 0)
217
217
  + CASE
218
- WHEN t.started_at >= ${yt}
218
+ WHEN t.started_at >= ${vt}
219
219
  AND (
220
220
  t.crewx_version IS NULL
221
221
  OR (t.crewx_version LIKE '0.8.%' AND t.crewx_version NOT LIKE '0.8.9%')
222
- OR (t.crewx_version LIKE '0.8.9-rc.%' AND CAST(SUBSTR(t.crewx_version, ${wt}) AS INTEGER) < ${_t})
222
+ OR (t.crewx_version LIKE '0.8.9-rc.%' AND CAST(SUBSTR(t.crewx_version, ${Et}) AS INTEGER) < ${Rt})
223
223
  )
224
224
  THEN COALESCE(t.cached_input_tokens, 0)
225
225
  ELSE 0
@@ -242,11 +242,11 @@ ${r.join(`
242
242
  COALESCE(SUM(
243
243
  COALESCE(t.input_tokens, 0)
244
244
  + CASE
245
- WHEN t.started_at >= ${yt}
245
+ WHEN t.started_at >= ${vt}
246
246
  AND (
247
247
  t.crewx_version IS NULL
248
248
  OR (t.crewx_version LIKE '0.8.%' AND t.crewx_version NOT LIKE '0.8.9%')
249
- OR (t.crewx_version LIKE '0.8.9-rc.%' AND CAST(SUBSTR(t.crewx_version, ${wt}) AS INTEGER) < ${_t})
249
+ OR (t.crewx_version LIKE '0.8.9-rc.%' AND CAST(SUBSTR(t.crewx_version, ${Et}) AS INTEGER) < ${Rt})
250
250
  )
251
251
  THEN COALESCE(t.cached_input_tokens, 0)
252
252
  ELSE 0
@@ -261,14 +261,14 @@ ${r.join(`
261
261
  AND t.started_at < ${n}
262
262
  GROUP BY date(t.started_at), t.agent_id
263
263
  ORDER BY date(t.started_at) ASC
264
- `).map(s=>({date:s.date,agentId:s.agent_id,inputTokens:s.input_tokens,outputTokens:s.output_tokens,cachedInputTokens:s.cached_input_tokens,costUsd:s.cost_usd,totalTokens:s.input_tokens+s.output_tokens}))}catch(i){throw new C("DB_ERROR","Failed to get agent usage trend",i)}finally{o.close();}}findTaskForStop(e,n){if(!this.dbExists())return;let r=this.openHandle(false);try{return r.db.select().from(p).where(drizzleOrm.and(drizzleOrm.eq(p.id,e),drizzleOrm.eq(p.workspace_id,n))).limit(1).get()??void 0}catch(o){throw new C("DB_ERROR","Failed to find task for stop",o)}finally{r.close();}}findLatestTaskByMetadata(e){if(!this.dbExists())return null;let n=this.openHandle(false);try{return n.db.select({id:p.id,thread_id:p.thread_id,status:p.status,result:p.result,error:p.error,started_at:p.started_at,completed_at:p.completed_at,metadata:p.metadata}).from(p).where(drizzleOrm.and(drizzleOrm.eq(p.agent_id,e.agentId),drizzleOrm.eq(p.workspace_id,e.workspaceId),drizzleOrm.sql`${p.metadata} IS NOT NULL AND json_valid(${p.metadata}) AND json_extract(${p.metadata}, '$.' || ${e.metaKey}) = ${e.metaValue}`)).orderBy(drizzleOrm.desc(p.started_at)).limit(1).get()??null}catch(r){throw new C("DB_ERROR","Failed to find latest task by metadata",r)}finally{n.close();}}markTaskFailed(e,n,r){if(!this.dbExists())return;let o=this.openHandle(true);try{let i=new Date().toISOString(),s=r?drizzleOrm.and(drizzleOrm.eq(p.id,e),drizzleOrm.eq(p.status,"running"),drizzleOrm.eq(p.workspace_id,r)):drizzleOrm.and(drizzleOrm.eq(p.id,e),drizzleOrm.eq(p.status,"running"));o.db.update(p).set({status:"failed",error:n,completed_at:i}).where(s).run();}catch(i){throw i instanceof C?i:new C("DB_ERROR","Failed to mark task failed",i)}finally{o.close();}}findTasksByPromptHint(e,n){let r=this.resolveDbPaths(),o=new Set,i=[];for(let s of r){if(!Ua.existsSync(s))continue;let a=Q(s);try{let d=n?drizzleOrm.and(drizzleOrm.like(p.prompt,`%${e}%`),drizzleOrm.eq(p.workspace_id,n)):drizzleOrm.like(p.prompt,`%${e}%`),c=a.db.select().from(p).where(d).orderBy(drizzleOrm.asc(p.started_at)).all();for(let l of c)o.has(l.id)||(o.add(l.id),i.push(l));}catch(d){throw new C("DB_ERROR","Failed to find tasks by prompt hint",d)}finally{a.close();}}return i}getProviderUsage(e,n,r){if(!this.dbExists())return [];let o=this.openHandle(false);try{let i=Da(),s=drizzleOrm.sql`
264
+ `).map(s=>({date:s.date,agentId:s.agent_id,inputTokens:s.input_tokens,outputTokens:s.output_tokens,cachedInputTokens:s.cached_input_tokens,costUsd:s.cost_usd,totalTokens:s.input_tokens+s.output_tokens}))}catch(i){throw new P("DB_ERROR","Failed to get agent usage trend",i)}finally{o.close();}}findTaskForStop(e,n){if(!this.dbExists())return;let r=this.openHandle(false);try{return r.db.select().from(p).where(drizzleOrm.and(drizzleOrm.eq(p.id,e),drizzleOrm.eq(p.workspace_id,n))).limit(1).get()??void 0}catch(o){throw new P("DB_ERROR","Failed to find task for stop",o)}finally{r.close();}}findLatestTaskByMetadata(e){if(!this.dbExists())return null;let n=this.openHandle(false);try{return n.db.select({id:p.id,thread_id:p.thread_id,status:p.status,result:p.result,error:p.error,started_at:p.started_at,completed_at:p.completed_at,metadata:p.metadata}).from(p).where(drizzleOrm.and(drizzleOrm.eq(p.agent_id,e.agentId),drizzleOrm.eq(p.workspace_id,e.workspaceId),drizzleOrm.sql`${p.metadata} IS NOT NULL AND json_valid(${p.metadata}) AND json_extract(${p.metadata}, '$.' || ${e.metaKey}) = ${e.metaValue}`)).orderBy(drizzleOrm.desc(p.started_at)).limit(1).get()??null}catch(r){throw new P("DB_ERROR","Failed to find latest task by metadata",r)}finally{n.close();}}markTaskFailed(e,n,r){if(!this.dbExists())return;let o=this.openHandle(true);try{let i=new Date().toISOString(),s=r?drizzleOrm.and(drizzleOrm.eq(p.id,e),drizzleOrm.eq(p.status,"running"),drizzleOrm.eq(p.workspace_id,r)):drizzleOrm.and(drizzleOrm.eq(p.id,e),drizzleOrm.eq(p.status,"running"));o.db.update(p).set({status:"failed",error:n,completed_at:i}).where(s).run();}catch(i){throw i instanceof P?i:new P("DB_ERROR","Failed to mark task failed",i)}finally{o.close();}}findTasksByPromptHint(e,n){let r=this.resolveDbPaths(),o=new Set,i=[];for(let s of r){if(!Wa.existsSync(s))continue;let a=Y(s);try{let d=n?drizzleOrm.and(drizzleOrm.like(p.prompt,`%${e}%`),drizzleOrm.eq(p.workspace_id,n)):drizzleOrm.like(p.prompt,`%${e}%`),c=a.db.select().from(p).where(d).orderBy(drizzleOrm.asc(p.started_at)).all();for(let l of c)o.has(l.id)||(o.add(l.id),i.push(l));}catch(d){throw new P("DB_ERROR","Failed to find tasks by prompt hint",d)}finally{a.close();}}return i}getProviderUsage(e,n,r){if(!this.dbExists())return [];let o=this.openHandle(false);try{let i=Fa(),s=drizzleOrm.sql`
265
265
  COALESCE(${p.input_tokens}, 0)
266
266
  + CASE
267
- WHEN ${p.started_at} >= ${yt}
267
+ WHEN ${p.started_at} >= ${vt}
268
268
  AND (
269
269
  ${p.crewx_version} IS NULL
270
270
  OR (${p.crewx_version} LIKE '0.8.%' AND ${p.crewx_version} NOT LIKE '0.8.9%')
271
- OR (${p.crewx_version} LIKE '0.8.9-rc.%' AND CAST(SUBSTR(${p.crewx_version}, ${wt}) AS INTEGER) < ${_t})
271
+ OR (${p.crewx_version} LIKE '0.8.9-rc.%' AND CAST(SUBSTR(${p.crewx_version}, ${Et}) AS INTEGER) < ${Rt})
272
272
  )
273
273
  THEN COALESCE(${p.cached_input_tokens}, 0)
274
274
  ELSE 0
@@ -287,14 +287,14 @@ ${r.join(`
287
287
  ${a}
288
288
  GROUP BY ${i}
289
289
  ORDER BY (COALESCE(SUM(${s}), 0) + COALESCE(SUM(${p.output_tokens}), 0)) DESC
290
- `).map(c=>({provider:c.provider,totalTasks:c.total_tasks,inputTokens:c.input_tokens,outputTokens:c.output_tokens,cachedInputTokens:c.cached_input_tokens,costUsd:c.cost_usd,totalTokens:c.input_tokens+c.output_tokens,activeDurationMs:c.active_duration_ms??0,lastActiveAt:c.last_active_at??null}))}catch(i){throw new C("DB_ERROR","Failed to get provider usage",i)}finally{o.close();}}getModelUsage(e,n,r){if(!this.dbExists())return [];let o=this.openHandle(false);try{let i=Da(),s=drizzleOrm.sql`
290
+ `).map(c=>({provider:c.provider,totalTasks:c.total_tasks,inputTokens:c.input_tokens,outputTokens:c.output_tokens,cachedInputTokens:c.cached_input_tokens,costUsd:c.cost_usd,totalTokens:c.input_tokens+c.output_tokens,activeDurationMs:c.active_duration_ms??0,lastActiveAt:c.last_active_at??null}))}catch(i){throw new P("DB_ERROR","Failed to get provider usage",i)}finally{o.close();}}getModelUsage(e,n,r){if(!this.dbExists())return [];let o=this.openHandle(false);try{let i=Fa(),s=drizzleOrm.sql`
291
291
  COALESCE(${p.input_tokens}, 0)
292
292
  + CASE
293
- WHEN ${p.started_at} >= ${yt}
293
+ WHEN ${p.started_at} >= ${vt}
294
294
  AND (
295
295
  ${p.crewx_version} IS NULL
296
296
  OR (${p.crewx_version} LIKE '0.8.%' AND ${p.crewx_version} NOT LIKE '0.8.9%')
297
- OR (${p.crewx_version} LIKE '0.8.9-rc.%' AND CAST(SUBSTR(${p.crewx_version}, ${wt}) AS INTEGER) < ${_t})
297
+ OR (${p.crewx_version} LIKE '0.8.9-rc.%' AND CAST(SUBSTR(${p.crewx_version}, ${Et}) AS INTEGER) < ${Rt})
298
298
  )
299
299
  THEN COALESCE(${p.cached_input_tokens}, 0)
300
300
  ELSE 0
@@ -313,7 +313,7 @@ ${r.join(`
313
313
  FROM ${p}
314
314
  ${a}
315
315
  GROUP BY ${p.model}, ${i}
316
- `),c=new Map;for(let l of d){let f=_o(l.model??""),g=JSON.stringify([l.provider,f]),m=c.get(g);m?(m.totalTasks+=l.total_tasks,m.inputTokens+=l.input_tokens,m.outputTokens+=l.output_tokens,m.cachedInputTokens+=l.cached_input_tokens,m.costUsd+=l.cost_usd,m.totalTokens+=l.input_tokens+l.output_tokens,m.activeDurationMs+=l.active_duration_ms??0,l.last_active_at&&(!m.lastActiveAt||l.last_active_at>m.lastActiveAt)&&(m.lastActiveAt=l.last_active_at)):c.set(g,{model:f,provider:l.provider,totalTasks:l.total_tasks,inputTokens:l.input_tokens,outputTokens:l.output_tokens,cachedInputTokens:l.cached_input_tokens,costUsd:l.cost_usd,totalTokens:l.input_tokens+l.output_tokens,activeDurationMs:l.active_duration_ms??0,lastActiveAt:l.last_active_at??null});}return Array.from(c.values()).sort((l,f)=>f.costUsd-l.costUsd)}catch(i){throw new C("DB_ERROR","Failed to get model usage",i)}finally{o.close();}}getTasksForReport(e,n,r){if(!this.dbExists())return [];let o=this.openHandle(false);try{let i=r?drizzleOrm.sql`WHERE ${p.started_at} >= ${e} AND ${p.started_at} < ${n} AND ${p.workspace_id} = ${r}`:drizzleOrm.sql`WHERE ${p.started_at} >= ${e} AND ${p.started_at} < ${n}`;return o.db.all(drizzleOrm.sql`
316
+ `),c=new Map;for(let l of d){let f=Eo(l.model??""),g=JSON.stringify([l.provider,f]),m=c.get(g);m?(m.totalTasks+=l.total_tasks,m.inputTokens+=l.input_tokens,m.outputTokens+=l.output_tokens,m.cachedInputTokens+=l.cached_input_tokens,m.costUsd+=l.cost_usd,m.totalTokens+=l.input_tokens+l.output_tokens,m.activeDurationMs+=l.active_duration_ms??0,l.last_active_at&&(!m.lastActiveAt||l.last_active_at>m.lastActiveAt)&&(m.lastActiveAt=l.last_active_at)):c.set(g,{model:f,provider:l.provider,totalTasks:l.total_tasks,inputTokens:l.input_tokens,outputTokens:l.output_tokens,cachedInputTokens:l.cached_input_tokens,costUsd:l.cost_usd,totalTokens:l.input_tokens+l.output_tokens,activeDurationMs:l.active_duration_ms??0,lastActiveAt:l.last_active_at??null});}return Array.from(c.values()).sort((l,f)=>f.costUsd-l.costUsd)}catch(i){throw new P("DB_ERROR","Failed to get model usage",i)}finally{o.close();}}getTasksForReport(e,n,r){if(!this.dbExists())return [];let o=this.openHandle(false);try{let i=r?drizzleOrm.sql`WHERE ${p.started_at} >= ${e} AND ${p.started_at} < ${n} AND ${p.workspace_id} = ${r}`:drizzleOrm.sql`WHERE ${p.started_at} >= ${e} AND ${p.started_at} < ${n}`;return o.db.all(drizzleOrm.sql`
317
317
  SELECT
318
318
  ${p.thread_id} AS thread_id,
319
319
  ${p.agent_id} AS agent_id,
@@ -324,12 +324,12 @@ ${r.join(`
324
324
  FROM ${p}
325
325
  ${i}
326
326
  ORDER BY ${p.started_at} ASC
327
- `).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(i){throw new C("DB_ERROR","Failed to get tasks for report",i)}finally{o.close();}}findTaskEvidence(e){if(!this.dbExists())return [];let n=this.openHandle(false);try{let r=[];e.workspaceId&&r.push(drizzleOrm.eq(p.workspace_id,e.workspaceId)),e.agents&&e.agents.length>0&&r.push(drizzleOrm.inArray(p.agent_id,e.agents)),e.statuses&&e.statuses.length>0&&r.push(drizzleOrm.inArray(p.status,e.statuses)),e.from&&r.push(drizzleOrm.gte(p.started_at,e.from)),e.to&&r.push(drizzleOrm.lt(p.started_at,e.to));let o=r.length>0?drizzleOrm.and(...r):void 0,i=(e.order??"DESC")==="ASC"?drizzleOrm.asc(p.started_at):drizzleOrm.desc(p.started_at),s={id:p.id,agent_id:p.agent_id,status:p.status,prompt:p.prompt,started_at:p.started_at,completed_at:p.completed_at,thread_id:p.thread_id};return e.limit?n.db.select(s).from(p).where(o).orderBy(i).limit(e.limit).all():n.db.select(s).from(p).where(o).orderBy(i).all()}catch(r){throw new C("DB_ERROR","Failed to find task evidence",r)}finally{n.close();}}findThreadChains(e){if(!this.dbExists())return [];let n=this.openHandle(false);try{let r=e.maxThreads??8,o=e.maxTurnsPerThread??4,i=[drizzleOrm.isNotNull(p.thread_id),drizzleOrm.isNull(p.parent_task_id),drizzleOrm.isNull(p.caller_agent_id),drizzleOrm.or(drizzleOrm.isNull(p.platform),drizzleOrm.ne(p.platform,"workflow")),drizzleOrm.or(drizzleOrm.isNull(p.metadata),drizzleOrm.and(drizzleOrm.notLike(p.metadata,'%"kind":"workflow_card"%'),drizzleOrm.notLike(p.metadata,'%"kind":"workflow_ui_instance"%'))),drizzleOrm.or(drizzleOrm.isNull(p.metadata),drizzleOrm.notLike(p.metadata,'%"retriedFromTaskId"%'))];e.workspaceId&&i.push(drizzleOrm.eq(p.workspace_id,e.workspaceId)),e.from&&i.push(drizzleOrm.gte(p.started_at,e.from)),e.to&&i.push(drizzleOrm.lt(p.started_at,e.to));let s=n.db.select({id:p.id,agent_id:p.agent_id,status:p.status,prompt:p.prompt,started_at:p.started_at,completed_at:p.completed_at,thread_id:p.thread_id}).from(p).where(drizzleOrm.and(...i)).orderBy(drizzleOrm.asc(p.started_at),drizzleOrm.asc(p.id)).all(),a=new Map;for(let c of s){if(!c.thread_id)continue;let l={id:c.id,agentId:c.agent_id,status:c.status,prompt:c.prompt,startedAt:c.started_at,completedAt:c.completed_at},f=a.get(c.thread_id);f?f.push(l):a.set(c.thread_id,[l]);}let d=[];for(let[c,l]of a){let f=l.filter(g=>g.agentId===e.targetAgentId).length;f<2||d.push({threadId:c,targetAgentTurnCount:f,turns:l});}return d.sort((c,l)=>{let f=c.turns[c.turns.length-1].startedAt,g=l.turns[l.turns.length-1].startedAt;return f<g?1:f>g?-1:0}),d.slice(0,r).map(c=>({threadId:c.threadId,targetAgentTurnCount:c.targetAgentTurnCount,turns:c.turns.slice(-o)}))}catch(r){throw new C("DB_ERROR","Failed to find thread chains",r)}finally{n.close();}}};var Lp=new Set(["Read","Grep","Find","Glob"]),$p=["git status","git log","git branch","git diff --stat","git show","git remote","git rev-parse","git ls-files","pwd","ls ","echo ","cat ","head ","tail ","npx crewx memory index","npx crewx memory find","npx crewx memory get","npx crewx doc toc","npx crewx doc section","npx crewx doc status","npx crewx search","npx skill tsserver find","npx skill tsserver refs","npx skill tsserver type","crewx memory index","crewx memory find","crewx memory get","crewx doc toc","crewx doc section","crewx doc status","crewx search","crewx agent ls","crewx agent list"],Bp=[/\bgit\s+(commit|push|pull|merge|rebase|reset|checkout|switch|add|rm)\b/,/\bnpm\s+(install|ci|publish|run\s+(test|lint|build))\b/,/\bnpx\s+tsc\b/,/\bpnpm\s+(install|run)\b/,/\bvitest\b/,/\bjest\b/],jp=8e3,Fp=100,Hp=3,Wp=Number.MAX_SAFE_INTEGER;function qp(t){let e=t.toLowerCase();return e==="bash"||e==="terminal"?"Bash":e==="read"||e==="view"?"Read":e==="edit"||e==="apply_patch"?"Edit":e==="write"?"Write":e==="grep"||e==="rg"?"Grep":e==="glob"||e==="find"?"Find":t}function zp(t,e){if(Lp.has(t))return true;if(t!=="Bash"||!e)return false;let n=e.split(`
328
- `)[0].trimStart();return Bp.some(r=>r.test(n))?false:$p.some(r=>n.startsWith(r))}function rn(t){return t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function Gp(t,e,n){if(t!=="Read"||!e)return "ok";let o=e.split(`
329
- `).find(i=>i.trim()&&!i.startsWith("Read "))?.trim()??e.trim();if(!o)return "unknown";try{let i=Ua__namespace.statSync(o);if(n){let s=Date.parse(n);if(!Number.isNaN(s)&&i.mtimeMs>s)return "stale"}return "ok"}catch{return "unknown"}}function Vp(t){let e=new Set;for(let n of t)try{let r=JSON.parse(n);r.type&&e.add(r.type);}catch{}return e.has("turn.started")||e.has("thread.started")?"codex":e.has("assistant.message_delta")?"copilot":e.has("step_start")&&e.has("step_finish")?"opencode":e.has("system")&&e.has("result")?"claude":e.has("init")&&e.has("message")?"gemini":e.has("result")&&e.has("assistant")?"claude":null}function Jp(t){if(!Array.isArray(t))return [];let e=t,n=e.filter(a=>a.level==="stdout"&&a.message).map(a=>a.message),r=Vp(n),o=[];for(let a of e)a.level==="info"&&a.message?o.push(...Le(a.message,a.timestamp)):a.level==="stdout"&&a.message&&r&&o.push(...bn("",a.message,r));let i=new Map,s=[];for(let a of o)if(a.type==="tool_use"){let d={tool:qp(a.toolName??""),input:a.toolInput??null,result:null,isError:false},c=a.toolUseId;if(c){if(i.has(c)){i.get(c).input=d.input;continue}i.set(c,d);}s.push(d);}else if(a.type==="tool_result"){if(a.toolUseId&&i.has(a.toolUseId)){let d=i.get(a.toolUseId);d.isError=a.isError===true,d.result=a.resultPreview??null;}else for(let d=s.length-1;d>=0;d--)if(s[d].result===null){s[d].isError=a.isError===true,s[d].result=a.resultPreview??null;break}}return s}function Kp(t,e){let n=Jp(t),r=[];for(let o of n){let i=o.tool==="Bash"?o.input?.split(`
330
- `)[0]?.slice(0,150)??null:o.input?.slice(0,150)??null,s=zp(o.tool,o.input)&&!o.isError;r.push({tool:o.tool,cmd:i,result:o.result,status:Gp(o.tool,o.input,e),reusable:s});}return r}function La(t){let e=["<activity_log>"],{entries:n,omissions:r,tokenCap:o,totalEntries:i}=t,s=r.reduce((a,d)=>a+d.count,0);if(n.length===0&&s===0)e.push(" <!-- no activity found in previous tasks -->");else {if(e.push(" <!-- tool activity from previous tasks -->"),r.length>0){e.push(` <!-- activity_log_budget token_cap="${o}" included_entries="${n.length}" omitted_entries="${s}" total_entries="${i}" -->`);for(let a of r)e.push(` <!-- omitted_entries reason="${rn(a.reason)}" count="${a.count}": ${rn(a.message)} -->`);}for(let a of n){let d=a.entry,c=`tool="${rn(d.tool)}"`,l=d.cmd?` cmd="${rn(d.cmd)}"`:"",f="";if(d.reusable&&(f=d.status==="stale"?' reused="stale"':' reused="ok"'),d.reusable&&d.status==="stale")e.push(` <entry ${c}${l}${f}>\u26A0\uFE0F changed since \u2014 re-read</entry>`);else if(d.result){e.push(` <entry ${c}${l}${f}>`);let g=Br(d.result),m=Math.min(a.bodyCharsShown??g.length,g.length);g.length>m?e.push(rn(g.slice(0,m))+` \u2026 [truncated, ${m}/${g.length} chars shown]`):e.push(rn(g)),e.push(" </entry>");}else e.push(` <entry ${c}${l}${f} />`);}}return e.push("</activity_log>"),e}function Xp(t){return typeof t!="number"||!Number.isFinite(t)||t<0?jp:Math.floor(t)}function Yp(t,e,n){let r=Math.floor(e/Fp),o=Math.pow(2,t+r);return !Number.isFinite(o)||o<=0?0:Math.floor(n/o)}function Qp(t,e){let n=Math.pow(2,e+Hp);return !Number.isFinite(n)||n<=0?0:Math.floor(t/n)}function $a(t,e,n,r){let o=t.result?.length??null,i=o===null?null:Math.min(o,Math.max(0,n));return {entry:t,newestIndex:e,bodyLimitChars:n,bodyCharsShown:o===null?null:Math.max(0,Math.min(r??i??0,i??0)),originalBodyChars:o}}function Ba(t,e){let n=[];return t>0&&n.push({reason:"token_cap",count:t,message:"older entries omitted after the per-task token cap was reached"}),e>0&&n.push({reason:"repository_limit",count:e,message:"older entries omitted by the explicit repository safety limit before budgeting"}),n}function ja(t){let e=Ba(t.omittedByTokenCap,t.repositoryLimitOmitted);return La({entries:t.entries,omissions:e,tokenCap:t.tokenCap,totalEntries:t.totalEntries}).join(`
331
- `)}function _i(t,e){let n=t(e);return !Number.isFinite(n)||n<0?0:Math.floor(n)}function Zp(t){let{entry:e,bodyLimitChars:n}=t;if(!e.result)return null;let r=Math.min(e.result.length,Math.max(0,n));for(let o=r;o>=0;o--){let i=$a(e,t.newestIndex,n,o),s=[...t.selectedEntries,i],a=t.totalEntries-s.length-t.repositoryLimitOmitted,d=ja({entries:s,tokenCap:t.tokenCap,totalEntries:t.totalEntries,omittedByTokenCap:a,repositoryLimitOmitted:t.repositoryLimitOmitted});if(_i(t.countTokens,d)<=t.tokenCap)return i}return null}function ef(t){let e=t.repositoryEntryLimit,n=typeof e=="number"&&Number.isFinite(e)&&e>=0&&t.entries.length>e,r=n?t.entries.length-Math.floor(e):0,i=[...n?t.entries.slice(r):t.entries].reverse(),s=[],a=t.entries.length;for(let g=0;g<i.length;g++){let m=i[g],k=Yp(t.taskDistance,g,t.baseEntryChars),h=$a(m,g,k),v=[...s,h],w=a-v.length-r,_=ja({entries:v,tokenCap:t.tokenCap,totalEntries:a,omittedByTokenCap:w,repositoryLimitOmitted:r});if(_i(t.countTokens,_)<=t.tokenCap){s.push(h);continue}let b=Zp({selectedEntries:s,entry:m,newestIndex:g,bodyLimitChars:k,tokenCap:t.tokenCap,totalEntries:a,repositoryLimitOmitted:r,countTokens:t.countTokens});b&&s.push(b);break}let d=a-s.length-r,c=Ba(d,r),l=La({entries:s,omissions:c,tokenCap:t.tokenCap,totalEntries:a}).join(`
332
- `),f=_i(t.countTokens,l);return {taskId:t.taskId,taskDistance:t.taskDistance,tokenCap:t.tokenCap,tokenCount:f,includedEntries:s.length,omittedEntries:c.reduce((g,m)=>g+m.count,0),totalEntries:a,omissions:c,entries:s,activityLog:l}}function wi(t){return {threadId:t.threadId,agentId:t.agentId,lookback:t.lookback,activityLogTokenBudget:t.activityLogTokenBudget,baseEntryChars:t.baseEntryChars,tasks:[],activityLogByTask:new Map}}function tf(t){return !Number.isFinite(t)||t<0?0:Math.floor(t)}function nf(t){return t.length}function ki(t){let e=Xp(t.maxEntryChars),n=tf(t.activityLogTokenBudget),r=Math.max(0,Math.floor(t.lookback));if(!r||!t.threadId||!t.agentId)return wi({threadId:t.threadId,agentId:t.agentId,lookback:r,activityLogTokenBudget:n,baseEntryChars:e});let o;try{o=new nn().findTasksByThread(t.threadId).filter(c=>!c.parent_task_id&&c.agent_id===t.agentId).sort((c,l)=>l.started_at>c.started_at?1:-1).slice(0,r);}catch{return wi({threadId:t.threadId,agentId:t.agentId,lookback:r,activityLogTokenBudget:n,baseEntryChars:e})}if(!o.length)return wi({threadId:t.threadId,agentId:t.agentId,lookback:r,activityLogTokenBudget:n,baseEntryChars:e});let i=[];for(let d of o){let c=[];try{let l=JSON.parse(d.logs??"[]");Array.isArray(l)&&(c=l);}catch{}i.push({taskId:d.id,entries:Kp(c,d.completed_at)});}let s=[],a=new Map;for(let d=0;d<i.length;d++){let{taskId:c,entries:l}=i[d];if(l.length===0)continue;let f=ef({taskId:c,entries:l,taskDistance:d,baseEntryChars:e,tokenCap:Qp(n,d),countTokens:t.countTokens,repositoryEntryLimit:t.repositoryEntryLimit});s.push(f),a.set(c,f.activityLog);}return {threadId:t.threadId,agentId:t.agentId,lookback:r,activityLogTokenBudget:n,baseEntryChars:e,tasks:s,activityLogByTask:a}}function Fa(t){if(t.activityLogTokenBudget!==void 0&&!t.countTokens)throw new Error("countTokens is required when activityLogTokenBudget is supplied");return ki({threadId:t.threadId,agentId:t.agentId,lookback:t.lookback,maxEntryChars:t.maxEntryChars,activityLogTokenBudget:t.activityLogTokenBudget??Wp,countTokens:t.countTokens??nf,repositoryEntryLimit:t.repositoryEntryLimit}).activityLogByTask}u();u();var of={agentId:zod.z.string().describe("The agent ID to query"),query:zod.z.string().describe("The query message to send"),context:zod.z.string().optional().describe("Additional context"),thread:zod.z.string().optional().describe("Thread ID for conversation continuity")},sf={agentId:zod.z.string().describe("The agent ID to execute"),task:zod.z.string().describe("The task description to execute"),context:zod.z.string().optional().describe("Additional context"),thread:zod.z.string().optional().describe("Thread ID for conversation continuity")};function Ha(t,e,n){t.tool("crewx_listAgents","List available CrewX agents exposed by this server",async()=>{let r=[];for(let o of n){let i=e.agents.get(o);i&&r.push({id:i.id,name:i.name??i.id,description:i.description??""});}return {content:[{type:"text",text:JSON.stringify(r,null,2)}]}}),t.tool("crewx_queryAgent","Query a CrewX agent with a read-only question",of,async({agentId:r,query:o,context:i,thread:s})=>{if(!n.has(r))return {content:[{type:"text",text:`Agent '${r}' is not exposed by this server`}],isError:true};let a=await e.query(r,o,{context:i,threadId:s});return a.ok?{content:[{type:"text",text:a.data}]}:{content:[{type:"text",text:a.error?.message??"Query failed"}],isError:true}}),t.tool("crewx_executeAgent","Execute a task on a CrewX agent (may modify state)",sf,async({agentId:r,task:o,context:i,thread:s})=>{if(!n.has(r))return {content:[{type:"text",text:`Agent '${r}' is not exposed by this server`}],isError:true};let a=await e.execute(r,o,{context:i,threadId:s});return a.ok?{content:[{type:"text",text:a.data}]}:{content:[{type:"text",text:a.error?.message??"Execute failed"}],isError:true}});}u();function Wa(t){return t.headers.get("Origin")?null:new Response(JSON.stringify({error:"Forbidden: Origin header required"}),{status:403,headers:{"Content-Type":"application/json"}})}async function qa(t,e){return e?await e(t)?null:new Response(JSON.stringify({error:"Unauthorized"}),{status:401,headers:{"Content-Type":"application/json"}}):null}function cf(t,e){let n=new mcp_js.McpServer({name:"crewx-mcp-server",version:"1.0.0"},{capabilities:{tools:{}}});return Ha(n,t,e),n}function vi(t,e){if(!e.agents||e.agents.length===0)throw new Error("crewx.handler() requires at least one agent in the agents option");let n=new Set(e.agents),r=new Map;return async o=>{let i=Wa(o);if(i)return i;let s=await qa(o,e.auth);if(s)return s;let a=o.headers.get("mcp-session-id");if(a&&r.has(a))return r.get(a).transport.handleRequest(o);let d=cf(t,n),c=new webStandardStreamableHttp_js.WebStandardStreamableHTTPServerTransport({sessionIdGenerator:()=>crypto.randomUUID(),onsessioninitialized:l=>{r.set(l,{transport:c,server:d});},onsessionclosed:l=>{r.delete(l);},enableJsonResponse:true});return await d.connect(c),c.handleRequest(o)}}u();function Ei(t){let e=K__namespace.resolve(t);return process.platform==="win32"&&(e=e.replace(/\\/g,"/"),e=e.replace(/^([A-Z]):/,(n,r)=>`${r.toLowerCase()}:`)),e.length>1&&!/^[a-zA-Z]:\/$/.test(e)&&(e=e.replace(/\/+$/,"")),e}function Jr(t){let e=Ei(t);return crypto$1.createHash("sha256").update(e).digest("hex")}u();u();function zn(t){let n=t.renderer!==void 0||t.surfaces!==void 0||t.stateProjection!==void 0||Object.values(t.actions).some(o=>o.resultProjection!==void 0)?{id:t.id,version:t.version,renderer:t.renderer,surfaces:t.surfaces,stateProjection:t.stateProjection,actions:t.actions}:{id:t.id,version:t.version,actions:t.actions},r=oe(n);return crypto$1.createHash("sha256").update(_a(r)).digest("hex")}function xi(t){return `${t.id}\0${t.version}`}function Va(t){if(!/^\d+$/.test(String(t.version))||t.version<1||t.id.length<1||t.id.length>128)throw new x("DEFINITION_UNSUPPORTED","UI definition is invalid");if(!/^[0-9a-f]{64}$/.test(t.hash)||zn(t)!==t.hash)throw new x("DEFINITION_UNSUPPORTED","UI definition hash is invalid");for(let[e,n]of Object.entries(t.actions)){if(!e||!Array.isArray(n.capabilities)||n.capabilities.some(r=>!pf(r)))throw new x("DEFINITION_UNSUPPORTED","UI action declaration is invalid");if(n.inputKeys&&(!Array.isArray(n.inputKeys)||n.inputKeys.some(r=>typeof r!="string"||!r)))throw new x("DEFINITION_UNSUPPORTED","UI action input declaration is invalid");n.resultProjection&&Ga(n.resultProjection);}if(t.renderer!==void 0&&(!t.renderer||t.renderer.length>128))throw new x("DEFINITION_UNSUPPORTED","UI definition renderer is invalid");if(t.surfaces&&(!Array.isArray(t.surfaces)||t.surfaces.some(e=>!e||e.length>64)))throw new x("DEFINITION_UNSUPPORTED","UI definition surfaces are invalid");t.stateProjection&&Ga(t.stateProjection);}function Ga(t){if(!Array.isArray(t.allow)||t.allow.some(e=>!/^[A-Za-z0-9_]+(?:\.[A-Za-z0-9_]+)*$/.test(e)))throw new x("DEFINITION_UNSUPPORTED","UI projection policy is invalid")}function pf(t){return t.length>0&&t.length<=128&&t!=="*"&&t!=="all"&&!/[/*]/.test(t)}u();function Kr(t,e,n){let r=new Set(e),o=n===void 0?void 0:new Set(n);return t.filter(i=>r.has(i)&&(o===void 0||o.has(i)))}u();u();function bi(){if(process.env.CREWX_HOME)try{return Ua__namespace.realpathSync(process.env.CREWX_HOME)}catch{return K__namespace.join(Ri__namespace.homedir(),".crewx")}return process.platform!=="win32"&&process.env.XDG_CONFIG_HOME?K__namespace.join(process.env.XDG_CONFIG_HOME,"crewx"):K__namespace.join(Ri__namespace.homedir(),".crewx")}u();u();u();u();u();var Yr=class extends le{dbPath;constructor(e={}){super(),e.dbPath?this.dbPath=e.dbPath:e.dbRoot&&(this.dbPath=K.join(e.dbRoot,".crewx","crewx.db"));}resolveDbPath(){return this.dbPath?this.dbPath:super.resolveDbPath()}openHandle(e){let n=this.resolveDbPath();if(e){let o=K.dirname(n);Ua.existsSync(o)||Ua.mkdirSync(o,{recursive:true});}else if(!Ua.existsSync(n))throw new C("NOT_FOUND","Database not found");let r=Q(n);if(e)try{he(r.db,n);}catch(o){throw r.close(),o}return r}insertSpan(e){let n=this.openHandle(true);try{n.db.insert(mt).values(e).run();}catch(r){throw r instanceof C?r:new C("DB_ERROR","Failed to insert span",r)}finally{n.close();}}findByTaskId(e){if(!this.dbExists())return [];let n=this.openHandle(false);try{return n.db.select().from(mt).where(drizzleOrm.eq(mt.task_id,e)).all()}catch(r){throw new C("DB_ERROR","Failed to find spans by task id",r)}finally{n.close();}}findById(e){if(!this.dbExists())return;let n=this.openHandle(false);try{return n.db.select().from(mt).where(drizzleOrm.eq(mt.id,e)).limit(1).get()??void 0}catch(r){throw new C("DB_ERROR","Failed to find span by id",r)}finally{n.close();}}};u();u();u();u();u();u();u();function _f(){return process.env.CREWX_DB??K.join(bi(),"crewx.db")}function Zr(t){let e=JSON.parse(t);return oe(e)}function kf(t){let e=JSON.parse(t);if(e.kind!=="local"&&e.kind!=="authenticated"||typeof e.id!="string")throw new x("EXECUTION_FAILED","Stored actor is invalid");return {kind:e.kind,id:e.id}}function Gn(t){let e=t.status;if(!["active","completed","expired","revoked","unsupported"].includes(e))throw new x("EXECUTION_FAILED","Stored UI instance status is invalid");let n=JSON.parse(t.granted_capabilities_json);if(!Array.isArray(n)||n.some(r=>typeof r!="string"))throw new x("EXECUTION_FAILED","Stored UI capability grant is invalid");return {id:t.id,definition:{id:t.definition_id,version:t.definition_version,hash:t.definition_hash},workspaceId:t.workspace_id,threadId:t.thread_id,anchorTaskId:t.anchor_task_id,domainRef:Zr(t.domain_ref_json),state:Zr(t.state_json),revision:t.revision,status:e,grantedCapabilities:n,createdAt:t.created_at,updatedAt:t.updated_at}}function Vn(t){return {id:t.id,instanceId:t.instance_id,requestId:t.request_id,actionId:t.action_id,actor:kf(t.actor_json),source:t.source,expectedRevision:t.expected_revision,beforeRevision:t.before_revision,afterRevision:t.after_revision,status:t.status,outcome:t.outcome,input:Zr(t.input_json),result:t.result_json===null?null:Zr(t.result_json),errorCode:t.error_code,requestedAt:t.requested_at,settledAt:t.settled_at}}function Jn(t,e){return t.get(drizzleOrm.sql`SELECT * FROM ui_instances WHERE id = ${e}`)}function Kn(t,e,n){return t.get(drizzleOrm.sql`SELECT * FROM ui_action_receipts WHERE instance_id = ${e} AND request_id = ${n}`)}function Qr(t){let e=t,n;for(let r=0;e&&r<4;r+=1){if(typeof e.code=="string"){n=e.code;break}e=e.cause;}return n==="SQLITE_BUSY"||n==="SQLITE_BUSY_SNAPSHOT"||n==="SQLITE_CONSTRAINT_UNIQUE"||n==="SQLITE_CONSTRAINT_PRIMARYKEY"}function vf(t){throw Qr(t)?new ve(t):new x("EXECUTION_FAILED","UI instance database operation failed")}var eo=class{handle;db;testHooks;constructor(e=_f(),n){Ua.mkdirSync(K.dirname(e),{recursive:true}),this.handle=Q(e),this.db=this.handle.db,this.testHooks=n,he(this.db,e);}close(){this.handle.close();}create(e){let n=me(e.domainRef),r=me(e.state),o=me([...e.grants]);try{this.db.run(drizzleOrm.sql`
327
+ `).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(i){throw new P("DB_ERROR","Failed to get tasks for report",i)}finally{o.close();}}findTaskEvidence(e){if(!this.dbExists())return [];let n=this.openHandle(false);try{let r=[];e.workspaceId&&r.push(drizzleOrm.eq(p.workspace_id,e.workspaceId)),e.agents&&e.agents.length>0&&r.push(drizzleOrm.inArray(p.agent_id,e.agents)),e.statuses&&e.statuses.length>0&&r.push(drizzleOrm.inArray(p.status,e.statuses)),e.from&&r.push(drizzleOrm.gte(p.started_at,e.from)),e.to&&r.push(drizzleOrm.lt(p.started_at,e.to));let o=r.length>0?drizzleOrm.and(...r):void 0,i=(e.order??"DESC")==="ASC"?drizzleOrm.asc(p.started_at):drizzleOrm.desc(p.started_at),s={id:p.id,agent_id:p.agent_id,status:p.status,prompt:p.prompt,started_at:p.started_at,completed_at:p.completed_at,thread_id:p.thread_id};return e.limit?n.db.select(s).from(p).where(o).orderBy(i).limit(e.limit).all():n.db.select(s).from(p).where(o).orderBy(i).all()}catch(r){throw new P("DB_ERROR","Failed to find task evidence",r)}finally{n.close();}}findThreadChains(e){if(!this.dbExists())return [];let n=this.openHandle(false);try{let r=e.maxThreads??8,o=e.maxTurnsPerThread??4,i=[drizzleOrm.isNotNull(p.thread_id),drizzleOrm.isNull(p.parent_task_id),drizzleOrm.isNull(p.caller_agent_id),drizzleOrm.or(drizzleOrm.isNull(p.platform),drizzleOrm.ne(p.platform,"workflow")),drizzleOrm.or(drizzleOrm.isNull(p.metadata),drizzleOrm.and(drizzleOrm.notLike(p.metadata,'%"kind":"workflow_card"%'),drizzleOrm.notLike(p.metadata,'%"kind":"workflow_ui_instance"%'))),drizzleOrm.or(drizzleOrm.isNull(p.metadata),drizzleOrm.notLike(p.metadata,'%"retriedFromTaskId"%'))];e.workspaceId&&i.push(drizzleOrm.eq(p.workspace_id,e.workspaceId)),e.from&&i.push(drizzleOrm.gte(p.started_at,e.from)),e.to&&i.push(drizzleOrm.lt(p.started_at,e.to));let s=n.db.select({id:p.id,agent_id:p.agent_id,status:p.status,prompt:p.prompt,started_at:p.started_at,completed_at:p.completed_at,thread_id:p.thread_id}).from(p).where(drizzleOrm.and(...i)).orderBy(drizzleOrm.asc(p.started_at),drizzleOrm.asc(p.id)).all(),a=new Map;for(let c of s){if(!c.thread_id)continue;let l={id:c.id,agentId:c.agent_id,status:c.status,prompt:c.prompt,startedAt:c.started_at,completedAt:c.completed_at},f=a.get(c.thread_id);f?f.push(l):a.set(c.thread_id,[l]);}let d=[];for(let[c,l]of a){let f=l.filter(g=>g.agentId===e.targetAgentId).length;f<2||d.push({threadId:c,targetAgentTurnCount:f,turns:l});}return d.sort((c,l)=>{let f=c.turns[c.turns.length-1].startedAt,g=l.turns[l.turns.length-1].startedAt;return f<g?1:f>g?-1:0}),d.slice(0,r).map(c=>({threadId:c.threadId,targetAgentTurnCount:c.targetAgentTurnCount,turns:c.turns.slice(-o)}))}catch(r){throw new P("DB_ERROR","Failed to find thread chains",r)}finally{n.close();}}};var Gp=new Set(["Read","Grep","Find","Glob"]),Vp=["git status","git log","git branch","git diff --stat","git show","git remote","git rev-parse","git ls-files","pwd","ls ","echo ","cat ","head ","tail ","npx crewx memory index","npx crewx memory find","npx crewx memory get","npx crewx doc toc","npx crewx doc section","npx crewx doc status","npx crewx search","npx skill tsserver find","npx skill tsserver refs","npx skill tsserver type","crewx memory index","crewx memory find","crewx memory get","crewx doc toc","crewx doc section","crewx doc status","crewx search","crewx agent ls","crewx agent list"],Jp=[/\bgit\s+(commit|push|pull|merge|rebase|reset|checkout|switch|add|rm)\b/,/\bnpm\s+(install|ci|publish|run\s+(test|lint|build))\b/,/\bnpx\s+tsc\b/,/\bpnpm\s+(install|run)\b/,/\bvitest\b/,/\bjest\b/],Kp=8e3,Xp=100,Yp=3,Qp=Number.MAX_SAFE_INTEGER;function Zp(t){let e=t.toLowerCase();return e==="bash"||e==="terminal"?"Bash":e==="read"||e==="view"?"Read":e==="edit"||e==="apply_patch"?"Edit":e==="write"?"Write":e==="grep"||e==="rg"?"Grep":e==="glob"||e==="find"?"Find":t}function ef(t,e){if(Gp.has(t))return true;if(t!=="Bash"||!e)return false;let n=e.split(`
328
+ `)[0].trimStart();return Jp.some(r=>r.test(n))?false:Vp.some(r=>n.startsWith(r))}function an(t){return t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function tf(t,e,n){if(t!=="Read"||!e)return "ok";let o=e.split(`
329
+ `).find(i=>i.trim()&&!i.startsWith("Read "))?.trim()??e.trim();if(!o)return "unknown";try{let i=Wa__namespace.statSync(o);if(n){let s=Date.parse(n);if(!Number.isNaN(s)&&i.mtimeMs>s)return "stale"}return "ok"}catch{return "unknown"}}function nf(t){let e=new Set;for(let n of t)try{let r=JSON.parse(n);r.type&&e.add(r.type);}catch{}return e.has("turn.started")||e.has("thread.started")?"codex":e.has("assistant.message_delta")?"copilot":e.has("step_start")&&e.has("step_finish")?"opencode":e.has("system")&&e.has("result")?"claude":e.has("init")&&e.has("message")?"gemini":e.has("result")&&e.has("assistant")?"claude":null}function rf(t){if(!Array.isArray(t))return [];let e=t,n=e.filter(a=>a.level==="stdout"&&a.message).map(a=>a.message),r=nf(n),o=[];for(let a of e)a.level==="info"&&a.message?o.push(...je(a.message,a.timestamp)):a.level==="stdout"&&a.message&&r&&o.push(...In("",a.message,r));let i=new Map,s=[];for(let a of o)if(a.type==="tool_use"){let d={tool:Zp(a.toolName??""),input:a.toolInput??null,result:null,isError:false},c=a.toolUseId;if(c){if(i.has(c)){i.get(c).input=d.input;continue}i.set(c,d);}s.push(d);}else if(a.type==="tool_result"){if(a.toolUseId&&i.has(a.toolUseId)){let d=i.get(a.toolUseId);d.isError=a.isError===true,d.result=a.resultPreview??null;}else for(let d=s.length-1;d>=0;d--)if(s[d].result===null){s[d].isError=a.isError===true,s[d].result=a.resultPreview??null;break}}return s}function of(t,e){let n=rf(t),r=[];for(let o of n){let i=o.tool==="Bash"?o.input?.split(`
330
+ `)[0]?.slice(0,150)??null:o.input?.slice(0,150)??null,s=ef(o.tool,o.input)&&!o.isError;r.push({tool:o.tool,cmd:i,result:o.result,status:tf(o.tool,o.input,e),reusable:s});}return r}function qa(t){let e=["<activity_log>"],{entries:n,omissions:r,tokenCap:o,totalEntries:i}=t,s=r.reduce((a,d)=>a+d.count,0);if(n.length===0&&s===0)e.push(" <!-- no activity found in previous tasks -->");else {if(e.push(" <!-- tool activity from previous tasks -->"),r.length>0){e.push(` <!-- activity_log_budget token_cap="${o}" included_entries="${n.length}" omitted_entries="${s}" total_entries="${i}" -->`);for(let a of r)e.push(` <!-- omitted_entries reason="${an(a.reason)}" count="${a.count}": ${an(a.message)} -->`);}for(let a of n){let d=a.entry,c=`tool="${an(d.tool)}"`,l=d.cmd?` cmd="${an(d.cmd)}"`:"",f="";if(d.reusable&&(f=d.status==="stale"?' reused="stale"':' reused="ok"'),d.reusable&&d.status==="stale")e.push(` <entry ${c}${l}${f}>\u26A0\uFE0F changed since \u2014 re-read</entry>`);else if(d.result){e.push(` <entry ${c}${l}${f}>`);let g=Hr(d.result),m=Math.min(a.bodyCharsShown??g.length,g.length);g.length>m?e.push(an(g.slice(0,m))+` \u2026 [truncated, ${m}/${g.length} chars shown]`):e.push(an(g)),e.push(" </entry>");}else e.push(` <entry ${c}${l}${f} />`);}}return e.push("</activity_log>"),e}function sf(t){return typeof t!="number"||!Number.isFinite(t)||t<0?Kp:Math.floor(t)}function af(t,e,n){let r=Math.floor(e/Xp),o=Math.pow(2,t+r);return !Number.isFinite(o)||o<=0?0:Math.floor(n/o)}function df(t,e){let n=Math.pow(2,e+Yp);return !Number.isFinite(n)||n<=0?0:Math.floor(t/n)}function za(t,e,n,r){let o=t.result?.length??null,i=o===null?null:Math.min(o,Math.max(0,n));return {entry:t,newestIndex:e,bodyLimitChars:n,bodyCharsShown:o===null?null:Math.max(0,Math.min(r??i??0,i??0)),originalBodyChars:o}}function Ga(t,e){let n=[];return t>0&&n.push({reason:"token_cap",count:t,message:"older entries omitted after the per-task token cap was reached"}),e>0&&n.push({reason:"repository_limit",count:e,message:"older entries omitted by the explicit repository safety limit before budgeting"}),n}function Va(t){let e=Ga(t.omittedByTokenCap,t.repositoryLimitOmitted);return qa({entries:t.entries,omissions:e,tokenCap:t.tokenCap,totalEntries:t.totalEntries}).join(`
331
+ `)}function bi(t,e){let n=t(e);return !Number.isFinite(n)||n<0?0:Math.floor(n)}function cf(t){let{entry:e,bodyLimitChars:n}=t;if(!e.result)return null;let r=Math.min(e.result.length,Math.max(0,n));for(let o=r;o>=0;o--){let i=za(e,t.newestIndex,n,o),s=[...t.selectedEntries,i],a=t.totalEntries-s.length-t.repositoryLimitOmitted,d=Va({entries:s,tokenCap:t.tokenCap,totalEntries:t.totalEntries,omittedByTokenCap:a,repositoryLimitOmitted:t.repositoryLimitOmitted});if(bi(t.countTokens,d)<=t.tokenCap)return i}return null}function lf(t){let e=t.repositoryEntryLimit,n=typeof e=="number"&&Number.isFinite(e)&&e>=0&&t.entries.length>e,r=n?t.entries.length-Math.floor(e):0,i=[...n?t.entries.slice(r):t.entries].reverse(),s=[],a=t.entries.length;for(let g=0;g<i.length;g++){let m=i[g],k=af(t.taskDistance,g,t.baseEntryChars),h=za(m,g,k),v=[...s,h],_=a-v.length-r,w=Va({entries:v,tokenCap:t.tokenCap,totalEntries:a,omittedByTokenCap:_,repositoryLimitOmitted:r});if(bi(t.countTokens,w)<=t.tokenCap){s.push(h);continue}let b=cf({selectedEntries:s,entry:m,newestIndex:g,bodyLimitChars:k,tokenCap:t.tokenCap,totalEntries:a,repositoryLimitOmitted:r,countTokens:t.countTokens});b&&s.push(b);break}let d=a-s.length-r,c=Ga(d,r),l=qa({entries:s,omissions:c,tokenCap:t.tokenCap,totalEntries:a}).join(`
332
+ `),f=bi(t.countTokens,l);return {taskId:t.taskId,taskDistance:t.taskDistance,tokenCap:t.tokenCap,tokenCount:f,includedEntries:s.length,omittedEntries:c.reduce((g,m)=>g+m.count,0),totalEntries:a,omissions:c,entries:s,activityLog:l}}function xi(t){return {threadId:t.threadId,agentId:t.agentId,lookback:t.lookback,activityLogTokenBudget:t.activityLogTokenBudget,baseEntryChars:t.baseEntryChars,tasks:[],activityLogByTask:new Map}}function uf(t){return !Number.isFinite(t)||t<0?0:Math.floor(t)}function pf(t){return t.length}function Ti(t){let e=sf(t.maxEntryChars),n=uf(t.activityLogTokenBudget),r=Math.max(0,Math.floor(t.lookback));if(!r||!t.threadId||!t.agentId)return xi({threadId:t.threadId,agentId:t.agentId,lookback:r,activityLogTokenBudget:n,baseEntryChars:e});let o;try{o=new sn().findTasksByThread(t.threadId).filter(c=>!c.parent_task_id&&c.agent_id===t.agentId).sort((c,l)=>l.started_at>c.started_at?1:-1).slice(0,r);}catch{return xi({threadId:t.threadId,agentId:t.agentId,lookback:r,activityLogTokenBudget:n,baseEntryChars:e})}if(!o.length)return xi({threadId:t.threadId,agentId:t.agentId,lookback:r,activityLogTokenBudget:n,baseEntryChars:e});let i=[];for(let d of o){let c=[];try{let l=JSON.parse(d.logs??"[]");Array.isArray(l)&&(c=l);}catch{}i.push({taskId:d.id,entries:of(c,d.completed_at)});}let s=[],a=new Map;for(let d=0;d<i.length;d++){let{taskId:c,entries:l}=i[d];if(l.length===0)continue;let f=lf({taskId:c,entries:l,taskDistance:d,baseEntryChars:e,tokenCap:df(n,d),countTokens:t.countTokens,repositoryEntryLimit:t.repositoryEntryLimit});s.push(f),a.set(c,f.activityLog);}return {threadId:t.threadId,agentId:t.agentId,lookback:r,activityLogTokenBudget:n,baseEntryChars:e,tasks:s,activityLogByTask:a}}function Ja(t){if(t.activityLogTokenBudget!==void 0&&!t.countTokens)throw new Error("countTokens is required when activityLogTokenBudget is supplied");return Ti({threadId:t.threadId,agentId:t.agentId,lookback:t.lookback,maxEntryChars:t.maxEntryChars,activityLogTokenBudget:t.activityLogTokenBudget??Qp,countTokens:t.countTokens??pf,repositoryEntryLimit:t.repositoryEntryLimit}).activityLogByTask}u();u();var gf={agentId:zod.z.string().describe("The agent ID to query"),query:zod.z.string().describe("The query message to send"),context:zod.z.string().optional().describe("Additional context"),thread:zod.z.string().optional().describe("Thread ID for conversation continuity")},mf={agentId:zod.z.string().describe("The agent ID to execute"),task:zod.z.string().describe("The task description to execute"),context:zod.z.string().optional().describe("Additional context"),thread:zod.z.string().optional().describe("Thread ID for conversation continuity")};function Ka(t,e,n){t.tool("crewx_listAgents","List available CrewX agents exposed by this server",async()=>{let r=[];for(let o of n){let i=e.agents.get(o);i&&r.push({id:i.id,name:i.name??i.id,description:i.description??""});}return {content:[{type:"text",text:JSON.stringify(r,null,2)}]}}),t.tool("crewx_queryAgent","Query a CrewX agent with a read-only question",gf,async({agentId:r,query:o,context:i,thread:s})=>{if(!n.has(r))return {content:[{type:"text",text:`Agent '${r}' is not exposed by this server`}],isError:true};let a=await e.query(r,o,{context:i,threadId:s});return a.ok?{content:[{type:"text",text:a.data}]}:{content:[{type:"text",text:a.error?.message??"Query failed"}],isError:true}}),t.tool("crewx_executeAgent","Execute a task on a CrewX agent (may modify state)",mf,async({agentId:r,task:o,context:i,thread:s})=>{if(!n.has(r))return {content:[{type:"text",text:`Agent '${r}' is not exposed by this server`}],isError:true};let a=await e.execute(r,o,{context:i,threadId:s});return a.ok?{content:[{type:"text",text:a.data}]}:{content:[{type:"text",text:a.error?.message??"Execute failed"}],isError:true}});}u();function Xa(t){return t.headers.get("Origin")?null:new Response(JSON.stringify({error:"Forbidden: Origin header required"}),{status:403,headers:{"Content-Type":"application/json"}})}async function Ya(t,e){return e?await e(t)?null:new Response(JSON.stringify({error:"Unauthorized"}),{status:401,headers:{"Content-Type":"application/json"}}):null}function _f(t,e){let n=new mcp_js.McpServer({name:"crewx-mcp-server",version:"1.0.0"},{capabilities:{tools:{}}});return Ka(n,t,e),n}function Ai(t,e){if(!e.agents||e.agents.length===0)throw new Error("crewx.handler() requires at least one agent in the agents option");let n=new Set(e.agents),r=new Map;return async o=>{let i=Xa(o);if(i)return i;let s=await Ya(o,e.auth);if(s)return s;let a=o.headers.get("mcp-session-id");if(a&&r.has(a))return r.get(a).transport.handleRequest(o);let d=_f(t,n),c=new webStandardStreamableHttp_js.WebStandardStreamableHTTPServerTransport({sessionIdGenerator:()=>crypto.randomUUID(),onsessioninitialized:l=>{r.set(l,{transport:c,server:d});},onsessionclosed:l=>{r.delete(l);},enableJsonResponse:true});return await d.connect(c),c.handleRequest(o)}}u();function Ii(t){let e=X__namespace.resolve(t);return process.platform==="win32"&&(e=e.replace(/\\/g,"/"),e=e.replace(/^([A-Z]):/,(n,r)=>`${r.toLowerCase()}:`)),e.length>1&&!/^[a-zA-Z]:\/$/.test(e)&&(e=e.replace(/\/+$/,"")),e}function Yr(t){let e=Ii(t);return crypto$1.createHash("sha256").update(e).digest("hex")}u();u();function Jn(t){let n=t.renderer!==void 0||t.surfaces!==void 0||t.stateProjection!==void 0||Object.values(t.actions).some(o=>o.resultProjection!==void 0)?{id:t.id,version:t.version,renderer:t.renderer,surfaces:t.surfaces,stateProjection:t.stateProjection,actions:t.actions}:{id:t.id,version:t.version,actions:t.actions},r=ie(n);return crypto$1.createHash("sha256").update(ba(r)).digest("hex")}function Pi(t){return `${t.id}\0${t.version}`}function ed(t){if(!/^\d+$/.test(String(t.version))||t.version<1||t.id.length<1||t.id.length>128)throw new R("DEFINITION_UNSUPPORTED","UI definition is invalid");if(!/^[0-9a-f]{64}$/.test(t.hash)||Jn(t)!==t.hash)throw new R("DEFINITION_UNSUPPORTED","UI definition hash is invalid");for(let[e,n]of Object.entries(t.actions)){if(!e||!Array.isArray(n.capabilities)||n.capabilities.some(r=>!vf(r)))throw new R("DEFINITION_UNSUPPORTED","UI action declaration is invalid");if(n.inputKeys&&(!Array.isArray(n.inputKeys)||n.inputKeys.some(r=>typeof r!="string"||!r)))throw new R("DEFINITION_UNSUPPORTED","UI action input declaration is invalid");n.resultProjection&&Za(n.resultProjection);}if(t.renderer!==void 0&&(!t.renderer||t.renderer.length>128))throw new R("DEFINITION_UNSUPPORTED","UI definition renderer is invalid");if(t.surfaces&&(!Array.isArray(t.surfaces)||t.surfaces.some(e=>!e||e.length>64)))throw new R("DEFINITION_UNSUPPORTED","UI definition surfaces are invalid");t.stateProjection&&Za(t.stateProjection);}function Za(t){if(!Array.isArray(t.allow)||t.allow.some(e=>!/^[A-Za-z0-9_]+(?:\.[A-Za-z0-9_]+)*$/.test(e)))throw new R("DEFINITION_UNSUPPORTED","UI projection policy is invalid")}function vf(t){return t.length>0&&t.length<=128&&t!=="*"&&t!=="all"&&!/[/*]/.test(t)}u();function Qr(t,e,n){let r=new Set(e),o=n===void 0?void 0:new Set(n);return t.filter(i=>r.has(i)&&(o===void 0||o.has(i)))}u();u();function Si(){if(process.env.CREWX_HOME)try{return Wa__namespace.realpathSync(process.env.CREWX_HOME)}catch{return X__namespace.join(Ci__namespace.homedir(),".crewx")}return process.platform!=="win32"&&process.env.XDG_CONFIG_HOME?X__namespace.join(process.env.XDG_CONFIG_HOME,"crewx"):X__namespace.join(Ci__namespace.homedir(),".crewx")}u();u();u();u();u();u();var eo=class extends ce{dbPath;constructor(e={}){super(),e.dbPath?this.dbPath=e.dbPath:e.dbRoot&&(this.dbPath=X.join(e.dbRoot,".crewx","crewx.db"));}resolveDbPath(){return this.dbPath?this.dbPath:super.resolveDbPath()}openHandle(e){let n=this.resolveDbPath();if(e){let o=X.dirname(n);Wa.existsSync(o)||Wa.mkdirSync(o,{recursive:true});}else if(!Wa.existsSync(n))throw new P("NOT_FOUND","Database not found");let r=Y(n);if(e)try{pe(r.db,n);}catch(o){throw r.close(),o}return r}insertSpan(e){let n=this.openHandle(true);try{n.db.insert(_t).values(e).run();}catch(r){throw r instanceof P?r:new P("DB_ERROR","Failed to insert span",r)}finally{n.close();}}findByTaskId(e){if(!this.dbExists())return [];let n=this.openHandle(false);try{return n.db.select().from(_t).where(drizzleOrm.eq(_t.task_id,e)).all()}catch(r){throw new P("DB_ERROR","Failed to find spans by task id",r)}finally{n.close();}}findById(e){if(!this.dbExists())return;let n=this.openHandle(false);try{return n.db.select().from(_t).where(drizzleOrm.eq(_t.id,e)).limit(1).get()??void 0}catch(r){throw new P("DB_ERROR","Failed to find span by id",r)}finally{n.close();}}};u();u();u();u();u();u();u();function If(){return process.env.CREWX_DB??X.join(Si(),"crewx.db")}function no(t){let e=JSON.parse(t);return ie(e)}function Pf(t){let e=JSON.parse(t);if(e.kind!=="local"&&e.kind!=="authenticated"||typeof e.id!="string")throw new R("EXECUTION_FAILED","Stored actor is invalid");return {kind:e.kind,id:e.id}}function Kn(t){let e=t.status;if(!["active","completed","expired","revoked","unsupported"].includes(e))throw new R("EXECUTION_FAILED","Stored UI instance status is invalid");let n=JSON.parse(t.granted_capabilities_json);if(!Array.isArray(n)||n.some(r=>typeof r!="string"))throw new R("EXECUTION_FAILED","Stored UI capability grant is invalid");return {id:t.id,definition:{id:t.definition_id,version:t.definition_version,hash:t.definition_hash},workspaceId:t.workspace_id,threadId:t.thread_id,anchorTaskId:t.anchor_task_id,domainRef:no(t.domain_ref_json),state:no(t.state_json),revision:t.revision,status:e,grantedCapabilities:n,createdAt:t.created_at,updatedAt:t.updated_at}}function Xn(t){return {id:t.id,instanceId:t.instance_id,requestId:t.request_id,actionId:t.action_id,actor:Pf(t.actor_json),source:t.source,expectedRevision:t.expected_revision,beforeRevision:t.before_revision,afterRevision:t.after_revision,status:t.status,outcome:t.outcome,input:no(t.input_json),result:t.result_json===null?null:no(t.result_json),errorCode:t.error_code,requestedAt:t.requested_at,settledAt:t.settled_at}}function Yn(t,e){return t.get(drizzleOrm.sql`SELECT * FROM ui_instances WHERE id = ${e}`)}function Qn(t,e,n){return t.get(drizzleOrm.sql`SELECT * FROM ui_action_receipts WHERE instance_id = ${e} AND request_id = ${n}`)}function to(t){let e=t,n;for(let r=0;e&&r<4;r+=1){if(typeof e.code=="string"){n=e.code;break}e=e.cause;}return n==="SQLITE_BUSY"||n==="SQLITE_BUSY_SNAPSHOT"||n==="SQLITE_CONSTRAINT_UNIQUE"||n==="SQLITE_CONSTRAINT_PRIMARYKEY"}function Cf(t){throw to(t)?new Ee(t):new R("EXECUTION_FAILED","UI instance database operation failed")}var ro=class{handle;db;testHooks;constructor(e=If(),n){Wa.mkdirSync(X.dirname(e),{recursive:true}),this.handle=Y(e),this.db=this.handle.db,this.testHooks=n,pe(this.db,e);}close(){this.handle.close();}create(e){let n=ye(e.domainRef),r=ye(e.state),o=ye([...e.grants]);try{this.db.run(drizzleOrm.sql`
333
333
  INSERT INTO ui_instances (
334
334
  id, definition_id, definition_version, definition_hash, workspace_id, thread_id,
335
335
  anchor_task_id, domain_ref_json, state_json, revision, status,
@@ -339,43 +339,43 @@ ${r.join(`
339
339
  ${e.workspaceId}, ${e.threadId}, ${e.anchorTaskId}, ${n},
340
340
  ${r}, 0, 'active', ${o}, ${e.now}, ${e.now}
341
341
  )
342
- `);}catch(s){vf(s);}let i=Jn(this.db,e.id);if(!i)throw new x("EXECUTION_FAILED","Created UI instance could not be read");return Gn(i)}get(e){let n=Jn(this.db,e);return n?Gn(n):null}getReceipt(e,n){let r=Kn(this.db,e,n);return r?Vn(r):null}runStateOnly(e,n){try{return this.db.transaction(r=>{let o=this.testHooks?.injectDatabaseError?.();if(o!==void 0)throw o;let i=Jn(r,e.instanceId);if(!i)throw new x("INSTANCE_NOT_FOUND","UI instance was not found");let s=e.expectedRevision+1,a=Ya();if(r.run(drizzleOrm.sql`
342
+ `);}catch(s){Cf(s);}let i=Yn(this.db,e.id);if(!i)throw new R("EXECUTION_FAILED","Created UI instance could not be read");return Kn(i)}get(e){let n=Yn(this.db,e);return n?Kn(n):null}getReceipt(e,n){let r=Qn(this.db,e,n);return r?Xn(r):null}runStateOnly(e,n){try{return this.db.transaction(r=>{let o=this.testHooks?.injectDatabaseError?.();if(o!==void 0)throw o;let i=Yn(r,e.instanceId);if(!i)throw new R("INSTANCE_NOT_FOUND","UI instance was not found");let s=e.expectedRevision+1,a=od();if(r.run(drizzleOrm.sql`
343
343
  INSERT INTO ui_action_receipts (
344
344
  id, instance_id, request_id, action_id, actor_json, source,
345
345
  expected_revision, before_revision, after_revision, status, outcome,
346
346
  input_json, result_json, error_code, requested_at, settled_at
347
347
  ) VALUES (
348
348
  ${a}, ${e.instanceId}, ${e.requestId}, ${e.actionId},
349
- ${me(oe(e.actor))}, ${e.source},
349
+ ${ye(ie(e.actor))}, ${e.source},
350
350
  ${e.expectedRevision}, ${i.revision}, NULL, 'requested', NULL,
351
- ${me(e.input)}, NULL, NULL, ${e.now}, NULL
351
+ ${ye(e.input)}, NULL, NULL, ${e.now}, NULL
352
352
  )
353
- `),i.revision!==e.expectedRevision)throw new Ae(i.revision);if(this.testHooks?.bumpRevisionBeforeCas&&r.run(drizzleOrm.sql`UPDATE ui_instances SET revision = revision + 1 WHERE id = ${e.instanceId}`),r.run(drizzleOrm.sql`
353
+ `),i.revision!==e.expectedRevision)throw new Ie(i.revision);if(this.testHooks?.bumpRevisionBeforeCas&&r.run(drizzleOrm.sql`UPDATE ui_instances SET revision = revision + 1 WHERE id = ${e.instanceId}`),r.run(drizzleOrm.sql`
354
354
  UPDATE ui_instances
355
355
  SET revision = revision + 1, updated_at = ${Math.max(e.now,i.updated_at)}
356
356
  WHERE id = ${e.instanceId} AND revision = ${e.expectedRevision} AND status = 'active'
357
- `).changes!==1)throw new Ae(i.revision);let c={instance:{...Gn(i),revision:s},actor:e.actor,source:e.source,input:e.input,requestId:e.requestId},l=n(c);if(l&&typeof l.then=="function")throw new x("EXECUTION_FAILED","State-only handler must be synchronous");let f=l??{},g="outcome"in f?f.outcome:"succeeded",m="errorCode"in f?Ef(f.errorCode):null,k=f.state?oe(f.state):Gn(i).state,h=f.result?me(oe(f.result)):null,v=Math.max(e.now,i.updated_at);r.run(drizzleOrm.sql`UPDATE ui_instances SET state_json = ${me(k)}, updated_at = ${v} WHERE id = ${e.instanceId} AND revision = ${s}`),r.run(drizzleOrm.sql`
357
+ `).changes!==1)throw new Ie(i.revision);let c={instance:{...Kn(i),revision:s},actor:e.actor,source:e.source,input:e.input,requestId:e.requestId},l=n(c);if(l&&typeof l.then=="function")throw new R("EXECUTION_FAILED","State-only handler must be synchronous");let f=l??{},g="outcome"in f?f.outcome:"succeeded",m="errorCode"in f?Sf(f.errorCode):null,k=f.state?ie(f.state):Kn(i).state,h=f.result?ye(ie(f.result)):null,v=Math.max(e.now,i.updated_at);r.run(drizzleOrm.sql`UPDATE ui_instances SET state_json = ${ye(k)}, updated_at = ${v} WHERE id = ${e.instanceId} AND revision = ${s}`),r.run(drizzleOrm.sql`
358
358
  UPDATE ui_action_receipts
359
359
  SET status = 'settled', outcome = ${g}, after_revision = ${s},
360
360
  result_json = ${h}, error_code = ${m}, settled_at = ${Math.max(e.now,i.updated_at)}
361
361
  WHERE id = ${a} AND status = 'requested'
362
- `);let w=Kn(r,e.instanceId,e.requestId);if(!w)throw new x("EXECUTION_FAILED","Action receipt settlement failed");return Vn(w)})}catch(r){throw r instanceof Ae||r instanceof ve||r instanceof x?r:Qr(r)?new ve(r):new x("EXECUTION_FAILED","UI state action failed")}}reserveExternal(e){try{return this.db.transaction(n=>{let r=this.testHooks?.injectDatabaseError?.();if(r!==void 0)throw r;let o=Jn(n,e.instanceId);if(!o)throw new x("INSTANCE_NOT_FOUND","UI instance was not found");let i=e.expectedRevision+1,s=Ya();if(n.run(drizzleOrm.sql`
362
+ `);let _=Qn(r,e.instanceId,e.requestId);if(!_)throw new R("EXECUTION_FAILED","Action receipt settlement failed");return Xn(_)})}catch(r){throw r instanceof Ie||r instanceof Ee||r instanceof R?r:to(r)?new Ee(r):new R("EXECUTION_FAILED","UI state action failed")}}reserveExternal(e){try{return this.db.transaction(n=>{let r=this.testHooks?.injectDatabaseError?.();if(r!==void 0)throw r;let o=Yn(n,e.instanceId);if(!o)throw new R("INSTANCE_NOT_FOUND","UI instance was not found");let i=e.expectedRevision+1,s=od();if(n.run(drizzleOrm.sql`
363
363
  INSERT INTO ui_action_receipts (
364
364
  id, instance_id, request_id, action_id, actor_json, source,
365
365
  expected_revision, before_revision, after_revision, status, outcome,
366
366
  input_json, result_json, error_code, requested_at, settled_at
367
367
  ) VALUES (
368
368
  ${s}, ${e.instanceId}, ${e.requestId}, ${e.actionId},
369
- ${me(oe(e.actor))}, ${e.source},
369
+ ${ye(ie(e.actor))}, ${e.source},
370
370
  ${e.expectedRevision}, ${o.revision}, NULL, 'requested', NULL,
371
- ${me(e.input)}, NULL, NULL, ${e.now}, NULL
371
+ ${ye(e.input)}, NULL, NULL, ${e.now}, NULL
372
372
  )
373
- `),o.revision!==e.expectedRevision)throw new Ae(o.revision);if(this.testHooks?.bumpRevisionBeforeCas&&n.run(drizzleOrm.sql`UPDATE ui_instances SET revision = revision + 1 WHERE id = ${e.instanceId}`),n.run(drizzleOrm.sql`
373
+ `),o.revision!==e.expectedRevision)throw new Ie(o.revision);if(this.testHooks?.bumpRevisionBeforeCas&&n.run(drizzleOrm.sql`UPDATE ui_instances SET revision = revision + 1 WHERE id = ${e.instanceId}`),n.run(drizzleOrm.sql`
374
374
  UPDATE ui_instances
375
375
  SET revision = revision + 1, updated_at = ${Math.max(e.now,o.updated_at)}
376
376
  WHERE id = ${e.instanceId} AND revision = ${e.expectedRevision} AND status = 'active'
377
- `).changes!==1)throw new Ae(o.revision);let d=Kn(n,e.instanceId,e.requestId);if(!d)throw new x("EXECUTION_FAILED","Requested receipt could not be read");return {instance:{...Gn(o),revision:i},receipt:Vn(d),reservedRevision:i}})}catch(n){throw n instanceof Ae||n instanceof ve||n instanceof x?n:Qr(n)?new ve(n):new x("EXECUTION_FAILED","UI external action reservation failed")}}settleExternal(e){try{return this.db.transaction(n=>{let r=Jn(n,e.reservation.instanceId),o=Kn(n,e.reservation.instanceId,e.reservation.requestId);if(!r||!o)throw new x("EXECUTION_FAILED","Requested action receipt is missing");if(o.status==="settled")return Vn(o);let i=oe(e.state),s=e.result===null?null:me(oe(e.result)),a=Math.max(e.now,o.requested_at,r.updated_at);n.run(drizzleOrm.sql`
378
- UPDATE ui_instances SET state_json = ${me(i)}, updated_at = ${a}
377
+ `).changes!==1)throw new Ie(o.revision);let d=Qn(n,e.instanceId,e.requestId);if(!d)throw new R("EXECUTION_FAILED","Requested receipt could not be read");return {instance:{...Kn(o),revision:i},receipt:Xn(d),reservedRevision:i}})}catch(n){throw n instanceof Ie||n instanceof Ee||n instanceof R?n:to(n)?new Ee(n):new R("EXECUTION_FAILED","UI external action reservation failed")}}settleExternal(e){try{return this.db.transaction(n=>{let r=Yn(n,e.reservation.instanceId),o=Qn(n,e.reservation.instanceId,e.reservation.requestId);if(!r||!o)throw new R("EXECUTION_FAILED","Requested action receipt is missing");if(o.status==="settled")return Xn(o);let i=ie(e.state),s=e.result===null?null:ye(ie(e.result)),a=Math.max(e.now,o.requested_at,r.updated_at);n.run(drizzleOrm.sql`
378
+ UPDATE ui_instances SET state_json = ${ye(i)}, updated_at = ${a}
379
379
  WHERE id = ${e.reservation.instanceId} AND revision = ${e.reservedRevision}
380
380
  `).changes!==1?n.run(drizzleOrm.sql`
381
381
  UPDATE ui_action_receipts
@@ -387,25 +387,25 @@ ${r.join(`
387
387
  SET status = 'settled', outcome = ${e.outcome}, after_revision = ${e.reservedRevision},
388
388
  result_json = ${s}, error_code = ${e.errorCode}, settled_at = ${a}
389
389
  WHERE id = ${o.id} AND status = 'requested'
390
- `);let c=Kn(n,e.reservation.instanceId,e.reservation.requestId);if(!c)throw new x("EXECUTION_FAILED","External action settlement failed");return Vn(c)})}catch(n){throw n instanceof ve||n instanceof x?n:Qr(n)?new ve(n):new x("EXECUTION_FAILED","UI external action settlement failed")}}};function Ya(){return `uicr_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,12)}`}function Ef(t){return typeof t=="string"&&/^[A-Z][A-Z0-9_]{0,63}$/.test(t)?t:"EXECUTION_FAILED"}var xf=new Set(["definition","workspaceId","threadId","anchorTaskId","domainRef","state"]),Rf=new Set(["definition","workspaceId","threadId","domainRef","state"]),bf=new Set(["instanceId","actionId","expectedRevision","requestId","input"]),ed=new Set(["source","workspaceId","actor"]),Qa=new Set(["source","workspaceId","threadId","actor"]),Tf=ed,Ti=4;function td(t,e){return new to(t,e)}function nd(t){return new to(t.workspaceId,t,void 0,true)}var to=class{store;workspaceId;localActor;policy;serverPolicy;serverMode;definitions=new Map;handlers=new Map;clock;testHooks;constructor(e,n,r,o=false){if(this.serverMode=o,!e)throw new x("INPUT_INVALID","UI runtime workspace is invalid");if(o){let i=n;if(!i.dbPath||!i.grantPolicy)throw new x("INPUT_INVALID","Authenticated UI runtime options are invalid");this.serverPolicy=i.grantPolicy;}else {let i=n;if(i.localActor.kind!=="local"||!i.localActor.id)throw new x("INPUT_INVALID","Local UI runtime identity is invalid");this.localActor=i.localActor,this.policy=i.localGrantPolicy;}this.workspaceId=e,this.clock=n.clock??(()=>Date.now()),this.testHooks=r;for(let i of n.definitions??[]){Va(i);let s=xi(i);if(this.definitions.has(s))throw new x("DEFINITION_UNSUPPORTED","Duplicate UI definition");this.definitions.set(s,i);}for(let i of n.handlers??[]){if(!i.definitionId||!i.actionId||i.version<1)throw new x("INPUT_INVALID","UI handler registration is invalid");let s=Za(i.definitionId,i.version,i.actionId);if(this.handlers.has(s))throw new x("INPUT_INVALID","Duplicate UI handler registration");this.handlers.set(s,i);}this.store=Af(n.dbPath,r);}close(){this.store.close();}async createInstance(e,n){if(Ai(e,xf,Rf),this.serverMode){if(!n)throw new x("UNAUTHENTICATED","Authenticated UI context is required");if(this.validateServerContext(n),e.workspaceId!==n.workspaceId||e.threadId!==n.threadId)throw new x("WORKSPACE_MISMATCH","UI instance scope does not match authenticated context")}else if(e.workspaceId!==this.workspaceId)throw new x("WORKSPACE_MISMATCH","Workspace does not match this runtime");if(!e.threadId||e.threadId.length>256||e.anchorTaskId!==void 0&&e.anchorTaskId.length>256)throw new x("INPUT_INVALID","UI instance scope is invalid");let r=this.requireDefinition(e.definition),o=oe(e.domainRef),i=oe(e.state),s=this.resolveInstanceGrants(r,n),a=this.now();return this.store.create({id:If(),definitionId:r.id,definitionVersion:r.version,definitionHash:r.hash,workspaceId:e.workspaceId,threadId:e.threadId,anchorTaskId:e.anchorTaskId??null,domainRef:o,state:i,grants:s,now:a})}async dispatchAction(e,n){Ai(e,bf),Ai(n,this.serverMode?Qa:ed,this.serverMode?Qa:Tf),this.validateContext(n);let r={...e,input:this.validateEnvelope(e)},o=this.store.get(r.instanceId);if(!o)throw new x("INSTANCE_NOT_FOUND","UI instance was not found");if(o.workspaceId!==this.workspaceId||n.workspaceId!==o.workspaceId||this.serverMode&&o.threadId!==n.threadId)throw new x("WORKSPACE_MISMATCH","Workspace does not match the UI instance");if(o.status!=="active")throw new x("INSTANCE_NOT_ACTIONABLE","UI instance is not actionable");let i=this.requireDefinition(o.definition),s=i.actions[r.actionId];if(!s)throw new x("ACTION_UNAVAILABLE","UI action is not declared");if(this.validateActionDeclaration(i,r.actionId,s.inputKeys,r.input),this.resolveEffectiveCapabilities(i,r.actionId,s.capabilities,o.grantedCapabilities,n).length===0)throw new x("CAPABILITY_DENIED","UI action capability is not granted");let d=this.handlers.get(Za(i.id,i.version,r.actionId));if(!d)throw new x("HANDLER_NOT_FOUND","UI action handler is not registered");let c=this.store.getReceipt(r.instanceId,r.requestId);if(c)return c;if(o.revision!==r.expectedRevision)throw new x("REVISION_CONFLICT","UI instance revision is stale",o.revision);await this.testHooks?.beforeReservation?.();let l={instanceId:r.instanceId,requestId:r.requestId,actionId:r.actionId,actor:n.actor,source:n.source,expectedRevision:r.expectedRevision,input:r.input,now:this.now()};return d.kind==="state"?this.dispatchStateWithRetry(l,d):this.dispatchExternalWithRetry(l,d)}async getInstance(e,n){if(!this.serverMode)throw new x("UNAUTHENTICATED","Authenticated UI context is not available in local runtime");if(this.validateServerContext(n),!e)throw new x("INPUT_INVALID","UI instance lookup identity is invalid");let r=this.store.get(e);return !r||r.workspaceId!==n.workspaceId||r.threadId!==n.threadId?null:r}async getReceipt(e,n,r){if(!e||!n)throw new x("INPUT_INVALID","Receipt lookup identity is invalid");let o=this.store.get(e);if(this.serverMode){if(!r)throw new x("UNAUTHENTICATED","Authenticated UI context is required");if(this.validateServerContext(r),!o||o.workspaceId!==r.workspaceId||o.threadId!==r.threadId)return null}else if(!o||o.workspaceId!==this.workspaceId)return null;return this.store.getReceipt(e,n)}async dispatchStateWithRetry(e,n){for(let o=0;o<Ti;o+=1)try{return this.store.runStateOnly(e,n.handle)}catch(i){if(i instanceof Ae){let a=this.store.getReceipt(e.instanceId,e.requestId);if(a)return a;throw new x("REVISION_CONFLICT","UI instance revision is stale",i.currentRevision)}if(!(i instanceof ve))throw i;let s=this.store.getReceipt(e.instanceId,e.requestId);if(s)return s;await Ii(o);}let r=this.store.getReceipt(e.instanceId,e.requestId);if(r)return r;throw new x("ACTION_IN_FLIGHT","UI action is still being committed")}async dispatchExternalWithRetry(e,n){let r;for(let l=0;l<Ti;l+=1)try{r=this.store.reserveExternal(e);break}catch(f){if(f instanceof Ae){let m=this.store.getReceipt(e.instanceId,e.requestId);if(m)return m;throw new x("REVISION_CONFLICT","UI instance revision is stale",f.currentRevision)}if(!(f instanceof ve))throw f;let g=this.store.getReceipt(e.instanceId,e.requestId);if(g)return g;await Ii(l);}if(!r){let l=this.store.getReceipt(e.instanceId,e.requestId);if(l)return l;throw new x("ACTION_IN_FLIGHT","UI action is still being committed")}let o;try{o=await n.handle({instance:r.instance,actor:e.actor,source:e.source,input:e.input,requestId:e.requestId});}catch{o={outcome:"failed",errorCode:"EXECUTION_FAILED"};}let i="outcome"in o?o.outcome:"succeeded",s="errorCode"in o?Pf(o.errorCode):null,a=r.instance.state,d=null;try{o.state&&(a=oe(o.state)),o.result&&(d=oe(o.result));}catch{a=r.instance.state,d=null;}for(let l=0;l<Ti;l+=1)try{return this.store.settleExternal({reservation:e,reservedRevision:r.reservedRevision,outcome:i,state:a,result:d,errorCode:s,now:this.now()})}catch(f){if(!(f instanceof ve))throw f;await Ii(l);}let c=this.store.getReceipt(e.instanceId,e.requestId);if(c)return c;throw new x("ACTION_IN_FLIGHT","UI action settlement is still being committed")}resolveDefinition(e){let n=this.definitions.get(xi(e));return !n||n.hash!==e.hash||zn(n)!==n.hash?null:n}requireDefinition(e){let n=this.resolveDefinition(e);if(!n)throw new x("DEFINITION_UNSUPPORTED","Pinned UI definition is unavailable");return n}resolveInstanceGrants(e,n){if(this.serverMode){if(!n||!this.serverPolicy)throw new x("UNAUTHENTICATED","Authenticated grant policy is unavailable");try{let r=this.serverPolicy.resolveInstanceGrants({definition:e,workspaceId:n.workspaceId,actor:n.actor});if(!Array.isArray(r)||r.some(o=>typeof o!="string"||!o||o==="*"||o==="all"||/[/*]/.test(o)))throw new Error("invalid grant");return [...new Set(r)]}catch{throw new x("CAPABILITY_DENIED","Authenticated capability grant was denied")}}if(!this.policy||!this.localActor)return [];try{let r=this.policy.resolveInstanceGrants({definition:e,workspaceId:this.workspaceId,actor:this.localActor});if(!Array.isArray(r)||r.some(o=>typeof o!="string"||!o||o==="*"||o==="all"||/[/*]/.test(o)))throw new Error("invalid grant");return [...new Set(r)]}catch{throw new x("INPUT_INVALID","Local capability policy returned an invalid grant")}}resolveEffectiveCapabilities(e,n,r,o,i){if(this.policy)try{let a=this.policy.resolveActionCapabilities({definition:e,actionId:n});if(!Cf(a,r))throw new Error("definition capability mismatch")}catch{throw new x("DEFINITION_UNSUPPORTED","UI action capability declaration is unavailable")}let s;if(this.serverMode&&this.serverPolicy?.resolveDispatchCapabilities)try{if(s=this.serverPolicy.resolveDispatchCapabilities({definition:e,actionId:n,actor:i.actor,source:i.source}),!Array.isArray(s)||s.some(a=>typeof a!="string"||!a||a==="*"||a==="all"||/[/*]/.test(a)))throw new Error("invalid dispatch grant")}catch{throw new x("CAPABILITY_DENIED","Authenticated dispatch capability was denied")}return [...Kr(r,o,s)]}validateContext(e){if(this.serverMode){this.validateServerContext(e);return}if(!this.localActor||e.source!=="cli"||e.workspaceId!==this.workspaceId||e.actor.kind!=="local"||e.actor.id!==this.localActor.id)throw new x("UNAUTHENTICATED","CLI local execution context is invalid")}validateServerContext(e){if(e.source!=="system"&&e.source!=="ui_host")throw new x("UNAUTHENTICATED","Authenticated UI source is invalid");if(e.workspaceId!==this.workspaceId||!e.threadId||e.actor.kind!=="authenticated"||!e.actor.id)throw new x("UNAUTHENTICATED","Authenticated UI context is invalid")}validateEnvelope(e){if(!e.instanceId||e.instanceId.length>128||!e.actionId||e.actionId.length>128||!e.requestId||Bn(e.requestId)>128||!Number.isInteger(e.expectedRevision)||e.expectedRevision<0)throw new x("INPUT_INVALID","UI action envelope is invalid");let n=oe(e.input),r=me(n);if(Bn(r)>64*1024)throw new x("INPUT_INVALID","UI action input is too large");return n}validateActionDeclaration(e,n,r,o){if(r&&Object.keys(o).some(i=>!r.includes(i)))throw new x("INPUT_INVALID","UI action input is invalid")}now(){let e=this.clock();if(!Number.isFinite(e))throw new x("EXECUTION_FAILED","UI runtime clock is invalid");return Math.max(0,Math.floor(e))}};function Af(t,e){return new eo(t,{injectDatabaseError:e?.injectDatabaseError,bumpRevisionBeforeCas:e?.bumpRevisionBeforeCas})}function Ai(t,e,n=e){if(t===null||typeof t!="object")throw new x("INPUT_INVALID","UI contract input is invalid");for(let r of Object.keys(t))if(!e.has(r))throw new x("INPUT_INVALID","Unknown UI contract field");for(let r of n)if(!Object.prototype.hasOwnProperty.call(t,r))throw new x("INPUT_INVALID","Missing UI contract field")}function Za(t,e,n){return `${t}\0${e}\0${n}`}function If(){return `uic_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,12)}`}function Pf(t){return typeof t=="string"&&/^[A-Z][A-Z0-9_]{0,63}$/.test(t)?t:"EXECUTION_FAILED"}function Cf(t,e){return t.length===e.length&&t.every(n=>e.includes(n))}async function Ii(t){await new Promise(e=>setTimeout(e,Math.min(8,1<<t)));}Re();function _d(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)?t:void 0}function ng(t){return t.slice(t.lastIndexOf("/")+1)}var rg=new Set(["tools","effort","mode","provider","model","profiles","overdrive"]);function og(t){if(!t)return;let n=Object.entries(t).filter(([,r])=>r!=null&&typeof r!="object"&&typeof r!="function").filter(([r])=>!rg.has(r));if(n.length!==0)return Object.fromEntries(n.map(([r,o])=>[r,String(o)]))}function kd(t,e,n){let r=_d(t);if(!r)return {};let o=ng(e),i=!n.active&&o==="grok"?In(r):r,s=n.active?n.providerOptions:_d(i[o]);return {modeOptions:i,providerOptions:s,configOptions:og(i)}}function ig(t){return t?t.settings?.template?.exec:void 0}function sg(){try{let t=new Uint8Array(8);return globalThis.crypto.getRandomValues(t),Array.from(t,e=>e.toString(16).padStart(2,"0")).join("")}catch{let{randomBytes:t}=ge("crypto");return t(8).toString("hex")}}var qi=class t extends Mn{_agents;_templateEngine;_documentLoader;_layoutLoader;_layoutRenderer;_config;_projectRoot;_workspaceId;_workspaceName;_plugins=[];_tools=new Map;_activeAdapters=new Map;_pendingThreads=new Map;_activeTasks=new Map;_remoteFactory;_remoteTargets=new Map;_additionalArgsProvider;_callerIdentityOverrides=new Map;constructor(e,n={},r,o,i){super(),this._agents=new Map(e.map(d=>[d.id,d])),this._config=r,this._projectRoot=i??(typeof process<"u"?process.cwd():"/");let s=i??(typeof process<"u"?process.env.CREWX_WORKSPACE??process.cwd():"/");this._workspaceId=Jr(s),this._workspaceName=K.basename(s);let a=ig(r);this._templateEngine=new Cn({execPolicy:n.execPolicy??a}),this._documentLoader=o??new Ut,this._layoutLoader=new Sn({templatesPath:Gt()}),this._layoutRenderer=new Dn,this._remoteFactory=n.remoteFactory,this._additionalArgsProvider=n.additionalArgsProvider;}async resolveFileRemoteTarget(e){let n=this.getAgent(e),r=Array.isArray(n?.provider)?n?.provider[0]:n?.provider;if(!r?.startsWith("remote/"))return null;let o=r.slice(7),i=this.getRemoteProviderConfig(o);if(!i?.location?.startsWith("file://"))return null;let s=K.resolve(i.location.replace("file://","")),a=i.external_agent_id??e.replace(/^@/,""),d=this._remoteTargets.get(s);d||(d=(this._remoteFactory??(m=>t.loadYaml(m)))(s),this._remoteTargets.set(s,d),d.catch(()=>this._remoteTargets.delete(s)));let c=await d,l=c.getAgent("@"+a),f=Array.isArray(l?.provider)?l?.provider[0]:l?.provider;if(f?.startsWith("remote/"))throw new Error(`Chained remotes not allowed: "${o}" \u2192 "${f}"`);return {target:c,agentRef:"@"+a}}static async loadBuiltInConfig(e){let{yamlPath:n,dir:r}=So(),o;try{o=Ua.readFileSync(n,"utf-8");}catch(s){throw new Error(`[@crewx/sdk] Cannot read built-in config: ${n}
391
- ${s.message}`)}let i=_r(o);if(i.documents&&typeof i.documents=="object"){let s={};for(let[a,d]of Object.entries(i.documents))if(d&&typeof d=="object"){let c=d;typeof c.path=="string"&&!K.isAbsolute(c.path)?s[a]={...c,path:K.resolve(r,c.path)}:s[a]=c;}else s[a]=d;return {...i,documents:s}}return i}static mergeCrewxConfig(e,n){let r=new Map;for(let _ of e.agents??[])r.set(_.id,_);for(let _ of n.agents??[])r.has(_.id)&&console.warn(`[agent-loader] User agent "${_.id}" overrides built-in`),r.set(_.id,_);let o=Array.from(r.values()),i={...e.layouts??{},...n.layouts??{}},s={...e.documents??{},...n.documents??{}},a=e,d=n,c=vd(a.vars,d.vars),l=vd(a.settings,d.settings),f;e.skills&&n.skills&&typeof e.skills=="object"&&typeof n.skills=="object"&&!Array.isArray(e.skills)&&!Array.isArray(n.skills)?f={...e.skills,...n.skills}:f=n.skills??e.skills;let g=[...e.hooks??[],...n.hooks??[]],m=ag(a.providers,d.providers),k={...e},h={...n};for(let _ of ["agents","layouts","documents","skills","hooks","vars","settings","providers"])delete k[_],delete h[_];let w={...{...k,...h},agents:o,layouts:i,documents:s,skills:f};return g.length>0&&(w.hooks=g),c!==void 0&&(w.vars=c),l!==void 0&&(w.settings=l),m!==void 0&&(w.providers=m),w}static async loadYaml(e,n,r){let o=n?.includeBuiltIns!==false,i,s;if(o){let l=await t.loadBuiltInConfig(r);if(e!==void 0){let f=kr(e);i=t.mergeCrewxConfig(l,f),s=K.dirname(e);}else i=l,s=process.cwd();}else {if(e===void 0)throw new Error("[@crewx/sdk] loadYaml: path is required when includeBuiltIns is false");i=kr(e),s=K.dirname(e);}let a=new Ut(r);await a.load(i.documents,s);let d=i.agents??[];return await Ed(d,i,n),new t(d,n??{},i,a,s)}static async fromConfig(e,n,r,o){let i=n?.includeBuiltIns===true,s=e;if(i){let l=await t.loadBuiltInConfig(o);s=t.mergeCrewxConfig(l,e);}let a=new Ut(o);await a.load(s.documents,r??(typeof process<"u"?process.cwd():"/"));let d=s.agents??[];return await Ed(d,s,n),new t(d,n??{},s,a,r)}get agents(){return this._agents}get config(){return this._config}get plugins(){return this._plugins}get tools(){return this._tools}get workspaceId(){return this._workspaceId}createUiRuntime(e){return td(this._workspaceId,e)}get workspaceName(){return this._workspaceName}getAgent(e){let n=e.startsWith("@")?e.slice(1):e;return this._agents.get(n)}getRemoteProviderConfig(e){let n=this._config?.providers;return Array.isArray(n)?n.find(o=>o.type==="remote"&&o.id===e):void 0}computeTaskLogPath(e,n){let r=Ko(n);return K.join(this._projectRoot,".crewx","logs",`${r}_${e}.log`)}registerTool(e,n){this._tools.set(e,{name:e,...n});}async use(e){this._plugins.includes(e)||(await e.attach(this),this._plugins.push(e));}handler(e){return vi(this,e)}async registerChannelAdapter(e){let{adapter:n,instanceId:r,config:o}=e;if(this._activeAdapters.has(r))throw new Error(`Adapter instance already registered: ${r}`);let i=new Set(n.manifest.capabilities),s=e.store??ri(r),a=e.defaultMode??"query",d=n.manifest.platform,c=e.agentRunner??{run:async(m,k,h)=>{let w=await(a==="execute"?this.execute.bind(this):this.query.bind(this))(`@${m}`,k,{threadId:h?.threadId,platform:d});return {output:w.ok?w.data:w.error?.message??""}}},l=e.onInbound??(async m=>{let k=m.routingHints?.agentId??e.defaultAgent;if(!k)return {accepted:false,reason:"no_agent"};let{output:h}=await c.run(k,m.text,{threadId:m.threadId});return {accepted:true,output:h}}),f=ii({instanceId:r,config:o,capabilities:i,db:s,agentRunner:c,onInbound:l}),g={adapter:n,ctx:f,state:"starting"};this._activeAdapters.set(r,g),this.emit("adapter:lifecycle",{adapterId:n.manifest.id,instanceId:r,state:"starting",timestamp:new Date});try{await n.start(f),g.state="started",this.emit("adapter:lifecycle",{adapterId:n.manifest.id,instanceId:r,state:"started",timestamp:new Date});}catch(m){throw g.state="failed",this.emit("adapter:lifecycle",{adapterId:n.manifest.id,instanceId:r,state:"failed",error:m instanceof Error?m:new Error(String(m)),timestamp:new Date}),this._activeAdapters.delete(r),m}}async unregisterChannelAdapter(e){let n=this._activeAdapters.get(e);if(n){n.state="stopping",this.emit("adapter:lifecycle",{adapterId:n.adapter.manifest.id,instanceId:e,state:"stopping",timestamp:new Date});try{await n.adapter.stop(n.ctx),n.state="stopped",this.emit("adapter:lifecycle",{adapterId:n.adapter.manifest.id,instanceId:e,state:"stopped",timestamp:new Date});}catch(r){n.state="failed",this.emit("adapter:lifecycle",{adapterId:n.adapter.manifest.id,instanceId:e,state:"failed",error:r instanceof Error?r:new Error(String(r)),timestamp:new Date});}finally{this._activeAdapters.delete(e);}}}async stopAllAdapters(e={}){let n=e.timeoutMs??1e4,r=Array.from(this._activeAdapters.keys()),o=await Promise.allSettled(r.map(i=>Promise.race([this.unregisterChannelAdapter(i),new Promise((s,a)=>setTimeout(()=>a(new Error(`Adapter stop timeout: ${i}`)),n))])));for(let i=0;i<o.length;i++)o[i].status==="rejected"&&console.error(`[crewx] adapter stop error (${r[i]}): ${o[i].reason}`);}abortAll(){for(let[e,n]of this._activeTasks)if(n.pid!==void 0)try{process.platform==="win32"?process.kill(n.pid,"SIGTERM"):process.kill(-n.pid,"SIGTERM");}catch(r){console.error(`[crewx] abort task ${e} (pid=${n.pid}) error: ${r instanceof Error?r.message:String(r)}`);}}async _drainActiveTasks(e){let n=Array.from(this._activeTasks.values()).map(r=>r.done);n.length!==0&&await Promise.race([Promise.allSettled(n),new Promise(r=>setTimeout(r,e).unref())]);}async close(){this.abortAll(),await this._drainActiveTasks(Tn+1e3),await this.stopAllAdapters({timeoutMs:1e4});let e=[...this._remoteTargets.values()];this._remoteTargets.clear(),await Promise.allSettled(e.map(async r=>{try{await(await r).close();}catch(o){console.error(`[crewx] remote target close error: ${o instanceof Error?o.message:String(o)}`);}}));let n=[...this._plugins].reverse();for(let r of n)try{await r.detach(this);}catch(o){console.error(`[crewx] plugin ${r.name} detach error: ${o instanceof Error?o.message:String(o)}`);}this._plugins.length=0;}filterAgents(e){let n=a=>a?a.split(",").map(d=>d.trim().toLowerCase()).filter(Boolean):void 0,r=n(e.role),o=n(e.team),i=n(e.provider),s=Array.from(this._agents.values());return r&&(s=s.filter(a=>a.role&&r.some(d=>Fe(a.role.toLowerCase(),d)))),o&&(s=s.filter(a=>a.team&&o.some(d=>Fe(a.team.toLowerCase(),d)))),i&&(s=s.filter(a=>(Array.isArray(a.provider)?a.provider:[a.provider]).some(c=>i.some(l=>Fe(c.toLowerCase(),l))))),s}renderAgentPrompt(e){let n=e.startsWith("@")?e.slice(1):e,r=this._agents.get(n);if(!r)throw new et(n,Array.from(this._agents.keys()));return r.inline?.prompt??r.inline?.system_prompt??r.description??`You are an expert ${n}.`}async renderPrompt(e,n){let o={...await this._documentLoader.buildContext(),...n?.documents??{}},i={...n,documents:o};return this._templateEngine.render(e,i)}registerLayout(e,n){this._layoutLoader.registerLayout(e,n);}async renderAgentPromptFull(e,n){let r=n?.__contextBudget,o=e.startsWith("@")?e.slice(1):e,i=this._agents.get(o);if(!i)throw new et(o,Array.from(this._agents.keys()));let s=this._resolveLayoutSpec(i,n?.layout),a=this._extractLayoutId(s),d=this._extractLayoutProps(i,s,n?.layout),c=this._layoutLoader.load(a,d),l=i.inline?.prompt??i.inline?.system_prompt??i.description??`You are an expert ${o}.`,f=await this._documentLoader.buildContext(),g=n?.env??(typeof process<"u"?process.env:{}),m=n?.vars?.security_key??sg(),k={...n?.vars??{},documents:f,env:g,agent:{id:i.id,name:i.name??i.id,role:i.role??"",team:i.team??"",description:i.description??""}},h=await this._templateEngine.render(l,k),v={mode:n?.session?.mode??"query",platform:n?.session?.platform??"cli",options:n?.session?.options??[]},w=i.provider,_=Array.isArray(w)?w:typeof w=="string"&&w.length>0?[w]:[],R=_.join(", ")||(typeof w=="string"?w:""),b=i.options,L=["goals","daily"],A={goals:false,daily:false},Z;if(!Array.isArray(b)&&typeof b=="object"&&b!==null){let N=b;if("goals"in N){let J=N.goals;typeof J=="string"||Array.isArray(J)?A.goals=J:A.goals=!!J;}"daily"in N&&(A.daily=!!N.daily);let Y={};for(let[J,ie]of Object.entries(N))L.includes(J)||(Y[J]=ie);if(Object.keys(Y).length>0){let J=_.some(Ye=>Ye.startsWith("cli/")),ie={};for(let[Ye,Qe]of Object.entries(Y)){let E={};if(Array.isArray(Qe))J&&(E.rawArgs=Qe);else if(typeof Qe=="object"&&Qe!==null){let U=Qe;Object.keys(U).length>0&&(E.named=U);}(E.named||E.rawArgs&&E.rawArgs.length>0)&&(ie[Ye]=E);}Z=Object.keys(ie).length>0?ie:void 0;}}let P=Array.isArray(b)?b:void 0,F={};for(let[N,Y]of Object.entries(f))F[N]={content:Y.content??"",toc:Y.toc,summary:Y.summary,path:Y.path};if(A.goals){let N=K.join(this._projectRoot,"docs","goal"),Y=await ga(N,void 0,A.goals);Y&&(F.active_goals={content:Y});}if(A.daily){let N=K.join(this._projectRoot,"docs","daily"),Y=await ma(N);Y&&(F.today_daily={content:Y});}let ce=n?.vars?.user_input??void 0,H=this._config?.settings?.dreaming?.continuity,O=H?.reuseReadOnly!==false,te=typeof H?.lookback=="number"?H.lookback:5,z=typeof H?.maxEntryChars=="number"?H.maxEntryChars:8e3,$=n?.threadId??"",W=i.id,fe=!r?.activityLogDisabled&&O&&te>0&&!!$&&!!n?.messages?.length,ee=new Map;if(fe)if(r?.activityLogTokenBudget!==void 0&&r.countTokens){let N=ki({threadId:$,agentId:W,lookback:te,maxEntryChars:z,activityLogTokenBudget:r.activityLogTokenBudget,countTokens:r.countTokens});ee=N.activityLogByTask,r.onActivityLogResult?.(N);}else {typeof H?.decayRate=="number"?H.decayRate:.5;ee=Fa({threadId:$,agentId:W,lookback:te,maxEntryChars:z});}let un=(n?.messages??[]).map(N=>{let Y=typeof N.activity_log=="string"?$r(N.activity_log):N.activity_log;if(!N.isAssistant)return Y===N.activity_log?N:{...N,activity_log:Y};let J=N.metadata?.task_id;return !J||!ee.has(J)?Y===N.activity_log?N:{...N,activity_log:Y}:{...N,activity_log:$r(ee.get(J))}}),Et={user_input:ce,agent:{id:i.id,name:i.name??i.id,role:i.role??"",team:i.team??"",description:i.description??"",provider:R,providerList:_,model:i.inline?.model,workingDirectory:i.working_directory??i.workingDirectory??".",inline:{...i.inline??{},prompt:h},specialties:i.specialties??[],capabilities:i.capabilities??[],remote:i.remote??null,optionsByMode:Z,optionsArray:P},agentMetadata:{specialties:i.specialties??[],capabilities:i.capabilities??[],description:i.description??""},contextOptions:A,documents:F,skills:n?.skills??[],session:v,env:g,vars:{security_key:m,...n?.vars??{}},props:{...d??{},...n?.messages&&n.messages.length>0?{showConversationHistory:true}:{}},platform:v.platform,mode:v.mode,thread_id:$,now:On(new Date),has_activity_log:ee.size>0,messages:un,tools:this._tools.size>0?{list:Array.from(this._tools.values()).map(N=>({name:N.name,description:N.description,parameters:N.parameters})),json:JSON.stringify(Array.from(this._tools.values()).map(N=>({name:N.name,description:N.description,parameters:N.parameters})),null,2),count:this._tools.size}:null,metadata:{}};return this._layoutRenderer.render(c,Et)}_filterToolsByMode(e){return e?e.map(n=>this._tools.get(n)).filter(n=>n!==void 0):Array.from(this._tools.values())}_resolveLayoutSpec(e,n){if(n!==void 0)return n;let r=e.inline?.layout;if(r!==void 0)return r;let o=this._config?.layouts?.default;return typeof o=="string"&&o?o:"crewx/default"}_extractLayoutId(e){if(typeof e=="string")return e;if("id"in e)return e.id;if("template"in e&&typeof e.template=="string"&&e.template.trim()){let n=`crewx/__inline_${Date.now()}`;return this._layoutLoader.registerLayout(n,e.template),n}return "crewx/default"}_extractLayoutProps(e,n,r){let o=e.inline?.layout,i=o&&typeof o=="object"&&"props"in o?o.props:void 0,s=r&&typeof r=="object"&&"id"in r?r.props:void 0;if(i||s)return {...i??{},...s??{}}}_getConversationProvider(){return this._plugins.find(n=>n.name==="conversation")?.conversationProvider}async _fetchHistoryMessages(e,n,r,o){if(r&&r.length>0)return tn(r,o);if(!e){let s=tn([],o);return s.length>0?s:void 0}let i=this._getConversationProvider();if(!i){let s=tn([],o);return s.length>0?s:void 0}try{let s=await i.fetchHistory(e,{currentTraceId:n});if(s.messages.length===0){let a=tn([],o);return a.length>0?a:void 0}return tn(pi(s),o)}catch{return}}async _resolveFreshProvider(e,n,r){let o=ha(e.provider),i=Vo(e.options,n,o,Go(r?.overdrive)),s=Jo(e.options,n),a=i.active&&i.provider?i.provider:r?.provider??s.provider??o,d=i.active&&i.model?i.model:r?.model??s.model??e.inline?.model;return d&&d.includes("{{")&&(d=await this._templateEngine.render(d,{...r?.vars??{}})),{baseProviderStr:o,baseModel:e.inline?.model,effectiveProviderStr:a,effectiveModel:d,overdrive:i}}_readInputBudgetPercent(){let r=this._config?.settings?.dreaming?.continuity;if(!(!r||!Object.prototype.hasOwnProperty.call(r,"inputBudgetPercent")))return r.inputBudgetPercent}_resolveBudgetModel(e,n){if(n&&n.trim())return n;let r=pr(e)?.model;return typeof r=="string"&&r.trim()?r:""}_resolveContextMode(e){return e?.contextMode==="instruction-only"?"instruction-only":"full"}_hasUsableResumeSessionId(e){return typeof e=="string"&&e.trim().length>0}_buildInstructionOnlyResumeManifest(e){return {phase:"resume",initialInputFraming:Ao,resolved:e.budget.resolved,reason:e.budget.resolved?void 0:e.budget.reason,requestedProvider:e.requestedProvider,requestedModel:e.requestedModel,effectiveProvider:e.effectiveProvider,effectiveModel:e.effectiveModel,contextWindowTokens:e.budget.resolved?e.budget.contextWindowTokens:null,inputBudgetPercent:e.budget.resolved?e.budget.inputBudgetPercent:e.budget.inputBudgetPercent??(typeof e.rawInputBudgetPercent=="number"?e.rawInputBudgetPercent:null),inputBudgetTokens:e.budget.resolved?e.budget.inputBudgetTokens:null,tokenizer:e.budget.tokenizer,initialTokenCount:e.messageTokenCount,finalTokenCount:e.messageTokenCount,activityLogTokenCount:0,activityIncludedEntries:0,activityOmittedEntries:0,activityRemovedForBudget:false,activityNewestTaskTokenCap:null,historyOriginalMessages:0,historyIncludedMessages:0,historyOmittedMessages:0,overBudget:e.budget.resolved?e.messageTokenCount>e.budget.inputBudgetTokens:false}}_prepareInstructionOnlyResumeWithBudget(e){let n=e.providerResolution.effectiveProviderStr,r=this._resolveBudgetModel(n,e.providerResolution.effectiveModel),o=this._readInputBudgetPercent(),i=wr({provider:n,model:r,inputBudgetPercent:o}),s=e.providerResolution.baseProviderStr,a=e.providerResolution.baseModel??null,d=r||null,c=yr(e.message,{provider:n,model:r}).tokenCount,l=this._buildInstructionOnlyResumeManifest({budget:i,requestedProvider:s,requestedModel:a,effectiveProvider:n,effectiveModel:d,rawInputBudgetPercent:o,messageTokenCount:c});return this._hasUsableResumeSessionId(e.resumeSessionId)?i.resolved&&c>i.inputBudgetTokens?{contextBudget:l,error:{code:"INPUT_BUDGET_EXCEEDED",message:`Input budget exceeded: instruction-only resume message is ${c} tokens; budget is ${i.inputBudgetTokens} tokens.`}}:{contextBudget:l}:{contextBudget:l,error:{code:"RESUME_SESSION_REQUIRED",message:'contextMode "instruction-only" requires a same-provider native resumeSessionId.'}}}_activityLogEntryCounts(e){return e?e.tasks.reduce((n,r)=>({tokenCount:n.tokenCount+r.tokenCount,includedEntries:n.includedEntries+r.includedEntries,omittedEntries:n.omittedEntries+r.omittedEntries}),{tokenCount:0,includedEntries:0,omittedEntries:0}):{tokenCount:0,includedEntries:0,omittedEntries:0}}_buildUnresolvedContextBudgetManifest(e){return {phase:"fresh",initialInputFraming:mr,resolved:false,reason:e.budget.resolved?void 0:e.budget.reason,requestedProvider:e.requestedProvider,requestedModel:e.requestedModel,effectiveProvider:e.effectiveProvider,effectiveModel:e.effectiveModel,contextWindowTokens:null,inputBudgetPercent:e.budget.resolved?e.budget.inputBudgetPercent:e.budget.inputBudgetPercent??(typeof e.rawInputBudgetPercent=="number"?e.rawInputBudgetPercent:null),inputBudgetTokens:null,tokenizer:e.budget.tokenizer,initialTokenCount:null,finalTokenCount:null,activityLogTokenCount:null,activityIncludedEntries:null,activityOmittedEntries:null,activityRemovedForBudget:false,activityNewestTaskTokenCap:null,historyOriginalMessages:e.historyOriginalMessages,historyIncludedMessages:e.historyOriginalMessages,historyOmittedMessages:0,overBudget:false}}_buildResolvedContextBudgetManifest(e){let n=this._activityLogEntryCounts(e.activityLogResult);return {phase:"fresh",initialInputFraming:mr,resolved:true,requestedProvider:e.requestedProvider,requestedModel:e.requestedModel,effectiveProvider:e.effectiveProvider,effectiveModel:e.effectiveModel,contextWindowTokens:e.budget.contextWindowTokens,inputBudgetPercent:e.budget.inputBudgetPercent,inputBudgetTokens:e.budget.inputBudgetTokens,tokenizer:e.budget.tokenizer,initialTokenCount:e.initialTokenCount,finalTokenCount:e.finalTokenCount,activityLogTokenCount:n.tokenCount,activityIncludedEntries:n.includedEntries,activityOmittedEntries:n.omittedEntries,activityRemovedForBudget:e.activityRemovedForBudget,activityNewestTaskTokenCap:Math.floor(e.budget.inputBudgetTokens/8),historyOriginalMessages:e.historyOriginalMessages,historyIncludedMessages:e.historyIncludedMessages,historyOmittedMessages:e.historyOriginalMessages-e.historyIncludedMessages,overBudget:e.initialTokenCount>e.budget.inputBudgetTokens}}async _renderFreshPromptVariant(e){return this.renderAgentPromptFull(e.agentRef,{session:{mode:e.mode,platform:e.options?.platform},vars:{user_input:e.message,...e.options?.vars??{},crewx_workspace_path:this._resolveEffectiveCwd(e.agent,e.options)},messages:e.messages,threadId:e.options?.threadId,__contextBudget:{activityLogDisabled:e.activityLogDisabled,activityLogTokenBudget:e.activityLogTokenBudget,countTokens:e.countTokens,onActivityLogResult:e.onActivityLogResult}})}async _prepareFreshPromptWithBudget(e){let n=e.historyMessages,r=n??[],o=r.length,i=e.providerResolution.effectiveProviderStr,s=this._resolveBudgetModel(i,e.providerResolution.effectiveModel),a=this._readInputBudgetPercent(),d=wr({provider:i,model:s,inputBudgetPercent:a}),c=e.providerResolution.baseProviderStr,l=e.providerResolution.baseModel??null,f=s||null;if(!d.resolved)return {renderedPrompt:await this._renderFreshPromptVariant({...e,messages:n}),contextBudget:this._buildUnresolvedContextBudgetManifest({budget:d,requestedProvider:c,requestedModel:l,effectiveProvider:i,effectiveModel:f,rawInputBudgetPercent:a,historyOriginalMessages:o})};let g=Co({provider:i,model:d.model}),m=A=>g.countTokens(A),k=A=>Po({systemPrompt:A,message:e.message},m),h,v=await this._renderFreshPromptVariant({...e,messages:n,activityLogTokenBudget:d.inputBudgetTokens,countTokens:m,onActivityLogResult:A=>{h=A;}}),w=k(v),_=w,R=false,b=r;if(_>d.inputBudgetTokens&&h&&h.activityLogByTask.size>0&&(v=await this._renderFreshPromptVariant({...e,messages:b,activityLogDisabled:true,activityLogTokenBudget:d.inputBudgetTokens,countTokens:m}),_=k(v),R=true),_>d.inputBudgetTokens&&b.length>0)for(let A=1;A<=r.length;A++){let Z=r.slice(A),P=await this._renderFreshPromptVariant({...e,messages:Z,activityLogDisabled:R,activityLogTokenBudget:d.inputBudgetTokens,countTokens:m}),F=k(P);if(v=P,_=F,b=Z,F<=d.inputBudgetTokens)break}let L=this._buildResolvedContextBudgetManifest({budget:d,requestedProvider:c,requestedModel:l,effectiveProvider:i,effectiveModel:f,initialTokenCount:w,finalTokenCount:_,activityLogResult:h,activityRemovedForBudget:R,historyOriginalMessages:o,historyIncludedMessages:b.length});return _>d.inputBudgetTokens?{renderedPrompt:v,contextBudget:L,countTokens:m,error:{code:"INPUT_BUDGET_EXCEEDED",message:`Input budget exceeded: final provider initial input is ${_} tokens; budget is ${d.inputBudgetTokens} tokens.`}}:{renderedPrompt:v,contextBudget:L,countTokens:m}}_recountFreshProviderInitialInput(e){let n=e.contextBudgetManifest;if(!n?.resolved||!n.effectiveModel)return null;let r=e.countTokens??(o=>yr(o,{provider:n.effectiveProvider,model:n.effectiveModel}).tokenCount);return Po({systemPrompt:e.providerOptions.systemPrompt,message:e.message},r)}_validateFreshProviderInitialInputBudget(e){let n=e.contextBudgetManifest;if(!n?.resolved||n.finalTokenCount===null||n.inputBudgetTokens===null)return;let r=this._recountFreshProviderInitialInput(e);if(r!==null){if(r!==n.finalTokenCount)throw new Error(`Context budget recount mismatch: provider initial input is ${r} tokens but manifest.finalTokenCount is ${n.finalTokenCount}.`);if(r>n.inputBudgetTokens)return {code:"INPUT_BUDGET_EXCEEDED",message:`Input budget exceeded: final provider initial input is ${r} tokens; budget is ${n.inputBudgetTokens} tokens.`}}}_resolveTimeout(e,n){let r=e==="query"?"CREWX_TIMEOUT_QUERY":"CREWX_TIMEOUT_EXECUTE";if(process.env[r]!=null&&process.env[r]!==""){let o=Ys();return e==="query"?o.queryMs:o.executeMs}if(n?.meta?.defaultTimeoutMs){let o=e==="query"?n.meta.defaultTimeoutMs.query:n.meta.defaultTimeoutMs.execute;if(o!==void 0)return o}return 8*36e5}_resolveIdleTimeout(e){let n=Wo();return n!==void 0?n:e?.meta?.defaultIdleMs!==void 0?e.meta.defaultIdleMs:6e5}_lookupCliAdapter(e){return si(e)}_resolveEffectiveCost(e,n,r){return ys(e?.costUsd,e?.inputTokens,e?.outputTokens,e?.cachedInputTokens,n)}_resolveEffectiveCwd(e,n){return n?.cwd??(e.working_directory?K.resolve(this._projectRoot,e.working_directory):this._projectRoot)}_buildFileRemoteOptions(e,n){let r={path:this._projectRoot,id:this._workspaceId,name:this._workspaceName,agentRef:e};return {...n,cwd:void 0,callerIdentity:r,metadata:{...n?.metadata??{},crewx:{...n?.metadata?.crewx??{},callerWorkspace:r}},vars:{...n?.vars??{},crewx_caller_workspace_path:r.path,crewx_caller_workspace_id:r.id,crewx_caller_workspace_name:r.name}}}_registerCallerIdentityOverride(e,n,r){let o=Symbol("callerIdentityOverride");return this._callerIdentityOverrides.set(e,{token:o,callerIdentity:n,targetIdentity:r}),o}_clearCallerIdentityOverride(e,n){if(!n)return;let r=this._callerIdentityOverrides.get(e);r&&r.token===n&&this._callerIdentityOverrides.delete(e);}_rewriteCallerFacingPayload(e,n,r){let{callerIdentity:o,targetIdentity:i}=r,s={...n,agentRef:o.agentRef};if(e==="task:output")return s;let a=s,d=a.metadata??{},c=d.crewx??{};return {...a,workspaceId:o.id,workspaceName:o.name,metadata:{...d,crewx:{...c,remoteExecution:i}}}}emit(e,n){if(e==="task:start"||e==="task:end"||e==="task:output"){let r=n.traceId,o=this._callerIdentityOverrides.get(r);if(o){let i=this._rewriteCallerFacingPayload(e,n,o);super.emit(e,i);return}}super.emit(e,n);}emitToolEvents(e,n,r,o,i,s,a){try{let c=this._lookupCliAdapter(r)?.parseEvent?.(o)??bn(new Date().toISOString(),o);for(let l of c)l.type==="tool_use"&&l.toolName&&this.emit("tool:observed:before",{traceId:e,timestamp:new Date,agentRef:n,agentId:i,threadId:s,sessionId:a,provider:r,tool:{name:l.toolName,rawName:l.toolName,input:l.toolInput?this.tryParseJson(l.toolInput):void 0,toolUseId:l.toolUseId}}),l.type==="tool_result"&&this.emit("tool:observed:after",{traceId:e,timestamp:new Date,agentRef:n,agentId:i,threadId:s,sessionId:a,provider:r,tool:{name:l.toolName??"unknown",rawName:l.toolName??"unknown",toolUseId:l.toolUseId,result:l.resultPreview,isError:l.isError}});}catch{}}emitTaskLogEntries(e,n,r,o,i,s,a){try{for(let d of a)d.type==="tool_use"&&d.toolName&&this.emit("tool:observed:before",{traceId:e,timestamp:new Date,agentRef:n,agentId:r,threadId:o,sessionId:i,provider:s,tool:{name:d.toolName,rawName:d.toolName,input:d.toolInput?this.tryParseJson(d.toolInput):void 0,toolUseId:d.toolUseId}}),d.type==="tool_result"&&this.emit("tool:observed:after",{traceId:e,timestamp:new Date,agentRef:n,agentId:r,threadId:o,sessionId:i,provider:s,tool:{name:d.toolName??"unknown",rawName:d.toolName??"unknown",toolUseId:d.toolUseId,result:d.resultPreview,isError:d.isError}});}catch{}}tryParseJson(e){try{return JSON.parse(e)}catch{return e}}async query(e,n,r){let o=await this.resolveFileRemoteTarget(e);if(o){let l=await o.target.query(o.agentRef,n,this._buildFileRemoteOptions(e,r));return {...l,meta:{...l.meta,agentId:e.replace(/^@/,"")}}}let i=Un.getStore()??ai(r?.trace),s=r?.taskId??it("tsk"),a={parentTaskId:i?.parentTaskId??null,rootTraceId:i?.rootTraceId??s,callerAgentId:i?.callerAgentId??null},d={parentTaskId:s,rootTraceId:i?.rootTraceId??s,callerAgentId:null},c=r?.callerIdentity?this._registerCallerIdentityOverride(s,r.callerIdentity,{agentId:e.replace(/^@/,""),workspaceId:this._workspaceId,workspaceName:this._workspaceName}):void 0;try{return await Un.run(d,async()=>{let l=Date.now(),f=new Date,g;try{g=vr(e,Array.from(this._agents.values()));}catch(E){if(E instanceof et){this.emit("task:start",{traceId:s,timestamp:f,agentRef:e,message:n,mode:"query",parentTaskId:a.parentTaskId,rootTraceId:a.rootTraceId,callerAgentId:a.callerAgentId,metadata:{...r?.metadata??{}},threadId:r?.threadId,platform:r?.platform??"cli",workspaceId:this._workspaceId,workspaceName:this._workspaceName});let U=Date.now()-l,B={code:"AGENT_NOT_FOUND",message:E.message};return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"query",durationMs:U,error:B,metadata:r?.metadata?{...r.metadata}:void 0}),this._clearCallerIdentityOverride(s,c),{ok:!1,data:"",error:B,meta:{agentId:e.replace(/^@/,""),provider:"",durationMs:U,taskId:s}}}throw E}d.callerAgentId=g.id;let m=await this._resolveFreshProvider(g,"query",r),k=m.baseProviderStr,h=m.effectiveProviderStr,v=m.effectiveModel,w=m.overdrive,_=h!==k?void 0:r?.resumeSessionId,b=this._resolveContextMode(r)==="instruction-only",L,A,Z,P=v,F,ce,X,re,H=!1,O=E=>{H||(H=!0,this.emit("task:start",{traceId:s,timestamp:f,agentRef:e,message:n,mode:"query",pid:E,parentTaskId:a.parentTaskId,rootTraceId:a.rootTraceId,callerAgentId:a.callerAgentId,model:P,provider:h,codingAgentCommand:L,renderedPrompt:ce,metadata:{...r?.metadata??{},provider:h,...w.active?{overdrive:!0}:{},...F?{provider_session_id:F}:{},...X?{context_budget:X}:{}},threadId:r?.threadId,platform:r?.platform??"cli",workspaceId:this._workspaceId,workspaceName:this._workspaceName}));};if(b){let E=this._prepareInstructionOnlyResumeWithBudget({message:n,providerResolution:m,resumeSessionId:_});if(X=E.contextBudget,E.error){O();let U=Date.now()-l,B=E.error;return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"query",durationMs:U,error:B,model:P,metadata:r?.metadata?{...r.metadata}:void 0}),this._clearCallerIdentityOverride(s,c),{ok:!1,data:"",error:B,meta:{agentId:g.id,provider:h,model:v,durationMs:U,taskId:s}}}}let te;try{te=rt(h,this._additionalArgsProvider);}catch(E){O();let U=Date.now()-l,B={code:"PROVIDER_ERROR",message:E.message,...E instanceof exports.ProviderError?{providerCode:E.code}:{}};return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"query",durationMs:U,error:B,metadata:r?.metadata?{...r.metadata}:void 0}),this._clearCallerIdentityOverride(s,c),{ok:!1,data:"",error:B,meta:{agentId:g.id,provider:h,model:v,durationMs:U,taskId:s}}}let z;if(b||(z=await this._fetchHistoryMessages(r?.threadId,s,r?.messages,r?.uiProjections)),!b)try{let E=await this._prepareFreshPromptWithBudget({agentRef:e,agent:g,mode:"query",message:n,options:r,providerResolution:m,historyMessages:z});if(ce=E.renderedPrompt,X=E.contextBudget,re=E.countTokens,E.error){O();let U=Date.now()-l,B=E.error;return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"query",durationMs:U,error:B,model:P,metadata:r?.metadata?{...r.metadata}:void 0}),this._clearCallerIdentityOverride(s,c),{ok:!1,data:"",error:B,meta:{agentId:g.id,provider:h,model:v,durationMs:U,taskId:s}}}}catch(E){console.error(`[crewx] renderAgentPromptFull failed for ${e}: ${E instanceof Error?E.message:String(E)}`);}let $=g.options,W=kd($?.query,h,w),fe=w.active?w.mode:W.modeOptions?.mode,ee=w.effort??r?.effort??W.modeOptions?.effort,un=Array.isArray($?.query?.tools)?$.query.tools:void 0,Et=this._tools.size>0?this._filterToolsByMode(un):[],N=W.configOptions,Y=g.inline?.max_steps;h.startsWith("api/")&&O();let J=!1,ie=0,Ye=()=>{},Qe=new Promise(E=>{Ye=E;});this._activeTasks.set(s,{pid:void 0,done:Qe});try{let E={model:v,effort:ee,mode:fe,context:r?.context,...b?{}:{systemPrompt:ce??g.inline?.system_prompt??g.inline?.prompt??g.description??`You are ${g.id}.`},additionalArgs:Array.isArray($?.query)?$.query:void 0,resumeSessionId:_,tools:Et.length>0?Et:void 0,maxSteps:Y,providerOptions:W.providerOptions,configOptions:N,timeoutMs:this._resolveTimeout("query",this._lookupCliAdapter(h)),idleMs:this._resolveIdleTimeout(this._lookupCliAdapter(h)),cwd:this._resolveEffectiveCwd(g,r),env:{CREWX_AGENT_ID:g.id,CREWX_AGENT_ROLE:g.role??"",CREWX_AGENT_TEAM:g.team??"",CREWX_USER_ID:process.env.USER||process.env.USERNAME||"unknown",CREWX_TRACE_ID:s,CREWX_PARENT_TASK_ID:s,CREWX_TASK_ID:s,CREWX_CALLER_AGENT_ID:process.env.CREWX_AGENT_ID??"",CREWX_THREAD_ID:r?.threadId??"",CREWX_PROVIDER:h,CREWX_SESSION_ID:"",CREWX_TASK_LOG_PATH:this.computeTaskLogPath(s,f)},onPid:S=>{let se=this._activeTasks.get(s);se&&(se.pid=S),O(S);},onProviderSessionId:S=>{F=S;},onOutput:(S,se)=>{let fo=this._lookupCliAdapter(h);se==="stdout"&&fo?.suppressOutputLine?.(S)===!0||this.emit("task:output",{traceId:s,timestamp:new Date,agentRef:e,output:S,level:se}),se==="stdout"&&this.emitToolEvents(s,e,h,S,g.id,r?.threadId??"","");},onTaskLog:S=>{this.emitTaskLogEntries(s,e,g.id,r?.threadId??"","",h,S);for(let se of S)this.emit("task:output",{traceId:s,timestamp:new Date,agentRef:e,output:JSON.stringify(se),level:"info"});},onCommand:S=>{L=S;},onUsage:S=>{A=S;},onExitCode:S=>{Z=S;},onModel:S=>{P||(P=S);}},U=b?void 0:this._validateFreshProviderInitialInputBudget({message:n,providerOptions:E,contextBudgetManifest:X,countTokens:re});if(U){O();let S=Date.now()-l;return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"query",durationMs:S,error:U,model:P,metadata:r?.metadata?{...r.metadata}:void 0}),J=!0,{ok:!1,data:"",error:U,meta:{agentId:g.id,provider:h,model:v,durationMs:S,taskId:s}}}let B=await te.query(n,E);ie=this._resolveEffectiveCost(A,P,l),O();let ut=Date.now()-l,pn={...r?.metadata??{},...r?.threadId?{threadId:r.threadId}:{}};return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"query",result:B,durationMs:ut,exitCode:Z,inputTokens:A?.inputTokens,outputTokens:A?.outputTokens,cachedInputTokens:A?.cachedInputTokens,costUsd:ie,model:P,metadata:Object.keys(pn).length>0?pn:void 0}),J=!0,{ok:!0,data:B,meta:{agentId:g.id,provider:h,model:v,durationMs:ut,taskId:s}}}catch(E){if(E instanceof exports.ClientToolCallRequiredError){let ut=it("thd");return this._pendingThreads.set(ut,{agentRef:g.id,providerStr:h,continuationState:E.continuationState,toolCall:E.toolCall,traceId:s,startMs:l,model:v}),J=!0,{ok:!0,status:"requires_action",data:"",toolCall:E.toolCall,threadId:ut,meta:{agentId:g.id,provider:h,model:v,durationMs:Date.now()-l,taskId:s}}}ie=this._resolveEffectiveCost(A,P,l),O();let U=Date.now()-l,B={code:"QUERY_FAILED",message:E.message,...E instanceof exports.ProviderError?{providerCode:E.code}:{}};return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"query",durationMs:U,error:B,exitCode:Z,inputTokens:A?.inputTokens,outputTokens:A?.outputTokens,cachedInputTokens:A?.cachedInputTokens,costUsd:ie,model:P,metadata:r?.metadata?{...r.metadata}:void 0}),J=!0,{ok:!1,data:"",error:B,meta:{agentId:g.id,provider:h,model:v,durationMs:U,taskId:s}}}finally{J||this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"query",durationMs:Date.now()-l,error:{code:"TASK_END_GUARD",message:"task:end was not emitted normally"},exitCode:Z??-1,inputTokens:A?.inputTokens,outputTokens:A?.outputTokens,cachedInputTokens:A?.cachedInputTokens,costUsd:ie,model:P}),this._activeTasks.delete(s),this._clearCallerIdentityOverride(s,c),Ye();}})}finally{this._clearCallerIdentityOverride(s,c);}}async continueQuery(e,n){let r=this._pendingThreads.get(e);if(!r)return {ok:false,data:"",error:{code:"THREAD_NOT_FOUND",message:`No pending thread: ${e}`},meta:{agentId:"",provider:"",durationMs:0}};this._pendingThreads.delete(e);let o=rt(r.providerStr,this._additionalArgsProvider);if(!o.continueWithToolResults)return {ok:false,data:"",error:{code:"UNSUPPORTED",message:"Provider does not support client tool continuation"},meta:{agentId:r.agentRef,provider:r.providerStr,durationMs:0}};let i=n.map(s=>({...s,toolName:r.toolCall.toolCallId===s.toolCallId?r.toolCall.toolName:s.toolCallId}));try{let s=await o.continueWithToolResults(r.continuationState,i),a=Date.now()-r.startMs;return this.emit("task:end",{traceId:r.traceId,timestamp:new Date,agentRef:r.agentRef,mode:"query",result:s,durationMs:a}),{ok:!0,status:"complete",data:s,meta:{agentId:r.agentRef,provider:r.providerStr,model:r.model,durationMs:a}}}catch(s){if(s instanceof exports.ClientToolCallRequiredError)return this._pendingThreads.set(e,{...r,continuationState:s.continuationState,toolCall:s.toolCall}),{ok:true,status:"requires_action",data:"",toolCall:s.toolCall,threadId:e,meta:{agentId:r.agentRef,provider:r.providerStr,model:r.model,durationMs:Date.now()-r.startMs}};let a=Date.now()-r.startMs;return {ok:false,data:"",error:{code:"CONTINUE_FAILED",message:s.message},meta:{agentId:r.agentRef,provider:r.providerStr,model:r.model,durationMs:a}}}}async execute(e,n,r){let o=await this.resolveFileRemoteTarget(e);if(o){let l=await o.target.execute(o.agentRef,n,this._buildFileRemoteOptions(e,r));return {...l,meta:{...l.meta,agentId:e.replace(/^@/,"")}}}let i=Un.getStore()??ai(r?.trace),s=r?.taskId??it("tsk"),a={parentTaskId:i?.parentTaskId??null,rootTraceId:i?.rootTraceId??s,callerAgentId:i?.callerAgentId??null},d={parentTaskId:s,rootTraceId:i?.rootTraceId??s,callerAgentId:null},c=r?.callerIdentity?this._registerCallerIdentityOverride(s,r.callerIdentity,{agentId:e.replace(/^@/,""),workspaceId:this._workspaceId,workspaceName:this._workspaceName}):void 0;try{return await Un.run(d,async()=>{let l=Date.now(),f=new Date,g;try{g=vr(e,Array.from(this._agents.values()));}catch(E){if(E instanceof et){this.emit("task:start",{traceId:s,timestamp:f,agentRef:e,message:n,mode:"execute",parentTaskId:a.parentTaskId,rootTraceId:a.rootTraceId,callerAgentId:a.callerAgentId,metadata:{...r?.metadata??{}},threadId:r?.threadId,platform:r?.platform??"cli",workspaceId:this._workspaceId,workspaceName:this._workspaceName});let U=Date.now()-l,B={code:"AGENT_NOT_FOUND",message:E.message};return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"execute",durationMs:U,error:B,metadata:r?.metadata?{...r.metadata}:void 0}),this._clearCallerIdentityOverride(s,c),{ok:!1,data:"",error:B,meta:{agentId:e.replace(/^@/,""),provider:"",durationMs:U,taskId:s}}}throw E}d.callerAgentId=g.id;let m=await this._resolveFreshProvider(g,"execute",r),k=m.baseProviderStr,h=m.effectiveProviderStr,v=m.effectiveModel,w=m.overdrive,_=h!==k?void 0:r?.resumeSessionId,b=this._resolveContextMode(r)==="instruction-only",L,A,Z,P=v,F,ce,X,re,H=!1,O=E=>{H||(H=!0,this.emit("task:start",{traceId:s,timestamp:f,agentRef:e,message:n,mode:"execute",pid:E,parentTaskId:a.parentTaskId,rootTraceId:a.rootTraceId,callerAgentId:a.callerAgentId,model:P,provider:h,codingAgentCommand:L,renderedPrompt:ce,metadata:{...r?.metadata??{},provider:h,...w.active?{overdrive:!0}:{},...F?{provider_session_id:F}:{},...X?{context_budget:X}:{}},threadId:r?.threadId,platform:r?.platform??"cli",workspaceId:this._workspaceId,workspaceName:this._workspaceName}));};if(b){let E=this._prepareInstructionOnlyResumeWithBudget({message:n,providerResolution:m,resumeSessionId:_});if(X=E.contextBudget,E.error){O();let U=Date.now()-l,B=E.error;return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"execute",durationMs:U,error:B,model:P,metadata:r?.metadata?{...r.metadata}:void 0}),this._clearCallerIdentityOverride(s,c),{ok:!1,data:"",error:B,meta:{agentId:g.id,provider:h,model:v,durationMs:U,taskId:s}}}}let te;try{te=rt(h,this._additionalArgsProvider);}catch(E){O();let U=Date.now()-l,B={code:"PROVIDER_ERROR",message:E.message,...E instanceof exports.ProviderError?{providerCode:E.code}:{}};return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"execute",durationMs:U,error:B,metadata:r?.metadata?{...r.metadata}:void 0}),this._clearCallerIdentityOverride(s,c),{ok:!1,data:"",error:B,meta:{agentId:g.id,provider:h,model:v,durationMs:U,taskId:s}}}let z;if(b||(z=await this._fetchHistoryMessages(r?.threadId,s,r?.messages,r?.uiProjections)),!b)try{let E=await this._prepareFreshPromptWithBudget({agentRef:e,agent:g,mode:"execute",message:n,options:r,providerResolution:m,historyMessages:z});if(ce=E.renderedPrompt,X=E.contextBudget,re=E.countTokens,E.error){O();let U=Date.now()-l,B=E.error;return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"execute",durationMs:U,error:B,model:P,metadata:r?.metadata?{...r.metadata}:void 0}),this._clearCallerIdentityOverride(s,c),{ok:!1,data:"",error:B,meta:{agentId:g.id,provider:h,model:v,durationMs:U,taskId:s}}}}catch(E){console.error(`[crewx] renderAgentPromptFull failed for ${e}: ${E instanceof Error?E.message:String(E)}`);}let $=g.options,W=kd($?.execute,h,w),fe=w.active?w.mode:W.modeOptions?.mode,ee=w.effort??r?.effort??W.modeOptions?.effort,un=Array.isArray($?.execute?.tools)?$.execute.tools:void 0,Et=this._tools.size>0?this._filterToolsByMode(un):[],N=W.configOptions,Y=g.inline?.max_steps;h.startsWith("api/")&&O();let J=!1,ie=0,Ye=()=>{},Qe=new Promise(E=>{Ye=E;});this._activeTasks.set(s,{pid:void 0,done:Qe});try{let E={model:v,effort:ee,mode:fe,context:r?.context,...b?{}:{systemPrompt:ce??g.inline?.system_prompt??g.inline?.prompt??g.description??`You are ${g.id}.`},additionalArgs:Array.isArray($?.execute)?$.execute:void 0,resumeSessionId:_,tools:Et.length>0?Et:void 0,maxSteps:Y,providerOptions:W.providerOptions,configOptions:N,timeoutMs:this._resolveTimeout("execute",this._lookupCliAdapter(h)),idleMs:this._resolveIdleTimeout(this._lookupCliAdapter(h)),cwd:this._resolveEffectiveCwd(g,r),env:{CREWX_AGENT_ID:g.id,CREWX_AGENT_ROLE:g.role??"",CREWX_AGENT_TEAM:g.team??"",CREWX_USER_ID:process.env.USER||process.env.USERNAME||"unknown",CREWX_TRACE_ID:s,CREWX_PARENT_TASK_ID:s,CREWX_TASK_ID:s,CREWX_CALLER_AGENT_ID:process.env.CREWX_AGENT_ID??"",CREWX_THREAD_ID:r?.threadId??"",CREWX_PROVIDER:h,CREWX_SESSION_ID:"",CREWX_TASK_LOG_PATH:this.computeTaskLogPath(s,f)},onPid:S=>{let se=this._activeTasks.get(s);se&&(se.pid=S),O(S);},onProviderSessionId:S=>{F=S;},onOutput:(S,se)=>{let fo=this._lookupCliAdapter(h);se==="stdout"&&fo?.suppressOutputLine?.(S)===!0||this.emit("task:output",{traceId:s,timestamp:new Date,agentRef:e,output:S,level:se}),se==="stdout"&&this.emitToolEvents(s,e,h,S,g.id,r?.threadId??"","");},onTaskLog:S=>{this.emitTaskLogEntries(s,e,g.id,r?.threadId??"","",h,S);for(let se of S)this.emit("task:output",{traceId:s,timestamp:new Date,agentRef:e,output:JSON.stringify(se),level:"info"});},onCommand:S=>{L=S;},onUsage:S=>{A=S;},onExitCode:S=>{Z=S;},onModel:S=>{P||(P=S);}},U=b?void 0:this._validateFreshProviderInitialInputBudget({message:n,providerOptions:E,contextBudgetManifest:X,countTokens:re});if(U){O();let S=Date.now()-l;return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"execute",durationMs:S,error:U,model:P,metadata:r?.metadata?{...r.metadata}:void 0}),J=!0,{ok:!1,data:"",error:U,meta:{agentId:g.id,provider:h,model:v,durationMs:S,taskId:s}}}let B=await te.execute(n,E);ie=this._resolveEffectiveCost(A,P,l),O();let ut=Date.now()-l,pn={...r?.metadata??{},...r?.threadId?{threadId:r.threadId}:{}};return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"execute",result:B,durationMs:ut,exitCode:Z,inputTokens:A?.inputTokens,outputTokens:A?.outputTokens,cachedInputTokens:A?.cachedInputTokens,costUsd:ie,model:P,metadata:Object.keys(pn).length>0?pn:void 0}),J=!0,{ok:!0,data:B,meta:{agentId:g.id,provider:h,model:v,durationMs:ut,taskId:s}}}catch(E){ie=this._resolveEffectiveCost(A,P,l),O();let U=Date.now()-l,B={code:"EXECUTE_FAILED",message:E.message,...E instanceof exports.ProviderError?{providerCode:E.code}:{}};return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"execute",durationMs:U,error:B,exitCode:Z,inputTokens:A?.inputTokens,outputTokens:A?.outputTokens,cachedInputTokens:A?.cachedInputTokens,costUsd:ie,model:P,metadata:r?.metadata?{...r.metadata}:void 0}),J=!0,{ok:!1,data:"",error:B,meta:{agentId:g.id,provider:h,model:v,durationMs:U,taskId:s}}}finally{J||this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"execute",durationMs:Date.now()-l,error:{code:"TASK_END_GUARD",message:"task:end was not emitted normally"},exitCode:Z??-1,inputTokens:A?.inputTokens,outputTokens:A?.outputTokens,cachedInputTokens:A?.cachedInputTokens,costUsd:ie,model:P}),this._activeTasks.delete(s),this._clearCallerIdentityOverride(s,c),Ye();}})}finally{this._clearCallerIdentityOverride(s,c);}}};function vd(t,e){let n=zi(t)?t:void 0,r=zi(e)?e:void 0;if(!(!n&&!r))return {...n??{},...r??{}}}function zi(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function ag(t,e){let n=Array.isArray(t)?t:void 0,r=Array.isArray(e)?e:void 0;if(!n&&!r)return;let o=a=>{if(!zi(a))return;let d=a.id;if(typeof d=="string")return `id:${d}`;let c=a.name;if(typeof c=="string")return `name:${c}`},i=new Set;for(let a of r??[]){let d=o(a);d&&i.add(d);}let s=[];for(let a of n??[]){let d=o(a);d&&i.has(d)||s.push(a);}for(let a of r??[])s.push(a);return s}function dg(t){let e=Array.isArray(t.provider)?t.provider:[t.provider],n=t.options,r=[...e];for(let o of ["query","execute"]){let i=Jo(n,o);i.provider&&r.push(i.provider);let s=n&&typeof n=="object"&&!Array.isArray(n)?n[o]:void 0,a=s&&typeof s=="object"&&!Array.isArray(s)?Mr(s.overdrive):void 0;a?.provider&&r.push(a.provider);}return r}async function Ed(t,e,n){let r=t.flatMap(dg);if(r.some(i=>i.startsWith("api/"))){let{registerApiProviders:i}=await Promise.resolve().then(()=>(Ci(),sd));i(n?.api);}await lg(r,e),ug(r,e),cg(r);}function cg(t){if(!t.some(r=>r.startsWith("acp/")))return;let{registerAcpProviders:n}=(Li(),cs(ud));n();}async function lg(t,e){if(!t.some(s=>s.startsWith("remote/")))return;let r=e.providers;if(!Array.isArray(r))return;let{createRemoteProviderFactory:o}=await Promise.resolve().then(()=>(ji(),fd)),i=new Map;for(let s of r)s.type==="remote"&&typeof s.id=="string"&&i.set(s.id,s);i.size>0&&nt("remote",o(i,rt));}function ug(t,e){if(!t.some(s=>s.startsWith("plugin/")))return;let r=e.providers;if(!Array.isArray(r))return;let{createPluginProviderFactory:o}=(Fi(),cs(yd)),i=new Map;for(let s of r)s.type==="plugin"&&typeof s.id=="string"&&i.set(s.id,s);i.size>0&&nt("plugin",o(i));}u();u();var Gi=class{detach(e){}};u();var pg="crewx:fs:",Vi=class{prefix;store;constructor(e){this.prefix=e?.prefix??pg,this.store=e?.storage??new Map;}async readFile(e){let n=this.toKey(e),r=this.store.get(n);if(r===void 0)throw new Error(`BrowserFsAdapter: file not found: ${e}`);return r}async exists(e){return this.store.has(this.toKey(e))}resolvePath(...e){let n=e.map(s=>s.replace(/\\/g,"/")).join("/").replace(/\/+/g,"/"),r=n.split("/"),o=[];for(let s of r)s==="."||s===""||(s===".."?o.pop():o.push(s));let i=o.join("/");return n.startsWith("/")?`/${i}`:i}isAbsolute(e){return e.startsWith("/")}setItem(e,n){this.store.set(this.toKey(e),n);}removeItem(e){this.store.delete(this.toKey(e));}keys(){return Array.from(this.store.keys()).filter(e=>e.startsWith(this.prefix)).map(e=>e.slice(this.prefix.length))}async readdir(e){let n=e.replace(/\\/g,"/").replace(/\/$/,""),r=this.toKey(n+"/"),o=[];for(let i of this.store.keys())if(i.startsWith(r)){let a=i.slice(r.length).split("/")[0];a&&!o.includes(a)&&o.push(a);}return o}toKey(e){return `${this.prefix}${e.replace(/\\/g,"/")}`}};u();var sn="default",an="archive",xd="wi-default-flow",fg="wi-plan-flow",gg="wi-default-flow.yaml",mg="wi-plan-flow.yaml",co=/^[a-zA-Z0-9_-]{1,64}$/;function Rd(t){return t===sn||t===an}function hg(t){let e={id:sn,name:"Default",workflowId:xd,system:true,readOnly:false},n={id:an,name:"Archive",workflowId:"",system:true,readOnly:true},r=t?.settings?.wi?.boards;if(!Array.isArray(r)||r.length===0)return [e,n];let o=new Set,i=[];for(let s of r){if(!s||typeof s!="object")continue;let a=s,d=a.id,c=a.name,l=a.workflow_id;if(typeof d!="string"||d.length===0||typeof c!="string"||c.length===0||typeof l!="string"||l.length===0||Rd(d)||!co.test(d)||o.has(d))continue;o.add(d);let f=typeof a.description=="string"?a.description:void 0,g=typeof a.goal_id=="string"?a.goal_id:void 0;i.push({id:d,name:c,workflowId:l,...f!==void 0?{description:f}:{},...g!==void 0?{goalId:g}:{},system:false,readOnly:false});}return [e,...i,n]}u();var ne=class extends Error{constructor(e){super(e),this.name="WiCreateError";}},wg=300*1e3,_g=300*1e3,kg=1e4,vg=50;function Eg(t){return new Promise(e=>setTimeout(e,t))}function xg(t){let e=t.getFullYear(),n=String(t.getMonth()+1).padStart(2,"0"),r=String(t.getDate()).padStart(2,"0");return {compact:`${e}${n}${r}`,iso:`${e}-${n}-${r}`}}function Rg(t){return t.normalize("NFKD").replace(/[^\x00-\x7F]/g,"").replace(/[^a-zA-Z0-9]+/g,"-").replace(/^-+|-+$/g,"").toUpperCase().slice(0,60)}function bg(t,e){let n=t.replace(/\\/g,"/").toLowerCase(),r=e.replace(/\\/g,"/").toLowerCase();if(r!==n&&!r.startsWith(n+"/"))throw new ne("Path is outside wi directory")}function bd(t){let e=typeof t=="string"?t.trim():"";if(!e)throw new ne("title is required");if(e.length>200)throw new ne("title must be 200 characters or fewer");return e}function Td(t){let e=typeof t=="string"?t.trim():"";if(!e)return "manual";if(e.length>128)throw new ne("source must be 128 characters or fewer");if(/[\r\n]/.test(e))throw new ne("source must be a single line");return e}function Ad(t){return (typeof t=="string"?t.trim().replace(/^@+/,""):"")||void 0}function Id(t){if(t==null)return [];if(!Array.isArray(t))throw new ne("depends_on must be an array");return t.map(e=>String(e).trim()).filter(Boolean)}function Pd(t,e){let n=typeof t=="string"?t.trim():"";if(!n){if(e?.required)throw new ne("board is required");return}if(!co.test(n))throw new ne("board must match ^[a-zA-Z0-9_-]{1,64}$");if(n===an)throw new ne(`board cannot be '${an}'`);return n}function dn(t){return JSON.stringify(t)}function Tg(t,e){return e.length===0?[`${t}: []`]:[`${t}:`,...e.map(n=>` - ${dn(n)}`)]}async function Ag(t){let e=await Ua.promises.stat(t).catch(()=>null);e&&Date.now()-e.mtimeMs>_g&&await Ua.promises.rm(t,{recursive:true,force:true}).catch(()=>{});}async function Ig(t,e){let n=K.join(t,".wi-create.lock"),r=Date.now()+kg;for(;Date.now()<r;)try{await Ua.promises.mkdir(n);try{return await e()}finally{await Ua.promises.rm(n,{recursive:!0,force:!0}).catch(()=>{});}}catch(o){if(o.code!=="EEXIST")throw o;await Ag(n),await Eg(vg);}throw new ne("WI create lock timeout: docs/wi/.wi-create.lock")}async function Cd(t){let e=[],n=await Ua.promises.readdir(t,{withFileTypes:true}).catch(r=>{if(r.code==="ENOENT")return [];throw r});for(let r of n){let o=K.join(t,r.name);r.isDirectory()?e.push(...await Cd(o)):r.isFile()&&r.name.endsWith(".md")&&e.push(r.name);}return e}async function Pg(t){let e=await Ua.promises.readdir(t).catch(r=>{if(r.code==="ENOENT")return [];throw r}),n=await Cd(K.join(t,"archive"));return [...e,...n]}function Cg(t,e){return t.reduce((n,r)=>{if(!r.startsWith(e))return n;let o=r.slice(e.length).match(/^(\d+)/);return o?Math.max(n,parseInt(o[1],10)):n},0)+1}function Sg(t,e){return t.some(n=>n===`${e}.md`||n.startsWith(`${e}-`))}async function Og(t,e){let n=K.join(t,`.wi-${e}.lock`);try{return await Ua.promises.writeFile(n,"",{flag:"wx"}),{claimed:!0,lockPath:n}}catch(r){if(r.code!=="EEXIST")throw r;return await Ua.promises.stat(n).then(i=>Date.now()-i.mtimeMs>wg).catch(()=>false)&&await Ua.promises.unlink(n).then(()=>true).catch(()=>false)?(await Ua.promises.writeFile(n,"",{flag:"wx"}),{claimed:true,lockPath:n}):{claimed:false,lockPath:n}}}function Ng(t){return {title:bd(t.title),assignee:Ad(t.assignee),body:(t.body??"").trim(),board:Pd(t.board),source:Td(t.source),depends_on:Id(t.depends_on)}}function Dg(t,e,n){if(t==null)return;let r=typeof t=="string"?t.trim():"";if(!r)throw new ne(`items[${e}].key must be a non-empty string when provided`);if(n.has(r))throw new ne(`items[${e}].key "${r}" is duplicated`);return n.add(r),r}function Mg(t){let e=Pd(t.board,{required:true}),n=Td(t.source);if(!Array.isArray(t.items)||t.items.length===0)throw new ne("items must contain at least one WI");let r=new Set;return t.items.map((o,i)=>{if(!o||typeof o!="object")throw new ne(`items[${i}] must be an object`);if(typeof o.body!="string")throw new ne(`items[${i}].body is required`);return {key:Dg(o.key,i,r),title:bd(o.title),assignee:Ad(o.assignee),body:o.body.trim(),board:e,source:n,depends_on:Id(o.depends_on)}})}function Ug(t,e){return t.map(n=>e.get(n)??n)}function Lg(t,e,n){let r=!!t.board&&t.board!==sn,o={wi_id:e,title:t.title,date:n,status:"draft",priority:"normal",source:t.source};return t.assignee&&(o.assignee=t.assignee),r&&(o.board=t.board),o.depends_on=t.depends_on,{raw:`---
392
- ${[`wi_id: ${e}`,`title: ${dn(t.title)}`,`date: ${dn(n)}`,"status: draft",...t.assignee?[`assignee: ${dn(t.assignee)}`]:[],"priority: normal",`source: ${dn(t.source)}`,...r?[`board: ${dn(t.board)}`]:[],...Tg("depends_on",t.depends_on)].join(`
390
+ `);let c=Qn(n,e.reservation.instanceId,e.reservation.requestId);if(!c)throw new R("EXECUTION_FAILED","External action settlement failed");return Xn(c)})}catch(n){throw n instanceof Ee||n instanceof R?n:to(n)?new Ee(n):new R("EXECUTION_FAILED","UI external action settlement failed")}}};function od(){return `uicr_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,12)}`}function Sf(t){return typeof t=="string"&&/^[A-Z][A-Z0-9_]{0,63}$/.test(t)?t:"EXECUTION_FAILED"}var Of=new Set(["definition","workspaceId","threadId","anchorTaskId","domainRef","state"]),Df=new Set(["definition","workspaceId","threadId","domainRef","state"]),Nf=new Set(["instanceId","actionId","expectedRevision","requestId","input"]),ad=new Set(["source","workspaceId","actor"]),id=new Set(["source","workspaceId","threadId","actor"]),Mf=ad,Oi=4;function dd(t,e){return new oo(t,e)}function cd(t){return new oo(t.workspaceId,t,void 0,true)}var oo=class{store;workspaceId;localActor;policy;serverPolicy;serverMode;definitions=new Map;handlers=new Map;clock;testHooks;constructor(e,n,r,o=false){if(this.serverMode=o,!e)throw new R("INPUT_INVALID","UI runtime workspace is invalid");if(o){let i=n;if(!i.dbPath||!i.grantPolicy)throw new R("INPUT_INVALID","Authenticated UI runtime options are invalid");this.serverPolicy=i.grantPolicy;}else {let i=n;if(i.localActor.kind!=="local"||!i.localActor.id)throw new R("INPUT_INVALID","Local UI runtime identity is invalid");this.localActor=i.localActor,this.policy=i.localGrantPolicy;}this.workspaceId=e,this.clock=n.clock??(()=>Date.now()),this.testHooks=r;for(let i of n.definitions??[]){ed(i);let s=Pi(i);if(this.definitions.has(s))throw new R("DEFINITION_UNSUPPORTED","Duplicate UI definition");this.definitions.set(s,i);}for(let i of n.handlers??[]){if(!i.definitionId||!i.actionId||i.version<1)throw new R("INPUT_INVALID","UI handler registration is invalid");let s=sd(i.definitionId,i.version,i.actionId);if(this.handlers.has(s))throw new R("INPUT_INVALID","Duplicate UI handler registration");this.handlers.set(s,i);}this.store=Uf(n.dbPath,r);}close(){this.store.close();}async createInstance(e,n){if(Di(e,Of,Df),this.serverMode){if(!n)throw new R("UNAUTHENTICATED","Authenticated UI context is required");if(this.validateServerContext(n),e.workspaceId!==n.workspaceId||e.threadId!==n.threadId)throw new R("WORKSPACE_MISMATCH","UI instance scope does not match authenticated context")}else if(e.workspaceId!==this.workspaceId)throw new R("WORKSPACE_MISMATCH","Workspace does not match this runtime");if(!e.threadId||e.threadId.length>256||e.anchorTaskId!==void 0&&e.anchorTaskId.length>256)throw new R("INPUT_INVALID","UI instance scope is invalid");let r=this.requireDefinition(e.definition),o=ie(e.domainRef),i=ie(e.state),s=this.resolveInstanceGrants(r,n),a=this.now();return this.store.create({id:Lf(),definitionId:r.id,definitionVersion:r.version,definitionHash:r.hash,workspaceId:e.workspaceId,threadId:e.threadId,anchorTaskId:e.anchorTaskId??null,domainRef:o,state:i,grants:s,now:a})}async dispatchAction(e,n){Di(e,Nf),Di(n,this.serverMode?id:ad,this.serverMode?id:Mf),this.validateContext(n);let r={...e,input:this.validateEnvelope(e)},o=this.store.get(r.instanceId);if(!o)throw new R("INSTANCE_NOT_FOUND","UI instance was not found");if(o.workspaceId!==this.workspaceId||n.workspaceId!==o.workspaceId||this.serverMode&&o.threadId!==n.threadId)throw new R("WORKSPACE_MISMATCH","Workspace does not match the UI instance");if(o.status!=="active")throw new R("INSTANCE_NOT_ACTIONABLE","UI instance is not actionable");let i=this.requireDefinition(o.definition),s=i.actions[r.actionId];if(!s)throw new R("ACTION_UNAVAILABLE","UI action is not declared");if(this.validateActionDeclaration(i,r.actionId,s.inputKeys,r.input),this.resolveEffectiveCapabilities(i,r.actionId,s.capabilities,o.grantedCapabilities,n).length===0)throw new R("CAPABILITY_DENIED","UI action capability is not granted");let d=this.handlers.get(sd(i.id,i.version,r.actionId));if(!d)throw new R("HANDLER_NOT_FOUND","UI action handler is not registered");let c=this.store.getReceipt(r.instanceId,r.requestId);if(c)return c;if(o.revision!==r.expectedRevision)throw new R("REVISION_CONFLICT","UI instance revision is stale",o.revision);await this.testHooks?.beforeReservation?.();let l={instanceId:r.instanceId,requestId:r.requestId,actionId:r.actionId,actor:n.actor,source:n.source,expectedRevision:r.expectedRevision,input:r.input,now:this.now()};return d.kind==="state"?this.dispatchStateWithRetry(l,d):this.dispatchExternalWithRetry(l,d)}async getInstance(e,n){if(!this.serverMode)throw new R("UNAUTHENTICATED","Authenticated UI context is not available in local runtime");if(this.validateServerContext(n),!e)throw new R("INPUT_INVALID","UI instance lookup identity is invalid");let r=this.store.get(e);return !r||r.workspaceId!==n.workspaceId||r.threadId!==n.threadId?null:r}async getReceipt(e,n,r){if(!e||!n)throw new R("INPUT_INVALID","Receipt lookup identity is invalid");let o=this.store.get(e);if(this.serverMode){if(!r)throw new R("UNAUTHENTICATED","Authenticated UI context is required");if(this.validateServerContext(r),!o||o.workspaceId!==r.workspaceId||o.threadId!==r.threadId)return null}else if(!o||o.workspaceId!==this.workspaceId)return null;return this.store.getReceipt(e,n)}async dispatchStateWithRetry(e,n){for(let o=0;o<Oi;o+=1)try{return this.store.runStateOnly(e,n.handle)}catch(i){if(i instanceof Ie){let a=this.store.getReceipt(e.instanceId,e.requestId);if(a)return a;throw new R("REVISION_CONFLICT","UI instance revision is stale",i.currentRevision)}if(!(i instanceof Ee))throw i;let s=this.store.getReceipt(e.instanceId,e.requestId);if(s)return s;await Ni(o);}let r=this.store.getReceipt(e.instanceId,e.requestId);if(r)return r;throw new R("ACTION_IN_FLIGHT","UI action is still being committed")}async dispatchExternalWithRetry(e,n){let r;for(let l=0;l<Oi;l+=1)try{r=this.store.reserveExternal(e);break}catch(f){if(f instanceof Ie){let m=this.store.getReceipt(e.instanceId,e.requestId);if(m)return m;throw new R("REVISION_CONFLICT","UI instance revision is stale",f.currentRevision)}if(!(f instanceof Ee))throw f;let g=this.store.getReceipt(e.instanceId,e.requestId);if(g)return g;await Ni(l);}if(!r){let l=this.store.getReceipt(e.instanceId,e.requestId);if(l)return l;throw new R("ACTION_IN_FLIGHT","UI action is still being committed")}let o;try{o=await n.handle({instance:r.instance,actor:e.actor,source:e.source,input:e.input,requestId:e.requestId});}catch{o={outcome:"failed",errorCode:"EXECUTION_FAILED"};}let i="outcome"in o?o.outcome:"succeeded",s="errorCode"in o?jf(o.errorCode):null,a=r.instance.state,d=null;try{o.state&&(a=ie(o.state)),o.result&&(d=ie(o.result));}catch{a=r.instance.state,d=null;}for(let l=0;l<Oi;l+=1)try{return this.store.settleExternal({reservation:e,reservedRevision:r.reservedRevision,outcome:i,state:a,result:d,errorCode:s,now:this.now()})}catch(f){if(!(f instanceof Ee))throw f;await Ni(l);}let c=this.store.getReceipt(e.instanceId,e.requestId);if(c)return c;throw new R("ACTION_IN_FLIGHT","UI action settlement is still being committed")}resolveDefinition(e){let n=this.definitions.get(Pi(e));return !n||n.hash!==e.hash||Jn(n)!==n.hash?null:n}requireDefinition(e){let n=this.resolveDefinition(e);if(!n)throw new R("DEFINITION_UNSUPPORTED","Pinned UI definition is unavailable");return n}resolveInstanceGrants(e,n){if(this.serverMode){if(!n||!this.serverPolicy)throw new R("UNAUTHENTICATED","Authenticated grant policy is unavailable");try{let r=this.serverPolicy.resolveInstanceGrants({definition:e,workspaceId:n.workspaceId,actor:n.actor});if(!Array.isArray(r)||r.some(o=>typeof o!="string"||!o||o==="*"||o==="all"||/[/*]/.test(o)))throw new Error("invalid grant");return [...new Set(r)]}catch{throw new R("CAPABILITY_DENIED","Authenticated capability grant was denied")}}if(!this.policy||!this.localActor)return [];try{let r=this.policy.resolveInstanceGrants({definition:e,workspaceId:this.workspaceId,actor:this.localActor});if(!Array.isArray(r)||r.some(o=>typeof o!="string"||!o||o==="*"||o==="all"||/[/*]/.test(o)))throw new Error("invalid grant");return [...new Set(r)]}catch{throw new R("INPUT_INVALID","Local capability policy returned an invalid grant")}}resolveEffectiveCapabilities(e,n,r,o,i){if(this.policy)try{let a=this.policy.resolveActionCapabilities({definition:e,actionId:n});if(!$f(a,r))throw new Error("definition capability mismatch")}catch{throw new R("DEFINITION_UNSUPPORTED","UI action capability declaration is unavailable")}let s;if(this.serverMode&&this.serverPolicy?.resolveDispatchCapabilities)try{if(s=this.serverPolicy.resolveDispatchCapabilities({definition:e,actionId:n,actor:i.actor,source:i.source}),!Array.isArray(s)||s.some(a=>typeof a!="string"||!a||a==="*"||a==="all"||/[/*]/.test(a)))throw new Error("invalid dispatch grant")}catch{throw new R("CAPABILITY_DENIED","Authenticated dispatch capability was denied")}return [...Qr(r,o,s)]}validateContext(e){if(this.serverMode){this.validateServerContext(e);return}if(!this.localActor||e.source!=="cli"||e.workspaceId!==this.workspaceId||e.actor.kind!=="local"||e.actor.id!==this.localActor.id)throw new R("UNAUTHENTICATED","CLI local execution context is invalid")}validateServerContext(e){if(e.source!=="system"&&e.source!=="ui_host")throw new R("UNAUTHENTICATED","Authenticated UI source is invalid");if(e.workspaceId!==this.workspaceId||!e.threadId||e.actor.kind!=="authenticated"||!e.actor.id)throw new R("UNAUTHENTICATED","Authenticated UI context is invalid")}validateEnvelope(e){if(!e.instanceId||e.instanceId.length>128||!e.actionId||e.actionId.length>128||!e.requestId||Hn(e.requestId)>128||!Number.isInteger(e.expectedRevision)||e.expectedRevision<0)throw new R("INPUT_INVALID","UI action envelope is invalid");let n=ie(e.input),r=ye(n);if(Hn(r)>64*1024)throw new R("INPUT_INVALID","UI action input is too large");return n}validateActionDeclaration(e,n,r,o){if(r&&Object.keys(o).some(i=>!r.includes(i)))throw new R("INPUT_INVALID","UI action input is invalid")}now(){let e=this.clock();if(!Number.isFinite(e))throw new R("EXECUTION_FAILED","UI runtime clock is invalid");return Math.max(0,Math.floor(e))}};function Uf(t,e){return new ro(t,{injectDatabaseError:e?.injectDatabaseError,bumpRevisionBeforeCas:e?.bumpRevisionBeforeCas})}function Di(t,e,n=e){if(t===null||typeof t!="object")throw new R("INPUT_INVALID","UI contract input is invalid");for(let r of Object.keys(t))if(!e.has(r))throw new R("INPUT_INVALID","Unknown UI contract field");for(let r of n)if(!Object.prototype.hasOwnProperty.call(t,r))throw new R("INPUT_INVALID","Missing UI contract field")}function sd(t,e,n){return `${t}\0${e}\0${n}`}function Lf(){return `uic_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,12)}`}function jf(t){return typeof t=="string"&&/^[A-Z][A-Z0-9_]{0,63}$/.test(t)?t:"EXECUTION_FAILED"}function $f(t,e){return t.length===e.length&&t.every(n=>e.includes(n))}async function Ni(t){await new Promise(e=>setTimeout(e,Math.min(8,1<<t)));}be();function Td(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)?t:void 0}function ug(t){return t.slice(t.lastIndexOf("/")+1)}var pg=new Set(["tools","effort","mode","provider","model","profiles","overdrive"]);function fg(t){if(!t)return;let n=Object.entries(t).filter(([,r])=>r!=null&&typeof r!="object"&&typeof r!="function").filter(([r])=>!pg.has(r));if(n.length!==0)return Object.fromEntries(n.map(([r,o])=>[r,String(o)]))}function Ad(t,e,n){let r=Td(t);if(!r)return {};let o=ug(e),i=!n.active&&o==="grok"?Sn(r):r,s=n.active?n.providerOptions:Td(i[o]);return {modeOptions:i,providerOptions:s,configOptions:fg(i)}}function gg(t){return t?t.settings?.template?.exec:void 0}function mg(){try{let t=new Uint8Array(8);return globalThis.crypto.getRandomValues(t),Array.from(t,e=>e.toString(16).padStart(2,"0")).join("")}catch{let{randomBytes:t}=he("crypto");return t(8).toString("hex")}}var Xi=class t extends jn{_agents;_templateEngine;_documentLoader;_layoutLoader;_layoutRenderer;_config;_projectRoot;_workspaceId;_workspaceName;_plugins=[];_tools=new Map;_activeAdapters=new Map;_pendingThreads=new Map;_activeTasks=new Map;_remoteFactory;_remoteTargets=new Map;_additionalArgsProvider;_callerIdentityOverrides=new Map;constructor(e,n={},r,o,i){super(),this._agents=new Map(e.map(d=>[d.id,d])),this._config=r,this._projectRoot=i??(typeof process<"u"?process.cwd():"/");let s=i??(typeof process<"u"?process.env.CREWX_WORKSPACE??process.cwd():"/");this._workspaceId=Yr(s),this._workspaceName=X.basename(s);let a=gg(r);this._templateEngine=new Dn({execPolicy:n.execPolicy??a}),this._documentLoader=o??new Bt,this._layoutLoader=new Nn({templatesPath:Kt()}),this._layoutRenderer=new Ln,this._remoteFactory=n.remoteFactory,this._additionalArgsProvider=n.additionalArgsProvider;}async resolveFileRemoteTarget(e){let n=this.getAgent(e),r=Array.isArray(n?.provider)?n?.provider[0]:n?.provider;if(!r?.startsWith("remote/"))return null;let o=r.slice(7),i=this.getRemoteProviderConfig(o);if(!i?.location?.startsWith("file://"))return null;let s=X.resolve(i.location.replace("file://","")),a=i.external_agent_id??e.replace(/^@/,""),d=this._remoteTargets.get(s);d||(d=(this._remoteFactory??(m=>t.loadYaml(m)))(s),this._remoteTargets.set(s,d),d.catch(()=>this._remoteTargets.delete(s)));let c=await d,l=c.getAgent("@"+a),f=Array.isArray(l?.provider)?l?.provider[0]:l?.provider;if(f?.startsWith("remote/"))throw new Error(`Chained remotes not allowed: "${o}" \u2192 "${f}"`);return {target:c,agentRef:"@"+a}}static async loadBuiltInConfig(e){let{yamlPath:n,dir:r}=No(),o;try{o=Wa.readFileSync(n,"utf-8");}catch(s){throw new Error(`[@crewx/sdk] Cannot read built-in config: ${n}
391
+ ${s.message}`)}let i=Er(o);if(i.documents&&typeof i.documents=="object"){let s={};for(let[a,d]of Object.entries(i.documents))if(d&&typeof d=="object"){let c=d;typeof c.path=="string"&&!X.isAbsolute(c.path)?s[a]={...c,path:X.resolve(r,c.path)}:s[a]=c;}else s[a]=d;return {...i,documents:s}}return i}static mergeCrewxConfig(e,n){let r=new Map;for(let w of e.agents??[])r.set(w.id,w);for(let w of n.agents??[])r.has(w.id)&&console.warn(`[agent-loader] User agent "${w.id}" overrides built-in`),r.set(w.id,w);let o=Array.from(r.values()),i={...e.layouts??{},...n.layouts??{}},s={...e.documents??{},...n.documents??{}},a=e,d=n,c=Id(a.vars,d.vars),l=Id(a.settings,d.settings),f;e.skills&&n.skills&&typeof e.skills=="object"&&typeof n.skills=="object"&&!Array.isArray(e.skills)&&!Array.isArray(n.skills)?f={...e.skills,...n.skills}:f=n.skills??e.skills;let g=[...e.hooks??[],...n.hooks??[]],m=hg(a.providers,d.providers),k={...e},h={...n};for(let w of ["agents","layouts","documents","skills","hooks","vars","settings","providers"])delete k[w],delete h[w];let _={...{...k,...h},agents:o,layouts:i,documents:s,skills:f};return g.length>0&&(_.hooks=g),c!==void 0&&(_.vars=c),l!==void 0&&(_.settings=l),m!==void 0&&(_.providers=m),_}static async loadYaml(e,n,r){let o=n?.includeBuiltIns!==false,i,s;if(o){let l=await t.loadBuiltInConfig(r);if(e!==void 0){let f=Rr(e);i=t.mergeCrewxConfig(l,f),s=X.dirname(e);}else i=l,s=process.cwd();}else {if(e===void 0)throw new Error("[@crewx/sdk] loadYaml: path is required when includeBuiltIns is false");i=Rr(e),s=X.dirname(e);}let a=new Bt(r);await a.load(i.documents,s);let d=i.agents??[];return await Pd(d,i,n),new t(d,n??{},i,a,s)}static async fromConfig(e,n,r,o){let i=n?.includeBuiltIns===true,s=e;if(i){let l=await t.loadBuiltInConfig(o);s=t.mergeCrewxConfig(l,e);}let a=new Bt(o);await a.load(s.documents,r??(typeof process<"u"?process.cwd():"/"));let d=s.agents??[];return await Pd(d,s,n),new t(d,n??{},s,a,r)}get agents(){return this._agents}get config(){return this._config}get plugins(){return this._plugins}get tools(){return this._tools}get workspaceId(){return this._workspaceId}createUiRuntime(e){return dd(this._workspaceId,e)}get workspaceName(){return this._workspaceName}getAgent(e){let n=e.startsWith("@")?e.slice(1):e;return this._agents.get(n)}getRemoteProviderConfig(e){let n=this._config?.providers;return Array.isArray(n)?n.find(o=>o.type==="remote"&&o.id===e):void 0}computeTaskLogPath(e,n){let r=Qo(n);return X.join(this._projectRoot,".crewx","logs",`${r}_${e}.log`)}registerTool(e,n){this._tools.set(e,{name:e,...n});}async use(e){this._plugins.includes(e)||(await e.attach(this),this._plugins.push(e));}handler(e){return Ai(this,e)}async registerChannelAdapter(e){let{adapter:n,instanceId:r,config:o}=e;if(this._activeAdapters.has(r))throw new Error(`Adapter instance already registered: ${r}`);let i=new Set(n.manifest.capabilities),s=e.store??si(r),a=e.defaultMode??"query",d=n.manifest.platform,c=e.agentRunner??{run:async(m,k,h)=>{let _=await(a==="execute"?this.execute.bind(this):this.query.bind(this))(`@${m}`,k,{threadId:h?.threadId,platform:d});return {output:_.ok?_.data:_.error?.message??""}}},l=e.onInbound??(async m=>{let k=m.routingHints?.agentId??e.defaultAgent;if(!k)return {accepted:false,reason:"no_agent"};let{output:h}=await c.run(k,m.text,{threadId:m.threadId});return {accepted:true,output:h}}),f=di({instanceId:r,config:o,capabilities:i,db:s,agentRunner:c,onInbound:l}),g={adapter:n,ctx:f,state:"starting"};this._activeAdapters.set(r,g),this.emit("adapter:lifecycle",{adapterId:n.manifest.id,instanceId:r,state:"starting",timestamp:new Date});try{await n.start(f),g.state="started",this.emit("adapter:lifecycle",{adapterId:n.manifest.id,instanceId:r,state:"started",timestamp:new Date});}catch(m){throw g.state="failed",this.emit("adapter:lifecycle",{adapterId:n.manifest.id,instanceId:r,state:"failed",error:m instanceof Error?m:new Error(String(m)),timestamp:new Date}),this._activeAdapters.delete(r),m}}async unregisterChannelAdapter(e){let n=this._activeAdapters.get(e);if(n){n.state="stopping",this.emit("adapter:lifecycle",{adapterId:n.adapter.manifest.id,instanceId:e,state:"stopping",timestamp:new Date});try{await n.adapter.stop(n.ctx),n.state="stopped",this.emit("adapter:lifecycle",{adapterId:n.adapter.manifest.id,instanceId:e,state:"stopped",timestamp:new Date});}catch(r){n.state="failed",this.emit("adapter:lifecycle",{adapterId:n.adapter.manifest.id,instanceId:e,state:"failed",error:r instanceof Error?r:new Error(String(r)),timestamp:new Date});}finally{this._activeAdapters.delete(e);}}}async stopAllAdapters(e={}){let n=e.timeoutMs??1e4,r=Array.from(this._activeAdapters.keys()),o=await Promise.allSettled(r.map(i=>Promise.race([this.unregisterChannelAdapter(i),new Promise((s,a)=>setTimeout(()=>a(new Error(`Adapter stop timeout: ${i}`)),n))])));for(let i=0;i<o.length;i++)o[i].status==="rejected"&&console.error(`[crewx] adapter stop error (${r[i]}): ${o[i].reason}`);}abortAll(){for(let[e,n]of this._activeTasks)if(n.pid!==void 0)try{process.platform==="win32"?process.kill(n.pid,"SIGTERM"):process.kill(-n.pid,"SIGTERM");}catch(r){console.error(`[crewx] abort task ${e} (pid=${n.pid}) error: ${r instanceof Error?r.message:String(r)}`);}}async _drainActiveTasks(e){let n=Array.from(this._activeTasks.values()).map(r=>r.done);n.length!==0&&await Promise.race([Promise.allSettled(n),new Promise(r=>setTimeout(r,e).unref())]);}async close(){this.abortAll(),await this._drainActiveTasks(Pn+1e3),await this.stopAllAdapters({timeoutMs:1e4});let e=[...this._remoteTargets.values()];this._remoteTargets.clear(),await Promise.allSettled(e.map(async r=>{try{await(await r).close();}catch(o){console.error(`[crewx] remote target close error: ${o instanceof Error?o.message:String(o)}`);}}));let n=[...this._plugins].reverse();for(let r of n)try{await r.detach(this);}catch(o){console.error(`[crewx] plugin ${r.name} detach error: ${o instanceof Error?o.message:String(o)}`);}this._plugins.length=0;}filterAgents(e){let n=a=>a?a.split(",").map(d=>d.trim().toLowerCase()).filter(Boolean):void 0,r=n(e.role),o=n(e.team),i=n(e.provider),s=Array.from(this._agents.values());return r&&(s=s.filter(a=>a.role&&r.some(d=>He(a.role.toLowerCase(),d)))),o&&(s=s.filter(a=>a.team&&o.some(d=>He(a.team.toLowerCase(),d)))),i&&(s=s.filter(a=>(Array.isArray(a.provider)?a.provider:[a.provider]).some(c=>i.some(l=>He(c.toLowerCase(),l))))),s}renderAgentPrompt(e){let n=e.startsWith("@")?e.slice(1):e,r=this._agents.get(n);if(!r)throw new ot(n,Array.from(this._agents.keys()));return r.inline?.prompt??r.inline?.system_prompt??r.description??`You are an expert ${n}.`}async renderPrompt(e,n){let o={...await this._documentLoader.buildContext(),...n?.documents??{}},i={...n,documents:o};return this._templateEngine.render(e,i)}registerLayout(e,n){this._layoutLoader.registerLayout(e,n);}async renderAgentPromptFull(e,n){let r=n?.__contextBudget,o=e.startsWith("@")?e.slice(1):e,i=this._agents.get(o);if(!i)throw new ot(o,Array.from(this._agents.keys()));let s=this._resolveLayoutSpec(i,n?.layout),a=this._extractLayoutId(s),d=this._extractLayoutProps(i,s,n?.layout),c=this._layoutLoader.load(a,d),l=i.inline?.prompt??i.inline?.system_prompt??i.description??`You are an expert ${o}.`,f=await this._documentLoader.buildContext(),g=n?.env??(typeof process<"u"?process.env:{}),m=n?.vars?.security_key??mg(),k={...n?.vars??{},documents:f,env:g,agent:{id:i.id,name:i.name??i.id,role:i.role??"",team:i.team??"",description:i.description??""}},h=await this._templateEngine.render(l,k),v={mode:n?.session?.mode??"query",platform:n?.session?.platform??"cli",options:n?.session?.options??[]},_=i.provider,w=Array.isArray(_)?_:typeof _=="string"&&_.length>0?[_]:[],x=w.join(", ")||(typeof _=="string"?_:""),b=i.options,L=["goals","daily"],A={goals:false,daily:false},ee;if(!Array.isArray(b)&&typeof b=="object"&&b!==null){let N=b;if("goals"in N){let K=N.goals;typeof K=="string"||Array.isArray(K)?A.goals=K:A.goals=!!K;}"daily"in N&&(A.daily=!!N.daily);let Z={};for(let[K,se]of Object.entries(N))L.includes(K)||(Z[K]=se);if(Object.keys(Z).length>0){let K=w.some(tt=>tt.startsWith("cli/")),se={};for(let[tt,nt]of Object.entries(Z)){let E={};if(Array.isArray(nt))K&&(E.rawArgs=nt);else if(typeof nt=="object"&&nt!==null){let U=nt;Object.keys(U).length>0&&(E.named=U);}(E.named||E.rawArgs&&E.rawArgs.length>0)&&(se[tt]=E);}ee=Object.keys(se).length>0?se:void 0;}}let C=Array.isArray(b)?b:void 0,F={};for(let[N,Z]of Object.entries(f))F[N]={content:Z.content??"",toc:Z.toc,summary:Z.summary,path:Z.path};if(A.goals){let N=X.join(this._projectRoot,"docs","goal"),Z=await ka(N,void 0,A.goals);Z&&(F.active_goals={content:Z});}if(A.daily){let N=X.join(this._projectRoot,"docs","daily"),Z=await va(N);Z&&(F.today_daily={content:Z});}let ue=n?.vars?.user_input??void 0,H=this._config?.settings?.dreaming?.continuity,O=H?.reuseReadOnly!==false,ne=typeof H?.lookback=="number"?H.lookback:5,G=typeof H?.maxEntryChars=="number"?H.maxEntryChars:8e3,j=n?.threadId??"",W=i.id,me=!r?.activityLogDisabled&&O&&ne>0&&!!j&&!!n?.messages?.length,te=new Map;if(me)if(r?.activityLogTokenBudget!==void 0&&r.countTokens){let N=Ti({threadId:j,agentId:W,lookback:ne,maxEntryChars:G,activityLogTokenBudget:r.activityLogTokenBudget,countTokens:r.countTokens});te=N.activityLogByTask,r.onActivityLogResult?.(N);}else {typeof H?.decayRate=="number"?H.decayRate:.5;te=Ja({threadId:j,agentId:W,lookback:ne,maxEntryChars:G});}let gn=(n?.messages??[]).map(N=>{let Z=typeof N.activity_log=="string"?Fr(N.activity_log):N.activity_log;if(!N.isAssistant)return Z===N.activity_log?N:{...N,activity_log:Z};let K=N.metadata?.task_id;return !K||!te.has(K)?Z===N.activity_log?N:{...N,activity_log:Z}:{...N,activity_log:Fr(te.get(K))}}),Tt={user_input:ue,agent:{id:i.id,name:i.name??i.id,role:i.role??"",team:i.team??"",description:i.description??"",provider:x,providerList:w,model:i.inline?.model,workingDirectory:i.working_directory??i.workingDirectory??".",inline:{...i.inline??{},prompt:h},specialties:i.specialties??[],capabilities:i.capabilities??[],remote:i.remote??null,optionsByMode:ee,optionsArray:C},agentMetadata:{specialties:i.specialties??[],capabilities:i.capabilities??[],description:i.description??""},contextOptions:A,documents:F,skills:n?.skills??[],session:v,env:g,vars:{security_key:m,...n?.vars??{}},props:{...d??{},...n?.messages&&n.messages.length>0?{showConversationHistory:true}:{}},platform:v.platform,mode:v.mode,thread_id:j,now:Mn(new Date),has_activity_log:te.size>0,messages:gn,tools:this._tools.size>0?{list:Array.from(this._tools.values()).map(N=>({name:N.name,description:N.description,parameters:N.parameters})),json:JSON.stringify(Array.from(this._tools.values()).map(N=>({name:N.name,description:N.description,parameters:N.parameters})),null,2),count:this._tools.size}:null,metadata:{}};return this._layoutRenderer.render(c,Tt)}_filterToolsByMode(e){return e?e.map(n=>this._tools.get(n)).filter(n=>n!==void 0):Array.from(this._tools.values())}_resolveLayoutSpec(e,n){if(n!==void 0)return n;let r=e.inline?.layout;if(r!==void 0)return r;let o=this._config?.layouts?.default;return typeof o=="string"&&o?o:"crewx/default"}_extractLayoutId(e){if(typeof e=="string")return e;if("id"in e)return e.id;if("template"in e&&typeof e.template=="string"&&e.template.trim()){let n=`crewx/__inline_${Date.now()}`;return this._layoutLoader.registerLayout(n,e.template),n}return "crewx/default"}_extractLayoutProps(e,n,r){let o=e.inline?.layout,i=o&&typeof o=="object"&&"props"in o?o.props:void 0,s=r&&typeof r=="object"&&"id"in r?r.props:void 0;if(i||s)return {...i??{},...s??{}}}_getConversationProvider(){return this._plugins.find(n=>n.name==="conversation")?.conversationProvider}async _fetchHistoryMessages(e,n,r,o){if(r&&r.length>0)return on(r,o);if(!e){let s=on([],o);return s.length>0?s:void 0}let i=this._getConversationProvider();if(!i){let s=on([],o);return s.length>0?s:void 0}try{let s=await i.fetchHistory(e,{currentTraceId:n});if(s.messages.length===0){let a=on([],o);return a.length>0?a:void 0}return on(mi(s),o)}catch{return}}async _resolveFreshProvider(e,n,r){let o=Ea(e.provider),i=Xo(e.options,n,o,Ko(r?.overdrive)),s=Yo(e.options,n),a=i.active&&i.provider?i.provider:r?.provider??s.provider??o,d=i.active&&i.model?i.model:r?.model??s.model??e.inline?.model;return d&&d.includes("{{")&&(d=await this._templateEngine.render(d,{...r?.vars??{}})),{baseProviderStr:o,baseModel:e.inline?.model,effectiveProviderStr:a,effectiveModel:d,overdrive:i}}_readInputBudgetPercent(){let r=this._config?.settings?.dreaming?.continuity;if(!(!r||!Object.prototype.hasOwnProperty.call(r,"inputBudgetPercent")))return r.inputBudgetPercent}_resolveBudgetModel(e,n){if(n&&n.trim())return n;let r=mr(e)?.model;return typeof r=="string"&&r.trim()?r:""}_resolveContextMode(e){return e?.contextMode==="instruction-only"?"instruction-only":"full"}_hasUsableResumeSessionId(e){return typeof e=="string"&&e.trim().length>0}_buildInstructionOnlyResumeManifest(e){return {phase:"resume",initialInputFraming:Co,resolved:e.budget.resolved,reason:e.budget.resolved?void 0:e.budget.reason,requestedProvider:e.requestedProvider,requestedModel:e.requestedModel,effectiveProvider:e.effectiveProvider,effectiveModel:e.effectiveModel,contextWindowTokens:e.budget.resolved?e.budget.contextWindowTokens:null,inputBudgetPercent:e.budget.resolved?e.budget.inputBudgetPercent:e.budget.inputBudgetPercent??(typeof e.rawInputBudgetPercent=="number"?e.rawInputBudgetPercent:null),inputBudgetTokens:e.budget.resolved?e.budget.inputBudgetTokens:null,tokenizer:e.budget.tokenizer,initialTokenCount:e.messageTokenCount,finalTokenCount:e.messageTokenCount,activityLogTokenCount:0,activityIncludedEntries:0,activityOmittedEntries:0,activityRemovedForBudget:false,activityNewestTaskTokenCap:null,historyOriginalMessages:0,historyIncludedMessages:0,historyOmittedMessages:0,overBudget:e.budget.resolved?e.messageTokenCount>e.budget.inputBudgetTokens:false}}_prepareInstructionOnlyResumeWithBudget(e){let n=e.providerResolution.effectiveProviderStr,r=this._resolveBudgetModel(n,e.providerResolution.effectiveModel),o=this._readInputBudgetPercent(),i=vr({provider:n,model:r,inputBudgetPercent:o}),s=e.providerResolution.baseProviderStr,a=e.providerResolution.baseModel??null,d=r||null,c=kr(e.message,{provider:n,model:r}).tokenCount,l=this._buildInstructionOnlyResumeManifest({budget:i,requestedProvider:s,requestedModel:a,effectiveProvider:n,effectiveModel:d,rawInputBudgetPercent:o,messageTokenCount:c});return this._hasUsableResumeSessionId(e.resumeSessionId)?i.resolved&&c>i.inputBudgetTokens?{contextBudget:l,error:{code:"INPUT_BUDGET_EXCEEDED",message:`Input budget exceeded: instruction-only resume message is ${c} tokens; budget is ${i.inputBudgetTokens} tokens.`}}:{contextBudget:l}:{contextBudget:l,error:{code:"RESUME_SESSION_REQUIRED",message:'contextMode "instruction-only" requires a same-provider native resumeSessionId.'}}}_activityLogEntryCounts(e){return e?e.tasks.reduce((n,r)=>({tokenCount:n.tokenCount+r.tokenCount,includedEntries:n.includedEntries+r.includedEntries,omittedEntries:n.omittedEntries+r.omittedEntries}),{tokenCount:0,includedEntries:0,omittedEntries:0}):{tokenCount:0,includedEntries:0,omittedEntries:0}}_buildUnresolvedContextBudgetManifest(e){return {phase:"fresh",initialInputFraming:_r,resolved:false,reason:e.budget.resolved?void 0:e.budget.reason,requestedProvider:e.requestedProvider,requestedModel:e.requestedModel,effectiveProvider:e.effectiveProvider,effectiveModel:e.effectiveModel,contextWindowTokens:null,inputBudgetPercent:e.budget.resolved?e.budget.inputBudgetPercent:e.budget.inputBudgetPercent??(typeof e.rawInputBudgetPercent=="number"?e.rawInputBudgetPercent:null),inputBudgetTokens:null,tokenizer:e.budget.tokenizer,initialTokenCount:null,finalTokenCount:null,activityLogTokenCount:null,activityIncludedEntries:null,activityOmittedEntries:null,activityRemovedForBudget:false,activityNewestTaskTokenCap:null,historyOriginalMessages:e.historyOriginalMessages,historyIncludedMessages:e.historyOriginalMessages,historyOmittedMessages:0,overBudget:false}}_buildResolvedContextBudgetManifest(e){let n=this._activityLogEntryCounts(e.activityLogResult);return {phase:"fresh",initialInputFraming:_r,resolved:true,requestedProvider:e.requestedProvider,requestedModel:e.requestedModel,effectiveProvider:e.effectiveProvider,effectiveModel:e.effectiveModel,contextWindowTokens:e.budget.contextWindowTokens,inputBudgetPercent:e.budget.inputBudgetPercent,inputBudgetTokens:e.budget.inputBudgetTokens,tokenizer:e.budget.tokenizer,initialTokenCount:e.initialTokenCount,finalTokenCount:e.finalTokenCount,activityLogTokenCount:n.tokenCount,activityIncludedEntries:n.includedEntries,activityOmittedEntries:n.omittedEntries,activityRemovedForBudget:e.activityRemovedForBudget,activityNewestTaskTokenCap:Math.floor(e.budget.inputBudgetTokens/8),historyOriginalMessages:e.historyOriginalMessages,historyIncludedMessages:e.historyIncludedMessages,historyOmittedMessages:e.historyOriginalMessages-e.historyIncludedMessages,overBudget:e.initialTokenCount>e.budget.inputBudgetTokens}}async _renderFreshPromptVariant(e){return this.renderAgentPromptFull(e.agentRef,{session:{mode:e.mode,platform:e.options?.platform},vars:{user_input:e.message,...e.options?.vars??{},crewx_workspace_path:this._resolveEffectiveCwd(e.agent,e.options)},messages:e.messages,threadId:e.options?.threadId,__contextBudget:{activityLogDisabled:e.activityLogDisabled,activityLogTokenBudget:e.activityLogTokenBudget,countTokens:e.countTokens,onActivityLogResult:e.onActivityLogResult}})}async _prepareFreshPromptWithBudget(e){let n=e.historyMessages,r=n??[],o=r.length,i=e.providerResolution.effectiveProviderStr,s=this._resolveBudgetModel(i,e.providerResolution.effectiveModel),a=this._readInputBudgetPercent(),d=vr({provider:i,model:s,inputBudgetPercent:a}),c=e.providerResolution.baseProviderStr,l=e.providerResolution.baseModel??null,f=s||null;if(!d.resolved)return {renderedPrompt:await this._renderFreshPromptVariant({...e,messages:n}),contextBudget:this._buildUnresolvedContextBudgetManifest({budget:d,requestedProvider:c,requestedModel:l,effectiveProvider:i,effectiveModel:f,rawInputBudgetPercent:a,historyOriginalMessages:o})};let g=Do({provider:i,model:d.model}),m=A=>g.countTokens(A),k=A=>Oo({systemPrompt:A,message:e.message},m),h,v=await this._renderFreshPromptVariant({...e,messages:n,activityLogTokenBudget:d.inputBudgetTokens,countTokens:m,onActivityLogResult:A=>{h=A;}}),_=k(v),w=_,x=false,b=r;if(w>d.inputBudgetTokens&&h&&h.activityLogByTask.size>0&&(v=await this._renderFreshPromptVariant({...e,messages:b,activityLogDisabled:true,activityLogTokenBudget:d.inputBudgetTokens,countTokens:m}),w=k(v),x=true),w>d.inputBudgetTokens&&b.length>0)for(let A=1;A<=r.length;A++){let ee=r.slice(A),C=await this._renderFreshPromptVariant({...e,messages:ee,activityLogDisabled:x,activityLogTokenBudget:d.inputBudgetTokens,countTokens:m}),F=k(C);if(v=C,w=F,b=ee,F<=d.inputBudgetTokens)break}let L=this._buildResolvedContextBudgetManifest({budget:d,requestedProvider:c,requestedModel:l,effectiveProvider:i,effectiveModel:f,initialTokenCount:_,finalTokenCount:w,activityLogResult:h,activityRemovedForBudget:x,historyOriginalMessages:o,historyIncludedMessages:b.length});return w>d.inputBudgetTokens?{renderedPrompt:v,contextBudget:L,countTokens:m,error:{code:"INPUT_BUDGET_EXCEEDED",message:`Input budget exceeded: final provider initial input is ${w} tokens; budget is ${d.inputBudgetTokens} tokens.`}}:{renderedPrompt:v,contextBudget:L,countTokens:m}}_recountFreshProviderInitialInput(e){let n=e.contextBudgetManifest;if(!n?.resolved||!n.effectiveModel)return null;let r=e.countTokens??(o=>kr(o,{provider:n.effectiveProvider,model:n.effectiveModel}).tokenCount);return Oo({systemPrompt:e.providerOptions.systemPrompt,message:e.message},r)}_validateFreshProviderInitialInputBudget(e){let n=e.contextBudgetManifest;if(!n?.resolved||n.finalTokenCount===null||n.inputBudgetTokens===null)return;let r=this._recountFreshProviderInitialInput(e);if(r!==null){if(r!==n.finalTokenCount)throw new Error(`Context budget recount mismatch: provider initial input is ${r} tokens but manifest.finalTokenCount is ${n.finalTokenCount}.`);if(r>n.inputBudgetTokens)return {code:"INPUT_BUDGET_EXCEEDED",message:`Input budget exceeded: final provider initial input is ${r} tokens; budget is ${n.inputBudgetTokens} tokens.`}}}_resolveTimeout(e,n){let r=e==="query"?"CREWX_TIMEOUT_QUERY":"CREWX_TIMEOUT_EXECUTE";if(process.env[r]!=null&&process.env[r]!==""){let o=ra();return e==="query"?o.queryMs:o.executeMs}if(n?.meta?.defaultTimeoutMs){let o=e==="query"?n.meta.defaultTimeoutMs.query:n.meta.defaultTimeoutMs.execute;if(o!==void 0)return o}return 8*36e5}_resolveIdleTimeout(e){let n=Go();return n!==void 0?n:e?.meta?.defaultIdleMs!==void 0?e.meta.defaultIdleMs:6e5}_lookupCliAdapter(e){return ci(e)}_resolveEffectiveCost(e,n,r){return Rs(e?.costUsd,e?.inputTokens,e?.outputTokens,e?.cachedInputTokens,n)}_resolveEffectiveCwd(e,n){return n?.cwd??(e.working_directory?X.resolve(this._projectRoot,e.working_directory):this._projectRoot)}_buildFileRemoteOptions(e,n){let r={path:this._projectRoot,id:this._workspaceId,name:this._workspaceName,agentRef:e};return {...n,cwd:void 0,callerIdentity:r,metadata:{...n?.metadata??{},crewx:{...n?.metadata?.crewx??{},callerWorkspace:r}},vars:{...n?.vars??{},crewx_caller_workspace_path:r.path,crewx_caller_workspace_id:r.id,crewx_caller_workspace_name:r.name}}}_registerCallerIdentityOverride(e,n,r){let o=Symbol("callerIdentityOverride");return this._callerIdentityOverrides.set(e,{token:o,callerIdentity:n,targetIdentity:r}),o}_clearCallerIdentityOverride(e,n){if(!n)return;let r=this._callerIdentityOverrides.get(e);r&&r.token===n&&this._callerIdentityOverrides.delete(e);}_rewriteCallerFacingPayload(e,n,r){let{callerIdentity:o,targetIdentity:i}=r,s={...n,agentRef:o.agentRef};if(e==="task:output")return s;let a=s,d=a.metadata??{},c=d.crewx??{};return {...a,workspaceId:o.id,workspaceName:o.name,metadata:{...d,crewx:{...c,remoteExecution:i}}}}emit(e,n){if(e==="task:start"||e==="task:end"||e==="task:output"){let r=n.traceId,o=this._callerIdentityOverrides.get(r);if(o){let i=this._rewriteCallerFacingPayload(e,n,o);super.emit(e,i);return}}super.emit(e,n);}emitToolEvents(e,n,r,o,i,s,a){try{let c=this._lookupCliAdapter(r)?.parseEvent?.(o)??In(new Date().toISOString(),o);for(let l of c)l.type==="tool_use"&&l.toolName&&this.emit("tool:observed:before",{traceId:e,timestamp:new Date,agentRef:n,agentId:i,threadId:s,sessionId:a,provider:r,tool:{name:l.toolName,rawName:l.toolName,input:l.toolInput?this.tryParseJson(l.toolInput):void 0,toolUseId:l.toolUseId}}),l.type==="tool_result"&&this.emit("tool:observed:after",{traceId:e,timestamp:new Date,agentRef:n,agentId:i,threadId:s,sessionId:a,provider:r,tool:{name:l.toolName??"unknown",rawName:l.toolName??"unknown",toolUseId:l.toolUseId,result:l.resultPreview,isError:l.isError}});}catch{}}emitTaskLogEntries(e,n,r,o,i,s,a){try{for(let d of a)d.type==="tool_use"&&d.toolName&&this.emit("tool:observed:before",{traceId:e,timestamp:new Date,agentRef:n,agentId:r,threadId:o,sessionId:i,provider:s,tool:{name:d.toolName,rawName:d.toolName,input:d.toolInput?this.tryParseJson(d.toolInput):void 0,toolUseId:d.toolUseId}}),d.type==="tool_result"&&this.emit("tool:observed:after",{traceId:e,timestamp:new Date,agentRef:n,agentId:r,threadId:o,sessionId:i,provider:s,tool:{name:d.toolName??"unknown",rawName:d.toolName??"unknown",toolUseId:d.toolUseId,result:d.resultPreview,isError:d.isError}});}catch{}}tryParseJson(e){try{return JSON.parse(e)}catch{return e}}async query(e,n,r){let o=await this.resolveFileRemoteTarget(e);if(o){let l=await o.target.query(o.agentRef,n,this._buildFileRemoteOptions(e,r));return {...l,meta:{...l.meta,agentId:e.replace(/^@/,"")}}}let i=$n.getStore()??li(r?.trace),s=r?.taskId??Ve("tsk"),a={parentTaskId:i?.parentTaskId??null,rootTraceId:i?.rootTraceId??s,callerAgentId:i?.callerAgentId??null},d={parentTaskId:s,rootTraceId:i?.rootTraceId??s,callerAgentId:null},c=r?.callerIdentity?this._registerCallerIdentityOverride(s,r.callerIdentity,{agentId:e.replace(/^@/,""),workspaceId:this._workspaceId,workspaceName:this._workspaceName}):void 0;try{return await $n.run(d,async()=>{let l=Date.now(),f=new Date,g;try{g=xr(e,Array.from(this._agents.values()));}catch(E){if(E instanceof ot){this.emit("task:start",{traceId:s,timestamp:f,agentRef:e,message:n,mode:"query",parentTaskId:a.parentTaskId,rootTraceId:a.rootTraceId,callerAgentId:a.callerAgentId,metadata:{...r?.metadata??{}},threadId:r?.threadId,projectId:r?.projectId,platform:r?.platform??"cli",workspaceId:this._workspaceId,workspaceName:this._workspaceName});let U=Date.now()-l,$={code:"AGENT_NOT_FOUND",message:E.message};return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"query",durationMs:U,error:$,metadata:r?.metadata?{...r.metadata}:void 0}),this._clearCallerIdentityOverride(s,c),{ok:!1,data:"",error:$,meta:{agentId:e.replace(/^@/,""),provider:"",durationMs:U,taskId:s}}}throw E}d.callerAgentId=g.id;let m=await this._resolveFreshProvider(g,"query",r),k=m.baseProviderStr,h=m.effectiveProviderStr,v=m.effectiveModel,_=m.overdrive,w=h!==k?void 0:r?.resumeSessionId,b=this._resolveContextMode(r)==="instruction-only",L,A,ee,C=v,F,ue,Q,oe,H=!1,O=E=>{H||(H=!0,this.emit("task:start",{traceId:s,timestamp:f,agentRef:e,message:n,mode:"query",pid:E,parentTaskId:a.parentTaskId,rootTraceId:a.rootTraceId,callerAgentId:a.callerAgentId,model:C,provider:h,codingAgentCommand:L,renderedPrompt:ue,metadata:{...r?.metadata??{},provider:h,..._.active?{overdrive:!0}:{},...F?{provider_session_id:F}:{},...Q?{context_budget:Q}:{}},threadId:r?.threadId,projectId:r?.projectId,platform:r?.platform??"cli",workspaceId:this._workspaceId,workspaceName:this._workspaceName}));};if(b){let E=this._prepareInstructionOnlyResumeWithBudget({message:n,providerResolution:m,resumeSessionId:w});if(Q=E.contextBudget,E.error){O();let U=Date.now()-l,$=E.error;return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"query",durationMs:U,error:$,model:C,metadata:r?.metadata?{...r.metadata}:void 0}),this._clearCallerIdentityOverride(s,c),{ok:!1,data:"",error:$,meta:{agentId:g.id,provider:h,model:v,durationMs:U,taskId:s}}}}let ne;try{ne=at(h,this._additionalArgsProvider);}catch(E){O();let U=Date.now()-l,$={code:"PROVIDER_ERROR",message:E.message,...E instanceof exports.ProviderError?{providerCode:E.code}:{}};return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"query",durationMs:U,error:$,metadata:r?.metadata?{...r.metadata}:void 0}),this._clearCallerIdentityOverride(s,c),{ok:!1,data:"",error:$,meta:{agentId:g.id,provider:h,model:v,durationMs:U,taskId:s}}}let G;if(b||(G=await this._fetchHistoryMessages(r?.threadId,s,r?.messages,r?.uiProjections)),!b)try{let E=await this._prepareFreshPromptWithBudget({agentRef:e,agent:g,mode:"query",message:n,options:r,providerResolution:m,historyMessages:G});if(ue=E.renderedPrompt,Q=E.contextBudget,oe=E.countTokens,E.error){O();let U=Date.now()-l,$=E.error;return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"query",durationMs:U,error:$,model:C,metadata:r?.metadata?{...r.metadata}:void 0}),this._clearCallerIdentityOverride(s,c),{ok:!1,data:"",error:$,meta:{agentId:g.id,provider:h,model:v,durationMs:U,taskId:s}}}}catch(E){console.error(`[crewx] renderAgentPromptFull failed for ${e}: ${E instanceof Error?E.message:String(E)}`);}let j=g.options,W=Ad(j?.query,h,_),me=_.active?_.mode:W.modeOptions?.mode,te=_.effort??r?.effort??W.modeOptions?.effort,gn=Array.isArray(j?.query?.tools)?j.query.tools:void 0,Tt=this._tools.size>0?this._filterToolsByMode(gn):[],N=W.configOptions,Z=g.inline?.max_steps;h.startsWith("api/")&&O();let K=!1,se=0,tt=()=>{},nt=new Promise(E=>{tt=E;});this._activeTasks.set(s,{pid:void 0,done:nt});try{let E={model:v,effort:te,mode:me,context:r?.context,...b?{}:{systemPrompt:ue??g.inline?.system_prompt??g.inline?.prompt??g.description??`You are ${g.id}.`},additionalArgs:Array.isArray(j?.query)?j.query:void 0,resumeSessionId:w,tools:Tt.length>0?Tt:void 0,maxSteps:Z,providerOptions:W.providerOptions,configOptions:N,timeoutMs:this._resolveTimeout("query",this._lookupCliAdapter(h)),idleMs:this._resolveIdleTimeout(this._lookupCliAdapter(h)),cwd:this._resolveEffectiveCwd(g,r),env:{CREWX_AGENT_ID:g.id,CREWX_AGENT_ROLE:g.role??"",CREWX_AGENT_TEAM:g.team??"",CREWX_USER_ID:process.env.USER||process.env.USERNAME||"unknown",CREWX_TRACE_ID:s,CREWX_PARENT_TASK_ID:s,CREWX_TASK_ID:s,CREWX_CALLER_AGENT_ID:process.env.CREWX_AGENT_ID??"",CREWX_THREAD_ID:r?.threadId??"",CREWX_PROVIDER:h,CREWX_SESSION_ID:"",CREWX_TASK_LOG_PATH:this.computeTaskLogPath(s,f)},onPid:S=>{let ae=this._activeTasks.get(s);ae&&(ae.pid=S),O(S);},onProviderSessionId:S=>{F=S;},onOutput:(S,ae)=>{let ho=this._lookupCliAdapter(h);ae==="stdout"&&ho?.suppressOutputLine?.(S)===!0||this.emit("task:output",{traceId:s,timestamp:new Date,agentRef:e,output:S,level:ae}),ae==="stdout"&&this.emitToolEvents(s,e,h,S,g.id,r?.threadId??"","");},onTaskLog:S=>{this.emitTaskLogEntries(s,e,g.id,r?.threadId??"","",h,S);for(let ae of S)this.emit("task:output",{traceId:s,timestamp:new Date,agentRef:e,output:JSON.stringify(ae),level:"info"});},onCommand:S=>{L=S;},onUsage:S=>{A=S;},onExitCode:S=>{ee=S;},onModel:S=>{C||(C=S);}},U=b?void 0:this._validateFreshProviderInitialInputBudget({message:n,providerOptions:E,contextBudgetManifest:Q,countTokens:oe});if(U){O();let S=Date.now()-l;return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"query",durationMs:S,error:U,model:C,metadata:r?.metadata?{...r.metadata}:void 0}),K=!0,{ok:!1,data:"",error:U,meta:{agentId:g.id,provider:h,model:v,durationMs:S,taskId:s}}}let $=await ne.query(n,E);se=this._resolveEffectiveCost(A,C,l),O();let gt=Date.now()-l,mn={...r?.metadata??{},...r?.threadId?{threadId:r.threadId}:{}};return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"query",result:$,durationMs:gt,exitCode:ee,inputTokens:A?.inputTokens,outputTokens:A?.outputTokens,cachedInputTokens:A?.cachedInputTokens,costUsd:se,model:C,metadata:Object.keys(mn).length>0?mn:void 0}),K=!0,{ok:!0,data:$,meta:{agentId:g.id,provider:h,model:v,durationMs:gt,taskId:s}}}catch(E){if(E instanceof exports.ClientToolCallRequiredError){let gt=Ve("thd");return this._pendingThreads.set(gt,{agentRef:g.id,providerStr:h,continuationState:E.continuationState,toolCall:E.toolCall,traceId:s,startMs:l,model:v}),K=!0,{ok:!0,status:"requires_action",data:"",toolCall:E.toolCall,threadId:gt,meta:{agentId:g.id,provider:h,model:v,durationMs:Date.now()-l,taskId:s}}}se=this._resolveEffectiveCost(A,C,l),O();let U=Date.now()-l,$={code:"QUERY_FAILED",message:E.message,...E instanceof exports.ProviderError?{providerCode:E.code}:{}};return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"query",durationMs:U,error:$,exitCode:ee,inputTokens:A?.inputTokens,outputTokens:A?.outputTokens,cachedInputTokens:A?.cachedInputTokens,costUsd:se,model:C,metadata:r?.metadata?{...r.metadata}:void 0}),K=!0,{ok:!1,data:"",error:$,meta:{agentId:g.id,provider:h,model:v,durationMs:U,taskId:s}}}finally{K||this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"query",durationMs:Date.now()-l,error:{code:"TASK_END_GUARD",message:"task:end was not emitted normally"},exitCode:ee??-1,inputTokens:A?.inputTokens,outputTokens:A?.outputTokens,cachedInputTokens:A?.cachedInputTokens,costUsd:se,model:C}),this._activeTasks.delete(s),this._clearCallerIdentityOverride(s,c),tt();}})}finally{this._clearCallerIdentityOverride(s,c);}}async continueQuery(e,n){let r=this._pendingThreads.get(e);if(!r)return {ok:false,data:"",error:{code:"THREAD_NOT_FOUND",message:`No pending thread: ${e}`},meta:{agentId:"",provider:"",durationMs:0}};this._pendingThreads.delete(e);let o=at(r.providerStr,this._additionalArgsProvider);if(!o.continueWithToolResults)return {ok:false,data:"",error:{code:"UNSUPPORTED",message:"Provider does not support client tool continuation"},meta:{agentId:r.agentRef,provider:r.providerStr,durationMs:0}};let i=n.map(s=>({...s,toolName:r.toolCall.toolCallId===s.toolCallId?r.toolCall.toolName:s.toolCallId}));try{let s=await o.continueWithToolResults(r.continuationState,i),a=Date.now()-r.startMs;return this.emit("task:end",{traceId:r.traceId,timestamp:new Date,agentRef:r.agentRef,mode:"query",result:s,durationMs:a}),{ok:!0,status:"complete",data:s,meta:{agentId:r.agentRef,provider:r.providerStr,model:r.model,durationMs:a}}}catch(s){if(s instanceof exports.ClientToolCallRequiredError)return this._pendingThreads.set(e,{...r,continuationState:s.continuationState,toolCall:s.toolCall}),{ok:true,status:"requires_action",data:"",toolCall:s.toolCall,threadId:e,meta:{agentId:r.agentRef,provider:r.providerStr,model:r.model,durationMs:Date.now()-r.startMs}};let a=Date.now()-r.startMs;return {ok:false,data:"",error:{code:"CONTINUE_FAILED",message:s.message},meta:{agentId:r.agentRef,provider:r.providerStr,model:r.model,durationMs:a}}}}async execute(e,n,r){let o=await this.resolveFileRemoteTarget(e);if(o){let l=await o.target.execute(o.agentRef,n,this._buildFileRemoteOptions(e,r));return {...l,meta:{...l.meta,agentId:e.replace(/^@/,"")}}}let i=$n.getStore()??li(r?.trace),s=r?.taskId??Ve("tsk"),a={parentTaskId:i?.parentTaskId??null,rootTraceId:i?.rootTraceId??s,callerAgentId:i?.callerAgentId??null},d={parentTaskId:s,rootTraceId:i?.rootTraceId??s,callerAgentId:null},c=r?.callerIdentity?this._registerCallerIdentityOverride(s,r.callerIdentity,{agentId:e.replace(/^@/,""),workspaceId:this._workspaceId,workspaceName:this._workspaceName}):void 0;try{return await $n.run(d,async()=>{let l=Date.now(),f=new Date,g;try{g=xr(e,Array.from(this._agents.values()));}catch(E){if(E instanceof ot){this.emit("task:start",{traceId:s,timestamp:f,agentRef:e,message:n,mode:"execute",parentTaskId:a.parentTaskId,rootTraceId:a.rootTraceId,callerAgentId:a.callerAgentId,metadata:{...r?.metadata??{}},threadId:r?.threadId,projectId:r?.projectId,platform:r?.platform??"cli",workspaceId:this._workspaceId,workspaceName:this._workspaceName});let U=Date.now()-l,$={code:"AGENT_NOT_FOUND",message:E.message};return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"execute",durationMs:U,error:$,metadata:r?.metadata?{...r.metadata}:void 0}),this._clearCallerIdentityOverride(s,c),{ok:!1,data:"",error:$,meta:{agentId:e.replace(/^@/,""),provider:"",durationMs:U,taskId:s}}}throw E}d.callerAgentId=g.id;let m=await this._resolveFreshProvider(g,"execute",r),k=m.baseProviderStr,h=m.effectiveProviderStr,v=m.effectiveModel,_=m.overdrive,w=h!==k?void 0:r?.resumeSessionId,b=this._resolveContextMode(r)==="instruction-only",L,A,ee,C=v,F,ue,Q,oe,H=!1,O=E=>{H||(H=!0,this.emit("task:start",{traceId:s,timestamp:f,agentRef:e,message:n,mode:"execute",pid:E,parentTaskId:a.parentTaskId,rootTraceId:a.rootTraceId,callerAgentId:a.callerAgentId,model:C,provider:h,codingAgentCommand:L,renderedPrompt:ue,metadata:{...r?.metadata??{},provider:h,..._.active?{overdrive:!0}:{},...F?{provider_session_id:F}:{},...Q?{context_budget:Q}:{}},threadId:r?.threadId,projectId:r?.projectId,platform:r?.platform??"cli",workspaceId:this._workspaceId,workspaceName:this._workspaceName}));};if(b){let E=this._prepareInstructionOnlyResumeWithBudget({message:n,providerResolution:m,resumeSessionId:w});if(Q=E.contextBudget,E.error){O();let U=Date.now()-l,$=E.error;return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"execute",durationMs:U,error:$,model:C,metadata:r?.metadata?{...r.metadata}:void 0}),this._clearCallerIdentityOverride(s,c),{ok:!1,data:"",error:$,meta:{agentId:g.id,provider:h,model:v,durationMs:U,taskId:s}}}}let ne;try{ne=at(h,this._additionalArgsProvider);}catch(E){O();let U=Date.now()-l,$={code:"PROVIDER_ERROR",message:E.message,...E instanceof exports.ProviderError?{providerCode:E.code}:{}};return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"execute",durationMs:U,error:$,metadata:r?.metadata?{...r.metadata}:void 0}),this._clearCallerIdentityOverride(s,c),{ok:!1,data:"",error:$,meta:{agentId:g.id,provider:h,model:v,durationMs:U,taskId:s}}}let G;if(b||(G=await this._fetchHistoryMessages(r?.threadId,s,r?.messages,r?.uiProjections)),!b)try{let E=await this._prepareFreshPromptWithBudget({agentRef:e,agent:g,mode:"execute",message:n,options:r,providerResolution:m,historyMessages:G});if(ue=E.renderedPrompt,Q=E.contextBudget,oe=E.countTokens,E.error){O();let U=Date.now()-l,$=E.error;return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"execute",durationMs:U,error:$,model:C,metadata:r?.metadata?{...r.metadata}:void 0}),this._clearCallerIdentityOverride(s,c),{ok:!1,data:"",error:$,meta:{agentId:g.id,provider:h,model:v,durationMs:U,taskId:s}}}}catch(E){console.error(`[crewx] renderAgentPromptFull failed for ${e}: ${E instanceof Error?E.message:String(E)}`);}let j=g.options,W=Ad(j?.execute,h,_),me=_.active?_.mode:W.modeOptions?.mode,te=_.effort??r?.effort??W.modeOptions?.effort,gn=Array.isArray(j?.execute?.tools)?j.execute.tools:void 0,Tt=this._tools.size>0?this._filterToolsByMode(gn):[],N=W.configOptions,Z=g.inline?.max_steps;h.startsWith("api/")&&O();let K=!1,se=0,tt=()=>{},nt=new Promise(E=>{tt=E;});this._activeTasks.set(s,{pid:void 0,done:nt});try{let E={model:v,effort:te,mode:me,context:r?.context,...b?{}:{systemPrompt:ue??g.inline?.system_prompt??g.inline?.prompt??g.description??`You are ${g.id}.`},additionalArgs:Array.isArray(j?.execute)?j.execute:void 0,resumeSessionId:w,tools:Tt.length>0?Tt:void 0,maxSteps:Z,providerOptions:W.providerOptions,configOptions:N,timeoutMs:this._resolveTimeout("execute",this._lookupCliAdapter(h)),idleMs:this._resolveIdleTimeout(this._lookupCliAdapter(h)),cwd:this._resolveEffectiveCwd(g,r),env:{CREWX_AGENT_ID:g.id,CREWX_AGENT_ROLE:g.role??"",CREWX_AGENT_TEAM:g.team??"",CREWX_USER_ID:process.env.USER||process.env.USERNAME||"unknown",CREWX_TRACE_ID:s,CREWX_PARENT_TASK_ID:s,CREWX_TASK_ID:s,CREWX_CALLER_AGENT_ID:process.env.CREWX_AGENT_ID??"",CREWX_THREAD_ID:r?.threadId??"",CREWX_PROVIDER:h,CREWX_SESSION_ID:"",CREWX_TASK_LOG_PATH:this.computeTaskLogPath(s,f)},onPid:S=>{let ae=this._activeTasks.get(s);ae&&(ae.pid=S),O(S);},onProviderSessionId:S=>{F=S;},onOutput:(S,ae)=>{let ho=this._lookupCliAdapter(h);ae==="stdout"&&ho?.suppressOutputLine?.(S)===!0||this.emit("task:output",{traceId:s,timestamp:new Date,agentRef:e,output:S,level:ae}),ae==="stdout"&&this.emitToolEvents(s,e,h,S,g.id,r?.threadId??"","");},onTaskLog:S=>{this.emitTaskLogEntries(s,e,g.id,r?.threadId??"","",h,S);for(let ae of S)this.emit("task:output",{traceId:s,timestamp:new Date,agentRef:e,output:JSON.stringify(ae),level:"info"});},onCommand:S=>{L=S;},onUsage:S=>{A=S;},onExitCode:S=>{ee=S;},onModel:S=>{C||(C=S);}},U=b?void 0:this._validateFreshProviderInitialInputBudget({message:n,providerOptions:E,contextBudgetManifest:Q,countTokens:oe});if(U){O();let S=Date.now()-l;return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"execute",durationMs:S,error:U,model:C,metadata:r?.metadata?{...r.metadata}:void 0}),K=!0,{ok:!1,data:"",error:U,meta:{agentId:g.id,provider:h,model:v,durationMs:S,taskId:s}}}let $=await ne.execute(n,E);se=this._resolveEffectiveCost(A,C,l),O();let gt=Date.now()-l,mn={...r?.metadata??{},...r?.threadId?{threadId:r.threadId}:{}};return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"execute",result:$,durationMs:gt,exitCode:ee,inputTokens:A?.inputTokens,outputTokens:A?.outputTokens,cachedInputTokens:A?.cachedInputTokens,costUsd:se,model:C,metadata:Object.keys(mn).length>0?mn:void 0}),K=!0,{ok:!0,data:$,meta:{agentId:g.id,provider:h,model:v,durationMs:gt,taskId:s}}}catch(E){se=this._resolveEffectiveCost(A,C,l),O();let U=Date.now()-l,$={code:"EXECUTE_FAILED",message:E.message,...E instanceof exports.ProviderError?{providerCode:E.code}:{}};return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"execute",durationMs:U,error:$,exitCode:ee,inputTokens:A?.inputTokens,outputTokens:A?.outputTokens,cachedInputTokens:A?.cachedInputTokens,costUsd:se,model:C,metadata:r?.metadata?{...r.metadata}:void 0}),K=!0,{ok:!1,data:"",error:$,meta:{agentId:g.id,provider:h,model:v,durationMs:U,taskId:s}}}finally{K||this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"execute",durationMs:Date.now()-l,error:{code:"TASK_END_GUARD",message:"task:end was not emitted normally"},exitCode:ee??-1,inputTokens:A?.inputTokens,outputTokens:A?.outputTokens,cachedInputTokens:A?.cachedInputTokens,costUsd:se,model:C}),this._activeTasks.delete(s),this._clearCallerIdentityOverride(s,c),tt();}})}finally{this._clearCallerIdentityOverride(s,c);}}};function Id(t,e){let n=Yi(t)?t:void 0,r=Yi(e)?e:void 0;if(!(!n&&!r))return {...n??{},...r??{}}}function Yi(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function hg(t,e){let n=Array.isArray(t)?t:void 0,r=Array.isArray(e)?e:void 0;if(!n&&!r)return;let o=a=>{if(!Yi(a))return;let d=a.id;if(typeof d=="string")return `id:${d}`;let c=a.name;if(typeof c=="string")return `name:${c}`},i=new Set;for(let a of r??[]){let d=o(a);d&&i.add(d);}let s=[];for(let a of n??[]){let d=o(a);d&&i.has(d)||s.push(a);}for(let a of r??[])s.push(a);return s}function yg(t){let e=Array.isArray(t.provider)?t.provider:[t.provider],n=t.options,r=[...e];for(let o of ["query","execute"]){let i=Yo(n,o);i.provider&&r.push(i.provider);let s=n&&typeof n=="object"&&!Array.isArray(n)?n[o]:void 0,a=s&&typeof s=="object"&&!Array.isArray(s)?jr(s.overdrive):void 0;a?.provider&&r.push(a.provider);}return r}async function Pd(t,e,n){let r=t.flatMap(yg);if(r.some(i=>i.startsWith("api/"))){let{registerApiProviders:i}=await Promise.resolve().then(()=>(Ui(),fd));i(n?.api);}await wg(r,e),kg(r,e),_g(r);}function _g(t){if(!t.some(r=>r.startsWith("acp/")))return;let{registerAcpProviders:n}=(Wi(),ms(_d));n();}async function wg(t,e){if(!t.some(s=>s.startsWith("remote/")))return;let r=e.providers;if(!Array.isArray(r))return;let{createRemoteProviderFactory:o}=await Promise.resolve().then(()=>(Gi(),kd)),i=new Map;for(let s of r)s.type==="remote"&&typeof s.id=="string"&&i.set(s.id,s);i.size>0&&st("remote",o(i,at));}function kg(t,e){if(!t.some(s=>s.startsWith("plugin/")))return;let r=e.providers;if(!Array.isArray(r))return;let{createPluginProviderFactory:o}=(Vi(),ms(xd)),i=new Map;for(let s of r)s.type==="plugin"&&typeof s.id=="string"&&i.set(s.id,s);i.size>0&&st("plugin",o(i));}u();u();var Qi=class{detach(e){}};u();var vg="crewx:fs:",Zi=class{prefix;store;constructor(e){this.prefix=e?.prefix??vg,this.store=e?.storage??new Map;}async readFile(e){let n=this.toKey(e),r=this.store.get(n);if(r===void 0)throw new Error(`BrowserFsAdapter: file not found: ${e}`);return r}async exists(e){return this.store.has(this.toKey(e))}resolvePath(...e){let n=e.map(s=>s.replace(/\\/g,"/")).join("/").replace(/\/+/g,"/"),r=n.split("/"),o=[];for(let s of r)s==="."||s===""||(s===".."?o.pop():o.push(s));let i=o.join("/");return n.startsWith("/")?`/${i}`:i}isAbsolute(e){return e.startsWith("/")}setItem(e,n){this.store.set(this.toKey(e),n);}removeItem(e){this.store.delete(this.toKey(e));}keys(){return Array.from(this.store.keys()).filter(e=>e.startsWith(this.prefix)).map(e=>e.slice(this.prefix.length))}async readdir(e){let n=e.replace(/\\/g,"/").replace(/\/$/,""),r=this.toKey(n+"/"),o=[];for(let i of this.store.keys())if(i.startsWith(r)){let a=i.slice(r.length).split("/")[0];a&&!o.includes(a)&&o.push(a);}return o}toKey(e){return `${this.prefix}${e.replace(/\\/g,"/")}`}};u();var cn="default",ln="archive",Cd="wi-default-flow",Eg="wi-plan-flow",Rg="wi-default-flow.yaml",xg="wi-plan-flow.yaml",po=/^[a-zA-Z0-9_-]{1,64}$/;function Sd(t){return t===cn||t===ln}function bg(t){let e={id:cn,name:"Default",workflowId:Cd,system:true,readOnly:false},n={id:ln,name:"Archive",workflowId:"",system:true,readOnly:true},r=t?.settings?.wi?.boards;if(!Array.isArray(r)||r.length===0)return [e,n];let o=new Set,i=[];for(let s of r){if(!s||typeof s!="object")continue;let a=s,d=a.id,c=a.name,l=a.workflow_id;if(typeof d!="string"||d.length===0||typeof c!="string"||c.length===0||typeof l!="string"||l.length===0||Sd(d)||!po.test(d)||o.has(d))continue;o.add(d);let f=typeof a.description=="string"?a.description:void 0,g=typeof a.goal_id=="string"?a.goal_id:void 0;i.push({id:d,name:c,workflowId:l,...f!==void 0?{description:f}:{},...g!==void 0?{goalId:g}:{},system:false,readOnly:false});}return [e,...i,n]}u();var re=class extends Error{constructor(e){super(e),this.name="WiCreateError";}},Ag=300*1e3,Ig=300*1e3,Pg=1e4,Cg=50;function Sg(t){return new Promise(e=>setTimeout(e,t))}function Og(t){let e=t.getFullYear(),n=String(t.getMonth()+1).padStart(2,"0"),r=String(t.getDate()).padStart(2,"0");return {compact:`${e}${n}${r}`,iso:`${e}-${n}-${r}`}}function Dg(t){return t.normalize("NFKD").replace(/[^\x00-\x7F]/g,"").replace(/[^a-zA-Z0-9]+/g,"-").replace(/^-+|-+$/g,"").toUpperCase().slice(0,60)}function Ng(t,e){let n=t.replace(/\\/g,"/").toLowerCase(),r=e.replace(/\\/g,"/").toLowerCase();if(r!==n&&!r.startsWith(n+"/"))throw new re("Path is outside wi directory")}function Od(t){let e=typeof t=="string"?t.trim():"";if(!e)throw new re("title is required");if(e.length>200)throw new re("title must be 200 characters or fewer");return e}function Dd(t){let e=typeof t=="string"?t.trim():"";if(!e)return "manual";if(e.length>128)throw new re("source must be 128 characters or fewer");if(/[\r\n]/.test(e))throw new re("source must be a single line");return e}function Nd(t){return (typeof t=="string"?t.trim().replace(/^@+/,""):"")||void 0}function Md(t){if(t==null)return [];if(!Array.isArray(t))throw new re("depends_on must be an array");return t.map(e=>String(e).trim()).filter(Boolean)}function Ud(t,e){let n=typeof t=="string"?t.trim():"";if(!n){if(e?.required)throw new re("board is required");return}if(!po.test(n))throw new re("board must match ^[a-zA-Z0-9_-]{1,64}$");if(n===ln)throw new re(`board cannot be '${ln}'`);return n}function un(t){return JSON.stringify(t)}function Mg(t,e){return e.length===0?[`${t}: []`]:[`${t}:`,...e.map(n=>` - ${un(n)}`)]}async function Ug(t){let e=await Wa.promises.stat(t).catch(()=>null);e&&Date.now()-e.mtimeMs>Ig&&await Wa.promises.rm(t,{recursive:true,force:true}).catch(()=>{});}async function Lg(t,e){let n=X.join(t,".wi-create.lock"),r=Date.now()+Pg;for(;Date.now()<r;)try{await Wa.promises.mkdir(n);try{return await e()}finally{await Wa.promises.rm(n,{recursive:!0,force:!0}).catch(()=>{});}}catch(o){if(o.code!=="EEXIST")throw o;await Ug(n),await Sg(Cg);}throw new re("WI create lock timeout: docs/wi/.wi-create.lock")}async function Ld(t){let e=[],n=await Wa.promises.readdir(t,{withFileTypes:true}).catch(r=>{if(r.code==="ENOENT")return [];throw r});for(let r of n){let o=X.join(t,r.name);r.isDirectory()?e.push(...await Ld(o)):r.isFile()&&r.name.endsWith(".md")&&e.push(r.name);}return e}async function jg(t){let e=await Wa.promises.readdir(t).catch(r=>{if(r.code==="ENOENT")return [];throw r}),n=await Ld(X.join(t,"archive"));return [...e,...n]}function $g(t,e){return t.reduce((n,r)=>{if(!r.startsWith(e))return n;let o=r.slice(e.length).match(/^(\d+)/);return o?Math.max(n,parseInt(o[1],10)):n},0)+1}function Bg(t,e){return t.some(n=>n===`${e}.md`||n.startsWith(`${e}-`))}async function Fg(t,e){let n=X.join(t,`.wi-${e}.lock`);try{return await Wa.promises.writeFile(n,"",{flag:"wx"}),{claimed:!0,lockPath:n}}catch(r){if(r.code!=="EEXIST")throw r;return await Wa.promises.stat(n).then(i=>Date.now()-i.mtimeMs>Ag).catch(()=>false)&&await Wa.promises.unlink(n).then(()=>true).catch(()=>false)?(await Wa.promises.writeFile(n,"",{flag:"wx"}),{claimed:true,lockPath:n}):{claimed:false,lockPath:n}}}function Hg(t){return {title:Od(t.title),assignee:Nd(t.assignee),body:(t.body??"").trim(),board:Ud(t.board),source:Dd(t.source),depends_on:Md(t.depends_on)}}function Wg(t,e,n){if(t==null)return;let r=typeof t=="string"?t.trim():"";if(!r)throw new re(`items[${e}].key must be a non-empty string when provided`);if(n.has(r))throw new re(`items[${e}].key "${r}" is duplicated`);return n.add(r),r}function qg(t){let e=Ud(t.board,{required:true}),n=Dd(t.source);if(!Array.isArray(t.items)||t.items.length===0)throw new re("items must contain at least one WI");let r=new Set;return t.items.map((o,i)=>{if(!o||typeof o!="object")throw new re(`items[${i}] must be an object`);if(typeof o.body!="string")throw new re(`items[${i}].body is required`);return {key:Wg(o.key,i,r),title:Od(o.title),assignee:Nd(o.assignee),body:o.body.trim(),board:e,source:n,depends_on:Md(o.depends_on)}})}function zg(t,e){return t.map(n=>e.get(n)??n)}function Gg(t,e,n){let r=!!t.board&&t.board!==cn,o={wi_id:e,title:t.title,date:n,status:"draft",priority:"normal",source:t.source};return t.assignee&&(o.assignee=t.assignee),r&&(o.board=t.board),o.depends_on=t.depends_on,{raw:`---
392
+ ${[`wi_id: ${e}`,`title: ${un(t.title)}`,`date: ${un(n)}`,"status: draft",...t.assignee?[`assignee: ${un(t.assignee)}`]:[],"priority: normal",`source: ${un(t.source)}`,...r?[`board: ${un(t.board)}`]:[],...Mg("depends_on",t.depends_on)].join(`
393
393
  `)}
394
394
  ---
395
395
 
396
396
  ${t.body}
397
- `,frontmatter:o}}async function Sd(t,e){let n=K.join(t,"docs","wi");return await Ua.promises.mkdir(n,{recursive:true}),Ig(n,async()=>{let{compact:r,iso:o}=xg(new Date),i=`WI-${r}-`,s=await Pg(n),a=Cg(s,i),d=[],c=[];try{let l=[];for(let m of e){let h;for(let v=0;v<999;v++,a++){let w=`WI-${r}-${String(a).padStart(3,"0")}`;if(Sg(s,w))continue;let _=await Og(n,w);if(!_.claimed)continue;let R=Rg(m.title),b=R?`${w}-${R}.md`:`${w}.md`,L=K.resolve(n,b);if(bg(n,L),await Ua.promises.access(L).then(()=>!0,()=>!1)){await Ua.promises.unlink(_.lockPath).catch(()=>{});continue}c.push(_.lockPath),h={item:m,wiId:w,filename:b,fullPath:L};break}if(!h)throw new ne("Failed to allocate a unique WI id");l.push(h),s.push(h.filename);}let f=new Map;for(let m of l)m.item.key&&f.set(m.item.key,m.wiId);let g=[];for(let m of l){let k=Ug(m.item.depends_on,f),h={...m.item,depends_on:k},v=Lg(h,m.wiId,o);await Ua.promises.writeFile(m.fullPath,v.raw,{encoding:"utf8",flag:"wx"}),d.push(m.fullPath);let w=await Ua.promises.stat(m.fullPath);g.push({summary:{wi_id:m.wiId,title:h.title,status:"draft",priority:"normal",assignee:h.assignee,depends_on:k,blocks:[],date:o,board:h.board&&h.board!==sn?h.board:void 0,source:h.source,screens:[],path:`docs/wi/${m.filename}`,mtime:w.mtimeMs},frontmatter:v.frontmatter,body:h.body});}return g}catch(l){throw await Promise.all(d.map(f=>Ua.promises.unlink(f).catch(()=>{}))),l}finally{await Promise.all(c.map(l=>Ua.promises.unlink(l).catch(()=>{})));}})}async function $g(t,e){let[n]=await Sd(t,[Ng(e)]);if(!n)throw new ne("Failed to create WI");return n}async function Bg(t,e){return {created:await Sd(t,Mg(e))}}u();var jg=new Set(["draft","approved","in-progress"]);function Fg(t,e){let n=e.batch.filter(Boolean);if(n.length===0)return {done:true};let r=new Set(e.exclude??[]),o=new Set(n),i=new Map(t.filter(f=>o.has(f.wi_id)).map(f=>[f.wi_id,f])),s=n.filter(f=>{let g=i.get(f);return g&&g.status!=="done"});if(s.length===0)return {done:true};for(let f of s){let g=i.get(f);if(g)for(let m of g.depends_on??[]){if(!o.has(m))continue;if(i.get(m)?.status==="cancelled")return {blocked:true,reason:`${f} depends on cancelled WI ${m}`}}}let a=new Map,d=new Map;for(let f of s)a.set(f,new Set),d.set(f,0);for(let f of s){let g=i.get(f);if(g)for(let m of g.depends_on??[])d.has(m)&&(a.get(m).add(f),d.set(f,(d.get(f)??0)+1));}let c=s.filter(f=>(d.get(f)??0)===0),l=[];for(let f=0;f<c.length;f++){let g=c[f];l.push(g);for(let m of a.get(g)??[]){let k=(d.get(m)??0)-1;d.set(m,k),k===0&&c.push(m);}}if(l.length!==s.length)return {cycle:s.filter(f=>(d.get(f)??0)>0)};for(let f of n){if(!s.includes(f)||r.has(f))continue;let g=i.get(f);if(!g||!jg.has(g.status))continue;if(!(g.depends_on??[]).some(k=>{if(!o.has(k))return false;let h=i.get(k);return h?h.status!=="done":false}))return {pick:f}}return {done:true}}u();function rr(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function Od(t,e){let n={...t};for(let[r,o]of Object.entries(e))rr(o)&&rr(n[r])?n[r]=Od(n[r],o):n[r]=o;return n}function Qg(t){let e=t?.filePath??K.join(Ri.homedir(),".crewx","crewx.yaml"),n=null,r=null;function o(){try{return Ua.statSync(e).mtimeMs}catch{return null}}function i(){let s=o();if(s===null)return n=null,r=null,{};if(r!==null&&n===s)return r;let a=null;try{a=jsYaml.load(Ua.readFileSync(e,"utf-8"));}catch{a=null;}let d=rr(a)?a:{};return r=d,n=s,d}return {get path(){return e},read(){let s=i();return rr(s.settings)?s.settings:{}},update(s){let a=i(),d=rr(a.settings)?a.settings:{},c=Od(d,s),l={...a,settings:c};Ua.mkdirSync(K.dirname(e),{recursive:true});let f=`${e}.tmp`;return Ua.writeFileSync(f,jsYaml.dump(l)),Ua.renameSync(f,e),n=null,r=null,c}}}Do();ur();u();zt();var Zg="https://api.crewx.dev/v1/models",em=3600*1e3,Nd=0;async function tm(t){let e=t?.ttlMs??em,n=Date.now();if(!(n-Nd<e)){Nd=n;try{let r=await fetch(t?.endpoint??Zg);if(!r.ok)return;let o=await r.json();if(!o?.models||typeof o.models!="object")return;let i={};for(let[s,a]of Object.entries(o.models))a!=null&&(i[s]={input:a.input,cachedInput:a.cachedInput,output:a.output});gs(i);}catch{}}}u();Re();zt();ho();var nm="https://api.crewx.dev/v1/models",rm=900*1e3,Dd=0;function Xe(t){return t!=null&&typeof t=="object"&&!Array.isArray(t)}function om(t){return typeof t=="number"&&Number.isInteger(t)&&t>0}function im(t){return typeof t=="string"&&ls.includes(t)}function sm(t){if(t===void 0)return [];if(!Array.isArray(t))return;let e=new Set,n=[];for(let r of t){if(!Xe(r)||typeof r.key!="string"||r.key.trim().length===0)return;let o=r.key.trim();if(e.has(o))return;if(e.add(o),r.type==="boolean"){n.push({key:o,type:"boolean"});continue}if(r.type!=="enum"||!Array.isArray(r.values)||r.values.length===0||r.values.some(i=>typeof i!="string"||i.length===0)||new Set(r.values).size!==r.values.length)return;n.push({key:o,type:"enum",values:[...r.values]});}return n}function am(t,e){if(t===void 0)return;if(!Xe(t))return null;let n=new Map(e.map(o=>[o.key,o])),r={};for(let[o,i]of Object.entries(t)){let s=n.get(o);if(s){if(s.type==="boolean"&&typeof i!="boolean"||s.type==="enum"&&(typeof i!="string"||!s.values.includes(i)))return null;r[o]=i;}}return r}function dm(t){if(!Xe(t))return {};let e={};for(let[n,r]of Object.entries(t)){if(!Xe(r))continue;let o=r.input,i=r.output;typeof o!="number"||!Number.isFinite(o)||o<=0||typeof i!="number"||!Number.isFinite(i)||i<=0||(e[n]={inputPerMillionTokensUsd:o,outputPerMillionTokensUsd:i});}return e}function Md(t,e){if(!Xe(t)||typeof t.mode!="string"||t.mode.length===0||typeof t.effort!="string"||t.effort.length===0)return;let n=am(t.providerOptions,e);if(n!==null)return {mode:t.mode,effort:t.effort,...n!==void 0?{providerOptions:n}:{}}}function cm(t,e){let n=t.modelOverrides[e]?.effort;return Array.isArray(n)&&n.every(r=>typeof r=="string")?n:t.effort}function lm(t,e){if(!Xe(t)||t.version!==1||!Xe(t.providers))return {};let n={};for(let[r,o]of Object.entries(t.providers)){if(!/^cli\/[^/]+$/.test(r)||!Xe(o))continue;let i=e[r.slice(4)];if(!i||typeof o.model!="string"||o.model.length===0||!i.models.some(f=>f.id===o.model))continue;let s=i.providerOptions??[],a=Md(o.query,s),d=Md(o.execute,s);if(!a||!d)continue;let c=new Set(i.modes.map(f=>f.id));if(!c.has(a.mode)||!c.has(d.mode))continue;let l=cm(i,o.model);!l.includes(a.effort)||!l.includes(d.effort)||(n[r]={model:o.model,query:a,execute:d});}return n}async function um(t){let e=t?.ttlMs??rm,n=Date.now();if(!(n-Dd<e)){Dd=n;try{let r=await fetch(t?.endpoint??nm);if(!r.ok){hn({});return}let o=await r.json();if(!o?.providers||typeof o.providers!="object"){hn({});return}let i={};for(let[s,a]of Object.entries(o.providers)){let d=Array.isArray(a);if(!d&&!Xe(a))continue;let c=d?[]:sm(a.providerOptions);if(c===void 0)continue;let l=d?a:Array.isArray(a.models)?a.models:[],f=d?[]:Array.isArray(a.modes)?a.modes:[],g=d?[]:Array.isArray(a.effort)?a.effort:[],m=d||!Xe(a.modelOverrides)?{}:a.modelOverrides,k=l.filter(h=>h!=null&&typeof h.id=="string").map(h=>({id:h.id,name:h.name??h.id,...h.description!=null?{description:h.description}:{},...om(h.contextWindowTokens)?{contextWindowTokens:h.contextWindowTokens}:{},...im(h.tier)?{tier:h.tier}:{},...h.recommended===!0?{recommended:!0}:{}}));i[s]={models:k,modes:f.filter(h=>h!=null&&typeof h.id=="string").map(h=>({id:h.id,name:h.name??h.id,...h.description!=null?{description:h.description}:{}})),effort:g.filter(h=>typeof h=="string"),modelOverrides:m,providerOptions:c};}vo(i),ms(dm(o.models)),hn(lm(o.defaults,i));}catch{hn({});}}}u();function pm(t,e){let n=t.skills?.include;if(n===void 0)return [...e];if(n.length===0)return [];let r=new Set(n);return e.filter(o=>r.has(o))}u();var Ji=["codex","claude","grok","opencode","antigravity","copilot"];function fm(t){let e=t.indexOf("/");return e===-1?t:t.slice(e+1)}function Ki(t){let e=fm(t),n=Ji.indexOf(e);return n===-1?Ji.length:n}function or(t,e){return Ki(t)-Ki(e)}var gm=new Set(["claude","copilot","codex","grok","opencode"]);function mm(t){if(!t)return "";if(t.startsWith("acp/")){let e=t.slice(4);if(gm.has(e))return `cli/${e}`}return t}Re();qe();Pi();Ci();u();Si();gt();u();no();ao();Re();var hm="model",ym="mode",wm="thought_level";function Xi(t){if(t.length===0)return [];if(t[0]?.group!=null){let e=[];for(let n of t)for(let r of n.options??[])e.push(r);return e}return t}function _m(t,e){let n=new Map;for(let r of [...t,...e])n.has(r.id)||n.set(r.id,r);return Array.from(n.values())}function km(t,e,n,r){let o=n.agentInfo?.name,i=e??o??t,s=r.configOptions??[],d=(r.modes?.availableModes??[]).map(w=>({id:w.id,name:w.name,...w.description!=null?{description:w.description}:{}})),c=[];for(let w of s)if(w.category?.trim().toLowerCase()===ym&&w.options!=null)for(let _ of Xi(w.options))_.value!=null&&c.push({id:_.value,name:_.name??_.value});let l=_m(d,c),f=[];for(let w of s)if(w.category?.trim().toLowerCase()===wm&&w.type==="select")for(let _ of Xi(w.options??[]))_.value!=null&&f.push(_.value);if(t==="claude"){let w=kn(wn()),_=Ud(n);return Ld(t,{models:w,modes:l,availableModelsCount:0,configModelsCount:0,skipModelWarn:true}),{id:`acp/${t}`,name:i,modes:l,effort:f,models:w,capabilities:_}}let m=(r.models?.availableModels??[]).map(w=>({id:w.modelId})),k=[];for(let w of s)if(w.category?.trim().toLowerCase()===hm&&w.options!=null)for(let _ of Xi(w.options))_.value!=null&&k.push({id:_.value,..._.name!=null?{name:_.name}:{}});let h=kn(_n(m,k));Ld(t,{models:h,modes:l,availableModelsCount:m.length,configModelsCount:k.length,skipModelWarn:false});let v=Ud(n);return {id:`acp/${t}`,name:i,modes:l,effort:f,models:h,capabilities:v}}function Ud(t){let e=t.agentCapabilities??{};return {loadSession:e.loadSession??false,image:e.promptCapabilities?.image??false,audio:e.promptCapabilities?.audio??false,mcp:e.mcpCapabilities!=null}}function Ld(t,e){!e.skipModelWarn&&e.models.length===0&&console.warn(`[acp] ${t} meta: models empty (availableModels=${e.availableModelsCount}, configOptions[model]=${e.configModelsCount})`),e.modes.length===0&&console.warn(`[acp] ${t} meta: modes empty`);}async function $d(t){let e=exports.ACP_ADAPTERS[t];if(!e)return null;let n=e.meta?.displayName,r=new exports.AcpConnection({spawn:e.spawn,cwd:process.cwd()});try{await r.connect(e.clientInfo);let o=r.initResponse;if(!o)return null;let i=e.buildSessionParams({cwd:process.cwd()}),s=await r.newSessionRaw(i);return km(t,n,o,s)}catch(o){return console.warn(`[acp] ${t} meta query failed: ${o instanceof Error?o.message:String(o)}`),null}finally{await r.dispose();}}async function vm(){let t=Object.keys(exports.ACP_ADAPTERS),e=await Promise.allSettled(t.map(r=>$d(r))),n=[];for(let r of e)r.status==="fulfilled"&&r.value!==null&&n.push(r.value);return n.sort((r,o)=>or(r.id,o.id))}no();Oi();ao();Li();Rr();ft();u();ft();Re();function xm(t){return t.charAt(0).toUpperCase()+t.slice(1)}async function Bd(){return new Promise(t=>{child_process.execFile("opencode",["models"],{timeout:5e3,maxBuffer:1048576},(n,r)=>{if(n){t([]);return}let o=r.split(`
398
- `).map(i=>i.trim()).filter(i=>i.length>0).map(i=>({id:i}));t(o);}).on("error",()=>t([]));})}function Rm(t,e,n){if(!e.meta)return null;let r=e.meta.capabilities??{},o=Ze(t),i=o.length>0?o:e.meta.models??[],s=n!==void 0?_n(n,i):i,a=pr(`cli/${t}`),d=Oe(t).providerOptions??[];return {id:`cli/${t}`,name:e.meta.displayName??xm(t),modes:yn(t),effort:Rt(t),models:kn(s),modelOverrides:vs(t),...d.length>0?{providerOptions:d}:{},...a!==void 0?{defaults:a}:{},capabilities:{loadSession:r.loadSession??false,resume:r.resume??false,image:r.image??false,audio:r.audio??false,mcp:r.mcp??false}}}async function bm(t={}){let e=t.includeOpencodeRuntimeModels?await Bd():void 0,n=[];for(let[r,o]of Object.entries(exports.BUILTIN_ADAPTERS)){let s=Rm(r,o,r==="opencode"?e:void 0);s&&n.push(s);}return n.sort((r,o)=>or(r.id,o.id))}u();var Yi=0;function Tm(t){let e=t.meta?.taskId,n=e?` taskId=${e}`:"";if(t.ok)return `Task completed:${n}
397
+ `,frontmatter:o}}async function jd(t,e){let n=X.join(t,"docs","wi");return await Wa.promises.mkdir(n,{recursive:true}),Lg(n,async()=>{let{compact:r,iso:o}=Og(new Date),i=`WI-${r}-`,s=await jg(n),a=$g(s,i),d=[],c=[];try{let l=[];for(let m of e){let h;for(let v=0;v<999;v++,a++){let _=`WI-${r}-${String(a).padStart(3,"0")}`;if(Bg(s,_))continue;let w=await Fg(n,_);if(!w.claimed)continue;let x=Dg(m.title),b=x?`${_}-${x}.md`:`${_}.md`,L=X.resolve(n,b);if(Ng(n,L),await Wa.promises.access(L).then(()=>!0,()=>!1)){await Wa.promises.unlink(w.lockPath).catch(()=>{});continue}c.push(w.lockPath),h={item:m,wiId:_,filename:b,fullPath:L};break}if(!h)throw new re("Failed to allocate a unique WI id");l.push(h),s.push(h.filename);}let f=new Map;for(let m of l)m.item.key&&f.set(m.item.key,m.wiId);let g=[];for(let m of l){let k=zg(m.item.depends_on,f),h={...m.item,depends_on:k},v=Gg(h,m.wiId,o);await Wa.promises.writeFile(m.fullPath,v.raw,{encoding:"utf8",flag:"wx"}),d.push(m.fullPath);let _=await Wa.promises.stat(m.fullPath);g.push({summary:{wi_id:m.wiId,title:h.title,status:"draft",priority:"normal",assignee:h.assignee,depends_on:k,blocks:[],date:o,board:h.board&&h.board!==cn?h.board:void 0,source:h.source,screens:[],path:`docs/wi/${m.filename}`,mtime:_.mtimeMs},frontmatter:v.frontmatter,body:h.body});}return g}catch(l){throw await Promise.all(d.map(f=>Wa.promises.unlink(f).catch(()=>{}))),l}finally{await Promise.all(c.map(l=>Wa.promises.unlink(l).catch(()=>{})));}})}async function Vg(t,e){let[n]=await jd(t,[Hg(e)]);if(!n)throw new re("Failed to create WI");return n}async function Jg(t,e){return {created:await jd(t,qg(e))}}u();var Kg=new Set(["draft","approved","in-progress"]);function Xg(t,e){let n=e.batch.filter(Boolean);if(n.length===0)return {done:true};let r=new Set(e.exclude??[]),o=new Set(n),i=new Map(t.filter(f=>o.has(f.wi_id)).map(f=>[f.wi_id,f])),s=n.filter(f=>{let g=i.get(f);return g&&g.status!=="done"});if(s.length===0)return {done:true};for(let f of s){let g=i.get(f);if(g)for(let m of g.depends_on??[]){if(!o.has(m))continue;if(i.get(m)?.status==="cancelled")return {blocked:true,reason:`${f} depends on cancelled WI ${m}`}}}let a=new Map,d=new Map;for(let f of s)a.set(f,new Set),d.set(f,0);for(let f of s){let g=i.get(f);if(g)for(let m of g.depends_on??[])d.has(m)&&(a.get(m).add(f),d.set(f,(d.get(f)??0)+1));}let c=s.filter(f=>(d.get(f)??0)===0),l=[];for(let f=0;f<c.length;f++){let g=c[f];l.push(g);for(let m of a.get(g)??[]){let k=(d.get(m)??0)-1;d.set(m,k),k===0&&c.push(m);}}if(l.length!==s.length)return {cycle:s.filter(f=>(d.get(f)??0)>0)};for(let f of n){if(!s.includes(f)||r.has(f))continue;let g=i.get(f);if(!g||!Kg.has(g.status))continue;if(!(g.depends_on??[]).some(k=>{if(!o.has(k))return false;let h=i.get(k);return h?h.status!=="done":false}))return {pick:f}}return {done:true}}u();function sr(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function $d(t,e){let n={...t};for(let[r,o]of Object.entries(e))sr(o)&&sr(n[r])?n[r]=$d(n[r],o):n[r]=o;return n}function am(t){let e=t?.filePath??X.join(Ci.homedir(),".crewx","crewx.yaml"),n=null,r=null;function o(){try{return Wa.statSync(e).mtimeMs}catch{return null}}function i(){let s=o();if(s===null)return n=null,r=null,{};if(r!==null&&n===s)return r;let a=null;try{a=jsYaml.load(Wa.readFileSync(e,"utf-8"));}catch{a=null;}let d=sr(a)?a:{};return r=d,n=s,d}return {get path(){return e},read(){let s=i();return sr(s.settings)?s.settings:{}},update(s){let a=i(),d=sr(a.settings)?a.settings:{},c=$d(d,s),l={...a,settings:c};Wa.mkdirSync(X.dirname(e),{recursive:true});let f=`${e}.tmp`;return Wa.writeFileSync(f,jsYaml.dump(l)),Wa.renameSync(f,e),n=null,r=null,c}}}Lo();gr();u();Jt();var dm="https://api.crewx.dev/v1/models",cm=3600*1e3,Bd=0;async function lm(t){let e=t?.ttlMs??cm,n=Date.now();if(!(n-Bd<e)){Bd=n;try{let r=await fetch(t?.endpoint??dm);if(!r.ok)return;let o=await r.json();if(!o?.models||typeof o.models!="object")return;let i={};for(let[s,a]of Object.entries(o.models))a!=null&&(i[s]={input:a.input,cachedInput:a.cachedInput,output:a.output});ks(i);}catch{}}}u();be();Jt();wo();var um="https://api.crewx.dev/v1/models",pm=900*1e3,Fd=0;function et(t){return t!=null&&typeof t=="object"&&!Array.isArray(t)}function fm(t){return typeof t=="number"&&Number.isInteger(t)&&t>0}function gm(t){return typeof t=="string"&&hs.includes(t)}function mm(t){if(t===void 0)return [];if(!Array.isArray(t))return;let e=new Set,n=[];for(let r of t){if(!et(r)||typeof r.key!="string"||r.key.trim().length===0)return;let o=r.key.trim();if(e.has(o))return;if(e.add(o),r.type==="boolean"){n.push({key:o,type:"boolean"});continue}if(r.type!=="enum"||!Array.isArray(r.values)||r.values.length===0||r.values.some(i=>typeof i!="string"||i.length===0)||new Set(r.values).size!==r.values.length)return;n.push({key:o,type:"enum",values:[...r.values]});}return n}function hm(t,e){if(t===void 0)return;if(!et(t))return null;let n=new Map(e.map(o=>[o.key,o])),r={};for(let[o,i]of Object.entries(t)){let s=n.get(o);if(s){if(s.type==="boolean"&&typeof i!="boolean"||s.type==="enum"&&(typeof i!="string"||!s.values.includes(i)))return null;r[o]=i;}}return r}function ym(t){if(!et(t))return {};let e={};for(let[n,r]of Object.entries(t)){if(!et(r))continue;let o=r.input,i=r.output;typeof o!="number"||!Number.isFinite(o)||o<=0||typeof i!="number"||!Number.isFinite(i)||i<=0||(e[n]={inputPerMillionTokensUsd:o,outputPerMillionTokensUsd:i});}return e}function Hd(t,e){if(!et(t)||typeof t.mode!="string"||t.mode.length===0||typeof t.effort!="string"||t.effort.length===0)return;let n=hm(t.providerOptions,e);if(n!==null)return {mode:t.mode,effort:t.effort,...n!==void 0?{providerOptions:n}:{}}}function _m(t,e){let n=t.modelOverrides[e]?.effort;return Array.isArray(n)&&n.every(r=>typeof r=="string")?n:t.effort}function wm(t,e){if(!et(t)||t.version!==1||!et(t.providers))return {};let n={};for(let[r,o]of Object.entries(t.providers)){if(!/^cli\/[^/]+$/.test(r)||!et(o))continue;let i=e[r.slice(4)];if(!i||typeof o.model!="string"||o.model.length===0||!i.models.some(f=>f.id===o.model))continue;let s=i.providerOptions??[],a=Hd(o.query,s),d=Hd(o.execute,s);if(!a||!d)continue;let c=new Set(i.modes.map(f=>f.id));if(!c.has(a.mode)||!c.has(d.mode))continue;let l=_m(i,o.model);!l.includes(a.effort)||!l.includes(d.effort)||(n[r]={model:o.model,query:a,execute:d});}return n}async function km(t){let e=t?.ttlMs??pm,n=Date.now();if(!(n-Fd<e)){Fd=n;try{let r=await fetch(t?.endpoint??um);if(!r.ok){wn({});return}let o=await r.json();if(!o?.providers||typeof o.providers!="object"){wn({});return}let i={};for(let[s,a]of Object.entries(o.providers)){let d=Array.isArray(a);if(!d&&!et(a))continue;let c=d?[]:mm(a.providerOptions);if(c===void 0)continue;let l=d?a:Array.isArray(a.models)?a.models:[],f=d?[]:Array.isArray(a.modes)?a.modes:[],g=d?[]:Array.isArray(a.effort)?a.effort:[],m=d||!et(a.modelOverrides)?{}:a.modelOverrides,k=l.filter(h=>h!=null&&typeof h.id=="string").map(h=>({id:h.id,name:h.name??h.id,...h.description!=null?{description:h.description}:{},...fm(h.contextWindowTokens)?{contextWindowTokens:h.contextWindowTokens}:{},...gm(h.tier)?{tier:h.tier}:{},...h.recommended===!0?{recommended:!0}:{}}));i[s]={models:k,modes:f.filter(h=>h!=null&&typeof h.id=="string").map(h=>({id:h.id,name:h.name??h.id,...h.description!=null?{description:h.description}:{}})),effort:g.filter(h=>typeof h=="string"),modelOverrides:m,providerOptions:c};}xo(i),vs(ym(o.models)),wn(wm(o.defaults,i));}catch{wn({});}}}u();function vm(t,e){let n=t.skills?.include;if(n===void 0)return [...e];if(n.length===0)return [];let r=new Set(n);return e.filter(o=>r.has(o))}u();var es=["codex","claude","grok","opencode","antigravity","copilot"];function Em(t){let e=t.indexOf("/");return e===-1?t:t.slice(e+1)}function ts(t){let e=Em(t),n=es.indexOf(e);return n===-1?es.length:n}function ar(t,e){return ts(t)-ts(e)}var Rm=new Set(["claude","copilot","codex","grok","opencode"]);function xm(t){if(!t)return "";if(t.startsWith("acp/")){let e=t.slice(4);if(Rm.has(e))return `cli/${e}`}return t}be();ze();Mi();Ui();u();Li();yt();u();io();uo();be();var bm="model",Tm="mode",Am="thought_level";function ns(t){if(t.length===0)return [];if(t[0]?.group!=null){let e=[];for(let n of t)for(let r of n.options??[])e.push(r);return e}return t}function Im(t,e){let n=new Map;for(let r of [...t,...e])n.has(r.id)||n.set(r.id,r);return Array.from(n.values())}function Pm(t,e,n,r){let o=n.agentInfo?.name,i=e??o??t,s=r.configOptions??[],d=(r.modes?.availableModes??[]).map(_=>({id:_.id,name:_.name,..._.description!=null?{description:_.description}:{}})),c=[];for(let _ of s)if(_.category?.trim().toLowerCase()===Tm&&_.options!=null)for(let w of ns(_.options))w.value!=null&&c.push({id:w.value,name:w.name??w.value});let l=Im(d,c),f=[];for(let _ of s)if(_.category?.trim().toLowerCase()===Am&&_.type==="select")for(let w of ns(_.options??[]))w.value!=null&&f.push(w.value);if(t==="claude"){let _=Rn(vn()),w=Wd(n);return qd(t,{models:_,modes:l,availableModelsCount:0,configModelsCount:0,skipModelWarn:true}),{id:`acp/${t}`,name:i,modes:l,effort:f,models:_,capabilities:w}}let m=(r.models?.availableModels??[]).map(_=>({id:_.modelId})),k=[];for(let _ of s)if(_.category?.trim().toLowerCase()===bm&&_.options!=null)for(let w of ns(_.options))w.value!=null&&k.push({id:w.value,...w.name!=null?{name:w.name}:{}});let h=Rn(En(m,k));qd(t,{models:h,modes:l,availableModelsCount:m.length,configModelsCount:k.length,skipModelWarn:false});let v=Wd(n);return {id:`acp/${t}`,name:i,modes:l,effort:f,models:h,capabilities:v}}function Wd(t){let e=t.agentCapabilities??{};return {loadSession:e.loadSession??false,image:e.promptCapabilities?.image??false,audio:e.promptCapabilities?.audio??false,mcp:e.mcpCapabilities!=null}}function qd(t,e){!e.skipModelWarn&&e.models.length===0&&console.warn(`[acp] ${t} meta: models empty (availableModels=${e.availableModelsCount}, configOptions[model]=${e.configModelsCount})`),e.modes.length===0&&console.warn(`[acp] ${t} meta: modes empty`);}async function zd(t){let e=exports.ACP_ADAPTERS[t];if(!e)return null;let n=e.meta?.displayName,r=new exports.AcpConnection({spawn:e.spawn,cwd:process.cwd()});try{await r.connect(e.clientInfo);let o=r.initResponse;if(!o)return null;let i=e.buildSessionParams({cwd:process.cwd()}),s=await r.newSessionRaw(i);return Pm(t,n,o,s)}catch(o){return console.warn(`[acp] ${t} meta query failed: ${o instanceof Error?o.message:String(o)}`),null}finally{await r.dispose();}}async function Cm(){let t=Object.keys(exports.ACP_ADAPTERS),e=await Promise.allSettled(t.map(r=>zd(r))),n=[];for(let r of e)r.status==="fulfilled"&&r.value!==null&&n.push(r.value);return n.sort((r,o)=>ar(r.id,o.id))}io();ji();uo();Wi();Ar();ht();u();ht();be();function Om(t){return t.charAt(0).toUpperCase()+t.slice(1)}async function Gd(){return new Promise(t=>{child_process.execFile("opencode",["models"],{timeout:5e3,maxBuffer:1048576},(n,r)=>{if(n){t([]);return}let o=r.split(`
398
+ `).map(i=>i.trim()).filter(i=>i.length>0).map(i=>({id:i}));t(o);}).on("error",()=>t([]));})}function Dm(t,e,n){if(!e.meta)return null;let r=e.meta.capabilities??{},o=rt(t),i=o.length>0?o:e.meta.models??[],s=n!==void 0?En(n,i):i,a=mr(`cli/${t}`),d=De(t).providerOptions??[];return {id:`cli/${t}`,name:e.meta.displayName??Om(t),modes:kn(t),effort:It(t),models:Rn(s),modelOverrides:As(t),...d.length>0?{providerOptions:d}:{},...a!==void 0?{defaults:a}:{},capabilities:{loadSession:r.loadSession??false,resume:r.resume??false,image:r.image??false,audio:r.audio??false,mcp:r.mcp??false}}}async function Nm(t={}){let e=t.includeOpencodeRuntimeModels?await Gd():void 0,n=[];for(let[r,o]of Object.entries(exports.BUILTIN_ADAPTERS)){let s=Dm(r,o,r==="opencode"?e:void 0);s&&n.push(s);}return n.sort((r,o)=>ar(r.id,o.id))}u();var rs=0;function Mm(t){let e=t.meta?.taskId,n=e?` taskId=${e}`:"";if(t.ok)return `Task completed:${n}
399
399
 
400
400
  ${t.data}`;let r=t.error?.message??"Unknown error";return `Task failed:${n}
401
- Error: ${r}`}function Am(t){let e=Array.from(t.agents.keys());return {name:"delegate_to_agent",description:`Delegate a task to another agent. Available agents: ${e.join(", ")}`,parameters:{type:"object",properties:{agent:{type:"string",description:`Agent ID to delegate to. One of: ${e.join(", ")}`},message:{type:"string",description:"Task description for the target agent"},mode:{type:"string",description:'Execution mode: "query" for questions, "execute" for actions. Default: query'}},required:["agent","message"]},execute:async n=>{if(Yi>=3)return "Error: Maximum delegation depth (3) reached. Cannot delegate further.";let r=n.agent,o=n.message,i=n.mode??"query";if(!e.includes(r))return `Error: Unknown agent "${r}". Available: ${e.join(", ")}`;Yi++;try{let s=i==="execute"?await t.execute(r,o):await t.query(r,o);return Tm(s)}finally{Yi--;}}}}u();var jd=typeof process<"u"?process.env:{};function Im(){return jd.CREWX_CLI||"npx crewx"}function Pm(){return jd.CREWX_WORKSPACE||(typeof process<"u"?process.cwd():"/")}u();u();u();var we="[REDACTED]",Fd="[PATH]";function Qi(t){if(typeof t!="string")return;let e=t.trim();if(e)return e=e.replace(/^\s*at\s+[^\r\n]+(?:\r?\n|$)/gim,""),e=e.replace(/(^|[\r\n])\s*(?:authorization|proxy-authorization|x-api-key|x-goog-api-key|x-auth-token|cookie|set-cookie)\s*:\s*[^\r\n]*/gim,`$1[HTTP HEADER ${we}]`),e=Sm(e),e=e.replace(/\b(?:Bearer|Basic)\s+[A-Za-z0-9._~+\-/]+=*/gi,`${we}`),e=e.replace(/\bsk-[A-Za-z0-9][A-Za-z0-9_-]*/g,we),e=e.replace(/\bghp_[A-Za-z0-9][A-Za-z0-9_-]*/g,we),e=e.replace(/\bxoxb-[A-Za-z0-9-]+/g,we),e=e.replace(/\bxoxp-[A-Za-z0-9-]+/g,we),e=e.replace(/\bAKIA[0-9A-Z]{12,}\b/g,we),e=e.replace(/\bgithub_pat_[A-Za-z0-9_]+/g,we),e=e.replace(/\bgho_[A-Za-z0-9_]+/g,we),e=e.replace(/\bAIza[A-Za-z0-9_-]{20,}\b/g,we),e=e.replace(/\beyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/g,we),e=e.replace(/\b(?:authorization|api[_ -]?key|access[_ -]?token|auth[_ -]?token|refresh[_ -]?token|token|secret|password)\s*([:=])\s*["']?[^\s,;&"']+/gi,(n,r)=>`${we}${r}${we}`),e=e.replace(/([?&](?:api[_-]?key|access[_-]?token|token)=)[^&\s]+/gi,`$1${we}`),e=e.replace(/(?:\/(?:Users|home|private|var\/folders|tmp|workspace|workspaces|Volumes|opt|etc|srv|Applications)\/[^\s"'`),;]+)/g,Fd),e=e.replace(/\b[A-Z]:\\(?:Users|home|Windows|Program Files|workspace|workspaces)\\[^\s"'`),;]*/gi,Fd),e=e.replace(/[\r\n]{3,}/g,`
401
+ Error: ${r}`}function Um(t){let e=Array.from(t.agents.keys());return {name:"delegate_to_agent",description:`Delegate a task to another agent. Available agents: ${e.join(", ")}`,parameters:{type:"object",properties:{agent:{type:"string",description:`Agent ID to delegate to. One of: ${e.join(", ")}`},message:{type:"string",description:"Task description for the target agent"},mode:{type:"string",description:'Execution mode: "query" for questions, "execute" for actions. Default: query'}},required:["agent","message"]},execute:async n=>{if(rs>=3)return "Error: Maximum delegation depth (3) reached. Cannot delegate further.";let r=n.agent,o=n.message,i=n.mode??"query";if(!e.includes(r))return `Error: Unknown agent "${r}". Available: ${e.join(", ")}`;rs++;try{let s=i==="execute"?await t.execute(r,o):await t.query(r,o);return Mm(s)}finally{rs--;}}}}u();var Vd=typeof process<"u"?process.env:{};function Lm(){return Vd.CREWX_CLI||"npx crewx"}function jm(){return Vd.CREWX_WORKSPACE||(typeof process<"u"?process.cwd():"/")}u();u();u();var we="[REDACTED]",Jd="[PATH]";function os(t){if(typeof t!="string")return;let e=t.trim();if(e)return e=e.replace(/^\s*at\s+[^\r\n]+(?:\r?\n|$)/gim,""),e=e.replace(/(^|[\r\n])\s*(?:authorization|proxy-authorization|x-api-key|x-goog-api-key|x-auth-token|cookie|set-cookie)\s*:\s*[^\r\n]*/gim,`$1[HTTP HEADER ${we}]`),e=Bm(e),e=e.replace(/\b(?:Bearer|Basic)\s+[A-Za-z0-9._~+\-/]+=*/gi,`${we}`),e=e.replace(/\bsk-[A-Za-z0-9][A-Za-z0-9_-]*/g,we),e=e.replace(/\bghp_[A-Za-z0-9][A-Za-z0-9_-]*/g,we),e=e.replace(/\bxoxb-[A-Za-z0-9-]+/g,we),e=e.replace(/\bxoxp-[A-Za-z0-9-]+/g,we),e=e.replace(/\bAKIA[0-9A-Z]{12,}\b/g,we),e=e.replace(/\bgithub_pat_[A-Za-z0-9_]+/g,we),e=e.replace(/\bgho_[A-Za-z0-9_]+/g,we),e=e.replace(/\bAIza[A-Za-z0-9_-]{20,}\b/g,we),e=e.replace(/\beyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/g,we),e=e.replace(/\b(?:authorization|api[_ -]?key|access[_ -]?token|auth[_ -]?token|refresh[_ -]?token|token|secret|password)\s*([:=])\s*["']?[^\s,;&"']+/gi,(n,r)=>`${we}${r}${we}`),e=e.replace(/([?&](?:api[_-]?key|access[_-]?token|token)=)[^&\s]+/gi,`$1${we}`),e=e.replace(/(?:\/(?:Users|home|private|var\/folders|tmp|workspace|workspaces|Volumes|opt|etc|srv|Applications)\/[^\s"'`),;]+)/g,Jd),e=e.replace(/\b[A-Z]:\\(?:Users|home|Windows|Program Files|workspace|workspaces)\\[^\s"'`),;]*/gi,Jd),e=e.replace(/[\r\n]{3,}/g,`
402
402
 
403
- `).trim(),Cm(e,1024)||void 0}function Cm(t,e){let n=new TextEncoder;if(n.encode(t).byteLength<=e)return t;let r="",o=0;for(let i of t){let s=n.encode(i).byteLength;if(o+s>e)break;r+=i,o+=s;}return r}function Sm(t){let e=/\b(?:request|response|http)?\s*body\s*[:=]\s*/gim,n="",r=0,o;for(;(o=e.exec(t))!==null;){if(o.index<r)continue;let i=o.index+o[0].length,s=Om(t,i),a=s>=0?s:t.indexOf(`
403
+ `).trim(),$m(e,1024)||void 0}function $m(t,e){let n=new TextEncoder;if(n.encode(t).byteLength<=e)return t;let r="",o=0;for(let i of t){let s=n.encode(i).byteLength;if(o+s>e)break;r+=i,o+=s;}return r}function Bm(t){let e=/\b(?:request|response|http)?\s*body\s*[:=]\s*/gim,n="",r=0,o;for(;(o=e.exec(t))!==null;){if(o.index<r)continue;let i=o.index+o[0].length,s=Fm(t,i),a=s>=0?s:t.indexOf(`
404
404
  `,i)>=0?t.indexOf(`
405
- `,i):t.length;n+=t.slice(r,o.index),n+=`[HTTP BODY ${we}]`,r=a;}return n+t.slice(r)}function Om(t,e){let n=t[e];if(n==='"'||n==="'")return Nm(t,e,n);if(n!=="{"&&n!=="[")return -1;let r=[],o,i=false;for(let s=e;s<t.length;s+=1){let a=t[s];if(o){i?i=false:a==="\\"?i=true:a===o&&(o=void 0);continue}if(a==='"'||a==="'"){o=a;continue}if(a==="{"||a==="["){r.push(a);continue}if(a!=="}"&&a!=="]")continue;let d=r.pop();if(a==="}"&&d!=="{"||a==="]"&&d!=="[")return -1;if(r.length===0)return s+1}return -1}function Nm(t,e,n){let r=false;for(let o=e+1;o<t.length;o+=1){let i=t[o];if(r)r=false;else if(i==="\\")r=true;else if(i===n)return o+1}return -1}var Dm=new Set(["USAGE_LIMITED","CONTEXT_WINDOW_EXCEEDED","INPUT_TOO_LARGE","MODEL_NOT_SUPPORTED","MODEL_AT_CAPACITY","AUTH_REQUIRED","CLI_NOT_AVAILABLE","CLI_UPDATE_REQUIRED","AGENT_NOT_FOUND","PERMISSION_OR_TRUST","TIMEOUT_OR_STUCK","NETWORK_OR_PROVIDER_TRANSIENT","PROVIDER_CONFIGURATION","PROCESS_FAILED"]),Mm={QUOTA_EXHAUSTED:"USAGE_LIMITED",RATE_LIMITED:"USAGE_LIMITED",AUTH_REQUIRED:"AUTH_REQUIRED",TIMEOUT_IDLE:"TIMEOUT_OR_STUCK",TIMEOUT_TOTAL:"TIMEOUT_OR_STUCK",PROVIDER_NOT_FOUND:"PROVIDER_CONFIGURATION",INVALID_PROVIDER_FORMAT:"PROVIDER_CONFIGURATION",PROVIDER_CRASHED:"PROCESS_FAILED",EMPTY_OUTPUT:"PROCESS_FAILED"},Um=[{code:"USAGE_LIMITED",pattern:/(?:rate[ _-]?limit|quota|usage[ /_-]?limit|usage exhausted|too many requests|429\b)/i},{code:"CONTEXT_WINDOW_EXCEEDED",pattern:/context (?:window|length)|maximum context|context[_ -]?window[_ -]?exceeded|too many tokens/i},{code:"INPUT_TOO_LARGE",pattern:/input[_ -]?(?:is[_ -]?)?too[_ -]?large|prompt (?:is )?too (?:large|long)|request[_ -]?(?:is[_ -]?)?too[_ -]?large|payload[_ -]?(?:is[_ -]?)?too[_ -]?large|maximum input/i},{code:"MODEL_AT_CAPACITY",pattern:/(?:model|service|provider).*(?:at capacity|overloaded|temporarily busy)|at capacity|overloaded/i},{code:"MODEL_NOT_SUPPORTED",pattern:/(?:model|invalid_request_error).*(?:not[ _-]?supported|unsupported|does[ _-]?not[ _-]?exist|not[ _-]?found|invalid)|model[_-]?not[_-]?(?:found|supported)/i},{code:"AUTH_REQUIRED",pattern:/(?:401\b|unauthori[sz]ed|not logged in|login required|sign[ -]?in required|api key (?:is )?(?:missing|invalid|required)|authentication required)/i},{code:"CLI_UPDATE_REQUIRED",pattern:/(?:requires? a newer version|update (?:your )?cli|cli version.*(?:old|outdated|unsupported)|version mismatch)/i},{code:"CLI_NOT_AVAILABLE",pattern:/(?:ENOENT|command not found|executable.*not found|cli.*(?:not installed|unavailable)|is .* installed\?)/i},{code:"AGENT_NOT_FOUND",pattern:/agent[_ -]?not[_ -]?found|unknown agent/i},{code:"PERMISSION_OR_TRUST",pattern:/(?:permission denied|operation not permitted|workspace trust|not trusted|access denied|EACCES|EPERM)/i},{code:"TIMEOUT_OR_STUCK",pattern:/(?:timeout|timed out|took too long|stuck|idle timeout|ETIMEDOUT)/i},{code:"NETWORK_OR_PROVIDER_TRANSIENT",pattern:/(?:network (?:unreachable|error)|connection (?:reset|refused|closed)|ECONN(?:RESET|REFUSED|ABORTED)|service unavailable|upstream.*(?:5\d\d|error)|provider.*(?:5\d\d|unavailable|down)|\b5\d\d\b)/i},{code:"PROVIDER_CONFIGURATION",pattern:/(?:invalid provider|unsupported provider|provider namespace|provider configuration|provider config|missing provider)/i}];function Lm(t){try{if(!vt(t)||t.status!=="failed")return Zi();let e=$m(t.error);if(ns(e.message))return Zi();let n=Se(t.providerId)??e.provider??null,r=jm(t.logs),o=Wd(e.code);if(o)return ir(o,n,e.message,e);let i=lo(e.providerCode)??lo(e.code),s=i?ts(i,e.message):void 0;if(s)return ir(s,n,e.message,e,i);let a=Fm(r);if(!Bm(e)&&a&&(a.type==="user_stop"||ns(a.message)))return Zi();if(a){let c=Hm(a.code,a.providerCode,a.message);if(c)return ir(c,n,a.message??e.message,e,a.providerCode??a.code,a,a.structuredFailure?"terminal":"envelope")}let d=Wm(e.message,r);return d?ir(d.code,n,d.message,e,d.terminal?.providerCode??d.terminal?.code,d.terminal,d.terminal?.structuredFailure?"terminal":"envelope"):ir("PROCESS_FAILED",n,e.message,e)}catch{return {errorCode:"PROCESS_FAILED",errorProvider:null}}}function Zi(){return {errorCode:null,errorProvider:null}}function ir(t,e,n,r,o,i,s="envelope"){let a={};if(i?.resetAt!==void 0&&(a.resetAt=i.resetAt),r?.model&&(a.model=r.model),i?.type&&(a.upstreamType=i.type),o&&(a.upstreamCode=o),t==="CLI_NOT_AVAILABLE"||t==="CLI_UPDATE_REQUIRED"){let f=e?.startsWith("cli/")?e.slice(4):void 0;f&&(a.cliName=f);}let d=s==="terminal"?n:r?.message,c=s==="terminal"?i?.structuredFailure?d:void 0:r?.isEnvelope?d:void 0,l=Qi(c);return l&&(a.technicalMessage=l),Object.keys(a).length>0?{errorCode:t,errorProvider:e,errorMeta:a}:{errorCode:t,errorProvider:e}}function $m(t){let e=typeof t=="string"?ln(t):t;return vt(e)?{isEnvelope:true,code:Se(e.code),providerCode:Se(e.providerCode),message:Se(e.message)??Se(e.error),provider:Se(e.provider)??Se(e.errorProvider),model:Se(e.model)}:{isEnvelope:false,...typeof t=="string"&&t.trim()?{message:t.trim()}:{}}}function ln(t){try{return JSON.parse(t)}catch{return}}function Bm(t){return !!(t.code||t.providerCode||t.message)}function jm(t){let e=[];if(typeof t=="string"){let n=ln(t);if(Array.isArray(n))e.push(...n);else for(let r of t.split(/\r?\n/)){let o=ln(r.trim());o!==void 0&&e.push(o);}}else Array.isArray(t)?e.push(...t):vt(t)&&e.push(t);return e.flatMap(cn)}function cn(t){if(!vt(t))return [];let e=Se(t.type),n=Se(t.message);if(n&&!e){let o=ln(n);if(Array.isArray(o))return o.flatMap(cn);if(vt(o))return cn(o);let i=n.split(/\r?\n/).map(s=>ln(s.trim())).filter(s=>vt(s));return i.length>0?i.flatMap(cn):t.level==="stderr"?[{type:"stderr",message:n,rank:1,structuredFailure:false}]:cn({type:"info",content:n})}if(e==="rate_limit_event"){let o=Hd(t.rate_limit_info);return Se(o?.status)!=="rejected"?[]:[{type:e,code:"RATE_LIMITED",message:sr(o?.message,t.message),resetAt:qm(o?.resetsAt),rank:4,structuredFailure:true}]}if(e==="turn.failed"||e==="error"){let o=Hd(t.error),i=sr(o?.message,o?.detail,t.message,t.errorMessage,t.content),s=sr(o?.code,t.code,t.errorCode);return [{type:e,code:s,providerCode:sr(o?.providerCode,t.providerCode),message:i,rank:e==="turn.failed"?3:2,structuredFailure:true}]}if(e==="text"&&typeof t.content=="string"){let o=ln(t.content);if(vt(o))return cn(o)}let r=sr(t.errorMessage,t.content);return r&&ns(r)?[{type:"user_stop",message:r,rank:1,structuredFailure:false}]:r&&/(?:turn\.failed|type:error)/i.test(r)?[{type:r.match(/turn\.failed/i)?"turn.failed":"error",message:r,rank:3,structuredFailure:false}]:[]}function Fm(t){return [...t].sort((e,n)=>n.rank-e.rank)[0]}function Hm(t,e,n){let r=Wd(t);if(r)return r;if(t){let o=ts(t,n);if(o)return o}if(e){let o=ts(e,n);if(o)return o}return es(n)}function Wm(t,e){let n=es(t);if(n)return {code:n,message:t};for(let r of [...e].sort((o,i)=>i.rank-o.rank)){let o=es(r.message);if(o)return {code:o,message:r.message,terminal:r}}}function es(t){if(!(typeof t!="string"||!t.trim()))return Um.find(e=>e.pattern.test(t))?.code}function ts(t,e){let n=lo(t)??t;if(n==="MODEL_UNAVAILABLE")return /(?:capacity|overloaded|busy)/i.test(e??"")?"MODEL_AT_CAPACITY":"MODEL_NOT_SUPPORTED";if(n!=="UNKNOWN")return Mm[n]}function Wd(t){let e=lo(t);return e&&Dm.has(e)?e:void 0}function lo(t){return typeof t=="string"&&t.trim()?t.trim().toUpperCase():void 0}function ns(t){return t?/\b(?:stopped|killed|aborted|cancelled|canceled)\s+by\s+user\b/i.test(t)||/사용자에 의해 중지됨/.test(t)||/\b(?:SIGTERM\s+143|143\s+SIGTERM)\b/i.test(t):false}function vt(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function Hd(t){return vt(t)?t:void 0}function Se(t){return typeof t=="string"&&t.trim()?t.trim():void 0}function qm(t){return typeof t=="string"||typeof t=="number"&&Number.isFinite(t)?t:void 0}function sr(...t){return t.map(Se).find(e=>!!e)}u();var zm=/^[a-zA-Z0-9._-]+$/,rs=class{constructor(e){this.storage=e;}storage;listBoxes(e){this.validateId(e);let r=this.storage.listBoxes(e).map(o=>this.toBoxResponse(o));return {boxes:r,total:r.length}}getBox(e,n){this.validateId(e),this.validateId(n);let r=this.storage.findBox(e,n);return r?this.toBoxResponse(r):null}createBox(e,n){this.validateId(e);let r=this.generateBoxId(),o=new Date().toISOString(),i=this.storage.insertBox(e,{id:r,seq:n.seq,firstTaskId:n.firstTaskId,midTaskId:n.midTaskId,lastTaskId:n.lastTaskId,taskCount:n.taskCount,summary:n.summary??null,sourceTokens:n.sourceTokens,summaryTokens:n.summaryTokens??null,createdAt:o});return this.toBoxResponse(i)}toBoxResponse(e){return {id:e.id,threadId:e.thread_id,seq:e.seq,firstTaskId:e.first_task_id,lastTaskId:e.last_task_id,taskCount:e.task_count,sourceTokens:e.source_tokens,summaryTokens:e.summary_tokens,summary:e.summary,previewFirst:this.storage.getTaskPreview(e.first_task_id,200),previewMid:this.storage.getTaskPreview(e.mid_task_id,200),previewLast:this.storage.getTaskPreview(e.last_task_id,200),createdAt:e.created_at}}validateId(e){if(!zm.test(e))throw new Error(`Invalid ID format: ${e}`)}generateBoxId(){return it("box")}};u();function Gm(t,e,n,r,o){let{maxTokens:i,hotzoneRatio:s,warmzoneRatio:a}=r,d=i*s,c=i*a,l=d+c,f=e.getThreadMessages(t),g=[],m=0,k=false,h=[];for(let _=0;_<f.length;_+=2){let R=f[_],b=f[_+1],L=R?.content||"",A=b?.content||"",Z=o.countTokens(L+A),P=[];R&&P.push(R),b&&P.push(b),h.push({messages:P,tokens:Z});}for(let _=h.length-1;_>=0;_--){let R=h[_];if(m+R.tokens>d){k=true;break}m+=R.tokens,g.unshift(...R.messages);}let v=[],w=0;if(k&&c>0)try{let{boxes:_}=n.listBoxes(t);for(let R=_.length-1;R>=0;R--){let b=_[R],L=b.summaryTokens??b.sourceTokens;if(w+L>c)break;w+=L,v.unshift({boxId:b.id,seq:b.seq,taskCount:b.taskCount,sourceTokens:b.sourceTokens,summary:b.summary,previewFirst:b.previewFirst,previewMid:b.previewMid,previewLast:b.previewLast,createdAt:b.createdAt});}}catch(_){if(_ instanceof Error&&!/not found/i.test(_.message))throw _}return {hot:g,warm:v,hotTokens:m,warmTokens:w,hotOverflow:k,totalBudget:l,config:{maxTokens:i,hotzoneRatio:s,warmzoneRatio:a}}}ft();Ct();u();var uo=class extends Error{constructor(n,r){super(`Task ${n} timed out after ${r}ms`);this.taskId=n;this.timeoutMs=r;this.name="ParallelRunnerTimeoutError";}taskId;timeoutMs},dr=class{constructor(e={}){this.defaults=e;}defaults;metrics={totalTasks:0,startedTasks:0,completedTasks:0,successCount:0,failureCount:0,totalDurationMs:0,averageDurationMs:0,throughput:0};async run(e,n={}){if(!Array.isArray(e))throw new TypeError("ParallelRunner.run expects an array of tasks");if(e.length===0)return this.metrics={totalTasks:0,startedTasks:0,completedTasks:0,successCount:0,failureCount:0,totalDurationMs:0,averageDurationMs:0,throughput:0},[];let r=this.mergeOptions(n),o=Math.max(1,r.maxConcurrency??5),i=r.timeoutMs,s=r.failFast??false,a=r.callbacks,d=r.evaluateTaskSuccess??(()=>true),c=[],l=0,f=0,g=0,m=false,k=0,h=perf_hooks.performance.now(),v=async P=>{a?.onTaskStart&&await a.onTaskStart(P),g+=1;let F=new AbortController,ce={signal:F.signal},X,re;typeof i=="number"&&Number.isFinite(i)&&i>0&&(re=new Promise((z,$)=>{X=setTimeout(()=>{let W=new uo(P.id,i);F.abort(W),$(W);},i);}));let H=perf_hooks.performance.now(),O=P.run(ce),te=re?Promise.race([O,re]):O;try{let z=await te,$=perf_hooks.performance.now(),W=$-H,fe=d(z,P),ee={taskId:P.id,success:fe,value:z,durationMs:W,startedAt:H,finishedAt:$,metadata:P.metadata,aborted:!1};c.push(ee),fe?l+=1:f+=1,a?.onTaskComplete&&await a.onTaskComplete(ee),s&&!fe&&(m=!0);}catch(z){let $=perf_hooks.performance.now(),W=$-H,fe=z instanceof Error?z:new Error(String(z)),ee={taskId:P.id,success:false,error:fe,durationMs:W,startedAt:H,finishedAt:$,metadata:P.metadata,aborted:F.signal.aborted};c.push(ee),f+=1,a?.onError&&await a.onError(P,fe,W),s&&(m=true);}finally{X&&clearTimeout(X),re&&O.catch(()=>{});}},w=async()=>{for(;!m;){let P=k;if(P>=e.length)break;k+=1;let F=e[P];if(!F||(await v(F),m))break}},_=Math.min(o,e.length),R=[];for(let P=0;P<_;P++)R.push(w());await Promise.all(R);let L=perf_hooks.performance.now()-h,A=c.length?c.reduce((P,F)=>P+F.durationMs,0)/c.length:0,Z=L>0?c.length/(L/1e3):c.length;return this.metrics={totalTasks:e.length,startedTasks:g,completedTasks:c.length,successCount:l,failureCount:f,totalDurationMs:L,averageDurationMs:A,throughput:Z},c}getMetrics(){return this.metrics}mergeOptions(e){return {maxConcurrency:e.maxConcurrency??this.defaults.maxConcurrency,timeoutMs:e.timeoutMs??this.defaults.timeoutMs,failFast:e.failFast??this.defaults.failFast,evaluateTaskSuccess:e.evaluateTaskSuccess??this.defaults.evaluateTaskSuccess,callbacks:this.mergeCallbacks(this.defaults.callbacks,e.callbacks)}}mergeCallbacks(e,n){if(!(!e&&!n))return {onTaskStart:async r=>{e?.onTaskStart&&await e.onTaskStart(r),n?.onTaskStart&&await n.onTaskStart(r);},onTaskComplete:async r=>{e?.onTaskComplete&&await e.onTaskComplete(r),n?.onTaskComplete&&await n.onTaskComplete(r);},onError:async(r,o,i)=>{e?.onError&&await e.onError(r,o,i),n?.onError&&await n.onError(r,o,i);}}}};u();u();var cr=class{async query(e){throw new Error("AgentRuntime.query is not implemented. Provide a subclass or mock AgentRuntime.prototype.query.")}async execute(e){throw new Error("AgentRuntime.execute is not implemented. Provide a subclass or mock AgentRuntime.prototype.execute.")}};var qd=3,zd=3e4,Gd=500,Vm=t=>{if(typeof t!="number"||Number.isNaN(t)||!Number.isFinite(t))return qd;let e=Math.floor(t);return e>0?e:qd},Jm=t=>t===void 0||typeof t!="number"||Number.isNaN(t)||t<=0?zd:t,Km=t=>{if(!t)return {maxRetries:0,retryDelay:Gd};let e=Number.isInteger(t.maxRetries)&&t.maxRetries>=0?t.maxRetries:0,n=typeof t.retryDelay=="number"&&t.retryDelay>=0?t.retryDelay:Gd;return {maxRetries:e,retryDelay:n}},os=t=>{let e=t.reason;return e instanceof Error?e:typeof e=="string"?new Error(e):new Error("Parallel operation aborted")},Xm=(t,e)=>t<=0?Promise.resolve():new Promise((n,r)=>{let o=setTimeout(()=>{e.removeEventListener("abort",i),n();},t),i=()=>{clearTimeout(o),r(os(e));};if(e.aborted){i();return}e.addEventListener("abort",i,{once:true});}),Ym=async(t,e,n)=>{let r,o;for(let i=0;i<=e.maxRetries;i++){if(n.aborted)throw os(n);try{let s=await t();if(r=s,s.success||i===e.maxRetries)return s}catch(s){if(o=s,n.aborted)throw os(n);if(i===e.maxRetries)throw s instanceof Error?s:new Error(String(s))}i<e.maxRetries&&await Xm(e.retryDelay,n);}if(r)return r;throw o?o instanceof Error?o:new Error(String(o)):new Error("Parallel helper encountered an unexpected state")},Vd=(t,e,n)=>{e.completed+=1,n?e.success+=1:e.failure+=1;try{t.onProgress?.(e.completed,e.total);}catch(r){process.env.NODE_ENV!=="production"&&console.warn("Parallel helper onProgress callback threw an error:",r);}},Qm=t=>t.map(n=>({metadata:n.metadata,taskResult:n})).slice().sort((n,r)=>n.metadata.index-r.metadata.index).map(({metadata:n,taskResult:r})=>{if(r.value){let i=r.value;return {...i,agentId:i.agentId??n.request.agentId,metadata:{...i.metadata,requestIndex:n.index,mode:n.mode}}}let o=r.error??new Error("Unknown error");return {agentId:n.request.agentId,content:o.message,success:false,metadata:{error:o.message,aborted:r.aborted??false,requestIndex:n.index,mode:n.mode}}}),Zm=t=>t.filter(e=>!e.success).map(e=>{let n=e.metadata;if(e.error instanceof Error)return {index:n.index,error:e.error};if(e.value&&!e.value.success){let r=String(e.value.metadata?.error??e.value.content??"Agent returned unsuccessful result");return {index:n.index,error:new Error(r)}}return {index:n.index,error:new Error("Unknown failure")}}),eh=(t,e)=>({onTaskComplete:async n=>{Vd(e,t,n.success);},onError:async()=>{Vd(e,t,false);}}),Jd=async(t,e,n={})=>{if(!Array.isArray(t))throw new TypeError("Parallel helpers expect an array of requests");if(t.length===0){let v={total:0,completed:0,successCount:0,failureCount:0,results:[],errors:[],metrics:{totalTasks:0,startedTasks:0,completedTasks:0,successCount:0,failureCount:0,totalDurationMs:0,averageDurationMs:0,throughput:0}};return n.onComplete?.(v),[]}let r=Vm(n.concurrency),o=Jm(n.timeout),i=Km(n.retryPolicy),s=new dr,a=new cr,d=t.map((h,v)=>({id:`${e}:${h.agentId??"anonymous"}:${v}`,metadata:{index:v,mode:e,request:h},run:w=>Ym(()=>e==="query"?a.query(h):a.execute(h),i,w.signal)})),c={completed:0,success:0,failure:0,total:t.length},l=await s.run(d,{maxConcurrency:r,timeoutMs:o,evaluateTaskSuccess:h=>h.success,callbacks:eh(c,n)}),f=Qm(l),g=Zm(l),m=s.getMetrics(),k={total:t.length,completed:t.length,successCount:f.filter(h=>h.success).length,failureCount:f.filter(h=>!h.success).length,results:f,errors:g,metrics:m};return n.onComplete?.(k),f},th=(t,e)=>Jd(t,"query",e),nh=(t,e)=>Jd(t,"execute",e);Fi();ji();Bi();$i();u();u();var po=class{capabilities={required:[]}};u();u();u();var Kd=2e3;function Xd(t){let e=t.replace(/[\x00-\x08\x0b\x0c\x0e-\x1f\x7f\u2028\u2029]/g,"");return e.length<=Kd?e:e.slice(0,Kd-11)+" [redacted]"}var lh=10*1024*1024,uh={b:1,kb:1024,mb:1024*1024,gb:1024*1024*1024};function is(t,e){return t===void 0?true:Array.isArray(t)?t.includes(e):t===e}function ph(t,e){return t===void 0?true:Array.isArray(t)?t.some(n=>e.includes(n)):e.includes(t)}function Qd(t){if(typeof t=="number")return t;let e=t.match(/^(\d+(?:\.\d+)?)\s*(b|kb|mb|gb)?$/i);if(!e)return 0;let n=parseFloat(e[1]),r=(e[2]??"b").toLowerCase();return Math.floor(n*(uh[r]??1))}function Zd(t){return typeof t=="string"}function ec(t){try{let e=Ua.statSync(t);return e.size>lh?(process.stderr.write(`[YamlHookPlugin] File too large for line count: ${t} (${e.size} bytes)
406
- `),null):Ua.readFileSync(t,"utf8").split(`
407
- `).length}catch{return null}}function tc(t){try{return Ua.statSync(t).size}catch{return null}}function fh(t,e,n){if(!t)return true;let r=e,o=r?.path??r?.file_path??r?.filePath??r?.filename;if(typeof o!="string")return false;if(Fe(o,t))return true;if(n&&o.startsWith("/")){let{relative:i,isAbsolute:s}=ge("path");if(s(o)){let a=i(n,o);if(a&&!a.startsWith("..")&&Fe(a,t))return true}}return false}function gh(t,e){return t?JSON.stringify(e).includes(t):true}function mh(t,e){if(!t)return true;try{let n=new RegExp(t),r=JSON.stringify(e);return n.test(r)}catch{return false}}function hh(t,e){if(!t)return true;try{let n=new RegExp(t),r=JSON.stringify(e);return n.test(r)}catch{return false}}function yh(t,e){if(t.pathSizeMin===void 0&&t.pathSizeMax===void 0)return true;let n=e,r=n?.path??n?.file_path??n?.filePath??n?.filename;if(typeof r!="string")return false;if(t.pathSizeMin!==void 0)if(Zd(t.pathSizeMin)){let o=tc(r);if(o===null||o<Qd(t.pathSizeMin))return false}else {let o=ec(r);if(o===null||o<t.pathSizeMin)return false}if(t.pathSizeMax!==void 0)if(Zd(t.pathSizeMax)){let o=tc(r);if(o===null||o>Qd(t.pathSizeMax))return false}else {let o=ec(r);if(o===null||o>t.pathSizeMax)return false}return true}function wh(t){let e=[],n=[];for(let r=0;r<t.length;r++){let o=t[r];if(!o||typeof o!="object"){n.push(`Hook at index ${r}: not an object, skipping`);continue}let i=o;if(typeof i.name!="string"||!i.name){n.push(`Hook at index ${r}: missing or invalid "name", skipping`);continue}let s=i.guide&&typeof i.guide=="object",a=i.deny&&typeof i.deny=="object",d=typeof i.plugin=="string";if(!s&&!a&&!d){n.push(`Hook "${i.name}": missing guide/deny/plugin, skipping`);continue}if(s&&typeof i.guide.say!="string"){n.push(`Hook "${i.name}": guide.say is required and must be string, skipping`);continue}if(a&&typeof i.deny.reason!="string"){n.push(`Hook "${i.name}": deny.reason is required and must be string, skipping`);continue}e.push(i);}return {valid:e,warnings:n}}var as=class extends po{name="@crewx/yaml-hook-plugin";version="0.1.0";capabilities={required:["inject"]};hooks;agentMap;constructor(e){super(),this.hooks=e.hooks,this.agentMap=new Map((e.agents??[]).map(n=>[n.id,n]));}async run(e){let n=[],r=process.env.CREWX_TASK_LOG_PATH,o=process.env.CREWX_HOOK_LOG_VERBOSE==="1";for(let i of this.hooks)if(this.matchEntryLevel(i,e)&&i.guide){if(!this.matchRuleLevel(i.guide,e)){o&&r&&this.appendHookLog(r,{rule:i.name,action:"pass",once:i.guide.once??false,ctx:e,matched:false});continue}i.guide.once&&this.hasFired(e.sessionId,i.name)||(i.guide.once&&this.markFired(e.sessionId,i.name),n.push(i.guide.say),r&&this.appendHookLog(r,{rule:i.name,action:"inject",once:i.guide.once??false,ctx:e,matched:true,message:i.guide.say}));}return n.length?e.inject(n.join(`
405
+ `,i):t.length;n+=t.slice(r,o.index),n+=`[HTTP BODY ${we}]`,r=a;}return n+t.slice(r)}function Fm(t,e){let n=t[e];if(n==='"'||n==="'")return Hm(t,e,n);if(n!=="{"&&n!=="[")return -1;let r=[],o,i=false;for(let s=e;s<t.length;s+=1){let a=t[s];if(o){i?i=false:a==="\\"?i=true:a===o&&(o=void 0);continue}if(a==='"'||a==="'"){o=a;continue}if(a==="{"||a==="["){r.push(a);continue}if(a!=="}"&&a!=="]")continue;let d=r.pop();if(a==="}"&&d!=="{"||a==="]"&&d!=="[")return -1;if(r.length===0)return s+1}return -1}function Hm(t,e,n){let r=false;for(let o=e+1;o<t.length;o+=1){let i=t[o];if(r)r=false;else if(i==="\\")r=true;else if(i===n)return o+1}return -1}var Wm=new Set(["USAGE_LIMITED","CONTEXT_WINDOW_EXCEEDED","INPUT_TOO_LARGE","MODEL_NOT_SUPPORTED","MODEL_AT_CAPACITY","AUTH_REQUIRED","CLI_NOT_AVAILABLE","CLI_UPDATE_REQUIRED","AGENT_NOT_FOUND","PERMISSION_OR_TRUST","TIMEOUT_OR_STUCK","NETWORK_OR_PROVIDER_TRANSIENT","PROVIDER_CONFIGURATION","PROCESS_FAILED"]),qm={QUOTA_EXHAUSTED:"USAGE_LIMITED",RATE_LIMITED:"USAGE_LIMITED",AUTH_REQUIRED:"AUTH_REQUIRED",TIMEOUT_IDLE:"TIMEOUT_OR_STUCK",TIMEOUT_TOTAL:"TIMEOUT_OR_STUCK",PROVIDER_NOT_FOUND:"PROVIDER_CONFIGURATION",INVALID_PROVIDER_FORMAT:"PROVIDER_CONFIGURATION",PROVIDER_CRASHED:"PROCESS_FAILED",EMPTY_OUTPUT:"PROCESS_FAILED"},zm=[{code:"USAGE_LIMITED",pattern:/(?:rate[ _-]?limit|quota|usage[ /_-]?limit|usage exhausted|too many requests|429\b)/i},{code:"CONTEXT_WINDOW_EXCEEDED",pattern:/context (?:window|length)|maximum context|context[_ -]?window[_ -]?exceeded|too many tokens/i},{code:"INPUT_TOO_LARGE",pattern:/input[_ -]?(?:is[_ -]?)?too[_ -]?large|prompt (?:is )?too (?:large|long)|request[_ -]?(?:is[_ -]?)?too[_ -]?large|payload[_ -]?(?:is[_ -]?)?too[_ -]?large|maximum input/i},{code:"MODEL_AT_CAPACITY",pattern:/(?:model|service|provider).*(?:at capacity|overloaded|temporarily busy)|at capacity|overloaded/i},{code:"MODEL_NOT_SUPPORTED",pattern:/(?:model|invalid_request_error).*(?:not[ _-]?supported|unsupported|does[ _-]?not[ _-]?exist|not[ _-]?found|invalid)|model[_-]?not[_-]?(?:found|supported)/i},{code:"AUTH_REQUIRED",pattern:/(?:401\b|unauthori[sz]ed|not logged in|login required|sign[ -]?in required|api key (?:is )?(?:missing|invalid|required)|authentication required)/i},{code:"CLI_UPDATE_REQUIRED",pattern:/(?:requires? a newer version|update (?:your )?cli|cli version.*(?:old|outdated|unsupported)|version mismatch)/i},{code:"CLI_NOT_AVAILABLE",pattern:/(?:ENOENT|command not found|executable.*not found|cli.*(?:not installed|unavailable)|is .* installed\?)/i},{code:"AGENT_NOT_FOUND",pattern:/agent[_ -]?not[_ -]?found|unknown agent/i},{code:"PERMISSION_OR_TRUST",pattern:/(?:permission denied|operation not permitted|workspace trust|not trusted|access denied|EACCES|EPERM)/i},{code:"TIMEOUT_OR_STUCK",pattern:/(?:timeout|timed out|took too long|stuck|idle timeout|ETIMEDOUT)/i},{code:"NETWORK_OR_PROVIDER_TRANSIENT",pattern:/(?:network (?:unreachable|error)|connection (?:reset|refused|closed)|ECONN(?:RESET|REFUSED|ABORTED)|service unavailable|upstream.*(?:5\d\d|error)|provider.*(?:5\d\d|unavailable|down)|\b5\d\d\b)/i},{code:"PROVIDER_CONFIGURATION",pattern:/(?:invalid provider|unsupported provider|provider namespace|provider configuration|provider config|missing provider)/i}];function Gm(t){try{if(!bt(t)||t.status!=="failed")return is();let e=Vm(t.error);if(ds(e.message))return is();let n=Oe(t.providerId)??e.provider??null,r=Km(t.logs),o=Xd(e.code);if(o)return dr(o,n,e.message,e);let i=fo(e.providerCode)??fo(e.code),s=i?as(i,e.message):void 0;if(s)return dr(s,n,e.message,e,i);let a=Xm(r);if(!Jm(e)&&a&&(a.type==="user_stop"||ds(a.message)))return is();if(a){let c=Ym(a.code,a.providerCode,a.message);if(c)return dr(c,n,a.message??e.message,e,a.providerCode??a.code,a,a.structuredFailure?"terminal":"envelope")}let d=Qm(e.message,r);return d?dr(d.code,n,d.message,e,d.terminal?.providerCode??d.terminal?.code,d.terminal,d.terminal?.structuredFailure?"terminal":"envelope"):dr("PROCESS_FAILED",n,e.message,e)}catch{return {errorCode:"PROCESS_FAILED",errorProvider:null}}}function is(){return {errorCode:null,errorProvider:null}}function dr(t,e,n,r,o,i,s="envelope"){let a={};if(i?.resetAt!==void 0&&(a.resetAt=i.resetAt),r?.model&&(a.model=r.model),i?.type&&(a.upstreamType=i.type),o&&(a.upstreamCode=o),t==="CLI_NOT_AVAILABLE"||t==="CLI_UPDATE_REQUIRED"){let f=e?.startsWith("cli/")?e.slice(4):void 0;f&&(a.cliName=f);}let d=s==="terminal"?n:r?.message,c=s==="terminal"?i?.structuredFailure?d:void 0:r?.isEnvelope?d:void 0,l=os(c);return l&&(a.technicalMessage=l),Object.keys(a).length>0?{errorCode:t,errorProvider:e,errorMeta:a}:{errorCode:t,errorProvider:e}}function Vm(t){let e=typeof t=="string"?fn(t):t;return bt(e)?{isEnvelope:true,code:Oe(e.code),providerCode:Oe(e.providerCode),message:Oe(e.message)??Oe(e.error),provider:Oe(e.provider)??Oe(e.errorProvider),model:Oe(e.model)}:{isEnvelope:false,...typeof t=="string"&&t.trim()?{message:t.trim()}:{}}}function fn(t){try{return JSON.parse(t)}catch{return}}function Jm(t){return !!(t.code||t.providerCode||t.message)}function Km(t){let e=[];if(typeof t=="string"){let n=fn(t);if(Array.isArray(n))e.push(...n);else for(let r of t.split(/\r?\n/)){let o=fn(r.trim());o!==void 0&&e.push(o);}}else Array.isArray(t)?e.push(...t):bt(t)&&e.push(t);return e.flatMap(pn)}function pn(t){if(!bt(t))return [];let e=Oe(t.type),n=Oe(t.message);if(n&&!e){let o=fn(n);if(Array.isArray(o))return o.flatMap(pn);if(bt(o))return pn(o);let i=n.split(/\r?\n/).map(s=>fn(s.trim())).filter(s=>bt(s));return i.length>0?i.flatMap(pn):t.level==="stderr"?[{type:"stderr",message:n,rank:1,structuredFailure:false}]:pn({type:"info",content:n})}if(e==="rate_limit_event"){let o=Kd(t.rate_limit_info);return Oe(o?.status)!=="rejected"?[]:[{type:e,code:"RATE_LIMITED",message:cr(o?.message,t.message),resetAt:Zm(o?.resetsAt),rank:4,structuredFailure:true}]}if(e==="turn.failed"||e==="error"){let o=Kd(t.error),i=cr(o?.message,o?.detail,t.message,t.errorMessage,t.content),s=cr(o?.code,t.code,t.errorCode);return [{type:e,code:s,providerCode:cr(o?.providerCode,t.providerCode),message:i,rank:e==="turn.failed"?3:2,structuredFailure:true}]}if(e==="text"&&typeof t.content=="string"){let o=fn(t.content);if(bt(o))return pn(o)}let r=cr(t.errorMessage,t.content);return r&&ds(r)?[{type:"user_stop",message:r,rank:1,structuredFailure:false}]:r&&/(?:turn\.failed|type:error)/i.test(r)?[{type:r.match(/turn\.failed/i)?"turn.failed":"error",message:r,rank:3,structuredFailure:false}]:[]}function Xm(t){return [...t].sort((e,n)=>n.rank-e.rank)[0]}function Ym(t,e,n){let r=Xd(t);if(r)return r;if(t){let o=as(t,n);if(o)return o}if(e){let o=as(e,n);if(o)return o}return ss(n)}function Qm(t,e){let n=ss(t);if(n)return {code:n,message:t};for(let r of [...e].sort((o,i)=>i.rank-o.rank)){let o=ss(r.message);if(o)return {code:o,message:r.message,terminal:r}}}function ss(t){if(!(typeof t!="string"||!t.trim()))return zm.find(e=>e.pattern.test(t))?.code}function as(t,e){let n=fo(t)??t;if(n==="MODEL_UNAVAILABLE")return /(?:capacity|overloaded|busy)/i.test(e??"")?"MODEL_AT_CAPACITY":"MODEL_NOT_SUPPORTED";if(n!=="UNKNOWN")return qm[n]}function Xd(t){let e=fo(t);return e&&Wm.has(e)?e:void 0}function fo(t){return typeof t=="string"&&t.trim()?t.trim().toUpperCase():void 0}function ds(t){return t?/\b(?:stopped|killed|aborted|cancelled|canceled)\s+by\s+user\b/i.test(t)||/사용자에 의해 중지됨/.test(t)||/\b(?:SIGTERM\s+143|143\s+SIGTERM)\b/i.test(t):false}function bt(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function Kd(t){return bt(t)?t:void 0}function Oe(t){return typeof t=="string"&&t.trim()?t.trim():void 0}function Zm(t){return typeof t=="string"||typeof t=="number"&&Number.isFinite(t)?t:void 0}function cr(...t){return t.map(Oe).find(e=>!!e)}u();var eh=/^[a-zA-Z0-9._-]+$/,cs=class{constructor(e){this.storage=e;}storage;listBoxes(e){this.validateId(e);let r=this.storage.listBoxes(e).map(o=>this.toBoxResponse(o));return {boxes:r,total:r.length}}getBox(e,n){this.validateId(e),this.validateId(n);let r=this.storage.findBox(e,n);return r?this.toBoxResponse(r):null}createBox(e,n){this.validateId(e);let r=this.generateBoxId(),o=new Date().toISOString(),i=this.storage.insertBox(e,{id:r,seq:n.seq,firstTaskId:n.firstTaskId,midTaskId:n.midTaskId,lastTaskId:n.lastTaskId,taskCount:n.taskCount,summary:n.summary??null,sourceTokens:n.sourceTokens,summaryTokens:n.summaryTokens??null,createdAt:o});return this.toBoxResponse(i)}toBoxResponse(e){return {id:e.id,threadId:e.thread_id,seq:e.seq,firstTaskId:e.first_task_id,lastTaskId:e.last_task_id,taskCount:e.task_count,sourceTokens:e.source_tokens,summaryTokens:e.summary_tokens,summary:e.summary,previewFirst:this.storage.getTaskPreview(e.first_task_id,200),previewMid:this.storage.getTaskPreview(e.mid_task_id,200),previewLast:this.storage.getTaskPreview(e.last_task_id,200),createdAt:e.created_at}}validateId(e){if(!eh.test(e))throw new Error(`Invalid ID format: ${e}`)}generateBoxId(){return Ve("box")}};u();function th(t,e,n,r,o){let{maxTokens:i,hotzoneRatio:s,warmzoneRatio:a}=r,d=i*s,c=i*a,l=d+c,f=e.getThreadMessages(t),g=[],m=0,k=false,h=[];for(let w=0;w<f.length;w+=2){let x=f[w],b=f[w+1],L=x?.content||"",A=b?.content||"",ee=o.countTokens(L+A),C=[];x&&C.push(x),b&&C.push(b),h.push({messages:C,tokens:ee});}for(let w=h.length-1;w>=0;w--){let x=h[w];if(m+x.tokens>d){k=true;break}m+=x.tokens,g.unshift(...x.messages);}let v=[],_=0;if(k&&c>0)try{let{boxes:w}=n.listBoxes(t);for(let x=w.length-1;x>=0;x--){let b=w[x],L=b.summaryTokens??b.sourceTokens;if(_+L>c)break;_+=L,v.unshift({boxId:b.id,seq:b.seq,taskCount:b.taskCount,sourceTokens:b.sourceTokens,summary:b.summary,previewFirst:b.previewFirst,previewMid:b.previewMid,previewLast:b.previewLast,createdAt:b.createdAt});}}catch(w){if(w instanceof Error&&!/not found/i.test(w.message))throw w}return {hot:g,warm:v,hotTokens:m,warmTokens:_,hotOverflow:k,totalBudget:l,config:{maxTokens:i,hotzoneRatio:s,warmzoneRatio:a}}}ht();Nt();u();var go=class extends Error{constructor(n,r){super(`Task ${n} timed out after ${r}ms`);this.taskId=n;this.timeoutMs=r;this.name="ParallelRunnerTimeoutError";}taskId;timeoutMs},ur=class{constructor(e={}){this.defaults=e;}defaults;metrics={totalTasks:0,startedTasks:0,completedTasks:0,successCount:0,failureCount:0,totalDurationMs:0,averageDurationMs:0,throughput:0};async run(e,n={}){if(!Array.isArray(e))throw new TypeError("ParallelRunner.run expects an array of tasks");if(e.length===0)return this.metrics={totalTasks:0,startedTasks:0,completedTasks:0,successCount:0,failureCount:0,totalDurationMs:0,averageDurationMs:0,throughput:0},[];let r=this.mergeOptions(n),o=Math.max(1,r.maxConcurrency??5),i=r.timeoutMs,s=r.failFast??false,a=r.callbacks,d=r.evaluateTaskSuccess??(()=>true),c=[],l=0,f=0,g=0,m=false,k=0,h=perf_hooks.performance.now(),v=async C=>{a?.onTaskStart&&await a.onTaskStart(C),g+=1;let F=new AbortController,ue={signal:F.signal},Q,oe;typeof i=="number"&&Number.isFinite(i)&&i>0&&(oe=new Promise((G,j)=>{Q=setTimeout(()=>{let W=new go(C.id,i);F.abort(W),j(W);},i);}));let H=perf_hooks.performance.now(),O=C.run(ue),ne=oe?Promise.race([O,oe]):O;try{let G=await ne,j=perf_hooks.performance.now(),W=j-H,me=d(G,C),te={taskId:C.id,success:me,value:G,durationMs:W,startedAt:H,finishedAt:j,metadata:C.metadata,aborted:!1};c.push(te),me?l+=1:f+=1,a?.onTaskComplete&&await a.onTaskComplete(te),s&&!me&&(m=!0);}catch(G){let j=perf_hooks.performance.now(),W=j-H,me=G instanceof Error?G:new Error(String(G)),te={taskId:C.id,success:false,error:me,durationMs:W,startedAt:H,finishedAt:j,metadata:C.metadata,aborted:F.signal.aborted};c.push(te),f+=1,a?.onError&&await a.onError(C,me,W),s&&(m=true);}finally{Q&&clearTimeout(Q),oe&&O.catch(()=>{});}},_=async()=>{for(;!m;){let C=k;if(C>=e.length)break;k+=1;let F=e[C];if(!F||(await v(F),m))break}},w=Math.min(o,e.length),x=[];for(let C=0;C<w;C++)x.push(_());await Promise.all(x);let L=perf_hooks.performance.now()-h,A=c.length?c.reduce((C,F)=>C+F.durationMs,0)/c.length:0,ee=L>0?c.length/(L/1e3):c.length;return this.metrics={totalTasks:e.length,startedTasks:g,completedTasks:c.length,successCount:l,failureCount:f,totalDurationMs:L,averageDurationMs:A,throughput:ee},c}getMetrics(){return this.metrics}mergeOptions(e){return {maxConcurrency:e.maxConcurrency??this.defaults.maxConcurrency,timeoutMs:e.timeoutMs??this.defaults.timeoutMs,failFast:e.failFast??this.defaults.failFast,evaluateTaskSuccess:e.evaluateTaskSuccess??this.defaults.evaluateTaskSuccess,callbacks:this.mergeCallbacks(this.defaults.callbacks,e.callbacks)}}mergeCallbacks(e,n){if(!(!e&&!n))return {onTaskStart:async r=>{e?.onTaskStart&&await e.onTaskStart(r),n?.onTaskStart&&await n.onTaskStart(r);},onTaskComplete:async r=>{e?.onTaskComplete&&await e.onTaskComplete(r),n?.onTaskComplete&&await n.onTaskComplete(r);},onError:async(r,o,i)=>{e?.onError&&await e.onError(r,o,i),n?.onError&&await n.onError(r,o,i);}}}};u();u();var pr=class{async query(e){throw new Error("AgentRuntime.query is not implemented. Provide a subclass or mock AgentRuntime.prototype.query.")}async execute(e){throw new Error("AgentRuntime.execute is not implemented. Provide a subclass or mock AgentRuntime.prototype.execute.")}};var Yd=3,Qd=3e4,Zd=500,nh=t=>{if(typeof t!="number"||Number.isNaN(t)||!Number.isFinite(t))return Yd;let e=Math.floor(t);return e>0?e:Yd},rh=t=>t===void 0||typeof t!="number"||Number.isNaN(t)||t<=0?Qd:t,oh=t=>{if(!t)return {maxRetries:0,retryDelay:Zd};let e=Number.isInteger(t.maxRetries)&&t.maxRetries>=0?t.maxRetries:0,n=typeof t.retryDelay=="number"&&t.retryDelay>=0?t.retryDelay:Zd;return {maxRetries:e,retryDelay:n}},ls=t=>{let e=t.reason;return e instanceof Error?e:typeof e=="string"?new Error(e):new Error("Parallel operation aborted")},ih=(t,e)=>t<=0?Promise.resolve():new Promise((n,r)=>{let o=setTimeout(()=>{e.removeEventListener("abort",i),n();},t),i=()=>{clearTimeout(o),r(ls(e));};if(e.aborted){i();return}e.addEventListener("abort",i,{once:true});}),sh=async(t,e,n)=>{let r,o;for(let i=0;i<=e.maxRetries;i++){if(n.aborted)throw ls(n);try{let s=await t();if(r=s,s.success||i===e.maxRetries)return s}catch(s){if(o=s,n.aborted)throw ls(n);if(i===e.maxRetries)throw s instanceof Error?s:new Error(String(s))}i<e.maxRetries&&await ih(e.retryDelay,n);}if(r)return r;throw o?o instanceof Error?o:new Error(String(o)):new Error("Parallel helper encountered an unexpected state")},ec=(t,e,n)=>{e.completed+=1,n?e.success+=1:e.failure+=1;try{t.onProgress?.(e.completed,e.total);}catch(r){process.env.NODE_ENV!=="production"&&console.warn("Parallel helper onProgress callback threw an error:",r);}},ah=t=>t.map(n=>({metadata:n.metadata,taskResult:n})).slice().sort((n,r)=>n.metadata.index-r.metadata.index).map(({metadata:n,taskResult:r})=>{if(r.value){let i=r.value;return {...i,agentId:i.agentId??n.request.agentId,metadata:{...i.metadata,requestIndex:n.index,mode:n.mode}}}let o=r.error??new Error("Unknown error");return {agentId:n.request.agentId,content:o.message,success:false,metadata:{error:o.message,aborted:r.aborted??false,requestIndex:n.index,mode:n.mode}}}),dh=t=>t.filter(e=>!e.success).map(e=>{let n=e.metadata;if(e.error instanceof Error)return {index:n.index,error:e.error};if(e.value&&!e.value.success){let r=String(e.value.metadata?.error??e.value.content??"Agent returned unsuccessful result");return {index:n.index,error:new Error(r)}}return {index:n.index,error:new Error("Unknown failure")}}),ch=(t,e)=>({onTaskComplete:async n=>{ec(e,t,n.success);},onError:async()=>{ec(e,t,false);}}),tc=async(t,e,n={})=>{if(!Array.isArray(t))throw new TypeError("Parallel helpers expect an array of requests");if(t.length===0){let v={total:0,completed:0,successCount:0,failureCount:0,results:[],errors:[],metrics:{totalTasks:0,startedTasks:0,completedTasks:0,successCount:0,failureCount:0,totalDurationMs:0,averageDurationMs:0,throughput:0}};return n.onComplete?.(v),[]}let r=nh(n.concurrency),o=rh(n.timeout),i=oh(n.retryPolicy),s=new ur,a=new pr,d=t.map((h,v)=>({id:`${e}:${h.agentId??"anonymous"}:${v}`,metadata:{index:v,mode:e,request:h},run:_=>sh(()=>e==="query"?a.query(h):a.execute(h),i,_.signal)})),c={completed:0,success:0,failure:0,total:t.length},l=await s.run(d,{maxConcurrency:r,timeoutMs:o,evaluateTaskSuccess:h=>h.success,callbacks:ch(c,n)}),f=ah(l),g=dh(l),m=s.getMetrics(),k={total:t.length,completed:t.length,successCount:f.filter(h=>h.success).length,failureCount:f.filter(h=>!h.success).length,results:f,errors:g,metrics:m};return n.onComplete?.(k),f},lh=(t,e)=>tc(t,"query",e),uh=(t,e)=>tc(t,"execute",e);Vi();Gi();zi();qi();u();u();var mo=class{capabilities={required:[]}};u();u();u();var nc=2e3;function rc(t){let e=t.replace(/[\x00-\x08\x0b\x0c\x0e-\x1f\x7f\u2028\u2029]/g,"");return e.length<=nc?e:e.slice(0,nc-11)+" [redacted]"}var wh=10*1024*1024,kh={b:1,kb:1024,mb:1024*1024,gb:1024*1024*1024};function us(t,e){return t===void 0?true:Array.isArray(t)?t.includes(e):t===e}function vh(t,e){return t===void 0?true:Array.isArray(t)?t.some(n=>e.includes(n)):e.includes(t)}function ic(t){if(typeof t=="number")return t;let e=t.match(/^(\d+(?:\.\d+)?)\s*(b|kb|mb|gb)?$/i);if(!e)return 0;let n=parseFloat(e[1]),r=(e[2]??"b").toLowerCase();return Math.floor(n*(kh[r]??1))}function sc(t){return typeof t=="string"}function ac(t){try{let e=Wa.statSync(t);return e.size>wh?(process.stderr.write(`[YamlHookPlugin] File too large for line count: ${t} (${e.size} bytes)
406
+ `),null):Wa.readFileSync(t,"utf8").split(`
407
+ `).length}catch{return null}}function dc(t){try{return Wa.statSync(t).size}catch{return null}}function Eh(t,e,n){if(!t)return true;let r=e,o=r?.path??r?.file_path??r?.filePath??r?.filename;if(typeof o!="string")return false;if(He(o,t))return true;if(n&&o.startsWith("/")){let{relative:i,isAbsolute:s}=he("path");if(s(o)){let a=i(n,o);if(a&&!a.startsWith("..")&&He(a,t))return true}}return false}function Rh(t,e){return t?JSON.stringify(e).includes(t):true}function xh(t,e){if(!t)return true;try{let n=new RegExp(t),r=JSON.stringify(e);return n.test(r)}catch{return false}}function bh(t,e){if(!t)return true;try{let n=new RegExp(t),r=JSON.stringify(e);return n.test(r)}catch{return false}}function Th(t,e){if(t.pathSizeMin===void 0&&t.pathSizeMax===void 0)return true;let n=e,r=n?.path??n?.file_path??n?.filePath??n?.filename;if(typeof r!="string")return false;if(t.pathSizeMin!==void 0)if(sc(t.pathSizeMin)){let o=dc(r);if(o===null||o<ic(t.pathSizeMin))return false}else {let o=ac(r);if(o===null||o<t.pathSizeMin)return false}if(t.pathSizeMax!==void 0)if(sc(t.pathSizeMax)){let o=dc(r);if(o===null||o>ic(t.pathSizeMax))return false}else {let o=ac(r);if(o===null||o>t.pathSizeMax)return false}return true}function Ah(t){let e=[],n=[];for(let r=0;r<t.length;r++){let o=t[r];if(!o||typeof o!="object"){n.push(`Hook at index ${r}: not an object, skipping`);continue}let i=o;if(typeof i.name!="string"||!i.name){n.push(`Hook at index ${r}: missing or invalid "name", skipping`);continue}let s=i.guide&&typeof i.guide=="object",a=i.deny&&typeof i.deny=="object",d=typeof i.plugin=="string";if(!s&&!a&&!d){n.push(`Hook "${i.name}": missing guide/deny/plugin, skipping`);continue}if(s&&typeof i.guide.say!="string"){n.push(`Hook "${i.name}": guide.say is required and must be string, skipping`);continue}if(a&&typeof i.deny.reason!="string"){n.push(`Hook "${i.name}": deny.reason is required and must be string, skipping`);continue}e.push(i);}return {valid:e,warnings:n}}var fs=class extends mo{name="@crewx/yaml-hook-plugin";version="0.1.0";capabilities={required:["inject"]};hooks;agentMap;constructor(e){super(),this.hooks=e.hooks,this.agentMap=new Map((e.agents??[]).map(n=>[n.id,n]));}async run(e){let n=[],r=process.env.CREWX_TASK_LOG_PATH,o=process.env.CREWX_HOOK_LOG_VERBOSE==="1";for(let i of this.hooks)if(this.matchEntryLevel(i,e)&&i.guide){if(!this.matchRuleLevel(i.guide,e)){o&&r&&this.appendHookLog(r,{rule:i.name,action:"pass",once:i.guide.once??false,ctx:e,matched:false});continue}i.guide.once&&this.hasFired(e.sessionId,i.name)||(i.guide.once&&this.markFired(e.sessionId,i.name),n.push(i.guide.say),r&&this.appendHookLog(r,{rule:i.name,action:"inject",once:i.guide.once??false,ctx:e,matched:true,message:i.guide.say}));}return n.length?e.inject(n.join(`
408
408
 
409
- `)):e.pass()}appendHookLog(e,n){try{let r={rule:n.rule,action:n.action,once:n.once,sessionId:n.ctx.sessionId,provider:n.ctx.provider,agent:n.ctx.agent.id,toolName:n.ctx.tool.name,rawToolName:n.ctx.tool.rawName};n.message&&(r.chars=n.message.length,process.env.CREWX_HOOK_LOG_VERBOSE==="1"&&(r.message=Xd(n.message).slice(0,500)));let o=`[${new Date().toISOString()}] HOOK: ${JSON.stringify(r)}
410
- `;Ua.appendFileSync(e,o,{encoding:"utf8",mode:384});}catch{}}matchEntryLevel(e,n){if(e.provider!==void 0){let r=n.provider.replace(/^cli\//,"");if(!is(e.provider,r))return false}if(e.team!==void 0){let o=this.agentMap.get(n.agent.id)?.team??n.agent.team;if(!is(e.team,o))return false}if(e.role!==void 0){let o=this.agentMap.get(n.agent.id)?.role??n.agent.role;if(!is(e.role,o))return false}if(e.tag!==void 0){let o=this.agentMap.get(n.agent.id)?.tags??[];if(!ph(e.tag,o))return false}return !(e.agents!==void 0&&!e.agents.includes(n.agent.id))}matchRuleLevel(e,n){return !(e.when!==void 0&&e.when.length>0&&!e.when.includes(n.tool.name)&&!e.when.includes(n.tool.rawName)||!gh(e.pattern,n.tool.input)||!mh(e.regex,n.tool.input)||!fh(e.pathPattern,n.tool.input,n.cwd)||!yh(e,n.tool.input)||!hh(e.whenInputRegex,n.tool.input))}hasFired(e,n){try{let r=this.firedFilePath(e);if(!Ua.existsSync(r))return !1;let o=JSON.parse(Ua.readFileSync(r,"utf8"));return Array.isArray(o.fired)&&o.fired.includes(n)}catch{return false}}markFired(e,n){try{let r=this.firedFilePath(e);Ua.mkdirSync(K.dirname(r),{recursive:!0,mode:448});let o=Ua.existsSync(r)?JSON.parse(Ua.readFileSync(r,"utf8")):{fired:[]};Array.isArray(o.fired)||(o.fired=[]),o.fired.includes(n)||(o.fired.push(n),Ua.writeFileSync(r,JSON.stringify(o),{mode:384}));}catch(r){process.stderr.write(`[YamlHookPlugin] once state write failed: ${r}
411
- `);}}firedFilePath(e){let n=crypto$1.createHash("sha1").update(e).digest("hex");return K.join(Ri.homedir(),".crewx","sessions",n,"fired-rules.json")}};u();u();u();function _h(t){let e=t.messages.map(n=>({id:n.id,role:n.isAssistant?"assistant":"user",content:n.text,timestamp:new Date(n.timestamp).toISOString(),metadata:n.metadata??null}));return {getThreadMessages(n){return e}}}u();var ds=class extends Error{code;kind;retryAfterMs;constructor(e,n,r){super(`AdapterError: ${e}`),this.name="AdapterError",this.code=e,this.kind=n,this.retryAfterMs=r;}};u();function kh(t){return t}function vh(t){return {name:t.name,async attach(e){let n=await t.configFactory(e),o=e.registerChannelAdapter,i=t.instanceId??t.name;o&&await o({adapter:t.adapter,instanceId:i,config:n}),t.onAttach&&await t.onAttach(e);},async detach(e){let r=e.unregisterChannelAdapter;r&&await r(t.instanceId??t.name),t.onDetach&&await t.onDetach(e);}}}Jt();exports.ARCHIVE_WI_BOARD_ID=an;exports.AdapterError=ds;exports.AgentNotFoundError=et;exports.AgentRuntime=cr;exports.AgentSkillsSchema=Ts;exports.BrowserFsAdapter=Vi;exports.ConfigLoadError=bt;exports.Crewx=qi;exports.CrewxPlugin=Gi;exports.DEFAULT_INPUT_BUDGET_PERCENT=Rs;exports.DEFAULT_WI_BOARD_ID=sn;exports.DEFAULT_WI_WORKFLOW_ID=xd;exports.DocumentLoader=Ut;exports.FRESH_PROVIDER_INITIAL_INPUT_FRAMING=mr;exports.INPUT_BUDGET_TOKENIZER_ENCODING=To;exports.LEGACY_UI_CARD_SAFE_SUMMARY=ka;exports.LayoutLoadError=ke;exports.LayoutLoader=Sn;exports.LayoutRenderer=Dn;exports.MAX_INPUT_BUDGET_PERCENT=gr;exports.MIN_INPUT_BUDGET_PERCENT=fr;exports.NodeFsAdapter=Ur;exports.PROVIDER_ORDER=Ji;exports.ParallelRunner=dr;exports.ParallelRunnerTimeoutError=uo;exports.PropsValidationError=ot;exports.PropsValidator=Nn;exports.RESUME_PROVIDER_INITIAL_INPUT_FRAMING=Ao;exports.SdkBoxService=rs;exports.SpanRepository=Yr;exports.TaskRepository=nn;exports.TemplateEngine=Cn;exports.TypedEventEmitter=Mn;exports.UiRuntimeError=x;exports.WI_BOARD_ID_PATTERN=co;exports.WI_DEFAULT_FLOW_FILENAME=gg;exports.WI_PLAN_FLOW_FILENAME=mg;exports.WI_PLAN_WORKFLOW_ID=fg;exports.WiBoardSchema=Mc;exports.WiCreateError=ne;exports.YamlHookPlugin=as;exports.buildContext=Gm;exports.canonicalizeAgentOptions=al;exports.classifyTaskError=Lm;exports.clearModelsOverride=yc;exports.compareProviders=or;exports.countTokens=yr;exports.createAdapterContext=ii;exports.createDelegateTool=Am;exports.createGlobalSettingsStore=Qg;exports.createHandler=vi;exports.createPluginProviderFactory=hd;exports.createProvider=rt;exports.createRemoteProviderFactory=pd;exports.createScopedAdapterStore=ri;exports.createTokenCounter=Co;exports.createUiServerRuntime=nd;exports.createWorkInstruction=$g;exports.createWorkInstructionBatch=Bg;exports.defaultExtractText=fi;exports.defaultFsAdapter=Mt;exports.defaultParseEvent=Le;exports.defineChannelAdapter=kh;exports.defineChannelAdapterPlugin=vh;exports.escapeHandlebarsHelper=Zo;exports.extractLegacyWorkflowRunId=wa;exports.formatDisplayTimestamp=Xo;exports.formatFileSizeHelper=ei;exports.formatTimestamp=Ko;exports.formatTimestampHelper=ti;exports.generateFingerprint=hu;exports.generateId=it;exports.getAntigravityModels=Ro;exports.getClaudeModels=wn;exports.getCodexModels=Eo;exports.getCopilotModels=xo;exports.getCrewxHome=bi;exports.getProviderModels=Ze;exports.getSyncWindowStore=_u;exports.hashUiDefinition=zn;exports.hashWorkspaceId=Jr;exports.initModelsRemote=um;exports.initPricingRemote=tm;exports.isReservedWiBoardId=Rd;exports.lengthHelper=Qo;exports.loadYamlFile=kr;exports.materializeWindowsSpawnProgram=Pt;exports.mergeAdditionalArgs=ta;exports.mergeModels=_n;exports.migrateGrokLegacyMode=In;exports.normalizeClaudeMode=Nt;exports.normalizeInputBudgetProvider=Io;exports.normalizeProviderId=mm;exports.normalizeWorkspacePath=Ei;exports.parseOverdriveProfile=Mr;exports.parseOverdriveSignal=Go;exports.parseStdoutEvent=bn;exports.parseUsage=tt;exports.parseYamlContent=_r;exports.providerRank=Ki;exports.queryAcpProviderMeta=$d;exports.queryAllAcpProviderMetas=vm;exports.queryAllCliProviderMetas=bm;exports.queryOpencodeModels=Bd;exports.redactTechnicalMessage=Qi;exports.registerAcpProviders=ld;exports.registerApiProviders=id;exports.registerProviderFactory=nt;exports.resolveAgent=vr;exports.resolveAgentSkills=pm;exports.resolveCatalogModelId=mn;exports.resolveCrewxCli=Im;exports.resolveCrewxWorkspace=Pm;exports.resolveDefaultAgentsYaml=So;exports.resolveInputBudget=wr;exports.resolveOverdrive=Vo;exports.resolveTemplatesPath=Gt;exports.resolveTokenizerMetadata=hr;exports.resolveUiEffectiveCapabilities=Kr;exports.resolveWiBoards=hg;exports.resolveWindowsExecutablePath=Xc;exports.resolveWindowsSpawnProgram=It;exports.resolveWorkflowTemplatesPath=zc;exports.runExecutesParallel=nh;exports.runInSyncWindow=ku;exports.runQueriesParallel=th;exports.sanitizeLegacyUiCardText=Br;exports.sanitizeTemplateMessages=ui;exports.scanLegacyUiCardAt=di;exports.scanLegacyUiCardTags=$n;exports.selectNextWi=Fg;exports.setAuditVerbose=tu;exports.setModelsOverride=vo;exports.toTaskReader=_h;exports.toTemplateMessages=pi;exports.truncateHelper=Yo;exports.validateHooksSchema=wh;
409
+ `)):e.pass()}appendHookLog(e,n){try{let r={rule:n.rule,action:n.action,once:n.once,sessionId:n.ctx.sessionId,provider:n.ctx.provider,agent:n.ctx.agent.id,toolName:n.ctx.tool.name,rawToolName:n.ctx.tool.rawName};n.message&&(r.chars=n.message.length,process.env.CREWX_HOOK_LOG_VERBOSE==="1"&&(r.message=rc(n.message).slice(0,500)));let o=`[${new Date().toISOString()}] HOOK: ${JSON.stringify(r)}
410
+ `;Wa.appendFileSync(e,o,{encoding:"utf8",mode:384});}catch{}}matchEntryLevel(e,n){if(e.provider!==void 0){let r=n.provider.replace(/^cli\//,"");if(!us(e.provider,r))return false}if(e.team!==void 0){let o=this.agentMap.get(n.agent.id)?.team??n.agent.team;if(!us(e.team,o))return false}if(e.role!==void 0){let o=this.agentMap.get(n.agent.id)?.role??n.agent.role;if(!us(e.role,o))return false}if(e.tag!==void 0){let o=this.agentMap.get(n.agent.id)?.tags??[];if(!vh(e.tag,o))return false}return !(e.agents!==void 0&&!e.agents.includes(n.agent.id))}matchRuleLevel(e,n){return !(e.when!==void 0&&e.when.length>0&&!e.when.includes(n.tool.name)&&!e.when.includes(n.tool.rawName)||!Rh(e.pattern,n.tool.input)||!xh(e.regex,n.tool.input)||!Eh(e.pathPattern,n.tool.input,n.cwd)||!Th(e,n.tool.input)||!bh(e.whenInputRegex,n.tool.input))}hasFired(e,n){try{let r=this.firedFilePath(e);if(!Wa.existsSync(r))return !1;let o=JSON.parse(Wa.readFileSync(r,"utf8"));return Array.isArray(o.fired)&&o.fired.includes(n)}catch{return false}}markFired(e,n){try{let r=this.firedFilePath(e);Wa.mkdirSync(X.dirname(r),{recursive:!0,mode:448});let o=Wa.existsSync(r)?JSON.parse(Wa.readFileSync(r,"utf8")):{fired:[]};Array.isArray(o.fired)||(o.fired=[]),o.fired.includes(n)||(o.fired.push(n),Wa.writeFileSync(r,JSON.stringify(o),{mode:384}));}catch(r){process.stderr.write(`[YamlHookPlugin] once state write failed: ${r}
411
+ `);}}firedFilePath(e){let n=crypto$1.createHash("sha1").update(e).digest("hex");return X.join(Ci.homedir(),".crewx","sessions",n,"fired-rules.json")}};u();u();u();function Ih(t){let e=t.messages.map(n=>({id:n.id,role:n.isAssistant?"assistant":"user",content:n.text,timestamp:new Date(n.timestamp).toISOString(),metadata:n.metadata??null}));return {getThreadMessages(n){return e}}}u();var gs=class extends Error{code;kind;retryAfterMs;constructor(e,n,r){super(`AdapterError: ${e}`),this.name="AdapterError",this.code=e,this.kind=n,this.retryAfterMs=r;}};u();function Ph(t){return t}function Ch(t){return {name:t.name,async attach(e){let n=await t.configFactory(e),o=e.registerChannelAdapter,i=t.instanceId??t.name;o&&await o({adapter:t.adapter,instanceId:i,config:n}),t.onAttach&&await t.onAttach(e);},async detach(e){let r=e.unregisterChannelAdapter;r&&await r(t.instanceId??t.name),t.onDetach&&await t.onDetach(e);}}}Yt();exports.ARCHIVE_WI_BOARD_ID=ln;exports.AdapterError=gs;exports.AgentNotFoundError=ot;exports.AgentRuntime=pr;exports.AgentSkillsSchema=Os;exports.BrowserFsAdapter=Zi;exports.ConfigLoadError=Pt;exports.Crewx=Xi;exports.CrewxPlugin=Qi;exports.DEFAULT_INPUT_BUDGET_PERCENT=Cs;exports.DEFAULT_WI_BOARD_ID=cn;exports.DEFAULT_WI_WORKFLOW_ID=Cd;exports.DocumentLoader=Bt;exports.FRESH_PROVIDER_INITIAL_INPUT_FRAMING=_r;exports.INPUT_BUDGET_TOKENIZER_ENCODING=Po;exports.LEGACY_UI_CARD_SAFE_SUMMARY=Ta;exports.LayoutLoadError=ve;exports.LayoutLoader=Nn;exports.LayoutRenderer=Ln;exports.MAX_INPUT_BUDGET_PERCENT=yr;exports.MIN_INPUT_BUDGET_PERCENT=hr;exports.NodeFsAdapter=$r;exports.PROVIDER_ORDER=es;exports.ParallelRunner=ur;exports.ParallelRunnerTimeoutError=go;exports.PropsValidationError=dt;exports.PropsValidator=Un;exports.RESUME_PROVIDER_INITIAL_INPUT_FRAMING=Co;exports.SdkBoxService=cs;exports.SpanRepository=eo;exports.TaskRepository=sn;exports.TemplateEngine=Dn;exports.TypedEventEmitter=jn;exports.UiRuntimeError=R;exports.WI_BOARD_ID_PATTERN=po;exports.WI_DEFAULT_FLOW_FILENAME=Rg;exports.WI_PLAN_FLOW_FILENAME=xg;exports.WI_PLAN_WORKFLOW_ID=Eg;exports.WiBoardSchema=Hc;exports.WiCreateError=re;exports.YamlHookPlugin=fs;exports.buildContext=th;exports.canonicalizeAgentOptions=gl;exports.classifyTaskError=Gm;exports.clearModelsOverride=xc;exports.compareProviders=ar;exports.countTokens=kr;exports.createAdapterContext=di;exports.createDelegateTool=Um;exports.createGlobalSettingsStore=am;exports.createHandler=Ai;exports.createPluginProviderFactory=Rd;exports.createProvider=at;exports.createRemoteProviderFactory=wd;exports.createScopedAdapterStore=si;exports.createTokenCounter=Do;exports.createUiServerRuntime=cd;exports.createWorkInstruction=Vg;exports.createWorkInstructionBatch=Jg;exports.defaultExtractText=hi;exports.defaultFsAdapter=$t;exports.defaultParseEvent=je;exports.defineChannelAdapter=Ph;exports.defineChannelAdapterPlugin=Ch;exports.escapeHandlebarsHelper=ni;exports.extractLegacyWorkflowRunId=xa;exports.formatDisplayTimestamp=Zo;exports.formatFileSizeHelper=ri;exports.formatTimestamp=Qo;exports.formatTimestampHelper=oi;exports.generateFingerprint=Ru;exports.generateId=Ve;exports.getAntigravityModels=Ao;exports.getClaudeModels=vn;exports.getCodexModels=bo;exports.getCopilotModels=To;exports.getCrewxHome=Si;exports.getProviderModels=rt;exports.getSyncWindowStore=Tu;exports.hashUiDefinition=Jn;exports.hashWorkspaceId=Yr;exports.initModelsRemote=km;exports.initPricingRemote=lm;exports.isReservedWiBoardId=Sd;exports.lengthHelper=ti;exports.loadYamlFile=Rr;exports.materializeWindowsSpawnProgram=Dt;exports.mergeAdditionalArgs=aa;exports.mergeModels=En;exports.migrateGrokLegacyMode=Sn;exports.normalizeClaudeMode=Lt;exports.normalizeInputBudgetProvider=So;exports.normalizeProviderId=xm;exports.normalizeWorkspacePath=Ii;exports.parseOverdriveProfile=jr;exports.parseOverdriveSignal=Ko;exports.parseStdoutEvent=In;exports.parseUsage=it;exports.parseYamlContent=Er;exports.providerRank=ts;exports.queryAcpProviderMeta=zd;exports.queryAllAcpProviderMetas=Cm;exports.queryAllCliProviderMetas=Nm;exports.queryOpencodeModels=Gd;exports.redactTechnicalMessage=os;exports.registerAcpProviders=yd;exports.registerApiProviders=pd;exports.registerProviderFactory=st;exports.resolveAgent=xr;exports.resolveAgentSkills=vm;exports.resolveCatalogModelId=_n;exports.resolveCrewxCli=Lm;exports.resolveCrewxWorkspace=jm;exports.resolveDefaultAgentsYaml=No;exports.resolveInputBudget=vr;exports.resolveOverdrive=Xo;exports.resolveTemplatesPath=Kt;exports.resolveTokenizerMetadata=wr;exports.resolveUiEffectiveCapabilities=Qr;exports.resolveWiBoards=bg;exports.resolveWindowsExecutablePath=rl;exports.resolveWindowsSpawnProgram=Ot;exports.resolveWorkflowTemplatesPath=Qc;exports.runExecutesParallel=uh;exports.runInSyncWindow=Au;exports.runQueriesParallel=lh;exports.sanitizeLegacyUiCardText=Hr;exports.sanitizeTemplateMessages=gi;exports.scanLegacyUiCardAt=ui;exports.scanLegacyUiCardTags=Fn;exports.selectNextWi=Xg;exports.setAuditVerbose=du;exports.setModelsOverride=xo;exports.toTaskReader=Ih;exports.toTemplateMessages=mi;exports.truncateHelper=ei;exports.validateHooksSchema=Ah;