@crewx/sdk 0.9.0-rc.66 → 0.9.0-rc.67

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 td=require('fs'),Y=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'),Oo=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'),Di=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 td__namespace=/*#__PURE__*/_interopNamespace(td);var Y__namespace=/*#__PURE__*/_interopNamespace(Y);var Oo__default=/*#__PURE__*/_interopDefault(Oo);var Ge__namespace=/*#__PURE__*/_interopNamespace(Ge);var Di__namespace=/*#__PURE__*/_interopNamespace(Di);var vo=Object.defineProperty;var bc=Object.getOwnPropertyDescriptor;var Tc=Object.getOwnPropertyNames;var xc=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 D=(t,e)=>()=>(t&&(e=t(t=0)),e);var hr=(t,e)=>{for(var n in e)vo(t,n,{get:e[n],enumerable:true});},Ac=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Tc(e))!xc.call(t,o)&&o!==n&&vo(t,o,{get:()=>e[o],enumerable:!(r=bc(e,o))||r.enumerable});return t};var ws=t=>Ac(vo({},"__esModule",{value:true}),t);var u=D(()=>{});var ks,Eo,vs,Ro=D(()=>{u();ks=["flagship","balanced","speed"],Eo={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"]}]}},vs={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:"off"}},execute:{mode:"default",effort:"xhigh",providerOptions:{alwaysApprove:true,sandbox:"off"}}}}},Object.fromEntries(Object.entries(Eo).map(([t,e])=>[t,e.models]));});var Pt,bo,Es,To=D(()=>{u();Pt={"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}},bo=new Set(["gpt-5.3-codex-spark"]),Es=new Set(["Claude Opus 4.6 (Thinking)","Claude Sonnet 4.6 (Thinking)","GPT-OSS 120B (Medium)","Gemini 3.1 Pro (High)","Gemini 3.1 Pro (Low)","Gemini 3.5 Flash (High)","Gemini 3.5 Flash (Low)","Gemini 3.5 Flash (Medium)","auto","claude-fable-5","claude-haiku-4-5","claude-opus-4-6[1m]","claude-opus-4-7[1m]","claude-opus-4-8[1m]","claude-opus-5","claude-sonnet-4-6","claude-sonnet-4-6[1m]","claude-sonnet-5","gemini-3.1-pro","gemini-3.6-flash-high","gemini-3.6-flash-low","gemini-3.6-flash-medium","gpt-5.3-codex","gpt-5.3-codex-spark","gpt-5.4","gpt-5.4-mini","gpt-5.5","gpt-5.6-luna","gpt-5.6-sol","gpt-5.6-terra","grok-4.5","grok-4.6"]);});function bs(t){_n=t;}function Ts(t){Rs=Object.fromEntries(Object.entries(t).map(([e,n])=>[e,{...n}]));}function xo(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 Sc(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 xs(t){if(!t)return;let e=t.replace(/\[[^\]]*\]$/g,"");return Sc(Rs[e]??Pt[e])}function Cc(t){if(!t)return console.warn("[pricing] missing model id; cost is being recorded as 0"),yn;let e=xo(t),n=Pc[e];if(n)return _n[n]??Pt[n]??yn;if(_n[e])return _n[e];if(Pt[e])return Pt[e];if(bo.has(e))return console.warn(`[pricing] unpublished model pricing: ${t}, cost_usd=0`),yn;if(Es.has(e))return console.warn(`[pricing] missing catalog pricing: ${t}, cost_usd=0`),yn;let r={...Pt,..._n};for(let o of Object.keys(r))if(e.includes(o))return r[o];return console.warn(`[pricing] Unknown model: ${t}, cost_usd=0`),yn}function Oc(t,e,n,r=0,o){let i=Cc(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 As(t,e,n,r,o,i){return t&&t>0?t:!e&&!n?0:Oc(e??0,n??0,o,r??0)}var Pc,yn,_n,Rs,Kt=D(()=>{u();To();To();Pc={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"},yn={input:0,cachedInput:0,output:0},_n={},Rs={};});function wn(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,yr=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 Ss(){return {models:[],modes:[],effort:[],modelOverrides:{},providerOptions:[]}}function Lc(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??[]}:Ss()}function Io(t){Ao=Object.fromEntries(Object.entries(t).map(([e,n])=>[e,Lc(n)]));}function Uc(){Ao={};}function kn(t){Ps={...t};}function ot(t){return Ne(t).models}function Ne(t){return Ao[t]??Eo[t]??Ss()}function _r(t){return Ps[t]??vs.providers[t]}function vn(t){return Ne(t).modes}function St(t,e){let n=Ne(t);return e?n.modelOverrides[wn(e)]?.effort??n.effort:n.effort}function Cs(t){return Ne(t).modelOverrides}function En(){return ot("claude")}function Po(){return ot("codex")}function So(){return ot("copilot")}function Co(){return ot("antigravity")}function Rn(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 bn(t){return t.map(e=>{let{apiPricing:n,...r}=e,o=xs(e.id);return o?{...r,apiPricing:o}:r})}var Ao,Ps,Te=D(()=>{u();Ro();Kt();yr();Ao={},Ps={};});function Ir(t){return typeof t!="string"?void 0:t.trim()||void 0}function Pr(t){return Ir(t)?.toLowerCase()??""}function Yt(t){try{return td.statSync(t).isFile()}catch{return false}}function gl(t,e){if(t===e)return true;let n=Y__namespace.default.relative(t,e);return n!==""&&!n.startsWith("..")&&!Y__namespace.default.isAbsolute(n)}function ml(t,e){if(Y__namespace.default.basename(t)!==".bin")return false;let n=Y__namespace.default.dirname(t);if(Y__namespace.default.basename(n)!=="node_modules")return false;let r=Y__namespace.default.dirname(n);return gl(r,e)}function Tn(t,e={}){if(t.includes("/")||t.includes("\\")||Y__namespace.default.isAbsolute(t))return t;let n=e.platform??process.platform,r=e.env??process.env,o=Y__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=Y__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=Y__namespace.default.resolve(o,g);if(!(i&&ml(m,o)))for(let k of f){let h=Pr(k),v=k.toUpperCase();for(let _ of [k,h,v]){let w=Y__namespace.default.join(m,`${t}${_}`);if(Yt(w))return w}}}return t}function hl(t,e){return Tn(t,{env:e,platform:"win32",resolution:"local_first"})}function yl(t){if(!Yt(t))return null;try{let e=td.readFileSync(t,"utf8"),n=Y__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,Y__namespace.default.sep).replace(/^[\\/]+/,""),g=Y__namespace.default.resolve(n,f);Yt(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,Y__namespace.default.sep).replace(/^[\\/]+/,"");i.set(d,Y__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&&Yt(c)&&o.push(c);}let s=a=>a.find(d=>{let c=Pr(Y__namespace.default.basename(d));return c!=="node.exe"&&c!=="node"})??null;return s(o)??s(r)}catch{return null}}function _l(t,e){if(typeof e=="string")return Ir(e)||null;if(!e||typeof e!="object")return null;if(t){let n=e[t],r=typeof n=="string"?Ir(n):void 0;if(r)return r}for(let n of Object.values(e)){let r=typeof n=="string"?Ir(n):void 0;if(r)return r}return null}function wl(t,e){if(!e)return null;let n=Y__namespace.default.dirname(t),r=[Y__namespace.default.resolve(n,"..",e),Y__namespace.default.resolve(n,"node_modules",e)];for(let o of r){let i=Y__namespace.default.join(o,"package.json");if(Yt(i))try{let s=JSON.parse(td.readFileSync(i,"utf8")),a=_l(e,s.bin);if(!a)continue;let d=Y__namespace.default.resolve(o,a);if(Yt(d))return d}catch{}}return null}function kl(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:Tn(t.command,{cwd:o,env:n,platform:e,resolution:i}),leadingArgv:[],resolution:"direct"};let s=Tn(t.command,{cwd:o,env:n,platform:e,resolution:i}),a=Pr(Y__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=yl(s)??wl(s,t.packageName);return d?Pr(Y__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 vl(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(`${Y__namespace.default.basename(t.candidate.command)} wrapper resolved, but no executable/Node entrypoint could be resolved without shell execution.`)}function Dt(t){let e=kl(t);return vl({candidate:e,allowShellFallback:t.allowShellFallback})}function Mt(t,e){return {command:t.command,argv:[...t.leadingArgv,...e],resolution:t.resolution,shell:t.shell,windowsHide:t.windowsHide}}var Qt=D(()=>{u();});function El(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 bl(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 Bs(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 st(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=bl(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=El(o)??Rl(o);s&&(e=s);}catch{}return n||(e??void 0)}var Lt=D(()=>{u();});exports.ProviderError=void 0;var Ut,jt,Zt=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},Ut=class extends exports.ProviderError{constructor(e,n){super(e,n,{code:"TIMEOUT_IDLE",kind:"permanent"}),this.name="IdleTimeoutError";}},jt=class extends exports.ProviderError{constructor(e,n){super(e,n,{code:"TIMEOUT_TOTAL",kind:"permanent"}),this.name="TotalTimeoutError";}};});exports.RateLimitError=void 0;var Sr=D(()=>{u();Zt();exports.RateLimitError=class extends exports.ProviderError{name="RateLimitError";constructor(e,n="cli/claude"){super(e,n,{code:"QUOTA_EXHAUSTED",kind:"transient"});}};});function De(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 en=D(()=>{u();});function Le(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 tn=D(()=>{u();});function $t(t){return Tl[t]??t}function $o(t){if(!t)return "";let e=t.lastIndexOf("/");return e===-1?t.trim():t.slice(e+1).trim()}function Fs(t){if(!t)return false;let e=Ne(t);return e.models.length>0||e.modes.length>0||e.effort.length>0||Object.keys(e.modelOverrides).length>0}function qs(t,e){if(!t)return false;let n=Ne(t),r=typeof e=="string"?wn(e):void 0;return n.models.length>0||n.effort.length>0||r!=null&&Array.isArray(n.modelOverrides[r]?.effort)}function Bo(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function xl(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()?$o(r.provider):e,c=typeof r.model=="string"&&r.model.trim()?r.model.trim():n;if(Fs(d)){if(typeof r.mode=="string"){let f=d==="claude"?$t(r.mode):r.mode,g=vn(d).map(m=>d==="claude"?$t(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"&&qs(d,c)&&(St(d,c).includes(r.effort)||(delete a().effort,s.push("effort")));}let l=r.overdrive;if(Bo(l)){let f=$o(typeof l.provider=="string"?l.provider:void 0),g=typeof l.model=="string"?l.model:void 0;if(Fs(f)){let m,k=()=>(m||(m={...l},a().overdrive=m),m);if(typeof l.mode=="string"){let h=f==="claude"?$t(l.mode):l.mode,v=vn(f).map(_=>f==="claude"?$t(_.id):_.id);h!==l.mode&&(k().mode=h,i=true),v.includes(h)||(delete k().mode,s.push("overdrive.mode"));}typeof l.effort=="string"&&qs(f,g)&&(St(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(!Bo(e))return {options:e,changed:false,removed:[]};let n=$o(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(!Bo(c))continue;let{block:l,removed:f,changed:g}=xl(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 Tl,Fo=D(()=>{u();Te();yr();Tl={auto:"default"};});function nn(t){if(!t)return {};let e=t.match(/^(.+?)\[([^\]]+)\]$/);if(e){let n=e[2].toLowerCase();return Il.has(n)?{model:e[1],effort:e[2]}:{model:t}}return {model:t}}function Hs(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 Ws(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 zs(t){return t?["-c",`model_reasoning_effort=${t}`]:[]}function Gs(t){if(!t)return [];let e=new Set(["acceptEdits","bypassPermissions","default","delegate","dontAsk","plan"]),n=$t(t);return e.has(n)?["--permission-mode",n]:[]}function Vs(t){return t?new Set(["low","medium","high","xhigh","max"]).has(t)?["--effort",t]:[]:[]}function Js(t){return t==="default"?[]:t&&Pl.has(t)?["--permission-mode",t]:[]}function Ks(t){return t===true?["--always-approve"]:[]}function Xs(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 Ys(t){return t?new Set(["low","medium","high","xhigh"]).has(t)?["--effort",t]:[]:[]}var Il,Pl,Cr=D(()=>{u();Fo();Il=new Set(["minimal","low","medium","high","xhigh","max"]);Pl=new Set(["default","acceptEdits","auto","dontAsk","bypassPermissions","plan"]);});function Cl(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 fd=require('fs'),Y=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'),Hi=require('os'),module$1=require('module'),Ye=require('handlebars'),promises=require('fs/promises'),events=require('events'),async_hooks=require('async_hooks'),drizzleOrm=require('drizzle-orm'),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 fd__namespace=/*#__PURE__*/_interopNamespace(fd);var Y__namespace=/*#__PURE__*/_interopNamespace(Y);var Bo__default=/*#__PURE__*/_interopDefault(Bo);var Hi__namespace=/*#__PURE__*/_interopNamespace(Hi);var Ye__namespace=/*#__PURE__*/_interopNamespace(Ye);var So=Object.defineProperty;var Vc=Object.getOwnPropertyDescriptor;var Kc=Object.getOwnPropertyNames;var Jc=Object.prototype.hasOwnProperty;var _e=(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 L=(t,e)=>()=>(t&&(e=t(t=0)),e);var br=(t,e)=>{for(var n in e)So(t,n,{get:e[n],enumerable:true});},Xc=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Kc(e))!Jc.call(t,o)&&o!==n&&So(t,o,{get:()=>e[o],enumerable:!(r=Vc(e,o))||r.enumerable});return t};var Ps=t=>Xc(So({},"__esModule",{value:true}),t);var u=L(()=>{});var Cs,Po,Os,Co=L(()=>{u();Cs=["flagship","balanced","speed"],Po={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"]}]}},Os={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:"off"}},execute:{mode:"default",effort:"xhigh",providerOptions:{alwaysApprove:true,sandbox:"off"}}}}},Object.fromEntries(Object.entries(Po).map(([t,e])=>[t,e.models]));});var Ot,Oo,Ns,No=L(()=>{u();Ot={"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}},Oo=new Set(["gpt-5.3-codex-spark"]),Ns=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 Ls(t){Rn=t;}function Ms(t){Ds=Object.fromEntries(Object.entries(t).map(([e,n])=>[e,{...n}]));}function Do(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 Zc(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 Us(t){if(!t)return;let e=t.replace(/\[[^\]]*\]$/g,"");return Zc(Ds[e]??Ot[e])}function el(t){if(!t)return console.warn("[pricing] missing model id; cost is being recorded as 0"),En;let e=Do(t),n=Qc[e];if(n)return Rn[n]??Ot[n]??En;if(Rn[e])return Rn[e];if(Ot[e])return Ot[e];if(Oo.has(e))return console.warn(`[pricing] unpublished model pricing: ${t}, cost_usd=0`),En;if(Ns.has(e))return console.warn(`[pricing] missing catalog pricing: ${t}, cost_usd=0`),En;let r={...Ot,...Rn};for(let o of Object.keys(r))if(e.includes(o))return r[o];return console.warn(`[pricing] Unknown model: ${t}, cost_usd=0`),En}function tl(t,e,n,r=0,o){let i=el(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 js(t,e,n,r,o,i){return t&&t>0?t:!e&&!n?0:tl(e??0,n??0,o,r??0)}var Qc,En,Rn,Ds,Zt=L(()=>{u();No();No();Qc={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"},En={input:0,cachedInput:0,output:0},Rn={},Ds={};});function Tn(t){return ol.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 ol,Er=L(()=>{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]"}],ol=new Map(exports.CLAUDE_MODEL_COMPATIBILITY_PAIRS.map(({baseModelId:t,catalogModelId:e})=>[t,e]));});function Fs(){return {models:[],modes:[],effort:[],modelOverrides:{},providerOptions:[]}}function il(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??[]}:Fs()}function Mo(t){Lo=Object.fromEntries(Object.entries(t).map(([e,n])=>[e,il(n)]));}function sl(){Lo={};}function xn(t){Bs={...t};}function dt(t){return Ue(t).models}function Ue(t){return Lo[t]??Po[t]??Fs()}function Rr(t){return Bs[t]??Os.providers[t]}function An(t){return Ue(t).modes}function Nt(t,e){let n=Ue(t);return e?n.modelOverrides[Tn(e)]?.effort??n.effort:n.effort}function qs(t){return Ue(t).modelOverrides}function In(){return dt("claude")}function Uo(){return dt("codex")}function jo(){return dt("copilot")}function $o(){return dt("antigravity")}function Sn(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 Pn(t){return t.map(e=>{let{apiPricing:n,...r}=e,o=Us(e.id);return o?{...r,apiPricing:o}:r})}var Lo,Bs,Ae=L(()=>{u();Co();Zt();Er();Lo={},Bs={};});function Dr(t){return typeof t!="string"?void 0:t.trim()||void 0}function Lr(t){return Dr(t)?.toLowerCase()??""}function tn(t){try{return fd.statSync(t).isFile()}catch{return false}}function Vl(t,e){if(t===e)return true;let n=Y__namespace.default.relative(t,e);return n!==""&&!n.startsWith("..")&&!Y__namespace.default.isAbsolute(n)}function Kl(t,e){if(Y__namespace.default.basename(t)!==".bin")return false;let n=Y__namespace.default.dirname(t);if(Y__namespace.default.basename(n)!=="node_modules")return false;let r=Y__namespace.default.dirname(n);return Vl(r,e)}function Cn(t,e={}){if(t.includes("/")||t.includes("\\")||Y__namespace.default.isAbsolute(t))return t;let n=e.platform??process.platform,r=e.env??process.env,o=Y__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=Y__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=Y__namespace.default.resolve(o,g);if(!(i&&Kl(m,o)))for(let k of f){let h=Lr(k),v=k.toUpperCase();for(let _ of [k,h,v]){let w=Y__namespace.default.join(m,`${t}${_}`);if(tn(w))return w}}}return t}function Jl(t,e){return Cn(t,{env:e,platform:"win32",resolution:"local_first"})}function Xl(t){if(!tn(t))return null;try{let e=fd.readFileSync(t,"utf8"),n=Y__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,Y__namespace.default.sep).replace(/^[\\/]+/,""),g=Y__namespace.default.resolve(n,f);tn(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,Y__namespace.default.sep).replace(/^[\\/]+/,"");i.set(d,Y__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&&tn(c)&&o.push(c);}let s=a=>a.find(d=>{let c=Lr(Y__namespace.default.basename(d));return c!=="node.exe"&&c!=="node"})??null;return s(o)??s(r)}catch{return null}}function Yl(t,e){if(typeof e=="string")return Dr(e)||null;if(!e||typeof e!="object")return null;if(t){let n=e[t],r=typeof n=="string"?Dr(n):void 0;if(r)return r}for(let n of Object.values(e)){let r=typeof n=="string"?Dr(n):void 0;if(r)return r}return null}function Ql(t,e){if(!e)return null;let n=Y__namespace.default.dirname(t),r=[Y__namespace.default.resolve(n,"..",e),Y__namespace.default.resolve(n,"node_modules",e)];for(let o of r){let i=Y__namespace.default.join(o,"package.json");if(tn(i))try{let s=JSON.parse(fd.readFileSync(i,"utf8")),a=Yl(e,s.bin);if(!a)continue;let d=Y__namespace.default.resolve(o,a);if(tn(d))return d}catch{}}return null}function Zl(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:Cn(t.command,{cwd:o,env:n,platform:e,resolution:i}),leadingArgv:[],resolution:"direct"};let s=Cn(t.command,{cwd:o,env:n,platform:e,resolution:i}),a=Lr(Y__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=Xl(s)??Ql(s,t.packageName);return d?Lr(Y__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 eu(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(`${Y__namespace.default.basename(t.candidate.command)} wrapper resolved, but no executable/Node entrypoint could be resolved without shell execution.`)}function jt(t){let e=Zl(t);return eu({candidate:e,allowShellFallback:t.allowShellFallback})}function $t(t,e){return {command:t.command,argv:[...t.leadingArgv,...e],resolution:t.resolution,shell:t.shell,windowsHide:t.windowsHide}}var nn=L(()=>{u();});function tu(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 nu(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 ru(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 Qs(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 lt(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=ru(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=tu(o)??nu(o);s&&(e=s);}catch{}return n||(e??void 0)}var Bt=L(()=>{u();});exports.ProviderError=void 0;var Ft,qt,rn=L(()=>{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},Ft=class extends exports.ProviderError{constructor(e,n){super(e,n,{code:"TIMEOUT_IDLE",kind:"permanent"}),this.name="IdleTimeoutError";}},qt=class extends exports.ProviderError{constructor(e,n){super(e,n,{code:"TIMEOUT_TOTAL",kind:"permanent"}),this.name="TotalTimeoutError";}};});exports.RateLimitError=void 0;var Mr=L(()=>{u();rn();exports.RateLimitError=class extends exports.ProviderError{name="RateLimitError";constructor(e,n="cli/claude"){super(e,n,{code:"QUOTA_EXHAUSTED",kind:"transient"});}};});function je(t){return /crewx\s+(x|execute)\s/.test(t)}function $e(t,e){let n=e.match(/@(\S+)/);return {timestamp:t,type:"agent_call",targetAgent:n?.[1]?.replace(/["']/g,""),toolInput:e}}var on=L(()=>{u();});function Be(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 sn=L(()=>{u();});function Ht(t){return ou[t]??t}function Ko(t){if(!t)return "";let e=t.lastIndexOf("/");return e===-1?t.trim():t.slice(e+1).trim()}function Zs(t){if(!t)return false;let e=Ue(t);return e.models.length>0||e.modes.length>0||e.effort.length>0||Object.keys(e.modelOverrides).length>0}function ea(t,e){if(!t)return false;let n=Ue(t),r=typeof e=="string"?Tn(e):void 0;return n.models.length>0||n.effort.length>0||r!=null&&Array.isArray(n.modelOverrides[r]?.effort)}function Jo(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function iu(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()?Ko(r.provider):e,c=typeof r.model=="string"&&r.model.trim()?r.model.trim():n;if(Zs(d)){if(typeof r.mode=="string"){let f=d==="claude"?Ht(r.mode):r.mode,g=An(d).map(m=>d==="claude"?Ht(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"&&ea(d,c)&&(Nt(d,c).includes(r.effort)||(delete a().effort,s.push("effort")));}let l=r.overdrive;if(Jo(l)){let f=Ko(typeof l.provider=="string"?l.provider:void 0),g=typeof l.model=="string"?l.model:void 0;if(Zs(f)){let m,k=()=>(m||(m={...l},a().overdrive=m),m);if(typeof l.mode=="string"){let h=f==="claude"?Ht(l.mode):l.mode,v=An(f).map(_=>f==="claude"?Ht(_.id):_.id);h!==l.mode&&(k().mode=h,i=true),v.includes(h)||(delete k().mode,s.push("overdrive.mode"));}typeof l.effort=="string"&&ea(f,g)&&(Nt(f,g).includes(l.effort)||(delete k().effort,s.push("overdrive.effort")));}}return {block:r,removed:s,changed:i}}function su(t){let{options:e}=t;if(!Jo(e))return {options:e,changed:false,removed:[]};let n=Ko(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(!Jo(c))continue;let{block:l,removed:f,changed:g}=iu(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 ou,Xo=L(()=>{u();Ae();Er();ou={auto:"default"};});function an(t){if(!t)return {};let e=t.match(/^(.+?)\[([^\]]+)\]$/);if(e){let n=e[2].toLowerCase();return au.has(n)?{model:e[1],effort:e[2]}:{model:t}}return {model:t}}function ta(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 na(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 ra(t){return t?["-c",`model_reasoning_effort=${t}`]:[]}function oa(t){if(!t)return [];let e=new Set(["acceptEdits","bypassPermissions","default","delegate","dontAsk","plan"]),n=Ht(t);return e.has(n)?["--permission-mode",n]:[]}function ia(t){return t?new Set(["low","medium","high","xhigh","max"]).has(t)?["--effort",t]:[]:[]}function sa(t){return t==="default"?[]:t&&du.has(t)?["--permission-mode",t]:[]}function aa(t){return t===true?["--always-approve"]:[]}function da(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 ca(t){return t?new Set(["low","medium","high","xhigh"]).has(t)?["--effort",t]:[]:[]}var au,du,Ur=L(()=>{u();Xo();au=new Set(["minimal","low","medium","high","xhigh","max"]);du=new Set(["default","acceptEdits","auto","dontAsk","bypassPermissions","plan"]);});function lu(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 Ol(t){let e=t.toLowerCase();return e.includes("out of extra usage")||e.includes("rate limit")||e.includes("quota")}function Nl(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=Le(i);return r==="Bash"&&De(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 Sl;exports.claudeAdapter=void 0;var qo=D(()=>{u();Sr();en();tn();Cr();Te();Lt();Sl=new Set(["tool_progress"]),exports.claudeAdapter={command:"claude",meta:{displayName:"Claude",models:En(),capabilities:{resume:true}},buildArgs(t,e,n){let{model:r,effort:o}=nn(e.model),i=e.effort??o,s=Gs(e.mode),a=Vs(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=Cl(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(Ol(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=Bs(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=Nl(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?Sl.has(r):!1}catch{return false}}};});var Dl,Ml;exports.copilotAdapter=void 0;var Ho=D(()=>{u();Lt();en();tn();Te();Dl=new Set(["interactive","plan","autopilot"]),Ml=new Set(["none","low","medium","high","xhigh","max"]),exports.copilotAdapter={command:"copilot",meta:{displayName:"Copilot",models:So()},buildArgs(t,e,n){let r=e.additionalArgs?[...e.additionalArgs]:[];return e.model&&r.push("--model",e.model),e.mode&&Dl.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=st(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=Le(d);return (a==="bash"||a==="Bash")&&De(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 Ul(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 jl(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 De(r)?[Me(t,r)]:[{timestamp:t,type:"tool_use",toolName:"Bash",toolInput:r}]}return n==="web_search"?[]:n==="file_change"?[]:[]}function Bl(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=Fl(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=Le(o);return r==="Bash"&&De(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 Fl(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=Le(o);return r==="Bash"&&De(i)?Me(t,i):{timestamp:t,type:"tool_use",toolName:r,toolInput:i}}return null}var Ll;exports.codexAdapter=void 0;var Wo=D(()=>{u();Lt();en();tn();Cr();Te();Ll=new Set(["turn.started","turn.completed","item.updated"]);exports.codexAdapter={command:"codex",meta:{displayName:"Codex",models:Po(),capabilities:{resume:true}},buildArgs(t,e,n){let{model:r,effort:o}=nn(e.model),i=e.effort??o,s=e.resumeSessionId?Ws(e.mode):Hs(e.mode),a=zs(i),d=r?["-m",r]:[],c=jl(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=st(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=Ul(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=Bl(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?Ll.has(r):!1}catch{return false}}};});function Wl(t){return t?Hl[t]??{agent:"build",autoApprove:false}:{agent:void 0,autoApprove:false}}function Mr(t,e){return t.some(n=>n===e||n.startsWith(`${e}=`))}function zl(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 ql,Hl;exports.opencodeAdapter=void 0;var zo=D(()=>{u();Lt();tn();ql=new Set(["step_start","step_finish"]),Hl={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"];Mr(o,"--format")||o.push("--format","json"),e.resumeSessionId&&!o.includes("-s")&&!o.includes("--session")&&o.push("-s",e.resumeSessionId);let{agent:i,autoApprove:s}=Wl(e.mode);Mr(o,"--agent")||i!==void 0&&o.push("--agent",i),s&&!Mr(o,"--auto")&&o.push("--auto"),e.effort!==void 0&&!Mr(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=st(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=zl(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=Le(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?ql.has(r):!1}catch{return false}}};});var Go,Vo=D(()=>{u();Zt();Te();Go={command:"agy",meta:{displayName:"Antigravity",models:Co(),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 Qs,Zs=D(()=>{u();en();tn();Qs={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=Le(a);return /^bash$/i.test(i)&&De(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 rn(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function jr(t){return rn(t)?t:void 0}function ke(t){return typeof t=="string"?t:void 0}function Bt(t){let e=typeof t=="number"?t:Number(t??0);return Number.isFinite(e)?e:0}function Xl(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 xn(t){let e=t.trim();if(!e)return [];try{let n=JSON.parse(e);return rn(n)?[n]:[]}catch{return Xl(e).flatMap(n=>{try{let r=JSON.parse(n);return rn(r)?[r]:[]}catch{return []}})}}function An(t){let e=JSON.stringify(t);return e===void 0?String(t):e}function In(t){if(typeof t=="string")return t;if(Array.isArray(t)){let e=t.map(In).filter(n=>n!==void 0);return e.length>0?e.join(`
12
- `):void 0}if(rn(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=In(t[e]);if(n!==void 0)return n}}}function Yl(t){if(t.rawOutput!==null&&t.rawOutput!==void 0)return In(t.rawOutput)??An(t.rawOutput);if(t.content!==null&&t.content!==void 0)return In(t.content)??An(t.content);if(t.result!==null&&t.result!==void 0)return In(t.result)??An(t.result)}function oa(t){let e=jr(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?ia(n):"Grok CLI reported an error."}function ia(t){return (t.replace(Kl,"").split(/\r?\n/).map(n=>n.trim()).filter(Boolean)[0]??t.trim()).slice(0,500)}function ra(t){return Jl.test(t)}function Ql(t){let e=jr(t.modelUsage);return e?Object.keys(e)[0]??null:null}function Zl(t){let e=jr(t.usage);if(!e)return null;let n=Bt(e.cache_read_input_tokens);return {inputTokens:Bt(e.input_tokens)+n,cachedInputTokens:n,outputTokens:Bt(e.output_tokens),costUsd:Bt(t.total_cost_usd)}}function eu(t){let e=0,n=0,r=0,o=false,i=new Set;for(let s of t.split(`
13
- `).flatMap(xn)){if(s.type!=="usage")continue;let a=jr(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=Bt(a.cache_read_input_tokens);e+=Bt(a.input_tokens)+c,n+=c,r+=Bt(a.output_tokens),o=true;}return o?{inputTokens:e,cachedInputTokens:n,outputTokens:r,costUsd:0}:null}function tu(t,e){if(!Array.isArray(e.entries)||e.entries.length===0)return [];let n=[];for(let i of e.entries.slice(0,ea)){if(!rn(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>ea&&n.push(na);let r=n.join(`
14
- `),o=r.length>ta?`${r.slice(0,ta-1)}${na}`:r;return [{timestamp:t,type:"info",content:o}]}function nu(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 tu(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:An(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:Yl(e),isError:r!=="completed"||e.isError===true}]}if(n==="error"){let r=oa(e);return [{timestamp:t,type:"error",content:r,errorMessage:r}]}return []}var Ur,Vl,Jl,Kl,ea,ta,na;exports.grokAdapter=void 0;var Jo=D(()=>{u();Zt();Sr();Te();Cr();Ur="cli/grok",Vl=new Set(["available_commands","usage","end"]),Jl=/(?:rate[\s_-]*limit|quota|usage[\s_-]*limit|too many requests|limit(?:ed|ing)?\s+(?:exceeded|reached))/i,Kl=/\u001b\[[0-?]*[ -/]*[@-~]/g,ea=20,ta=4e3,na="\u2026";exports.grokAdapter={command:"grok",createSessionId:()=>crypto$1.randomUUID(),meta:{displayName:"Grok",capabilities:{resume:true}},buildArgs(t,e){let{model:n,effort:r}=nn(e.model),o=e.effort??r,i=e.resumeSessionId?["--resume",e.resumeSessionId]:e.providerSessionId?["--session-id",e.providerSessionId]:[],s=n?["--model",n]:[],a=n?ot("grok").some(T=>T.id===n):false,d=n&&a?St("grok",n):[],c=!o||d.length===0||d.includes(o)?o:void 0,l=Ys(c),f=e.additionalArgs??[],g=T=>f.some(x=>x===T||x.startsWith(`${T}=`)),m=e.providerOptions,k=m?.alwaysApprove,h=m?.sandbox,v=g("--permission-mode")?[]:Js(e.mode),_=g("--always-approve")?[]:Ks(k),w=g("--sandbox")?[]:Xs(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(xn))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 xn(t))if(e.type==="error"){let n=oa(e);return ra(An(e))?new exports.RateLimitError(n,Ur):new exports.ProviderError(n,Ur)}return null},interpretExit(t,e){if(t===0)return null;let n=ia(e)||`Grok CLI exited with code ${t}.`;return ra(e)?new exports.RateLimitError(n,Ur):new exports.ProviderError(n,Ur)},parseResultMeta(t){let n=t.split(`
16
- `).flatMap(xn).find(r=>r.type==="end");return n?{usage:Zl(n),model:Ql(n)}:{usage:eu(t),model:null}},parseEvent(t,e){let n=e??new Date().toISOString();return xn(t).flatMap(r=>nu(n,r))},suppressOutputLine(t){let e=t.trim();if(!e.startsWith("{")||!e.endsWith("}"))return false;try{let n=JSON.parse(e);return rn(n)&&typeof n.type=="string"?Vl.has(n.type):!1}catch{return false}}};});function Pn(t,e,n){if(n){let r=exports.BUILTIN_ADAPTERS[n];if(r?.parseEvent)return r.parseEvent(e,t);let o=ru[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 ru,_t=D(()=>{u();qo();Ho();Wo();zo();Vo();Zs();Jo();qo();Ho();Wo();zo();Vo();Jo();en();exports.BUILTIN_ADAPTERS={codex:exports.codexAdapter,claude:exports.claudeAdapter,opencode:exports.opencodeAdapter,antigravity:Go,copilot:exports.copilotAdapter,grok:exports.grokAdapter},ru={gemini:Qs};});var on,Ko=D(()=>{u();on=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 sa(t,e){if(t===void 0||t==="")return e;let n=parseInt(t,10);return Number.isNaN(n)?e:n}function Xo(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 aa(t=process.env){return {queryMs:sa(t.CREWX_TIMEOUT_QUERY,288e5),executeMs:sa(t.CREWX_TIMEOUT_EXECUTE,288e5),idleMs:Xo(t)??6e5}}var Br=D(()=>{u();});function iu(t){let e=t.split(`
5
+ `):""}function uu(t){let e=t.toLowerCase();return e.includes("out of extra usage")||e.includes("rate limit")||e.includes("quota")}function pu(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=Be(i);return r==="Bash"&&je(s)?$e(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 cu;exports.claudeAdapter=void 0;var Yo=L(()=>{u();Mr();on();sn();Ur();Ae();Bt();cu=new Set(["tool_progress"]),exports.claudeAdapter={command:"claude",meta:{displayName:"Claude",models:In(),capabilities:{resume:true}},buildArgs(t,e,n){let{model:r,effort:o}=an(e.model),i=e.effort??o,s=oa(e.mode),a=ia(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=lu(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(uu(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=Qs(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=pu(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?cu.has(r):!1}catch{return false}}};});var fu,gu;exports.copilotAdapter=void 0;var Qo=L(()=>{u();Bt();on();sn();Ae();fu=new Set(["interactive","plan","autopilot"]),gu=new Set(["none","low","medium","high","xhigh","max"]),exports.copilotAdapter={command:"copilot",meta:{displayName:"Copilot",models:jo()},buildArgs(t,e,n){let r=e.additionalArgs?[...e.additionalArgs]:[];return e.model&&r.push("--model",e.model),e.mode&&fu.has(e.mode)&&r.push("--mode",e.mode),e.effort&&gu.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=lt(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=Be(d);return (a==="bash"||a==="Bash")&&je(c)?[$e(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 hu(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 yu(t){return t[0]==="exec"?t.slice(1):t}function _u(t,e){let n=e.type;if(n==="command_execution"){let r=String(e.command||"");return je(r)?[$e(t,r)]:[{timestamp:t,type:"tool_use",toolName:"Bash",toolInput:r}]}return n==="web_search"?[]:n==="file_change"?[]:[]}function wu(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=ku(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=Be(o);return r==="Bash"&&je(i)?$e(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 ku(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=Be(o);return r==="Bash"&&je(i)?$e(t,i):{timestamp:t,type:"tool_use",toolName:r,toolInput:i}}return null}var mu;exports.codexAdapter=void 0;var Zo=L(()=>{u();Bt();on();sn();Ur();Ae();mu=new Set(["turn.started","turn.completed","item.updated"]);exports.codexAdapter={command:"codex",meta:{displayName:"Codex",models:Uo(),capabilities:{resume:true}},buildArgs(t,e,n){let{model:r,effort:o}=an(e.model),i=e.effort??o,s=e.resumeSessionId?na(e.mode):ta(e.mode),a=ra(i),d=r?["-m",r]:[],c=yu(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=lt(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=hu(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(..._u(n,d));continue}if(a==="item.completed"){let c=wu(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?mu.has(r):!1}catch{return false}}};});function Eu(t){return t?bu[t]??{agent:"build",autoApprove:false}:{agent:void 0,autoApprove:false}}function Fr(t,e){return t.some(n=>n===e||n.startsWith(`${e}=`))}function Ru(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 vu,bu;exports.opencodeAdapter=void 0;var ei=L(()=>{u();Bt();sn();vu=new Set(["step_start","step_finish"]),bu={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"];Fr(o,"--format")||o.push("--format","json"),e.resumeSessionId&&!o.includes("-s")&&!o.includes("--session")&&o.push("-s",e.resumeSessionId);let{agent:i,autoApprove:s}=Eu(e.mode);Fr(o,"--agent")||i!==void 0&&o.push("--agent",i),s&&!Fr(o,"--auto")&&o.push("--auto"),e.effort!==void 0&&!Fr(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=lt(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=Ru(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=Be(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?vu.has(r):!1}catch{return false}}};});var ti,ni=L(()=>{u();rn();Ae();ti={command:"agy",meta:{displayName:"Antigravity",models:$o(),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 la,ua=L(()=>{u();on();sn();la={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=Be(a);return /^bash$/i.test(i)&&je(d)?[$e(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 dn(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function Wr(t){return dn(t)?t:void 0}function be(t){return typeof t=="string"?t:void 0}function Wt(t){let e=typeof t=="number"?t:Number(t??0);return Number.isFinite(e)?e:0}function Su(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 On(t){let e=t.trim();if(!e)return [];try{let n=JSON.parse(e);return dn(n)?[n]:[]}catch{return Su(e).flatMap(n=>{try{let r=JSON.parse(n);return dn(r)?[r]:[]}catch{return []}})}}function Nn(t){let e=JSON.stringify(t);return e===void 0?String(t):e}function Dn(t){if(typeof t=="string")return t;if(Array.isArray(t)){let e=t.map(Dn).filter(n=>n!==void 0);return e.length>0?e.join(`
12
+ `):void 0}if(dn(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=Dn(t[e]);if(n!==void 0)return n}}}function Pu(t){if(t.rawOutput!==null&&t.rawOutput!==void 0)return Dn(t.rawOutput)??Nn(t.rawOutput);if(t.content!==null&&t.content!==void 0)return Dn(t.content)??Nn(t.content);if(t.result!==null&&t.result!==void 0)return Dn(t.result)??Nn(t.result)}function ha(t){let e=Wr(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?ya(n):"Grok CLI reported an error."}function ya(t){return (t.replace(Iu,"").split(/\r?\n/).map(n=>n.trim()).filter(Boolean)[0]??t.trim()).slice(0,500)}function ma(t){return Au.test(t)}function Cu(t){let e=Wr(t.modelUsage);return e?Object.keys(e)[0]??null:null}function Ou(t){let e=Wr(t.usage);if(!e)return null;let n=Wt(e.cache_read_input_tokens);return {inputTokens:Wt(e.input_tokens)+n,cachedInputTokens:n,outputTokens:Wt(e.output_tokens),costUsd:Wt(t.total_cost_usd)}}function Nu(t){let e=0,n=0,r=0,o=false,i=new Set;for(let s of t.split(`
13
+ `).flatMap(On)){if(s.type!=="usage")continue;let a=Wr(s.usage);if(!a)continue;let d=be(s.signature);if(d&&d.length>0){let l=`signature:${d}`;if(i.has(l))continue;i.add(l);}let c=Wt(a.cache_read_input_tokens);e+=Wt(a.input_tokens)+c,n+=c,r+=Wt(a.output_tokens),o=true;}return o?{inputTokens:e,cachedInputTokens:n,outputTokens:r,costUsd:0}:null}function Du(t,e){if(!Array.isArray(e.entries)||e.entries.length===0)return [];let n=[];for(let i of e.entries.slice(0,pa)){if(!dn(i))continue;let s=be(i.content)?.trim();if(!s)continue;let a=be(i.status)?.trim(),d=be(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>pa&&n.push(ga);let r=n.join(`
14
+ `),o=r.length>fa?`${r.slice(0,fa-1)}${ga}`:r;return [{timestamp:t,type:"info",content:o}]}function Lu(t,e){let n=be(e.type);if(n==="thought"){let r=be(e.data);return r===void 0?[]:[{timestamp:t,type:"thinking",content:r}]}if(n==="text"){let r=be(e.data);return r===void 0?[]:[{timestamp:t,type:"text",content:r}]}if(n==="plan")return Du(t,e);if(n==="tool_call"){let r=be(e.toolCallId),o=be(e.toolName)??be(e.title),i=e.rawInput===void 0?void 0:Nn(e.rawInput);return [{timestamp:t,type:"tool_use",toolUseId:r,toolName:o,toolInput:i}]}if(n==="tool_call_update"){let r=be(e.status);return r!=="completed"&&r!=="failed"&&r!=="error"?[]:[{timestamp:t,type:"tool_result",toolUseId:be(e.toolCallId),toolName:be(e.toolName)??be(e.title),resultPreview:Pu(e),isError:r!=="completed"||e.isError===true}]}if(n==="error"){let r=ha(e);return [{timestamp:t,type:"error",content:r,errorMessage:r}]}return []}var Hr,xu,Au,Iu,pa,fa,ga;exports.grokAdapter=void 0;var ri=L(()=>{u();rn();Mr();Ae();Ur();Hr="cli/grok",xu=new Set(["available_commands","usage","end"]),Au=/(?:rate[\s_-]*limit|quota|usage[\s_-]*limit|too many requests|limit(?:ed|ing)?\s+(?:exceeded|reached))/i,Iu=/\u001b\[[0-?]*[ -/]*[@-~]/g,pa=20,fa=4e3,ga="\u2026";exports.grokAdapter={command:"grok",createSessionId:()=>crypto$1.randomUUID(),meta:{displayName:"Grok",capabilities:{resume:true}},buildArgs(t,e){let{model:n,effort:r}=an(e.model),o=e.effort??r,i=e.resumeSessionId?["--resume",e.resumeSessionId]:e.providerSessionId?["--session-id",e.providerSessionId]:[],s=n?["--model",n]:[],a=n?dt("grok").some(T=>T.id===n):false,d=n&&a?Nt("grok",n):[],c=!o||d.length===0||d.includes(o)?o:void 0,l=ca(c),f=e.additionalArgs??[],g=T=>f.some(x=>x===T||x.startsWith(`${T}=`)),m=e.providerOptions,k=m?.alwaysApprove,h=m?.sandbox,v=g("--permission-mode")?[]:sa(e.mode),_=g("--always-approve")?[]:aa(k),w=g("--sandbox")?[]:da(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(On))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 On(t))if(e.type==="error"){let n=ha(e);return ma(Nn(e))?new exports.RateLimitError(n,Hr):new exports.ProviderError(n,Hr)}return null},interpretExit(t,e){if(t===0)return null;let n=ya(e)||`Grok CLI exited with code ${t}.`;return ma(e)?new exports.RateLimitError(n,Hr):new exports.ProviderError(n,Hr)},parseResultMeta(t){let n=t.split(`
16
+ `).flatMap(On).find(r=>r.type==="end");return n?{usage:Ou(n),model:Cu(n)}:{usage:Nu(t),model:null}},parseEvent(t,e){let n=e??new Date().toISOString();return On(t).flatMap(r=>Lu(n,r))},suppressOutputLine(t){let e=t.trim();if(!e.startsWith("{")||!e.endsWith("}"))return false;try{let n=JSON.parse(e);return dn(n)&&typeof n.type=="string"?xu.has(n.type):!1}catch{return false}}};});function Ln(t,e,n){if(n){let r=exports.BUILTIN_ADAPTERS[n];if(r?.parseEvent)return r.parseEvent(e,t);let o=Mu[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 Mu,bt=L(()=>{u();Yo();Qo();Zo();ei();ni();ua();ri();Yo();Qo();Zo();ei();ni();ri();on();exports.BUILTIN_ADAPTERS={codex:exports.codexAdapter,claude:exports.claudeAdapter,opencode:exports.opencodeAdapter,antigravity:ti,copilot:exports.copilotAdapter,grok:exports.grokAdapter},Mu={gemini:la};});var cn,oi=L(()=>{u();cn=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 _a(t,e){if(t===void 0||t==="")return e;let n=parseInt(t,10);return Number.isNaN(n)?e:n}function ii(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 wa(t=process.env){return {queryMs:_a(t.CREWX_TIMEOUT_QUERY,288e5),executeMs:_a(t.CREWX_TIMEOUT_EXECUTE,288e5),idleMs:ii(t)??6e5}}var Gr=L(()=>{u();});function ju(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 su(t){let e=st(t);return e?{inputTokens:e.inputTokens,outputTokens:e.outputTokens,cachedInputTokens:e.cachedInputTokens,costUsd:0}:null}function au(t,e,n=process.platform){return t==="copilot"&&n==="win32"&&e instanceof exports.ProviderError&&e.message.includes('CLI command "copilot" not found')}function ca(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=Dt({command:t,env:f,cwd:g,allowShellFallback:true}),k=Mt(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{}},T=()=>{w("SIGKILL");},U=setTimeout(()=>{v||(_=true,I?.stop(),w("SIGTERM"),setTimeout(T,Sn).unref());},c);U.unref();let I=l>0?new on({timeoutMs:l,onIdle:()=>{if(v)return;v=true,clearTimeout(U),w("SIGTERM"),setTimeout(T,Sn).unref();let O=Math.round(l/6e4);q(new Ut(`${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;I?.start();let ee=new string_decoder.StringDecoder("utf8"),S=new string_decoder.StringDecoder("utf8"),F="",pe="",Q="",ie="",q=O=>{O instanceof Error&&(O.stdout=F),d(O);};h.stdout.on("data",O=>{I?.refresh();let ne=ee.write(O);F+=ne,Q+=ne;let V=Q.split(`
24
- `);Q=V.pop()??"";for(let j of V)if(j.trim()&&(o?.onOutput?.(j,"stdout"),s?.extractFailure)){let H=s.extractFailure(j);if(H){v=true,clearTimeout(U),I?.stop(),w("SIGTERM"),setTimeout(T,Sn).unref(),q(H);return}}}),h.stderr.on("data",O=>{I?.refresh();let ne=S.write(O);pe+=ne,ie+=ne;let V=ie.split(`
25
- `);ie=V.pop()??"";for(let j of V)j.trim()&&o?.onOutput?.(j,"stderr");}),h.on("error",O=>{v=true,clearTimeout(U),I?.stop(),O.code==="ENOENT"?q(new exports.ProviderError(`CLI command "${t}" not found. Is ${n} installed?`,n)):q(new exports.ProviderError(`Spawn error: ${O.message}`,n));}),h.on("close",(O,ne)=>{if(v)return;v=true,clearTimeout(U),I?.stop();let V=ee.end(),j=S.end();V&&(F+=V,Q+=V),j&&(pe+=j,ie+=j),Q.trim()&&o?.onOutput?.(Q,"stdout"),ie.trim()&&o?.onOutput?.(ie,"stderr");let H=O??0;if(o?.onExitCode?.(H),_)return q(new jt(`Total runtime exceeded ${c}ms; process killed.`,n));if(ne)return q(new exports.ProviderError(`Process terminated by signal ${ne}`,n,{code:"PROVIDER_CRASHED",kind:"permanent"}));if(H!==0){if(s?.interpretExit){let te=s.interpretExit(H,pe);if(te){q(te);return}}q(new exports.ProviderError(`Process exited with code ${H}: ${pe.slice(0,500)}`,n));return}let me;try{me=s?s.extractText(F):iu(F);}catch(te){q(te instanceof Error?te:new exports.ProviderError(String(te),n));return}a({stdout:F,parsed:me});});})}function at(t,e){la.set(t,e);}function dt(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=la.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 Yo(o,s,t,e)}throw new exports.ProviderError(`Unsupported provider namespace: "${r}". Register a factory with registerProviderFactory('${r}', factory).`,t)}function ua(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 Sn;exports.ClientToolCallRequiredError=void 0;var la,Yo,ze=D(()=>{u();Qt();Lt();_t();Zt();Ko();Br();Zt();Sn=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"},la=new Map;Yo=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 ua(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 $u(t){let e=lt(t);return e?{inputTokens:e.inputTokens,outputTokens:e.outputTokens,cachedInputTokens:e.cachedInputTokens,costUsd:0}:null}function Bu(t,e,n=process.platform){return t==="copilot"&&n==="win32"&&e instanceof exports.ProviderError&&e.message.includes('CLI command "copilot" not found')}function va(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=jt({command:t,env:f,cwd:g,allowShellFallback:true}),k=$t(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",F=>{F.code!=="EPIPE"&&o?.onOutput?.(`stdin error: ${F.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=F=>{if(h.pid!==void 0)try{process.platform==="win32"?h.kill(F):process.kill(-h.pid,F);}catch{}},T=()=>{w("SIGKILL");},U=setTimeout(()=>{v||(_=true,I?.stop(),w("SIGTERM"),setTimeout(T,Mn).unref());},c);U.unref();let I=l>0?new cn({timeoutMs:l,onIdle:()=>{if(v)return;v=true,clearTimeout(U),w("SIGTERM"),setTimeout(T,Mn).unref();let F=Math.round(l/6e4);j(new Ft(`${n} produced no output for ${F}m (idle timeout). Process killed. The CLI may be waiting on interactive input or stuck \u2014 check the prompt or retry.`,n));}}):null;I?.start();let te=new string_decoder.StringDecoder("utf8"),S=new string_decoder.StringDecoder("utf8"),q="",fe="",Q="",se="",j=F=>{F instanceof Error&&(F.stdout=q),d(F);};h.stdout.on("data",F=>{I?.refresh();let B=te.write(F);q+=B,Q+=B;let K=Q.split(`
24
+ `);Q=K.pop()??"";for(let W of K)if(W.trim()&&(o?.onOutput?.(W,"stdout"),s?.extractFailure)){let H=s.extractFailure(W);if(H){v=true,clearTimeout(U),I?.stop(),w("SIGTERM"),setTimeout(T,Mn).unref(),j(H);return}}}),h.stderr.on("data",F=>{I?.refresh();let B=S.write(F);fe+=B,se+=B;let K=se.split(`
25
+ `);se=K.pop()??"";for(let W of K)W.trim()&&o?.onOutput?.(W,"stderr");}),h.on("error",F=>{v=true,clearTimeout(U),I?.stop(),F.code==="ENOENT"?j(new exports.ProviderError(`CLI command "${t}" not found. Is ${n} installed?`,n)):j(new exports.ProviderError(`Spawn error: ${F.message}`,n));}),h.on("close",(F,B)=>{if(v)return;v=true,clearTimeout(U),I?.stop();let K=te.end(),W=S.end();K&&(q+=K,Q+=K),W&&(fe+=W,se+=W),Q.trim()&&o?.onOutput?.(Q,"stdout"),se.trim()&&o?.onOutput?.(se,"stderr");let H=F??0;if(o?.onExitCode?.(H),_)return j(new qt(`Total runtime exceeded ${c}ms; process killed.`,n));if(B)return j(new exports.ProviderError(`Process terminated by signal ${B}`,n,{code:"PROVIDER_CRASHED",kind:"permanent"}));if(H!==0){if(s?.interpretExit){let re=s.interpretExit(H,fe);if(re){j(re);return}}j(new exports.ProviderError(`Process exited with code ${H}: ${fe.slice(0,500)}`,n));return}let ne;try{ne=s?s.extractText(q):ju(q);}catch(re){j(re instanceof Error?re:new exports.ProviderError(String(re),n));return}a({stdout:q,parsed:ne});});})}function ut(t,e){ba.set(t,e);}function pt(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=ba.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 si(o,s,t,e)}throw new exports.ProviderError(`Unsupported provider namespace: "${r}". Register a factory with registerProviderFactory('${r}', factory).`,t)}function Ea(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 Mn;exports.ClientToolCallRequiredError=void 0;var ba,si,Xe=L(()=>{u();nn();Bt();bt();rn();oi();Gr();rn();Mn=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"},ba=new Map;si=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 Ea(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 ca(this.adapter.command,e,this.providerStr,this.providerId,n,r,this.adapter)}catch(o){if(au(this.providerId,o)){let i=e[0]==="copilot"?e:["copilot",...e];try{return await ca("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=su(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 ki(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"&&dp.has(n.type)){let r=e??new Date().toISOString();return [{...n,timestamp:n.timestamp||r}]}}catch{}return []}var dp,wt=D(()=>{u();dp=new Set(["text","tool_use","tool_result","error","running_instruction","agent_call"]);});var Rd,bd;exports.VercelProviderRuntime=void 0;var $i=D(()=>{u();ze();Rd=10,bd=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,bd);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,bd),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 xd={};hr(xd,{registerApiProviders:()=>Td});function Td(t){at("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 Bi=D(()=>{u();ze();$i();});exports.AcpProtocolError=void 0;var Fi=D(()=>{u();exports.AcpProtocolError=class extends Error{constructor(n,r,o){super(n);this.code=r;this.data=o;}code;data;name="AcpProtocolError"};});var mg,hg,Ad,Id,yg;exports.AcpConnection=void 0;var lo=D(()=>{u();Qt();Fi();ze();Ko();Br();mg=-32e3,hg=2e3,Ad=3e4,Id=1e4,yg=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 _=Dt({command:n.command,env:o,cwd:i,allowShellFallback:r});s=Mt(_,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 T=this.stderrBuffer.split(`
30
- `);this.stderrBuffer=T.pop()??"";for(let x of T)x.trim()&&this.options.onStderr?.(x);}),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 on({timeoutMs:d,onIdle:()=>{let _=Math.round(d/6e4),w=new Ut(`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,T)=>{a.stdin.write(_,x=>{x?T(x):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 T=w.options;if(Array.isArray(T)&&T.length>0)return {outcome:{outcome:"selected",optionId:(T.find(U=>U.kind==="allow_once")??T.find(U=>U.kind?.startsWith("allow_"))??T[0]).optionId}}}return {outcome:{outcome:"cancelled"}}},sessionUpdate:async w=>{g.pendingUpdateCallback?.(w);}}),f);this.sdkConnection=m;let k=new Promise((_,w)=>{a.on("error",T=>{if(T.code==="ENOENT"){let U=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 ${U}`,"acp"));}else w(new exports.ProviderError(`ACP spawn error: ${T.message}`,"acp"));});}),h=this.doInitialize(m,e),v=new Promise((_,w)=>{setTimeout(()=>{w(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 ${Id}ms`));},Id).unref();});return Promise.race([n,r])}isAuthError(e){return typeof e=="object"&&e!==null&&"code"in e&&e.code===mg}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??yg,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 jt(`ACP prompt timeout after ${a}ms`,"acp"));},a).unref();}),f=new Promise((m,k)=>{let h=(T,x,U)=>{if(d)return;let I=x!=null?`signal=${x}`:`code=${String(T)}`;k(new exports.ProviderError(`ACP process terminated unexpectedly (${I}) [${U}]: ${this.collectedStderr.slice(-500)}`,"acp"));},v=(T,x)=>h(T,x,"exit"),_=(T,x)=>h(T,x,"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");},hg);});}get isConnected(){return !this.disposed&&this.sdkConnection!==null&&this.proc!==null}};});function Pd(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 _g;exports.AcpProviderRuntime=void 0;var qi=D(()=>{u();wt();lo();_g={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 va(this.adapter.command,e,this.providerStr,this.providerId,n,r,this.adapter)}catch(o){if(Bu(this.providerId,o)){let i=e[0]==="copilot"?e:["copilot",...e];try{return await va("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=$u(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 Si(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 qe(t,e){try{let n=JSON.parse(t);if(n!=null&&typeof n=="object"&&typeof n.type=="string"&&Fp.has(n.type)){let r=e??new Date().toISOString();return [{...n,timestamp:n.timestamp||r}]}}catch{}return []}var Fp,Et=L(()=>{u();Fp=new Set(["text","tool_use","tool_result","error","running_instruction","agent_call"]);});var qd,Hd;exports.VercelProviderRuntime=void 0;var Xi=L(()=>{u();Xe();qd=10,Hd=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??qd,Hd);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??qd,Hd),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}=_e("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}=_e("@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}=_e("@ai-sdk/openai");return s({apiKey:r||process.env.OPENAI_API_KEY,...o&&{baseURL:o}})(i)}case "api/anthropic":{let{createAnthropic:s}=_e("@ai-sdk/anthropic");return s({apiKey:r||process.env.ANTHROPIC_API_KEY,...o&&{baseURL:o}})(i)}case "api/google":{let{createGoogleGenerativeAI:s}=_e("@ai-sdk/google");return s({apiKey:r||process.env.GOOGLE_API_KEY})(i)}default:throw new exports.ProviderError(`Unsupported API provider: ${n}`,n)}}};});var zd={};br(zd,{registerApiProviders:()=>Wd});function Wd(t){ut("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 Yi=L(()=>{u();Xe();Xi();});exports.AcpProtocolError=void 0;var Qi=L(()=>{u();exports.AcpProtocolError=class extends Error{constructor(n,r,o){super(n);this.code=r;this.data=o;}code;data;name="AcpProtocolError"};});var fm,gm,Gd,Vd,mm;exports.AcpConnection=void 0;var _o=L(()=>{u();nn();Qi();Xe();oi();Gr();fm=-32e3,gm=2e3,Gd=3e4,Vd=1e4,mm=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 _=jt({command:n.command,env:o,cwd:i,allowShellFallback:r});s=$t(_,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 T=this.stderrBuffer.split(`
30
+ `);this.stderrBuffer=T.pop()??"";for(let x of T)x.trim()&&this.options.onStderr?.(x);}),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 cn({timeoutMs:d,onIdle:()=>{let _=Math.round(d/6e4),w=new Ft(`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,T)=>{a.stdin.write(_,x=>{x?T(x):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 T=w.options;if(Array.isArray(T)&&T.length>0)return {outcome:{outcome:"selected",optionId:(T.find(U=>U.kind==="allow_once")??T.find(U=>U.kind?.startsWith("allow_"))??T[0]).optionId}}}return {outcome:{outcome:"cancelled"}}},sessionUpdate:async w=>{g.pendingUpdateCallback?.(w);}}),f);this.sdkConnection=m;let k=new Promise((_,w)=>{a.on("error",T=>{if(T.code==="ENOENT"){let U=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 ${U}`,"acp"));}else w(new exports.ProviderError(`ACP spawn error: ${T.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 ${Vd}ms`));},Vd).unref();});return Promise.race([n,r])}isAuthError(e){return typeof e=="object"&&e!==null&&"code"in e&&e.code===fm}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??mm,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 qt(`ACP prompt timeout after ${a}ms`,"acp"));},a).unref();}),f=new Promise((m,k)=>{let h=(T,x,U)=>{if(d)return;let I=x!=null?`signal=${x}`:`code=${String(T)}`;k(new exports.ProviderError(`ACP process terminated unexpectedly (${I}) [${U}]: ${this.collectedStderr.slice(-500)}`,"acp"));},v=(T,x)=>h(T,x,"exit"),_=(T,x)=>h(T,x,"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");},gm);});}get isConnected(){return !this.disposed&&this.sdkConnection!==null&&this.proc!==null}};});function Kd(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 hm;exports.AcpProviderRuntime=void 0;var Zi=L(()=>{u();Et();_o();hm={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=ki(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=Si(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:Pd(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=_g[e.kind??""]??e.title??"unknown",o=Pd(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 Hi=D(()=>{u();wt();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 Wi=D(()=>{u();wt();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 cn;exports.copilotAcpAdapter=void 0;var zi=D(()=>{u();wt();cn="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?Y.resolve(t.cwd):process.cwd(),mcpServers:[]}},yoloModeId:`${cn}#autopilot`,buildEffortAction(t){return t?{type:"set_config_option",configId:"reasoning_effort",value:t}:null},resolveMode(t){return t.startsWith("https://")?t:{yolo:`${cn}#autopilot`,default:`${cn}#agent`,agent:`${cn}#agent`,plan:`${cn}#plan`,autopilot:`${cn}#autopilot`}[t]??null},parseEvent:je};});exports.opencodeAcpAdapter=void 0;var Gi=D(()=>{u();wt();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 mo=D(()=>{u();Hi();Wi();zi();Gi();Hi();Wi();zi();Gi();exports.ACP_ADAPTERS={codex:exports.codexAcpAdapter,claude:exports.claudeAcpAdapter,opencode:exports.opencodeAcpAdapter,copilot:exports.copilotAcpAdapter};});var Cd={};hr(Cd,{registerAcpProviders:()=>Sd});function Sd(t){if(t){at("acp",t);return}at("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 Vi=D(()=>{u();ze();qi();mo();ze();});function kg(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 Ji=D(()=>{u();exports.McpHttpTransport=class{endpoint;headers;timeoutMs;constructor(e){let n=kg(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 Ki=D(()=>{u();Ji();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 Nd={};hr(Nd,{RemoteProviderRuntime:()=>exports.RemoteProviderRuntime,createRemoteProviderFactory:()=>Od,resolveFileRemoteAgent:()=>Ig});function xg(t){let e=td.readFileSync(t,"utf-8"),n=jsYaml.load(e);return {agents:Array.isArray(n?.agents)?n.agents:void 0}}function Ag(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 Ig(t,e=xg,n=td.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=Ag(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=Y.resolve(Y.dirname(r),i.working_directory??".");return {agent:{...i,working_directory:a},provider:s}}function Od(t,e=dt){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 Pg(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 Xi=D(()=>{u();ze();Ki();exports.RemoteProviderRuntime=class{manager;agentId;constructor(e,n,r=dt){this.agentId=n.external_agent_id??e,this.manager=new exports.RemoteAgentManager;let o=Pg(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:Kd(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=hm[e.kind??""]??e.title??"unknown",o=Kd(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 es=L(()=>{u();Et();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:qe};});exports.codexAcpAdapter=void 0;var ts=L(()=>{u();Et();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:qe};});var gn;exports.copilotAcpAdapter=void 0;var ns=L(()=>{u();Et();gn="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?Y.resolve(t.cwd):process.cwd(),mcpServers:[]}},yoloModeId:`${gn}#autopilot`,buildEffortAction(t){return t?{type:"set_config_option",configId:"reasoning_effort",value:t}:null},resolveMode(t){return t.startsWith("https://")?t:{yolo:`${gn}#autopilot`,default:`${gn}#agent`,agent:`${gn}#agent`,plan:`${gn}#plan`,autopilot:`${gn}#autopilot`}[t]??null},parseEvent:qe};});exports.opencodeAcpAdapter=void 0;var rs=L(()=>{u();Et();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:qe};});exports.ACP_ADAPTERS=void 0;var Eo=L(()=>{u();es();ts();ns();rs();es();ts();ns();rs();exports.ACP_ADAPTERS={codex:exports.codexAcpAdapter,claude:exports.claudeAcpAdapter,opencode:exports.opencodeAcpAdapter,copilot:exports.copilotAcpAdapter};});var Xd={};br(Xd,{registerAcpProviders:()=>Jd});function Jd(t){if(t){ut("acp",t);return}ut("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 os=L(()=>{u();Xe();Zi();Eo();Xe();});function _m(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 is=L(()=>{u();exports.McpHttpTransport=class{endpoint;headers;timeoutMs;constructor(e){let n=_m(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 ss=L(()=>{u();is();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 Qd={};br(Qd,{RemoteProviderRuntime:()=>exports.RemoteProviderRuntime,createRemoteProviderFactory:()=>Yd,resolveFileRemoteAgent:()=>xm});function Rm(t){let e=fd.readFileSync(t,"utf-8"),n=jsYaml.load(e);return {agents:Array.isArray(n?.agents)?n.agents:void 0}}function Tm(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 xm(t,e=Rm,n=fd.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=Tm(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=Y.resolve(Y.dirname(r),i.working_directory??".");return {agent:{...i,working_directory:a},provider:s}}function Yd(t,e=pt){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 Am(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 as=L(()=>{u();Xe();ss();exports.RemoteProviderRuntime=class{manager;agentId;constructor(e,n,r=pt){this.agentId=n.external_agent_id??e,this.manager=new exports.RemoteAgentManager;let o=Am(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 Ud={};hr(Ud,{PluginProviderRuntime:()=>exports.PluginProviderRuntime,createPluginProviderFactory:()=>Ld});function Ld(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 Dd(t,e,n,r){let o=t.map(i=>i.replace(/\{model\}/g,e));return r&&o.push(n),o}function Cg(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 Og(t){for(let{pattern:e}of t)if(typeof e!="string")throw new Error("Error pattern must be a string")}function Ng(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 Yi=D(()=>{u();ze();Qt();exports.PluginProviderRuntime=class{constructor(e,n){this.config=n;this.providerStr=`plugin/${e}`,Cg(n.cli_command),Md(n.query_args),Md(n.execute_args),n.error_patterns&&Og(n.error_patterns),n.env&&Ng(n.env);}config;providerStr;async query(e,n){let r=n?.model??this.config.default_model??"default",o=Dd(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=Dd(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=Dt({command:this.config.cli_command,env:a,cwd:process.cwd(),resolution:this.config.prefer_local_bin?"local_first":"global_first",allowShellFallback:true}),c=Mt(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(`
39
+ `)}};});var nc={};br(nc,{PluginProviderRuntime:()=>exports.PluginProviderRuntime,createPluginProviderFactory:()=>tc});function tc(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 Zd(t,e,n,r){let o=t.map(i=>i.replace(/\{model\}/g,e));return r&&o.push(n),o}function Sm(t){if(!t||typeof t!="string")throw new Error("Plugin provider requires a cli_command")}function ec(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 Pm(t){for(let{pattern:e}of t)if(typeof e!="string")throw new Error("Error pattern must be a string")}function Cm(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 ds=L(()=>{u();Xe();nn();exports.PluginProviderRuntime=class{constructor(e,n){this.config=n;this.providerStr=`plugin/${e}`,Sm(n.cli_command),ec(n.query_args),ec(n.execute_args),n.error_patterns&&Pm(n.error_patterns),n.env&&Cm(n.env);}config;providerStr;async query(e,n){let r=n?.model??this.config.default_model??"default",o=Zd(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=Zd(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=jt({command:this.config.cli_command,env:a,cwd:process.cwd(),resolution:this.config.prefer_local_bin?"local_first":"global_first",allowShellFallback:true}),c=$t(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
40
  `);m=w.pop()??"";for(let T of w)T.trim()&&n?.onOutput?.(T,"stdout");}),l.stderr.on("data",v=>{let _=v.toString();g+=_,k+=_;let w=k.split(`
41
- `);k=w.pop()??"";for(let T of w)T.trim()&&n?.onOutput?.(T,"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 T of this.config.error_patterns)if(w.includes(T.pattern)){s(new exports.ProviderError(T.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 Ic(t){let e=o=>o.replace(/[.+^${}()|[\]\\]/g,"\\$&"),r=t.split("/").map(o=>o==="**"?".*":o.split("*").map(e).join("[^/]*"));return new RegExp(`^${r.join("\\/")}$`)}function qe(t,e){try{return Ic(e).test(t)}catch{return false}}u();u();u();Te();var Ds=60,wr=30,kr=80,No="o200k_base",Bc=`
41
+ `);k=w.pop()??"";for(let T of w)T.trim()&&n?.onOutput?.(T,"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 T of this.config.error_patterns)if(w.includes(T.pattern)){s(new exports.ProviderError(T.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 Yc(t){let e=o=>o.replace(/[.+^${}()|[\]\\]/g,"\\$&"),r=t.split("/").map(o=>o==="**"?".*":o.split("*").map(e).join("[^/]*"));return new RegExp(`^${r.join("\\/")}$`)}function Ve(t,e){try{return Yc(e).test(t)}catch{return false}}u();u();u();Ae();var zs=60,Tr=30,xr=80,Fo="o200k_base",cl=`
42
42
 
43
43
  ---
44
44
 
45
- `,vr="system_prompt\\n\\n---\\n\\nmessage",Do="message",Fc=16384,qc=Object.keys(Oo__default.default.special_tokens),Os,Ns;function Ms(){return Os??=jsTiktoken.getEncoding(No),Os}function Hc(){return Ns??=new lite.Tiktoken(Oo__default.default),Ns}function Wc(t){return qc.some(e=>t.includes(e))}function zc(t){return t===void 0?Fc:!Number.isFinite(t)||t<=0?0:Math.floor(t)}function Gc(t={}){let e=zc(t.pieceCacheMaxEntries),n=new Map,r=t.observePieceCache;return o=>{if(Wc(o))return r?.({type:"full_encode",reason:"special_token"}),Ms().encode(o).length;let i=0,s=new RegExp(Oo__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=Hc().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 Mo(t){let e=t.trim(),n=e.indexOf("/");return n===-1?e:e.slice(n+1)}function Vc(t){if(t===void 0)return Ds;if(!(!Number.isFinite(t)||!Number.isInteger(t))&&!(t<wr||t>kr))return t}function Jc(t){return typeof t=="number"&&Number.isInteger(t)&&t>0}function Kc(t){return /^gpt-5(?:$|[.-])/.test(t)}function Er(t={}){let e=t.provider?Mo(t.provider):"",n=t.model??"",r={provider:e,model:n,encoding:No,exact:Kc(n)};return r.exact||(r.fallbackReason="vendor_tokenizer_unavailable"),r}function Rr(t,e={}){return {tokenCount:Ms().encode(t).length,tokenizer:Er(e)}}function Xc(t){let e=t.systemPrompt??"";return e?`${e}${Bc}${t.message}`:t.message}function Lo(t,e){return e(Xc(t))}function Yc(t={},e={}){let n=Er(t),r=Gc(e);return {metadata:n,countTokens:r}}function Uo(t={}){return Yc(t)}function br(t){let e=t.provider,n=Mo(e),r=Er({provider:n,model:t.model}),o=Vc(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=Ne(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?Jc(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 Zc=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()),Ls=zod.z.object({include:zod.z.array(zod.z.string()).optional()}).optional(),el=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:Zc.optional(),skills:Ls}).catchall(zod.z.unknown()),tl=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()}),nl=zod.z.number().finite().int().min(wr).max(kr),rl=zod.z.object({inputBudgetPercent:nl.optional()}).catchall(zod.z.unknown()),ol=zod.z.object({continuity:rl.optional()}).catchall(zod.z.unknown()),il=zod.z.object({bin_resolution:zod.z.enum(["global_first","local_first"]).optional(),dreaming:ol.optional(),wi:zod.z.object({boards:zod.z.array(zod.z.unknown()).optional().catch(()=>{})}).catchall(zod.z.unknown()).optional().catch(()=>{})}).catchall(zod.z.unknown()),Us=zod.z.object({agents:zod.z.array(el).optional(),hooks:zod.z.array(zod.z.unknown()).optional(),settings:il.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 Ct=class extends Error{constructor(n,r){super(n);this.cause=r;this.name="ConfigLoadError";}cause};function Tr(t){if(!t||typeof t!="string"||!t.trim())throw new Ct("YAML content must be a non-empty string");let e;try{e=jsYaml.load(t);}catch(o){throw new Ct(`YAML parse error: ${o.message}`,o)}let n=dl(e),r=Us.safeParse(n);if(!r.success)throw new Ct(`Config validation error: ${r.error.message}`);return r.data}function xr(t){let e;try{e=td.readFileSync(t,"utf-8");}catch(n){throw new Ct(`Cannot read file: ${t}`,n)}return Tr(e)}function dl(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 Ot=Y.join("templates","agents"),Nt=Y.join("templates","workflows");function js(){try{let e=(typeof he=="function"?he:module$1.createRequire(typeof __filename<"u"?__filename:process.cwd()+"/")).resolve("@crewx/sdk/package.json");return Y.dirname(e)}catch{return null}}function Xt(t){if(t&&td.existsSync(t))return t;let e=process.env.CREWX_SDK_TEMPLATES_PATH;if(e&&td.existsSync(e))return e;let n=js();if(n){let o=Y.join(n,Ot);if(td.existsSync(o))return o}let r=[Y.join(__dirname,"..",Ot),Y.join(__dirname,"..","..",Ot),Y.join(__dirname,"..","..","..",Ot),Y.join(process.cwd(),"packages","sdk",Ot),Y.join(process.cwd(),Ot)];for(let o of r)if(td.existsSync(o))return o;throw new Error(`[@crewx/sdk] Templates directory not found.
46
- `+(n?` package anchor: ${Y.join(n,Ot)}
45
+ `,Ar="system_prompt\\n\\n---\\n\\nmessage",qo="message",ll=16384,ul=Object.keys(Bo__default.default.special_tokens),Hs,Ws;function Gs(){return Hs??=jsTiktoken.getEncoding(Fo),Hs}function pl(){return Ws??=new lite.Tiktoken(Bo__default.default),Ws}function fl(t){return ul.some(e=>t.includes(e))}function gl(t){return t===void 0?ll:!Number.isFinite(t)||t<=0?0:Math.floor(t)}function ml(t={}){let e=gl(t.pieceCacheMaxEntries),n=new Map,r=t.observePieceCache;return o=>{if(fl(o))return r?.({type:"full_encode",reason:"special_token"}),Gs().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=pl().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 Ho(t){let e=t.trim(),n=e.indexOf("/");return n===-1?e:e.slice(n+1)}function hl(t){if(t===void 0)return zs;if(!(!Number.isFinite(t)||!Number.isInteger(t))&&!(t<Tr||t>xr))return t}function yl(t){return typeof t=="number"&&Number.isInteger(t)&&t>0}function _l(t){return /^gpt-5(?:$|[.-])/.test(t)}function Ir(t={}){let e=t.provider?Ho(t.provider):"",n=t.model??"",r={provider:e,model:n,encoding:Fo,exact:_l(n)};return r.exact||(r.fallbackReason="vendor_tokenizer_unavailable"),r}function Sr(t,e={}){return {tokenCount:Gs().encode(t).length,tokenizer:Ir(e)}}function wl(t){let e=t.systemPrompt??"";return e?`${e}${cl}${t.message}`:t.message}function Wo(t,e){return e(wl(t))}function kl(t={},e={}){let n=Ir(t),r=ml(e);return {metadata:n,countTokens:r}}function zo(t={}){return kl(t)}function Pr(t){let e=t.provider,n=Ho(e),r=Ir({provider:n,model:t.model}),o=hl(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=Ue(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?yl(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 bl=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()),Vs=zod.z.object({include:zod.z.array(zod.z.string()).optional()}).optional(),El=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:bl.optional(),skills:Vs}).catchall(zod.z.unknown()),Rl=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()}),Tl=zod.z.number().finite().int().min(Tr).max(xr),xl=zod.z.object({inputBudgetPercent:Tl.optional()}).catchall(zod.z.unknown()),Al=zod.z.object({continuity:xl.optional()}).catchall(zod.z.unknown()),Il=zod.z.object({bin_resolution:zod.z.enum(["global_first","local_first"]).optional(),dreaming:Al.optional(),wi:zod.z.object({boards:zod.z.array(zod.z.unknown()).optional().catch(()=>{})}).catchall(zod.z.unknown()).optional().catch(()=>{})}).catchall(zod.z.unknown()),Ks=zod.z.object({agents:zod.z.array(El).optional(),hooks:zod.z.array(zod.z.unknown()).optional(),settings:Il.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 Dt=class extends Error{constructor(n,r){super(n);this.cause=r;this.name="ConfigLoadError";}cause};function Cr(t){if(!t||typeof t!="string"||!t.trim())throw new Dt("YAML content must be a non-empty string");let e;try{e=jsYaml.load(t);}catch(o){throw new Dt(`YAML parse error: ${o.message}`,o)}let n=Cl(e),r=Ks.safeParse(n);if(!r.success)throw new Dt(`Config validation error: ${r.error.message}`);return r.data}function Or(t){let e;try{e=fd.readFileSync(t,"utf-8");}catch(n){throw new Dt(`Cannot read file: ${t}`,n)}return Cr(e)}function Cl(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();function Lt(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function Js(t,e){let n={...t};for(let[r,o]of Object.entries(e))Lt(o)&&Lt(n[r])?n[r]=Js(n[r],o):n[r]=o;return n}function Go(t){let e=t?.filePath??Y.join(Hi.homedir(),".crewx","crewx.yaml"),n={mkdirSync:fd.mkdirSync,readFileSync:fd.readFileSync,renameSync:fd.renameSync,statSync:fd.statSync,writeFileSync:fd.writeFileSync,...t?.fileSystem??{}},r=null,o=null;function i(){try{return n.statSync(e).mtimeMs}catch{return null}}function s(){let d=i();if(d===null)return r=null,o=null,{};if(o!==null&&r===d)return o;let c=null;try{c=jsYaml.load(n.readFileSync(e,"utf-8"));}catch{c=null;}let l=Lt(c)?c:{};return o=l,r=d,l}return {get path(){return e},read(){let d=s();return Lt(d.settings)?d.settings:{}},update(d){let c=s(),l=Lt(c.settings)?c.settings:{},f=Js(l,d),g={...c,settings:f};return a(g),f},set(d,c){let l=s(),g={...Lt(l.settings)?l.settings:{},[d]:c};return a({...l,settings:g}),g},remove(d){let c=s(),l=Lt(c.settings)?c.settings:{};if(!Object.prototype.hasOwnProperty.call(l,d))return l;let f={...l};return delete f[d],a({...c,settings:f}),f}};function a(d){n.mkdirSync(Y.dirname(e),{recursive:true});let c=`${e}.tmp`;n.writeFileSync(c,jsYaml.dump(d)),n.renameSync(c,e),r=null,o=null;}}u();var Mt=Y.join("templates","agents"),Ut=Y.join("templates","workflows");function Xs(){try{let e=(typeof _e=="function"?_e:module$1.createRequire(typeof __filename<"u"?__filename:process.cwd()+"/")).resolve("@crewx/sdk/package.json");return Y.dirname(e)}catch{return null}}function en(t){if(t&&fd.existsSync(t))return t;let e=process.env.CREWX_SDK_TEMPLATES_PATH;if(e&&fd.existsSync(e))return e;let n=Xs();if(n){let o=Y.join(n,Mt);if(fd.existsSync(o))return o}let r=[Y.join(__dirname,"..",Mt),Y.join(__dirname,"..","..",Mt),Y.join(__dirname,"..","..","..",Mt),Y.join(process.cwd(),"packages","sdk",Mt),Y.join(process.cwd(),Mt)];for(let o of r)if(fd.existsSync(o))return o;throw new Error(`[@crewx/sdk] Templates directory not found.
46
+ `+(n?` package anchor: ${Y.join(n,Mt)}
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 jo(){let t=Xt();return {yamlPath:Y.join(t,"default.yaml"),dir:t}}function ul(t){if(t&&td.existsSync(t))return t;let e=process.env.CREWX_SDK_WORKFLOW_TEMPLATES_PATH;if(e&&td.existsSync(e))return e;let n=js();if(n){let o=Y.join(n,Nt);if(td.existsSync(o))return o}let r=[Y.join(__dirname,"..",Nt),Y.join(__dirname,"..","..",Nt),Y.join(__dirname,"..","..","..",Nt),Y.join(process.cwd(),"packages","sdk",Nt),Y.join(process.cwd(),Nt)];for(let o of r)if(td.existsSync(o))return o;throw new Error(`[@crewx/sdk] Workflow templates directory not found.
51
- `+(n?` package anchor: ${Y.join(n,Nt)}
50
+ Set CREWX_SDK_TEMPLATES_PATH or pass options.templatesPath.`)}function Vo(){let t=en();return {yamlPath:Y.join(t,"default.yaml"),dir:t}}function Wl(t){if(t&&fd.existsSync(t))return t;let e=process.env.CREWX_SDK_WORKFLOW_TEMPLATES_PATH;if(e&&fd.existsSync(e))return e;let n=Xs();if(n){let o=Y.join(n,Ut);if(fd.existsSync(o))return o}let r=[Y.join(__dirname,"..",Ut),Y.join(__dirname,"..","..",Ut),Y.join(__dirname,"..","..","..",Ut),Y.join(process.cwd(),"packages","sdk",Ut),Y.join(process.cwd(),Ut)];for(let o of r)if(fd.existsSync(o))return o;throw new Error(`[@crewx/sdk] Workflow templates directory not found.
51
+ `+(n?` package anchor: ${Y.join(n,Ut)}
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 it=class extends Error{constructor(e,n){let r=n.length>0?` Available: ${n.join(", ")}`:"";super(`Agent not found: "${e}".${r}`),this.name="AgentNotFoundError";}},pl={claude:{id:"claude",provider:"cli/claude"},copilot:{id:"copilot",provider:"cli/copilot"},codex:{id:"codex",provider:"cli/codex"}};function Ar(t,e){let n=t.startsWith("@")?t.slice(1):t,r=e.find(i=>i.id===n);if(r)return r;let o=pl[n];if(o)return o;throw new it(t,e.map(i=>i.id))}ze();Br();Kt();u();u();function du(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function cu(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function On(t){if(!du(t)||cu(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 Qo(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function pa(t){if(t)return t.slice(t.lastIndexOf("/")+1)}function lu(t,e){let n=t.providerOptions;if(Qo(n)){let i=pa(e),s=i?n[i]:void 0;return Qo(s)?{...s}:{...n}}let r=pa(e),o=r?t[r]:void 0;return Qo(o)?{...o}:void 0}function Fr(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?On(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=lu(i,s.provider);return a&&(s.providerOptions=a),s}function Zo(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 ei(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=Fr(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 ti(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 pu=[/^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],fu=/[;|&`$(){}!><\n\r]/,gu=2,mu=["*","**","*:*","* *","**/*"];function hu(){let t={};for(let[e,n]of Object.entries(process.env))n!==void 0&&(pu.some(r=>r.test(e))||(t[e]=n));return t}function yu(t){if(fu.test(t))throw new Error(`exec blocked: shell metacharacter detected in "${t}"`)}function _u(t){return /^npx\s+@crewx\/[\w-]+/.test(t)}function wu(t){if(mu.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 ku(t,e){let n=e.allow??[],r=e.deny??[];for(let o of [...n,...r])wu(o);return r.some(o=>qe(t,o))?false:_u(t)?true:n.some(o=>qe(t,o))}var fa=false;function vu(t){fa=t;}function Nn(t){if(!fa)return;let e=JSON.stringify({span:"template_exec",...t,timestamp:new Date().toISOString()});console.error(e);}function Eu(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 ga(t,e){let n=Date.now(),r=parseInt(process.env.CREWX_EXEC_DEPTH??"0",10);if(isNaN(r)||r>=gu)return Nn({command:t,status:"denied",reason:"invalid or max recursion depth"}),"(exec blocked: max recursion depth reached)";try{yu(t);}catch{return Nn({command:t,status:"denied",reason:"shell metacharacter detected"}),`(exec blocked: shell metacharacter detected in "${t}")`}if(!ku(t,e))return Nn({command:t,status:"denied",reason:"not in allow list"}),`(exec blocked: ${t})`;try{let o=Eu(t),[i,...s]=o;if(!i)return `(exec failed: ${t})`;let a=hu(),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 Nn({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 ct=class extends Error{constructor(e,n){let r=n.length>0?` Available: ${n.join(", ")}`:"";super(`Agent not found: "${e}".${r}`),this.name="AgentNotFoundError";}},zl={claude:{id:"claude",provider:"cli/claude"},copilot:{id:"copilot",provider:"cli/copilot"},codex:{id:"codex",provider:"cli/codex"}};function Nr(t,e){let n=t.startsWith("@")?t.slice(1):t,r=e.find(i=>i.id===n);if(r)return r;let o=zl[n];if(o)return o;throw new ct(t,e.map(i=>i.id))}Xe();Gr();Zt();u();u();function Fu(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function qu(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function jn(t){if(!Fu(t)||qu(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 ai(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function Ra(t){if(t)return t.slice(t.lastIndexOf("/")+1)}function Hu(t,e){let n=t.providerOptions;if(ai(n)){let i=Ra(e),s=i?n[i]:void 0;return ai(s)?{...s}:{...n}}let r=Ra(e),o=r?t[r]:void 0;return ai(o)?{...o}:void 0}function Vr(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?jn(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=Hu(i,s.provider);return a&&(s.providerOptions=a),s}function di(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 ci(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=Vr(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 li(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 zu=[/^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],Gu=/[;|&`$(){}!><\n\r]/,Vu=2,Ku=["*","**","*:*","* *","**/*"];function Ju(){let t={};for(let[e,n]of Object.entries(process.env))n!==void 0&&(zu.some(r=>r.test(e))||(t[e]=n));return t}function Xu(t){if(Gu.test(t))throw new Error(`exec blocked: shell metacharacter detected in "${t}"`)}function Yu(t){return /^npx\s+@crewx\/[\w-]+/.test(t)}function Qu(t){if(Ku.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 Zu(t,e){let n=e.allow??[],r=e.deny??[];for(let o of [...n,...r])Qu(o);return r.some(o=>Ve(t,o))?false:Yu(t)?true:n.some(o=>Ve(t,o))}var Ta=false;function ep(t){Ta=t;}function $n(t){if(!Ta)return;let e=JSON.stringify({span:"template_exec",...t,timestamp:new Date().toISOString()});console.error(e);}function tp(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 xa(t,e){let n=Date.now(),r=parseInt(process.env.CREWX_EXEC_DEPTH??"0",10);if(isNaN(r)||r>=Vu)return $n({command:t,status:"denied",reason:"invalid or max recursion depth"}),"(exec blocked: max recursion depth reached)";try{Xu(t);}catch{return $n({command:t,status:"denied",reason:"shell metacharacter detected"}),`(exec blocked: shell metacharacter detected in "${t}")`}if(!Zu(t,e))return $n({command:t,status:"denied",reason:"not in allow list"}),`(exec blocked: ${t})`;try{let o=tp(t),[i,...s]=o;if(!i)return `(exec failed: ${t})`;let a=Ju(),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 $n({command:t,status:"allowed",allowed_by:"policy",duration_ms:c}),`<exec-output cmd="${t}">
56
56
  ${d.trim()}
57
- </exec-output>`}catch{return Nn({command:t,status:"error",reason:"execution failed"}),`(exec failed: ${t})`}}u();function ma(t){return t==null?"":String(t)}u();function ha(t,e){return `\`\`\`${e?.hash?.lang??""}
57
+ </exec-output>`}catch{return $n({command:t,status:"error",reason:"execution failed"}),`(exec failed: ${t})`}}u();function Aa(t){return t==null?"":String(t)}u();function Ia(t,e){return `\`\`\`${e?.hash?.lang??""}
58
58
  ${t??""}
59
- \`\`\``}u();u();function ni(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 ri(t){let e=t.toISOString();return `${e.slice(0,10)} ${e.slice(11,19)} UTC`}function oi(t,e){if(!t)return "";if(t.length<=e)return t;let n=t.length-e;return `${t.substring(0,e)} (...+${n} chars)`}function ii(t){return Array.isArray(t)||typeof t=="string"?t.length:0}function si(t){return typeof t!="string"?"":t.replace(/\{\{/g,"&#123;&#123;").replace(/\}\}/g,"&#125;&#125;")}var ya=["B","KB","MB","GB"];function ai(t){if(t===0)return "0 B";let e=Math.min(Math.floor(Math.log(t)/Math.log(1024)),ya.length-1);return `${Math.round(t/Math.pow(1024,e)*100)/100} ${ya[e]}`}function di(t){if(!t)return "";try{let e=t instanceof Date?t:new Date(t);return isNaN(e.getTime())?"":ri(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(ga(o,n)):"(exec disabled)"}),e.registerHelper("include",function(o){return new e.SafeString(ma(o))}),e.registerHelper("fenced_code",function(o,i){return new e.SafeString(ha(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 oi(o,i)}),e.registerHelper("length",function(o){return ii(o)}),e.registerHelper("escapeHandlebars",function(o){return new e.SafeString(si(o))}),e.registerHelper("formatFileSize",function(o){return ai(o)}),e.registerHelper("formatTimestamp",function(o){return di(o)});}async render(e,n={}){return this.hbs.compile(e,{noEscape:true})(n)}};u();u();var qr=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?Y.resolve(e[0]):Y.resolve(Y.join(...e))}isAbsolute(e){return Y.isAbsolute(e)}async readdir(e){try{return await promises.readdir(e)}catch{return []}}},Ft=new qr;var qt=class{docs=new Map;fs;constructor(e){this.fs=e??Ft;}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 ui(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 pi(t){let e=t.toISOString();return `${e.slice(0,10)} ${e.slice(11,19)} UTC`}function fi(t,e){if(!t)return "";if(t.length<=e)return t;let n=t.length-e;return `${t.substring(0,e)} (...+${n} chars)`}function gi(t){return Array.isArray(t)||typeof t=="string"?t.length:0}function mi(t){return typeof t!="string"?"":t.replace(/\{\{/g,"&#123;&#123;").replace(/\}\}/g,"&#125;&#125;")}var Sa=["B","KB","MB","GB"];function hi(t){if(t===0)return "0 B";let e=Math.min(Math.floor(Math.log(t)/Math.log(1024)),Sa.length-1);return `${Math.round(t/Math.pow(1024,e)*100)/100} ${Sa[e]}`}function yi(t){if(!t)return "";try{let e=t instanceof Date?t:new Date(t);return isNaN(e.getTime())?"":pi(e)}catch{return ""}}var Bn=class{hbs;execPolicy;execEnabled;constructor(e={}){this.hbs=Ye__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(xa(o,n)):"(exec disabled)"}),e.registerHelper("include",function(o){return new e.SafeString(Aa(o))}),e.registerHelper("fenced_code",function(o,i){return new e.SafeString(Ia(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 fi(o,i)}),e.registerHelper("length",function(o){return gi(o)}),e.registerHelper("escapeHandlebars",function(o){return new e.SafeString(mi(o))}),e.registerHelper("formatFileSize",function(o){return hi(o)}),e.registerHelper("formatTimestamp",function(o){return yi(o)});}async render(e,n={}){return this.hbs.compile(e,{noEscape:true})(n)}};u();u();var Kr=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?Y.resolve(e[0]):Y.resolve(Y.join(...e))}isAbsolute(e){return Y.isAbsolute(e)}async readdir(e){try{return await promises.readdir(e)}catch{return []}}},zt=new Kr;var Gt=class{docs=new Map;fs;constructor(e){this.fs=e??zt;}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 ve=class extends Error{constructor(n,r,o){super(n);this.layoutId=r;this.cause=o;this.name="LayoutLoadError";}layoutId;cause},ct=class extends Error{constructor(n,r=[],o){super(n);this.errors=r;this.cause=o;this.name="PropsValidationError";}errors;cause};var Ou={validationMode:"lenient",fallbackLayoutId:"crewx/default"},Mn=class{layouts=new Map;options;constructor(e){this.options={...Ou,...e,templatesPath:e?.templatesPath??Xt()},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(!td.existsSync(e))throw new ve(`Templates directory not found: ${e}`,void 0,new Error(`Directory does not exist: ${e}`));try{let n=td.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=Y__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=td.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 Ht(t){return String(Math.floor(Math.abs(t))).padStart(2,"0")}function Ln(t){if(!(t instanceof Date)||Number.isNaN(t.getTime()))return "";let e=-t.getTimezoneOffset(),n=e>=0?"+":"-";return `${t.getFullYear()}-${Ht(t.getMonth()+1)}-${Ht(t.getDate())}T${Ht(t.getHours())}:${Ht(t.getMinutes())}:${Ht(t.getSeconds())}${n}${Ht(e/60)}:${Ht(e%60)}`}function Nu(t){return t.map(e=>{let n=typeof e?.timestamp=="number"?e.timestamp:null;return n===null?e:{...e,created_at:Ln(new Date(n))}})}function Du(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 va(...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=Du(n),d=a.length>0?a[0]:"",c=Date.now(),l={messages:Nu(n),platform:typeof r=="string"?r:"",messagesCount:n.length,agentIds:a,primaryAgentId:d,currentAgentId:o,threadId:i,now:Ln(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 ct("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 jn=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",va),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 ct&&o.errors&&o.errors.length>0){let i=o.errors[0];if(i)throw new ct(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 ci="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+=ci[o%62]);}for(;n.length<t;)n+=ci[crypto$1.randomBytes(1)[0]%62];return n}function Ve(t){return `${t}_${Mu(8)}`}function Lu(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+=ci[s%62];return `${t}_${i}`}u();function Ra(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 $n=class{_emitter=new events.EventEmitter;on(e,n){let r=Ra(e,n);return this._emitter.on(e,r),()=>this._emitter.off(e,r)}once(e,n){let r=Ra(e,n);return this._emitter.once(e,r),()=>this._emitter.off(e,r)}emit(e,n){this._emitter.emit(e,n);}};u();function li(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 ui=new async_hooks.AsyncLocalStorage;function $u(){return ui}function Bu(t,e){return ui.run(t,e)}function pi(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=ui.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}}_t();u();var Fu=/^-\s*Status:\s*active/m,qu=/^---\n([\s\S]*?)\n---/,Hu=/^type:\s*goal\s*$/m;async function ba(t,e=Ft,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 Ee=class extends Error{constructor(n,r,o){super(n);this.layoutId=r;this.cause=o;this.name="LayoutLoadError";}layoutId;cause},ft=class extends Error{constructor(n,r=[],o){super(n);this.errors=r;this.cause=o;this.name="PropsValidationError";}errors;cause};var up={validationMode:"lenient",fallbackLayoutId:"crewx/default"},Fn=class{layouts=new Map;options;constructor(e){this.options={...up,...e,templatesPath:e?.templatesPath??en()},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 Ee(`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 Ee("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 Ee(`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(!fd.existsSync(e))throw new Ee(`Templates directory not found: ${e}`,void 0,new Error(`Directory does not exist: ${e}`));try{let n=fd.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=Y__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 Ee(`Failed to read layouts directory: ${e}`,void 0,n instanceof Error?n:new Error(String(n)))}}loadLayoutFile(e,n){try{let r=fd.readFileSync(e,"utf-8");if(!r||r.trim().length===0)throw console.warn(`Empty YAML file: ${e}, will use fallback`),new Ee(`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 Ee(`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 Ee(`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 Ee(`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 Ee(`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 Vt(t){return String(Math.floor(Math.abs(t))).padStart(2,"0")}function qn(t){if(!(t instanceof Date)||Number.isNaN(t.getTime()))return "";let e=-t.getTimezoneOffset(),n=e>=0?"+":"-";return `${t.getFullYear()}-${Vt(t.getMonth()+1)}-${Vt(t.getDate())}T${Vt(t.getHours())}:${Vt(t.getMinutes())}:${Vt(t.getSeconds())}${n}${Vt(e/60)}:${Vt(e%60)}`}function pp(t){return t.map(e=>{let n=typeof e?.timestamp=="number"?e.timestamp:null;return n===null?e:{...e,created_at:qn(new Date(n))}})}function fp(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 Na(...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=fp(n),d=a.length>0?a[0]:"",c=Date.now(),l={messages:pp(n),platform:typeof r=="string"?r:"",messagesCount:n.length,agentIds:a,primaryAgentId:d,currentAgentId:o,threadId:i,now:qn(new Date(c))};return e.fn(l)}u();var Hn=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 ft("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 Wn=class{handlebars;propsValidator;constructor(e){this.handlebars=Ye__namespace.default.create(),this.propsValidator=e??new Hn,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",Na),Ye__namespace.default.helpers.each&&this.handlebars.registerHelper("each",Ye__namespace.default.helpers.each),Ye__namespace.default.helpers.if&&this.handlebars.registerHelper("if",Ye__namespace.default.helpers.if),Ye__namespace.default.helpers.unless&&this.handlebars.registerHelper("unless",Ye__namespace.default.helpers.unless),Ye__namespace.default.helpers.with&&this.handlebars.registerHelper("with",Ye__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 Ye__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 ft&&o.errors&&o.errors.length>0){let i=o.errors[0];if(i)throw new ft(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 _i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";function gp(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+=_i[o%62]);}for(;n.length<t;)n+=_i[crypto$1.randomBytes(1)[0]%62];return n}function Qe(t){return `${t}_${gp(8)}`}function mp(t,e){let{createHash:n}=_e("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+=_i[s%62];return `${t}_${i}`}u();function La(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 zn=class{_emitter=new events.EventEmitter;on(e,n){let r=La(e,n);return this._emitter.on(e,r),()=>this._emitter.off(e,r)}once(e,n){let r=La(e,n);return this._emitter.once(e,r),()=>this._emitter.off(e,r)}emit(e,n){this._emitter.emit(e,n);}};u();function wi(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 ki=new async_hooks.AsyncLocalStorage;function _p(){return ki}function wp(t,e){return ki.run(t,e)}function vi(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=ki.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}}bt();u();var kp=/^-\s*Status:\s*active/m,vp=/^---\n([\s\S]*?)\n---/,bp=/^type:\s*goal\s*$/m;async function Ma(t,e=zt,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=qu.exec(c);!l||!Hu.test(l[1])||Fu.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=vp.exec(c);!l||!bp.test(l[1])||kp.test(c)&&s.push(c);}return s.join(`
64
64
  ---
65
- `)}u();function Wu(){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 Ta(t,e=Ft){let n=e.resolvePath(t,`${Wu()}.md`);return await e.exists(n)?e.readFile(n):""}u();Qt();_t();function fi(t){if(t.startsWith("cli/"))return exports.BUILTIN_ADAPTERS[t.slice(4)]}function Gu(t,e={}){if(!t.startsWith("cli/"))return true;let r=(e.lookupAdapter??fi)(t);if(!r?.command)return false;let o=Tn(r.command,{env:e.env});return Y__namespace.default.isAbsolute(o)}function xa(t,e={}){if(!Array.isArray(t))return t;if(t.length===0)return "cli/claude";for(let n of t)if(Gu(n,e))return n;return t[0]}u();var Bn=new async_hooks.AsyncLocalStorage;function gi(t){if(t)return {parentTaskId:t.parentTaskId??null,rootTraceId:t.rootTraceId,callerAgentId:t.callerAgentId??null}}u();u();var Hr="<crewx_card";function Fn(t){return t===" "||t===" "||t===`
66
- `||t==="\r"||t==="\f"}function Ju(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 Ku(t){return t===void 0||Fn(t)||t==="/"||t===">"}function Aa(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 Xu(t,e){if(t[e]==='"'||t[e]==="'")return Aa(t,e);let n=e;for(;n<t.length&&!Fn(t[n])&&t[n]!==">";)n++;return {end:n,value:t.slice(e,n)}}function Yu(t,e){let n=Object.create(null),r=e+Hr.length,o=false;for(;r<t.length;){let i=t[r];if(i===">")return {end:r+1,closed:true,attrs:n,privileged:o};if(Fn(i)||i==="/"){r++;continue}if(i==='"'||i==="'"){r=Aa(t,r).end;continue}let s=r;for(;r<t.length&&Ju(t[r]);)r++;if(r===s){r++;continue}let a=t.slice(s,r);for(a==="proof"&&(o=true);r<t.length&&Fn(t[r]);)r++;if(t[r]!=="="){n[a]="";continue}for(r++;r<t.length&&Fn(t[r]);)r++;let d=Xu(t,r);n[a]=d.value,r=d.end;}return {end:t.length,closed:false,attrs:n,privileged:o}}function mi(t,e){let n=Yu(t,e);return {start:e,end:n.end,raw:t.slice(e,n.end),closed:n.closed,attrs:n.attrs,privileged:n.privileged}}function qn(t){let e=[],n=0;for(;n<t.length;){let r=t.indexOf(Hr,n);if(r<0)break;if(!Ku(t[r+Hr.length])){n=r+Hr.length;continue}let o=mi(t,r);if(e.push(o),!o.closed)break;n=o.end;}return e}function Ia(t){return t&&qn(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 Qu=/(?:proof|token|secret|password|cookie|authorization|private[_-]?key|stack|exception|plugin[_-]?text)/i,Zu=/(?:url|uri|endpoint|path|file(?:name|path)?|cwd|directory|dir|folder)$/i,ep=/<\/?[A-Za-z][^>]*>/,tp=/^(?:[A-Za-z]:[\\/]|\\\\|~[\\/]|\/)/,np=/^(?:https?|file|ftp|ws|wss):\/\//i;function Je(){throw new R("INPUT_INVALID","JSON value is not projection-safe")}function rp(t){let e=Object.getPrototypeOf(t);return e===Object.prototype||e===null}function hi(t,e,n,r){if(e>8&&Je(),t===null||typeof t=="string"||typeof t=="boolean")return typeof t=="string"&&(ep.test(t)||np.test(t)||tp.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=>hi(s,e+1,n));rp(o)||Je();let i={};for(let[s,a]of Object.entries(t))(Qu.test(s)||Zu.test(s))&&Je(),i[s]=hi(a,e+1,n,s);return i}finally{n.delete(o);}}function se(t){let e=hi(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 yi(t){return Array.isArray(t)?t.map(yi):t!==null&&typeof t=="object"?Object.fromEntries(Object.keys(t).sort().map(e=>[e,yi(t[e])])):t}function Pa(t){return ye(yi(t))}function Hn(t){return Buffer.byteLength(t,"utf8")}var Sa="[workflow card omitted from AI context]",op="[workflow UI instance omitted from AI context]",ip=/\{\s*"instanceId"\s*:\s*"uic_[A-Za-z0-9_-]+"\s*\}/g;function Wr(t){return typeof t=="string"?t.replace(ip,op):""}function zr(t){if(typeof t!="string"||t.length===0)return "";let e="",n=0;for(let r of qn(t))if(e+=t.slice(n,r.start),e+=r.privileged?Sa:r.raw,n=r.end,!r.closed)break;return e+=t.slice(n),e}function sp(t){return t.replace(/</g,"&lt;").replace(/>/g,"&gt;")}function ap(t,e){if(typeof t!="string")return "";let n=e?zr(t):t,r=e?Wr(n):n;return sp(r)}function _i(t){return t.map(e=>({...e,text:ap(e.text,e.isAssistant)}))}function sn(t,e){let n=_i(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=se(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 wi(t){return _i(t.messages.map(e=>({text:e.text,isAssistant:e.isAssistant,timestamp:e.timestamp,metadata:e.metadata,files:void 0})))}u();_t();wt();u();u();var oe=class{resolveDbPath(){return process.env.CREWX_DB?process.env.CREWX_DB:process.env.CREWX_TRACES_DB?process.env.CREWX_TRACES_DB:Y.join(Di__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 td.existsSync(e??this.resolveDbPath())}};u();var Ca=32*1024*1024;function J(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 journal_size_limit = ${Ca}`),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 Oa=new Set,fp={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 vi(t,e){return (t.get(`SELECT count(*) as cnt FROM sqlite_master WHERE type='table' AND name='${e}'`)?.cnt??0)>0}function gp(t,e){if(e>0||!vi(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(fp))r.has(o)||t.run(`ALTER TABLE tasks ADD COLUMN ${o} ${i}`);}var mp={"0002_normalize_task_names":{workspace_name:"TEXT",project_name:"TEXT"},"0015_panoramic_gorilla_man":{project_id:"TEXT",workspace_id:"TEXT"}};function hp(t,e,n){if(!vi(t,"__drizzle_migrations")||!vi(t,"tasks"))return;let r=t.all(n`SELECT hash FROM __drizzle_migrations`),o=new Set(r.map(s=>s.hash)),i=JSON.parse(td.readFileSync(Y__namespace.default.join(e,"meta/_journal.json"),"utf-8"));for(let s of i.entries){let a=mp[s.tag];if(!a)continue;let d=Y__namespace.default.join(e,`${s.tag}.sql`);if(!td.existsSync(d))continue;let c=td.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 yp(t,e,n){let r=t.all(n`SELECT hash FROM __drizzle_migrations`),o=new Set(r.map(s=>s.hash)),i=JSON.parse(td.readFileSync(Y__namespace.default.join(e,"meta/_journal.json"),"utf-8"));for(let s of i.entries){let a=Y__namespace.default.join(e,`${s.tag}.sql`);if(!td.existsSync(a))continue;let d=td.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 Vr(t){let{migrate:e}=he("drizzle-orm/better-sqlite3/migrator"),{sql:n}=he("drizzle-orm"),r=[Y__namespace.default.join(__dirname,"../migrations"),Y__namespace.default.join(__dirname,"migrations"),Y__namespace.default.join(__dirname,"../../../../drizzle/migrations"),Y__namespace.default.join(process.cwd(),"drizzle/migrations")],o=r.find(c=>td.existsSync(Y__namespace.default.join(c,"meta/_journal.json")));if(!o)throw new Error(`migrations folder not found. Searched:
65
+ `)}u();function Ep(){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 Ua(t,e=zt){let n=e.resolvePath(t,`${Ep()}.md`);return await e.exists(n)?e.readFile(n):""}u();nn();bt();function bi(t){if(t.startsWith("cli/"))return exports.BUILTIN_ADAPTERS[t.slice(4)]}function Tp(t,e={}){if(!t.startsWith("cli/"))return true;let r=(e.lookupAdapter??bi)(t);if(!r?.command)return false;let o=Cn(r.command,{env:e.env});return Y__namespace.default.isAbsolute(o)}function ja(t,e={}){if(!Array.isArray(t))return t;if(t.length===0)return "cli/claude";for(let n of t)if(Tp(n,e))return n;return t[0]}u();var Gn=new async_hooks.AsyncLocalStorage;function Ei(t){if(t)return {parentTaskId:t.parentTaskId??null,rootTraceId:t.rootTraceId,callerAgentId:t.callerAgentId??null}}u();u();var Jr="<crewx_card";function Vn(t){return t===" "||t===" "||t===`
66
+ `||t==="\r"||t==="\f"}function Ap(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 Ip(t){return t===void 0||Vn(t)||t==="/"||t===">"}function $a(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 Sp(t,e){if(t[e]==='"'||t[e]==="'")return $a(t,e);let n=e;for(;n<t.length&&!Vn(t[n])&&t[n]!==">";)n++;return {end:n,value:t.slice(e,n)}}function Pp(t,e){let n=Object.create(null),r=e+Jr.length,o=false;for(;r<t.length;){let i=t[r];if(i===">")return {end:r+1,closed:true,attrs:n,privileged:o};if(Vn(i)||i==="/"){r++;continue}if(i==='"'||i==="'"){r=$a(t,r).end;continue}let s=r;for(;r<t.length&&Ap(t[r]);)r++;if(r===s){r++;continue}let a=t.slice(s,r);for(a==="proof"&&(o=true);r<t.length&&Vn(t[r]);)r++;if(t[r]!=="="){n[a]="";continue}for(r++;r<t.length&&Vn(t[r]);)r++;let d=Sp(t,r);n[a]=d.value,r=d.end;}return {end:t.length,closed:false,attrs:n,privileged:o}}function Ri(t,e){let n=Pp(t,e);return {start:e,end:n.end,raw:t.slice(e,n.end),closed:n.closed,attrs:n.attrs,privileged:n.privileged}}function Kn(t){let e=[],n=0;for(;n<t.length;){let r=t.indexOf(Jr,n);if(r<0)break;if(!Ip(t[r+Jr.length])){n=r+Jr.length;continue}let o=Ri(t,r);if(e.push(o),!o.closed)break;n=o.end;}return e}function Ba(t){return t&&Kn(t).find(r=>!!r.attrs.run_id?.trim())?.attrs.run_id?.trim()||void 0}u();u();var E=class extends Error{constructor(n,r=n,o){super(r);this.code=n;this.currentRevision=o;}code;currentRevision;name="UiRuntimeError"},Re=class extends Error{constructor(n){super("UI instance database operation will be retried");this.cause=n;}cause;name="UiRetryableDatabaseError"},Ce=class extends Error{constructor(n){super("UI instance revision reservation conflict");this.currentRevision=n;}currentRevision;name="UiReservationConflictError"};var Cp=/(?:proof|token|secret|password|cookie|authorization|private[_-]?key|stack|exception|plugin[_-]?text)/i,Op=/(?:url|uri|endpoint|path|file(?:name|path)?|cwd|directory|dir|folder)$/i,Np=/<\/?[A-Za-z][^>]*>/,Dp=/^(?:[A-Za-z]:[\\/]|\\\\|~[\\/]|\/)/,Lp=/^(?:https?|file|ftp|ws|wss):\/\//i;function Ze(){throw new E("INPUT_INVALID","JSON value is not projection-safe")}function Mp(t){let e=Object.getPrototypeOf(t);return e===Object.prototype||e===null}function Ti(t,e,n,r){if(e>8&&Ze(),t===null||typeof t=="string"||typeof t=="boolean")return typeof t=="string"&&(Np.test(t)||Lp.test(t)||Dp.test(t))&&Ze(),t;if(typeof t=="number")return Number.isFinite(t)||Ze(),t;(typeof t!="object"||t===void 0||typeof t=="function"||typeof t=="bigint")&&Ze();let o=t;n.has(o)&&Ze(),n.add(o);try{if(Array.isArray(t))return t.map(s=>Ti(s,e+1,n));Mp(o)||Ze();let i={};for(let[s,a]of Object.entries(t))(Cp.test(s)||Op.test(s))&&Ze(),i[s]=Ti(a,e+1,n,s);return i}finally{n.delete(o);}}function de(t){let e=Ti(t,0,new Set);return (e===null||Array.isArray(e)||typeof e!="object")&&Ze(),e}function we(t){try{let e=JSON.stringify(t);return e===void 0&&Ze(),e}catch{Ze();}}function xi(t){return Array.isArray(t)?t.map(xi):t!==null&&typeof t=="object"?Object.fromEntries(Object.keys(t).sort().map(e=>[e,xi(t[e])])):t}function Fa(t){return we(xi(t))}function Jn(t){return Buffer.byteLength(t,"utf8")}var qa="[workflow card omitted from AI context]",Up="[workflow UI instance omitted from AI context]",jp=/\{\s*"instanceId"\s*:\s*"uic_[A-Za-z0-9_-]+"\s*\}/g;function Xr(t){return typeof t=="string"?t.replace(jp,Up):""}function Yr(t){if(typeof t!="string"||t.length===0)return "";let e="",n=0;for(let r of Kn(t))if(e+=t.slice(n,r.start),e+=r.privileged?qa:r.raw,n=r.end,!r.closed)break;return e+=t.slice(n),e}function $p(t){return t.replace(/</g,"&lt;").replace(/>/g,"&gt;")}function Bp(t,e){if(typeof t!="string")return "";let n=e?Yr(t):t,r=e?Xr(n):n;return $p(r)}function Ai(t){return t.map(e=>({...e,text:Bp(e.text,e.isAssistant)}))}function ln(t,e){let n=Ai(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=de(o),a=JSON.stringify(s);if(typeof a!="string"||Jn(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 Ii(t){return Ai(t.messages.map(e=>({text:e.text,isAssistant:e.isAssistant,timestamp:e.timestamp,metadata:e.metadata,files:void 0})))}u();bt();Et();u();u();var ie=class{resolveDbPath(){return process.env.CREWX_DB?process.env.CREWX_DB:process.env.CREWX_TRACES_DB?process.env.CREWX_TRACES_DB:Y.join(Hi__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 fd.existsSync(e??this.resolveDbPath())}};u();var Ha=32*1024*1024;function J(t){let e=_e("better-sqlite3"),{drizzle:n}=_e("drizzle-orm/better-sqlite3"),r=new e(t);return r.exec("PRAGMA journal_mode = WAL"),r.exec(`PRAGMA journal_size_limit = ${Ha}`),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 Wa=new Set,Gp={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 Pi(t,e){return (t.get(`SELECT count(*) as cnt FROM sqlite_master WHERE type='table' AND name='${e}'`)?.cnt??0)>0}function Vp(t,e){if(e>0||!Pi(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(Gp))r.has(o)||t.run(`ALTER TABLE tasks ADD COLUMN ${o} ${i}`);}var Kp={"0002_normalize_task_names":{workspace_name:"TEXT",project_name:"TEXT"},"0015_panoramic_gorilla_man":{project_id:"TEXT",workspace_id:"TEXT"}};function Jp(t,e,n){if(!Pi(t,"__drizzle_migrations")||!Pi(t,"tasks"))return;let r=t.all(n`SELECT hash FROM __drizzle_migrations`),o=new Set(r.map(s=>s.hash)),i=JSON.parse(fd.readFileSync(Y__namespace.default.join(e,"meta/_journal.json"),"utf-8"));for(let s of i.entries){let a=Kp[s.tag];if(!a)continue;let d=Y__namespace.default.join(e,`${s.tag}.sql`);if(!fd.existsSync(d))continue;let c=fd.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 Xp(t,e,n){let r=t.all(n`SELECT hash FROM __drizzle_migrations`),o=new Set(r.map(s=>s.hash)),i=JSON.parse(fd.readFileSync(Y__namespace.default.join(e,"meta/_journal.json"),"utf-8"));for(let s of i.entries){let a=Y__namespace.default.join(e,`${s.tag}.sql`);if(!fd.existsSync(a))continue;let d=fd.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 Zr(t){let{migrate:e}=_e("drizzle-orm/better-sqlite3/migrator"),{sql:n}=_e("drizzle-orm"),r=[Y__namespace.default.join(__dirname,"../migrations"),Y__namespace.default.join(__dirname,"migrations"),Y__namespace.default.join(__dirname,"../../../../drizzle/migrations"),Y__namespace.default.join(process.cwd(),"drizzle/migrations")],o=r.find(c=>fd.existsSync(Y__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),gp(t,s),i?.cnt&&(yp(t,o,n),hp(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 ae(t,e){Oa.has(e)||(Vr(t),Oa.add(e));}u();var b=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"),log_storage:sqliteCore.text("log_storage",{enum:["blob","events"]}).notNull().default("blob"),last_log_seq:sqliteCore.integer("last_log_seq").notNull().default(0),log_revision:sqliteCore.integer("log_revision").notNull().default(0),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=>({log_storage_check:sqliteCore.check("tasks_log_storage_ck",drizzleOrm.sql`${t.log_storage} IN ('blob', 'events')`),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 Ke=sqliteCore.sqliteTable("task_log_events",{id:sqliteCore.integer("id").primaryKey(),task_id:sqliteCore.text("task_id").notNull().references(()=>p.id,{onDelete:"cascade"}),seq:sqliteCore.integer("seq").notNull(),timestamp:sqliteCore.text("timestamp").notNull(),level:sqliteCore.text("level").notNull(),message:sqliteCore.text("message").notNull()},t=>({taskSeqUnique:sqliteCore.uniqueIndex("task_log_events_task_seq_uq").on(t.task_id,t.seq)}));u();var zn=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 kt=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(()=>kt.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(()=>zn.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),Vp(t,s),i?.cnt&&(Xp(t,o,n),Jp(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 ce(t,e){Wa.has(e)||(Zr(t),Wa.add(e));}u();var R=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 Xn=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"),log_storage:sqliteCore.text("log_storage",{enum:["blob","events"]}).notNull().default("blob"),last_log_seq:sqliteCore.integer("last_log_seq").notNull().default(0),log_revision:sqliteCore.integer("log_revision").notNull().default(0),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=>({log_storage_check:sqliteCore.check("tasks_log_storage_ck",drizzleOrm.sql`${t.log_storage} IN ('blob', 'events')`),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 et=sqliteCore.sqliteTable("task_log_events",{id:sqliteCore.integer("id").primaryKey(),task_id:sqliteCore.text("task_id").notNull().references(()=>p.id,{onDelete:"cascade"}),seq:sqliteCore.integer("seq").notNull(),timestamp:sqliteCore.text("timestamp").notNull(),level:sqliteCore.text("level").notNull(),message:sqliteCore.text("message").notNull()},t=>({taskSeqUnique:sqliteCore.uniqueIndex("task_log_events_task_seq_uq").on(t.task_id,t.seq)}));u();var Yn=sqliteCore.sqliteTable("threads",{id:sqliteCore.text("id").primaryKey(),workspace_id:sqliteCore.text("workspace_id").references(()=>Xn.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 Rt=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(()=>Rt.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(()=>Yn.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)}));u();var xi=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(()=>xi.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(()=>xi.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)}));Kt();u();function Ya(t,e){let n=e===void 0?"":` at index ${e}`;if(!t||typeof t!="object")throw new b("VALIDATION",`Task log entry${n} must be an object`);if(typeof t.timestamp!="string"||typeof t.level!="string"||typeof t.message!="string")throw new b("VALIDATION",`Task log entry${n} must contain string timestamp, level, and message fields`);return {timestamp:t.timestamp,level:t.level,message:t.message}}function Ka(t,e){if(e===null||e.trim()==="")return [];let n;try{n=JSON.parse(e);}catch(r){throw new b("DB_ERROR",`Malformed legacy task logs: ${t}`,r)}if(!Array.isArray(n))throw new b("DB_ERROR",`Malformed legacy task logs: ${t} (expected an array)`);try{return n.map((r,o)=>Ya(r,o))}catch(r){throw r instanceof b?new b("DB_ERROR",`Malformed legacy task logs: ${t}`,r):r}}function Qa(t){if(t.log_storage!=="blob"&&t.log_storage!=="events")throw new b("DB_ERROR",`Invalid task log storage for task: ${t.id}`);if(!Number.isInteger(t.last_log_seq)||t.last_log_seq<0)throw new b("DB_ERROR",`Invalid task log sequence for task: ${t.id}`);if(!Number.isInteger(t.log_revision)||t.log_revision<0)throw new b("DB_ERROR",`Invalid task log revision for task: ${t.id}`);return t.log_storage}function Xa(t){return {taskId:t.id,source:Qa(t),revision:t.log_revision,lastSeq:t.last_log_seq}}function cf(t){if(!Number.isInteger(t)||t<0)throw new b("VALIDATION","Task log tail limit must be a non-negative integer")}var Jn=class extends oe{dbPath;constructor(e={}){super(),e.dbPath?this.dbPath=e.dbPath:e.dbRoot&&(this.dbPath=Y.join(e.dbRoot,".crewx","crewx.db"));}resolveDbPath(){return this.dbPath?this.dbPath:super.resolveDbPath()}openHandle(e){let n=this.resolveDbPath();if(e){let o=Y.dirname(n);td.existsSync(o)||td.mkdirSync(o,{recursive:true});}else if(!td.existsSync(n))throw new b("NOT_FOUND","Database not found");let r=J(n);if(e)try{ae(r.db,n);}catch(o){throw r.close(),o}return r}findStateRow(e,n){return e.db.select({id:p.id,log_storage:p.log_storage,last_log_seq:p.last_log_seq,log_revision:p.log_revision,logs:p.logs}).from(p).where(drizzleOrm.eq(p.id,n)).limit(1).get()}findStateRowInTransaction(e,n){return e.select({id:p.id,log_storage:p.log_storage,last_log_seq:p.last_log_seq,log_revision:p.log_revision,logs:p.logs}).from(p).where(drizzleOrm.eq(p.id,n)).limit(1).get()}requireStateRowInTransaction(e,n){let r=this.findStateRowInTransaction(e,n);if(!r)throw new b("NOT_FOUND",`Task not found: ${n}`);return r}appendLog(e,n){return this.appendLogs(e,[n])}appendLogs(e,n){let r=n.map((i,s)=>Ya(i,s));if(r.length===0){let i=this.getLogState(e);if(!i)throw new b("NOT_FOUND",`Task not found: ${e}`);return i}let o=this.openHandle(true);try{return o.db.transaction(s=>{let a=this.requireStateRowInTransaction(s,e),d=Qa(a);if(d==="blob"){let g=Ka(e,a.logs);if(s.update(p).set({logs:JSON.stringify([...g,...r]),log_revision:drizzleOrm.sql`${p.log_revision} + 1`}).where(drizzleOrm.eq(p.id,e)).run().changes!==1)throw new b("NOT_FOUND",`Task not found: ${e}`);return {taskId:e,source:d,revision:a.log_revision+1,lastSeq:a.last_log_seq}}let c=a.last_log_seq+1,l=a.last_log_seq+r.length;if(s.insert(Ke).values(r.map((g,m)=>({task_id:e,seq:c+m,timestamp:g.timestamp,level:g.level,message:g.message}))).run(),s.update(p).set({last_log_seq:l,log_revision:drizzleOrm.sql`${p.log_revision} + 1`}).where(drizzleOrm.eq(p.id,e)).run().changes!==1)throw new b("NOT_FOUND",`Task not found: ${e}`);return {taskId:e,source:d,revision:a.log_revision+1,lastSeq:l}},{behavior:"immediate"})}catch(i){throw i instanceof b?i:new b("DB_ERROR","Failed to append task log",i)}finally{o.close();}}getLogState(e){if(!this.dbExists())return;let n=this.openHandle(false);try{let r=this.findStateRow(n,e);return r?Xa(r):void 0}catch(r){throw r instanceof b?r:new b("DB_ERROR","Failed to read task log state",r)}finally{n.close();}}readLogs(e){return this.readLogsInternal(e)}readLogsTail(e,n){return cf(n),this.readLogsInternal(e,n)}readTail(e,n){return this.readLogsTail(e,n)}readLogsInternal(e,n){if(!this.dbExists())return;let r=this.openHandle(false);try{return r.db.transaction(o=>{let i=this.findStateRowInTransaction(o,e);if(!i)return;let s=Xa(i);if(s.source==="blob"){let l=Ka(e,i.logs);return {...s,entries:n===void 0?l:l.slice(Math.max(0,l.length-n))}}let a=o.select({seq:Ke.seq,timestamp:Ke.timestamp,level:Ke.level,message:Ke.message}).from(Ke).where(drizzleOrm.eq(Ke.task_id,e)).orderBy(n===void 0?drizzleOrm.asc(Ke.seq):drizzleOrm.desc(Ke.seq)),c=(n===void 0?a.all():a.limit(n).all()).map(({timestamp:l,level:f,message:g})=>({timestamp:l,level:f,message:g}));return n!==void 0&&c.reverse(),{...s,entries:c}},{behavior:"deferred"})}catch(o){throw o instanceof b?o:new b("DB_ERROR","Failed to read task logs",o)}finally{r.close();}}};var Rt="2026-05-09",mf="0.8.9-rc.13",bt=10,Tt=parseInt(mf.split("rc.")[1]);function Za(){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 Li=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(()=>Li.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(()=>Li.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)}));Zt();u();function cd(t,e){let n=e===void 0?"":` at index ${e}`;if(!t||typeof t!="object")throw new R("VALIDATION",`Task log entry${n} must be an object`);if(typeof t.timestamp!="string"||typeof t.level!="string"||typeof t.message!="string")throw new R("VALIDATION",`Task log entry${n} must contain string timestamp, level, and message fields`);return {timestamp:t.timestamp,level:t.level,message:t.message}}function ad(t,e){if(e===null||e.trim()==="")return [];let n;try{n=JSON.parse(e);}catch(r){throw new R("DB_ERROR",`Malformed legacy task logs: ${t}`,r)}if(!Array.isArray(n))throw new R("DB_ERROR",`Malformed legacy task logs: ${t} (expected an array)`);try{return n.map((r,o)=>cd(r,o))}catch(r){throw r instanceof R?new R("DB_ERROR",`Malformed legacy task logs: ${t}`,r):r}}function ld(t){if(t.log_storage!=="blob"&&t.log_storage!=="events")throw new R("DB_ERROR",`Invalid task log storage for task: ${t.id}`);if(!Number.isInteger(t.last_log_seq)||t.last_log_seq<0)throw new R("DB_ERROR",`Invalid task log sequence for task: ${t.id}`);if(!Number.isInteger(t.log_revision)||t.log_revision<0)throw new R("DB_ERROR",`Invalid task log revision for task: ${t.id}`);return t.log_storage}function dd(t){return {taskId:t.id,source:ld(t),revision:t.log_revision,lastSeq:t.last_log_seq}}function qf(t){if(!Number.isInteger(t)||t<0)throw new R("VALIDATION","Task log tail limit must be a non-negative integer")}var er=class extends ie{dbPath;constructor(e={}){super(),e.dbPath?this.dbPath=e.dbPath:e.dbRoot&&(this.dbPath=Y.join(e.dbRoot,".crewx","crewx.db"));}resolveDbPath(){return this.dbPath?this.dbPath:super.resolveDbPath()}openHandle(e){let n=this.resolveDbPath();if(e){let o=Y.dirname(n);fd.existsSync(o)||fd.mkdirSync(o,{recursive:true});}else if(!fd.existsSync(n))throw new R("NOT_FOUND","Database not found");let r=J(n);if(e)try{ce(r.db,n);}catch(o){throw r.close(),o}return r}findStateRow(e,n){return e.db.select({id:p.id,log_storage:p.log_storage,last_log_seq:p.last_log_seq,log_revision:p.log_revision,logs:p.logs}).from(p).where(drizzleOrm.eq(p.id,n)).limit(1).get()}findStateRowInTransaction(e,n){return e.select({id:p.id,log_storage:p.log_storage,last_log_seq:p.last_log_seq,log_revision:p.log_revision,logs:p.logs}).from(p).where(drizzleOrm.eq(p.id,n)).limit(1).get()}requireStateRowInTransaction(e,n){let r=this.findStateRowInTransaction(e,n);if(!r)throw new R("NOT_FOUND",`Task not found: ${n}`);return r}appendLog(e,n){return this.appendLogs(e,[n])}appendLogs(e,n){let r=n.map((i,s)=>cd(i,s));if(r.length===0){let i=this.getLogState(e);if(!i)throw new R("NOT_FOUND",`Task not found: ${e}`);return i}let o=this.openHandle(true);try{return o.db.transaction(s=>{let a=this.requireStateRowInTransaction(s,e),d=ld(a);if(d==="blob"){let g=ad(e,a.logs);if(s.update(p).set({logs:JSON.stringify([...g,...r]),log_revision:drizzleOrm.sql`${p.log_revision} + 1`}).where(drizzleOrm.eq(p.id,e)).run().changes!==1)throw new R("NOT_FOUND",`Task not found: ${e}`);return {taskId:e,source:d,revision:a.log_revision+1,lastSeq:a.last_log_seq}}let c=a.last_log_seq+1,l=a.last_log_seq+r.length;if(s.insert(et).values(r.map((g,m)=>({task_id:e,seq:c+m,timestamp:g.timestamp,level:g.level,message:g.message}))).run(),s.update(p).set({last_log_seq:l,log_revision:drizzleOrm.sql`${p.log_revision} + 1`}).where(drizzleOrm.eq(p.id,e)).run().changes!==1)throw new R("NOT_FOUND",`Task not found: ${e}`);return {taskId:e,source:d,revision:a.log_revision+1,lastSeq:l}},{behavior:"immediate"})}catch(i){throw i instanceof R?i:new R("DB_ERROR","Failed to append task log",i)}finally{o.close();}}getLogState(e){if(!this.dbExists())return;let n=this.openHandle(false);try{let r=this.findStateRow(n,e);return r?dd(r):void 0}catch(r){throw r instanceof R?r:new R("DB_ERROR","Failed to read task log state",r)}finally{n.close();}}readLogs(e){return this.readLogsInternal(e)}readLogsTail(e,n){return qf(n),this.readLogsInternal(e,n)}readTail(e,n){return this.readLogsTail(e,n)}readLogsInternal(e,n){if(!this.dbExists())return;let r=this.openHandle(false);try{return r.db.transaction(o=>{let i=this.findStateRowInTransaction(o,e);if(!i)return;let s=dd(i);if(s.source==="blob"){let l=ad(e,i.logs);return {...s,entries:n===void 0?l:l.slice(Math.max(0,l.length-n))}}let a=o.select({seq:et.seq,timestamp:et.timestamp,level:et.level,message:et.message}).from(et).where(drizzleOrm.eq(et.task_id,e)).orderBy(n===void 0?drizzleOrm.asc(et.seq):drizzleOrm.desc(et.seq)),c=(n===void 0?a.all():a.limit(n).all()).map(({timestamp:l,level:f,message:g})=>({timestamp:l,level:f,message:g}));return n!==void 0&&c.reverse(),{...s,entries:c}},{behavior:"deferred"})}catch(o){throw o instanceof R?o:new R("DB_ERROR","Failed to read task logs",o)}finally{r.close();}}};var At="2026-05-09",Kf="0.8.9-rc.13",It=10,St=parseInt(Kf.split("rc.")[1]);function ud(){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,17 +99,17 @@ ${r.join(`
99
99
  WHEN trim(${o}) = '' THEN 'unknown'
100
100
  ELSE ${o}
101
101
  END
102
- `}var hf=new Set(["workflow","mcp"]),ed=600*1e3,an=class extends oe{dbPath;taskLogRepository;pidNullObservedSince=new Map;constructor(e={}){super(),e.dbPath?this.dbPath=e.dbPath:e.dbRoot&&(this.dbPath=Y.join(e.dbRoot,".crewx","crewx.db")),this.taskLogRepository=new Jn({dbPath:this.dbPath});}resolveDbPath(){return this.dbPath?this.dbPath:super.resolveDbPath()}openHandle(e){let n=this.resolveDbPath();if(e){let o=Y.dirname(n);td.existsSync(o)||td.mkdirSync(o,{recursive:true});}else if(!td.existsSync(n))throw new b("NOT_FOUND","Database not found");let r=J(n);if(e)try{ae(r.db,n);}catch(o){throw r.close(),o}return r}startTask(e){let n=this.openHandle(true);try{let r={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,log_storage:"events"},o=i=>{n.db.insert(p).values(i).onConflictDoUpdate({target:p.id,set:{pid:drizzleOrm.sql`COALESCE(excluded.pid, ${p.pid})`},setWhere:drizzleOrm.eq(p.status,"running")}).run();};try{o(r);}catch(i){let s=i instanceof Error?i.message:typeof i=="object"&&i!==null&&"message"in i?String(i.message):String(i);if(!/log_storage/i.test(s)||!/no such column|no column named/i.test(s))throw i;n.runRaw(`INSERT INTO tasks (
102
+ `}var Jf=new Set(["workflow","mcp"]),pd=600*1e3,un=class extends ie{dbPath;taskLogRepository;pidNullObservedSince=new Map;constructor(e={}){super(),e.dbPath?this.dbPath=e.dbPath:e.dbRoot&&(this.dbPath=Y.join(e.dbRoot,".crewx","crewx.db")),this.taskLogRepository=new er({dbPath:this.dbPath});}resolveDbPath(){return this.dbPath?this.dbPath:super.resolveDbPath()}openHandle(e){let n=this.resolveDbPath();if(e){let o=Y.dirname(n);fd.existsSync(o)||fd.mkdirSync(o,{recursive:true});}else if(!fd.existsSync(n))throw new R("NOT_FOUND","Database not found");let r=J(n);if(e)try{ce(r.db,n);}catch(o){throw r.close(),o}return r}startTask(e){let n=this.openHandle(true);try{let r={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,log_storage:"events"},o=i=>{n.db.insert(p).values(i).onConflictDoUpdate({target:p.id,set:{pid:drizzleOrm.sql`COALESCE(excluded.pid, ${p.pid})`},setWhere:drizzleOrm.eq(p.status,"running")}).run();};try{o(r);}catch(i){let s=i instanceof Error?i.message:typeof i=="object"&&i!==null&&"message"in i?String(i.message):String(i);if(!/log_storage/i.test(s)||!/no such column|no column named/i.test(s))throw i;n.runRaw(`INSERT INTO tasks (
103
103
  id, agent_id, prompt, mode, status, started_at, pid,
104
104
  parent_task_id, caller_agent_id, trace_id, command, metadata,
105
105
  workspace_id, project_id, platform, crewx_version, thread_id,
106
106
  model, rendered_prompt, coding_agent_command
107
107
  ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
108
108
  ON CONFLICT(id) DO UPDATE SET pid = COALESCE(excluded.pid, tasks.pid)
109
- WHERE tasks.status = 'running'`,[r.id,r.agent_id,r.prompt,r.mode,r.status,r.started_at,r.pid,r.parent_task_id,r.caller_agent_id,r.trace_id,r.command,r.metadata,r.workspace_id,r.project_id,r.platform,r.crewx_version,r.thread_id,r.model,r.rendered_prompt,r.coding_agent_command]);}}catch(r){throw r instanceof b?r:new b("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 b?r:new b("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=?,
109
+ WHERE tasks.status = 'running'`,[r.id,r.agent_id,r.prompt,r.mode,r.status,r.started_at,r.pid,r.parent_task_id,r.caller_agent_id,r.trace_id,r.command,r.metadata,r.workspace_id,r.project_id,r.platform,r.crewx_version,r.thread_id,r.model,r.rendered_prompt,r.coding_agent_command]);}}catch(r){throw r instanceof R?r:new R("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 R?r:new R("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=?,
110
110
  exit_code=?, input_tokens=?, output_tokens=?, cached_input_tokens=?, cost_usd=?,
111
111
  model=COALESCE(?, model)
112
- 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 b?r:new b("DB_ERROR","Failed to finish task",r)}finally{n.close();}}appendLog(e,n){this.taskLogRepository.appendLog(e,n);}appendLogs(e,n){this.taskLogRepository.appendLogs(e,n);}readLogs(e){return this.taskLogRepository.readLogs(e)}readLogsTail(e,n){return this.taskLogRepository.readLogsTail(e,n)}getLogState(e){return this.taskLogRepository.getLogState(e)}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 b("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 b("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 b("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 b?r:new b("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(hf.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>=ed&&(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=ed){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(!td.existsSync(o))continue;let i=J(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 b("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(!td.existsSync(s))continue;let a=J(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 b("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`
112
+ 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 R?r:new R("DB_ERROR","Failed to finish task",r)}finally{n.close();}}appendLog(e,n){this.taskLogRepository.appendLog(e,n);}appendLogs(e,n){this.taskLogRepository.appendLogs(e,n);}readLogs(e){return this.taskLogRepository.readLogs(e)}readLogsTail(e,n){return this.taskLogRepository.readLogsTail(e,n)}getLogState(e){return this.taskLogRepository.getLogState(e)}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 R("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 R("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 R("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 R?r:new R("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(Jf.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>=pd&&(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=pd){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(!fd.existsSync(o))continue;let i=J(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 R("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(!fd.existsSync(s))continue;let a=J(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 R("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`
113
113
  SELECT
114
114
  COALESCE(workspace_id, 'unknown') AS workspace_id,
115
115
  COALESCE(SUM(input_tokens), 0) AS input_tokens,
@@ -130,7 +130,7 @@ ${r.join(`
130
130
  FROM tasks
131
131
  GROUP BY workspace_id
132
132
  ORDER BY (COALESCE(SUM(input_tokens), 0) + COALESCE(SUM(output_tokens), 0)) DESC
133
- `)}catch(r){throw new b("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(!td.existsSync(d))continue;let c=J(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 b("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(!td.existsSync(s))continue;let a=J(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 b("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(!td.existsSync(n))continue;let r=J(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 b("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(!td.existsSync(d))continue;let c=J(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 b("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 b("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`
133
+ `)}catch(r){throw new R("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(!fd.existsSync(d))continue;let c=J(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 R("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(!fd.existsSync(s))continue;let a=J(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 R("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(!fd.existsSync(n))continue;let r=J(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 R("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(!fd.existsSync(d))continue;let c=J(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 R("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 R("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`
134
134
  SELECT
135
135
  t.agent_id,
136
136
  t.workspace_id,
@@ -138,11 +138,11 @@ ${r.join(`
138
138
  COALESCE(SUM(
139
139
  COALESCE(t.input_tokens, 0)
140
140
  + CASE
141
- WHEN t.started_at >= ${Rt}
141
+ WHEN t.started_at >= ${At}
142
142
  AND (
143
143
  t.crewx_version IS NULL
144
144
  OR (t.crewx_version LIKE '0.8.%' AND t.crewx_version NOT LIKE '0.8.9%')
145
- OR (t.crewx_version LIKE '0.8.9-rc.%' AND CAST(SUBSTR(t.crewx_version, ${bt}) AS INTEGER) < ${Tt})
145
+ OR (t.crewx_version LIKE '0.8.9-rc.%' AND CAST(SUBSTR(t.crewx_version, ${It}) AS INTEGER) < ${St})
146
146
  )
147
147
  THEN COALESCE(t.cached_input_tokens, 0)
148
148
  ELSE 0
@@ -161,11 +161,11 @@ ${r.join(`
161
161
  COALESCE(SUM(
162
162
  COALESCE(t.input_tokens, 0)
163
163
  + CASE
164
- WHEN t.started_at >= ${Rt}
164
+ WHEN t.started_at >= ${At}
165
165
  AND (
166
166
  t.crewx_version IS NULL
167
167
  OR (t.crewx_version LIKE '0.8.%' AND t.crewx_version NOT LIKE '0.8.9%')
168
- OR (t.crewx_version LIKE '0.8.9-rc.%' AND CAST(SUBSTR(t.crewx_version, ${bt}) AS INTEGER) < ${Tt})
168
+ OR (t.crewx_version LIKE '0.8.9-rc.%' AND CAST(SUBSTR(t.crewx_version, ${It}) AS INTEGER) < ${St})
169
169
  )
170
170
  THEN COALESCE(t.cached_input_tokens, 0)
171
171
  ELSE 0
@@ -181,11 +181,11 @@ ${r.join(`
181
181
  COALESCE(SUM(
182
182
  COALESCE(t.input_tokens, 0)
183
183
  + CASE
184
- WHEN t.started_at >= ${Rt}
184
+ WHEN t.started_at >= ${At}
185
185
  AND (
186
186
  t.crewx_version IS NULL
187
187
  OR (t.crewx_version LIKE '0.8.%' AND t.crewx_version NOT LIKE '0.8.9%')
188
- OR (t.crewx_version LIKE '0.8.9-rc.%' AND CAST(SUBSTR(t.crewx_version, ${bt}) AS INTEGER) < ${Tt})
188
+ OR (t.crewx_version LIKE '0.8.9-rc.%' AND CAST(SUBSTR(t.crewx_version, ${It}) AS INTEGER) < ${St})
189
189
  )
190
190
  THEN COALESCE(t.cached_input_tokens, 0)
191
191
  ELSE 0
@@ -203,11 +203,11 @@ ${r.join(`
203
203
  COALESCE(SUM(
204
204
  COALESCE(t.input_tokens, 0)
205
205
  + CASE
206
- WHEN t.started_at >= ${Rt}
206
+ WHEN t.started_at >= ${At}
207
207
  AND (
208
208
  t.crewx_version IS NULL
209
209
  OR (t.crewx_version LIKE '0.8.%' AND t.crewx_version NOT LIKE '0.8.9%')
210
- OR (t.crewx_version LIKE '0.8.9-rc.%' AND CAST(SUBSTR(t.crewx_version, ${bt}) AS INTEGER) < ${Tt})
210
+ OR (t.crewx_version LIKE '0.8.9-rc.%' AND CAST(SUBSTR(t.crewx_version, ${It}) AS INTEGER) < ${St})
211
211
  )
212
212
  THEN COALESCE(t.cached_input_tokens, 0)
213
213
  ELSE 0
@@ -215,18 +215,18 @@ ${r.join(`
215
215
  ), 0)
216
216
  + COALESCE(SUM(t.output_tokens), 0)
217
217
  ) DESC
218
- `).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 b("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`
218
+ `).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 R("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`
219
219
  SELECT
220
220
  date(t.started_at) AS date,
221
221
  t.agent_id,
222
222
  COALESCE(SUM(
223
223
  COALESCE(t.input_tokens, 0)
224
224
  + CASE
225
- WHEN t.started_at >= ${Rt}
225
+ WHEN t.started_at >= ${At}
226
226
  AND (
227
227
  t.crewx_version IS NULL
228
228
  OR (t.crewx_version LIKE '0.8.%' AND t.crewx_version NOT LIKE '0.8.9%')
229
- OR (t.crewx_version LIKE '0.8.9-rc.%' AND CAST(SUBSTR(t.crewx_version, ${bt}) AS INTEGER) < ${Tt})
229
+ OR (t.crewx_version LIKE '0.8.9-rc.%' AND CAST(SUBSTR(t.crewx_version, ${It}) AS INTEGER) < ${St})
230
230
  )
231
231
  THEN COALESCE(t.cached_input_tokens, 0)
232
232
  ELSE 0
@@ -249,11 +249,11 @@ ${r.join(`
249
249
  COALESCE(SUM(
250
250
  COALESCE(t.input_tokens, 0)
251
251
  + CASE
252
- WHEN t.started_at >= ${Rt}
252
+ WHEN t.started_at >= ${At}
253
253
  AND (
254
254
  t.crewx_version IS NULL
255
255
  OR (t.crewx_version LIKE '0.8.%' AND t.crewx_version NOT LIKE '0.8.9%')
256
- OR (t.crewx_version LIKE '0.8.9-rc.%' AND CAST(SUBSTR(t.crewx_version, ${bt}) AS INTEGER) < ${Tt})
256
+ OR (t.crewx_version LIKE '0.8.9-rc.%' AND CAST(SUBSTR(t.crewx_version, ${It}) AS INTEGER) < ${St})
257
257
  )
258
258
  THEN COALESCE(t.cached_input_tokens, 0)
259
259
  ELSE 0
@@ -268,14 +268,14 @@ ${r.join(`
268
268
  AND t.started_at < ${n}
269
269
  GROUP BY date(t.started_at), t.agent_id
270
270
  ORDER BY date(t.started_at) ASC
271
- `).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 b("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 b("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 b("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 b?i:new b("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(!td.existsSync(s))continue;let a=J(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 b("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=Za(),s=drizzleOrm.sql`
271
+ `).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 R("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 R("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 R("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 R?i:new R("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(!fd.existsSync(s))continue;let a=J(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 R("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=ud(),s=drizzleOrm.sql`
272
272
  COALESCE(${p.input_tokens}, 0)
273
273
  + CASE
274
- WHEN ${p.started_at} >= ${Rt}
274
+ WHEN ${p.started_at} >= ${At}
275
275
  AND (
276
276
  ${p.crewx_version} IS NULL
277
277
  OR (${p.crewx_version} LIKE '0.8.%' AND ${p.crewx_version} NOT LIKE '0.8.9%')
278
- OR (${p.crewx_version} LIKE '0.8.9-rc.%' AND CAST(SUBSTR(${p.crewx_version}, ${bt}) AS INTEGER) < ${Tt})
278
+ OR (${p.crewx_version} LIKE '0.8.9-rc.%' AND CAST(SUBSTR(${p.crewx_version}, ${It}) AS INTEGER) < ${St})
279
279
  )
280
280
  THEN COALESCE(${p.cached_input_tokens}, 0)
281
281
  ELSE 0
@@ -294,14 +294,14 @@ ${r.join(`
294
294
  ${a}
295
295
  GROUP BY ${i}
296
296
  ORDER BY (COALESCE(SUM(${s}), 0) + COALESCE(SUM(${p.output_tokens}), 0)) DESC
297
- `).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 b("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=Za(),s=drizzleOrm.sql`
297
+ `).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 R("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=ud(),s=drizzleOrm.sql`
298
298
  COALESCE(${p.input_tokens}, 0)
299
299
  + CASE
300
- WHEN ${p.started_at} >= ${Rt}
300
+ WHEN ${p.started_at} >= ${At}
301
301
  AND (
302
302
  ${p.crewx_version} IS NULL
303
303
  OR (${p.crewx_version} LIKE '0.8.%' AND ${p.crewx_version} NOT LIKE '0.8.9%')
304
- OR (${p.crewx_version} LIKE '0.8.9-rc.%' AND CAST(SUBSTR(${p.crewx_version}, ${bt}) AS INTEGER) < ${Tt})
304
+ OR (${p.crewx_version} LIKE '0.8.9-rc.%' AND CAST(SUBSTR(${p.crewx_version}, ${It}) AS INTEGER) < ${St})
305
305
  )
306
306
  THEN COALESCE(${p.cached_input_tokens}, 0)
307
307
  ELSE 0
@@ -320,7 +320,7 @@ ${r.join(`
320
320
  FROM ${p}
321
321
  ${a}
322
322
  GROUP BY ${p.model}, ${i}
323
- `),c=new Map;for(let l of d){let f=xo(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 b("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`
323
+ `),c=new Map;for(let l of d){let f=Do(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 R("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`
324
324
  SELECT
325
325
  ${p.thread_id} AS thread_id,
326
326
  ${p.agent_id} AS agent_id,
@@ -331,12 +331,12 @@ ${r.join(`
331
331
  FROM ${p}
332
332
  ${i}
333
333
  ORDER BY ${p.started_at} ASC
334
- `).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 b("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 b("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 b("DB_ERROR","Failed to find thread chains",r)}finally{n.close();}}};var yf=new Set(["Read","Grep","Find","Glob"]),_f=["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"],wf=[/\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/],kf=8e3,vf=100,Ef=3,Rf=Number.MAX_SAFE_INTEGER;function bf(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 Tf(t,e){if(yf.has(t))return true;if(t!=="Bash"||!e)return false;let n=e.split(`
335
- `)[0].trimStart();return wf.some(r=>r.test(n))?false:_f.some(r=>n.startsWith(r))}function dn(t){return t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function xf(t,e,n){if(t!=="Read"||!e)return "ok";let o=e.split(`
336
- `).find(i=>i.trim()&&!i.startsWith("Read "))?.trim()??e.trim();if(!o)return "unknown";try{let i=td__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 Af(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 If(t){if(!Array.isArray(t))return [];let e=t,n=e.filter(a=>a.level==="stdout"&&a.message).map(a=>a.message),r=Af(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(...Pn("",a.message,r));let i=new Map,s=[];for(let a of o)if(a.type==="tool_use"){let d={tool:bf(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 Pf(t,e){let n=If(t),r=[];for(let o of n){let i=o.tool==="Bash"?o.input?.split(`
337
- `)[0]?.slice(0,150)??null:o.input?.slice(0,150)??null,s=Tf(o.tool,o.input)&&!o.isError;r.push({tool:o.tool,cmd:i,result:o.result,status:xf(o.tool,o.input,e),reusable:s});}return r}function Sf(t,e){try{return t.readLogs(e)?.entries??[]}catch{return []}}function nd(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="${dn(a.reason)}" count="${a.count}": ${dn(a.message)} -->`);}for(let a of n){let d=a.entry,c=`tool="${dn(d.tool)}"`,l=d.cmd?` cmd="${dn(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=zr(d.result),m=Math.min(a.bodyCharsShown??g.length,g.length);g.length>m?e.push(dn(g.slice(0,m))+` \u2026 [truncated, ${m}/${g.length} chars shown]`):e.push(dn(g)),e.push(" </entry>");}else e.push(` <entry ${c}${l}${f} />`);}}return e.push("</activity_log>"),e}function Cf(t){return typeof t!="number"||!Number.isFinite(t)||t<0?kf:Math.floor(t)}function Of(t,e,n){let r=Math.floor(e/vf),o=Math.pow(2,t+r);return !Number.isFinite(o)||o<=0?0:Math.floor(n/o)}function Nf(t,e){let n=Math.pow(2,e+Ef);return !Number.isFinite(n)||n<=0?0:Math.floor(t/n)}function rd(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 od(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 id(t){let e=od(t.omittedByTokenCap,t.repositoryLimitOmitted);return nd({entries:t.entries,omissions:e,tokenCap:t.tokenCap,totalEntries:t.totalEntries}).join(`
338
- `)}function Pi(t,e){let n=t(e);return !Number.isFinite(n)||n<0?0:Math.floor(n)}function Df(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=rd(e,t.newestIndex,n,o),s=[...t.selectedEntries,i],a=t.totalEntries-s.length-t.repositoryLimitOmitted,d=id({entries:s,tokenCap:t.tokenCap,totalEntries:t.totalEntries,omittedByTokenCap:a,repositoryLimitOmitted:t.repositoryLimitOmitted});if(Pi(t.countTokens,d)<=t.tokenCap)return i}return null}function Mf(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=Of(t.taskDistance,g,t.baseEntryChars),h=rd(m,g,k),v=[...s,h],_=a-v.length-r,w=id({entries:v,tokenCap:t.tokenCap,totalEntries:a,omittedByTokenCap:_,repositoryLimitOmitted:r});if(Pi(t.countTokens,w)<=t.tokenCap){s.push(h);continue}let x=Df({selectedEntries:s,entry:m,newestIndex:g,bodyLimitChars:k,tokenCap:t.tokenCap,totalEntries:a,repositoryLimitOmitted:r,countTokens:t.countTokens});x&&s.push(x);break}let d=a-s.length-r,c=od(d,r),l=nd({entries:s,omissions:c,tokenCap:t.tokenCap,totalEntries:a}).join(`
339
- `),f=Pi(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 Ii(t){return {threadId:t.threadId,agentId:t.agentId,lookback:t.lookback,activityLogTokenBudget:t.activityLogTokenBudget,baseEntryChars:t.baseEntryChars,tasks:[],activityLogByTask:new Map}}function Lf(t){return !Number.isFinite(t)||t<0?0:Math.floor(t)}function Uf(t){return t.length}function Si(t){let e=Cf(t.maxEntryChars),n=Lf(t.activityLogTokenBudget),r=Math.max(0,Math.floor(t.lookback));if(!r||!t.threadId||!t.agentId)return Ii({threadId:t.threadId,agentId:t.agentId,lookback:r,activityLogTokenBudget:n,baseEntryChars:e});let o,i;try{i=new an,o=i.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 Ii({threadId:t.threadId,agentId:t.agentId,lookback:r,activityLogTokenBudget:n,baseEntryChars:e})}if(!o.length)return Ii({threadId:t.threadId,agentId:t.agentId,lookback:r,activityLogTokenBudget:n,baseEntryChars:e});let s=[];for(let c of o){let l=Sf(i,c.id);s.push({taskId:c.id,entries:Pf(l,c.completed_at)});}let a=[],d=new Map;for(let c=0;c<s.length;c++){let{taskId:l,entries:f}=s[c];if(f.length===0)continue;let g=Mf({taskId:l,entries:f,taskDistance:c,baseEntryChars:e,tokenCap:Nf(n,c),countTokens:t.countTokens,repositoryEntryLimit:t.repositoryEntryLimit});a.push(g),d.set(l,g.activityLog);}return {threadId:t.threadId,agentId:t.agentId,lookback:r,activityLogTokenBudget:n,baseEntryChars:e,tasks:a,activityLogByTask:d}}function sd(t){if(t.activityLogTokenBudget!==void 0&&!t.countTokens)throw new Error("countTokens is required when activityLogTokenBudget is supplied");return Si({threadId:t.threadId,agentId:t.agentId,lookback:t.lookback,maxEntryChars:t.maxEntryChars,activityLogTokenBudget:t.activityLogTokenBudget??Rf,countTokens:t.countTokens??Uf,repositoryEntryLimit:t.repositoryEntryLimit}).activityLogByTask}u();u();var $f={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")},Bf={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 ad(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",$f,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)",Bf,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 dd(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 cd(t,e){return e?await e(t)?null:new Response(JSON.stringify({error:"Unauthorized"}),{status:401,headers:{"Content-Type":"application/json"}}):null}function Hf(t,e){let n=new mcp_js.McpServer({name:"crewx-mcp-server",version:"1.0.0"},{capabilities:{tools:{}}});return ad(n,t,e),n}function Ci(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=dd(o);if(i)return i;let s=await cd(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=Hf(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 Oi(t){let e=Y__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 to(t){let e=Oi(t);return crypto$1.createHash("sha256").update(e).digest("hex")}u();u();function Yn(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=se(n);return crypto$1.createHash("sha256").update(Pa(r)).digest("hex")}function Ni(t){return `${t.id}\0${t.version}`}function pd(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)||Yn(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=>!Gf(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&&ud(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&&ud(t.stateProjection);}function ud(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 Gf(t){return t.length>0&&t.length<=128&&t!=="*"&&t!=="all"&&!/[/*]/.test(t)}u();function no(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 Mi(){if(process.env.CREWX_HOME)try{return td__namespace.realpathSync(process.env.CREWX_HOME)}catch{return Y__namespace.join(Di__namespace.homedir(),".crewx")}return process.platform!=="win32"&&process.env.XDG_CONFIG_HOME?Y__namespace.join(process.env.XDG_CONFIG_HOME,"crewx"):Y__namespace.join(Di__namespace.homedir(),".crewx")}u();u();u();u();u();var gd=["success","failed","completed"];new Set(gd);u();u();var oo=class extends oe{dbPath;constructor(e={}){super(),e.dbPath?this.dbPath=e.dbPath:e.dbRoot&&(this.dbPath=Y.join(e.dbRoot,".crewx","crewx.db"));}resolveDbPath(){return this.dbPath?this.dbPath:super.resolveDbPath()}openHandle(e){let n=this.resolveDbPath();if(e){let o=Y.dirname(n);td.existsSync(o)||td.mkdirSync(o,{recursive:true});}else if(!td.existsSync(n))throw new b("NOT_FOUND","Database not found");let r=J(n);if(e)try{ae(r.db,n);}catch(o){throw r.close(),o}return r}insertSpan(e){let n=this.openHandle(true);try{n.db.insert(kt).values(e).run();}catch(r){throw r instanceof b?r:new b("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(kt).where(drizzleOrm.eq(kt.task_id,e)).all()}catch(r){throw new b("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(kt).where(drizzleOrm.eq(kt.id,e)).limit(1).get()??void 0}catch(r){throw new b("DB_ERROR","Failed to find span by id",r)}finally{n.close();}}};u();u();u();u();u();u();u();function eg(){return process.env.CREWX_DB??Y.join(Mi(),"crewx.db")}function so(t){let e=JSON.parse(t);return se(e)}function tg(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 Qn(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:so(t.domain_ref_json),state:so(t.state_json),revision:t.revision,status:e,grantedCapabilities:n,createdAt:t.created_at,updatedAt:t.updated_at}}function Zn(t){return {id:t.id,instanceId:t.instance_id,requestId:t.request_id,actionId:t.action_id,actor:tg(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:so(t.input_json),result:t.result_json===null?null:so(t.result_json),errorCode:t.error_code,requestedAt:t.requested_at,settledAt:t.settled_at}}function er(t,e){return t.get(drizzleOrm.sql`SELECT * FROM ui_instances WHERE id = ${e}`)}function tr(t,e,n){return t.get(drizzleOrm.sql`SELECT * FROM ui_action_receipts WHERE instance_id = ${e} AND request_id = ${n}`)}function io(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 ng(t){throw io(t)?new Ee(t):new R("EXECUTION_FAILED","UI instance database operation failed")}var ao=class{handle;db;testHooks;constructor(e=eg(),n){td.mkdirSync(Y.dirname(e),{recursive:true}),this.handle=J(e),this.db=this.handle.db,this.testHooks=n,ae(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`
334
+ `).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 R("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 R("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 R("DB_ERROR","Failed to find thread chains",r)}finally{n.close();}}};var Xf=new Set(["Read","Grep","Find","Glob"]),Yf=["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"],Qf=[/\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/],Zf=8e3,eg=100,tg=3,ng=Number.MAX_SAFE_INTEGER;function rg(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 og(t,e){if(Xf.has(t))return true;if(t!=="Bash"||!e)return false;let n=e.split(`
335
+ `)[0].trimStart();return Qf.some(r=>r.test(n))?false:Yf.some(r=>n.startsWith(r))}function pn(t){return t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}function ig(t,e,n){if(t!=="Read"||!e)return "ok";let o=e.split(`
336
+ `).find(i=>i.trim()&&!i.startsWith("Read "))?.trim()??e.trim();if(!o)return "unknown";try{let i=fd__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 sg(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 ag(t){if(!Array.isArray(t))return [];let e=t,n=e.filter(a=>a.level==="stdout"&&a.message).map(a=>a.message),r=sg(n),o=[];for(let a of e)a.level==="info"&&a.message?o.push(...qe(a.message,a.timestamp)):a.level==="stdout"&&a.message&&r&&o.push(...Ln("",a.message,r));let i=new Map,s=[];for(let a of o)if(a.type==="tool_use"){let d={tool:rg(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 dg(t,e){let n=ag(t),r=[];for(let o of n){let i=o.tool==="Bash"?o.input?.split(`
337
+ `)[0]?.slice(0,150)??null:o.input?.slice(0,150)??null,s=og(o.tool,o.input)&&!o.isError;r.push({tool:o.tool,cmd:i,result:o.result,status:ig(o.tool,o.input,e),reusable:s});}return r}function cg(t,e){try{return t.readLogs(e)?.entries??[]}catch{return []}}function gd(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="${pn(a.reason)}" count="${a.count}": ${pn(a.message)} -->`);}for(let a of n){let d=a.entry,c=`tool="${pn(d.tool)}"`,l=d.cmd?` cmd="${pn(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=Yr(d.result),m=Math.min(a.bodyCharsShown??g.length,g.length);g.length>m?e.push(pn(g.slice(0,m))+` \u2026 [truncated, ${m}/${g.length} chars shown]`):e.push(pn(g)),e.push(" </entry>");}else e.push(` <entry ${c}${l}${f} />`);}}return e.push("</activity_log>"),e}function lg(t){return typeof t!="number"||!Number.isFinite(t)||t<0?Zf:Math.floor(t)}function ug(t,e,n){let r=Math.floor(e/eg),o=Math.pow(2,t+r);return !Number.isFinite(o)||o<=0?0:Math.floor(n/o)}function pg(t,e){let n=Math.pow(2,e+tg);return !Number.isFinite(n)||n<=0?0:Math.floor(t/n)}function md(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 hd(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 yd(t){let e=hd(t.omittedByTokenCap,t.repositoryLimitOmitted);return gd({entries:t.entries,omissions:e,tokenCap:t.tokenCap,totalEntries:t.totalEntries}).join(`
338
+ `)}function ji(t,e){let n=t(e);return !Number.isFinite(n)||n<0?0:Math.floor(n)}function fg(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=md(e,t.newestIndex,n,o),s=[...t.selectedEntries,i],a=t.totalEntries-s.length-t.repositoryLimitOmitted,d=yd({entries:s,tokenCap:t.tokenCap,totalEntries:t.totalEntries,omittedByTokenCap:a,repositoryLimitOmitted:t.repositoryLimitOmitted});if(ji(t.countTokens,d)<=t.tokenCap)return i}return null}function gg(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=ug(t.taskDistance,g,t.baseEntryChars),h=md(m,g,k),v=[...s,h],_=a-v.length-r,w=yd({entries:v,tokenCap:t.tokenCap,totalEntries:a,omittedByTokenCap:_,repositoryLimitOmitted:r});if(ji(t.countTokens,w)<=t.tokenCap){s.push(h);continue}let x=fg({selectedEntries:s,entry:m,newestIndex:g,bodyLimitChars:k,tokenCap:t.tokenCap,totalEntries:a,repositoryLimitOmitted:r,countTokens:t.countTokens});x&&s.push(x);break}let d=a-s.length-r,c=hd(d,r),l=gd({entries:s,omissions:c,tokenCap:t.tokenCap,totalEntries:a}).join(`
339
+ `),f=ji(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 Ui(t){return {threadId:t.threadId,agentId:t.agentId,lookback:t.lookback,activityLogTokenBudget:t.activityLogTokenBudget,baseEntryChars:t.baseEntryChars,tasks:[],activityLogByTask:new Map}}function mg(t){return !Number.isFinite(t)||t<0?0:Math.floor(t)}function hg(t){return t.length}function $i(t){let e=lg(t.maxEntryChars),n=mg(t.activityLogTokenBudget),r=Math.max(0,Math.floor(t.lookback));if(!r||!t.threadId||!t.agentId)return Ui({threadId:t.threadId,agentId:t.agentId,lookback:r,activityLogTokenBudget:n,baseEntryChars:e});let o,i;try{i=new un,o=i.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 Ui({threadId:t.threadId,agentId:t.agentId,lookback:r,activityLogTokenBudget:n,baseEntryChars:e})}if(!o.length)return Ui({threadId:t.threadId,agentId:t.agentId,lookback:r,activityLogTokenBudget:n,baseEntryChars:e});let s=[];for(let c of o){let l=cg(i,c.id);s.push({taskId:c.id,entries:dg(l,c.completed_at)});}let a=[],d=new Map;for(let c=0;c<s.length;c++){let{taskId:l,entries:f}=s[c];if(f.length===0)continue;let g=gg({taskId:l,entries:f,taskDistance:c,baseEntryChars:e,tokenCap:pg(n,c),countTokens:t.countTokens,repositoryEntryLimit:t.repositoryEntryLimit});a.push(g),d.set(l,g.activityLog);}return {threadId:t.threadId,agentId:t.agentId,lookback:r,activityLogTokenBudget:n,baseEntryChars:e,tasks:a,activityLogByTask:d}}function _d(t){if(t.activityLogTokenBudget!==void 0&&!t.countTokens)throw new Error("countTokens is required when activityLogTokenBudget is supplied");return $i({threadId:t.threadId,agentId:t.agentId,lookback:t.lookback,maxEntryChars:t.maxEntryChars,activityLogTokenBudget:t.activityLogTokenBudget??ng,countTokens:t.countTokens??hg,repositoryEntryLimit:t.repositoryEntryLimit}).activityLogByTask}u();u();var _g={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")},wg={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 wd(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",_g,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)",wg,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 kd(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 vd(t,e){return e?await e(t)?null:new Response(JSON.stringify({error:"Unauthorized"}),{status:401,headers:{"Content-Type":"application/json"}}):null}function bg(t,e){let n=new mcp_js.McpServer({name:"crewx-mcp-server",version:"1.0.0"},{capabilities:{tools:{}}});return wd(n,t,e),n}function Bi(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=kd(o);if(i)return i;let s=await vd(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=bg(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 Fi(t){let e=Y__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 ao(t){let e=Fi(t);return crypto$1.createHash("sha256").update(e).digest("hex")}u();u();function rr(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=de(n);return crypto$1.createHash("sha256").update(Fa(r)).digest("hex")}function qi(t){return `${t.id}\0${t.version}`}function Rd(t){if(!/^\d+$/.test(String(t.version))||t.version<1||t.id.length<1||t.id.length>128)throw new E("DEFINITION_UNSUPPORTED","UI definition is invalid");if(!/^[0-9a-f]{64}$/.test(t.hash)||rr(t)!==t.hash)throw new E("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=>!Tg(r)))throw new E("DEFINITION_UNSUPPORTED","UI action declaration is invalid");if(n.inputKeys&&(!Array.isArray(n.inputKeys)||n.inputKeys.some(r=>typeof r!="string"||!r)))throw new E("DEFINITION_UNSUPPORTED","UI action input declaration is invalid");n.resultProjection&&Ed(n.resultProjection);}if(t.renderer!==void 0&&(!t.renderer||t.renderer.length>128))throw new E("DEFINITION_UNSUPPORTED","UI definition renderer is invalid");if(t.surfaces&&(!Array.isArray(t.surfaces)||t.surfaces.some(e=>!e||e.length>64)))throw new E("DEFINITION_UNSUPPORTED","UI definition surfaces are invalid");t.stateProjection&&Ed(t.stateProjection);}function Ed(t){if(!Array.isArray(t.allow)||t.allow.some(e=>!/^[A-Za-z0-9_]+(?:\.[A-Za-z0-9_]+)*$/.test(e)))throw new E("DEFINITION_UNSUPPORTED","UI projection policy is invalid")}function Tg(t){return t.length>0&&t.length<=128&&t!=="*"&&t!=="all"&&!/[/*]/.test(t)}u();function co(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 Wi(){if(process.env.CREWX_HOME)try{return fd__namespace.realpathSync(process.env.CREWX_HOME)}catch{return Y__namespace.join(Hi__namespace.homedir(),".crewx")}return process.platform!=="win32"&&process.env.XDG_CONFIG_HOME?Y__namespace.join(process.env.XDG_CONFIG_HOME,"crewx"):Y__namespace.join(Hi__namespace.homedir(),".crewx")}u();u();u();u();u();var xd=["success","failed","completed"];new Set(xd);u();u();var uo=class extends ie{dbPath;constructor(e={}){super(),e.dbPath?this.dbPath=e.dbPath:e.dbRoot&&(this.dbPath=Y.join(e.dbRoot,".crewx","crewx.db"));}resolveDbPath(){return this.dbPath?this.dbPath:super.resolveDbPath()}openHandle(e){let n=this.resolveDbPath();if(e){let o=Y.dirname(n);fd.existsSync(o)||fd.mkdirSync(o,{recursive:true});}else if(!fd.existsSync(n))throw new R("NOT_FOUND","Database not found");let r=J(n);if(e)try{ce(r.db,n);}catch(o){throw r.close(),o}return r}insertSpan(e){let n=this.openHandle(true);try{n.db.insert(Rt).values(e).run();}catch(r){throw r instanceof R?r:new R("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(Rt).where(drizzleOrm.eq(Rt.task_id,e)).all()}catch(r){throw new R("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(Rt).where(drizzleOrm.eq(Rt.id,e)).limit(1).get()??void 0}catch(r){throw new R("DB_ERROR","Failed to find span by id",r)}finally{n.close();}}};u();u();u();u();u();u();u();function Ng(){return process.env.CREWX_DB??Y.join(Wi(),"crewx.db")}function fo(t){let e=JSON.parse(t);return de(e)}function Dg(t){let e=JSON.parse(t);if(e.kind!=="local"&&e.kind!=="authenticated"||typeof e.id!="string")throw new E("EXECUTION_FAILED","Stored actor is invalid");return {kind:e.kind,id:e.id}}function or(t){let e=t.status;if(!["active","completed","expired","revoked","unsupported"].includes(e))throw new E("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 E("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:fo(t.domain_ref_json),state:fo(t.state_json),revision:t.revision,status:e,grantedCapabilities:n,createdAt:t.created_at,updatedAt:t.updated_at}}function ir(t){return {id:t.id,instanceId:t.instance_id,requestId:t.request_id,actionId:t.action_id,actor:Dg(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:fo(t.input_json),result:t.result_json===null?null:fo(t.result_json),errorCode:t.error_code,requestedAt:t.requested_at,settledAt:t.settled_at}}function sr(t,e){return t.get(drizzleOrm.sql`SELECT * FROM ui_instances WHERE id = ${e}`)}function ar(t,e,n){return t.get(drizzleOrm.sql`SELECT * FROM ui_action_receipts WHERE instance_id = ${e} AND request_id = ${n}`)}function po(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 Lg(t){throw po(t)?new Re(t):new E("EXECUTION_FAILED","UI instance database operation failed")}var go=class{handle;db;testHooks;constructor(e=Ng(),n){fd.mkdirSync(Y.dirname(e),{recursive:true}),this.handle=J(e),this.db=this.handle.db,this.testHooks=n,ce(this.db,e);}close(){this.handle.close();}create(e){let n=we(e.domainRef),r=we(e.state),o=we([...e.grants]);try{this.db.run(drizzleOrm.sql`
340
340
  INSERT INTO ui_instances (
341
341
  id, definition_id, definition_version, definition_hash, workspace_id, thread_id,
342
342
  anchor_task_id, domain_ref_json, state_json, revision, status,
@@ -346,43 +346,43 @@ ${r.join(`
346
346
  ${e.workspaceId}, ${e.threadId}, ${e.anchorTaskId}, ${n},
347
347
  ${r}, 0, 'active', ${o}, ${e.now}, ${e.now}
348
348
  )
349
- `);}catch(s){ng(s);}let i=er(this.db,e.id);if(!i)throw new R("EXECUTION_FAILED","Created UI instance could not be read");return Qn(i)}get(e){let n=er(this.db,e);return n?Qn(n):null}getReceipt(e,n){let r=tr(this.db,e,n);return r?Zn(r):null}runStateOnly(e,n){try{return this.db.transaction(r=>{let o=this.testHooks?.injectDatabaseError?.();if(o!==void 0)throw o;let i=er(r,e.instanceId);if(!i)throw new R("INSTANCE_NOT_FOUND","UI instance was not found");let s=e.expectedRevision+1,a=yd();if(r.run(drizzleOrm.sql`
349
+ `);}catch(s){Lg(s);}let i=sr(this.db,e.id);if(!i)throw new E("EXECUTION_FAILED","Created UI instance could not be read");return or(i)}get(e){let n=sr(this.db,e);return n?or(n):null}getReceipt(e,n){let r=ar(this.db,e,n);return r?ir(r):null}runStateOnly(e,n){try{return this.db.transaction(r=>{let o=this.testHooks?.injectDatabaseError?.();if(o!==void 0)throw o;let i=sr(r,e.instanceId);if(!i)throw new E("INSTANCE_NOT_FOUND","UI instance was not found");let s=e.expectedRevision+1,a=Sd();if(r.run(drizzleOrm.sql`
350
350
  INSERT INTO ui_action_receipts (
351
351
  id, instance_id, request_id, action_id, actor_json, source,
352
352
  expected_revision, before_revision, after_revision, status, outcome,
353
353
  input_json, result_json, error_code, requested_at, settled_at
354
354
  ) VALUES (
355
355
  ${a}, ${e.instanceId}, ${e.requestId}, ${e.actionId},
356
- ${ye(se(e.actor))}, ${e.source},
356
+ ${we(de(e.actor))}, ${e.source},
357
357
  ${e.expectedRevision}, ${i.revision}, NULL, 'requested', NULL,
358
- ${ye(e.input)}, NULL, NULL, ${e.now}, NULL
358
+ ${we(e.input)}, NULL, NULL, ${e.now}, NULL
359
359
  )
360
- `),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`
360
+ `),i.revision!==e.expectedRevision)throw new Ce(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`
361
361
  UPDATE ui_instances
362
362
  SET revision = revision + 1, updated_at = ${Math.max(e.now,i.updated_at)}
363
363
  WHERE id = ${e.instanceId} AND revision = ${e.expectedRevision} AND status = 'active'
364
- `).changes!==1)throw new Ie(i.revision);let c={instance:{...Qn(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?rg(f.errorCode):null,k=f.state?se(f.state):Qn(i).state,h=f.result?ye(se(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`
364
+ `).changes!==1)throw new Ce(i.revision);let c={instance:{...or(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 E("EXECUTION_FAILED","State-only handler must be synchronous");let f=l??{},g="outcome"in f?f.outcome:"succeeded",m="errorCode"in f?Mg(f.errorCode):null,k=f.state?de(f.state):or(i).state,h=f.result?we(de(f.result)):null,v=Math.max(e.now,i.updated_at);r.run(drizzleOrm.sql`UPDATE ui_instances SET state_json = ${we(k)}, updated_at = ${v} WHERE id = ${e.instanceId} AND revision = ${s}`),r.run(drizzleOrm.sql`
365
365
  UPDATE ui_action_receipts
366
366
  SET status = 'settled', outcome = ${g}, after_revision = ${s},
367
367
  result_json = ${h}, error_code = ${m}, settled_at = ${Math.max(e.now,i.updated_at)}
368
368
  WHERE id = ${a} AND status = 'requested'
369
- `);let _=tr(r,e.instanceId,e.requestId);if(!_)throw new R("EXECUTION_FAILED","Action receipt settlement failed");return Zn(_)})}catch(r){throw r instanceof Ie||r instanceof Ee||r instanceof R?r:io(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=er(n,e.instanceId);if(!o)throw new R("INSTANCE_NOT_FOUND","UI instance was not found");let i=e.expectedRevision+1,s=yd();if(n.run(drizzleOrm.sql`
369
+ `);let _=ar(r,e.instanceId,e.requestId);if(!_)throw new E("EXECUTION_FAILED","Action receipt settlement failed");return ir(_)})}catch(r){throw r instanceof Ce||r instanceof Re||r instanceof E?r:po(r)?new Re(r):new E("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=sr(n,e.instanceId);if(!o)throw new E("INSTANCE_NOT_FOUND","UI instance was not found");let i=e.expectedRevision+1,s=Sd();if(n.run(drizzleOrm.sql`
370
370
  INSERT INTO ui_action_receipts (
371
371
  id, instance_id, request_id, action_id, actor_json, source,
372
372
  expected_revision, before_revision, after_revision, status, outcome,
373
373
  input_json, result_json, error_code, requested_at, settled_at
374
374
  ) VALUES (
375
375
  ${s}, ${e.instanceId}, ${e.requestId}, ${e.actionId},
376
- ${ye(se(e.actor))}, ${e.source},
376
+ ${we(de(e.actor))}, ${e.source},
377
377
  ${e.expectedRevision}, ${o.revision}, NULL, 'requested', NULL,
378
- ${ye(e.input)}, NULL, NULL, ${e.now}, NULL
378
+ ${we(e.input)}, NULL, NULL, ${e.now}, NULL
379
379
  )
380
- `),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`
380
+ `),o.revision!==e.expectedRevision)throw new Ce(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`
381
381
  UPDATE ui_instances
382
382
  SET revision = revision + 1, updated_at = ${Math.max(e.now,o.updated_at)}
383
383
  WHERE id = ${e.instanceId} AND revision = ${e.expectedRevision} AND status = 'active'
384
- `).changes!==1)throw new Ie(o.revision);let d=tr(n,e.instanceId,e.requestId);if(!d)throw new R("EXECUTION_FAILED","Requested receipt could not be read");return {instance:{...Qn(o),revision:i},receipt:Zn(d),reservedRevision:i}})}catch(n){throw n instanceof Ie||n instanceof Ee||n instanceof R?n:io(n)?new Ee(n):new R("EXECUTION_FAILED","UI external action reservation failed")}}settleExternal(e){try{return this.db.transaction(n=>{let r=er(n,e.reservation.instanceId),o=tr(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 Zn(o);let i=se(e.state),s=e.result===null?null:ye(se(e.result)),a=Math.max(e.now,o.requested_at,r.updated_at);n.run(drizzleOrm.sql`
385
- UPDATE ui_instances SET state_json = ${ye(i)}, updated_at = ${a}
384
+ `).changes!==1)throw new Ce(o.revision);let d=ar(n,e.instanceId,e.requestId);if(!d)throw new E("EXECUTION_FAILED","Requested receipt could not be read");return {instance:{...or(o),revision:i},receipt:ir(d),reservedRevision:i}})}catch(n){throw n instanceof Ce||n instanceof Re||n instanceof E?n:po(n)?new Re(n):new E("EXECUTION_FAILED","UI external action reservation failed")}}settleExternal(e){try{return this.db.transaction(n=>{let r=sr(n,e.reservation.instanceId),o=ar(n,e.reservation.instanceId,e.reservation.requestId);if(!r||!o)throw new E("EXECUTION_FAILED","Requested action receipt is missing");if(o.status==="settled")return ir(o);let i=de(e.state),s=e.result===null?null:we(de(e.result)),a=Math.max(e.now,o.requested_at,r.updated_at);n.run(drizzleOrm.sql`
385
+ UPDATE ui_instances SET state_json = ${we(i)}, updated_at = ${a}
386
386
  WHERE id = ${e.reservation.instanceId} AND revision = ${e.reservedRevision}
387
387
  `).changes!==1?n.run(drizzleOrm.sql`
388
388
  UPDATE ui_action_receipts
@@ -394,25 +394,25 @@ ${r.join(`
394
394
  SET status = 'settled', outcome = ${e.outcome}, after_revision = ${e.reservedRevision},
395
395
  result_json = ${s}, error_code = ${e.errorCode}, settled_at = ${a}
396
396
  WHERE id = ${o.id} AND status = 'requested'
397
- `);let c=tr(n,e.reservation.instanceId,e.reservation.requestId);if(!c)throw new R("EXECUTION_FAILED","External action settlement failed");return Zn(c)})}catch(n){throw n instanceof Ee||n instanceof R?n:io(n)?new Ee(n):new R("EXECUTION_FAILED","UI external action settlement failed")}}};function yd(){return `uicr_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,12)}`}function rg(t){return typeof t=="string"&&/^[A-Z][A-Z0-9_]{0,63}$/.test(t)?t:"EXECUTION_FAILED"}var og=new Set(["definition","workspaceId","threadId","anchorTaskId","domainRef","state"]),ig=new Set(["definition","workspaceId","threadId","domainRef","state"]),sg=new Set(["instanceId","actionId","expectedRevision","requestId","input"]),kd=new Set(["source","workspaceId","actor"]),_d=new Set(["source","workspaceId","threadId","actor"]),ag=kd,Li=4;function vd(t,e){return new co(t,e)}function Ed(t){return new co(t.workspaceId,t,void 0,true)}var co=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??[]){pd(i);let s=Ni(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=wd(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=dg(n.dbPath,r);}close(){this.store.close();}async createInstance(e,n){if(Ui(e,og,ig),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=se(e.domainRef),i=se(e.state),s=this.resolveInstanceGrants(r,n),a=this.now();return this.store.create({id:cg(),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){Ui(e,sg),Ui(n,this.serverMode?_d:kd,this.serverMode?_d:ag),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(wd(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<Li;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 ji(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<Li;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 ji(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?lg(o.errorCode):null,a=r.instance.state,d=null;try{o.state&&(a=se(o.state)),o.result&&(d=se(o.result));}catch{a=r.instance.state,d=null;}for(let l=0;l<Li;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 ji(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(Ni(e));return !n||n.hash!==e.hash||Yn(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(!ug(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 [...no(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=se(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 dg(t,e){return new ao(t,{injectDatabaseError:e?.injectDatabaseError,bumpRevisionBeforeCas:e?.bumpRevisionBeforeCas})}function Ui(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 wd(t,e,n){return `${t}\0${e}\0${n}`}function cg(){return `uic_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,12)}`}function lg(t){return typeof t=="string"&&/^[A-Z][A-Z0-9_]{0,63}$/.test(t)?t:"EXECUTION_FAILED"}function ug(t,e){return t.length===e.length&&t.every(n=>e.includes(n))}async function ji(t){await new Promise(e=>setTimeout(e,Math.min(8,1<<t)));}Te();function $d(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)?t:void 0}function Ug(t){return t.slice(t.lastIndexOf("/")+1)}var jg=new Set(["tools","effort","mode","provider","model","profiles","overdrive"]);function $g(t){if(!t)return;let n=Object.entries(t).filter(([,r])=>r!=null&&typeof r!="object"&&typeof r!="function").filter(([r])=>!jg.has(r));if(n.length!==0)return Object.fromEntries(n.map(([r,o])=>[r,String(o)]))}function Bd(t,e,n){let r=$d(t);if(!r)return {};let o=Ug(e),i=!n.active&&o==="grok"?On(r):r,s=n.active?n.providerOptions:$d(i[o]);return {modeOptions:i,providerOptions:s,configOptions:$g(i)}}function Bg(t){return t?t.settings?.template?.exec:void 0}function Fg(){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 es=class t extends $n{_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=to(s),this._workspaceName=Y.basename(s);let a=Bg(r);this._templateEngine=new Dn({execPolicy:n.execPolicy??a}),this._documentLoader=o??new qt,this._layoutLoader=new Mn({templatesPath:Xt()}),this._layoutRenderer=new jn,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=Y.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}=jo(),o;try{o=td.readFileSync(n,"utf-8");}catch(s){throw new Error(`[@crewx/sdk] Cannot read built-in config: ${n}
398
- ${s.message}`)}let i=Tr(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"&&!Y.isAbsolute(c.path)?s[a]={...c,path:Y.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=Fd(a.vars,d.vars),l=Fd(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=qg(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=xr(e);i=t.mergeCrewxConfig(l,f),s=Y.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=xr(e),s=Y.dirname(e);}let a=new qt(r);await a.load(i.documents,s);let d=i.agents??[];return await qd(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 qt(o);await a.load(s.documents,r??(typeof process<"u"?process.cwd():"/"));let d=s.agents??[];return await qd(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 vd(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=ni(n);return Y.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 Ci(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??li(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=pi({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(Sn+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=>qe(a.role.toLowerCase(),d)))),o&&(s=s.filter(a=>a.team&&o.some(d=>qe(a.team.toLowerCase(),d)))),i&&(s=s.filter(a=>(Array.isArray(a.provider)?a.provider:[a.provider]).some(c=>i.some(l=>qe(c.toLowerCase(),l))))),s}renderAgentPrompt(e){let n=e.startsWith("@")?e.slice(1):e,r=this._agents.get(n);if(!r)throw new it(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 it(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??Fg(),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?[_]:[],T=w.join(", ")||(typeof _=="string"?_:""),x=i.options,U=["goals","daily"],I={goals:false,daily:false},ee;if(!Array.isArray(x)&&typeof x=="object"&&x!==null){let N=x;if("goals"in N){let X=N.goals;typeof X=="string"||Array.isArray(X)?I.goals=X:I.goals=!!X;}"daily"in N&&(I.daily=!!N.daily);let Z={};for(let[X,de]of Object.entries(N))U.includes(X)||(Z[X]=de);if(Object.keys(Z).length>0){let X=w.some(nt=>nt.startsWith("cli/")),de={};for(let[nt,rt]of Object.entries(Z)){let E={};if(Array.isArray(rt))X&&(E.rawArgs=rt);else if(typeof rt=="object"&&rt!==null){let M=rt;Object.keys(M).length>0&&(E.named=M);}(E.named||E.rawArgs&&E.rawArgs.length>0)&&(de[nt]=E);}ee=Object.keys(de).length>0?de:void 0;}}let S=Array.isArray(x)?x: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(I.goals){let N=Y.join(this._projectRoot,"docs","goal"),Z=await ba(N,void 0,I.goals);Z&&(F.active_goals={content:Z});}if(I.daily){let N=Y.join(this._projectRoot,"docs","daily"),Z=await Ta(N);Z&&(F.today_daily={content:Z});}let pe=n?.vars?.user_input??void 0,q=this._config?.settings?.dreaming?.continuity,O=q?.reuseReadOnly!==false,ne=typeof q?.lookback=="number"?q.lookback:5,V=typeof q?.maxEntryChars=="number"?q.maxEntryChars:8e3,j=n?.threadId??"",H=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=Si({threadId:j,agentId:H,lookback:ne,maxEntryChars:V,activityLogTokenBudget:r.activityLogTokenBudget,countTokens:r.countTokens});te=N.activityLogByTask,r.onActivityLogResult?.(N);}else {typeof q?.decayRate=="number"?q.decayRate:.5;te=sd({threadId:j,agentId:H,lookback:ne,maxEntryChars:V});}let mn=(n?.messages??[]).map(N=>{let Z=typeof N.activity_log=="string"?Wr(N.activity_log):N.activity_log;if(!N.isAssistant)return Z===N.activity_log?N:{...N,activity_log:Z};let X=N.metadata?.task_id;return !X||!te.has(X)?Z===N.activity_log?N:{...N,activity_log:Z}:{...N,activity_log:Wr(te.get(X))}}),It={user_input:pe,agent:{id:i.id,name:i.name??i.id,role:i.role??"",team:i.team??"",description:i.description??"",provider:T,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:S},agentMetadata:{specialties:i.specialties??[],capabilities:i.capabilities??[],description:i.description??""},contextOptions:I,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:Ln(new Date),has_activity_log:te.size>0,messages:mn,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,It)}_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 sn(r,o);if(!e){let s=sn([],o);return s.length>0?s:void 0}let i=this._getConversationProvider();if(!i){let s=sn([],o);return s.length>0?s:void 0}try{let s=await i.fetchHistory(e,{currentTraceId:n});if(s.messages.length===0){let a=sn([],o);return a.length>0?a:void 0}return sn(wi(s),o)}catch{return}}async _resolveFreshProvider(e,n,r){let o=xa(e.provider),i=ei(e.options,n,o,Zo(r?.overdrive)),s=ti(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=_r(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:Do,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=br({provider:n,model:r,inputBudgetPercent:o}),s=e.providerResolution.baseProviderStr,a=e.providerResolution.baseModel??null,d=r||null,c=Rr(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:vr,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:vr,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=br({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=Uo({provider:i,model:d.model}),m=I=>g.countTokens(I),k=I=>Lo({systemPrompt:I,message:e.message},m),h,v=await this._renderFreshPromptVariant({...e,messages:n,activityLogTokenBudget:d.inputBudgetTokens,countTokens:m,onActivityLogResult:I=>{h=I;}}),_=k(v),w=_,T=false,x=r;if(w>d.inputBudgetTokens&&h&&h.activityLogByTask.size>0&&(v=await this._renderFreshPromptVariant({...e,messages:x,activityLogDisabled:true,activityLogTokenBudget:d.inputBudgetTokens,countTokens:m}),w=k(v),T=true),w>d.inputBudgetTokens&&x.length>0)for(let I=1;I<=r.length;I++){let ee=r.slice(I),S=await this._renderFreshPromptVariant({...e,messages:ee,activityLogDisabled:T,activityLogTokenBudget:d.inputBudgetTokens,countTokens:m}),F=k(S);if(v=S,w=F,x=ee,F<=d.inputBudgetTokens)break}let U=this._buildResolvedContextBudgetManifest({budget:d,requestedProvider:c,requestedModel:l,effectiveProvider:i,effectiveModel:f,initialTokenCount:_,finalTokenCount:w,activityLogResult:h,activityRemovedForBudget:T,historyOriginalMessages:o,historyIncludedMessages:x.length});return w>d.inputBudgetTokens?{renderedPrompt:v,contextBudget:U,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:U,countTokens:m}}_recountFreshProviderInitialInput(e){let n=e.contextBudgetManifest;if(!n?.resolved||!n.effectiveModel)return null;let r=e.countTokens??(o=>Rr(o,{provider:n.effectiveProvider,model:n.effectiveModel}).tokenCount);return Lo({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=aa();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=Xo();return n!==void 0?n:e?.meta?.defaultIdleMs!==void 0?e.meta.defaultIdleMs:6e5}_lookupCliAdapter(e){return fi(e)}_resolveEffectiveCost(e,n,r){return As(e?.costUsd,e?.inputTokens,e?.outputTokens,e?.cachedInputTokens,n)}_resolveEffectiveCwd(e,n){return n?.cwd??(e.working_directory?Y.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)??Pn(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=Bn.getStore()??gi(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 Bn.run(d,async()=>{let l=Date.now(),f=new Date,g;try{g=Ar(e,Array.from(this._agents.values()));}catch(E){if(E instanceof it){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 M=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:M,error:$,metadata:r?.metadata?{...r.metadata}:void 0}),this._clearCallerIdentityOverride(s,c),{ok:!1,data:"",error:$,meta:{agentId:e.replace(/^@/,""),provider:"",durationMs:M,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,x=this._resolveContextMode(r)==="instruction-only",U,I,ee,S=v,F,pe,Q,ie,q=!1,O=E=>{q||(q=!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:S,provider:h,codingAgentCommand:U,renderedPrompt:pe,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(x){let E=this._prepareInstructionOnlyResumeWithBudget({message:n,providerResolution:m,resumeSessionId:w});if(Q=E.contextBudget,E.error){O();let M=Date.now()-l,$=E.error;return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"query",durationMs:M,error:$,model:S,metadata:r?.metadata?{...r.metadata}:void 0}),this._clearCallerIdentityOverride(s,c),{ok:!1,data:"",error:$,meta:{agentId:g.id,provider:h,model:v,durationMs:M,taskId:s}}}}let ne;try{ne=dt(h,this._additionalArgsProvider);}catch(E){O();let M=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:M,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:M,taskId:s}}}let V;if(x||(V=await this._fetchHistoryMessages(r?.threadId,s,r?.messages,r?.uiProjections)),!x)try{let E=await this._prepareFreshPromptWithBudget({agentRef:e,agent:g,mode:"query",message:n,options:r,providerResolution:m,historyMessages:V});if(pe=E.renderedPrompt,Q=E.contextBudget,ie=E.countTokens,E.error){O();let M=Date.now()-l,$=E.error;return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"query",durationMs:M,error:$,model:S,metadata:r?.metadata?{...r.metadata}:void 0}),this._clearCallerIdentityOverride(s,c),{ok:!1,data:"",error:$,meta:{agentId:g.id,provider:h,model:v,durationMs:M,taskId:s}}}}catch(E){console.error(`[crewx] renderAgentPromptFull failed for ${e}: ${E instanceof Error?E.message:String(E)}`);}let j=g.options,H=Bd(j?.query,h,_),me=_.active?_.mode:H.modeOptions?.mode,te=_.effort??r?.effort??H.modeOptions?.effort,mn=Array.isArray(j?.query?.tools)?j.query.tools:void 0,It=this._tools.size>0?this._filterToolsByMode(mn):[],N=H.configOptions,Z=g.inline?.max_steps;h.startsWith("api/")&&O();let X=!1,de=0,nt=()=>{},rt=new Promise(E=>{nt=E;});this._activeTasks.set(s,{pid:void 0,done:rt});try{let E={model:v,effort:te,mode:me,context:r?.context,...x?{}:{systemPrompt:pe??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:It.length>0?It:void 0,maxSteps:Z,providerOptions:H.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:C=>{let ce=this._activeTasks.get(s);ce&&(ce.pid=C),O(C);},onProviderSessionId:C=>{F=C;},onOutput:(C,ce)=>{let ko=this._lookupCliAdapter(h);ce==="stdout"&&ko?.suppressOutputLine?.(C)===!0||this.emit("task:output",{traceId:s,timestamp:new Date,agentRef:e,output:C,level:ce}),ce==="stdout"&&this.emitToolEvents(s,e,h,C,g.id,r?.threadId??"","");},onTaskLog:C=>{this.emitTaskLogEntries(s,e,g.id,r?.threadId??"","",h,C);for(let ce of C)this.emit("task:output",{traceId:s,timestamp:new Date,agentRef:e,output:JSON.stringify(ce),level:"info"});},onCommand:C=>{U=C;},onUsage:C=>{I=C;},onExitCode:C=>{ee=C;},onModel:C=>{S||(S=C);}},M=x?void 0:this._validateFreshProviderInitialInputBudget({message:n,providerOptions:E,contextBudgetManifest:Q,countTokens:ie});if(M){O();let C=Date.now()-l;return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"query",durationMs:C,error:M,model:S,metadata:r?.metadata?{...r.metadata}:void 0}),X=!0,{ok:!1,data:"",error:M,meta:{agentId:g.id,provider:h,model:v,durationMs:C,taskId:s}}}let $=await ne.query(n,E);de=this._resolveEffectiveCost(I,S,l),O();let ht=Date.now()-l,hn={...r?.metadata??{},...r?.threadId?{threadId:r.threadId}:{}};return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"query",result:$,durationMs:ht,exitCode:ee,inputTokens:I?.inputTokens,outputTokens:I?.outputTokens,cachedInputTokens:I?.cachedInputTokens,costUsd:de,model:S,metadata:Object.keys(hn).length>0?hn:void 0}),X=!0,{ok:!0,data:$,meta:{agentId:g.id,provider:h,model:v,durationMs:ht,taskId:s}}}catch(E){if(E instanceof exports.ClientToolCallRequiredError){let ht=Ve("thd");return this._pendingThreads.set(ht,{agentRef:g.id,providerStr:h,continuationState:E.continuationState,toolCall:E.toolCall,traceId:s,startMs:l,model:v}),X=!0,{ok:!0,status:"requires_action",data:"",toolCall:E.toolCall,threadId:ht,meta:{agentId:g.id,provider:h,model:v,durationMs:Date.now()-l,taskId:s}}}de=this._resolveEffectiveCost(I,S,l),O();let M=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:M,error:$,exitCode:ee,inputTokens:I?.inputTokens,outputTokens:I?.outputTokens,cachedInputTokens:I?.cachedInputTokens,costUsd:de,model:S,metadata:r?.metadata?{...r.metadata}:void 0}),X=!0,{ok:!1,data:"",error:$,meta:{agentId:g.id,provider:h,model:v,durationMs:M,taskId:s}}}finally{X||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:I?.inputTokens,outputTokens:I?.outputTokens,cachedInputTokens:I?.cachedInputTokens,costUsd:de,model:S}),this._activeTasks.delete(s),this._clearCallerIdentityOverride(s,c),nt();}})}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=dt(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=Bn.getStore()??gi(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 Bn.run(d,async()=>{let l=Date.now(),f=new Date,g;try{g=Ar(e,Array.from(this._agents.values()));}catch(E){if(E instanceof it){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 M=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:M,error:$,metadata:r?.metadata?{...r.metadata}:void 0}),this._clearCallerIdentityOverride(s,c),{ok:!1,data:"",error:$,meta:{agentId:e.replace(/^@/,""),provider:"",durationMs:M,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,x=this._resolveContextMode(r)==="instruction-only",U,I,ee,S=v,F,pe,Q,ie,q=!1,O=E=>{q||(q=!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:S,provider:h,codingAgentCommand:U,renderedPrompt:pe,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(x){let E=this._prepareInstructionOnlyResumeWithBudget({message:n,providerResolution:m,resumeSessionId:w});if(Q=E.contextBudget,E.error){O();let M=Date.now()-l,$=E.error;return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"execute",durationMs:M,error:$,model:S,metadata:r?.metadata?{...r.metadata}:void 0}),this._clearCallerIdentityOverride(s,c),{ok:!1,data:"",error:$,meta:{agentId:g.id,provider:h,model:v,durationMs:M,taskId:s}}}}let ne;try{ne=dt(h,this._additionalArgsProvider);}catch(E){O();let M=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:M,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:M,taskId:s}}}let V;if(x||(V=await this._fetchHistoryMessages(r?.threadId,s,r?.messages,r?.uiProjections)),!x)try{let E=await this._prepareFreshPromptWithBudget({agentRef:e,agent:g,mode:"execute",message:n,options:r,providerResolution:m,historyMessages:V});if(pe=E.renderedPrompt,Q=E.contextBudget,ie=E.countTokens,E.error){O();let M=Date.now()-l,$=E.error;return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"execute",durationMs:M,error:$,model:S,metadata:r?.metadata?{...r.metadata}:void 0}),this._clearCallerIdentityOverride(s,c),{ok:!1,data:"",error:$,meta:{agentId:g.id,provider:h,model:v,durationMs:M,taskId:s}}}}catch(E){console.error(`[crewx] renderAgentPromptFull failed for ${e}: ${E instanceof Error?E.message:String(E)}`);}let j=g.options,H=Bd(j?.execute,h,_),me=_.active?_.mode:H.modeOptions?.mode,te=_.effort??r?.effort??H.modeOptions?.effort,mn=Array.isArray(j?.execute?.tools)?j.execute.tools:void 0,It=this._tools.size>0?this._filterToolsByMode(mn):[],N=H.configOptions,Z=g.inline?.max_steps;h.startsWith("api/")&&O();let X=!1,de=0,nt=()=>{},rt=new Promise(E=>{nt=E;});this._activeTasks.set(s,{pid:void 0,done:rt});try{let E={model:v,effort:te,mode:me,context:r?.context,...x?{}:{systemPrompt:pe??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:It.length>0?It:void 0,maxSteps:Z,providerOptions:H.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:C=>{let ce=this._activeTasks.get(s);ce&&(ce.pid=C),O(C);},onProviderSessionId:C=>{F=C;},onOutput:(C,ce)=>{let ko=this._lookupCliAdapter(h);ce==="stdout"&&ko?.suppressOutputLine?.(C)===!0||this.emit("task:output",{traceId:s,timestamp:new Date,agentRef:e,output:C,level:ce}),ce==="stdout"&&this.emitToolEvents(s,e,h,C,g.id,r?.threadId??"","");},onTaskLog:C=>{this.emitTaskLogEntries(s,e,g.id,r?.threadId??"","",h,C);for(let ce of C)this.emit("task:output",{traceId:s,timestamp:new Date,agentRef:e,output:JSON.stringify(ce),level:"info"});},onCommand:C=>{U=C;},onUsage:C=>{I=C;},onExitCode:C=>{ee=C;},onModel:C=>{S||(S=C);}},M=x?void 0:this._validateFreshProviderInitialInputBudget({message:n,providerOptions:E,contextBudgetManifest:Q,countTokens:ie});if(M){O();let C=Date.now()-l;return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"execute",durationMs:C,error:M,model:S,metadata:r?.metadata?{...r.metadata}:void 0}),X=!0,{ok:!1,data:"",error:M,meta:{agentId:g.id,provider:h,model:v,durationMs:C,taskId:s}}}let $=await ne.execute(n,E);de=this._resolveEffectiveCost(I,S,l),O();let ht=Date.now()-l,hn={...r?.metadata??{},...r?.threadId?{threadId:r.threadId}:{}};return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"execute",result:$,durationMs:ht,exitCode:ee,inputTokens:I?.inputTokens,outputTokens:I?.outputTokens,cachedInputTokens:I?.cachedInputTokens,costUsd:de,model:S,metadata:Object.keys(hn).length>0?hn:void 0}),X=!0,{ok:!0,data:$,meta:{agentId:g.id,provider:h,model:v,durationMs:ht,taskId:s}}}catch(E){de=this._resolveEffectiveCost(I,S,l),O();let M=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:M,error:$,exitCode:ee,inputTokens:I?.inputTokens,outputTokens:I?.outputTokens,cachedInputTokens:I?.cachedInputTokens,costUsd:de,model:S,metadata:r?.metadata?{...r.metadata}:void 0}),X=!0,{ok:!1,data:"",error:$,meta:{agentId:g.id,provider:h,model:v,durationMs:M,taskId:s}}}finally{X||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:I?.inputTokens,outputTokens:I?.outputTokens,cachedInputTokens:I?.cachedInputTokens,costUsd:de,model:S}),this._activeTasks.delete(s),this._clearCallerIdentityOverride(s,c),nt();}})}finally{this._clearCallerIdentityOverride(s,c);}}};function Fd(t,e){let n=ts(t)?t:void 0,r=ts(e)?e:void 0;if(!(!n&&!r))return {...n??{},...r??{}}}function ts(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function qg(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(!ts(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 Hg(t){let e=Array.isArray(t.provider)?t.provider:[t.provider],n=t.options,r=[...e];for(let o of ["query","execute"]){let i=ti(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)?Fr(s.overdrive):void 0;a?.provider&&r.push(a.provider);}return r}async function qd(t,e,n){let r=t.flatMap(Hg);if(r.some(i=>i.startsWith("api/"))){let{registerApiProviders:i}=await Promise.resolve().then(()=>(Bi(),xd));i(n?.api);}await zg(r,e),Gg(r,e),Wg(r);}function Wg(t){if(!t.some(r=>r.startsWith("acp/")))return;let{registerAcpProviders:n}=(Vi(),ws(Cd));n();}async function zg(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(()=>(Xi(),Nd)),i=new Map;for(let s of r)s.type==="remote"&&typeof s.id=="string"&&i.set(s.id,s);i.size>0&&at("remote",o(i,dt));}function Gg(t,e){if(!t.some(s=>s.startsWith("plugin/")))return;let r=e.providers;if(!Array.isArray(r))return;let{createPluginProviderFactory:o}=(Yi(),ws(Ud)),i=new Map;for(let s of r)s.type==="plugin"&&typeof s.id=="string"&&i.set(s.id,s);i.size>0&&at("plugin",o(i));}u();u();var ns=class{detach(e){}};u();var Vg="crewx:fs:",rs=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 ln="default",un="archive",Hd="wi-default-flow",Jg="wi-plan-flow",Kg="wi-default-flow.yaml",Xg="wi-plan-flow.yaml",ho=/^[a-zA-Z0-9_-]{1,64}$/;function Wd(t){return t===ln||t===un}function Yg(t){let e={id:ln,name:"Default",workflowId:Hd,system:true,readOnly:false},n={id:un,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||Wd(d)||!ho.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";}},Zg=300*1e3,em=300*1e3,tm=1e4,nm=50;function rm(t){return new Promise(e=>setTimeout(e,t))}function om(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 im(t){return t.normalize("NFKD").replace(/[^\x00-\x7F]/g,"").replace(/[^a-zA-Z0-9]+/g,"-").replace(/^-+|-+$/g,"").toUpperCase().slice(0,60)}function sm(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 zd(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 Gd(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 Vd(t){return (typeof t=="string"?t.trim().replace(/^@+/,""):"")||void 0}function Jd(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 Kd(t,e){let n=typeof t=="string"?t.trim():"";if(!n){if(e?.required)throw new re("board is required");return}if(!ho.test(n))throw new re("board must match ^[a-zA-Z0-9_-]{1,64}$");if(n===un)throw new re(`board cannot be '${un}'`);return n}function pn(t){return JSON.stringify(t)}function am(t,e){return e.length===0?[`${t}: []`]:[`${t}:`,...e.map(n=>` - ${pn(n)}`)]}async function dm(t){let e=await td.promises.stat(t).catch(()=>null);e&&Date.now()-e.mtimeMs>em&&await td.promises.rm(t,{recursive:true,force:true}).catch(()=>{});}async function cm(t,e){let n=Y.join(t,".wi-create.lock"),r=Date.now()+tm;for(;Date.now()<r;)try{await td.promises.mkdir(n);try{return await e()}finally{await td.promises.rm(n,{recursive:!0,force:!0}).catch(()=>{});}}catch(o){if(o.code!=="EEXIST")throw o;await dm(n),await rm(nm);}throw new re("WI create lock timeout: docs/wi/.wi-create.lock")}async function Xd(t){let e=[],n=await td.promises.readdir(t,{withFileTypes:true}).catch(r=>{if(r.code==="ENOENT")return [];throw r});for(let r of n){let o=Y.join(t,r.name);r.isDirectory()?e.push(...await Xd(o)):r.isFile()&&r.name.endsWith(".md")&&e.push(r.name);}return e}async function lm(t){let e=await td.promises.readdir(t).catch(r=>{if(r.code==="ENOENT")return [];throw r}),n=await Xd(Y.join(t,"archive"));return [...e,...n]}function um(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 pm(t,e){return t.some(n=>n===`${e}.md`||n.startsWith(`${e}-`))}async function fm(t,e){let n=Y.join(t,`.wi-${e}.lock`);try{return await td.promises.writeFile(n,"",{flag:"wx"}),{claimed:!0,lockPath:n}}catch(r){if(r.code!=="EEXIST")throw r;return await td.promises.stat(n).then(i=>Date.now()-i.mtimeMs>Zg).catch(()=>false)&&await td.promises.unlink(n).then(()=>true).catch(()=>false)?(await td.promises.writeFile(n,"",{flag:"wx"}),{claimed:true,lockPath:n}):{claimed:false,lockPath:n}}}function gm(t){return {title:zd(t.title),assignee:Vd(t.assignee),body:(t.body??"").trim(),board:Kd(t.board),source:Gd(t.source),depends_on:Jd(t.depends_on)}}function mm(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 hm(t){let e=Kd(t.board,{required:true}),n=Gd(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:mm(o.key,i,r),title:zd(o.title),assignee:Vd(o.assignee),body:o.body.trim(),board:e,source:n,depends_on:Jd(o.depends_on)}})}function ym(t,e){return t.map(n=>e.get(n)??n)}function _m(t,e,n){let r=!!t.board&&t.board!==ln,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:`---
399
- ${[`wi_id: ${e}`,`title: ${pn(t.title)}`,`date: ${pn(n)}`,"status: draft",...t.assignee?[`assignee: ${pn(t.assignee)}`]:[],"priority: normal",`source: ${pn(t.source)}`,...r?[`board: ${pn(t.board)}`]:[],...am("depends_on",t.depends_on)].join(`
397
+ `);let c=ar(n,e.reservation.instanceId,e.reservation.requestId);if(!c)throw new E("EXECUTION_FAILED","External action settlement failed");return ir(c)})}catch(n){throw n instanceof Re||n instanceof E?n:po(n)?new Re(n):new E("EXECUTION_FAILED","UI external action settlement failed")}}};function Sd(){return `uicr_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,12)}`}function Mg(t){return typeof t=="string"&&/^[A-Z][A-Z0-9_]{0,63}$/.test(t)?t:"EXECUTION_FAILED"}var Ug=new Set(["definition","workspaceId","threadId","anchorTaskId","domainRef","state"]),jg=new Set(["definition","workspaceId","threadId","domainRef","state"]),$g=new Set(["instanceId","actionId","expectedRevision","requestId","input"]),Od=new Set(["source","workspaceId","actor"]),Pd=new Set(["source","workspaceId","threadId","actor"]),Bg=Od,zi=4;function Nd(t,e){return new mo(t,e)}function Dd(t){return new mo(t.workspaceId,t,void 0,true)}var mo=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 E("INPUT_INVALID","UI runtime workspace is invalid");if(o){let i=n;if(!i.dbPath||!i.grantPolicy)throw new E("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 E("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??[]){Rd(i);let s=qi(i);if(this.definitions.has(s))throw new E("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 E("INPUT_INVALID","UI handler registration is invalid");let s=Cd(i.definitionId,i.version,i.actionId);if(this.handlers.has(s))throw new E("INPUT_INVALID","Duplicate UI handler registration");this.handlers.set(s,i);}this.store=Fg(n.dbPath,r);}close(){this.store.close();}async createInstance(e,n){if(Gi(e,Ug,jg),this.serverMode){if(!n)throw new E("UNAUTHENTICATED","Authenticated UI context is required");if(this.validateServerContext(n),e.workspaceId!==n.workspaceId||e.threadId!==n.threadId)throw new E("WORKSPACE_MISMATCH","UI instance scope does not match authenticated context")}else if(e.workspaceId!==this.workspaceId)throw new E("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 E("INPUT_INVALID","UI instance scope is invalid");let r=this.requireDefinition(e.definition),o=de(e.domainRef),i=de(e.state),s=this.resolveInstanceGrants(r,n),a=this.now();return this.store.create({id:qg(),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){Gi(e,$g),Gi(n,this.serverMode?Pd:Od,this.serverMode?Pd:Bg),this.validateContext(n);let r={...e,input:this.validateEnvelope(e)},o=this.store.get(r.instanceId);if(!o)throw new E("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 E("WORKSPACE_MISMATCH","Workspace does not match the UI instance");if(o.status!=="active")throw new E("INSTANCE_NOT_ACTIONABLE","UI instance is not actionable");let i=this.requireDefinition(o.definition),s=i.actions[r.actionId];if(!s)throw new E("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 E("CAPABILITY_DENIED","UI action capability is not granted");let d=this.handlers.get(Cd(i.id,i.version,r.actionId));if(!d)throw new E("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 E("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 E("UNAUTHENTICATED","Authenticated UI context is not available in local runtime");if(this.validateServerContext(n),!e)throw new E("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 E("INPUT_INVALID","Receipt lookup identity is invalid");let o=this.store.get(e);if(this.serverMode){if(!r)throw new E("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<zi;o+=1)try{return this.store.runStateOnly(e,n.handle)}catch(i){if(i instanceof Ce){let a=this.store.getReceipt(e.instanceId,e.requestId);if(a)return a;throw new E("REVISION_CONFLICT","UI instance revision is stale",i.currentRevision)}if(!(i instanceof Re))throw i;let s=this.store.getReceipt(e.instanceId,e.requestId);if(s)return s;await Vi(o);}let r=this.store.getReceipt(e.instanceId,e.requestId);if(r)return r;throw new E("ACTION_IN_FLIGHT","UI action is still being committed")}async dispatchExternalWithRetry(e,n){let r;for(let l=0;l<zi;l+=1)try{r=this.store.reserveExternal(e);break}catch(f){if(f instanceof Ce){let m=this.store.getReceipt(e.instanceId,e.requestId);if(m)return m;throw new E("REVISION_CONFLICT","UI instance revision is stale",f.currentRevision)}if(!(f instanceof Re))throw f;let g=this.store.getReceipt(e.instanceId,e.requestId);if(g)return g;await Vi(l);}if(!r){let l=this.store.getReceipt(e.instanceId,e.requestId);if(l)return l;throw new E("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?Hg(o.errorCode):null,a=r.instance.state,d=null;try{o.state&&(a=de(o.state)),o.result&&(d=de(o.result));}catch{a=r.instance.state,d=null;}for(let l=0;l<zi;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 Re))throw f;await Vi(l);}let c=this.store.getReceipt(e.instanceId,e.requestId);if(c)return c;throw new E("ACTION_IN_FLIGHT","UI action settlement is still being committed")}resolveDefinition(e){let n=this.definitions.get(qi(e));return !n||n.hash!==e.hash||rr(n)!==n.hash?null:n}requireDefinition(e){let n=this.resolveDefinition(e);if(!n)throw new E("DEFINITION_UNSUPPORTED","Pinned UI definition is unavailable");return n}resolveInstanceGrants(e,n){if(this.serverMode){if(!n||!this.serverPolicy)throw new E("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 E("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 E("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(!Wg(a,r))throw new Error("definition capability mismatch")}catch{throw new E("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 E("CAPABILITY_DENIED","Authenticated dispatch capability was denied")}return [...co(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 E("UNAUTHENTICATED","CLI local execution context is invalid")}validateServerContext(e){if(e.source!=="system"&&e.source!=="ui_host")throw new E("UNAUTHENTICATED","Authenticated UI source is invalid");if(e.workspaceId!==this.workspaceId||!e.threadId||e.actor.kind!=="authenticated"||!e.actor.id)throw new E("UNAUTHENTICATED","Authenticated UI context is invalid")}validateEnvelope(e){if(!e.instanceId||e.instanceId.length>128||!e.actionId||e.actionId.length>128||!e.requestId||Jn(e.requestId)>128||!Number.isInteger(e.expectedRevision)||e.expectedRevision<0)throw new E("INPUT_INVALID","UI action envelope is invalid");let n=de(e.input),r=we(n);if(Jn(r)>64*1024)throw new E("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 E("INPUT_INVALID","UI action input is invalid")}now(){let e=this.clock();if(!Number.isFinite(e))throw new E("EXECUTION_FAILED","UI runtime clock is invalid");return Math.max(0,Math.floor(e))}};function Fg(t,e){return new go(t,{injectDatabaseError:e?.injectDatabaseError,bumpRevisionBeforeCas:e?.bumpRevisionBeforeCas})}function Gi(t,e,n=e){if(t===null||typeof t!="object")throw new E("INPUT_INVALID","UI contract input is invalid");for(let r of Object.keys(t))if(!e.has(r))throw new E("INPUT_INVALID","Unknown UI contract field");for(let r of n)if(!Object.prototype.hasOwnProperty.call(t,r))throw new E("INPUT_INVALID","Missing UI contract field")}function Cd(t,e,n){return `${t}\0${e}\0${n}`}function qg(){return `uic_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,12)}`}function Hg(t){return typeof t=="string"&&/^[A-Z][A-Z0-9_]{0,63}$/.test(t)?t:"EXECUTION_FAILED"}function Wg(t,e){return t.length===e.length&&t.every(n=>e.includes(n))}async function Vi(t){await new Promise(e=>setTimeout(e,Math.min(8,1<<t)));}Ae();u();u();function fn(t,e={}){if(typeof t!="string")return ee("invalid_input");let n=t.trim();if(n.length===0)return ee("invalid_input");if(n.length>2048)return ee("url_too_long");let r=/^([a-z][a-z\d+.-]*):\/\//i.exec(n);if(!r||r[1].toLowerCase()!=="http"&&r[1].toLowerCase()!=="https")return ee("invalid_scheme");if(n.includes("?"))return ee("query_not_allowed");if(n.includes("#"))return ee("fragment_not_allowed");let o=zg(n,r[0].length);if(!o.ok)return o;if(o.value.host.includes("%"))return ee(o.value.bracketed?"zone_id":"host_not_ip_literal");let i=Gg(o.value.port);if(i)return ee(i);let s;try{s=new URL(n);}catch{return ee("invalid_url")}if(s.protocol!=="http:"&&s.protocol!=="https:")return ee("invalid_scheme");if(s.username.length>0||s.password.length>0)return ee("userinfo_not_allowed");let a=o.value.host,d;if(a.toLowerCase()==="localhost"){if(d="loopback",!e.allowLoopback)return ee("loopback_not_allowed");s.hostname="127.0.0.1";}else {let c=Ud(a);if("code"in c)return ee(c.code);if(d=c.hostClass,d==="loopback"&&!e.allowLoopback)return ee("loopback_not_allowed")}return {ok:true,normalizedBaseUrl:s.toString().replace(/\/+$/,""),hostClass:d}}function Md(t,e={}){if(typeof t!="string")return false;let n=Ud(t);return "code"in n?false:n.hostClass!=="loopback"||e.allowLoopback===true}function zg(t,e){let n=e,r=t.slice(n),o=r.search(/[/?#]/),i=r.slice(0,o===-1?r.length:o);if(i.length===0)return ee("invalid_url");if(i.includes("@"))return ee("userinfo_not_allowed");if(i.startsWith("[")){let d=i.indexOf("]");if(d===-1)return ee("invalid_url");let c=i.slice(1,d),l=i.slice(d+1);return c.length===0||l.length>0&&!l.startsWith(":")?ee("invalid_url"):{ok:true,value:{host:c,port:l.length>0?l.slice(1):void 0,bracketed:true}}}if(i.includes("[")||i.includes("]"))return ee("invalid_url");let s=i.indexOf(":");if(s!==-1&&i.indexOf(":",s+1)!==-1)return ee("host_not_ip_literal");let a=s===-1?i:i.slice(0,s);return a.length===0?ee("invalid_url"):{ok:true,value:{host:a,port:s===-1?void 0:i.slice(s+1),bracketed:false}}}function Gg(t){if(t===void 0||t==="")return;if(!/^\d+$/.test(t))return "invalid_port";let e=Number(t);if(!Number.isSafeInteger(e))return "invalid_port";if(!(e===80||e===443))return e>=1024&&e<=65535?void 0:"invalid_port"}function Ud(t){let e=jd(t);if(e)return Vg(e);if(t.includes("%"))return {code:"zone_id"};let n=Jg(t);return n?Xg(n.words)?{code:"ipv4_mapped_ipv6"}:Kg(n.words):{code:"host_not_ip_literal"}}function Vg(t){let[e,n,r,o]=t,i=((e*256+n)*256+r)*256+o;return i===0?{code:"unspecified"}:i===2852039166||i===1684301e3?{code:"metadata_address"}:e===127?{hostClass:"loopback"}:e===10||e===172&&n>=16&&n<=31||e===192&&n===168?{hostClass:"private-ipv4"}:e===100&&n>=64&&n<=127?{hostClass:"cgnat"}:e===169&&n===254?{code:"link_local"}:e>=224?{code:"multicast"}:{code:"ip_not_allowed"}}function Kg(t){return Yg(t)?{code:"unspecified"}:Qg(t)?{hostClass:"loopback"}:t[0]===64768&&t[1]===3778&&t[2]===0&&t[3]===0&&t[4]===0&&t[5]===0&&t[6]===0&&t[7]===596?{code:"metadata_address"}:(t[0]&65472)===65152?{code:"link_local"}:(t[0]&65280)===65280?{code:"multicast"}:(t[0]&65280)===64768?{hostClass:"unique-local-ipv6"}:{code:"ip_not_allowed"}}function jd(t){let e=t.split(".");if(e.length!==4)return;let n=[];for(let r of e){if(!/^\d{1,3}$/.test(r)||r.length>1&&r.startsWith("0"))return;let o=Number(r);if(o>255)return;n.push(o);}return n}function Jg(t){let e=t.indexOf("::");if(e!==-1&&t.indexOf("::",e+2)!==-1)return;let n=e!==-1,r=n?t.slice(0,e):t,o=n?t.slice(e+2):"",i=Ld(r),s=n?Ld(o):{words:[]};if(!i||!s)return;let a=i.words.length+s.words.length;if(n?a>=8:a!==8)return;let d=n?8-a:0;return {words:[...i.words,...Array.from({length:d},()=>0),...s.words]}}function Ld(t){if(t==="")return {words:[]};let e=t.split(":"),n=[];for(let[r,o]of e.entries()){if(o.includes(".")){if(r!==e.length-1)return;let i=jd(o);if(!i)return;n.push(i[0]<<8|i[1],i[2]<<8|i[3]);continue}if(!/^[0-9a-f]{1,4}$/i.test(o))return;n.push(Number.parseInt(o,16));}return {words:n}}function Xg(t){return t.length===8&&t[0]===0&&t[1]===0&&t[2]===0&&t[3]===0&&t[4]===0&&t[5]===65535}function Yg(t){return t.every(e=>e===0)}function Qg(t){return t.slice(0,7).every(e=>e===0)&&t[7]===1}function ee(t){return {ok:false,code:t}}u();var Zg="@ai-sdk/openai-compatible",em=/^CREWX_LOCAL_AI_[A-Z0-9_]+$/,tm=64,nm=100,rm=200,om=/^[a-z0-9]+(?:-[a-z0-9]+)*$/,st=class extends Error{constructor(n){super(sm(n));this.code=n;Object.setPrototypeOf(this,new.target.prototype);}code;name="LocalServerOpenCodeOverlayError"};function ho(t){let e=t.definition,n=e.defaultModel;if(typeof n!="string"||n.trim().length===0)throw new st("missing_default_model");if(n.length>rm)throw new st("invalid_default_model");let r=e.label;if(typeof r!="string"||r.trim().length===0||r.length>nm)throw new st("invalid_label");let i=`crewx-${im(e.id)}`,s=fn(e.baseUrl,{allowLoopback:true});if(!s.ok)throw new st("invalid_base_url");let a={baseURL:s.normalizedBaseUrl},d=e.auth?.apiKeyEnv;if(d!==void 0){if(typeof d!="string"||d.length>tm||!em.test(d))throw new st("invalid_api_key_env");a.apiKey=`{env:${d}}`;}let c={provider:{[i]:{npm:Zg,name:r,options:a,models:{[n]:{name:n}}}}};return {env:{OPENCODE_CONFIG_CONTENT:JSON.stringify(c,null,2)},model:`${i}/${n}`,providerId:i}}function im(t){let e=typeof t=="string"?t.trim().toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-+|-+$/g,""):"";if(!om.test(e))throw new st("invalid_provider_id");return e}function sm(t){switch(t){case "missing_default_model":return "A default model is required for the local server overlay.";case "invalid_default_model":return "The local server default model is invalid.";case "invalid_label":return "The local server label is invalid.";case "invalid_provider_id":return "The local server provider id is invalid.";case "invalid_api_key_env":return "The local server API key environment variable name is invalid.";case "invalid_base_url":return "The local server base URL is invalid."}}var am=/^[a-z0-9]+(?:-[a-z0-9]+)*$/,Bd="LOCAL_AI_SERVER_CONFIG_INVALID",Pe=class extends Error{name="LocalServerRuntimeError";code=Bd;constructor(){super("Local AI server configuration is invalid."),Object.setPrototypeOf(this,new.target.prototype);}};function yo(t,e){return t==="cli/opencode"&&!Fd(e)}function Ji(t){if(!yo(t.effectiveProviderStr,t.effectiveModel))return {};if(!t.globalSettings)return {};let e;try{e=t.globalSettings.read();}catch{throw new Pe}if(!Ki(e))throw new Pe;let n=e.ai_server;if(n===void 0)return {};if(!Ki(n)||n.version!==1)throw new Pe;let r=n.definition;if(!Ki(r))throw new Pe;let o=fn(r.baseUrl,{allowLoopback:true}),i=o.ok?o.normalizedBaseUrl:void 0;if(i===void 0||!dm(r.id)||!$d(r.label,100)||!$d(r.defaultModel,200))throw new Pe;let s;try{s=ho({...n,definition:{...r,baseUrl:i}});}catch{throw new Pe}if(!cm(s))throw new Pe;return {model:s.model,env:s.env,metadata:{providerId:s.providerId,model:s.model,source:"global_settings"}}}function Fd(t){return typeof t=="string"&&t.trim().length>0}function dm(t){return typeof t=="string"&&t===t.trim()&&am.test(t)}function $d(t,e){return typeof t=="string"&&t.trim().length>0&&t.length<=e}function cm(t){return Fd(t.model)&&typeof t.providerId=="string"&&t.providerId.length>0&&typeof t.env?.OPENCODE_CONFIG_CONTENT=="string"&&t.env.OPENCODE_CONFIG_CONTENT.length>0}function Ki(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function oc(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)?t:void 0}function Lm(t){return t.slice(t.lastIndexOf("/")+1)}var Mm=new Set(["tools","effort","mode","provider","model","profiles","overdrive"]);function Um(t){if(!t)return;let n=Object.entries(t).filter(([,r])=>r!=null&&typeof r!="object"&&typeof r!="function").filter(([r])=>!Mm.has(r));if(n.length!==0)return Object.fromEntries(n.map(([r,o])=>[r,String(o)]))}function ic(t,e,n){let r=oc(t);if(!r)return {};let o=Lm(e),i=!n.active&&o==="grok"?jn(r):r,s=n.active?n.providerOptions:oc(i[o]);return {modeOptions:i,providerOptions:s,configOptions:Um(i)}}function jm(t){return t?t.settings?.template?.exec:void 0}function $m(){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}=_e("crypto");return t(8).toString("hex")}}var us=class t extends zn{_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;_globalSettings;_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=ao(s),this._workspaceName=Y.basename(s);let a=jm(r);this._templateEngine=new Bn({execPolicy:n.execPolicy??a}),this._documentLoader=o??new Gt,this._layoutLoader=new Fn({templatesPath:en()}),this._layoutRenderer=new Wn,this._remoteFactory=n.remoteFactory,this._additionalArgsProvider=n.additionalArgsProvider,this._globalSettings=n.globalSettings;}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=Y.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}=Vo(),o;try{o=fd.readFileSync(n,"utf-8");}catch(s){throw new Error(`[@crewx/sdk] Cannot read built-in config: ${n}
398
+ ${s.message}`)}let i=Cr(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"&&!Y.isAbsolute(c.path)?s[a]={...c,path:Y.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=sc(a.vars,d.vars),l=sc(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=Bm(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=Or(e);i=t.mergeCrewxConfig(l,f),s=Y.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=Or(e),s=Y.dirname(e);}let a=new Gt(r);await a.load(i.documents,s);let d=i.agents??[];return await ac(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 Gt(o);await a.load(s.documents,r??(typeof process<"u"?process.cwd():"/"));let d=s.agents??[];return await ac(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 Nd(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=ui(n);return Y.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 Bi(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??wi(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=vi({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(Mn+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=>Ve(a.role.toLowerCase(),d)))),o&&(s=s.filter(a=>a.team&&o.some(d=>Ve(a.team.toLowerCase(),d)))),i&&(s=s.filter(a=>(Array.isArray(a.provider)?a.provider:[a.provider]).some(c=>i.some(l=>Ve(c.toLowerCase(),l))))),s}renderAgentPrompt(e){let n=e.startsWith("@")?e.slice(1):e,r=this._agents.get(n);if(!r)throw new ct(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 ct(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??$m(),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?[_]:[],T=w.join(", ")||(typeof _=="string"?_:""),x=i.options,U=["goals","daily"],I={goals:false,daily:false},te;if(!Array.isArray(x)&&typeof x=="object"&&x!==null){let O=x;if("goals"in O){let ae=O.goals;typeof ae=="string"||Array.isArray(ae)?I.goals=ae:I.goals=!!ae;}"daily"in O&&(I.daily=!!O.daily);let Z={};for(let[ae,ge]of Object.entries(O))U.includes(ae)||(Z[ae]=ge);if(Object.keys(Z).length>0){let ae=w.some(ye=>ye.startsWith("cli/")),ge={};for(let[ye,Me]of Object.entries(Z)){let Ge={};if(Array.isArray(Me))ae&&(Ge.rawArgs=Me);else if(typeof Me=="object"&&Me!==null){let b=Me;Object.keys(b).length>0&&(Ge.named=b);}(Ge.named||Ge.rawArgs&&Ge.rawArgs.length>0)&&(ge[ye]=Ge);}te=Object.keys(ge).length>0?ge:void 0;}}let S=Array.isArray(x)?x:void 0,q={};for(let[O,Z]of Object.entries(f))q[O]={content:Z.content??"",toc:Z.toc,summary:Z.summary,path:Z.path};if(I.goals){let O=Y.join(this._projectRoot,"docs","goal"),Z=await Ma(O,void 0,I.goals);Z&&(q.active_goals={content:Z});}if(I.daily){let O=Y.join(this._projectRoot,"docs","daily"),Z=await Ua(O);Z&&(q.today_daily={content:Z});}let fe=n?.vars?.user_input??void 0,j=this._config?.settings?.dreaming?.continuity,F=j?.reuseReadOnly!==false,B=typeof j?.lookback=="number"?j.lookback:5,K=typeof j?.maxEntryChars=="number"?j.maxEntryChars:8e3,W=n?.threadId??"",H=i.id,ne=!r?.activityLogDisabled&&F&&B>0&&!!W&&!!n?.messages?.length,re=new Map;if(ne)if(r?.activityLogTokenBudget!==void 0&&r.countTokens){let O=$i({threadId:W,agentId:H,lookback:B,maxEntryChars:K,activityLogTokenBudget:r.activityLogTokenBudget,countTokens:r.countTokens});re=O.activityLogByTask,r.onActivityLogResult?.(O);}else {typeof j?.decayRate=="number"?j.decayRate:.5;re=_d({threadId:W,agentId:H,lookback:B,maxEntryChars:K});}let kn=(n?.messages??[]).map(O=>{let Z=typeof O.activity_log=="string"?Xr(O.activity_log):O.activity_log;if(!O.isAssistant)return Z===O.activity_log?O:{...O,activity_log:Z};let ae=O.metadata?.task_id;return !ae||!re.has(ae)?Z===O.activity_log?O:{...O,activity_log:Z}:{...O,activity_log:Xr(re.get(ae))}}),vn={user_input:fe,agent:{id:i.id,name:i.name??i.id,role:i.role??"",team:i.team??"",description:i.description??"",provider:T,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:te,optionsArray:S},agentMetadata:{specialties:i.specialties??[],capabilities:i.capabilities??[],description:i.description??""},contextOptions:I,documents:q,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:W,now:qn(new Date),has_activity_log:re.size>0,messages:kn,tools:this._tools.size>0?{list:Array.from(this._tools.values()).map(O=>({name:O.name,description:O.description,parameters:O.parameters})),json:JSON.stringify(Array.from(this._tools.values()).map(O=>({name:O.name,description:O.description,parameters:O.parameters})),null,2),count:this._tools.size}:null,metadata:{}};return this._layoutRenderer.render(c,vn)}_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 ln(r,o);if(!e){let s=ln([],o);return s.length>0?s:void 0}let i=this._getConversationProvider();if(!i){let s=ln([],o);return s.length>0?s:void 0}try{let s=await i.fetchHistory(e,{currentTraceId:n});if(s.messages.length===0){let a=ln([],o);return a.length>0?a:void 0}return ln(Ii(s),o)}catch{return}}async _resolveFreshProvider(e,n,r){let o=ja(e.provider),i=ci(e.options,n,o,di(r?.overdrive)),s=li(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}}_resolveLocalServerRuntime(e,n){return yo(e,n)?(this._globalSettings??=Go(),Ji({effectiveProviderStr:e,effectiveModel:n,globalSettings:this._globalSettings})):{}}_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=Rr(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:qo,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=Pr({provider:n,model:r,inputBudgetPercent:o}),s=e.providerResolution.baseProviderStr,a=e.providerResolution.baseModel??null,d=r||null,c=Sr(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:Ar,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:Ar,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=Pr({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=zo({provider:i,model:d.model}),m=I=>g.countTokens(I),k=I=>Wo({systemPrompt:I,message:e.message},m),h,v=await this._renderFreshPromptVariant({...e,messages:n,activityLogTokenBudget:d.inputBudgetTokens,countTokens:m,onActivityLogResult:I=>{h=I;}}),_=k(v),w=_,T=false,x=r;if(w>d.inputBudgetTokens&&h&&h.activityLogByTask.size>0&&(v=await this._renderFreshPromptVariant({...e,messages:x,activityLogDisabled:true,activityLogTokenBudget:d.inputBudgetTokens,countTokens:m}),w=k(v),T=true),w>d.inputBudgetTokens&&x.length>0)for(let I=1;I<=r.length;I++){let te=r.slice(I),S=await this._renderFreshPromptVariant({...e,messages:te,activityLogDisabled:T,activityLogTokenBudget:d.inputBudgetTokens,countTokens:m}),q=k(S);if(v=S,w=q,x=te,q<=d.inputBudgetTokens)break}let U=this._buildResolvedContextBudgetManifest({budget:d,requestedProvider:c,requestedModel:l,effectiveProvider:i,effectiveModel:f,initialTokenCount:_,finalTokenCount:w,activityLogResult:h,activityRemovedForBudget:T,historyOriginalMessages:o,historyIncludedMessages:x.length});return w>d.inputBudgetTokens?{renderedPrompt:v,contextBudget:U,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:U,countTokens:m}}_recountFreshProviderInitialInput(e){let n=e.contextBudgetManifest;if(!n?.resolved||!n.effectiveModel)return null;let r=e.countTokens??(o=>Sr(o,{provider:n.effectiveProvider,model:n.effectiveModel}).tokenCount);return Wo({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=wa();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=ii();return n!==void 0?n:e?.meta?.defaultIdleMs!==void 0?e.meta.defaultIdleMs:6e5}_lookupCliAdapter(e){return bi(e)}_resolveEffectiveCost(e,n,r){return js(e?.costUsd,e?.inputTokens,e?.outputTokens,e?.cachedInputTokens,n)}_resolveEffectiveCwd(e,n){return n?.cwd??(e.working_directory?Y.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)??Ln(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=Gn.getStore()??Ei(r?.trace),s=r?.taskId??Qe("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 Gn.run(d,async()=>{let l=Date.now(),f=new Date,g;try{g=Nr(e,Array.from(this._agents.values()));}catch(b){if(b instanceof ct){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 N=Date.now()-l,D={code:"AGENT_NOT_FOUND",message:b.message};return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"query",durationMs:N,error:D,metadata:r?.metadata?{...r.metadata}:void 0}),this._clearCallerIdentityOverride(s,c),{ok:!1,data:"",error:D,meta:{agentId:e.replace(/^@/,""),provider:"",durationMs:N,taskId:s}}}throw b}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,x=this._resolveContextMode(r)==="instruction-only",U,I,te,S=v,q,fe,Q,se,j={},F=!1,B=b=>{F||(F=!0,this.emit("task:start",{traceId:s,timestamp:f,agentRef:e,message:n,mode:"query",pid:b,parentTaskId:a.parentTaskId,rootTraceId:a.rootTraceId,callerAgentId:a.callerAgentId,model:S,provider:h,codingAgentCommand:U,renderedPrompt:fe,metadata:{...r?.metadata??{},provider:h,..._.active?{overdrive:!0}:{},...q?{provider_session_id:q}:{},...Q?{context_budget:Q}:{},...j.metadata?{local_ai_server:j.metadata}:{}},threadId:r?.threadId,projectId:r?.projectId,platform:r?.platform??"cli",workspaceId:this._workspaceId,workspaceName:this._workspaceName}));};try{j=this._resolveLocalServerRuntime(h,v);}catch(b){if(!(b instanceof Pe))throw b;B();let N=Date.now()-l,D={code:b.code,message:b.message};return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"query",durationMs:N,error:D,model:S,metadata:r?.metadata?{...r.metadata}:void 0}),this._clearCallerIdentityOverride(s,c),{ok:!1,data:"",error:D,meta:{agentId:g.id,provider:h,model:v,durationMs:N,taskId:s}}}if(j.model&&(v=j.model,m.effectiveModel=v,S=v),x){let b=this._prepareInstructionOnlyResumeWithBudget({message:n,providerResolution:m,resumeSessionId:w});if(Q=b.contextBudget,b.error){B();let N=Date.now()-l,D=b.error;return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"query",durationMs:N,error:D,model:S,metadata:r?.metadata?{...r.metadata}:void 0}),this._clearCallerIdentityOverride(s,c),{ok:!1,data:"",error:D,meta:{agentId:g.id,provider:h,model:v,durationMs:N,taskId:s}}}}let K;try{K=pt(h,this._additionalArgsProvider);}catch(b){B();let N=Date.now()-l,D={code:"PROVIDER_ERROR",message:b.message,...b instanceof exports.ProviderError?{providerCode:b.code}:{}};return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"query",durationMs:N,error:D,metadata:r?.metadata?{...r.metadata}:void 0}),this._clearCallerIdentityOverride(s,c),{ok:!1,data:"",error:D,meta:{agentId:g.id,provider:h,model:v,durationMs:N,taskId:s}}}let W;if(x||(W=await this._fetchHistoryMessages(r?.threadId,s,r?.messages,r?.uiProjections)),!x)try{let b=await this._prepareFreshPromptWithBudget({agentRef:e,agent:g,mode:"query",message:n,options:r,providerResolution:m,historyMessages:W});if(fe=b.renderedPrompt,Q=b.contextBudget,se=b.countTokens,b.error){B();let N=Date.now()-l,D=b.error;return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"query",durationMs:N,error:D,model:S,metadata:r?.metadata?{...r.metadata}:void 0}),this._clearCallerIdentityOverride(s,c),{ok:!1,data:"",error:D,meta:{agentId:g.id,provider:h,model:v,durationMs:N,taskId:s}}}}catch(b){console.error(`[crewx] renderAgentPromptFull failed for ${e}: ${b instanceof Error?b.message:String(b)}`);}let H=g.options,ne=ic(H?.query,h,_),re=_.active?_.mode:ne.modeOptions?.mode,kn=_.effort??r?.effort??ne.modeOptions?.effort,vn=Array.isArray(H?.query?.tools)?H.query.tools:void 0,O=this._tools.size>0?this._filterToolsByMode(vn):[],Z=ne.configOptions,ae=g.inline?.max_steps;h.startsWith("api/")&&B();let ge=!1,ye=0,Me=()=>{},Ge=new Promise(b=>{Me=b;});this._activeTasks.set(s,{pid:void 0,done:Ge});try{let b={model:v,effort:kn,mode:re,context:r?.context,...x?{}:{systemPrompt:fe??g.inline?.system_prompt??g.inline?.prompt??g.description??`You are ${g.id}.`},additionalArgs:Array.isArray(H?.query)?H.query:void 0,resumeSessionId:w,tools:O.length>0?O:void 0,maxSteps:ae,providerOptions:ne.providerOptions,configOptions:Z,timeoutMs:this._resolveTimeout("query",this._lookupCliAdapter(h)),idleMs:this._resolveIdleTimeout(this._lookupCliAdapter(h)),cwd:this._resolveEffectiveCwd(g,r),env:{...j.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:C=>{let le=this._activeTasks.get(s);le&&(le.pid=C),B(C);},onProviderSessionId:C=>{q=C;},onOutput:(C,le)=>{let Io=this._lookupCliAdapter(h);le==="stdout"&&Io?.suppressOutputLine?.(C)===!0||this.emit("task:output",{traceId:s,timestamp:new Date,agentRef:e,output:C,level:le}),le==="stdout"&&this.emitToolEvents(s,e,h,C,g.id,r?.threadId??"","");},onTaskLog:C=>{this.emitTaskLogEntries(s,e,g.id,r?.threadId??"","",h,C);for(let le of C)this.emit("task:output",{traceId:s,timestamp:new Date,agentRef:e,output:JSON.stringify(le),level:"info"});},onCommand:C=>{U=C;},onUsage:C=>{I=C;},onExitCode:C=>{te=C;},onModel:C=>{S||(S=C);}},N=x?void 0:this._validateFreshProviderInitialInputBudget({message:n,providerOptions:b,contextBudgetManifest:Q,countTokens:se});if(N){B();let C=Date.now()-l;return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"query",durationMs:C,error:N,model:S,metadata:r?.metadata?{...r.metadata}:void 0}),ge=!0,{ok:!1,data:"",error:N,meta:{agentId:g.id,provider:h,model:v,durationMs:C,taskId:s}}}let D=await K.query(n,b);ye=this._resolveEffectiveCost(I,S,l),B();let kt=Date.now()-l,bn={...r?.metadata??{},...r?.threadId?{threadId:r.threadId}:{}};return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"query",result:D,durationMs:kt,exitCode:te,inputTokens:I?.inputTokens,outputTokens:I?.outputTokens,cachedInputTokens:I?.cachedInputTokens,costUsd:ye,model:S,metadata:Object.keys(bn).length>0?bn:void 0}),ge=!0,{ok:!0,data:D,meta:{agentId:g.id,provider:h,model:v,durationMs:kt,taskId:s}}}catch(b){if(b instanceof exports.ClientToolCallRequiredError){let kt=Qe("thd");return this._pendingThreads.set(kt,{agentRef:g.id,providerStr:h,continuationState:b.continuationState,toolCall:b.toolCall,traceId:s,startMs:l,model:v}),ge=!0,{ok:!0,status:"requires_action",data:"",toolCall:b.toolCall,threadId:kt,meta:{agentId:g.id,provider:h,model:v,durationMs:Date.now()-l,taskId:s}}}ye=this._resolveEffectiveCost(I,S,l),B();let N=Date.now()-l,D={code:"QUERY_FAILED",message:b.message,...b instanceof exports.ProviderError?{providerCode:b.code}:{}};return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"query",durationMs:N,error:D,exitCode:te,inputTokens:I?.inputTokens,outputTokens:I?.outputTokens,cachedInputTokens:I?.cachedInputTokens,costUsd:ye,model:S,metadata:r?.metadata?{...r.metadata}:void 0}),ge=!0,{ok:!1,data:"",error:D,meta:{agentId:g.id,provider:h,model:v,durationMs:N,taskId:s}}}finally{ge||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:te??-1,inputTokens:I?.inputTokens,outputTokens:I?.outputTokens,cachedInputTokens:I?.cachedInputTokens,costUsd:ye,model:S}),this._activeTasks.delete(s),this._clearCallerIdentityOverride(s,c),Me();}})}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=pt(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=Gn.getStore()??Ei(r?.trace),s=r?.taskId??Qe("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 Gn.run(d,async()=>{let l=Date.now(),f=new Date,g;try{g=Nr(e,Array.from(this._agents.values()));}catch(b){if(b instanceof ct){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 N=Date.now()-l,D={code:"AGENT_NOT_FOUND",message:b.message};return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"execute",durationMs:N,error:D,metadata:r?.metadata?{...r.metadata}:void 0}),this._clearCallerIdentityOverride(s,c),{ok:!1,data:"",error:D,meta:{agentId:e.replace(/^@/,""),provider:"",durationMs:N,taskId:s}}}throw b}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,x=this._resolveContextMode(r)==="instruction-only",U,I,te,S=v,q,fe,Q,se,j={},F=!1,B=b=>{F||(F=!0,this.emit("task:start",{traceId:s,timestamp:f,agentRef:e,message:n,mode:"execute",pid:b,parentTaskId:a.parentTaskId,rootTraceId:a.rootTraceId,callerAgentId:a.callerAgentId,model:S,provider:h,codingAgentCommand:U,renderedPrompt:fe,metadata:{...r?.metadata??{},provider:h,..._.active?{overdrive:!0}:{},...q?{provider_session_id:q}:{},...Q?{context_budget:Q}:{},...j.metadata?{local_ai_server:j.metadata}:{}},threadId:r?.threadId,projectId:r?.projectId,platform:r?.platform??"cli",workspaceId:this._workspaceId,workspaceName:this._workspaceName}));};try{j=this._resolveLocalServerRuntime(h,v);}catch(b){if(!(b instanceof Pe))throw b;B();let N=Date.now()-l,D={code:b.code,message:b.message};return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"execute",durationMs:N,error:D,model:S,metadata:r?.metadata?{...r.metadata}:void 0}),this._clearCallerIdentityOverride(s,c),{ok:!1,data:"",error:D,meta:{agentId:g.id,provider:h,model:v,durationMs:N,taskId:s}}}if(j.model&&(v=j.model,m.effectiveModel=v,S=v),x){let b=this._prepareInstructionOnlyResumeWithBudget({message:n,providerResolution:m,resumeSessionId:w});if(Q=b.contextBudget,b.error){B();let N=Date.now()-l,D=b.error;return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"execute",durationMs:N,error:D,model:S,metadata:r?.metadata?{...r.metadata}:void 0}),this._clearCallerIdentityOverride(s,c),{ok:!1,data:"",error:D,meta:{agentId:g.id,provider:h,model:v,durationMs:N,taskId:s}}}}let K;try{K=pt(h,this._additionalArgsProvider);}catch(b){B();let N=Date.now()-l,D={code:"PROVIDER_ERROR",message:b.message,...b instanceof exports.ProviderError?{providerCode:b.code}:{}};return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"execute",durationMs:N,error:D,metadata:r?.metadata?{...r.metadata}:void 0}),this._clearCallerIdentityOverride(s,c),{ok:!1,data:"",error:D,meta:{agentId:g.id,provider:h,model:v,durationMs:N,taskId:s}}}let W;if(x||(W=await this._fetchHistoryMessages(r?.threadId,s,r?.messages,r?.uiProjections)),!x)try{let b=await this._prepareFreshPromptWithBudget({agentRef:e,agent:g,mode:"execute",message:n,options:r,providerResolution:m,historyMessages:W});if(fe=b.renderedPrompt,Q=b.contextBudget,se=b.countTokens,b.error){B();let N=Date.now()-l,D=b.error;return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"execute",durationMs:N,error:D,model:S,metadata:r?.metadata?{...r.metadata}:void 0}),this._clearCallerIdentityOverride(s,c),{ok:!1,data:"",error:D,meta:{agentId:g.id,provider:h,model:v,durationMs:N,taskId:s}}}}catch(b){console.error(`[crewx] renderAgentPromptFull failed for ${e}: ${b instanceof Error?b.message:String(b)}`);}let H=g.options,ne=ic(H?.execute,h,_),re=_.active?_.mode:ne.modeOptions?.mode,kn=_.effort??r?.effort??ne.modeOptions?.effort,vn=Array.isArray(H?.execute?.tools)?H.execute.tools:void 0,O=this._tools.size>0?this._filterToolsByMode(vn):[],Z=ne.configOptions,ae=g.inline?.max_steps;h.startsWith("api/")&&B();let ge=!1,ye=0,Me=()=>{},Ge=new Promise(b=>{Me=b;});this._activeTasks.set(s,{pid:void 0,done:Ge});try{let b={model:v,effort:kn,mode:re,context:r?.context,...x?{}:{systemPrompt:fe??g.inline?.system_prompt??g.inline?.prompt??g.description??`You are ${g.id}.`},additionalArgs:Array.isArray(H?.execute)?H.execute:void 0,resumeSessionId:w,tools:O.length>0?O:void 0,maxSteps:ae,providerOptions:ne.providerOptions,configOptions:Z,timeoutMs:this._resolveTimeout("execute",this._lookupCliAdapter(h)),idleMs:this._resolveIdleTimeout(this._lookupCliAdapter(h)),cwd:this._resolveEffectiveCwd(g,r),env:{...j.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:C=>{let le=this._activeTasks.get(s);le&&(le.pid=C),B(C);},onProviderSessionId:C=>{q=C;},onOutput:(C,le)=>{let Io=this._lookupCliAdapter(h);le==="stdout"&&Io?.suppressOutputLine?.(C)===!0||this.emit("task:output",{traceId:s,timestamp:new Date,agentRef:e,output:C,level:le}),le==="stdout"&&this.emitToolEvents(s,e,h,C,g.id,r?.threadId??"","");},onTaskLog:C=>{this.emitTaskLogEntries(s,e,g.id,r?.threadId??"","",h,C);for(let le of C)this.emit("task:output",{traceId:s,timestamp:new Date,agentRef:e,output:JSON.stringify(le),level:"info"});},onCommand:C=>{U=C;},onUsage:C=>{I=C;},onExitCode:C=>{te=C;},onModel:C=>{S||(S=C);}},N=x?void 0:this._validateFreshProviderInitialInputBudget({message:n,providerOptions:b,contextBudgetManifest:Q,countTokens:se});if(N){B();let C=Date.now()-l;return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"execute",durationMs:C,error:N,model:S,metadata:r?.metadata?{...r.metadata}:void 0}),ge=!0,{ok:!1,data:"",error:N,meta:{agentId:g.id,provider:h,model:v,durationMs:C,taskId:s}}}let D=await K.execute(n,b);ye=this._resolveEffectiveCost(I,S,l),B();let kt=Date.now()-l,bn={...r?.metadata??{},...r?.threadId?{threadId:r.threadId}:{}};return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"execute",result:D,durationMs:kt,exitCode:te,inputTokens:I?.inputTokens,outputTokens:I?.outputTokens,cachedInputTokens:I?.cachedInputTokens,costUsd:ye,model:S,metadata:Object.keys(bn).length>0?bn:void 0}),ge=!0,{ok:!0,data:D,meta:{agentId:g.id,provider:h,model:v,durationMs:kt,taskId:s}}}catch(b){ye=this._resolveEffectiveCost(I,S,l),B();let N=Date.now()-l,D={code:"EXECUTE_FAILED",message:b.message,...b instanceof exports.ProviderError?{providerCode:b.code}:{}};return this.emit("task:end",{traceId:s,timestamp:new Date,agentRef:e,mode:"execute",durationMs:N,error:D,exitCode:te,inputTokens:I?.inputTokens,outputTokens:I?.outputTokens,cachedInputTokens:I?.cachedInputTokens,costUsd:ye,model:S,metadata:r?.metadata?{...r.metadata}:void 0}),ge=!0,{ok:!1,data:"",error:D,meta:{agentId:g.id,provider:h,model:v,durationMs:N,taskId:s}}}finally{ge||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:te??-1,inputTokens:I?.inputTokens,outputTokens:I?.outputTokens,cachedInputTokens:I?.cachedInputTokens,costUsd:ye,model:S}),this._activeTasks.delete(s),this._clearCallerIdentityOverride(s,c),Me();}})}finally{this._clearCallerIdentityOverride(s,c);}}};function sc(t,e){let n=ps(t)?t:void 0,r=ps(e)?e:void 0;if(!(!n&&!r))return {...n??{},...r??{}}}function ps(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function Bm(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(!ps(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 Fm(t){let e=Array.isArray(t.provider)?t.provider:[t.provider],n=t.options,r=[...e];for(let o of ["query","execute"]){let i=li(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)?Vr(s.overdrive):void 0;a?.provider&&r.push(a.provider);}return r}async function ac(t,e,n){let r=t.flatMap(Fm);if(r.some(i=>i.startsWith("api/"))){let{registerApiProviders:i}=await Promise.resolve().then(()=>(Yi(),zd));i(n?.api);}await Hm(r,e),Wm(r,e),qm(r);}function qm(t){if(!t.some(r=>r.startsWith("acp/")))return;let{registerAcpProviders:n}=(os(),Ps(Xd));n();}async function Hm(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(()=>(as(),Qd)),i=new Map;for(let s of r)s.type==="remote"&&typeof s.id=="string"&&i.set(s.id,s);i.size>0&&ut("remote",o(i,pt));}function Wm(t,e){if(!t.some(s=>s.startsWith("plugin/")))return;let r=e.providers;if(!Array.isArray(r))return;let{createPluginProviderFactory:o}=(ds(),Ps(nc)),i=new Map;for(let s of r)s.type==="plugin"&&typeof s.id=="string"&&i.set(s.id,s);i.size>0&&ut("plugin",o(i));}u();u();var fs=class{detach(e){}};u();var zm="crewx:fs:",gs=class{prefix;store;constructor(e){this.prefix=e?.prefix??zm,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 mn="default",hn="archive",dc="wi-default-flow",Gm="wi-plan-flow",Vm="wi-default-flow.yaml",Km="wi-plan-flow.yaml",Ro=/^[a-zA-Z0-9_-]{1,64}$/;function cc(t){return t===mn||t===hn}function Jm(t){let e={id:mn,name:"Default",workflowId:dc,system:true,readOnly:false},n={id:hn,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||cc(d)||!Ro.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 oe=class extends Error{constructor(e){super(e),this.name="WiCreateError";}},Ym=300*1e3,Qm=300*1e3,Zm=1e4,eh=50;function th(t){return new Promise(e=>setTimeout(e,t))}function nh(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 rh(t){return t.normalize("NFKD").replace(/[^\x00-\x7F]/g,"").replace(/[^a-zA-Z0-9]+/g,"-").replace(/^-+|-+$/g,"").toUpperCase().slice(0,60)}function oh(t,e){let n=t.replace(/\\/g,"/").toLowerCase(),r=e.replace(/\\/g,"/").toLowerCase();if(r!==n&&!r.startsWith(n+"/"))throw new oe("Path is outside wi directory")}function lc(t){let e=typeof t=="string"?t.trim():"";if(!e)throw new oe("title is required");if(e.length>200)throw new oe("title must be 200 characters or fewer");return e}function uc(t){let e=typeof t=="string"?t.trim():"";if(!e)return "manual";if(e.length>128)throw new oe("source must be 128 characters or fewer");if(/[\r\n]/.test(e))throw new oe("source must be a single line");return e}function pc(t){return (typeof t=="string"?t.trim().replace(/^@+/,""):"")||void 0}function fc(t){if(t==null)return [];if(!Array.isArray(t))throw new oe("depends_on must be an array");return t.map(e=>String(e).trim()).filter(Boolean)}function gc(t,e){let n=typeof t=="string"?t.trim():"";if(!n){if(e?.required)throw new oe("board is required");return}if(!Ro.test(n))throw new oe("board must match ^[a-zA-Z0-9_-]{1,64}$");if(n===hn)throw new oe(`board cannot be '${hn}'`);return n}function yn(t){return JSON.stringify(t)}function ih(t,e){return e.length===0?[`${t}: []`]:[`${t}:`,...e.map(n=>` - ${yn(n)}`)]}async function sh(t){let e=await fd.promises.stat(t).catch(()=>null);e&&Date.now()-e.mtimeMs>Qm&&await fd.promises.rm(t,{recursive:true,force:true}).catch(()=>{});}async function ah(t,e){let n=Y.join(t,".wi-create.lock"),r=Date.now()+Zm;for(;Date.now()<r;)try{await fd.promises.mkdir(n);try{return await e()}finally{await fd.promises.rm(n,{recursive:!0,force:!0}).catch(()=>{});}}catch(o){if(o.code!=="EEXIST")throw o;await sh(n),await th(eh);}throw new oe("WI create lock timeout: docs/wi/.wi-create.lock")}async function mc(t){let e=[],n=await fd.promises.readdir(t,{withFileTypes:true}).catch(r=>{if(r.code==="ENOENT")return [];throw r});for(let r of n){let o=Y.join(t,r.name);r.isDirectory()?e.push(...await mc(o)):r.isFile()&&r.name.endsWith(".md")&&e.push(r.name);}return e}async function dh(t){let e=await fd.promises.readdir(t).catch(r=>{if(r.code==="ENOENT")return [];throw r}),n=await mc(Y.join(t,"archive"));return [...e,...n]}function ch(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 lh(t,e){return t.some(n=>n===`${e}.md`||n.startsWith(`${e}-`))}async function uh(t,e){let n=Y.join(t,`.wi-${e}.lock`);try{return await fd.promises.writeFile(n,"",{flag:"wx"}),{claimed:!0,lockPath:n}}catch(r){if(r.code!=="EEXIST")throw r;return await fd.promises.stat(n).then(i=>Date.now()-i.mtimeMs>Ym).catch(()=>false)&&await fd.promises.unlink(n).then(()=>true).catch(()=>false)?(await fd.promises.writeFile(n,"",{flag:"wx"}),{claimed:true,lockPath:n}):{claimed:false,lockPath:n}}}function ph(t){return {title:lc(t.title),assignee:pc(t.assignee),body:(t.body??"").trim(),board:gc(t.board),source:uc(t.source),depends_on:fc(t.depends_on)}}function fh(t,e,n){if(t==null)return;let r=typeof t=="string"?t.trim():"";if(!r)throw new oe(`items[${e}].key must be a non-empty string when provided`);if(n.has(r))throw new oe(`items[${e}].key "${r}" is duplicated`);return n.add(r),r}function gh(t){let e=gc(t.board,{required:true}),n=uc(t.source);if(!Array.isArray(t.items)||t.items.length===0)throw new oe("items must contain at least one WI");let r=new Set;return t.items.map((o,i)=>{if(!o||typeof o!="object")throw new oe(`items[${i}] must be an object`);if(typeof o.body!="string")throw new oe(`items[${i}].body is required`);return {key:fh(o.key,i,r),title:lc(o.title),assignee:pc(o.assignee),body:o.body.trim(),board:e,source:n,depends_on:fc(o.depends_on)}})}function mh(t,e){return t.map(n=>e.get(n)??n)}function hh(t,e,n){let r=!!t.board&&t.board!==mn,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:`---
399
+ ${[`wi_id: ${e}`,`title: ${yn(t.title)}`,`date: ${yn(n)}`,"status: draft",...t.assignee?[`assignee: ${yn(t.assignee)}`]:[],"priority: normal",`source: ${yn(t.source)}`,...r?[`board: ${yn(t.board)}`]:[],...ih("depends_on",t.depends_on)].join(`
400
400
  `)}
401
401
  ---
402
402
 
403
403
  ${t.body}
404
- `,frontmatter:o}}async function Yd(t,e){let n=Y.join(t,"docs","wi");return await td.promises.mkdir(n,{recursive:true}),cm(n,async()=>{let{compact:r,iso:o}=om(new Date),i=`WI-${r}-`,s=await lm(n),a=um(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(pm(s,_))continue;let w=await fm(n,_);if(!w.claimed)continue;let T=im(m.title),x=T?`${_}-${T}.md`:`${_}.md`,U=Y.resolve(n,x);if(sm(n,U),await td.promises.access(U).then(()=>!0,()=>!1)){await td.promises.unlink(w.lockPath).catch(()=>{});continue}c.push(w.lockPath),h={item:m,wiId:_,filename:x,fullPath:U};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=ym(m.item.depends_on,f),h={...m.item,depends_on:k},v=_m(h,m.wiId,o);await td.promises.writeFile(m.fullPath,v.raw,{encoding:"utf8",flag:"wx"}),d.push(m.fullPath);let _=await td.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!==ln?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=>td.promises.unlink(f).catch(()=>{}))),l}finally{await Promise.all(c.map(l=>td.promises.unlink(l).catch(()=>{})));}})}async function wm(t,e){let[n]=await Yd(t,[gm(e)]);if(!n)throw new re("Failed to create WI");return n}async function km(t,e){return {created:await Yd(t,hm(e))}}u();var vm=new Set(["draft","approved","in-progress"]);function Em(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||!vm.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 cr(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function Qd(t,e){let n={...t};for(let[r,o]of Object.entries(e))cr(o)&&cr(n[r])?n[r]=Qd(n[r],o):n[r]=o;return n}function Nm(t){let e=t?.filePath??Y.join(Di.homedir(),".crewx","crewx.yaml"),n=null,r=null;function o(){try{return td.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(td.readFileSync(e,"utf-8"));}catch{a=null;}let d=cr(a)?a:{};return r=d,n=s,d}return {get path(){return e},read(){let s=i();return cr(s.settings)?s.settings:{}},update(s){let a=i(),d=cr(a.settings)?a.settings:{},c=Qd(d,s),l={...a,settings:c};td.mkdirSync(Y.dirname(e),{recursive:true});let f=`${e}.tmp`;return td.writeFileSync(f,jsYaml.dump(l)),td.renameSync(f,e),n=null,r=null,c}}}Fo();yr();u();Kt();var Dm="https://api.crewx.dev/v1/models",Mm=3600*1e3,Zd=0;async function Lm(t){let e=t?.ttlMs??Mm,n=Date.now();if(!(n-Zd<e)){Zd=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});bs(i);}catch{}}}u();Te();Kt();Ro();var Um="https://api.crewx.dev/v1/models",jm=900*1e3,ec=0;function tt(t){return t!=null&&typeof t=="object"&&!Array.isArray(t)}function $m(t){return typeof t=="number"&&Number.isInteger(t)&&t>0}function Bm(t){return typeof t=="string"&&ks.includes(t)}function Fm(t){if(t===void 0)return [];if(!Array.isArray(t))return;let e=new Set,n=[];for(let r of t){if(!tt(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 qm(t,e){if(t===void 0)return;if(!tt(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 Hm(t){if(!tt(t))return {};let e={};for(let[n,r]of Object.entries(t)){if(!tt(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 tc(t,e){if(!tt(t)||typeof t.mode!="string"||t.mode.length===0||typeof t.effort!="string"||t.effort.length===0)return;let n=qm(t.providerOptions,e);if(n!==null)return {mode:t.mode,effort:t.effort,...n!==void 0?{providerOptions:n}:{}}}function Wm(t,e){let n=t.modelOverrides[e]?.effort;return Array.isArray(n)&&n.every(r=>typeof r=="string")?n:t.effort}function zm(t,e){if(!tt(t)||t.version!==1||!tt(t.providers))return {};let n={};for(let[r,o]of Object.entries(t.providers)){if(!/^cli\/[^/]+$/.test(r)||!tt(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=tc(o.query,s),d=tc(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=Wm(i,o.model);!l.includes(a.effort)||!l.includes(d.effort)||(n[r]={model:o.model,query:a,execute:d});}return n}async function Gm(t){let e=t?.ttlMs??jm,n=Date.now();if(!(n-ec<e)){ec=n;try{let r=await fetch(t?.endpoint??Um);if(!r.ok){kn({});return}let o=await r.json();if(!o?.providers||typeof o.providers!="object"){kn({});return}let i={};for(let[s,a]of Object.entries(o.providers)){let d=Array.isArray(a);if(!d&&!tt(a))continue;let c=d?[]:Fm(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||!tt(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}:{},...$m(h.contextWindowTokens)?{contextWindowTokens:h.contextWindowTokens}:{},...Bm(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};}Io(i),Ts(Hm(o.models)),kn(zm(o.defaults,i));}catch{kn({});}}}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 os=["codex","claude","grok","opencode","antigravity","copilot"];function Jm(t){let e=t.indexOf("/");return e===-1?t:t.slice(e+1)}function is(t){let e=Jm(t),n=os.indexOf(e);return n===-1?os.length:n}function lr(t,e){return is(t)-is(e)}var Km=new Set(["claude","copilot","codex","grok","opencode"]);function Xm(t){if(!t)return "";if(t.startsWith("acp/")){let e=t.slice(4);if(Km.has(e))return `cli/${e}`}return t}Te();ze();$i();Bi();u();Fi();wt();u();lo();mo();Te();var Ym="model",Qm="mode",Zm="thought_level";function ss(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 eh(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 th(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()===Qm&&_.options!=null)for(let w of ss(_.options))w.value!=null&&c.push({id:w.value,name:w.name??w.value});let l=eh(d,c),f=[];for(let _ of s)if(_.category?.trim().toLowerCase()===Zm&&_.type==="select")for(let w of ss(_.options??[]))w.value!=null&&f.push(w.value);if(t==="claude"){let _=bn(En()),w=nc(n);return rc(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()===Ym&&_.options!=null)for(let w of ss(_.options))w.value!=null&&k.push({id:w.value,...w.name!=null?{name:w.name}:{}});let h=bn(Rn(m,k));rc(t,{models:h,modes:l,availableModelsCount:m.length,configModelsCount:k.length,skipModelWarn:false});let v=nc(n);return {id:`acp/${t}`,name:i,modes:l,effort:f,models:h,capabilities:v}}function nc(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 rc(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 oc(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 th(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 nh(){let t=Object.keys(exports.ACP_ADAPTERS),e=await Promise.allSettled(t.map(r=>oc(r))),n=[];for(let r of e)r.status==="fulfilled"&&r.value!==null&&n.push(r.value);return n.sort((r,o)=>lr(r.id,o.id))}lo();qi();mo();Vi();Sr();_t();u();_t();Te();function oh(t){return t.charAt(0).toUpperCase()+t.slice(1)}async function ic(){return new Promise(t=>{child_process.execFile("opencode",["models"],{timeout:5e3,maxBuffer:1048576},(n,r)=>{if(n){t([]);return}let o=r.split(`
405
- `).map(i=>i.trim()).filter(i=>i.length>0).map(i=>({id:i}));t(o);}).on("error",()=>t([]));})}function ih(t,e,n){if(!e.meta)return null;let r=e.meta.capabilities??{},o=ot(t),i=o.length>0?o:e.meta.models??[],s=n!==void 0?Rn(n,i):i,a=_r(`cli/${t}`),d=Ne(t).providerOptions??[];return {id:`cli/${t}`,name:e.meta.displayName??oh(t),modes:vn(t),effort:St(t),models:bn(s),modelOverrides:Cs(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 sh(t={}){let e=t.includeOpencodeRuntimeModels?await ic():void 0,n=[];for(let[r,o]of Object.entries(exports.BUILTIN_ADAPTERS)){let s=ih(r,o,r==="opencode"?e:void 0);s&&n.push(s);}return n.sort((r,o)=>lr(r.id,o.id))}u();var as=0;function ah(t){let e=t.meta?.taskId,n=e?` taskId=${e}`:"";if(t.ok)return `Task completed:${n}
404
+ `,frontmatter:o}}async function hc(t,e){let n=Y.join(t,"docs","wi");return await fd.promises.mkdir(n,{recursive:true}),ah(n,async()=>{let{compact:r,iso:o}=nh(new Date),i=`WI-${r}-`,s=await dh(n),a=ch(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(lh(s,_))continue;let w=await uh(n,_);if(!w.claimed)continue;let T=rh(m.title),x=T?`${_}-${T}.md`:`${_}.md`,U=Y.resolve(n,x);if(oh(n,U),await fd.promises.access(U).then(()=>!0,()=>!1)){await fd.promises.unlink(w.lockPath).catch(()=>{});continue}c.push(w.lockPath),h={item:m,wiId:_,filename:x,fullPath:U};break}if(!h)throw new oe("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=mh(m.item.depends_on,f),h={...m.item,depends_on:k},v=hh(h,m.wiId,o);await fd.promises.writeFile(m.fullPath,v.raw,{encoding:"utf8",flag:"wx"}),d.push(m.fullPath);let _=await fd.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!==mn?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=>fd.promises.unlink(f).catch(()=>{}))),l}finally{await Promise.all(c.map(l=>fd.promises.unlink(l).catch(()=>{})));}})}async function yh(t,e){let[n]=await hc(t,[ph(e)]);if(!n)throw new oe("Failed to create WI");return n}async function _h(t,e){return {created:await hc(t,gh(e))}}u();var wh=new Set(["draft","approved","in-progress"]);function kh(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||!wh.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();u();var _c=3e3,wc=Symbol("local-server-probe-timeout");async function kc(t,e={}){let n=Date.now(),r=`${t.replace(/\/+$/,"")}/models`,o=vh(e.timeoutMs),i=e.fetch??globalThis.fetch;if(typeof i!="function")return mr("network_error",n);try{let s=await Eh(o,async d=>{let c=await i(r,{method:"GET",signal:d});if(!c.ok)return {kind:"http_error"};try{return {kind:"payload",value:await c.json()}}catch{return {kind:"invalid_json"}}});if(s.kind==="http_error")return mr("http_error",n);if(s.kind==="invalid_json")return mr("invalid_json",n);let a=bh(s.value);return a===void 0?mr("invalid_envelope",n):{ok:!0,models:a,latencyMs:vc(n)}}catch(s){return mr(s===wc?"timeout":"network_error",n)}}function vh(t){return t!==void 0&&Number.isFinite(t)&&t>0?t:3e3}function mr(t,e){return {ok:false,models:[],latencyMs:vc(e),reason:t}}function vc(t){return Math.max(0,Date.now()-t)}function bh(t){if(!yc(t)||!Array.isArray(t.data))return;let e=new Set,n=[];for(let r of t.data){if(!yc(r)||typeof r.id!="string")return;let o=r.id.trim();o.length===0||e.has(o)||(e.add(o),n.push({id:o}));}return n}function yc(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function Eh(t,e){let n=new AbortController;return new Promise((r,o)=>{let i=setTimeout(()=>{n.abort(),o(wc);},t);Promise.resolve().then(()=>e(n.signal)).then(s=>{clearTimeout(i),r(s);},s=>{clearTimeout(i),o(s);});})}Xo();Er();u();Zt();var Rh="https://api.crewx.dev/v1/models",Th=3600*1e3,bc=0;async function xh(t){let e=t?.ttlMs??Th,n=Date.now();if(!(n-bc<e)){bc=n;try{let r=await fetch(t?.endpoint??Rh);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});Ls(i);}catch{}}}u();Ae();Zt();Co();var Ah="https://api.crewx.dev/v1/models",Ih=900*1e3,Ec=0;function at(t){return t!=null&&typeof t=="object"&&!Array.isArray(t)}function Sh(t){return typeof t=="number"&&Number.isInteger(t)&&t>0}function Ph(t){return typeof t=="string"&&Cs.includes(t)}function Ch(t){if(t===void 0)return [];if(!Array.isArray(t))return;let e=new Set,n=[];for(let r of t){if(!at(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 Oh(t,e){if(t===void 0)return;if(!at(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 Nh(t){if(!at(t))return {};let e={};for(let[n,r]of Object.entries(t)){if(!at(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 Rc(t,e){if(!at(t)||typeof t.mode!="string"||t.mode.length===0||typeof t.effort!="string"||t.effort.length===0)return;let n=Oh(t.providerOptions,e);if(n!==null)return {mode:t.mode,effort:t.effort,...n!==void 0?{providerOptions:n}:{}}}function Dh(t,e){let n=t.modelOverrides[e]?.effort;return Array.isArray(n)&&n.every(r=>typeof r=="string")?n:t.effort}function Lh(t,e){if(!at(t)||t.version!==1||!at(t.providers))return {};let n={};for(let[r,o]of Object.entries(t.providers)){if(!/^cli\/[^/]+$/.test(r)||!at(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=Rc(o.query,s),d=Rc(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=Dh(i,o.model);!l.includes(a.effort)||!l.includes(d.effort)||(n[r]={model:o.model,query:a,execute:d});}return n}async function Mh(t){let e=t?.ttlMs??Ih,n=Date.now();if(!(n-Ec<e)){Ec=n;try{let r=await fetch(t?.endpoint??Ah);if(!r.ok){xn({});return}let o=await r.json();if(!o?.providers||typeof o.providers!="object"){xn({});return}let i={};for(let[s,a]of Object.entries(o.providers)){let d=Array.isArray(a);if(!d&&!at(a))continue;let c=d?[]:Ch(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||!at(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}:{},...Sh(h.contextWindowTokens)?{contextWindowTokens:h.contextWindowTokens}:{},...Ph(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};}Mo(i),Ms(Nh(o.models)),xn(Lh(o.defaults,i));}catch{xn({});}}}u();function Uh(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 ms=["codex","claude","grok","opencode","antigravity","copilot"];function jh(t){let e=t.indexOf("/");return e===-1?t:t.slice(e+1)}function hs(t){let e=jh(t),n=ms.indexOf(e);return n===-1?ms.length:n}function hr(t,e){return hs(t)-hs(e)}var $h=new Set(["claude","copilot","codex","grok","opencode"]);function Bh(t){if(!t)return "";if(t.startsWith("acp/")){let e=t.slice(4);if($h.has(e))return `cli/${e}`}return t}Ae();Xe();Xi();Yi();u();Qi();Et();u();_o();Eo();Ae();var Fh="model",qh="mode",Hh="thought_level";function ys(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 Wh(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 zh(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()===qh&&_.options!=null)for(let w of ys(_.options))w.value!=null&&c.push({id:w.value,name:w.name??w.value});let l=Wh(d,c),f=[];for(let _ of s)if(_.category?.trim().toLowerCase()===Hh&&_.type==="select")for(let w of ys(_.options??[]))w.value!=null&&f.push(w.value);if(t==="claude"){let _=Pn(In()),w=Tc(n);return xc(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()===Fh&&_.options!=null)for(let w of ys(_.options))w.value!=null&&k.push({id:w.value,...w.name!=null?{name:w.name}:{}});let h=Pn(Sn(m,k));xc(t,{models:h,modes:l,availableModelsCount:m.length,configModelsCount:k.length,skipModelWarn:false});let v=Tc(n);return {id:`acp/${t}`,name:i,modes:l,effort:f,models:h,capabilities:v}}function Tc(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 xc(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 Ac(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 zh(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 Gh(){let t=Object.keys(exports.ACP_ADAPTERS),e=await Promise.allSettled(t.map(r=>Ac(r))),n=[];for(let r of e)r.status==="fulfilled"&&r.value!==null&&n.push(r.value);return n.sort((r,o)=>hr(r.id,o.id))}_o();Zi();Eo();os();Mr();bt();u();bt();Ae();function Kh(t){return t.charAt(0).toUpperCase()+t.slice(1)}async function Ic(){return new Promise(t=>{child_process.execFile("opencode",["models"],{timeout:5e3,maxBuffer:1048576},(n,r)=>{if(n){t([]);return}let o=r.split(`
405
+ `).map(i=>i.trim()).filter(i=>i.length>0).map(i=>({id:i}));t(o);}).on("error",()=>t([]));})}function Jh(t,e,n){if(!e.meta)return null;let r=e.meta.capabilities??{},o=dt(t),i=o.length>0?o:e.meta.models??[],s=n!==void 0?Sn(n,i):i,a=Rr(`cli/${t}`),d=Ue(t).providerOptions??[];return {id:`cli/${t}`,name:e.meta.displayName??Kh(t),modes:An(t),effort:Nt(t),models:Pn(s),modelOverrides:qs(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 Xh(t={}){let e=t.includeOpencodeRuntimeModels?await Ic():void 0,n=[];for(let[r,o]of Object.entries(exports.BUILTIN_ADAPTERS)){let s=Jh(r,o,r==="opencode"?e:void 0);s&&n.push(s);}return n.sort((r,o)=>hr(r.id,o.id))}u();var _s=0;function Yh(t){let e=t.meta?.taskId,n=e?` taskId=${e}`:"";if(t.ok)return `Task completed:${n}
406
406
 
407
407
  ${t.data}`;let r=t.error?.message??"Unknown error";return `Task failed:${n}
408
- Error: ${r}`}function dh(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(as>=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(", ")}`;as++;try{let s=i==="execute"?await t.execute(r,o):await t.query(r,o);return ah(s)}finally{as--;}}}}u();var sc=typeof process<"u"?process.env:{};function ch(){return sc.CREWX_CLI||"npx crewx"}function lh(){return sc.CREWX_WORKSPACE||(typeof process<"u"?process.cwd():"/")}u();u();u();var we="[REDACTED]",ac="[PATH]";function ds(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=ph(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,ac),e=e.replace(/\b[A-Z]:\\(?:Users|home|Windows|Program Files|workspace|workspaces)\\[^\s"'`),;]*/gi,ac),e=e.replace(/[\r\n]{3,}/g,`
408
+ Error: ${r}`}function Qh(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(_s>=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(", ")}`;_s++;try{let s=i==="execute"?await t.execute(r,o):await t.query(r,o);return Yh(s)}finally{_s--;}}}}u();var Sc=typeof process<"u"?process.env:{};function Zh(){return Sc.CREWX_CLI||"npx crewx"}function ey(){return Sc.CREWX_WORKSPACE||(typeof process<"u"?process.cwd():"/")}u();u();u();var ve="[REDACTED]",Pc="[PATH]";function ws(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 ${ve}]`),e=ny(e),e=e.replace(/\b(?:Bearer|Basic)\s+[A-Za-z0-9._~+\-/]+=*/gi,`${ve}`),e=e.replace(/\bsk-[A-Za-z0-9][A-Za-z0-9_-]*/g,ve),e=e.replace(/\bghp_[A-Za-z0-9][A-Za-z0-9_-]*/g,ve),e=e.replace(/\bxoxb-[A-Za-z0-9-]+/g,ve),e=e.replace(/\bxoxp-[A-Za-z0-9-]+/g,ve),e=e.replace(/\bAKIA[0-9A-Z]{12,}\b/g,ve),e=e.replace(/\bgithub_pat_[A-Za-z0-9_]+/g,ve),e=e.replace(/\bgho_[A-Za-z0-9_]+/g,ve),e=e.replace(/\bAIza[A-Za-z0-9_-]{20,}\b/g,ve),e=e.replace(/\beyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/g,ve),e=e.replace(/\b(?:authorization|api[_ -]?key|access[_ -]?token|auth[_ -]?token|refresh[_ -]?token|token|secret|password)\s*([:=])\s*["']?[^\s,;&"']+/gi,(n,r)=>`${ve}${r}${ve}`),e=e.replace(/([?&](?:api[_-]?key|access[_-]?token|token)=)[^&\s]+/gi,`$1${ve}`),e=e.replace(/(?:\/(?:Users|home|private|var\/folders|tmp|workspace|workspaces|Volumes|opt|etc|srv|Applications)\/[^\s"'`),;]+)/g,Pc),e=e.replace(/\b[A-Z]:\\(?:Users|home|Windows|Program Files|workspace|workspaces)\\[^\s"'`),;]*/gi,Pc),e=e.replace(/[\r\n]{3,}/g,`
409
409
 
410
- `).trim(),uh(e,1024)||void 0}function uh(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 ph(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=fh(t,i),a=s>=0?s:t.indexOf(`
410
+ `).trim(),ty(e,1024)||void 0}function ty(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 ny(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=ry(t,i),a=s>=0?s:t.indexOf(`
411
411
  `,i)>=0?t.indexOf(`
412
- `,i):t.length;n+=t.slice(r,o.index),n+=`[HTTP BODY ${we}]`,r=a;}return n+t.slice(r)}function fh(t,e){let n=t[e];if(n==='"'||n==="'")return gh(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 gh(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 mh=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"]),hh={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"},yh=[{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 _h(t){try{if(!At(t)||t.status!=="failed")return cs();let e=wh(t.error);if(ps(e.message))return cs();let n=Oe(t.providerId)??e.provider??null,r=vh(t.logs),o=cc(e.code);if(o)return ur(o,n,e.message,e);let i=yo(e.providerCode)??yo(e.code),s=i?us(i,e.message):void 0;if(s)return ur(s,n,e.message,e,i);let a=Eh(r);if(!kh(e)&&a&&(a.type==="user_stop"||ps(a.message)))return cs();if(a){let c=Rh(a.code,a.providerCode,a.message);if(c)return ur(c,n,a.message??e.message,e,a.providerCode??a.code,a,a.structuredFailure?"terminal":"envelope")}let d=bh(e.message,r);return d?ur(d.code,n,d.message,e,d.terminal?.providerCode??d.terminal?.code,d.terminal,d.terminal?.structuredFailure?"terminal":"envelope"):ur("PROCESS_FAILED",n,e.message,e)}catch{return {errorCode:"PROCESS_FAILED",errorProvider:null}}}function cs(){return {errorCode:null,errorProvider:null}}function ur(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=ds(c);return l&&(a.technicalMessage=l),Object.keys(a).length>0?{errorCode:t,errorProvider:e,errorMeta:a}:{errorCode:t,errorProvider:e}}function wh(t){let e=typeof t=="string"?gn(t):t;return At(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 gn(t){try{return JSON.parse(t)}catch{return}}function kh(t){return !!(t.code||t.providerCode||t.message)}function vh(t){let e=[];if(typeof t=="string"){let n=gn(t);if(Array.isArray(n))e.push(...n);else for(let r of t.split(/\r?\n/)){let o=gn(r.trim());o!==void 0&&e.push(o);}}else Array.isArray(t)?e.push(...t):At(t)&&e.push(t);return e.flatMap(fn)}function fn(t){if(!At(t))return [];let e=Oe(t.type),n=Oe(t.message);if(n&&!e){let o=gn(n);if(Array.isArray(o))return o.flatMap(fn);if(At(o))return fn(o);let i=n.split(/\r?\n/).map(s=>gn(s.trim())).filter(s=>At(s));return i.length>0?i.flatMap(fn):t.level==="stderr"?[{type:"stderr",message:n,rank:1,structuredFailure:false}]:fn({type:"info",content:n})}if(e==="rate_limit_event"){let o=dc(t.rate_limit_info);return Oe(o?.status)!=="rejected"?[]:[{type:e,code:"RATE_LIMITED",message:pr(o?.message,t.message),resetAt:Th(o?.resetsAt),rank:4,structuredFailure:true}]}if(e==="turn.failed"||e==="error"){let o=dc(t.error),i=pr(o?.message,o?.detail,t.message,t.errorMessage,t.content),s=pr(o?.code,t.code,t.errorCode);return [{type:e,code:s,providerCode:pr(o?.providerCode,t.providerCode),message:i,rank:e==="turn.failed"?3:2,structuredFailure:true}]}if(e==="text"&&typeof t.content=="string"){let o=gn(t.content);if(At(o))return fn(o)}let r=pr(t.errorMessage,t.content);return r&&ps(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 Eh(t){return [...t].sort((e,n)=>n.rank-e.rank)[0]}function Rh(t,e,n){let r=cc(t);if(r)return r;if(t){let o=us(t,n);if(o)return o}if(e){let o=us(e,n);if(o)return o}return ls(n)}function bh(t,e){let n=ls(t);if(n)return {code:n,message:t};for(let r of [...e].sort((o,i)=>i.rank-o.rank)){let o=ls(r.message);if(o)return {code:o,message:r.message,terminal:r}}}function ls(t){if(!(typeof t!="string"||!t.trim()))return yh.find(e=>e.pattern.test(t))?.code}function us(t,e){let n=yo(t)??t;if(n==="MODEL_UNAVAILABLE")return /(?:capacity|overloaded|busy)/i.test(e??"")?"MODEL_AT_CAPACITY":"MODEL_NOT_SUPPORTED";if(n!=="UNKNOWN")return hh[n]}function cc(t){let e=yo(t);return e&&mh.has(e)?e:void 0}function yo(t){return typeof t=="string"&&t.trim()?t.trim().toUpperCase():void 0}function ps(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 At(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function dc(t){return At(t)?t:void 0}function Oe(t){return typeof t=="string"&&t.trim()?t.trim():void 0}function Th(t){return typeof t=="string"||typeof t=="number"&&Number.isFinite(t)?t:void 0}function pr(...t){return t.map(Oe).find(e=>!!e)}u();var xh=/^[a-zA-Z0-9._-]+$/,fs=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(!xh.test(e))throw new Error(`Invalid ID format: ${e}`)}generateBoxId(){return Ve("box")}};u();function Ah(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 T=f[w],x=f[w+1],U=T?.content||"",I=x?.content||"",ee=o.countTokens(U+I),S=[];T&&S.push(T),x&&S.push(x),h.push({messages:S,tokens:ee});}for(let w=h.length-1;w>=0;w--){let T=h[w];if(m+T.tokens>d){k=true;break}m+=T.tokens,g.unshift(...T.messages);}let v=[],_=0;if(k&&c>0)try{let{boxes:w}=n.listBoxes(t);for(let T=w.length-1;T>=0;T--){let x=w[T],U=x.summaryTokens??x.sourceTokens;if(_+U>c)break;_+=U,v.unshift({boxId:x.id,seq:x.seq,taskCount:x.taskCount,sourceTokens:x.sourceTokens,summary:x.summary,previewFirst:x.previewFirst,previewMid:x.previewMid,previewLast:x.previewLast,createdAt:x.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}}}_t();Lt();u();var _o=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},gr=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 S=>{a?.onTaskStart&&await a.onTaskStart(S),g+=1;let F=new AbortController,pe={signal:F.signal},Q,ie;typeof i=="number"&&Number.isFinite(i)&&i>0&&(ie=new Promise((V,j)=>{Q=setTimeout(()=>{let H=new _o(S.id,i);F.abort(H),j(H);},i);}));let q=perf_hooks.performance.now(),O=S.run(pe),ne=ie?Promise.race([O,ie]):O;try{let V=await ne,j=perf_hooks.performance.now(),H=j-q,me=d(V,S),te={taskId:S.id,success:me,value:V,durationMs:H,startedAt:q,finishedAt:j,metadata:S.metadata,aborted:!1};c.push(te),me?l+=1:f+=1,a?.onTaskComplete&&await a.onTaskComplete(te),s&&!me&&(m=!0);}catch(V){let j=perf_hooks.performance.now(),H=j-q,me=V instanceof Error?V:new Error(String(V)),te={taskId:S.id,success:false,error:me,durationMs:H,startedAt:q,finishedAt:j,metadata:S.metadata,aborted:F.signal.aborted};c.push(te),f+=1,a?.onError&&await a.onError(S,me,H),s&&(m=true);}finally{Q&&clearTimeout(Q),ie&&O.catch(()=>{});}},_=async()=>{for(;!m;){let S=k;if(S>=e.length)break;k+=1;let F=e[S];if(!F||(await v(F),m))break}},w=Math.min(o,e.length),T=[];for(let S=0;S<w;S++)T.push(_());await Promise.all(T);let U=perf_hooks.performance.now()-h,I=c.length?c.reduce((S,F)=>S+F.durationMs,0)/c.length:0,ee=U>0?c.length/(U/1e3):c.length;return this.metrics={totalTasks:e.length,startedTasks:g,completedTasks:c.length,successCount:l,failureCount:f,totalDurationMs:U,averageDurationMs:I,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 mr=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 lc=3,uc=3e4,pc=500,Ih=t=>{if(typeof t!="number"||Number.isNaN(t)||!Number.isFinite(t))return lc;let e=Math.floor(t);return e>0?e:lc},Ph=t=>t===void 0||typeof t!="number"||Number.isNaN(t)||t<=0?uc:t,Sh=t=>{if(!t)return {maxRetries:0,retryDelay:pc};let e=Number.isInteger(t.maxRetries)&&t.maxRetries>=0?t.maxRetries:0,n=typeof t.retryDelay=="number"&&t.retryDelay>=0?t.retryDelay:pc;return {maxRetries:e,retryDelay:n}},gs=t=>{let e=t.reason;return e instanceof Error?e:typeof e=="string"?new Error(e):new Error("Parallel operation aborted")},Ch=(t,e)=>t<=0?Promise.resolve():new Promise((n,r)=>{let o=setTimeout(()=>{e.removeEventListener("abort",i),n();},t),i=()=>{clearTimeout(o),r(gs(e));};if(e.aborted){i();return}e.addEventListener("abort",i,{once:true});}),Oh=async(t,e,n)=>{let r,o;for(let i=0;i<=e.maxRetries;i++){if(n.aborted)throw gs(n);try{let s=await t();if(r=s,s.success||i===e.maxRetries)return s}catch(s){if(o=s,n.aborted)throw gs(n);if(i===e.maxRetries)throw s instanceof Error?s:new Error(String(s))}i<e.maxRetries&&await Ch(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")},fc=(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);}},Nh=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")}}),Mh=(t,e)=>({onTaskComplete:async n=>{fc(e,t,n.success);},onError:async()=>{fc(e,t,false);}}),gc=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=Ih(n.concurrency),o=Ph(n.timeout),i=Sh(n.retryPolicy),s=new gr,a=new mr,d=t.map((h,v)=>({id:`${e}:${h.agentId??"anonymous"}:${v}`,metadata:{index:v,mode:e,request:h},run:_=>Oh(()=>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:Mh(c,n)}),f=Nh(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)=>gc(t,"query",e),Uh=(t,e)=>gc(t,"execute",e);Yi();Xi();Ki();Ji();u();u();var wo=class{capabilities={required:[]}};u();u();u();var mc=2e3;function hc(t){let e=t.replace(/[\x00-\x08\x0b\x0c\x0e-\x1f\x7f\u2028\u2029]/g,"");return e.length<=mc?e:e.slice(0,mc-11)+" [redacted]"}var zh=10*1024*1024,Gh={b:1,kb:1024,mb:1024*1024,gb:1024*1024*1024};function ms(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 _c(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*(Gh[r]??1))}function wc(t){return typeof t=="string"}function kc(t){try{let e=td.statSync(t);return e.size>zh?(process.stderr.write(`[YamlHookPlugin] File too large for line count: ${t} (${e.size} bytes)
413
- `),null):td.readFileSync(t,"utf8").split(`
414
- `).length}catch{return null}}function vc(t){try{return td.statSync(t).size}catch{return null}}function Jh(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(qe(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("..")&&qe(a,t))return true}}return false}function Kh(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 Yh(t,e){if(!t)return true;try{let n=new RegExp(t),r=JSON.stringify(e);return n.test(r)}catch{return false}}function Qh(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(wc(t.pathSizeMin)){let o=vc(r);if(o===null||o<_c(t.pathSizeMin))return false}else {let o=kc(r);if(o===null||o<t.pathSizeMin)return false}if(t.pathSizeMax!==void 0)if(wc(t.pathSizeMax)){let o=vc(r);if(o===null||o>_c(t.pathSizeMax))return false}else {let o=kc(r);if(o===null||o>t.pathSizeMax)return false}return true}function Zh(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 ys=class extends wo{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(`
412
+ `,i):t.length;n+=t.slice(r,o.index),n+=`[HTTP BODY ${ve}]`,r=a;}return n+t.slice(r)}function ry(t,e){let n=t[e];if(n==='"'||n==="'")return oy(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 oy(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 iy=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"]),sy={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"},ay=[{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 dy(t){try{if(!Ct(t)||t.status!=="failed")return ks();let e=cy(t.error);if(Es(e.message))return ks();let n=Le(t.providerId)??e.provider??null,r=uy(t.logs),o=Oc(e.code);if(o)return yr(o,n,e.message,e);let i=To(e.providerCode)??To(e.code),s=i?bs(i,e.message):void 0;if(s)return yr(s,n,e.message,e,i);let a=py(r);if(!ly(e)&&a&&(a.type==="user_stop"||Es(a.message)))return ks();if(a){let c=fy(a.code,a.providerCode,a.message);if(c)return yr(c,n,a.message??e.message,e,a.providerCode??a.code,a,a.structuredFailure?"terminal":"envelope")}let d=gy(e.message,r);return d?yr(d.code,n,d.message,e,d.terminal?.providerCode??d.terminal?.code,d.terminal,d.terminal?.structuredFailure?"terminal":"envelope"):yr("PROCESS_FAILED",n,e.message,e)}catch{return {errorCode:"PROCESS_FAILED",errorProvider:null}}}function ks(){return {errorCode:null,errorProvider:null}}function yr(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=ws(c);return l&&(a.technicalMessage=l),Object.keys(a).length>0?{errorCode:t,errorProvider:e,errorMeta:a}:{errorCode:t,errorProvider:e}}function cy(t){let e=typeof t=="string"?wn(t):t;return Ct(e)?{isEnvelope:true,code:Le(e.code),providerCode:Le(e.providerCode),message:Le(e.message)??Le(e.error),provider:Le(e.provider)??Le(e.errorProvider),model:Le(e.model)}:{isEnvelope:false,...typeof t=="string"&&t.trim()?{message:t.trim()}:{}}}function wn(t){try{return JSON.parse(t)}catch{return}}function ly(t){return !!(t.code||t.providerCode||t.message)}function uy(t){let e=[];if(typeof t=="string"){let n=wn(t);if(Array.isArray(n))e.push(...n);else for(let r of t.split(/\r?\n/)){let o=wn(r.trim());o!==void 0&&e.push(o);}}else Array.isArray(t)?e.push(...t):Ct(t)&&e.push(t);return e.flatMap(_n)}function _n(t){if(!Ct(t))return [];let e=Le(t.type),n=Le(t.message);if(n&&!e){let o=wn(n);if(Array.isArray(o))return o.flatMap(_n);if(Ct(o))return _n(o);let i=n.split(/\r?\n/).map(s=>wn(s.trim())).filter(s=>Ct(s));return i.length>0?i.flatMap(_n):t.level==="stderr"?[{type:"stderr",message:n,rank:1,structuredFailure:false}]:_n({type:"info",content:n})}if(e==="rate_limit_event"){let o=Cc(t.rate_limit_info);return Le(o?.status)!=="rejected"?[]:[{type:e,code:"RATE_LIMITED",message:_r(o?.message,t.message),resetAt:my(o?.resetsAt),rank:4,structuredFailure:true}]}if(e==="turn.failed"||e==="error"){let o=Cc(t.error),i=_r(o?.message,o?.detail,t.message,t.errorMessage,t.content),s=_r(o?.code,t.code,t.errorCode);return [{type:e,code:s,providerCode:_r(o?.providerCode,t.providerCode),message:i,rank:e==="turn.failed"?3:2,structuredFailure:true}]}if(e==="text"&&typeof t.content=="string"){let o=wn(t.content);if(Ct(o))return _n(o)}let r=_r(t.errorMessage,t.content);return r&&Es(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 py(t){return [...t].sort((e,n)=>n.rank-e.rank)[0]}function fy(t,e,n){let r=Oc(t);if(r)return r;if(t){let o=bs(t,n);if(o)return o}if(e){let o=bs(e,n);if(o)return o}return vs(n)}function gy(t,e){let n=vs(t);if(n)return {code:n,message:t};for(let r of [...e].sort((o,i)=>i.rank-o.rank)){let o=vs(r.message);if(o)return {code:o,message:r.message,terminal:r}}}function vs(t){if(!(typeof t!="string"||!t.trim()))return ay.find(e=>e.pattern.test(t))?.code}function bs(t,e){let n=To(t)??t;if(n==="MODEL_UNAVAILABLE")return /(?:capacity|overloaded|busy)/i.test(e??"")?"MODEL_AT_CAPACITY":"MODEL_NOT_SUPPORTED";if(n!=="UNKNOWN")return sy[n]}function Oc(t){let e=To(t);return e&&iy.has(e)?e:void 0}function To(t){return typeof t=="string"&&t.trim()?t.trim().toUpperCase():void 0}function Es(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 Ct(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}function Cc(t){return Ct(t)?t:void 0}function Le(t){return typeof t=="string"&&t.trim()?t.trim():void 0}function my(t){return typeof t=="string"||typeof t=="number"&&Number.isFinite(t)?t:void 0}function _r(...t){return t.map(Le).find(e=>!!e)}u();var hy=/^[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(!hy.test(e))throw new Error(`Invalid ID format: ${e}`)}generateBoxId(){return Qe("box")}};u();function yy(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 T=f[w],x=f[w+1],U=T?.content||"",I=x?.content||"",te=o.countTokens(U+I),S=[];T&&S.push(T),x&&S.push(x),h.push({messages:S,tokens:te});}for(let w=h.length-1;w>=0;w--){let T=h[w];if(m+T.tokens>d){k=true;break}m+=T.tokens,g.unshift(...T.messages);}let v=[],_=0;if(k&&c>0)try{let{boxes:w}=n.listBoxes(t);for(let T=w.length-1;T>=0;T--){let x=w[T],U=x.summaryTokens??x.sourceTokens;if(_+U>c)break;_+=U,v.unshift({boxId:x.id,seq:x.seq,taskCount:x.taskCount,sourceTokens:x.sourceTokens,summary:x.summary,previewFirst:x.previewFirst,previewMid:x.previewMid,previewLast:x.previewLast,createdAt:x.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}}}bt();Bt();u();var xo=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},kr=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 S=>{a?.onTaskStart&&await a.onTaskStart(S),g+=1;let q=new AbortController,fe={signal:q.signal},Q,se;typeof i=="number"&&Number.isFinite(i)&&i>0&&(se=new Promise((K,W)=>{Q=setTimeout(()=>{let H=new xo(S.id,i);q.abort(H),W(H);},i);}));let j=perf_hooks.performance.now(),F=S.run(fe),B=se?Promise.race([F,se]):F;try{let K=await B,W=perf_hooks.performance.now(),H=W-j,ne=d(K,S),re={taskId:S.id,success:ne,value:K,durationMs:H,startedAt:j,finishedAt:W,metadata:S.metadata,aborted:!1};c.push(re),ne?l+=1:f+=1,a?.onTaskComplete&&await a.onTaskComplete(re),s&&!ne&&(m=!0);}catch(K){let W=perf_hooks.performance.now(),H=W-j,ne=K instanceof Error?K:new Error(String(K)),re={taskId:S.id,success:false,error:ne,durationMs:H,startedAt:j,finishedAt:W,metadata:S.metadata,aborted:q.signal.aborted};c.push(re),f+=1,a?.onError&&await a.onError(S,ne,H),s&&(m=true);}finally{Q&&clearTimeout(Q),se&&F.catch(()=>{});}},_=async()=>{for(;!m;){let S=k;if(S>=e.length)break;k+=1;let q=e[S];if(!q||(await v(q),m))break}},w=Math.min(o,e.length),T=[];for(let S=0;S<w;S++)T.push(_());await Promise.all(T);let U=perf_hooks.performance.now()-h,I=c.length?c.reduce((S,q)=>S+q.durationMs,0)/c.length:0,te=U>0?c.length/(U/1e3):c.length;return this.metrics={totalTasks:e.length,startedTasks:g,completedTasks:c.length,successCount:l,failureCount:f,totalDurationMs:U,averageDurationMs:I,throughput:te},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 vr=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 Nc=3,Dc=3e4,Lc=500,_y=t=>{if(typeof t!="number"||Number.isNaN(t)||!Number.isFinite(t))return Nc;let e=Math.floor(t);return e>0?e:Nc},wy=t=>t===void 0||typeof t!="number"||Number.isNaN(t)||t<=0?Dc:t,ky=t=>{if(!t)return {maxRetries:0,retryDelay:Lc};let e=Number.isInteger(t.maxRetries)&&t.maxRetries>=0?t.maxRetries:0,n=typeof t.retryDelay=="number"&&t.retryDelay>=0?t.retryDelay:Lc;return {maxRetries:e,retryDelay:n}},Ts=t=>{let e=t.reason;return e instanceof Error?e:typeof e=="string"?new Error(e):new Error("Parallel operation aborted")},vy=(t,e)=>t<=0?Promise.resolve():new Promise((n,r)=>{let o=setTimeout(()=>{e.removeEventListener("abort",i),n();},t),i=()=>{clearTimeout(o),r(Ts(e));};if(e.aborted){i();return}e.addEventListener("abort",i,{once:true});}),by=async(t,e,n)=>{let r,o;for(let i=0;i<=e.maxRetries;i++){if(n.aborted)throw Ts(n);try{let s=await t();if(r=s,s.success||i===e.maxRetries)return s}catch(s){if(o=s,n.aborted)throw Ts(n);if(i===e.maxRetries)throw s instanceof Error?s:new Error(String(s))}i<e.maxRetries&&await vy(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")},Mc=(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);}},Ey=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}}}),Ry=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")}}),Ty=(t,e)=>({onTaskComplete:async n=>{Mc(e,t,n.success);},onError:async()=>{Mc(e,t,false);}}),Uc=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=_y(n.concurrency),o=wy(n.timeout),i=ky(n.retryPolicy),s=new kr,a=new vr,d=t.map((h,v)=>({id:`${e}:${h.agentId??"anonymous"}:${v}`,metadata:{index:v,mode:e,request:h},run:_=>by(()=>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:Ty(c,n)}),f=Ey(l),g=Ry(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},xy=(t,e)=>Uc(t,"query",e),Ay=(t,e)=>Uc(t,"execute",e);ds();as();ss();is();u();u();var Ao=class{capabilities={required:[]}};u();u();u();var jc=2e3;function $c(t){let e=t.replace(/[\x00-\x08\x0b\x0c\x0e-\x1f\x7f\u2028\u2029]/g,"");return e.length<=jc?e:e.slice(0,jc-11)+" [redacted]"}var Ly=10*1024*1024,My={b:1,kb:1024,mb:1024*1024,gb:1024*1024*1024};function xs(t,e){return t===void 0?true:Array.isArray(t)?t.includes(e):t===e}function Uy(t,e){return t===void 0?true:Array.isArray(t)?t.some(n=>e.includes(n)):e.includes(t)}function Fc(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*(My[r]??1))}function qc(t){return typeof t=="string"}function Hc(t){try{let e=fd.statSync(t);return e.size>Ly?(process.stderr.write(`[YamlHookPlugin] File too large for line count: ${t} (${e.size} bytes)
413
+ `),null):fd.readFileSync(t,"utf8").split(`
414
+ `).length}catch{return null}}function Wc(t){try{return fd.statSync(t).size}catch{return null}}function jy(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(Ve(o,t))return true;if(n&&o.startsWith("/")){let{relative:i,isAbsolute:s}=_e("path");if(s(o)){let a=i(n,o);if(a&&!a.startsWith("..")&&Ve(a,t))return true}}return false}function $y(t,e){return t?JSON.stringify(e).includes(t):true}function By(t,e){if(!t)return true;try{let n=new RegExp(t),r=JSON.stringify(e);return n.test(r)}catch{return false}}function Fy(t,e){if(!t)return true;try{let n=new RegExp(t),r=JSON.stringify(e);return n.test(r)}catch{return false}}function qy(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(qc(t.pathSizeMin)){let o=Wc(r);if(o===null||o<Fc(t.pathSizeMin))return false}else {let o=Hc(r);if(o===null||o<t.pathSizeMin)return false}if(t.pathSizeMax!==void 0)if(qc(t.pathSizeMax)){let o=Wc(r);if(o===null||o>Fc(t.pathSizeMax))return false}else {let o=Hc(r);if(o===null||o>t.pathSizeMax)return false}return true}function Hy(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 Is=class extends Ao{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(`
415
415
 
416
- `)):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=hc(n.message).slice(0,500)));let o=`[${new Date().toISOString()}] HOOK: ${JSON.stringify(r)}
417
- `;td.appendFileSync(e,o,{encoding:"utf8",mode:384});}catch{}}matchEntryLevel(e,n){if(e.provider!==void 0){let r=n.provider.replace(/^cli\//,"");if(!ms(e.provider,r))return false}if(e.team!==void 0){let o=this.agentMap.get(n.agent.id)?.team??n.agent.team;if(!ms(e.team,o))return false}if(e.role!==void 0){let o=this.agentMap.get(n.agent.id)?.role??n.agent.role;if(!ms(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)||!Kh(e.pattern,n.tool.input)||!Xh(e.regex,n.tool.input)||!Jh(e.pathPattern,n.tool.input,n.cwd)||!Qh(e,n.tool.input)||!Yh(e.whenInputRegex,n.tool.input))}hasFired(e,n){try{let r=this.firedFilePath(e);if(!td.existsSync(r))return !1;let o=JSON.parse(td.readFileSync(r,"utf8"));return Array.isArray(o.fired)&&o.fired.includes(n)}catch{return false}}markFired(e,n){try{let r=this.firedFilePath(e);td.mkdirSync(Y.dirname(r),{recursive:!0,mode:448});let o=td.existsSync(r)?JSON.parse(td.readFileSync(r,"utf8")):{fired:[]};Array.isArray(o.fired)||(o.fired=[]),o.fired.includes(n)||(o.fired.push(n),td.writeFileSync(r,JSON.stringify(o),{mode:384}));}catch(r){process.stderr.write(`[YamlHookPlugin] once state write failed: ${r}
418
- `);}}firedFilePath(e){let n=crypto$1.createHash("sha1").update(e).digest("hex");return Y.join(Di.homedir(),".crewx","sessions",n,"fired-rules.json")}};u();u();u();function ey(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 _s=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 ty(t){return t}function ny(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);}}}Qt();exports.ARCHIVE_WI_BOARD_ID=un;exports.AdapterError=_s;exports.AgentNotFoundError=it;exports.AgentRuntime=mr;exports.AgentSkillsSchema=Ls;exports.BrowserFsAdapter=rs;exports.ConfigLoadError=Ct;exports.Crewx=es;exports.CrewxPlugin=ns;exports.DEFAULT_INPUT_BUDGET_PERCENT=Ds;exports.DEFAULT_WI_BOARD_ID=ln;exports.DEFAULT_WI_WORKFLOW_ID=Hd;exports.DocumentLoader=qt;exports.FRESH_PROVIDER_INITIAL_INPUT_FRAMING=vr;exports.INPUT_BUDGET_TOKENIZER_ENCODING=No;exports.LEGACY_UI_CARD_SAFE_SUMMARY=Sa;exports.LayoutLoadError=ve;exports.LayoutLoader=Mn;exports.LayoutRenderer=jn;exports.MAX_INPUT_BUDGET_PERCENT=kr;exports.MIN_INPUT_BUDGET_PERCENT=wr;exports.NodeFsAdapter=qr;exports.PROVIDER_ORDER=os;exports.ParallelRunner=gr;exports.ParallelRunnerTimeoutError=_o;exports.PropsValidationError=ct;exports.PropsValidator=Un;exports.RESUME_PROVIDER_INITIAL_INPUT_FRAMING=Do;exports.SdkBoxService=fs;exports.SpanRepository=oo;exports.TaskRepository=an;exports.TemplateEngine=Dn;exports.TypedEventEmitter=$n;exports.UiRuntimeError=R;exports.WI_BOARD_ID_PATTERN=ho;exports.WI_DEFAULT_FLOW_FILENAME=Kg;exports.WI_PLAN_FLOW_FILENAME=Xg;exports.WI_PLAN_WORKFLOW_ID=Jg;exports.WiBoardSchema=tl;exports.WiCreateError=re;exports.YamlHookPlugin=ys;exports.buildContext=Ah;exports.canonicalizeAgentOptions=Al;exports.classifyTaskError=_h;exports.clearModelsOverride=Uc;exports.compareProviders=lr;exports.countTokens=Rr;exports.createAdapterContext=pi;exports.createDelegateTool=dh;exports.createGlobalSettingsStore=Nm;exports.createHandler=Ci;exports.createPluginProviderFactory=Ld;exports.createProvider=dt;exports.createRemoteProviderFactory=Od;exports.createScopedAdapterStore=li;exports.createTokenCounter=Uo;exports.createUiServerRuntime=Ed;exports.createWorkInstruction=wm;exports.createWorkInstructionBatch=km;exports.defaultExtractText=ki;exports.defaultFsAdapter=Ft;exports.defaultParseEvent=je;exports.defineChannelAdapter=ty;exports.defineChannelAdapterPlugin=ny;exports.escapeHandlebarsHelper=si;exports.extractLegacyWorkflowRunId=Ia;exports.formatDisplayTimestamp=ri;exports.formatFileSizeHelper=ai;exports.formatTimestamp=ni;exports.formatTimestampHelper=di;exports.generateFingerprint=Lu;exports.generateId=Ve;exports.getAntigravityModels=Co;exports.getClaudeModels=En;exports.getCodexModels=Po;exports.getCopilotModels=So;exports.getCrewxHome=Mi;exports.getProviderModels=ot;exports.getSyncWindowStore=$u;exports.hashUiDefinition=Yn;exports.hashWorkspaceId=to;exports.initModelsRemote=Gm;exports.initPricingRemote=Lm;exports.isReservedWiBoardId=Wd;exports.lengthHelper=ii;exports.loadYamlFile=xr;exports.materializeWindowsSpawnProgram=Mt;exports.mergeAdditionalArgs=ua;exports.mergeModels=Rn;exports.migrateGrokLegacyMode=On;exports.normalizeClaudeMode=$t;exports.normalizeInputBudgetProvider=Mo;exports.normalizeProviderId=Xm;exports.normalizeWorkspacePath=Oi;exports.parseOverdriveProfile=Fr;exports.parseOverdriveSignal=Zo;exports.parseStdoutEvent=Pn;exports.parseUsage=st;exports.parseYamlContent=Tr;exports.providerRank=is;exports.queryAcpProviderMeta=oc;exports.queryAllAcpProviderMetas=nh;exports.queryAllCliProviderMetas=sh;exports.queryOpencodeModels=ic;exports.redactTechnicalMessage=ds;exports.registerAcpProviders=Sd;exports.registerApiProviders=Td;exports.registerProviderFactory=at;exports.resolveAgent=Ar;exports.resolveAgentSkills=Vm;exports.resolveCatalogModelId=wn;exports.resolveCrewxCli=ch;exports.resolveCrewxWorkspace=lh;exports.resolveDefaultAgentsYaml=jo;exports.resolveInputBudget=br;exports.resolveOverdrive=ei;exports.resolveTemplatesPath=Xt;exports.resolveTokenizerMetadata=Er;exports.resolveUiEffectiveCapabilities=no;exports.resolveWiBoards=Yg;exports.resolveWindowsExecutablePath=hl;exports.resolveWindowsSpawnProgram=Dt;exports.resolveWorkflowTemplatesPath=ul;exports.runExecutesParallel=Uh;exports.runInSyncWindow=Bu;exports.runQueriesParallel=Lh;exports.sanitizeLegacyUiCardText=zr;exports.sanitizeTemplateMessages=_i;exports.scanLegacyUiCardAt=mi;exports.scanLegacyUiCardTags=qn;exports.selectNextWi=Em;exports.setAuditVerbose=vu;exports.setModelsOverride=Io;exports.toTaskReader=ey;exports.toTemplateMessages=wi;exports.truncateHelper=oi;exports.validateHooksSchema=Zh;
416
+ `)):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=$c(n.message).slice(0,500)));let o=`[${new Date().toISOString()}] HOOK: ${JSON.stringify(r)}
417
+ `;fd.appendFileSync(e,o,{encoding:"utf8",mode:384});}catch{}}matchEntryLevel(e,n){if(e.provider!==void 0){let r=n.provider.replace(/^cli\//,"");if(!xs(e.provider,r))return false}if(e.team!==void 0){let o=this.agentMap.get(n.agent.id)?.team??n.agent.team;if(!xs(e.team,o))return false}if(e.role!==void 0){let o=this.agentMap.get(n.agent.id)?.role??n.agent.role;if(!xs(e.role,o))return false}if(e.tag!==void 0){let o=this.agentMap.get(n.agent.id)?.tags??[];if(!Uy(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)||!$y(e.pattern,n.tool.input)||!By(e.regex,n.tool.input)||!jy(e.pathPattern,n.tool.input,n.cwd)||!qy(e,n.tool.input)||!Fy(e.whenInputRegex,n.tool.input))}hasFired(e,n){try{let r=this.firedFilePath(e);if(!fd.existsSync(r))return !1;let o=JSON.parse(fd.readFileSync(r,"utf8"));return Array.isArray(o.fired)&&o.fired.includes(n)}catch{return false}}markFired(e,n){try{let r=this.firedFilePath(e);fd.mkdirSync(Y.dirname(r),{recursive:!0,mode:448});let o=fd.existsSync(r)?JSON.parse(fd.readFileSync(r,"utf8")):{fired:[]};Array.isArray(o.fired)||(o.fired=[]),o.fired.includes(n)||(o.fired.push(n),fd.writeFileSync(r,JSON.stringify(o),{mode:384}));}catch(r){process.stderr.write(`[YamlHookPlugin] once state write failed: ${r}
418
+ `);}}firedFilePath(e){let n=crypto$1.createHash("sha1").update(e).digest("hex");return Y.join(Hi.homedir(),".crewx","sessions",n,"fired-rules.json")}};u();u();u();function Wy(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 Ss=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 zy(t){return t}function Gy(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);}}}nn();exports.ARCHIVE_WI_BOARD_ID=hn;exports.AdapterError=Ss;exports.AgentNotFoundError=ct;exports.AgentRuntime=vr;exports.AgentSkillsSchema=Vs;exports.BrowserFsAdapter=gs;exports.ConfigLoadError=Dt;exports.Crewx=us;exports.CrewxPlugin=fs;exports.DEFAULT_INPUT_BUDGET_PERCENT=zs;exports.DEFAULT_LOCAL_SERVER_PROBE_TIMEOUT_MS=_c;exports.DEFAULT_WI_BOARD_ID=mn;exports.DEFAULT_WI_WORKFLOW_ID=dc;exports.DocumentLoader=Gt;exports.FRESH_PROVIDER_INITIAL_INPUT_FRAMING=Ar;exports.INPUT_BUDGET_TOKENIZER_ENCODING=Fo;exports.LEGACY_UI_CARD_SAFE_SUMMARY=qa;exports.LayoutLoadError=Ee;exports.LayoutLoader=Fn;exports.LayoutRenderer=Wn;exports.LocalServerOpenCodeOverlayError=st;exports.MAX_INPUT_BUDGET_PERCENT=xr;exports.MIN_INPUT_BUDGET_PERCENT=Tr;exports.NodeFsAdapter=Kr;exports.PROVIDER_ORDER=ms;exports.ParallelRunner=kr;exports.ParallelRunnerTimeoutError=xo;exports.PropsValidationError=ft;exports.PropsValidator=Hn;exports.RESUME_PROVIDER_INITIAL_INPUT_FRAMING=qo;exports.SdkBoxService=Rs;exports.SpanRepository=uo;exports.TaskRepository=un;exports.TemplateEngine=Bn;exports.TypedEventEmitter=zn;exports.UiRuntimeError=E;exports.WI_BOARD_ID_PATTERN=Ro;exports.WI_DEFAULT_FLOW_FILENAME=Vm;exports.WI_PLAN_FLOW_FILENAME=Km;exports.WI_PLAN_WORKFLOW_ID=Gm;exports.WiBoardSchema=Rl;exports.WiCreateError=oe;exports.YamlHookPlugin=Is;exports.buildContext=yy;exports.buildLocalServerOpenCodeOverlay=ho;exports.canonicalizeAgentOptions=su;exports.classifyTaskError=dy;exports.clearModelsOverride=sl;exports.compareProviders=hr;exports.countTokens=Sr;exports.createAdapterContext=vi;exports.createDelegateTool=Qh;exports.createGlobalSettingsStore=Go;exports.createHandler=Bi;exports.createPluginProviderFactory=tc;exports.createProvider=pt;exports.createRemoteProviderFactory=Yd;exports.createScopedAdapterStore=wi;exports.createTokenCounter=zo;exports.createUiServerRuntime=Dd;exports.createWorkInstruction=yh;exports.createWorkInstructionBatch=_h;exports.defaultExtractText=Si;exports.defaultFsAdapter=zt;exports.defaultParseEvent=qe;exports.defineChannelAdapter=zy;exports.defineChannelAdapterPlugin=Gy;exports.escapeHandlebarsHelper=mi;exports.extractLegacyWorkflowRunId=Ba;exports.formatDisplayTimestamp=pi;exports.formatFileSizeHelper=hi;exports.formatTimestamp=ui;exports.formatTimestampHelper=yi;exports.generateFingerprint=mp;exports.generateId=Qe;exports.getAntigravityModels=$o;exports.getClaudeModels=In;exports.getCodexModels=Uo;exports.getCopilotModels=jo;exports.getCrewxHome=Wi;exports.getProviderModels=dt;exports.getSyncWindowStore=_p;exports.hashUiDefinition=rr;exports.hashWorkspaceId=ao;exports.initModelsRemote=Mh;exports.initPricingRemote=xh;exports.isAllowedLocalServerIp=Md;exports.isReservedWiBoardId=cc;exports.lengthHelper=gi;exports.loadYamlFile=Or;exports.materializeWindowsSpawnProgram=$t;exports.mergeAdditionalArgs=Ea;exports.mergeModels=Sn;exports.migrateGrokLegacyMode=jn;exports.normalizeClaudeMode=Ht;exports.normalizeInputBudgetProvider=Ho;exports.normalizeProviderId=Bh;exports.normalizeWorkspacePath=Fi;exports.parseLocalServerBaseUrl=fn;exports.parseOverdriveProfile=Vr;exports.parseOverdriveSignal=di;exports.parseStdoutEvent=Ln;exports.parseUsage=lt;exports.parseYamlContent=Cr;exports.probeLocalServer=kc;exports.providerRank=hs;exports.queryAcpProviderMeta=Ac;exports.queryAllAcpProviderMetas=Gh;exports.queryAllCliProviderMetas=Xh;exports.queryOpencodeModels=Ic;exports.redactTechnicalMessage=ws;exports.registerAcpProviders=Jd;exports.registerApiProviders=Wd;exports.registerProviderFactory=ut;exports.resolveAgent=Nr;exports.resolveAgentSkills=Uh;exports.resolveCatalogModelId=Tn;exports.resolveCrewxCli=Zh;exports.resolveCrewxWorkspace=ey;exports.resolveDefaultAgentsYaml=Vo;exports.resolveInputBudget=Pr;exports.resolveOverdrive=ci;exports.resolveTemplatesPath=en;exports.resolveTokenizerMetadata=Ir;exports.resolveUiEffectiveCapabilities=co;exports.resolveWiBoards=Jm;exports.resolveWindowsExecutablePath=Jl;exports.resolveWindowsSpawnProgram=jt;exports.resolveWorkflowTemplatesPath=Wl;exports.runExecutesParallel=Ay;exports.runInSyncWindow=wp;exports.runQueriesParallel=xy;exports.sanitizeLegacyUiCardText=Yr;exports.sanitizeTemplateMessages=Ai;exports.scanLegacyUiCardAt=Ri;exports.scanLegacyUiCardTags=Kn;exports.selectNextWi=kh;exports.setAuditVerbose=ep;exports.setModelsOverride=Mo;exports.toTaskReader=Wy;exports.toTemplateMessages=Ii;exports.truncateHelper=fi;exports.validateHooksSchema=Hy;