@kodax-ai/kodax 0.7.69 → 0.7.71
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/CHANGELOG.md +187 -1
- package/LICENSE +158 -191
- package/README.md +100 -17
- package/README_CN.md +77 -11
- package/config-templates/integrations/a2a.example.jsonc +62 -18
- package/dist/chunks/{agent-DQRXT6M7.js → agent-X2EWQADL.js} +1 -1
- package/dist/chunks/argument-completer-BLNXDO2F.js +2 -0
- package/dist/chunks/chunk-23X6REO4.js +46 -0
- package/dist/chunks/{chunk-Y4WOTWUC.js → chunk-44QXPEEE.js} +1 -1
- package/dist/chunks/chunk-4DY756KL.js +70 -0
- package/dist/chunks/{chunk-AWMTNUDS.js → chunk-52JSZ77P.js} +1 -1
- package/dist/chunks/{chunk-I4TPQEJN.js → chunk-64NQBOSN.js} +1 -1
- package/dist/chunks/{chunk-URC6ZI6P.js → chunk-A2TFSV5M.js} +1 -1
- package/dist/chunks/{chunk-ZG4DMYBS.js → chunk-A574DBTV.js} +2 -2
- package/dist/chunks/{chunk-VAZ25MDX.js → chunk-F7KGYHJ3.js} +2 -2
- package/dist/chunks/{chunk-M7TCFYTO.js → chunk-GVTM4Z6O.js} +66 -22
- package/dist/chunks/{chunk-PA76WUBL.js → chunk-PHH4TRGF.js} +2 -2
- package/dist/chunks/chunk-PVUXONQB.js +366 -0
- package/dist/chunks/{chunk-WW2O2DEP.js → chunk-SX2WFHIS.js} +1 -1
- package/dist/chunks/{chunk-4WIODYOH.js → chunk-T7LYK53M.js} +2 -2
- package/dist/chunks/{chunk-F7C7J6IM.js → chunk-VRSVNU2Y.js} +3 -3
- package/dist/chunks/chunk-Y5XKAN7C.js +755 -0
- package/dist/chunks/{chunk-NGJURAY5.js → chunk-Z535BARK.js} +4 -4
- package/dist/chunks/chunk-ZJIMT5I3.js +78 -0
- package/dist/chunks/compaction-config-5KKKXYFT.js +2 -0
- package/dist/chunks/{construction-bootstrap-GH6RW6ST.js → construction-bootstrap-OXDDDW6O.js} +1 -1
- package/dist/chunks/{dist-DRBKYVHF.js → dist-GOUP4YVE.js} +1 -1
- package/dist/chunks/{dist-RWL2RBO4.js → dist-IXJRJ27U.js} +1 -1
- package/dist/chunks/host-VRKDAN26.js +2 -0
- package/dist/chunks/run-manager-Z3W6MDO7.js +2 -0
- package/dist/chunks/{utils-QYE5Y73D.js → utils-CFOXDCB5.js} +1 -1
- package/dist/index.d.ts +18 -18
- package/dist/index.js +6 -6
- package/dist/kodax_cli.js +1365 -1296
- package/dist/provider-capabilities.json +101 -57
- package/dist/runtime-worker.js +1224 -1156
- package/dist/sdk-a2a.d.ts +187 -22
- package/dist/sdk-a2a.js +8 -7
- package/dist/sdk-agent.d.ts +49 -20
- package/dist/sdk-agent.js +1 -1
- package/dist/sdk-coding.d.ts +33 -25
- package/dist/sdk-coding.js +1 -1
- package/dist/sdk-experimental-memory.d.ts +1 -1
- package/dist/sdk-experimental-memory.js +1 -1
- package/dist/sdk-llm.d.ts +7 -7
- package/dist/sdk-llm.js +1 -1
- package/dist/sdk-mcp.d.ts +2 -2
- package/dist/sdk-mcp.js +1 -1
- package/dist/sdk-media.d.ts +1 -1
- package/dist/sdk-media.js +1 -1
- package/dist/sdk-repl.d.ts +17 -17
- package/dist/sdk-repl.js +1 -1
- package/dist/sdk-runtime.d.ts +96 -17
- package/dist/sdk-runtime.js +1 -1
- package/dist/sdk-session.d.ts +7 -7
- package/dist/sdk-session.js +1 -1
- package/dist/sdk-skills.js +1 -1
- package/dist/semantic-worker.js +10 -10
- package/dist/types-chunks/{base.d-CYjtB68X.d.ts → base.d-Cz_rwpOi.d.ts} +2 -1
- package/dist/types-chunks/{bash-prefix-extractor.d-BkIA8Wto.d.ts → bash-prefix-extractor.d-YoiZl5yt.d.ts} +15 -5
- package/dist/types-chunks/{capability-learning.d-WtsyRv3O.d.ts → capability-learning.d-_lR0J4iR.d.ts} +1 -1
- package/dist/types-chunks/{capability.d-3C62G8Eq.d.ts → capability.d-K664nHOS.d.ts} +21 -6
- package/dist/types-chunks/{capsule.d-xJvfh4YR.d.ts → capsule.d-CK5Pfz1k.d.ts} +3 -3
- package/dist/types-chunks/{commands.d-DkPfcQWG.d.ts → commands.d-D6g2jq8V.d.ts} +4 -4
- package/dist/types-chunks/{guardrail.d-R7AiGfrI.d.ts → guardrail.d-DdeDWnVu.d.ts} +3 -3
- package/dist/types-chunks/{guardrail.d-6ZDbNbHO.d.ts → guardrail.d-DilYC1dh.d.ts} +1 -1
- package/dist/types-chunks/{manager.d-CoEuPRAo.d.ts → manager.d-B67TmPO1.d.ts} +27 -3
- package/dist/types-chunks/{public-api.d-7G4--RZE.d.ts → public-api.d-BvCp5VkW.d.ts} +3 -3
- package/dist/types-chunks/{resolver.d-CIVoGc97.d.ts → resolver.d-ssgNSlrh.d.ts} +2 -2
- package/dist/types-chunks/{run-manager.d-BaXtkryp.d.ts → run-manager.d-DxU3SSGR.d.ts} +1 -1
- package/dist/types-chunks/{sdk-session-BQccrODn.d.ts → sdk-session-wGpa7X_U.d.ts} +4 -4
- package/dist/types-chunks/{types.d-CJR7t6iW.d.ts → types.d-CEZZSY9s.d.ts} +2 -2
- package/dist/types-chunks/{types.d-BtC4yLYO.d.ts → types.d-CRCaLt_s.d.ts} +55 -7
- package/dist/types-chunks/{types.d-TTvpAGWf.d.ts → types.d-Cqaw71Ax.d.ts} +4 -2
- package/dist/types-chunks/{types.d-C9YHEAmA.d.ts → types.d-CzsLFqmf.d.ts} +5 -5
- package/dist/types-chunks/{utils.d-BbB5jzi1.d.ts → utils.d-Cb6vdvFM.d.ts} +5 -5
- package/docs/SDK_EMBEDDER_GUIDE.md +357 -55
- package/package.json +5 -2
- package/dist/chunks/argument-completer-RSK6CCGP.js +0 -2
- package/dist/chunks/chunk-NGHQIGVW.js +0 -46
- package/dist/chunks/chunk-PQ3XUSY2.js +0 -357
- package/dist/chunks/chunk-UJEMSPM5.js +0 -78
- package/dist/chunks/chunk-VYKFM3TB.js +0 -751
- package/dist/chunks/chunk-Z4PPLJF2.js +0 -60
- package/dist/chunks/compaction-config-ABLL6UH3.js +0 -2
- package/dist/chunks/host-7SAB4WEC.js +0 -2
- package/dist/chunks/run-manager-XMDKTONJ.js +0 -2
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
+
import{Bb as Jr,Cb as zr,Db as Vr,Eb as Gr,Fb as Qr,Gb as Yr,Hb as Et,Xb as Zr,Yb as eo,zb as Wr}from"./chunk-Z535BARK.js";import{j as Lr,k as jr,m as Nr,n as qr,s as Kr,t as Xr,x as Br,xa as Ur}from"./chunk-F7KGYHJ3.js";import{K as Pt,M as Fr,T as Hr,U as $r,m as bt}from"./chunk-GVTM4Z6O.js";import{e as _r,t as Mr}from"./chunk-A574DBTV.js";import{nc as Or,od as It,tb as hn,yc as Ve}from"./chunk-PVUXONQB.js";import{a as ht,c as Ne,wa as br,ya as Nn}from"./chunk-ZJIMT5I3.js";import{La as Fn,Ma as Er,Oa as wn,Qd as Tr,Ud as Ar,Vd as Cr,lc as St,tc as kt}from"./chunk-Y5XKAN7C.js";import{D as Dr,T as xr,V as vt,a as Pr,b as te}from"./chunk-52JSZ77P.js";import{a as o}from"./chunk-ONUPGMER.js";import{createHash as Hc,randomUUID as Ie}from"node:crypto";import*as C from"node:fs";import Ws from"node:os";import j from"node:path";import{createHash as ia}from"node:crypto";import ye from"node:fs";import Re from"node:path";function Ge(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}o(Ge,"isRecord");function no(e){return Ge(e)?typeof e.agentId=="string"&&typeof e.displayName=="string"&&(e.managementOwner===void 0||typeof e.managementOwner=="string"&&e.managementOwner.length>0)&&typeof e.enabled=="boolean"&&typeof e.executorId=="string"&&(e.protocol==="a2a"||e.protocol==="mcp"||e.protocol==="http")&&typeof e.configurationRevision=="string"&&typeof e.endpointIdentityHash=="string"&&Ge(e.capabilities)&&Ge(e.effects):!1}o(no,"isRegistration");function sa(e){return Ge(e)?typeof e.taskId=="string"&&(e.route==="local"||e.route==="external")&&typeof e.agentId=="string"&&typeof e.objective=="string"&&typeof e.state=="string"&&typeof e.cancellation=="string"&&Ge(e.registration)&&typeof e.idempotencyKey=="string"&&typeof e.dispatchAttempt=="number"&&typeof e.createdAt=="string"&&typeof e.updatedAt=="string":!1}o(sa,"isTask");function aa(e){return Ge(e)?typeof e.taskId=="string"&&Number.isSafeInteger(e.seq)&&typeof e.timestamp=="string"&&typeof e.type=="string":!1}o(aa,"isEvent");function ro(e){try{return JSON.parse(ye.readFileSync(e,"utf8"))}catch(n){let t=n instanceof Error?n.message:String(n);throw new Error(`Failed to parse Runtime agent store file ${e}: ${t}`)}}o(ro,"parseJson");function to(e,n){if(!ye.existsSync(e))return[];let t=ro(e);if(!Array.isArray(t)||!t.every(n))throw new Error(`Runtime agent store file has an invalid array shape: ${e}`);return structuredClone(t)}o(to,"readList");function Dt(e,n){ye.mkdirSync(Re.dirname(e),{recursive:!0});let t=`${e}.${process.pid}.tmp`;ye.writeFileSync(t,`${JSON.stringify(n,null,2)}
|
|
3
|
+
`,{encoding:"utf8",mode:384}),ye.renameSync(t,e)}o(Dt,"writeJsonAtomic");function Hn(e,n){let t=ia("sha256").update(n).digest("hex");return Re.join(e,t)}o(Hn,"taskDirectory");function da(e,n){if(!ye.existsSync(e))return[];let t=ye.readFileSync(e,"utf8").trim();if(!t)return[];let r=0;return t.split(/\r?\n/).map((i,s)=>{let c;try{c=JSON.parse(i)}catch(m){let f=m instanceof Error?m.message:String(m);throw new Error(`Invalid Runtime agent event at ${e}:${s+1}: ${f}`)}if(!aa(c))throw new Error(`Invalid Runtime agent event shape at ${e}:${s+1}`);if(c.taskId!==n)throw new Error(`Runtime agent event taskId does not match its ledger at ${e}:${s+1}`);if(c.seq<=r)throw new Error(`Runtime agent events require a strictly increasing positive sequence at ${e}:${s+1}`);return r=c.seq,c})}o(da,"readEvents");function oo(e){let n=Re.resolve(e),t=Re.join(n,"registrations.json"),r=Re.join(n,"task-registration-snapshots.json"),i=Re.join(n,"tasks");return{async loadRegistrations(){return to(t,no)},async saveRegistrations(s){Dt(t,s)},async loadTaskRegistrationSnapshots(){return to(r,no)},async saveTaskRegistrationSnapshots(s){Dt(r,s)},async loadTasks(){if(!ye.existsSync(i))return[];let s=[];for(let m of ye.readdirSync(i,{withFileTypes:!0})){if(!m.isDirectory())continue;let f=Re.join(i,m.name,"snapshot.json");if(!ye.existsSync(f))continue;let d=ro(f);if(!sa(d))throw new Error(`Invalid Runtime agent task shape: ${f}`);s.push({directoryName:m.name,file:f,task:d})}let c=new Set;for(let{task:m}of s){if(c.has(m.taskId))throw new Error(`Duplicate Runtime agent taskId: ${m.taskId}`);c.add(m.taskId)}for(let{directoryName:m,file:f,task:d}of s){let u=Re.basename(Hn(i,d.taskId));if(m!==u)throw new Error(`Runtime agent task directory does not match taskId hash: ${f}`)}return s.map(({task:m})=>m)},async saveTask(s){Dt(Re.join(Hn(i,s.taskId),"snapshot.json"),s)},async loadEvents(s){return da(Re.join(Hn(i,s),"events.jsonl"),s)},async appendEvent(s){let c=Re.join(Hn(i,s.taskId),"events.jsonl");ye.mkdirSync(Re.dirname(c),{recursive:!0}),ye.appendFileSync(c,`${JSON.stringify(s)}
|
|
4
|
+
`,{encoding:"utf8",mode:384})}}}o(oo,"createRuntimeAgentExecutorPlaneStore");import{createHash as yo,randomUUID as $n}from"node:crypto";import Qe from"node:fs";import{mkdir as wo,readFile as ho}from"node:fs/promises";import z from"node:path";var vo=["read","grep","glob"],So=["write","edit","multi_edit","insert_after_anchor"],ko=["mcp_search","mcp_describe","mcp_call","mcp_read_resource","mcp_get_prompt"],ua=["list_dispatchable_agents","dispatch_child_task","task_output","task_stop","send_message"],ca=new Set([...vo,...So]),la=new Set([".ssh",".aws",".azure",".gnupg",".kodax",".agents"]),ma=new Set([".env",".npmrc",".pypirc","credentials","id_rsa","id_ed25519"]);function Tt(e){return Array.isArray(e)?e.map(Tt):e===null||typeof e!="object"?e:Object.fromEntries(Object.entries(e).sort(([n],[t])=>n.localeCompare(t)).map(([n,t])=>[n,Tt(t)]))}o(Tt,"canonicalValue");function Fe(e){return yo("sha256").update(JSON.stringify(Tt(e))).digest("hex")}o(Fe,"stableHash");function Io(e){let n=yo("sha256");for(let t of e)n.update(t);return n.digest("hex")}o(Io,"hashParts");function qn(e,n){let t=z.relative(z.resolve(e),z.resolve(n));return t===""||!t.startsWith("..")&&!z.isAbsolute(t)}o(qn,"isInside");function At(e){if(!Qe.existsSync(e))return 0;let n=0;for(let t of Qe.readdirSync(e,{withFileTypes:!0})){let r=z.join(e,t.name);t.isSymbolicLink()||(t.isDirectory()?n+=At(r):t.isFile()&&(n+=Qe.statSync(r).size))}return n}o(At,"directoryBytes");function io(e){if(e!==void 0){if(!Number.isSafeInteger(e)||e<=0)throw new Error("Runtime workspace byte limit must be positive.");return e}}o(io,"validateWorkspaceByteLimit");function xt(e){if(e.mode==="managed")return{mode:"managed"};if(!z.isAbsolute(e.root))throw new Error("Fixed Runtime workspace root must be absolute.");return{mode:"fixed",root:z.resolve(e.root)}}o(xt,"normalizedWorkspace");function Ct(e,n,t=!0){if(!Array.isArray(e)||!t&&e.length===0)throw new Error(`${n} must be ${t?"an":"a non-empty"} array.`);let r=e.map(i=>{if(typeof i!="string"||i.trim().length===0||i.includes("*"))throw new Error(`${n} must contain exact names without wildcards.`);return i.trim()});if(new Set(r).size!==r.length)throw new Error(`${n} contains duplicates.`);return r.sort()}o(Ct,"exactList");function so(e,n){if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`${n} must be an object.`);return Object.fromEntries(Object.entries(e).sort(([t],[r])=>t.localeCompare(r)).map(([t,r])=>{if(!t||t.includes("*"))throw new Error(`${n} keys must be exact names.`);return[t,Ct(r,`${n}.${t}`,!1)]}))}o(so,"exactMap");function ao(e){if(!["none","read","write"].includes(e?.workspace))throw new Error("Runtime toolPolicy.workspace is invalid.");if(!["deny","isolated"].includes(e?.process))throw new Error("Runtime toolPolicy.process is invalid.");if(!["deny","inherit"].includes(e?.subagents))throw new Error("Runtime toolPolicy.subagents is invalid.");let n=e?.network;if(!n||n.mode!=="deny"&&n.mode!=="allowlist")throw new Error("Runtime toolPolicy.network is invalid.");let t=n.mode==="deny"?{mode:"deny"}:{mode:"allowlist",origins:Ct(n.origins,"Runtime toolPolicy.network.origins").map(s=>{let c=new URL(s);if(!["http:","https:"].includes(c.protocol)||c.origin!==s)throw new Error("Runtime network authority must be an exact HTTP(S) origin.");return c.origin})},r=so(e.skillScripts,"Runtime toolPolicy.skillScripts"),i=Object.values(r).reduce((s,c)=>s+c.length,0);if(e.process==="deny"!=(i===0))throw new Error("Runtime isolated process authority and skillScripts must be enabled together.");return{workspace:e.workspace,process:e.process,network:t,tools:Ct(e.tools,"Runtime toolPolicy.tools"),mcp:so(e.mcp,"Runtime toolPolicy.mcp"),skillScripts:r,subagents:e.subagents}}o(ao,"validatedToolPolicy");function pa(e){return e==="project"?"workspace":e}o(pa,"skillSource");function fa(e){return[...(e.scripts??[]).map(n=>({...n,relativePath:`scripts/${n.relativePath}`})),...(e.references??[]).map(n=>({...n,relativePath:`references/${n.relativePath}`})),...(e.assets??[]).map(n=>({...n,relativePath:`assets/${n.relativePath}`})),...(e.templates??[]).map(n=>({...n,relativePath:`templates/${n.relativePath}`})),...(e.resources??[]).map(n=>({...n,relativePath:`resources/${n.relativePath}`}))].sort((n,t)=>n.relativePath.localeCompare(t.relativePath))}o(fa,"skillFiles");async function ga(e){let n=[e.name,e.rawContent];for(let t of fa(e))n.push(t.relativePath,await ho(t.path));return Io(n)}o(ga,"skillRevision");var Ot=class{static{o(this,"PinnedSkillRegistry")}#n;#e;constructor(n,t){this.#n=n,this.#e=new Map(t.map(r=>[r.name,r]))}get skills(){return this.#e}get size(){return this.#e.size}async discover(){}get(n){return this.#e.get(n)}has(n){return this.#e.has(n)}list(){return[...this.#e.values()]}listUserInvocable(){return this.list().filter(n=>n.userInvocable)}async loadFull(n){if(!this.has(n))throw new Error(`Skill not admitted by Runtime binding: ${n}`);return this.#n.loadFull(n)}async invoke(n,t,r){return this.has(n)?this.#n.invoke(n,t,r):{success:!1,content:"",error:`Skill not admitted: ${n}`}}async reload(){throw new Error("A bound Skill registry is immutable; create a new Runtime binding.")}};async function bo(e){let n=e.workspace.mode==="fixed"?e.workspace.root:void 0,t=Dr(n),r=t.userPaths.filter(d=>z.basename(z.dirname(d))===".agents"),i=new xr(n,{projectPaths:e.workspace.mode==="managed"?[]:t.projectPaths,userPaths:[z.join(e.configHome,"skills"),...r],pluginPaths:t.pluginPaths,builtinPath:t.builtinPath});await i.discover();let s=i.list(),m=e.selection===void 0||e.selection.includes("*")?s.filter(d=>d.source!=="project"&&!d.disableModelInvocation):e.selection.map(d=>{let u=i.get(d);if(!u)throw new Error(`Markdown Agent requires unknown Skill "${d}".`);if(u.disableModelInvocation)throw new Error(`Skill "${d}" disables model invocation.`);return u}),f=[];for(let d of m.sort((u,a)=>u.name.localeCompare(a.name))){let u=await ga(await i.loadFull(d.name));f.push({name:d.name,source:pa(d.source),revision:u})}return{registry:new Ot(i,m),refs:f,revision:Fe(f)}}o(bo,"resolveSkills");function Ra(e,n,t){let r={none:0,read:1,write:2};if(r[n.workspaceEffect]>r[t.workspace])throw new Error(`Remote tool "${e}" requires broader workspace access.`);let i=new Set(t.network.mode==="allowlist"?t.network.origins:[]);if(n.networkOrigins.some(s=>!i.has(new URL(s).origin)))throw new Error(`Remote tool "${e}" requires a network origin outside toolPolicy.`)}o(Ra,"validateRemoteContract");function uo(e){let n=new Set;e.policy.workspace!=="none"&&vo.forEach(s=>n.add(s)),e.policy.workspace==="write"&&So.forEach(s=>n.add(s)),e.hasSkills&&n.add("skill"),e.hasSkillScripts&&n.add("run_skill_script"),Object.keys(e.policy.mcp).length>0&&ko.forEach(s=>n.add(s)),e.policy.subagents==="inherit"&&ua.forEach(s=>n.add(s));let t=new Map(It().map(s=>[s.name,s])),r=new Map;for(let s of e.policy.tools){let c=t.get(s)?.remoteContract;if(!c)throw new Error(`Tool "${s}" has no Runtime remote contract.`);Ra(s,c,e.policy),r.set(s,c),n.add(s)}let i=new Map;for(let s of n){let c=t.get(s);if(!c)throw new Error(`Runtime tool is unavailable: ${s}.`);if(!r.has(s)&&c.source.kind!=="builtin")throw new Error(`Native Runtime tool "${s}" is shadowed by a non-builtin registration.`);i.set(s,c.registrationId)}if(e.declared!==void 0){let s=e.declared.filter(m=>!n.has(m));if(s.length>0)throw new Error(`Markdown Agent tools are denied by remote policy: ${s.join(", ")}.`);let c=[...new Set(e.declared)].sort();return{tools:c,contracts:r,registrations:new Map(c.map(m=>[m,i.get(m)]))}}return{tools:[...n].sort(),contracts:r,registrations:i}}o(uo,"resolveToolSurface");function co(e,n){return e.length===0?`## Available Skills
|
|
5
|
+
|
|
6
|
+
No Skills are admitted for this deployment.`:["## Available Skills","","Invoke a matching Skill with the `skill` tool before completing that work.",...e.map(t=>`- ${t.name}: ${n.get(t.name)?.description??""}`)].join(`
|
|
7
|
+
`)}o(co,"skillsPrompt");function lo(e,n){let r=z.relative(n,e).split(z.sep).map(i=>i.toLowerCase());return r.some(i=>la.has(i))||r.some(i=>ma.has(i)||i.startsWith(".env."))}o(lo,"sensitivePath");function ya(e){let n=e;for(;!Qe.existsSync(n);){let t=z.dirname(n);if(t===n)throw new Error("Tool path has no existing parent.");n=t}return n}o(ya,"nearestExistingPath");function wa(e,n){let t=Qe.realpathSync(e),r=ya(n),i=Qe.realpathSync(r);if(!qn(t,i))throw new Error("Tool path escapes the bound workspace through a link.");let s=z.resolve(i,z.relative(r,n));if(!qn(t,s))throw new Error("Tool path escapes the bound workspace through a link.");return{root:t,candidate:s}}o(wa,"resolveRealToolPath");function vn(e,n){if(n===void 0)return;if(typeof n!="string"||n.trim().length===0)throw new Error("Tool path must be a string.");let t=z.resolve(e,n);if(!qn(e,t))throw new Error("Tool path escapes the bound workspace.");let r=wa(e,t);if(lo(t,e)||lo(r.candidate,r.root))throw new Error("Secret-bearing paths are unavailable to remote Agents.");return t}o(vn,"resolveToolPath");function mo(){return{beforeToolExecute:o(async()=>!0,"beforeToolExecute")}}o(mo,"remoteRunEvents");function ha(e,n,t){if(!ko.includes(e))return;if(e==="mcp_search"){let d=n.server;if(typeof d!="string"||t.mcp[d]===void 0)throw new Error("MCP search requires an explicitly admitted server.");return}let r=n.id;if(typeof r!="string")throw new Error("MCP calls require a canonical capability id.");let i=/^mcp:([^:]+):(tool|resource|prompt):(.+)$/.exec(r);if(!i)throw new Error("MCP capability id is invalid.");let[,s,c,m]=i,f=t.mcp[s??""]??[];if(c==="tool"&&!f.includes(m??""))throw new Error("MCP tool is not admitted by the remote policy.");if(c!=="tool"&&!f.includes(m??""))throw new Error("MCP capability is not admitted by the remote policy.")}o(ha,"authorizeMcp");function va(e){return{async resolveReadablePath(n){return vn(e,n)??e},async stageOutput(n){let t=$n(),r=z.basename(n).replace(/[^A-Za-z0-9._-]/g,"_")||"output",i=z.join(e,".kodax-a2a-staging",`${t}-${r}`);return await wo(z.dirname(i),{recursive:!0}),{stagingId:t,path:vn(e,i)??i}}}}o(va,"workspaceBroker");function po(e,n){return{kind:"tool",name:`runtime-remote-policy:${e.bindingId}`,async beforeTool(t,r){try{if(e.workspaceByteLimit!==void 0&&At(n)>e.workspaceByteLimit)throw new Error("Remote workspace byte quota is already exceeded.");if(!e.effectiveTools.includes(t.name))throw new Error("Tool is outside the bound surface.");if(It().find(c=>c.name===t.name)?.registrationId!==e.toolRegistrations.get(t.name))throw new Error("Tool registration changed after the Runtime binding was prepared.");if(ca.has(t.name)){let c=(t.name==="grep"||t.name==="glob","path");vn(n,t.input[c])}ha(t.name,t.input,e.toolPolicy);let s=e.remoteContracts.get(t.name);if(s){let c=await s.authorizeCall(t.input,{workspaceAccess:e.toolPolicy.workspace,allowedNetworkOrigins:e.toolPolicy.network.mode==="allowlist"?e.toolPolicy.network.origins:[],workspace:va(n),signal:r.abortSignal??new AbortController().signal});if(!c.allowed)throw new Error(c.reason);return{action:"rewrite",payload:{...t,input:c.input}}}return{action:"allow"}}catch(i){return{action:"block",reason:i instanceof Error?i.message:String(i)}}},async afterTool(){return e.workspaceByteLimit!==void 0&&At(n)>e.workspaceByteLimit?{action:"block",reason:"Remote workspace byte quota exceeded."}:{action:"allow"}}}}o(po,"createToolGuardrail");async function fo(e,n,t){let r=await e.sessions.load(t),i=r.workspaceRoot??r.gitRoot;if(!i)throw new Error("Remote Runtime session has no bound workspace.");if(n.workspace.mode==="fixed"&&z.resolve(i)!==n.workspace.root)throw new Error("Runtime session workspace does not match the fixed binding.");if(n.workspace.mode==="managed"&&!qn(e.managedWorkspaceRoot,i))throw new Error("Runtime session workspace is outside the managed A2A root.");return z.resolve(i)}o(fo,"requiredWorkspaceRoot");async function go(e,n,t){let r=t.mode==="fixed"?t.root:e.managedWorkspaceRoot,i=await Or({cwd:r,configHome:e.configHome,userOnly:!0}),s=i.loaded.find(f=>f.name===n.name&&f.source==="markdown:user"),c=i.scope.resolve(n.name);if(!s||!c||c.source!=="markdown:user"){await i.dispose();let f=i.failed.find(d=>z.basename(d.path,".md")===n.name);throw new Error(f?.reason??`User Markdown Agent not found: ${n.name}`)}let m=Io([await ho(s.path)]);try{let f=await bo({configHome:e.configHome,workspace:t,selection:s.requestedSkills});return{scope:i.scope,loaded:s,configurationRevision:m,skills:f}}catch(f){throw await i.dispose(),f}}o(go,"localAgentResources");function Ro(e,n){return{ref:e,agentId:`markdown:user:${e.name}`,displayName:e.name,description:n.loaded.description,configurationRevision:n.configurationRevision,effectiveSkills:n.skills.refs,skillSetRevision:n.skills.revision}}o(Ro,"resolvedLocal");function Po(e){let n=new Map,t=new Map,r=o(c=>{let m=n.get(c);if(!m)throw new Error("Runtime Agent owner session is not active.");return m},"requireOwner"),i=o((c,m)=>{let f=t.get(m);if(!f||f.ownerSessionId!==c)throw new Error("Runtime Agent binding not found.");return f},"requireBinding"),s=o(async c=>{t.delete(c.bindingId),n.get(c.ownerSessionId)?.delete(c.bindingId),c.scope?.dispose(),await c.skillScriptRunner?.dispose()},"release");return{async resolveLocal(c){let m=xt(c.workspace),f=await go(e,c.ref,m);try{return Ro(c.ref,f)}finally{f.scope.dispose()}},async openOwnerSession(){let c=$n();return n.set(c,new Set),{ownerSessionId:c}},async bindDefault(c){let m=r(c.ownerSessionId),f=xt(c.workspace),d=ao(c.toolPolicy),u=io(c.workspaceByteLimit),a=await bo({configHome:e.configHome,workspace:f}),g=Object.keys(d.skillScripts).length>0,l=uo({policy:d,hasSkills:a.refs.length>0,hasSkillScripts:g}),y=g?await e.createSkillScriptRunner?.({registry:a.registry,admissions:d.skillScripts,workspaceAccess:d.workspace,network:d.network,workspaceByteLimit:u}):void 0;if(g&&!y)throw new Error("Runtime isolated Skill script backend is unavailable.");let v=$n(),p=Fe(d),h=Fe(f),k=Fe({kind:"runtime-default",profileId:c.profileId,toolPolicyRevision:p,workspaceBindingRevision:h,skillSetRevision:a.revision,provider:e.defaultProvider,model:e.defaultModel,tools:l.tools,workspaceByteLimit:u});if(c.expectedExecutionPolicyRevision&&c.expectedExecutionPolicyRevision!==k)throw await y?.dispose(),new Error("Runtime default execution policy revision changed.");let P={ownerSessionId:c.ownerSessionId,bindingId:v,kind:"runtime-default",executionPolicyRevision:k,toolPolicyRevision:p,workspaceBindingRevision:h,workspace:f,toolPolicy:d,effectiveTools:l.tools,effectiveSkills:a.refs,skillSetRevision:a.revision,skillRegistry:a.registry,skillScriptRunner:y,remoteContracts:l.contracts,toolRegistrations:l.registrations,workspaceByteLimit:u};return t.set(v,P),m.add(v),{ownerSessionId:c.ownerSessionId,bindingId:v,executionPolicyRevision:k,toolPolicyRevision:p,workspaceBindingRevision:h,skillSetRevision:a.revision,effectiveSkills:a.refs,effectiveTools:l.tools}},async startDefault(c){let m=i(c.ownerSessionId,c.bindingId);if(m.kind!=="runtime-default")throw new Error("Runtime Agent binding kind mismatch.");if(m.executionPolicyRevision!==c.expectedExecutionPolicyRevision)throw new Error("Runtime default execution policy revision changed.");let f=await fo(e,m,c.sessionId);return e.runs.start({sessionId:c.sessionId,input:c.input,permissionBroker:c.permissionBroker,agentContext:c.agentContext,options:{context:{executionCwd:f,gitRoot:f,managedTaskWorkspaceDir:f,toolVisibilityPolicy:o(d=>m.effectiveTools.includes(d.name),"toolVisibilityPolicy"),skillRegistry:m.skillRegistry,skillScriptRunner:m.skillScriptRunner,assertReadablePath:o(d=>{vn(f,d)},"assertReadablePath"),skillsPrompt:co(m.effectiveSkills,m.skillRegistry)},skillDynamicContext:{disable:!0},guardrails:[po(m,f)],events:mo()}})},async bindLocal(c){let m=r(c.ownerSessionId),f=xt(c.workspace),d=ao(c.toolPolicy),u=io(c.workspaceByteLimit),a=await go(e,c.ref,f),g=Ro(c.ref,a);if(c.expectedConfigurationRevision&&c.expectedConfigurationRevision!==g.configurationRevision)throw a.scope.dispose(),new Error("User Markdown Agent configuration revision changed.");let l=uo({declared:a.loaded.effectiveTools,policy:d,hasSkills:a.skills.refs.length>0,hasSkillScripts:Object.keys(d.skillScripts).length>0}),y=Object.keys(d.skillScripts).length>0,v=y?await e.createSkillScriptRunner?.({registry:a.skills.registry,admissions:d.skillScripts,workspaceAccess:d.workspace,network:d.network,workspaceByteLimit:u}):void 0;if(y&&!v)throw a.scope.dispose(),new Error("Runtime isolated Skill script backend is unavailable.");let p=$n(),h=Fe(d),k=Fe(f),P=Fe({kind:"local-agent",profileId:c.profileId,configurationRevision:g.configurationRevision,toolPolicyRevision:h,workspaceBindingRevision:k,skillSetRevision:a.skills.revision,tools:l.tools,workspaceByteLimit:u});if(c.expectedExecutionPolicyRevision&&c.expectedExecutionPolicyRevision!==P)throw await v?.dispose(),a.scope.dispose(),new Error("Local Agent execution policy revision changed.");let w=a.scope.resolve(c.ref.name)?.agent;if(!w)throw await v?.dispose(),a.scope.dispose(),new Error(`User Markdown Agent not found: ${c.ref.name}`);let S={ownerSessionId:c.ownerSessionId,bindingId:p,kind:"local-agent",executionPolicyRevision:P,toolPolicyRevision:h,workspaceBindingRevision:k,workspace:f,toolPolicy:d,effectiveTools:l.tools,effectiveSkills:a.skills.refs,skillSetRevision:a.skills.revision,skillRegistry:a.skills.registry,skillScriptRunner:v,remoteContracts:l.contracts,toolRegistrations:l.registrations,workspaceByteLimit:u,scope:a.scope,loadedAgent:a.loaded,agent:w,configurationRevision:a.configurationRevision};return t.set(p,S),m.add(p),{...g,ownerSessionId:c.ownerSessionId,bindingId:p,executionPolicyRevision:P,toolPolicyRevision:h,workspaceBindingRevision:k,effectiveTools:l.tools}},async startLocal(c){let m=i(c.ownerSessionId,c.bindingId);if(m.kind!=="local-agent"||!m.agent||!m.scope)throw new Error("Runtime Agent binding kind mismatch.");if(m.configurationRevision!==c.expectedConfigurationRevision)throw new Error("User Markdown Agent configuration revision changed.");if(m.executionPolicyRevision!==c.expectedExecutionPolicyRevision)throw new Error("Local Agent execution policy revision changed.");let f=await fo(e,m,c.sessionId),d=typeof m.agent.instructions=="string"?m.agent.instructions:m.agent.instructions({});return e.runs.start({sessionId:c.sessionId,input:c.input,permissionBroker:c.permissionBroker,agentContext:c.agentContext,options:{...m.agent.provider?{provider:m.agent.provider}:{},...m.agent.model?{modelOverride:m.agent.model}:{},...m.agent.effort?{effort:m.agent.effort}:{},context:{executionCwd:f,gitRoot:f,managedTaskWorkspaceDir:f,systemPromptOverride:d,agentScope:m.scope,toolVisibilityPolicy:o(u=>m.effectiveTools.includes(u.name),"toolVisibilityPolicy"),skillRegistry:m.skillRegistry,skillScriptRunner:m.skillScriptRunner,assertReadablePath:o(u=>{vn(f,u)},"assertReadablePath"),skillsPrompt:co(m.effectiveSkills,m.skillRegistry)},skillDynamicContext:{disable:!0},guardrails:[po(m,f)],events:mo()}})},async prepareWorkspace(c){let m=i(c.ownerSessionId,c.bindingId);if(m.workspace.mode==="fixed")return m.workspace.root;if(!/^[a-f0-9]{32,64}$/.test(c.contextKey))throw new Error("Managed Runtime workspace context key is invalid.");let f=z.join(e.managedWorkspaceRoot,"contexts",c.contextKey);return await wo(f,{recursive:!0}),f},async releaseBinding(c){r(c.ownerSessionId),await s(i(c.ownerSessionId,c.bindingId))},async closeOwnerSession(c){let m=r(c);for(let f of[...m])await s(i(c,f));n.delete(c)}}}o(Po,"createRuntimeAgentBindingService");import{spawn as Sa,spawnSync as ka}from"node:child_process";import{randomUUID as Lt}from"node:crypto";import{constants as Ia,readdirSync as ba,statSync as Pa}from"node:fs";import{copyFile as To,lstat as Ea,mkdir as He,readFile as jt,realpath as Sn,rm as Kn,stat as Bn,writeFile as Nt}from"node:fs/promises";import{createRequire as Da}from"node:module";import Ao from"node:os";import H from"node:path";import{pathToFileURL as xa}from"node:url";import{SandboxManager as _t,getWindowsSandboxUserStatus as Ta,installWindowsSandbox as op,verifyWindowsWfpEgress as Aa}from"@anthropic-ai/sandbox-runtime";var Xn="0.0.65",Eo=1048576,Ca=12e4,Co=Da(import.meta.url),Oa=process.env.KODAX_BUNDLED==="true"?void 0:xa(Co.resolve("@anthropic-ai/sandbox-runtime")).href,_a=new Set([".ssh",".aws",".azure",".gnupg",".kodax",".agents"]),Ma=new Set([".env",".npmrc",".pypirc","credentials","id_rsa","id_ed25519"]),La=JSON.stringify(Er),Do=JSON.stringify(Fn),ja=String.raw`
|
|
8
|
+
import { spawn } from 'node:child_process';
|
|
9
|
+
import { readFile } from 'node:fs/promises';
|
|
10
|
+
const { SandboxManager } = await import(process.argv[1]);
|
|
11
|
+
const request = JSON.parse(await readFile(process.argv[2], 'utf8'));
|
|
12
|
+
const endpoints = new Set(request.endpoints.map((item) => item.host.toLowerCase() + ':' + item.port));
|
|
13
|
+
const callback = request.endpoints.length === 0 ? undefined : async ({ host, port }) => endpoints.has(host.toLowerCase() + ':' + port);
|
|
14
|
+
let child;
|
|
15
|
+
try {
|
|
16
|
+
await SandboxManager.initialize(request.config, callback);
|
|
17
|
+
const quote = (value) => process.platform === 'win32'
|
|
18
|
+
? '"' + value.replaceAll('"', '""') + '"'
|
|
19
|
+
: "'" + value.replaceAll("'", "'\"'\"'") + "'";
|
|
20
|
+
const internalElectronNode = request.command === process.execPath && process.versions.electron !== undefined;
|
|
21
|
+
const childArgs = internalElectronNode
|
|
22
|
+
? ['--import', ${La}, ...request.args]
|
|
23
|
+
: request.args;
|
|
24
|
+
const command = [request.command, ...childArgs].map(quote).join(' ');
|
|
25
|
+
if (process.platform === 'win32') {
|
|
26
|
+
const wrapped = await SandboxManager.wrapWithSandboxArgv(command, 'cmd', undefined, undefined, request.cwd);
|
|
27
|
+
const childEnv = internalElectronNode
|
|
28
|
+
? { ...wrapped.env, [${Do}]: '1' }
|
|
29
|
+
: wrapped.env;
|
|
30
|
+
child = spawn(wrapped.argv[0], wrapped.argv.slice(1), { cwd: request.cwd, env: childEnv, shell: false, stdio: 'inherit' });
|
|
31
|
+
} else {
|
|
32
|
+
const wrapped = await SandboxManager.wrapWithSandbox(command);
|
|
33
|
+
const childEnv = internalElectronNode
|
|
34
|
+
? { ...process.env, [${Do}]: '1' }
|
|
35
|
+
: process.env;
|
|
36
|
+
child = spawn(wrapped, { cwd: request.cwd, env: childEnv, shell: true, stdio: 'inherit' });
|
|
37
|
+
}
|
|
38
|
+
const stop = () => child?.kill('SIGTERM');
|
|
39
|
+
process.once('SIGINT', stop);
|
|
40
|
+
process.once('SIGTERM', stop);
|
|
41
|
+
const code = await new Promise((resolve, reject) => {
|
|
42
|
+
child.once('error', reject);
|
|
43
|
+
child.once('exit', (exitCode, signal) => resolve(signal ? 1 : exitCode ?? 1));
|
|
44
|
+
});
|
|
45
|
+
SandboxManager.cleanupAfterCommand();
|
|
46
|
+
await SandboxManager.reset();
|
|
47
|
+
process.exitCode = code;
|
|
48
|
+
} catch (error) {
|
|
49
|
+
process.stderr.write((error instanceof Error ? error.message : String(error)) + '\n');
|
|
50
|
+
await SandboxManager.reset().catch(() => undefined);
|
|
51
|
+
process.exitCode = 1;
|
|
52
|
+
}
|
|
53
|
+
`,Mt;function xo(e){return e instanceof Error?e.message:String(e)}o(xo,"errorText");async function Na(e={}){return e.refresh&&(Mt=void 0),Mt??=Fa(),Mt}o(Na,"doctorSandboxRuntime");async function Fa(){let e=[];_t.isSupportedPlatform()||e.push(`Unsupported platform: ${process.platform}.`);let n=_t.checkDependencies();e.push(...n.warnings,...n.errors);let t=n.errors.length>0;if(process.env.KODAX_BUNDLED!=="true")try{let c=JSON.parse(await jt(Co.resolve("@anthropic-ai/sandbox-runtime/package.json"),"utf8"));c.version!==Xn&&(t=!0,e.push(`ASRT package version mismatch: expected ${Xn}, found ${String(c.version)}.`))}catch(c){t=!0,e.push(`ASRT package provenance check failed: ${xo(c)}`)}let r=process.env.KODAX_A2A_NODE??(process.env.KODAX_BUNDLED==="true"?"node":process.execPath),i=wn({args:["--version"],env:_o(),isElectron:r===process.execPath&&process.versions.electron!==void 0}),s=ka(r,i.args,{env:i.env,shell:!1,encoding:"utf8",windowsHide:!0,timeout:5e3});if(s.status!==0){t=!0;let c=s.error?.message??(s.stderr.trim()||r);e.push(`JavaScript Skill interpreter is unavailable: ${c}.`)}if(process.platform==="win32")try{let c=Ta();!c.provisioned||!c.credPresent||!c.inSandboxGroup?(t=!0,e.push("Windows sandbox account is not fully provisioned.")):await Aa()}catch(c){t=!0,e.push(xo(c))}return{ready:_t.isSupportedPlatform()&&!t,platform:process.platform,version:Xn,diagnostics:e,setupRequired:t}}o(Fa,"inspectSandboxRuntime");function Oe(e,n){let t=e.replaceAll("\\","/").replace(/^\.\//,"");if(!t||H.posix.isAbsolute(t)||t.split("/").includes(".."))throw new Error(`${n} must be a safe relative path.`);return t}o(Oe,"canonicalRelative");function kn(e,n){let t=H.relative(e,n);return t===""||!t.startsWith("..")&&!H.isAbsolute(t)}o(kn,"isInside");function Oo(e){let n=e.split(H.sep).map(t=>t.toLowerCase());return n.some(t=>_a.has(t))||n.some(t=>Ma.has(t)||t.startsWith(".env."))}o(Oo,"isSensitiveRelative");async function Ha(e,n){await He(n,{recursive:!0,mode:448});let t=[...(e.scripts??[]).map(r=>({folder:"scripts",file:r})),...(e.references??[]).map(r=>({folder:"references",file:r})),...(e.assets??[]).map(r=>({folder:"assets",file:r})),...(e.templates??[]).map(r=>({folder:"templates",file:r})),...(e.resources??[]).map(r=>({folder:"resources",file:r}))];await Nt(H.join(n,"SKILL.md"),await jt(e.skillFilePath),{mode:384});for(let{folder:r,file:i}of t){let s=Oe(i.relativePath,`Skill ${e.name} support file`),c=H.join(n,r,...s.split("/"));await He(H.dirname(c),{recursive:!0,mode:448}),await Nt(c,await jt(i.path),{mode:384})}}o(Ha,"copySkillSnapshot");async function $a(e,n){let t=new Map;for(let[r,i]of Object.entries(e.admissions)){let s=await e.registry.loadFull(r),c=new Map((s.scripts??[]).map(f=>[`scripts/${Oe(f.relativePath,`Skill ${r} script`)}`,f])),m=H.join(n,r.replace(/[^A-Za-z0-9._-]/g,"_"));await Ha(s,m);for(let f of i){let d=Oe(f,`toolPolicy.skillScripts.${r}`);if(!c.has(d))throw new Error(`Skill "${r}" has no script "${d}".`);t.set(`${r}\0${d}`,{skill:r,relativePath:d,snapshotPath:H.join(m,...d.split("/"))})}}return t}o($a,"snapshotAdmissions");function qa(e){return e.mode==="deny"?[]:e.origins.map(n=>{let t=new URL(n);return{host:t.hostname.toLowerCase(),port:t.port?Number(t.port):t.protocol==="https:"?443:80}})}o(qa,"networkEndpoints");function _o(){let e=["PATH","Path","PATHEXT","SystemRoot","COMSPEC","TEMP","TMP","HOME","USERPROFILE","LANG"],n={NO_COLOR:"1"};for(let t of e)process.env[t]!==void 0&&(n[t]=process.env[t]);for(let[t,r]of Object.entries(process.env))t.startsWith("LC_")&&r!==void 0&&(n[t]=r);return n}o(_o,"sanitizedEnvironment");function Ka(e){let n=H.extname(e).toLowerCase();if([".js",".mjs",".cjs"].includes(n))return{command:process.env.KODAX_A2A_NODE??(process.env.KODAX_BUNDLED==="true"?"node":process.execPath),args:[e]};if(n===".py")return{command:process.env.KODAX_A2A_PYTHON??(process.platform==="win32"?"python.exe":"python3"),args:[e]};if(n===".ps1")return{command:process.env.KODAX_A2A_POWERSHELL??(process.platform==="win32"?H.join(process.env.SystemRoot??"C:\\Windows","System32","WindowsPowerShell","v1.0","powershell.exe"):"pwsh"),args:["-NoProfile","-NonInteractive","-File",e]};if(n===".sh"&&process.platform!=="win32")return{command:"/bin/sh",args:[e]};if([".cmd",".bat"].includes(n)&&process.platform==="win32")return{command:process.env.COMSPEC??H.join(process.env.SystemRoot??"C:\\Windows","System32","cmd.exe"),args:["/d","/s","/c",e]};throw new Error(`Unsupported admitted Skill script type: ${n||"<none>"}.`)}o(Ka,"interpreterFor");async function Xa(e,n){let t=[],r=0,i=o(m=>{r+=m.byteLength,r>Eo?e.kill("SIGTERM"):t.push(m)},"append");e.stdout?.on("data",i),e.stderr?.on("data",i);let s=setTimeout(()=>{e.kill("SIGTERM")},Ca),c=o(()=>{e.kill("SIGTERM")},"abort");n?.addEventListener("abort",c,{once:!0});try{let m=await new Promise((f,d)=>{e.once("error",d),e.once("close",u=>f({code:u??1,stdout:Buffer.concat(t).toString("utf8"),stderr:""}))});if(r>Eo)throw new Error("Sandboxed Skill script output exceeded 1 MiB.");if(n?.aborted)throw n.reason??new Error("Sandboxed Skill script was cancelled.");if(m.code!==0)throw new Error(`Sandboxed Skill script failed (${m.code}): ${m.stdout.trim()}`);return{stdout:m.stdout,stderr:m.stderr}}finally{clearTimeout(s),n?.removeEventListener("abort",c)}}o(Xa,"collectProcess");async function Ba(e,n){let t=H.join(Ao.tmpdir(),`kodax-asrt-${process.pid}-${Lt()}.json`),r={...e,config:{...e.config,filesystem:{...e.config.filesystem,denyRead:[...e.config.filesystem.denyRead,t]}}};await Nt(t,JSON.stringify(r),{mode:384});try{let i=process.env.KODAX_BUNDLED==="true"?["__asrt-broker",t]:["--input-type=module","-e",ja,Oa,t],s=wn({args:i,env:_o(),isElectron:process.versions.electron!==void 0}),c=Sa(process.execPath,s.args,{env:s.env,shell:!1,stdio:["ignore","pipe","pipe"],windowsHide:!0});return(await Xa(c,n)).stdout}finally{await Kn(t,{force:!0})}}o(Ba,"runBroker");async function Ua(e,n){let t=await Sn(e),r=H.resolve(e,Oe(n,"Skill script input")),i=await Sn(r);if(!kn(t,i)||Oo(H.relative(t,i)))throw new Error("Skill script input is outside the permitted workspace surface.");if(!(await Bn(i)).isFile())throw new Error("Skill script inputs must be files.");return i}o(Ua,"workspaceSource");async function Wa(e,n){let t=await Sn(e),r=H.resolve(e,Oe(n,"Skill script output target"));if(!kn(H.resolve(e),r)||Oo(H.relative(H.resolve(e),r)))throw new Error("Skill script output target is outside the permitted workspace surface.");if(await He(H.dirname(r),{recursive:!0}),!kn(t,await Sn(H.dirname(r))))throw new Error("Skill script output target escapes through a symlink.");try{throw await Bn(r),new Error("Skill script output target already exists.")}catch(i){if(i.code!=="ENOENT")throw i}return r}o(Wa,"workspaceTarget");async function Ja(e,n,t,r){if(t.inputs.length>0&&r==="none")throw new Error("Skill script inputs require workspace read access.");for(let i of t.inputs){let s=await Ua(e,i.path),c=Oe(i.as??H.basename(s),"Skill script staged input"),m=H.resolve(n,"inputs",...c.split("/"));if(!kn(H.join(n,"inputs"),m))throw new Error("Skill script staged input escapes staging.");await He(H.dirname(m),{recursive:!0,mode:448}),await To(s,m)}}o(Ja,"stageInputFiles");async function za(e,n,t,r,i){if(t.outputs.length>0&&r!=="write")throw new Error("Skill script outputs require workspace write access.");let s=[];for(let c of t.outputs){let m=Oe(c.path,"Skill script staged output"),f=H.resolve(n,"outputs",...m.split("/")),d=await Sn(f);if(!kn(H.join(n,"outputs"),d)||(await Ea(f)).isSymbolicLink()||!(await Bn(f)).isFile())throw new Error(`Skill script did not produce output "${m}".`);let u=await Wa(e,c.target);if(i!==void 0&&Mo(e,!0)+(await Bn(f)).size>i)throw new Error("Skill script outputs would exceed the remote workspace byte quota.");await To(f,u,Ia.COPYFILE_EXCL),s.push(H.relative(e,u))}return s}o(za,"promoteOutputs");function Mo(e,n=!1){let t=0;for(let r of ba(e,{withFileTypes:!0})){if(n&&r.name===".kodax-a2a-script"||r.isSymbolicLink())continue;let i=H.join(e,r.name);r.isDirectory()?t+=Mo(i):r.isFile()&&(t+=Pa(i).size)}return t}o(Mo,"directorySize");function Va(e,n,t,r){let i=Ao.homedir(),s=H.isAbsolute(r)?[r]:[];return{network:{allowedDomains:[],deniedDomains:[],strictAllowlist:t.length===0,allowUnixSockets:[],allowAllUnixSockets:!1,allowLocalBinding:!1},filesystem:{denyRead:[i],allowRead:[e,n,process.execPath,...s],allowWrite:[e],denyWrite:[i]}}}o(Va,"sandboxConfig");async function Lo(e){let n=await Na();if(!n.ready)throw new Error(`ASRT ${Xn} is not ready: ${n.diagnostics.join(" ")||"run kodax sandbox setup"}`);let t=H.join(e.snapshotRoot,Lt()),r=H.join(t,"skills");await He(r,{recursive:!0,mode:448});try{let i=await $a(e,r),s=qa(e.network),c=Promise.resolve();return{async run(m,f){let d=c,u;if(c=new Promise(a=>{u=a}),await d,f.signal?.aborted)throw u?.(),f.signal.reason??new Error("Sandboxed Skill script was cancelled.");try{if(m.args.length>64||m.args.some(y=>y.length>8192))throw new Error("Skill script arguments exceed the bounded remote contract.");if(m.inputs.length>32||m.outputs.length>32)throw new Error("Skill script file mappings exceed the bounded remote contract.");let a=Oe(m.script,"Skill script"),g=i.get(`${m.skill}\0${a}`);if(!g)throw new Error("Skill script is not admitted by this Runtime binding.");if([".cmd",".bat"].includes(H.extname(g.snapshotPath).toLowerCase())&&m.args.some(y=>/[&|<>^]/.test(y)))throw new Error("Batch Skill script arguments cannot contain command operators.");let l=H.join(f.workspaceRoot,".kodax-a2a-script",Lt());try{await He(H.join(l,"inputs"),{recursive:!0,mode:448}),await He(H.join(l,"outputs"),{recursive:!0,mode:448}),await Ja(f.workspaceRoot,l,m,e.workspaceAccess);let y=Ka(g.snapshotPath),v=await Ba({config:Va(l,t,s,y.command),command:y.command,args:[...y.args,...m.args],cwd:l,endpoints:s},f.signal),p=await za(f.workspaceRoot,l,m,e.workspaceAccess,e.workspaceByteLimit);return JSON.stringify({stdout:v.trim(),outputs:p})}finally{await Kn(l,{recursive:!0,force:!0})}}finally{u?.()}},async dispose(){await c,await Kn(t,{recursive:!0,force:!0})}}}catch(i){throw await Kn(t,{recursive:!0,force:!0}),i}}o(Lo,"createAsrtSkillScriptRunner");import{randomUUID as Jn}from"node:crypto";var Ga=new Set(["session.created","session.loaded","session.settings.updated","session.notice.appended","session.rewound","session.active_entry.updated","session.compacted","run.queued","run.started","run.updated","run.progress","turn.started","turn.completed","turn.failed","assistant.delta","thinking.delta","thinking.finished","tool.started","tool.progress","tool.finished","user_input.requested","user_input.resolved","permission.requested","permission.resolved","workflow.started","workflow.updated","workflow.finished","context.compaction.started","context.compaction.stats","context.compaction.finished","context.compaction.messages","context.compaction.ended","context.compaction.skipped","context.budget.snapshot","tool.exposure.planned","child_activity.finished","provider.retry","provider.recovery","repo_intelligence.trace","todo.updated","todo.warning","sidecar.message","run.completed","run.failed","run.cancelled","run.interrupted","artifact.created","config.effective","runtime.warning"]),Qa=new Set(["run.queued","run.started","run.updated","run.completed","run.failed","run.cancelled","run.interrupted"]);function Ft(e){if(!Y(e))return In("Runtime event must be an object.");if(typeof e.id!="string"||!Number.isSafeInteger(e.seq)||typeof e.seq!="number"||typeof e.time!="string"||typeof e.sessionId!="string"||typeof e.runId!="string"||e.turnId!==void 0&&typeof e.turnId!="string"||typeof e.type!="string"||!Ga.has(e.type))return In("Runtime event envelope is malformed or has an unknown type.");if((e.type==="assistant.delta"||e.type==="thinking.delta")&&(!Y(e.payload)||typeof e.payload.text!="string"))return In(`${e.type} requires a string text payload.`);if(Qa.has(e.type)&&!ed(e.payload))return In(`${e.type} requires a RuntimeRunStatus payload.`);let n=Ya(e.type,e.payload);return n!==void 0?In(`${e.type} ${n}`):{ok:!0,event:{id:e.id,seq:e.seq,time:e.time,sessionId:e.sessionId,runId:e.runId,...typeof e.turnId=="string"?{turnId:e.turnId}:{},type:e.type,payload:e.payload}}}o(Ft,"parseRuntimeEvent");function Ya(e,n){if(e==="session.created")return De(n,["id","title"])?void 0:"requires a RuntimeSession payload.";if(e==="session.loaded")return De(n,["id","title"])||De(n,["provider","sessionId"])?void 0:"requires a RuntimeSession or provider session payload.";if(e==="session.settings.updated")return Y(n)&&typeof n.sessionId=="string"&&Number.isSafeInteger(n.revision)&&Y(n.settings)&&Y(n.patch)?void 0:"requires a session settings update payload.";if(e==="thinking.finished")return Y(n)&&typeof n.thinking=="string"?void 0:"requires a string thinking payload.";if(e==="tool.started")return Y(n)&&De(n.tool,["id","name"])?void 0:"requires a tool descriptor payload.";if(e==="tool.progress")return Y(n)&&(De(n.update,["id","message"])||typeof n.toolName=="string"&&typeof n.partialJson=="string")?void 0:"requires a tool progress payload.";if(e==="tool.finished")return Y(n)&&De(n.result,["id","name","content"])?void 0:"requires a tool result payload.";if(e==="run.progress")return Za(n);if(e==="todo.updated")return Y(n)&&Array.isArray(n.items)?void 0:"requires an items array payload.";if(e==="user_input.requested"){let t=Y(n)&&De(n,["id","sessionId","runId","kind","createdAt","expiresAt"])&&Number.isSafeInteger(n.revision),r=Y(n)&&De(n,["requestId","kind"])&&Object.hasOwn(n,"options");return t||r?void 0:"requires a user input request payload."}if(e==="user_input.resolved"||e==="permission.resolved")return Y(n)&&typeof n.requestId=="string"?void 0:"requires a requestId payload.";if(e==="permission.requested")return De(n,["id","sessionId","runId","toolName","createdAt"])?void 0:"requires a RuntimePermissionRequest payload.";if(e==="turn.started"||e==="turn.completed"||e==="turn.failed")return De(n,["sessionId","turnId"])?void 0:"requires a turn payload.";if(e==="workflow.started"||e==="workflow.updated"||e==="workflow.finished")return Y(n)?void 0:"requires a workflow event payload.";if(e==="context.budget.snapshot"||e==="tool.exposure.planned")return Y(n)?void 0:"requires an object payload.";if(e==="runtime.warning")return Y(n)&&typeof n.message=="string"?void 0:"requires a warning message payload."}o(Ya,"validateKnownRuntimeEventPayload");function Za(e){return!Y(e)||typeof e.kind!="string"?"requires a discriminated progress payload.":e.kind==="managed_task_status"?Y(e.status)?void 0:"requires managed task status.":e.kind==="iteration_start"?typeof e.iter=="number"&&typeof e.maxIter=="number"?void 0:"requires iteration counters.":e.kind==="iteration_end"?Y(e.info)?void 0:"requires iteration info.":e.kind==="mid_turn_user_messages"?Array.isArray(e.contents)&&e.contents.every(n=>typeof n=="string")?void 0:"requires string contents.":e.kind==="stream_end"||e.kind==="complete"?void 0:"has an unknown progress kind."}o(Za,"validateRunProgressPayload");function ed(e){return Y(e)&&typeof e.runId=="string"&&typeof e.sessionId=="string"&&typeof e.startedAt=="string"&&typeof e.provider=="string"&&typeof e.phase=="string"}o(ed,"isRuntimeRunStatusPayload");function De(e,n){return Y(e)&&n.every(t=>typeof e[t]=="string")}o(De,"hasStrings");function In(e){return{ok:!1,error:e}}o(In,"invalid");function Y(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}o(Y,"isRecord");var _e="kodax-runtime-daemon",Ht=1,Ye=["initialize","runtime.initialize","ping","runtime.identity","runtime.status","runtime.shutdown","runtime.capabilities","daemon.status","daemon.stop","daemon.logs","daemon.preflight","daemon.management.get","daemon.rollbackToInline","operation.get","session.create","session.load","session.list","session.transcript","session.observe","session.fork","session.notice.append","session.rewind","session.active_entry.set","session.activeEntry.set","session.compact","session.archive","session.unarchive","session.delete","session.settings.get","session.settings.getVersioned","session.settings.update","session.settings.updateVersioned","run.start","run.input.submit","run.get","run.list","run.await","run.abort","run.model.set","run.provider.set","run.reasoning.set","run.setModel","run.setProvider","run.setReasoning","event.subscribe","event.unsubscribe","event.replay","permission.list","permission.listPending","permission.request","permission.respond","permission.grants.list","permission.grants.revoke","user_input.listPending","user_input.respond","user_input.dismiss","credential.register","credential.get","credential.revoke","credential.supply","host_tool.register","host_tool.get","host_tool.invocation.get","host_tool.revoke","host_tool.complete","workflow.list","workflow.get","workflow.subscribe","workflow.unsubscribe","workflow.pause","workflow.resume","workflow.stop","config.read","config.patch","config.reload","model.list","provider.list","provider.custom.list","provider.custom.upsert","provider.custom.remove","mcp.server.list","mcp.server.get","mcp.server.validate","mcp.server.upsert","mcp.server.delete","mcp.server.remove","mcp.server.reload","mcp.tool.list","extension.list","extension.reload","command.list","command.resolve","skill.list","skill.describe","skill.read","artifact.create","artifact.get","artifact.delete","agentRegistrations.list","agentRegistrations.upsert","agentRegistrations.setEnabled","agentRegistrations.remove","agents.listDispatchable","agents.describe","agents.preflight","agentTasks.list","agentTasks.start","agentTasks.get","agentTasks.events","agentTasks.wait","agentTasks.sendInput","agentTasks.cancel","agentTasks.reconcile","context.budget.get","tool.exposure.preview"],nd=["runtime.shutdown","daemon.stop","daemon.rollbackToInline","session.create","session.fork","session.notice.append","session.rewind","session.active_entry.set","session.activeEntry.set","session.compact","session.archive","session.unarchive","session.delete","session.settings.update","session.settings.updateVersioned","run.start","run.input.submit","run.abort","run.model.set","run.provider.set","run.reasoning.set","run.setModel","run.setProvider","run.setReasoning","permission.request","permission.respond","permission.grants.revoke","user_input.respond","user_input.dismiss","workflow.pause","workflow.resume","workflow.stop","config.patch","config.reload","provider.custom.upsert","provider.custom.remove","mcp.server.upsert","mcp.server.delete","mcp.server.remove","mcp.server.reload","extension.reload","artifact.create","artifact.delete","agentRegistrations.upsert","agentRegistrations.setEnabled","agentRegistrations.remove","agentTasks.start","agentTasks.sendInput","agentTasks.cancel","agentTasks.reconcile"],td=new Set(Ye),rd=new Set(nd),od=new Set(["credential.register","credential.revoke","credential.supply","host_tool.register","host_tool.revoke","host_tool.complete"]),id=new Set(["event","credential.request","host_tool.invoke","runtime.warning"]),sd=new Set(["invalid_frame","invalid_request","invalid_params","not_initialized","method_not_found","unauthorized","permission_denied","conflict","not_found","session_not_admitted","cancelled","overloaded","client_upgrade_required","operation_required","operation_epoch_mismatch","operation_id_reuse","operation_interrupted","operation_unknown","control_history_untrusted","credential_unavailable","host_tool_unavailable","host_tool_unknown","internal_error"]);function Un(e,n,t,r){return{protocol:_e,version:1,kind:"request",id:e,method:n,...t!==void 0?{params:t}:{},...r!==void 0?{operation:r}:{}}}o(Un,"createRuntimeDaemonRequest");function $e(e){return rd.has(e)}o($e,"isRuntimeDaemonMutationMethod");function No(e){return $e(e)||od.has(e)}o(No,"isRuntimeDaemonDrainingSensitiveMethod");function Fo(e,n){return{protocol:_e,version:1,kind:"response",id:e,result:n===void 0?null:n}}o(Fo,"createRuntimeDaemonSuccessResponse");function Me(e,n){return{protocol:_e,version:1,kind:"error",...n!==void 0?{id:n}:{},error:e}}o(Me,"createRuntimeDaemonErrorResponse");function bn(e,n){return{protocol:_e,version:1,kind:"notification",method:e,...n!==void 0?{params:n}:{}}}o(bn,"createRuntimeDaemonNotification");function $t(e){if(!Wn(e))return!1;let n=e;return n.kind==="request"&&typeof n.id=="string"&&n.id.length>0&&typeof n.method=="string"&&td.has(n.method)&&(n.operation===void 0||ud(n.operation))}o($t,"isRuntimeDaemonRequest");function Ze(e){if(!Wn(e))return!1;let n=e;return n.kind==="response"&&typeof n.id=="string"&&n.id.length>0&&Object.prototype.hasOwnProperty.call(n,"result")}o(Ze,"isRuntimeDaemonSuccessResponse");function en(e){if(!Wn(e))return!1;let n=e;return n.kind==="error"&&(n.id===void 0||typeof n.id=="string")&&dd(n.error)}o(en,"isRuntimeDaemonErrorResponse");function Pn(e){if(!Wn(e))return!1;let n=e;return n.kind==="notification"&&typeof n.method=="string"&&id.has(n.method)}o(Pn,"isRuntimeDaemonNotification");function ad(e){return $t(e)||Ze(e)||en(e)||Pn(e)}o(ad,"isRuntimeDaemonFrame");function Ho(e){let n;try{n=JSON.parse(e)}catch{return jo("Frame is not valid JSON.")}return ad(n)?n:jo("Frame does not match the runtime daemon protocol.")}o(Ho,"parseRuntimeDaemonFrame");function jo(e){return Me({code:"invalid_frame",message:e})}o(jo,"invalidFrame");function Wn(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let n=e;return n.protocol===_e&&n.version===1}o(Wn,"isFrameBase");function dd(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let n=e;return typeof n.code=="string"&&sd.has(n.code)&&typeof n.message=="string"}o(dd,"isRuntimeDaemonError");function ud(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let n=e;return typeof n.operationId=="string"&&n.operationId.length>0&&typeof n.journalEpoch=="string"&&n.journalEpoch.length>0}o(ud,"isRuntimeDaemonOperationEnvelope");var Wo=256,$o=1e3,qe=class extends Error{constructor(t,r){super(r);this.path=t;this.name="RuntimeTransportBoundaryError"}path;static{o(this,"RuntimeTransportBoundaryError")}code="invalid_transport_value"};function Kt(e){let n=o((d,u,a)=>e.transport.request(d,u,$e(d)?md(e.journalEpoch,a):void 0),"request"),t=new Map,r=new Map,i=new Map,s=new Set,c={state:"connected",connectionId:`connection_${Jn().replace(/-/g,"")}`,runtimeEpoch:e.identity.runtimeId,...e.journalEpoch!==void 0?{journalEpoch:e.journalEpoch}:{},reconnectable:!1},m=e.transport.subscribeLifecycle?.(d=>{c={...d,runtimeEpoch:e.identity.runtimeId,...e.journalEpoch!==void 0?{journalEpoch:e.journalEpoch}:{}};for(let u of s)try{u(c)}catch(a){te({source:"runtime.daemon.client",level:"warn",message:"Runtime connection lifecycle listener failed.",detail:{errorType:a instanceof Error?a.name:typeof a}})}}),f=e.transport.subscribe(d=>{d.method==="credential.request"?cd(d.params,t,n).catch(()=>qo("credential request")):d.method==="host_tool.invoke"&&ld(d.params,r,i,n).catch(()=>qo("host tool invocation"))});return{identity:e.identity,capabilities:e.capabilities,...e.grantedScopes!==void 0?{grantedScopes:e.grantedScopes}:{},sessions:{create(d={}){let{operation:u,...a}=d;return n("session.create",a,u)},load(d){return n("session.load",{sessionId:d})},list(d){return n("session.list",d)},transcript(d){return n("session.transcript",{sessionId:d})},observe(d,u){return fd(e.transport,n,d,u)},fork(d){return n("session.fork",d)},getSettings(d){return n("session.settings.get",{sessionId:d})},getSettingsVersioned(d){return n("session.settings.getVersioned",{sessionId:d})},async updateSettings(d,u){let a=await this.getSettingsVersioned(d);return(await this.updateSettingsVersioned(d,u,{expectedRevision:a.revision})).value},updateSettingsVersioned(d,u,a){return n("session.settings.updateVersioned",{sessionId:d,patch:u,expectedRevision:a.expectedRevision},a)},appendNotice(d){return n("session.notice.append",d)},rewind(d){return n("session.rewind",d)},setActiveEntry(d){return n("session.active_entry.set",d)},compact(d){return n("session.compact",d)},async archive(d){await n("session.archive",{sessionId:d})},async unarchive(d){await n("session.unarchive",{sessionId:d})},async delete(d){await n("session.delete",{sessionId:d})}},runs:{async start(d){let{operation:u,...a}=d;tn(a,"run.start");let g=le(await n("run.start",a,u)),l=ae(g,"runId"),y=ae(g,"sessionId"),v=hd(g,"turnId");return{runId:l,sessionId:y,...v!==void 0?{turnId:v}:{},result:Bo(n,l)}},async submitInput(d){let{operation:u,...a}=d;return tn(a,"run.input.submit"),n("run.input.submit",a,u)},await(d){return Bo(n,d)},get(d){return n("run.get",{runId:d})},list(d){return n("run.list",d)},async abort(d){await n("run.abort",{runId:d})},async setModel(d,u){await n("run.model.set",{runId:d,model:u})},async setProvider(d,u){await n("run.provider.set",{runId:d,provider:u})},async setReasoning(d,u){await n("run.reasoning.set",{runId:d,reasoning:u})}},events:{subscribe(d,u){return pd(e.transport,n,d,u)},replay(d){return n("event.replay",d).then(u=>{if(!Array.isArray(u))throw new Error("Expected daemon event replay array.");return u.flatMap(a=>{let g=Jo(a);return g===void 0?[]:[g]})})}},permissions:{request(d){return n("permission.request",d)},listPending(d){return n("permission.list",d)},respond(d,u,a){return n("permission.respond",{requestId:d,decision:u,...a?.runId!==void 0?{runId:a.runId}:{}})},listGrants(){return n("permission.grants.list")},revokeGrant(d,u){return n("permission.grants.revoke",{grantId:d,expectedRevision:u})}},userInputs:{listPending(d){return n("user_input.listPending",d)},respond(d,u,a){return n("user_input.respond",{requestId:d,answer:u,...a?.expectedRevision!==void 0?{expectedRevision:a.expectedRevision}:{},...a?.runId!==void 0?{runId:a.runId}:{}})},dismiss(d,u){return n("user_input.dismiss",{requestId:d,...u?.expectedRevision!==void 0?{expectedRevision:u.expectedRevision}:{},...u?.runId!==void 0?{runId:u.runId}:{}})}},credentials:{async register(d,u){let a=`credlease_${Jn().replace(/-/g,"")}`;t.set(a,u);try{return await n("credential.register",{leaseId:a,providers:d.providers,...d.expiresAt!==void 0?{expiresAt:d.expiresAt}:{}})}catch(g){throw t.delete(a),g}},async resume(d,u){t.set(d,u);try{let a=await n("credential.get",{leaseId:d});if(a==null)throw Object.assign(new Error(`Credential lease is unavailable after Runtime reconnect: ${d}`),{code:"credential_unavailable"});return le(a)}catch(a){throw t.delete(d),a}},async revoke(d){let u=await n("credential.revoke",{leaseId:d});return u&&t.delete(d),u}},hostTools:{async register(d,u){Ko(d,u);let a=`hostlease_${Jn().replace(/-/g,"")}`;r.set(a,u);try{return await n("host_tool.register",{leaseId:a,tools:d})}catch(g){throw r.delete(a),g}},async resume(d,u){r.set(d,u);try{let a=await n("host_tool.get",{leaseId:d});if(a==null)throw Object.assign(new Error(`Host tool lease is unavailable after Runtime reconnect: ${d}`),{code:"host_tool_unavailable"});let g=le(a);return Ko(g.tools,u),g}catch(a){throw r.delete(d),a}},async getInvocation(d){return nn(await n("host_tool.invocation.get",{invocationId:d}))},async revoke(d){let u=await n("host_tool.revoke",{leaseId:d});return u&&r.delete(d),u}},operations:{get(d){return n("operation.get",d)}},workflows:{list(d){return n("workflow.list",d)},get(d){return n("workflow.get",{runId:d}).then(nn)},subscribe(d,u){return Rd(e.transport,n,d,u)},pause(d){return n("workflow.pause",{runId:d})},resume(d){return n("workflow.resume",{runId:d})},stop(d){return n("workflow.stop",{runId:d})}},config:{read(){return n("config.read")},patch(d){return n("config.patch",{patch:d})},reload(){return n("config.reload")}},catalog:{providers(){return n("provider.list")},models(d){return n("model.list",d)},commands(d){return n("command.list",d!==void 0?{projectRoot:d}:void 0)},resolveCommand(d){return n("command.resolve",d)},skills(d){return n("skill.list",d)},describeSkill(d){return n("skill.describe",d)},customProviders(){return n("provider.custom.list")},upsertCustomProvider(d){return n("provider.custom.upsert",{config:d})},deleteCustomProvider(d){return n("provider.custom.remove",{name:d})},extensions(){return n("extension.list")},reloadExtensions(){return n("extension.reload")}},mcp:{listServers(){return n("mcp.server.list")},getServer(d){return n("mcp.server.get",{name:d}).then(nn)},validateServer(d,u){return n("mcp.server.validate",{name:d,config:u})},upsertServer(d,u){return n("mcp.server.upsert",{name:d,config:u})},deleteServer(d){return n("mcp.server.delete",{name:d})},reloadServers(){return n("mcp.server.reload")},listTools(d){return n("mcp.tool.list",d)}},artifacts:{create(d){return n("artifact.create",d)},get(d){return n("artifact.get",{artifactId:d}).then(nn)},delete(d){return n("artifact.delete",{artifactId:d})}},admin:{agentRegistrations:{list(){return n("agentRegistrations.list")},upsert(d,u){return tn(d,"agentRegistrations.upsert.registration"),n("agentRegistrations.upsert",{registration:d,...u?.expectedConfigurationRevision!==void 0?{expectedConfigurationRevision:u.expectedConfigurationRevision}:{},...u?.expectedManagementOwner!==void 0?{expectedManagementOwner:u.expectedManagementOwner}:{}})},setEnabled(d,u,a){return n("agentRegistrations.setEnabled",{agentId:d,enabled:u,...a?.expectedConfigurationRevision!==void 0?{expectedConfigurationRevision:a.expectedConfigurationRevision}:{},...a?.expectedManagementOwner!==void 0?{expectedManagementOwner:a.expectedManagementOwner}:{},...a?.claimOwner!==void 0?{claimOwner:a.claimOwner}:{}}).then(nn)},remove(d,u){return n("agentRegistrations.remove",{agentId:d,...u?.expectedConfigurationRevision!==void 0?{expectedConfigurationRevision:u.expectedConfigurationRevision}:{},...u?.expectedManagementOwner!==void 0?{expectedManagementOwner:u.expectedManagementOwner}:{}})}}},agents:{enabled:e.capabilities?.externalAgents===!0,listDispatchable(d){return n("agents.listDispatchable",d)},describe(d,u){return n("agents.describe",{agentId:d,query:u}).then(nn)},preflight(d){return n("agents.preflight",d)}},agentTasks:{start(d){return tn(d,"agentTasks.start"),n("agentTasks.start",d)},list(d){return n("agentTasks.list",d)},get(d){return n("agentTasks.get",{taskId:d})},events(d,u){return n("agentTasks.events",{taskId:d,...u!==void 0?{cursor:u}:{}})},wait(d,u){return n("agentTasks.wait",{taskId:d,...u!==void 0?{timeoutMs:u}:{}})},sendInput(d,u){return n("agentTasks.sendInput",{taskId:d,input:u})},cancel(d,u){return n("agentTasks.cancel",{taskId:d,...u!==void 0?{reason:u}:{}})},reconcile(d){return n("agentTasks.reconcile",{taskId:d})}},status:{snapshot(){return n("daemon.status")},preflight(){return n("daemon.preflight")}},daemon:{inspect(){return n("daemon.management.get")},stopForInline(d){let{operation:u,...a}=d;return n("daemon.rollbackToInline",a,u)}},diagnostics:{latestContextBudget(d){return n("context.budget.get",d)},latestToolExposure(d){return n("tool.exposure.preview",d)}},connection:{current(){return c},subscribe(d){return s.add(d),d(c),{close(){s.delete(d)}}}},async close(){m?.close(),f.close(),s.clear(),t.clear(),r.clear(),i.clear(),await e.transport.close?.()}}}o(Kt,"createRuntimeDaemonClient");function qo(e){te({source:"runtime.daemon.client",level:"warn",message:`Failed to deliver ${e} result to the Runtime daemon.`})}o(qo,"reportReverseBridgeFailure");async function cd(e,n,t){let r=le(e),i=ae(r,"requestId"),s=ae(r,"leaseId"),c=n.get(s);if(!c){await t("credential.supply",{requestId:i,error:"credential_lease_unavailable"});return}try{let m=await c({leaseId:s,provider:ae(r,"provider"),sessionId:ae(r,"sessionId"),runId:ae(r,"runId")});await t("credential.supply",{requestId:i,...m!==void 0?{credential:m}:{error:"credential_unavailable"}})}catch{await t("credential.supply",{requestId:i,error:"credential_broker_failed"})}}o(cd,"answerCredentialRequest");async function ld(e,n,t,r){let i=le(e),s=ae(i,"invocationId"),c=ae(i,"leaseId"),m=ae(i,"toolName"),f=n.get(c)?.[m];if(!f){await r("host_tool.complete",{invocationId:s,error:"host_tool_unavailable"});return}let d=t.get(s);if(!d){let u=Promise.resolve().then(()=>f({invocationId:s,leaseId:c,toolName:m,sessionId:ae(i,"sessionId"),runId:ae(i,"runId"),input:le(i.input)}));d={promise:u,settled:!1},t.set(s,d);let a=d;u.finally(()=>{a.settled=!0,Xo(t)}).catch(()=>{}),Xo(t)}try{await r("host_tool.complete",{invocationId:s,result:await d.promise})}catch{try{await r("host_tool.complete",{invocationId:s,error:"host_tool_failed"})}catch(u){throw new Error("Failed to report the Host Tool outcome to the Runtime daemon.",{cause:u})}}}o(ld,"answerHostToolInvocation");function Ko(e,n){let t=new Set(e.map(r=>r.name));if(t.size!==e.length||e.length===0)throw new Error("Host tool descriptors must have unique, non-empty names.");for(let r of t)if(typeof n[r]!="function")throw new Error(`Missing host tool handler: ${r}`)}o(Ko,"validateHostToolHandlers");function Xo(e){if(!(e.size<=$o))for(let[n,t]of e){if(e.size<=$o)return;t.settled&&e.delete(n)}}o(Xo,"pruneHostToolResults");function md(e,n){let t=n?.journalEpoch??e;if(t!==void 0)return{operationId:n?.operationId??`op_${Jn().replace(/-/g,"")}`,journalEpoch:t}}o(md,"createOperationEnvelope");function pd(e,n,t,r){return zo(e,n,"event.subscribe",{filter:t},i=>{qt(i,r)})}o(pd,"subscribeToDaemonEvents");async function fd(e,n,t,r){let i=!1,s,c=!1,m=[],f=e.subscribe(d=>{if(i||d.method!=="event")return;let u=le(d.params);if(s===void 0){if(!gd(u.event,t))return;m.length>=Wo?c=!0:m.push(u);return}u.subscriptionId===s&&qt(u.event,r)});try{let d=le(await n("session.observe",{sessionId:t}));if(s=ae(d,"subscriptionId"),c)throw Object.assign(new Error("Runtime session observation handshake exceeded its event buffer; full resync is required."),{code:"resync_required"});let u=le(d.snapshot);for(let a of m.splice(0))a.subscriptionId===s&&qt(a.event,r);return{snapshot:u,close(){i||(i=!0,m.length=0,f.close(),s!==void 0&&n("event.unsubscribe",{subscriptionId:s}).catch(()=>{}))}}}catch(d){throw i=!0,m.length=0,f.close(),s!==void 0&&n("event.unsubscribe",{subscriptionId:s}).catch(()=>{}),d}}o(fd,"observeDaemonSession");function gd(e,n){return e!==null&&typeof e=="object"&&!Array.isArray(e)&&e.sessionId===n}o(gd,"isRuntimeEventForSession");function qt(e,n){let t=Jo(e);t!==void 0&&n(t)}o(qt,"deliverRuntimeEvent");function Jo(e){let n=Ft(e);if(!n.ok){te({source:"runtime.daemon.client",level:"warn",message:`Ignored malformed Runtime event: ${n.error}`});return}return n.event}o(Jo,"parseRuntimeEventForClient");function Rd(e,n,t,r){return zo(e,n,"workflow.subscribe",{filter:t},i=>{r(i)})}o(Rd,"subscribeToDaemonWorkflowEvents");function zo(e,n,t,r,i){let s=!1,c,m=[],f=e.subscribe(d=>{if(s||d.method!=="event")return;let u=le(d.params);if(c===void 0){m.length>=Wo&&m.shift(),m.push(u);return}u.subscriptionId===c&&i(u.event)});return n(t,r).then(d=>{if(c=ae(le(d),"subscriptionId"),s){Uo(n,t,c),m.length=0;return}for(let u of m.splice(0))u.subscriptionId===c&&i(u.event)}).catch(()=>{m.length=0,f.close()}),{close(){s=!0,f.close(),c!==void 0&&Uo(n,t,c)}}}o(zo,"subscribeToDaemonNotification");function Bo(e,n){return e("run.await",{runId:n}).then(yd)}o(Bo,"requestRuntimeRunResult");function yd(e){let n=le(e),t=Object.prototype.hasOwnProperty.call(n,"error")?wd(n.error):void 0,r={...n};return delete r.error,{...r,...t!==void 0?{error:t}:{}}}o(yd,"deserializeRuntimeRunResult");function wd(e){if(e==null)return;if(e instanceof Error)return e;if(typeof e=="string")return new Error(e);let n=le(e),t=new Error(typeof n.message=="string"&&n.message.length>0?n.message:"Runtime run failed.");return typeof n.name=="string"&&n.name.length>0&&(t.name=n.name),typeof n.stack=="string"&&n.stack.length>0&&(t.stack=n.stack),t}o(wd,"deserializeRuntimeError");function Uo(e,n,t){e(n==="event.subscribe"?"event.unsubscribe":"workflow.unsubscribe",{subscriptionId:t}).catch(()=>{})}o(Uo,"unsubscribeRemote");function nn(e){return e??void 0}o(nn,"nullToUndefined");function le(e){if(!e||typeof e!="object"||Array.isArray(e))throw new Error("Expected daemon response object.");return e}o(le,"requireRecord");function ae(e,n){let t=e[n];if(typeof t!="string"||t.length===0)throw new Error(`Expected daemon response string field: ${n}`);return t}o(ae,"requireStringField");function hd(e,n){let t=e[n];if(t!=null){if(typeof t!="string")throw new Error(`Expected daemon response optional string field: ${n}`);return t}}o(hd,"optionalStringField");function tn(e,n,t=new WeakSet){if(e==null||typeof e=="string"||typeof e=="boolean")return;if(typeof e=="number"){if(Number.isFinite(e))return;throw new qe(n,`${n} is not transport-safe: numbers must be finite.`)}if(typeof e=="function"||typeof e=="symbol"||typeof e=="bigint")throw new qe(n,`${n} is not transport-safe: ${typeof e} values cannot cross a Runtime boundary.`);if(typeof e!="object")return;if(t.has(e))throw new qe(n,`${n} is not transport-safe: cyclic values cannot cross a Runtime boundary.`);let r=Object.getPrototypeOf(e);if(!Array.isArray(e)&&r!==Object.prototype&&r!==null){let i=r?.constructor?.name??"object";throw new qe(n,`${n} is not transport-safe: ${i} instances cannot cross a Runtime boundary.`)}if(t.add(e),Array.isArray(e))e.forEach((i,s)=>tn(i,`${n}[${s}]`,t));else for(let[i,s]of Object.entries(e))tn(s,`${n}.${i}`,t);t.delete(e)}o(tn,"assertRuntimeTransportSafe");import{randomUUID as gc}from"node:crypto";import Rc from"node:os";import lr from"node:path";import{randomUUID as Bt}from"node:crypto";import*as A from"node:fs";import oe from"node:path";function rn(e,n="default"){let t=Ut(n),r=oe.resolve(e),i=oe.join(r,"runtime","daemon",t);return{profile:t,configHome:r,rootDir:i,stateFile:oe.join(i,"daemon.json"),lockFile:oe.join(i,"daemon.lock"),tokenFile:oe.join(i,"daemon.token"),logFile:oe.join(i,"daemon.log"),runsDir:oe.join(i,"runs"),eventsDir:oe.join(i,"events"),ownerPolicyFile:oe.join(i,"owner-policy.json"),ownerPolicyLockFile:oe.join(i,"owner-policy.lock")}}o(rn,"resolveRuntimeDaemonPathsFromConfigHome");function vd(e,n){let t=o(r=>{let i=oe.resolve(r);return process.platform==="win32"?i.toLowerCase():i},"resolveIdentity");return t(e)===t(n)}o(vd,"isSameRuntimeDaemonPath");function on(e,n){let t=oe.resolve(e);return vd(n,oe.join(t,".kodax"))?t:oe.resolve(n)}o(on,"resolveRuntimeDaemonEndpointScope");function we(e){if(!A.existsSync(e.ownerPolicyFile))return{mode:"daemon",revision:0,updatedAt:new Date(0).toISOString()};try{let n=JSON.parse(A.readFileSync(e.ownerPolicyFile,"utf8"));if(zt(n)&&(n.mode==="daemon"||n.mode==="inline")&&typeof n.revision=="number"&&Number.isSafeInteger(n.revision)&&n.revision>=0&&typeof n.updatedAt=="string")return{mode:n.mode,revision:n.revision,updatedAt:n.updatedAt}}catch{}throw new Error("Runtime owner policy is corrupt; refusing to choose an owner.")}o(we,"readRuntimeOwnerPolicy");function Qo(e,n,t){be(e);let r=Le(e);if(!r)throw new Error("Runtime owner policy update is already in progress.");try{if(A.existsSync(e.lockFile))throw new Error("Cannot change Runtime owner mode while an owner lock exists.");return Gn(e,n,t,r.nonce)}finally{Ke(e,r)}}o(Qo,"updateRuntimeOwnerPolicy");function Yo(e,n,t){be(e);let r=Le(e);if(!r)throw Vn("Runtime owner rollback is already in progress.");try{let i=G(e.lockFile);if(i?.kind!=="daemon"||i.runtimeId!==n)throw Vn("Runtime daemon owner changed before rollback commit.");if(we(e).mode!=="daemon")throw Vn("Runtime owner policy changed before rollback commit.");return Gn(e,"inline",t,r.nonce)}finally{Ke(e,r)}}o(Yo,"commitRuntimeDaemonRollbackPolicy");function Zo(e){be(e);let n=Le(e);if(!n)throw new Error("Runtime owner transition is already in progress.");try{if(A.existsSync(e.lockFile))throw new Error("Cannot enable Runtime daemon ownership while an owner lock exists.");let t=we(e);return t.mode==="daemon"?t:Gn(e,"daemon",t.revision,n.nonce)}finally{Ke(e,n)}}o(Zo,"enableRuntimeDaemonOwner");function ei(e,n,t=!1){be(e);let r=Le(e);if(!r)throw new Error("Runtime owner transition is already in progress.");try{let i=we(e);if(i.mode!=="inline"){if(!t)throw new Error("Coder inline ownership requires explicit enableRollback: true.");if(A.existsSync(e.lockFile))throw new Error("Cannot enable inline rollback while a Coder owner lock exists.");Gn(e,"inline",i.revision,r.nonce)}if(A.existsSync(e.lockFile))throw new Error(`Coder profile "${e.profile}" already has an owner.`);let s=ii(e,n);if(!s)throw new Error(`Coder profile "${e.profile}" already has an owner.`);return s}finally{Ke(e,r)}}o(ei,"acquireRuntimeInlineOwner");function Gn(e,n,t,r){let i=we(e);if(i.revision!==t)throw Vn(`Runtime owner policy conflict: expected ${t}, current ${i.revision}.`);let s={mode:n,revision:i.revision+1,updatedAt:new Date().toISOString()},c=`${e.ownerPolicyFile}.${process.pid}.${r}.tmp`;try{let m=A.openSync(c,"wx",384);try{A.writeFileSync(m,`${JSON.stringify(s,null,2)}
|
|
54
|
+
`,"utf8"),A.fsyncSync(m)}finally{A.closeSync(m)}return A.renameSync(c,e.ownerPolicyFile),s}finally{A.rmSync(c,{force:!0})}}o(Gn,"writeRuntimeOwnerPolicy");function Vn(e){let n=new Error(e);return n.code="conflict",n}o(Vn,"runtimeOwnerPolicyConflict");function Le(e,n=!0){let t=Bt(),r={runtimeId:`owner-transition-${t}`,pid:process.pid,createdAt:new Date().toISOString()},i;try{return i=A.openSync(e.ownerPolicyLockFile,"wx",384),A.writeFileSync(i,`${JSON.stringify({...r,nonce:t})}
|
|
55
|
+
`,"utf8"),A.fsyncSync(i),{nonce:t,owner:r}}catch(s){if(Jt(s)&&s.code==="EEXIST")return n&&Sd(e)?Le(e,!1):void 0;throw s}finally{i!==void 0&&A.closeSync(i)}}o(Le,"tryAcquireRuntimeOwnerCoordination");function Sd(e){let n=Vo(e);if(!n||kd(n.owner.pid))return!1;try{let t=Vo(e);return!t||t.nonce!==n.nonce?!1:(A.unlinkSync(e.ownerPolicyLockFile),!0)}catch{return!1}}o(Sd,"removeAbandonedRuntimeOwnerCoordination");function Vo(e){try{let n=JSON.parse(A.readFileSync(e.ownerPolicyLockFile,"utf8"));return!zt(n)||typeof n.nonce!="string"||!ui(n)||!n.runtimeId.startsWith("owner-transition-")?void 0:{nonce:n.nonce,owner:n}}catch{return}}o(Vo,"readRuntimeOwnerCoordinationHandle");function kd(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch(n){return Jt(n)&&n.code==="EPERM"}}o(kd,"isRuntimeOwnerProcessAlive");function Id(e){return G(e.ownerPolicyLockFile)}o(Id,"readRuntimeOwnerCoordinator");function Ke(e,n){try{let t=JSON.parse(A.readFileSync(e.ownerPolicyLockFile,"utf8"));zt(t)&&t.nonce===n.nonce&&A.unlinkSync(e.ownerPolicyLockFile)}catch{}}o(Ke,"releaseRuntimeOwnerCoordination");function Qn(e){if(we(e).mode!=="daemon")throw new Error(`Runtime daemon auto-start is disabled for profile "${e.profile}" by inline rollback policy.`)}o(Qn,"assertRuntimeDaemonOwnerAllowed");function Ut(e){let n=e.trim()||"default";if(!/^[A-Za-z0-9_.-]+$/.test(n))throw new Error(`Invalid runtime daemon profile: ${e}`);return n}o(Ut,"normalizeRuntimeDaemonProfile");function be(e){A.mkdirSync(e.rootDir,{recursive:!0}),A.mkdirSync(e.runsDir,{recursive:!0}),A.mkdirSync(e.eventsDir,{recursive:!0})}o(be,"ensureRuntimeDaemonDirectories");function ni(){return`dt_${Bt().replace(/-/g,"")}`}o(ni,"createRuntimeDaemonToken");function ti(e,n){be(e),A.writeFileSync(e.tokenFile,`${n}
|
|
56
|
+
`,{encoding:"utf8",mode:384}),process.platform!=="win32"&&A.chmodSync(e.tokenFile,384)}o(ti,"writeRuntimeDaemonToken");function En(e){try{let n=A.readFileSync(e.tokenFile,"utf8").trim();return n.length>0?n:void 0}catch(n){if(n.code==="ENOENT")return;throw n}}o(En,"readRuntimeDaemonToken");function sn(e,n){be(e);let t=`${e.stateFile}.${process.pid}.${Bt()}.tmp`;try{let r=A.openSync(t,"wx",384);try{A.writeFileSync(r,`${JSON.stringify(n,null,2)}
|
|
57
|
+
`,"utf8"),A.fsyncSync(r)}finally{A.closeSync(r)}A.renameSync(t,e.stateFile)}finally{A.rmSync(t,{force:!0})}}o(sn,"writeRuntimeDaemonState");function Pe(e,n,t,r){be(e);let i={time:new Date().toISOString(),level:n,message:t,...r!==void 0?{data:r}:{}};A.appendFileSync(e.logFile,`${JSON.stringify(i)}
|
|
58
|
+
`,"utf8")}o(Pe,"appendRuntimeDaemonLog");function ri(e,n=200){if(!A.existsSync(e.logFile))return[];let t=[],r=A.readFileSync(e.logFile,"utf8").split(/\r?\n/).filter(i=>i.trim().length>0);for(let i of r.slice(-n))try{let s=JSON.parse(i);Dd(s)&&t.push(s)}catch(s){t.push({time:new Date().toISOString(),level:"warn",message:`Skipped malformed daemon log line: ${s instanceof Error?s.message:String(s)}`})}return t}o(ri,"readRuntimeDaemonLog");function oi(e){if(A.existsSync(e.stateFile))try{let n=JSON.parse(A.readFileSync(e.stateFile,"utf8"));return Ed(n)?n:void 0}catch{return}}o(oi,"readRuntimeDaemonState");function ii(e,n){be(e);let t;try{return t=A.openSync(e.lockFile,"wx",384),A.writeFileSync(t,`${JSON.stringify(n,null,2)}
|
|
59
|
+
`,"utf8"),A.fsyncSync(t),{file:e.lockFile,owner:n}}catch(r){if(Jt(r)&&r.code==="EEXIST")return;throw r}finally{t!==void 0&&A.closeSync(t)}}o(ii,"tryAcquireRuntimeDaemonLock");function Yn(e){let n={ownerPolicyLockFile:oe.join(oe.dirname(e.file),"owner-policy.lock")},t=Le(n);if(!t)return!1;try{return ai(e)}finally{Ke(n,t)}}o(Yn,"releaseRuntimeDaemonLock");function si(e,n){let t=Le(e);if(!t)return!1;try{let r=G(n.file);return Wt(r,n.owner)?(Pd(e),ai(n)):!1}finally{Ke(e,t)}}o(si,"releaseRuntimeDaemonOwnership");function ai(e){let n=G(e.file);return Wt(n,e.owner)?(A.unlinkSync(e.file),!0):!1}o(ai,"unlinkRuntimeDaemonLockIfOwned");function G(e){if(A.existsSync(e))try{let n=JSON.parse(A.readFileSync(e,"utf8"));return ui(n)?n:void 0}catch{return}}o(G,"readRuntimeDaemonLockOwner");function di(e,n,t){be(e);let r=Zn(t),i=G(e.lockFile);if(r==="healthy")return t.state&&i!==void 0&&Xt(i,t.state)?{kind:"attach",state:t.state,health:r}:{kind:"unhealthy",health:"mismatch",...t.state!==void 0?{state:t.state}:{},...i!==void 0?{lockOwner:i}:{}};if(r==="unhealthy"&&t.state!==void 0&&Cd(t.state.status)&&t.pidAlive&&i!==void 0)return{kind:"wait",lockOwner:i,state:t.state,health:"missing"};if(r==="unhealthy"||r==="mismatch")return{kind:"unhealthy",health:r,...t.state!==void 0?{state:t.state}:{},...i!==void 0?{lockOwner:i}:{}};let s=r==="stale"?"stale":"missing",c=Le(e);if(!c){let m=G(e.lockFile)??Id(e);return m?{kind:"wait",lockOwner:m,...t.state!==void 0?{state:t.state}:{},health:s}:{kind:"unhealthy",health:"unhealthy",...t.state!==void 0?{state:t.state}:{}}}try{return we(e).mode!=="daemon"?{kind:"unhealthy",health:"unhealthy",...t.state!==void 0?{state:t.state}:{}}:bd(e,n,t,s)}finally{Ke(e,c)}}o(di,"claimRuntimeDaemonOwnership");function bd(e,n,t,r){let i=G(e.lockFile);if(r==="stale"){if(i!==void 0&&(t.observedLockOwner!==void 0&&!Wt(i,t.observedLockOwner)||t.state!==void 0&&!Xt(i,t.state)))return zn(i,t,r);Go(e)}else if(i!==void 0){if(t.observedLockOwner!==void 0&&!Xt(i,t.observedLockOwner))return zn(i,t,r);if(t.lockOwnerPidAlive===!1)Go(e);else return zn(i,t,r)}if(r==="missing"){let m=G(e.lockFile);if(m!==void 0)return{kind:"wait",lockOwner:m,...t.state!==void 0?{state:t.state}:{},health:r}}let s=ii(e,n);if(s)return{kind:"claim",lock:s,health:r};let c=G(e.lockFile);return c?zn(c,t,r):{kind:"unhealthy",health:"unhealthy",...t.state!==void 0?{state:t.state}:{}}}o(bd,"claimAvailableRuntimeDaemonOwnership");function zn(e,n,t){return{kind:"wait",lockOwner:e,...n.state!==void 0?{state:n.state}:{},health:t}}o(zn,"waitForRuntimeOwner");function Xt(e,n){return e.runtimeId===n.runtimeId&&e.pid===n.pid}o(Xt,"sameRuntimeOwner");function Wt(e,n){return e===void 0||n===void 0?e===n:e.runtimeId===n.runtimeId&&e.pid===n.pid&&e.createdAt===n.createdAt&&e.kind===n.kind}o(Wt,"sameRuntimeLockOwner");function Go(e){A.rmSync(e.lockFile,{force:!0}),A.rmSync(e.stateFile,{force:!0}),A.rmSync(e.tokenFile,{force:!0})}o(Go,"removeRuntimeDaemonOwnershipFiles");function Pd(e){A.rmSync(e.stateFile,{force:!0}),A.rmSync(e.tokenFile,{force:!0})}o(Pd,"removeRuntimeDaemonStateFiles");function Zn(e){return e.state?e.endpointReachable&&!e.identityMatches?"mismatch":e.pidAlive&&e.endpointReachable&&e.identityMatches?"healthy":!e.pidAlive&&!e.endpointReachable?"stale":"unhealthy":"missing"}o(Zn,"classifyRuntimeDaemonHealth");function Ed(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let n=e;return typeof n.runtimeId=="string"&&typeof n.profile=="string"&&typeof n.pid=="number"&&typeof n.startedAt=="string"&&typeof n.endpoint=="string"&&typeof n.version=="string"&&Ad(n.status)&&(n.configHome===void 0||typeof n.configHome=="string")&&(n.lastError===void 0||typeof n.lastError=="string")}o(Ed,"isRuntimeDaemonState");function Dd(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let n=e;return typeof n.time=="string"&&xd(n.level)&&typeof n.message=="string"&&(n.data===void 0||Td(n.data))}o(Dd,"isRuntimeDaemonLogEntry");function xd(e){return e==="info"||e==="warn"||e==="error"}o(xd,"isRuntimeDaemonLogLevel");function Td(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}o(Td,"isPlainRecord");function ui(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let n=e;return typeof n.runtimeId=="string"&&typeof n.pid=="number"&&typeof n.createdAt=="string"}o(ui,"isRuntimeDaemonLockOwner");function Ad(e){return e==="starting"||e==="ready"||e==="draining"||e==="stopping"||e==="unhealthy"||e==="crashed"}o(Ad,"isRuntimeDaemonStatus");function Cd(e){return e==="starting"||e==="draining"||e==="stopping"}o(Cd,"isRuntimeDaemonTransitionStatus");function Jt(e){return e instanceof Error&&"code"in e}o(Jt,"isNodeFileError");function zt(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}o(zt,"isRecord");import{createHash as Od,randomUUID as an}from"node:crypto";import*as cn from"node:fs/promises";import*as Dn from"node:net";import _d from"node:os";import ci from"node:path";import{StringDecoder as Vt}from"node:string_decoder";var Md=8*1024*1024,un=class extends Error{constructor(t,r,i){super(t);this.code=r;this.data=i;this.name="RuntimeDaemonTransportError"}code;data;static{o(this,"RuntimeDaemonTransportError")}};function Qt(e){return e instanceof un}o(Qt,"isRuntimeDaemonTransportError");function ln(e="default",n){let t=Ut(e),r=n===void 0?t:`${t}-${Ld(ci.resolve(n))}`;return process.platform==="win32"?{kind:"pipe",path:`\\\\.\\pipe\\kodax-runtime-${r}`}:{kind:"unix",path:ci.join(_d.tmpdir(),`kodax-runtime-${process.getuid?.()??"user"}-${r}.sock`)}}o(ln,"defaultRuntimeDaemonEndpoint");function Ld(e){return Od("sha256").update(e).digest("hex").slice(0,12)}o(Ld,"shortPathHash");function mi(e,n={}){let t="",r=0,i=new Vt("utf8"),s=n.maxFrameBytes??Md;if(!Number.isSafeInteger(s)||s<=0)throw new Error("Runtime daemon maxFrameBytes must be a positive safe integer.");let c=o(f=>{Nd(f,s),f.trim()&&e(Ho(f))},"consumeLine"),m=o(f=>{t+=f,r+=Buffer.byteLength(f,"utf8")},"append");return{push(f){for(typeof f=="string"?(m(i.end()),i=new Vt("utf8"),m(f)):m(i.write(f));;){let d=t.indexOf(`
|
|
60
|
+
`);if(d<0)break;let u=t.slice(0,d).replace(/\r$/,""),a=t.slice(0,d+1);t=t.slice(d+1),r-=Buffer.byteLength(a,"utf8"),c(u)}fi(r,s)},flush(){m(i.end()),i=new Vt("utf8");let f=t.trim();t="",r=0,f.length>0&&c(f)}}}o(mi,"createRuntimeDaemonFrameParser");async function Ae(e,n={}){let t=Dn.createConnection(e.path);t.setEncoding("utf8");let r=new Promise(v=>{t.once("close",()=>v())});await Fd(t,n.connectTimeoutMs);let i=!1,s,c=`transport_${an().replace(/-/g,"")}`,m=an().replace(/-/g,"")+an().replace(/-/g,""),f=`connection_${an().replace(/-/g,"")}`,d=new Set,u=new Set,a={state:"connected",connectionId:f,reconnectable:!1},g=o((v,p)=>{if(a.state!=="disconnected"){a={state:"disconnected",connectionId:f,reason:v,reconnectable:p};for(let h of u)try{h(a)}catch{te({source:"runtime.daemon.transport",level:"warn",message:"Runtime transport lifecycle listener failed."})}}},"disconnect"),l=new Map,y=mi(v=>{if(Ze(v)){let p=l.get(v.id);if(!p)return;l.delete(v.id),p.resolve(v.result);return}if(en(v)){if(!v.id)return;let p=l.get(v.id);if(!p)return;l.delete(v.id),p.reject(new un(v.error.message,v.error.code,v.error.data));return}if(Pn(v))for(let p of d)try{p(v)}catch{te({source:"runtime.daemon.transport",level:"warn",message:"Runtime transport notification listener failed."})}},{maxFrameBytes:n.maxFrameBytes});return t.on("data",v=>{try{y.push(v)}catch(p){i=!0;let h=dn(p);g(h.message,!0),et(l,h),t.destroy(h)}}),t.on("close",()=>{i=!0,g("Runtime daemon transport closed.",!0),et(l,new Error("Runtime daemon transport closed."))}),t.on("error",v=>{i=!0,g(v.message,!0),et(l,v)}),{request(v,p,h){if(i)return Promise.reject(new Error("Runtime daemon transport is closed."));let k=`req_${an().replace(/-/g,"").slice(0,12)}`,P=v==="initialize"||v==="runtime.initialize"?jd(p,c,m):p,w=h??(s!==void 0&&$e(v)?{operationId:`op_${an().replace(/-/g,"")}`,journalEpoch:s}:void 0),S=Un(k,v,P,w),T;try{T=JSON.stringify(S)}catch(L){return Promise.reject(new un(`Runtime daemon request params are not JSON-serializable: ${dn(L).message}`,"invalid_params"))}let M=new Promise((L,O)=>{l.set(k,{resolve:L,reject:O})});return t.write(`${T}
|
|
61
|
+
`),M.then(L=>{if(v==="initialize"||v==="runtime.initialize"){let O=nt(L);typeof O?.journalEpoch=="string"&&(s=O.journalEpoch)}return L})},subscribe(v){return d.add(v),{close(){d.delete(v)}}},subscribeLifecycle(v){return u.add(v),v(a),{close(){u.delete(v)}}},async close(){let v;if(!i){i=!0,g("Runtime daemon transport closed by client.",!1);try{y.flush()}catch(p){v=dn(p)}t.end(),t.destroy(),et(l,new Error("Runtime daemon transport closed."))}if(await r,u.clear(),v!==void 0)throw v}}}o(Ae,"createRuntimeDaemonSocketClientTransport");function jd(e,n,t){let r=nt(e)??{},i=nt(r.capabilities)??{},s=nt(r.clientInfo)??{name:"kodax-transport"};return{...r,capabilities:{...i,operationDeduplication:!0},clientInfo:{...s,instanceId:typeof s.instanceId=="string"?s.instanceId:n,instanceSecret:typeof s.instanceSecret=="string"?s.instanceSecret:t}}}o(jd,"withDurableOperationCapability");function nt(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:void 0}o(nt,"asRecord");async function pi(e){await $d(e.endpoint);let n=Dn.createServer(),t=new Set,r=new Set,i=!1;if(n.on("connection",s=>{if(i){s.destroy();return}t.add(s);let c=!1,m=o(a=>{if(s.destroyed)return;let g;try{g=JSON.stringify(a)}catch(l){let y=Me({code:"internal_error",message:`Runtime daemon response is not JSON-serializable: ${dn(l).message}`},a.kind==="response"||a.kind==="error"?a.id:void 0);g=JSON.stringify(y)}s.write(`${g}
|
|
62
|
+
`)},"send"),f=e.createDispatcher(a=>m(a));r.add(f);let d=mi(a=>{if($t(a)){f.handle(a).then(m,g=>{m(Me({code:"internal_error",message:dn(g).message}))});return}if(en(a)){m(a);return}m(Me({code:"invalid_request",message:"Runtime daemon server expects request frames from clients."}))},{maxFrameBytes:e.maxFrameBytes}),u=o(a=>{if(c)return;c=!0;let g=dn(a);m(Me({code:"invalid_frame",message:g.message,...Qt(g)&&g.data!==void 0?{data:g.data}:{}})),s.end()},"rejectInvalidFrame");s.on("data",a=>{if(!c)try{d.push(a)}catch(g){u(g)}}),s.on("end",()=>{try{d.flush()}catch(a){u(a)}}),s.on("close",()=>{t.delete(s),r.delete(f),f.close()}),s.on("error",()=>{s.destroy()})}),await Hd(n,e.endpoint.path),e.endpoint.kind==="unix")try{await cn.chmod(e.endpoint.path,384)}catch(s){throw await li(n),s}return{endpoint:e.endpoint,connectionCount(){return t.size},unref(){n.unref()},async close(){if(!i){i=!0;for(let s of r)s.close();r.clear();for(let s of t)s.destroy();t.clear(),await li(n)}}}}o(pi,"createRuntimeDaemonSocketServer");function Nd(e,n){fi(Buffer.byteLength(e,"utf8"),n)}o(Nd,"assertFrameSize");function fi(e,n){if(!(e<=n))throw new un(`Runtime daemon frame exceeds the ${n}-byte limit.`,"invalid_frame",{actualBytes:e,maxFrameBytes:n})}o(fi,"assertFrameByteSize");function Fd(e,n=2e3){return new Promise((t,r)=>{let i=setTimeout(()=>{s(),e.destroy(),r(new Error("Timed out connecting to runtime daemon."))},n);i.unref?.();let s=o(()=>{clearTimeout(i),e.off("connect",c),e.off("error",m)},"cleanup"),c=o(()=>{s(),t()},"onConnect"),m=o(f=>{s(),r(f)},"onError");e.once("connect",c),e.once("error",m)})}o(Fd,"waitForConnect");function Hd(e,n){return new Promise((t,r)=>{let i=o(()=>{e.off("listening",s),e.off("error",c)},"cleanup"),s=o(()=>{i(),t()},"onListening"),c=o(m=>{i(),r(m)},"onError");e.once("listening",s),e.once("error",c),e.listen(n)})}o(Hd,"waitForListen");async function $d(e){if(e.kind!=="unix")return;let n;try{n=await cn.stat(e.path)}catch(t){if(Gt(t)&&t.code==="ENOENT")return;throw t}if(!n.isSocket())throw new Error(`Runtime daemon Unix endpoint exists and is not a socket: ${e.path}`);if(await qd(e.path))throw new Error(`Runtime daemon Unix endpoint is already accepting connections: ${e.path}`);try{await cn.unlink(e.path)}catch(t){if(!Gt(t)||t.code!=="ENOENT")throw t}}o($d,"prepareUnixSocketEndpoint");function qd(e){return new Promise((n,t)=>{let r=Dn.createConnection(e),i=setTimeout(()=>{s(),r.destroy(),t(new Error(`Timed out probing runtime daemon Unix endpoint: ${e}`))},250);i.unref?.();let s=o(()=>{clearTimeout(i),r.off("connect",c),r.off("error",m)},"cleanup"),c=o(()=>{s(),r.end(),r.destroy(),n(!0)},"onConnect"),m=o(f=>{if(s(),r.destroy(),Gt(f)&&(f.code==="ECONNREFUSED"||f.code==="ENOENT")){n(!1);return}t(f)},"onError");r.once("connect",c),r.once("error",m)})}o(qd,"unixSocketAcceptsConnections");function li(e){return new Promise((n,t)=>{e.close(r=>{r?t(r):n()})})}o(li,"closeNetServer");function et(e,n){for(let t of e.values())t.reject(n);e.clear()}o(et,"rejectPending");function dn(e){return e instanceof Error?e:new Error(String(e))}o(dn,"normalizeTransportError");function Gt(e){return e instanceof Error&&"code"in e}o(Gt,"isNodeFileError");async function tt(e,n={}){let t=oi(e);if(!t)return{pidAlive:!1,endpointReachable:!1,identityMatches:!1};let r=G(e.lockFile),i=(n.isPidAlive??Ri)(t.pid),s=Xe(t),c=En(e),m;try{m=await(n.createTransport?n.createTransport(s):Ae(s,{connectTimeoutMs:n.connectTimeoutMs??1e3}));let f=m.request("initialize",{profile:t.profile,connectionPurpose:"probe",...c!==void 0?{token:c}:{}});f.catch(()=>{});let d=await Kd(f,n.handshakeTimeoutMs??1e3,"Timed out waiting for runtime daemon handshake.");return{state:t,pidAlive:i,endpointReachable:!0,identityMatches:Xd(d,t)&&Bd(r,t),...r!==void 0?{observedLockOwner:r}:{}}}catch(f){return Qt(f)&&f.code==="unauthorized"?{state:t,pidAlive:i,endpointReachable:!0,identityMatches:!1,...r!==void 0?{observedLockOwner:r}:{}}:{state:t,pidAlive:i,endpointReachable:!1,identityMatches:!1,...r!==void 0?{observedLockOwner:r}:{}}}finally{await m?.close?.()}}o(tt,"observeRuntimeDaemonHealth");async function Yt(e,n,t={}){let r=await tt(e,t),i=r.state?void 0:G(e.lockFile),s=i?{...r,observedLockOwner:i,lockOwnerPidAlive:(t.isPidAlive??Ri)(i.pid)}:r;return di(e,n,s)}o(Yt,"resolveRuntimeDaemonOwnership");function Xe(e){return{kind:process.platform==="win32"||e.endpoint.startsWith("\\\\.\\pipe\\")?"pipe":"unix",path:e.endpoint}}o(Xe,"runtimeDaemonEndpointFromState");function Ri(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch(n){return Ud(n)&&n.code==="EPERM"}}o(Ri,"isRuntimeDaemonPidAlive");async function Kd(e,n,t){let r;try{return await Promise.race([e,new Promise((i,s)=>{r=setTimeout(()=>s(new Error(t)),n),r.unref?.()})])}finally{r!==void 0&&clearTimeout(r)}}o(Kd,"withTimeout");function Xd(e,n){let t=gi(e),r=gi(t?.identity)??t;return r?.runtimeId===n.runtimeId&&r.profile===n.profile}o(Xd,"daemonIdentityMatchesState");function Bd(e,n){return e?.runtimeId===n.runtimeId&&e.pid===n.pid}o(Bd,"runtimeDaemonLockMatchesState");function gi(e){if(!(e===null||typeof e!="object"||Array.isArray(e)))return e}o(gi,"asRecord");function Ud(e){return e instanceof Error&&"code"in e}o(Ud,"isNodeProcessError");import us from"node:path";import{randomUUID as On}from"node:crypto";var R={type:"string"},X={type:"boolean"},Z={type:"integer"},E={type:"object",additionalProperties:!0},yi={},me={type:"array",items:E},xn={oneOf:[{type:"null"},E]},ie=I({ok:X},["ok"]),ee=I({}),ot={initialize:{params:I({profile:R,token:R,autoStart:X,endpoint:R,connectionPurpose:{type:"string",enum:["client","probe"]},clientInfo:E,capabilities:E},[],!0),result:I({identity:E,capabilities:E},["identity","capabilities"],!0)},"runtime.initialize":{params:I({profile:R,token:R,autoStart:X,endpoint:R,connectionPurpose:{type:"string",enum:["client","probe"]},clientInfo:E,capabilities:E},[],!0),result:I({identity:E,capabilities:E},["identity","capabilities"],!0)},ping:{params:ee,result:I({ok:X,runtimeId:R},["ok","runtimeId"])},"runtime.identity":{params:ee,result:E},"runtime.status":{params:ee,result:E},"runtime.shutdown":{params:ee,result:ie},"runtime.capabilities":{params:ee,result:E},"daemon.status":{params:ee,result:E},"daemon.stop":{params:ee,result:ie},"daemon.logs":{params:ee,result:E},"daemon.preflight":{params:ee,result:E},"daemon.management.get":{params:ee,result:I({runtimeId:R,revision:Z,ownerPolicy:Si(),owner:Yd(),preflight:E},["runtimeId","revision","ownerPolicy","owner","preflight"])},"daemon.rollbackToInline":{params:I({expectedRuntimeId:R,expectedRevision:Z,expectedOwnerPolicyRevision:Z},["expectedRuntimeId","expectedRevision","expectedOwnerPolicyRevision"]),result:I({accepted:{type:"boolean",enum:[!0]},runtimeId:R,revision:Z,ownerPolicy:Si("inline")},["accepted","runtimeId","revision","ownerPolicy"])},"operation.get":{params:I({operationId:R,journalEpoch:R},["operationId","journalEpoch"]),result:E},"session.create":{params:Gd(),result:Ue()},"session.load":{params:I({sessionId:R},["sessionId"]),result:Ue()},"session.list":{params:Qd(),result:Ce(Ue())},"session.transcript":{params:I({sessionId:R},["sessionId"]),result:xn},"session.observe":{params:I({sessionId:R},["sessionId"]),result:E},"session.fork":{params:Zd(),result:pe(Ue())},"session.notice.append":{params:I({sessionId:R,content:R,source:R},["sessionId","content"]),result:xn},"session.rewind":{params:I({sessionId:R,selector:R},["sessionId"]),result:pe(Ue())},"session.active_entry.set":{params:ki(),result:pe(Ue())},"session.activeEntry.set":{params:ki(),result:pe(Ue())},"session.compact":{params:eu(),result:E},"session.archive":{params:I({sessionId:R},["sessionId"]),result:ie},"session.unarchive":{params:I({sessionId:R},["sessionId"]),result:ie},"session.delete":{params:I({sessionId:R},["sessionId"]),result:ie},"session.settings.get":{params:I({sessionId:R},["sessionId"]),result:E},"session.settings.getVersioned":{params:I({sessionId:R},["sessionId"]),result:E},"session.settings.update":{params:I({sessionId:R,patch:E},["sessionId","patch"]),result:E},"session.settings.updateVersioned":{params:I({sessionId:R,patch:E,expectedRevision:Z},["sessionId","patch","expectedRevision"]),result:E},"run.start":{params:nu(),result:Vd()},"run.input.submit":{params:I({sessionId:R,afterRunId:R,delivery:{type:"string",enum:["after_turn","interrupt"]},input:yi,credential:E,hostTools:E},["sessionId","afterRunId","delivery","input"]),result:E},"run.get":{params:Be(),result:Ii()},"run.list":{params:tu(),result:Ce(Ii())},"run.await":{params:Be(),result:ru()},"run.abort":{params:Be(),result:ie},"run.model.set":{params:I({runId:R,model:R},["runId"],!0),result:ie},"run.provider.set":{params:I({runId:R,provider:R},["runId","provider"]),result:ie},"run.reasoning.set":{params:I({runId:R,reasoning:R},["runId"],!0),result:ie},"run.setModel":{params:I({runId:R,model:R},["runId"],!0),result:ie},"run.setProvider":{params:I({runId:R,provider:R},["runId","provider"]),result:ie},"run.setReasoning":{params:I({runId:R,reasoning:R},["runId"],!0),result:ie},"event.subscribe":{params:wi(Ci()),result:vi()},"event.unsubscribe":{params:I({subscriptionId:R},["subscriptionId"]),result:ie},"event.replay":{params:ou(),result:Ce(iu())},"permission.list":{params:Zt(),result:Ce(bi())},"permission.listPending":{params:Zt(),result:Ce(bi())},"permission.request":{params:Oi(),result:Pi()},"permission.respond":{params:I({requestId:R,runId:R,decision:Pi()},["requestId","decision"]),result:X},"permission.grants.list":{params:ee,result:E},"permission.grants.revoke":{params:I({grantId:R,expectedRevision:Z},["grantId","expectedRevision"]),result:X},"user_input.listPending":{params:Zt(),result:Ce(E)},"user_input.respond":{params:I({requestId:R,answer:yi,runId:R,expectedRevision:Z},["requestId","answer"],!0),result:E},"user_input.dismiss":{params:I({requestId:R,runId:R,expectedRevision:Z},["requestId"],!0),result:E},"credential.register":{params:I({leaseId:R,providers:{type:"array",items:R},expiresAt:R},["leaseId","providers"],!0),result:E},"credential.get":{params:I({leaseId:R},["leaseId"]),result:{oneOf:[E,{type:"null"}]}},"credential.revoke":{params:I({leaseId:R},["leaseId"]),result:X},"credential.supply":{params:I({requestId:R,credential:R,error:R},["requestId"],!0),result:ie},"host_tool.register":{params:I({leaseId:R,tools:{type:"array",items:E}},["leaseId","tools"]),result:E},"host_tool.get":{params:I({leaseId:R},["leaseId"]),result:{oneOf:[E,{type:"null"}]}},"host_tool.invocation.get":{params:I({invocationId:R},["invocationId"]),result:{oneOf:[E,{type:"null"}]}},"host_tool.revoke":{params:I({leaseId:R},["leaseId"]),result:X},"host_tool.complete":{params:I({invocationId:R,result:E,error:R},["invocationId"],!0),result:ie},"workflow.list":{params:Ei(),result:me},"workflow.get":{params:Be(),result:{oneOf:[E,{type:"null"}]}},"workflow.subscribe":{params:wi(Ei()),result:vi()},"workflow.unsubscribe":{params:I({subscriptionId:R},["subscriptionId"]),result:ie},"workflow.pause":{params:Be(),result:X},"workflow.resume":{params:Be(),result:X},"workflow.stop":{params:Be(),result:X},"config.read":{params:ee,result:E},"config.patch":{params:I({patch:E},["patch"]),result:E},"config.reload":{params:ee,result:I({ok:X,config:E},["ok","config"])},"model.list":{params:I({provider:R},[],!0),result:{oneOf:[E,me]}},"provider.list":{params:ee,result:me},"provider.custom.list":{params:ee,result:me},"provider.custom.upsert":{params:I({config:E},["config"]),result:E},"provider.custom.remove":{params:I({name:R},["name"]),result:X},"mcp.server.list":{params:ee,result:E},"mcp.server.get":{params:I({name:R},["name"]),result:{oneOf:[E,{type:"null"}]}},"mcp.server.validate":{params:I({name:R,config:E},["name","config"]),result:{oneOf:[I({ok:X,config:E},["ok","config"],!0),I({ok:X,error:R},["ok","error"],!0)]}},"mcp.server.upsert":{params:I({name:R,config:E},["name","config"]),result:E},"mcp.server.delete":{params:I({name:R},["name"]),result:X},"mcp.server.remove":{params:I({name:R},["name"]),result:X},"mcp.server.reload":{params:ee,result:I({ok:X,servers:me},["ok","servers"])},"mcp.tool.list":{params:I({server:R,forceRefresh:X},[],!0),result:me},"extension.list":{params:ee,result:I({active:X,extensions:me,diagnostics:E},["active","extensions"],!0)},"extension.reload":{params:ee,result:I({ok:X,active:X},["ok","active"],!0)},"command.list":{params:I({projectRoot:R},[],!0),result:me},"command.resolve":{params:I({name:R,projectRoot:R},["name"],!0),result:xn},"skill.list":{params:I({projectRoot:R,userInvocableOnly:X},[],!0),result:me},"skill.describe":{params:I({name:R,projectRoot:R},["name"],!0),result:xn},"skill.read":{params:I({name:R,projectRoot:R},["name"],!0),result:xn},"artifact.create":{params:I({kind:{enum:["image","file","video"]},path:R,mediaType:R,mimeType:R,name:R,source:{enum:["user-inline","clipboard","drag-drop","file-picker"]},description:R},["kind","path"]),result:Di()},"artifact.get":{params:I({artifactId:R},["artifactId"]),result:pe(Di())},"artifact.delete":{params:I({artifactId:R},["artifactId"]),result:X},"agentRegistrations.list":{params:ee,result:me},"agentRegistrations.upsert":{params:I({registration:E,expectedConfigurationRevision:pe(R),expectedManagementOwner:pe(R)},["registration"]),result:E},"agentRegistrations.setEnabled":{params:I({agentId:R,enabled:X,expectedConfigurationRevision:pe(R),expectedManagementOwner:pe(R),claimOwner:R},["agentId","enabled"]),result:pe(E)},"agentRegistrations.remove":{params:I({agentId:R,expectedConfigurationRevision:pe(R),expectedManagementOwner:pe(R)},["agentId"]),result:X},"agents.listDispatchable":{params:E,result:me},"agents.describe":{params:I({agentId:R,query:E},["agentId","query"]),result:pe(E)},"agents.preflight":{params:E,result:E},"agentTasks.list":{params:E,result:me},"agentTasks.start":{params:E,result:E},"agentTasks.get":{params:I({taskId:R},["taskId"]),result:E},"agentTasks.events":{params:I({taskId:R,cursor:Z},["taskId"],!0),result:me},"agentTasks.wait":{params:I({taskId:R,timeoutMs:Z},["taskId"],!0),result:E},"agentTasks.sendInput":{params:I({taskId:R,input:E},["taskId","input"]),result:E},"agentTasks.cancel":{params:I({taskId:R,reason:R},["taskId"],!0),result:E},"agentTasks.reconcile":{params:I({taskId:R},["taskId"]),result:E},"context.budget.get":{params:hi(),result:{oneOf:[E,{type:"null"}]}},"tool.exposure.preview":{params:hi(),result:{oneOf:[E,{type:"null"}]}}},xi={event:I({subscriptionId:R,event:E},["subscriptionId","event"]),"credential.request":E,"host_tool.invoke":E,"runtime.warning":E},Ti={protocol:_e,version:1,methods:ot,notifications:xi},Wd=JSON.stringify(Ti,null,2);function Jd(){return Ye}o(Jd,"listRuntimeDaemonSchemaMethods");function mn(e,n,t="$"){if(e.oneOf!==void 0)return e.oneOf.filter(c=>mn(c,n,t).length===0).length===1?[]:[`${t} must match exactly one allowed schema.`];if(e.enum!==void 0&&!e.enum.some(s=>Object.is(s,n)))return[`${t} must be one of: ${e.enum.map(String).join(", ")}.`];let r=e.type===void 0?[]:Array.isArray(e.type)?e.type:[e.type];if(r.length>0&&!r.some(s=>zd(s,n)))return[`${t} must be ${r.join(" or ")}.`];if(Array.isArray(n)){let s=e.items;return s===void 0?[]:n.flatMap((c,m)=>mn(s,c,`${t}[${m}]`))}if(!Ai(n))return[];let i=[];for(let s of e.required??[])(!Object.prototype.hasOwnProperty.call(n,s)||n[s]===void 0)&&i.push(`${t}.${s} is required.`);for(let[s,c]of Object.entries(n)){if(c===void 0)continue;let m=e.properties?.[s];if(m!==void 0){i.push(...mn(m,c,`${t}.${s}`));continue}e.additionalProperties===!1?i.push(`${t}.${s} is not allowed.`):typeof e.additionalProperties=="object"&&i.push(...mn(e.additionalProperties,c,`${t}.${s}`))}return i}o(mn,"validateRuntimeDaemonJsonSchema");function zd(e,n){switch(e){case"array":return Array.isArray(n);case"boolean":return typeof n=="boolean";case"integer":return typeof n=="number"&&Number.isInteger(n);case"null":return n===null;case"number":return typeof n=="number"&&Number.isFinite(n);case"object":return Ai(n);case"string":return typeof n=="string"}}o(zd,"matchesJsonSchemaType");function Ai(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}o(Ai,"isJsonObject");function I(e,n=[],t=!1){return{type:"object",properties:e,required:n,additionalProperties:t}}o(I,"objectSchema");function Be(){return I({runId:R},["runId"])}o(Be,"runIdParamsSchema");function wi(e){return I({filter:e})}o(wi,"filterParamsSchema");function hi(){return I({sessionId:R,runId:R},[],!0)}o(hi,"diagnosticParamsSchema");function vi(){return I({subscriptionId:R},["subscriptionId"])}o(vi,"subscriptionSchema");function Vd(){return I({runId:R,sessionId:R,turnId:R},["runId","sessionId"],!0)}o(Vd,"runStartedSchema");function Ce(e){return{type:"array",items:e}}o(Ce,"arraySchema");function pe(e){return{oneOf:[{type:"null"},e]}}o(pe,"nullableSchema");function Gd(){return I({sessionId:R,title:R,projectPath:R,gitRoot:R,surface:R,profileId:R,tag:R})}o(Gd,"createSessionParamsSchema");function Ue(){return I({id:R,cursor:R,title:R,gitRoot:R,workspaceRoot:R,surface:R,profileId:R,createdAt:R,msgCount:Z,tag:R,projectKey:R,archived:X},["id","title"],!0)}o(Ue,"sessionSchema");function Qd(){return I({projectRoot:R,scope:{enum:["user","managed-task-worker","all"]},includeArchived:X,limit:Z,before:R,tag:R,surface:R,cursor:R})}o(Qd,"sessionFilterSchema");function Si(e){return I({mode:{type:"string",enum:e===void 0?["daemon","inline"]:[e]},revision:Z,updatedAt:R},["mode","revision","updatedAt"])}o(Si,"ownerPolicySchema");function Yd(){return I({runtimeId:R,pid:Z,createdAt:R,kind:{type:"string",enum:["daemon","inline"]}},["runtimeId","pid","createdAt"])}o(Yd,"ownerIdentitySchema");function Zd(){return I({sessionId:R,selector:R,newSessionId:R,title:R},["sessionId"])}o(Zd,"forkSessionParamsSchema");function ki(){return I({sessionId:R,entryId:R},["sessionId","entryId"])}o(ki,"activeEntryParamsSchema");function eu(){return I({sessionId:R,provider:R,model:R,customInstructions:R,contextWindow:Z},["sessionId"])}o(eu,"compactSessionParamsSchema");function nu(){return I({sessionId:R,prompt:R,input:{oneOf:[E,Ce(E)]},mode:{enum:["coding","managed_task"]},permissionBroker:{enum:["runtime","client"]},options:E},["sessionId"],!0)}o(nu,"startRunParamsSchema");function tu(){return I({sessionId:R,phase:{oneOf:[rt(),Ce(rt())]}})}o(tu,"runFilterSchema");function Ii(){return I({runId:R,sessionId:R,turnId:R,phase:rt(),startedAt:R,endedAt:R,provider:R,model:R,reasoning:R,error:R},["runId","sessionId","phase","startedAt","provider"],!0)}o(Ii,"runStatusSchema");function ru(){return I({runId:R,sessionId:R,phase:rt(),result:E,error:{oneOf:[R,E]}},["runId","sessionId","phase"],!0)}o(ru,"runResultSchema");function rt(){return{enum:["queued","running","waiting_permission","waiting_user_input","completed","failed","cancelled","interrupted"]}}o(rt,"runPhaseSchema");function Ci(){return I({sessionId:R,runId:R,type:{oneOf:[R,Ce(R)]}})}o(Ci,"eventFilterSchema");function ou(){return I({...Ci().properties??{},sinceSeq:Z,limit:Z})}o(ou,"eventReplayFilterSchema");function iu(){return I({id:R,seq:Z,time:R,sessionId:R,runId:R,turnId:R,type:R,payload:{}},["id","seq","time","sessionId","runId","type","payload"],!0)}o(iu,"runtimeEventSchema");function Zt(){return I({sessionId:R,runId:R,toolName:R})}o(Zt,"permissionFilterSchema");function Oi(){return I({sessionId:R,runId:R,turnId:R,toolCallId:R,toolName:R,reason:R,risk:{enum:["low","medium","high"]},inputPreview:R,expiresAt:R,timeoutMs:Z},["sessionId","runId","toolName"])}o(Oi,"permissionRequestInputSchema");function bi(){return I({...Oi().properties??{},id:R,createdAt:R},["id","sessionId","runId","toolName","createdAt"],!0)}o(bi,"permissionRequestSchema");function Pi(){return{oneOf:[I({type:{enum:["allow_once"]}},["type"]),I({type:{enum:["allow_always"]},scope:I({toolName:R,sessionId:R})},["type","scope"]),I({type:{enum:["reject"]},reason:R},["type"])]}}o(Pi,"permissionDecisionSchema");function Ei(){return I({runId:R,activeOnly:X,limit:Z})}o(Ei,"workflowFilterSchema");function Di(){return I({id:R,kind:{enum:["image","file","video"]},path:R,sizeBytes:Z,mediaType:R,mimeType:R,name:R,source:{enum:["user-inline","clipboard","drag-drop","file-picker"]},description:R,createdAt:R},["id","kind","path","sizeBytes","createdAt"],!0)}o(Di,"artifactSchema");import{createHash as su,randomUUID as Tn}from"node:crypto";import*as ne from"node:fs";import au from"node:path";var du=6e4,uu=1048576,cu=64,lu=4096,_i=1e3;function nr(){return{callTimeoutMs:ji("KODAX_REVERSE_CALL_TIMEOUT_MS",du),maxResultBytes:ji("KODAX_HOST_TOOL_MAX_RESULT_BYTES",uu)}}o(nr,"runtimeDaemonReverseBridgeLimits");function tr(e,n={}){let t=nr(),r=new Map,i=new Map,s=new Map,c=new Map,m=new Map((n.initialInvocations??[]).map(w=>[w.invocationId,w])),f=new Set,d=new Map,u=new Map,a,g=!1,l=o(()=>{if(g)throw K("host_tool_unavailable","Host bridge connection is closed.")},"requireOpen"),y=o(()=>{let w=Date.now();for(let[S,T]of r)T.expiresAt!==void 0&&Date.parse(T.expiresAt)<=w&&r.delete(S)},"pruneExpiredCredentials"),v=o(w=>{for(let S of s.values())clearTimeout(S.timer),S.reject(K("credential_unavailable",w));s.clear()},"rejectPendingCredentialRequests"),p=o(()=>{for(let[w,S]of c)S.dispatched&&(c.delete(w),clearTimeout(S.timer),h(w,"unknown"),S.reject(K("host_tool_unknown","Host tool client disconnected; the side-effect outcome is unknown.")))},"rejectDispatchedHostCalls"),h=o((w,S)=>{let T=m.get(w);if(T===void 0)return;let M={...T,state:S,updatedAt:new Date().toISOString()},L=new Map(m);for(L.delete(w),L.set(w,M);L.size>_i;){let O=L.keys().next().value;if(O===void 0)break;L.delete(O)}n.onInvocationsChanged?.([...L.values()]),m.clear();for(let[O,F]of L)m.set(O,F)},"updateHostToolInvocation"),k=o((w,S)=>{let T=a;if(!(S.dispatched||T===void 0||!f.has(S.leaseId)))try{h(w,"dispatched"),S.dispatched=!0,T.notify(S.notification)}catch{c.delete(w),clearTimeout(S.timer),h(w,"unknown"),S.reject(K("host_tool_unknown","Host tool transport failed after durable dispatch; the side-effect outcome is unknown."))}},"dispatchPendingHostCall"),P=o(async w=>{if(l(),i.get(w.lease.id)!==w.lease)throw K("host_tool_unavailable","Host tool lease was revoked.");let S=`hostcall_${Tn().replace(/-/g,"")}`,T=bn("host_tool.invoke",{invocationId:S,leaseId:w.lease.id,toolName:w.descriptor.name,sessionId:w.sessionId,runId:w.runId,input:w.toolInput,sideEffect:w.descriptor.sideEffect}),M={invocationId:S,leaseId:w.lease.id,toolName:w.descriptor.name,sessionId:w.sessionId,runId:w.runId,state:"prepared",updatedAt:new Date().toISOString()},L=new Map(m);for(L.set(S,M);L.size>_i;){let b=L.keys().next().value;if(b===void 0)break;L.delete(b)}n.onInvocationsChanged?.([...L.values()]),m.clear();for(let[b,x]of L)m.set(b,x);let O=new Promise((b,x)=>{let D=setTimeout(()=>{let q=c.get(S);q&&(c.delete(S),h(S,q.dispatched?"unknown":"not_dispatched"),x(K(q.dispatched?"host_tool_unknown":"host_tool_unavailable",q.dispatched?`Host tool ${w.descriptor.name} did not return a certain result before timeout.`:`Host tool ${w.descriptor.name} had no connected host before timeout.`)))},t.callTimeoutMs);D.unref?.(),c.set(S,{invocationId:S,resolve:b,reject:x,timer:D,notification:T,leaseId:w.lease.id,dispatched:!1})}),F=c.get(S);return F&&k(S,F),O},"invokeHostTool");return e!==void 0&&(a={id:`bridge_${Tn().replace(/-/g,"")}`,notify:e}),{attachTransport(w){l(),a!==void 0&&(v("Credential client connection was replaced."),p());let S=`bridge_${Tn().replace(/-/g,"")}`;return a={id:S,notify:w},f.clear(),{close(){a?.id===S&&(a=void 0,f.clear(),v("Credential client disconnected."),p())}}},registerCredential(w){if(l(),y(),w.providers.length===0||w.providers.some(T=>T.trim().length===0)||new Set(w.providers).size!==w.providers.length)throw K("invalid_params","Credential lease providers must be non-empty and unique.");if(w.expiresAt!==void 0&&!Number.isFinite(Date.parse(w.expiresAt)))throw K("invalid_params","Credential lease expiresAt must be an ISO timestamp.");if(r.has(w.leaseId))throw K("conflict","Credential lease ID is already registered on this connection.");let S={id:w.leaseId,providers:[...w.providers],...w.expiresAt!==void 0?{expiresAt:w.expiresAt}:{},providerSet:new Set(w.providers)};return r.set(w.leaseId,S),Li(S)},getCredential(w){y();let S=r.get(w);return S===void 0?void 0:Li(S)},revokeCredential(w){return r.delete(w)},supplyCredential(w){let S=s.get(w.requestId);return S?(s.delete(w.requestId),clearTimeout(S.timer),w.credential!==void 0&&w.credential.length>0?S.resolve(w.credential):S.reject(K("credential_unavailable",w.error??"Credential broker returned no credential.")),!0):!1},async acquireCredential(w){l();let S=r.get(w.leaseId);if(!S||!S.providerSet.has(w.provider))throw K("credential_unavailable","Credential lease is missing or does not allow this provider.");if(S.expiresAt!==void 0&&Date.parse(S.expiresAt)<=Date.now())throw r.delete(S.id),K("credential_unavailable","Credential lease expired.");let T=a;if(!T)throw K("credential_unavailable","Credential broker transport is unavailable.");let M=`credreq_${Tn().replace(/-/g,"")}`,L=S.expiresAt===void 0?t.callTimeoutMs:Math.min(t.callTimeoutMs,Math.max(1,Date.parse(S.expiresAt)-Date.now())),O=new Promise((F,b)=>{let x=setTimeout(()=>{s.delete(M),b(K("credential_unavailable","Credential lease expired or broker timed out."))},L);x.unref?.(),s.set(M,{resolve:F,reject:b,timer:x})});try{T.notify(bn("credential.request",{requestId:M,leaseId:S.id,provider:w.provider,sessionId:w.sessionId,runId:w.runId}))}catch{let F=s.get(M);F&&(s.delete(M),clearTimeout(F.timer),F.reject(K("credential_unavailable","Credential request was not dispatched.")))}return O.then(F=>(d.set(w.runId,{leaseId:w.leaseId,provider:w.provider}),F))},registerHostTools(w){l();let S=w.tools.map(M=>M.name);if(S.length===0||S.length>cu||new Set(S).size!==S.length)throw K("invalid_params","Host tool names must be non-empty and unique.");if(i.has(w.leaseId))throw K("conflict","Host tool lease ID is already registered on this connection.");for(let M of w.tools)Ru(M);let T={id:w.leaseId,tools:w.tools.map(M=>({...M,inputSchema:{...M.inputSchema}})),byName:new Map(w.tools.map(M=>[M.name,M]))};return i.set(w.leaseId,T),f.add(w.leaseId),{id:T.id,tools:T.tools}},getHostTools(w){let S=i.get(w);if(S!==void 0){f.add(w);for(let[T,M]of c)M.leaseId===w&&k(T,M)}return S===void 0?void 0:{id:S.id,tools:S.tools}},revokeHostTools(w){return i.delete(w)},completeHostTool(w){let S=c.get(w.invocationId);if(!S)return!1;if(w.result!==void 0){if(typeof w.result.content!="string")throw K("invalid_params","Host tool result content must be a string.");yu(w.result,t.maxResultBytes,"Host tool result")}return c.delete(w.invocationId),clearTimeout(S.timer),w.result!==void 0?(h(w.invocationId,"completed"),S.resolve(w.result)):(h(w.invocationId,"unknown"),S.reject(K("host_tool_unknown",w.error??"Host tool result is unknown."))),!0},getHostToolInvocation(w){return m.get(w)},createHostToolRuntime(w){l();let S=i.get(w.leaseId);if(!S)throw K("host_tool_unavailable","Host tool lease is missing.");return u.set(w.runId,w.leaseId),{hasCapabilityProvider(T){return T==="mcp"},async searchCapabilities(T,M,L){if(T!=="mcp"||L?.kind!==void 0&&L.kind!=="tool")return[];let O=M.toLowerCase();return S.tools.filter(F=>F.name.toLowerCase().includes(O)||F.description.toLowerCase().includes(O)).slice(0,L?.limit??S.tools.length).map(F=>({id:wu(S.id,F.name),name:F.name,description:F.description,kind:"tool",server:"host",inputSchema:F.inputSchema}))},async describeCapability(T,M){if(T!=="mcp")return;let L=Ni(S,M);return L?{...L,id:M,kind:"tool",server:"host"}:void 0},async executeCapability(T,M,L){if(T!=="mcp")throw K("host_tool_unavailable","Unsupported host capability provider.");let O=Ni(S,M);if(!O)throw K("host_tool_unavailable","Host tool is not bound to this run.");return await P({lease:S,descriptor:O,sessionId:w.sessionId,runId:w.runId,toolInput:L})},async readCapability(){throw K("host_tool_unavailable","Host tools do not expose resource reads.")},async getCapabilityPrompt(){},async getCapabilityPromptContext(){}}},getRunRequirements(w){let S=d.get(w),T=u.get(w);if(!(S===void 0&&T===void 0))return{...S!==void 0?{credential:{...S,state:"ready"}}:{},...T!==void 0?{hostTools:{leaseId:T,state:i.has(T)?f.has(T)?"ready":"waiting_host":"expired"}}:{}}},close(){if(!g){g=!0,a=void 0,f.clear(),r.clear(),i.clear(),v("Credential client disconnected.");for(let w of c.values())clearTimeout(w.timer),h(w.invocationId,w.dispatched?"unknown":"not_dispatched"),w.reject(K(w.dispatched?"host_tool_unknown":"host_tool_unavailable",w.dispatched?"Host tool client disconnected; the side-effect outcome is unknown.":"Host tool client disconnected before dispatch."));c.clear(),m.clear()}}}}o(tr,"createRuntimeDaemonReverseBridge");function Fi(e={}){let n=new Map,t=pu(e.invocationStateFile),r=!1;return{attach(i){if(r)throw K("host_tool_unavailable","Host bridge hub is closed.");if(i.instanceSecret!==void 0&&(i.instanceSecret.length<32||i.instanceSecret.length>512))throw K("invalid_params","Runtime client instanceSecret must contain between 32 and 512 characters.");let s=i.instanceSecret===void 0?`ephemeral:${i.connectionId}`:`stable:${i.principalId}:${su("sha256").update(i.instanceSecret).digest("hex")}`,c=s.startsWith("stable:")?mu(t.get(s)??[]):[],m=n.get(s)??tr(void 0,{initialInvocations:c,...s.startsWith("stable:")?{onInvocationsChanged(d){t.set(s,d),Mi(e.invocationStateFile,t)}}:{}});!n.has(s)&&c.length>0&&(t.set(s,c),Mi(e.invocationStateFile,t)),n.set(s,m);let f=m.attachTransport(i.notify);return{bridge:m,close(){f.close()}}},getRunRequirements(i){for(let s of n.values()){let c=s.getRunRequirements(i);if(c!==void 0)return c}},close(){if(!r){r=!0;for(let i of n.values())i.close();n.clear()}}}}o(Fi,"createRuntimeDaemonReverseBridgeHub");function mu(e){let n=new Date().toISOString();return e.map(t=>t.state==="prepared"?{...t,state:"not_dispatched",updatedAt:n}:t.state==="dispatched"?{...t,state:"unknown",updatedAt:n}:t)}o(mu,"recoverHostToolInvocationStates");function pu(e){if(e===void 0||!ne.existsSync(e))return new Map;let n;try{n=JSON.parse(ne.readFileSync(e,"utf8"))}catch(r){throw new Error(`Host Tool invocation recovery store is untrusted: ${hu(r).message}`)}if(!er(n)||n.version!==1||!Array.isArray(n.clients))throw new Error("Host Tool invocation recovery store is untrusted: invalid root shape.");let t=new Map;for(let r of n.clients){if(!er(r)||typeof r.key!="string"||!Array.isArray(r.invocations))throw new Error("Host Tool invocation recovery store is untrusted: invalid client entry.");let i=r.invocations.map(fu);t.set(r.key,i)}return t}o(pu,"loadHostToolInvocationStore");function Mi(e,n){if(e===void 0)return;ne.mkdirSync(au.dirname(e),{recursive:!0});let t=`${e}.${process.pid}.${Tn()}.tmp`,r;try{r=ne.openSync(t,"wx",384),ne.writeFileSync(r,`${JSON.stringify({version:1,clients:[...n].map(([i,s])=>({key:i,invocations:s}))},null,2)}
|
|
63
|
+
`,"utf8"),ne.fsyncSync(r),ne.closeSync(r),r=void 0,ne.renameSync(t,e)}finally{r!==void 0&&ne.closeSync(r),ne.rmSync(t,{force:!0})}}o(Mi,"saveHostToolInvocationStore");function fu(e){if(!er(e)||typeof e.invocationId!="string"||typeof e.leaseId!="string"||typeof e.toolName!="string"||typeof e.sessionId!="string"||typeof e.runId!="string"||!gu(e.state)||typeof e.updatedAt!="string")throw new Error("Host Tool invocation recovery store is untrusted: invalid invocation entry.");return{invocationId:e.invocationId,leaseId:e.leaseId,toolName:e.toolName,sessionId:e.sessionId,runId:e.runId,state:e.state,updatedAt:e.updatedAt}}o(fu,"parseHostToolInvocationStatus");function gu(e){return e==="prepared"||e==="dispatched"||e==="completed"||e==="unknown"||e==="not_dispatched"}o(gu,"isHostToolInvocationState");function Li(e){return{id:e.id,providers:e.providers,...e.expiresAt!==void 0?{expiresAt:e.expiresAt}:{}}}o(Li,"publicCredentialLease");function Ru(e){if(!e.name||!e.description||!e.inputSchema)throw K("invalid_params","Host tool descriptors require name, description, and inputSchema.");if(!["none","idempotent","non_idempotent"].includes(e.sideEffect))throw K("invalid_params",`Invalid host tool sideEffect for ${e.name}.`);if(!/^[A-Za-z][A-Za-z0-9_.-]{0,127}$/.test(e.name))throw K("invalid_params","Host tool name is invalid.");if(e.description.length>lu)throw K("invalid_params",`Host tool description is too long: ${e.name}.`)}o(Ru,"validateHostToolDescriptor");function yu(e,n,t){let r;try{r=JSON.stringify(e)}catch{throw K("invalid_params",`${t} must be JSON-serializable.`)}if(Buffer.byteLength(r,"utf8")>n)throw K("invalid_params",`${t} exceeds the ${n}-byte limit.`)}o(yu,"assertJsonByteLimit");function ji(e,n){let t=process.env[e];if(t===void 0)return n;let r=Number(t);if(!Number.isSafeInteger(r)||r<=0)throw new Error(`${e} must be a positive integer.`);return r}o(ji,"positiveIntegerEnvironment");function wu(e,n){return`host:${e}:${n}`}o(wu,"hostToolCapabilityId");function Ni(e,n){let t=`host:${e.id}:`;return n.startsWith(t)?e.byName.get(n.slice(t.length)):void 0}o(Ni,"descriptorFromCapabilityId");function K(e,n){return Object.assign(new Error(n),{code:e})}o(K,"bridgeError");function er(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}o(er,"isRecord");function hu(e){return e instanceof Error?e:new Error(String(e))}o(hu,"normalizeError");var Hi=1e3,vu=["code","cli","repl","acp","a2a","sdk","ide","space-desktop"],Su=new Set(["ping","runtime.identity","runtime.status","runtime.capabilities","daemon.status"]),Gi=["session:observe","session:write","run:control","interaction:respond","permission:respond","permission:grant-admin","integration:admin","workflow:control","artifact:write","agent:control","credential:register","host-tool:register","owner:admin","daemon:admin"],Qi=new Map([...de("session:observe",["ping","runtime.identity","runtime.status","runtime.capabilities","daemon.status","daemon.logs","operation.get","session.load","session.list","session.transcript","session.observe","session.settings.get","session.settings.getVersioned","run.get","run.list","run.await","event.subscribe","event.unsubscribe","event.replay","permission.list","permission.listPending","permission.grants.list","user_input.listPending","workflow.list","workflow.get","workflow.subscribe","workflow.unsubscribe","context.budget.get","tool.exposure.preview","config.read","model.list","provider.list","provider.custom.list","mcp.server.list","mcp.server.get","mcp.tool.list","extension.list","command.list","command.resolve","skill.list","skill.describe","skill.read","artifact.get"]),...de("session:write",["session.create","session.fork","session.notice.append","session.rewind","session.active_entry.set","session.activeEntry.set","session.compact","session.archive","session.unarchive","session.delete","session.settings.update","session.settings.updateVersioned"]),...de("run:control",["run.start","run.input.submit","run.abort","run.model.set","run.provider.set","run.reasoning.set","run.setModel","run.setProvider","run.setReasoning","permission.request"]),...de("permission:respond",["permission.respond"]),...de("permission:grant-admin",["permission.grants.revoke"]),...de("interaction:respond",["user_input.respond","user_input.dismiss"]),...de("credential:register",["credential.register","credential.get","credential.revoke","credential.supply"]),...de("host-tool:register",["host_tool.register","host_tool.get","host_tool.invocation.get","host_tool.revoke","host_tool.complete"]),...de("integration:admin",["config.patch","config.reload","provider.custom.upsert","provider.custom.remove","mcp.server.validate","mcp.server.upsert","mcp.server.delete","mcp.server.remove","mcp.server.reload","extension.reload"]),...de("workflow:control",["workflow.pause","workflow.resume","workflow.stop"]),...de("artifact:write",["artifact.create","artifact.delete"]),...de("agent:control",["agentRegistrations.list","agentRegistrations.upsert","agentRegistrations.setEnabled","agentRegistrations.remove","agents.listDispatchable","agents.describe","agents.preflight","agentTasks.list","agentTasks.get","agentTasks.events","agentTasks.wait","agentTasks.start","agentTasks.sendInput","agentTasks.cancel","agentTasks.reconcile"]),...de("owner:admin",["daemon.rollbackToInline"]),...de("daemon:admin",["runtime.shutdown","daemon.stop","daemon.preflight","daemon.management.get"])]),$i=Ye.filter(e=>e!=="initialize"&&e!=="runtime.initialize"&&!Qi.has(e));if($i.length>0)throw new Error(`Runtime daemon methods are missing authorization scopes: ${$i.join(", ")}`);function de(e,n){return n.map(t=>[t,e])}o(de,"scopeEntries");function dr(){let e=new Map,n=o(()=>{if(!(e.size<=Hi))for(let[r,i]of e){if(e.size<=Hi)break;i.settled&&e.delete(r)}},"pruneSettled"),t=o((r,i)=>{e.get(r)===i&&(i.settled=!0,n())},"markSettled");return{remember(r,i){let s,c=i.finally(()=>{s&&t(r,s)});c.catch(()=>{}),s={promise:c,settled:!1},e.set(r,s),n()},get(r){return e.get(r)?.promise},clear(){e.clear()}}}o(dr,"createRuntimeDaemonRunResultStore");function An(e){return e==="initialize"||e==="runtime.initialize"}o(An,"isInitializeMethod");function Yi(e){let n=new Map,t=e.runResults??dr(),r=`connection_${On().replace(/-/g,"")}`,i=tr(e.notify),s=i,c,m=!1,f=!1,d="client",u={},a=`client_${On().replace(/-/g,"")}`,g,l,y=new Set(e.grantedScopes??Gi),v=o(P=>{let w=n.get(P);return w?(n.delete(P),w.close(),!0):!1},"closeSubscription"),p=o((P,w)=>{n.set(P,w)},"rememberSubscription"),h=o((P,w)=>{es(w)&&u.contextDiagnostics!==!0||e.notify?.(bn("event",{subscriptionId:P,event:w}))},"notify");return{handle:o(async P=>{try{Vi(P.method,"params",P.params===void 0?{}:P.params,"invalid_params");let w;if(!m&&!An(P.method))throw $("not_initialized","Runtime daemon connection must initialize before runtime methods are accepted.");if(m&&An(P.method))throw $("conflict","Runtime daemon connection is already initialized.");if(m&&d==="probe"&&!Su.has(P.method))throw $("unauthorized","Runtime daemon probe connections are read-only and method-limited.");if(An(P.method)){w=W(P.params),d=w?.connectionPurpose==="probe"?"probe":"client";let L=typeof w?.token=="string"?w.token:void 0;if(e.authToken!==void 0&&L!==e.authToken)throw $("unauthorized","Runtime daemon initialize token is invalid.");let O=typeof w?.profile=="string"?w.profile:void 0;if(O!==void 0&&O!==e.runtime.identity.profile)throw $("conflict",`Runtime daemon profile mismatch: expected ${e.runtime.identity.profile}, got ${O}.`);a=Eu(w?.clientInfo,a),g=Xu(w?.clientInfo),l=Bu(w?.clientInfo)}An(P.method)||(bu(P.method,y),Pu(P,y));let T=await ku(P,e,u,a,o(()=>Du(P,e,t,p,v,h,()=>u,a,g,l,s),"dispatch")),M=Vu(P.method,T);if(Vi(P.method,"result",M,"internal_error"),An(P.method)){if(u=Tu(w?.capabilities),d==="client"&&e.reverseBridgeHub!==void 0&&e.notify!==void 0&&(c=e.reverseBridgeHub.attach({principalId:a,connectionId:r,...Ki(w?.clientInfo)!==void 0?{instanceSecret:Ki(w?.clientInfo)}:{},notify:e.notify}),s=c.bridge,i.close()),d==="client"&&e.management!==void 0)try{e.management.attachClient(r),f=!0}catch(L){throw c?.close(),c=void 0,L}m=!0}return Fo(P.id,M)}catch(w){return Me(Gu(w),P.id)}},"handle"),close(){for(let P of[...n.keys()])v(P);c!==void 0?c.close():s.close(),f&&(e.management?.detachClient(r),f=!1)}}}o(Yi,"createRuntimeDaemonDispatcher");async function ku(e,n,t,r,i){let s=o(()=>n.management!==void 0&&Iu(e.method)?n.management.runMutation(e.method,i):i(),"execute");if(!$e(e.method)||n.requireOperationEnvelope!==!0)return s();if(t.operationDeduplication!==!0)throw $("client_upgrade_required","Runtime daemon mutations require durable operation support.");if(!e.operation)throw $("operation_required","Runtime daemon mutation is missing its operation envelope.");if(!n.controlJournal)throw $("internal_error","Runtime daemon control journal is unavailable.");return n.controlJournal.execute({operationId:e.operation.operationId,journalEpoch:e.operation.journalEpoch,principalId:r,method:e.method,...qi(e.params)!==void 0?{resourceId:qi(e.params)}:{},params:e.params??{}},{externalEffect:!0},s)}o(ku,"dispatchWithOperation");function Iu(e){return No(e)&&e!=="daemon.stop"&&e!=="runtime.shutdown"&&e!=="daemon.rollbackToInline"}o(Iu,"isManagedRuntimeMutation");function bu(e,n){let t=Qi.get(e);if(t===void 0)throw $("internal_error",`Runtime daemon method has no authorization scope: ${e}.`);if(!n.has(t))throw $("unauthorized",`Runtime daemon method requires scope ${t}.`)}o(bu,"requireRuntimeMethodScope");function Pu(e,n){if(e.method!=="permission.respond")return;let t=se(e.params)?e.params:void 0;if(!((t&&se(t.decision)?t.decision:void 0)?.type!=="allow_always"||n.has("permission:grant-admin")))throw $("unauthorized","Persistent permission grants require scope permission:grant-admin.")}o(Pu,"requirePersistentGrantScope");function qi(e){if(se(e)){for(let n of["sessionId","runId","taskId","artifactId","requestId","name"])if(typeof e[n]=="string"&&e[n].length>0)return e[n]}}o(qi,"operationResourceId");function Eu(e,n){if(!se(e))return n;let t=e.instanceId;return typeof t!="string"||!/^[A-Za-z0-9_.:-]{4,160}$/.test(t)?n:t}o(Eu,"parseRuntimeClientPrincipal");function Ki(e){if(!se(e))return;let n=e.instanceSecret;return typeof n=="string"?n:void 0}o(Ki,"parseRuntimeClientInstanceSecret");async function Du(e,n,t,r,i,s,c,m,f,d,u){let a=n.runtime,g=n.reverseBridgeHub??u;switch(e.method){case"initialize":case"runtime.initialize":return{identity:a.identity,capabilities:Bi(n.capabilities,a.agents.enabled,a.agents.enabled&&n.allowAgentRegistrationAdmin===!0,n.ownsA2AConfigReconciler===!0,n.controlJournal,n.reverseBridgeHub!==void 0,n.durableHostToolInvocations===!0,n.management!==void 0),principalId:m,...n.controlJournal!==void 0?{journalEpoch:n.controlJournal.journalEpoch}:{},grantedScopes:[...n.grantedScopes??Gi]};case"ping":return{ok:!0,runtimeId:a.identity.runtimeId};case"runtime.identity":return a.identity;case"daemon.status":case"runtime.status":return _u(await(n.status?n.status():a.status.snapshot()),g);case"daemon.stop":case"runtime.shutdown":return n.management?n.management.stop():n.stop?n.stop():a.close().then(()=>({ok:!0}));case"daemon.logs":return n.logs?n.logs():{entries:[]};case"daemon.preflight":return Mu(await(n.management?n.management.preflight():n.preflight?n.preflight():a.status.preflight()),g);case"daemon.management.get":if(!n.management)throw $("client_upgrade_required","Runtime daemon management is unavailable.");return n.management.inspect();case"daemon.rollbackToInline":{if(!n.management)throw $("client_upgrade_required","Runtime daemon rollback management is unavailable.");let l=_(e.params),y={expectedRuntimeId:N(l,"expectedRuntimeId"),expectedRevision:st(l,"expectedRevision"),expectedOwnerPolicyRevision:st(l,"expectedOwnerPolicyRevision")};return n.management.rollbackToInline(y)}case"runtime.capabilities":return Bi(n.capabilities,a.agents.enabled,a.agents.enabled&&n.allowAgentRegistrationAdmin===!0,n.ownsA2AConfigReconciler===!0,n.controlJournal,n.reverseBridgeHub!==void 0,n.durableHostToolInvocations===!0,n.management!==void 0);case"operation.get":{let l=_(e.params),y=N(l,"operationId"),v=N(l,"journalEpoch");if(!n.controlJournal)return a.operations.get({operationId:y,journalEpoch:v});if(v!==n.controlJournal.journalEpoch)throw $("operation_epoch_mismatch","Runtime operation belongs to another journal epoch.");let p=n.controlJournal.get(y);if(!p||p.principalId!==m)throw $("not_found","Runtime operation was not found.");return Au(p)}case"config.read":return n.config?ar(await n.config()):a.config.read();case"config.patch":{let l=ns(_(e.params),"patch");return a.config.patch(l)}case"config.reload":return a.config.reload();case"provider.list":return n.providerList?n.providerList():a.catalog.providers();case"model.list":return n.providerList?ju(await n.providerList(),W(e.params)):a.catalog.models(Fu(e.params));case"provider.custom.list":return a.catalog.customProviders();case"provider.custom.upsert":{let l=_(e.params);return a.catalog.upsertCustomProvider(_(l.config))}case"provider.custom.remove":return a.catalog.deleteCustomProvider(B(e.params,"name"));case"mcp.server.list":return a.mcp.listServers();case"mcp.server.get":return a.mcp.getServer(B(e.params,"name"));case"mcp.server.validate":{let l=_(e.params);return a.mcp.validateServer(N(l,"name"),l.config)}case"mcp.server.upsert":{let l=_(e.params);return a.mcp.upsertServer(N(l,"name"),_(l.config))}case"mcp.server.delete":case"mcp.server.remove":return a.mcp.deleteServer(B(e.params,"name"));case"mcp.server.reload":return a.mcp.reloadServers();case"mcp.tool.list":return a.mcp.listTools(Hu(e.params));case"extension.list":return a.catalog.extensions();case"extension.reload":return a.catalog.reloadExtensions();case"command.list":{let l=W(e.params),y=typeof l?.projectRoot=="string"?l.projectRoot:void 0;return a.catalog.commands(y)}case"command.resolve":{let l=_(e.params);return a.catalog.resolveCommand({name:N(l,"name"),...typeof l.projectRoot=="string"?{projectRoot:l.projectRoot}:{}})}case"skill.list":return a.catalog.skills($u(e.params));case"skill.describe":case"skill.read":{let l=_(e.params);return a.catalog.describeSkill({name:N(l,"name"),...typeof l.projectRoot=="string"?{projectRoot:l.projectRoot}:{}})}case"artifact.create":return a.artifacts.create(qu(e.params));case"artifact.get":return a.artifacts.get(B(e.params,"artifactId"));case"artifact.delete":return a.artifacts.delete(B(e.params,"artifactId"));case"agentRegistrations.list":return it(n),he(a),a.admin.agentRegistrations.list();case"agentRegistrations.upsert":{it(n),he(a);let l=_(e.params);return a.admin.agentRegistrations.upsert(_(l.registration),{expectedConfigurationRevision:or(l),expectedManagementOwner:ir(l)})}case"agentRegistrations.setEnabled":{it(n),he(a);let l=_(e.params),y=re(l,"claimOwner");if(y!==void 0&&y.length===0)throw $("invalid_request","Expected non-empty optional string param: claimOwner");return a.admin.agentRegistrations.setEnabled(N(l,"agentId"),zu(l,"enabled"),{expectedConfigurationRevision:or(l),expectedManagementOwner:ir(l),...y?{claimOwner:y}:{}})}case"agentRegistrations.remove":it(n),he(a);{let l=_(e.params);return a.admin.agentRegistrations.remove(N(l,"agentId"),{expectedConfigurationRevision:or(l),expectedManagementOwner:ir(l)})}case"agents.listDispatchable":return a.agents.listDispatchable(_(e.params));case"agents.describe":{let l=_(e.params);return a.agents.describe(N(l,"agentId"),_(l.query))}case"agents.preflight":return a.agents.preflight(_(e.params));case"agentTasks.list":return he(a),a.agentTasks.list(W(e.params));case"agentTasks.start":return he(a),a.agentTasks.start(_(e.params));case"agentTasks.get":return he(a),a.agentTasks.get(B(e.params,"taskId"));case"agentTasks.events":{he(a);let l=_(e.params);return a.agentTasks.events(N(l,"taskId"),Cn(l,"cursor"))}case"agentTasks.wait":{he(a);let l=_(e.params);return a.agentTasks.wait(N(l,"taskId"),Cn(l,"timeoutMs"))}case"agentTasks.sendInput":{he(a);let l=_(e.params);return a.agentTasks.sendInput(N(l,"taskId"),_(l.input))}case"agentTasks.cancel":{he(a);let l=_(e.params);return a.agentTasks.cancel(N(l,"taskId"),re(l,"reason"))}case"agentTasks.reconcile":return he(a),a.agentTasks.reconcile(B(e.params,"taskId"));case"session.create":return a.sessions.create(W(e.params));case"session.load":return a.sessions.load(B(e.params,"sessionId"));case"session.list":return a.sessions.list(W(e.params));case"session.transcript":return a.sessions.transcript(B(e.params,"sessionId"));case"session.observe":{let l=sr(),y=await a.sessions.observe(B(e.params,"sessionId"),v=>s(l,rr(v,g)));return r(l,y),{subscriptionId:l,snapshot:Ou(y.snapshot,g)}}case"session.fork":return a.sessions.fork(_(e.params));case"session.notice.append":return a.sessions.appendNotice(_(e.params));case"session.rewind":return a.sessions.rewind(_(e.params));case"session.active_entry.set":case"session.activeEntry.set":return a.sessions.setActiveEntry(_(e.params));case"session.compact":return a.sessions.compact(_(e.params));case"session.archive":return await a.sessions.archive(B(e.params,"sessionId")),{ok:!0};case"session.unarchive":return await a.sessions.unarchive(B(e.params,"sessionId")),{ok:!0};case"session.delete":return await a.sessions.delete(B(e.params,"sessionId")),{ok:!0};case"session.settings.get":return a.sessions.getSettings(B(e.params,"sessionId"));case"session.settings.getVersioned":return a.sessions.getSettingsVersioned(B(e.params,"sessionId"));case"session.settings.update":{if(n.requireOperationEnvelope===!0)throw $("client_upgrade_required","Shared daemon session settings require session.settings.updateVersioned.");let l=_(e.params);return a.sessions.updateSettings(N(l,"sessionId"),_(l.patch))}case"session.settings.updateVersioned":{let l=_(e.params);return a.sessions.updateSettingsVersioned(N(l,"sessionId"),_(l.patch),{expectedRevision:st(l,"expectedRevision")})}case"run.start":{let l=_(e.params),y=N(l,"sessionId"),v=`run_${Date.now().toString(36)}_${On().replace(/-/g,"").slice(0,8)}`,p=await Xi({params:l,sessionId:y,trustedRunId:v,principalId:m,clientName:f,clientVersion:d,operationId:e.operation?.operationId,reverseBridge:u}),h=await a.runs.start(p);return t.remember(h.runId,h.result),{runId:h.runId,sessionId:h.sessionId,...h.turnId!==void 0?{turnId:h.turnId}:{}}}case"run.input.submit":{let l=_(e.params),y=N(l,"sessionId"),v=N(l,"afterRunId"),p=N(l,"delivery"),h=await a.runs.get(v);if(h.sessionId!==y)throw $("conflict",`Runtime continuation target ${v} does not belong to session ${y}.`);if(!xu(h.phase))return{accepted:!1,delivery:p,sessionId:y,afterRunId:v,reason:"stale_run"};if(p==="interrupt")return{accepted:!1,delivery:p,sessionId:y,afterRunId:v,reason:"unsupported_capability"};let k=`run_${Date.now().toString(36)}_${On().replace(/-/g,"").slice(0,8)}`,P=await Xi({params:l,sessionId:y,trustedRunId:k,principalId:m,clientName:f,clientVersion:d,operationId:e.operation?.operationId,reverseBridge:u}),w=await a.runs.submitInput(P);if(w.accepted){let S=a.runs.await(w.runId);t.remember(w.runId,S)}return w}case"run.get":return Je(await a.runs.get(B(e.params,"runId")),g);case"run.list":return(await a.runs.list(W(e.params))).map(l=>Je(l,g));case"run.await":{let l=B(e.params,"runId"),y=t.get(l);return y||a.runs.await(l)}case"run.abort":return await a.runs.abort(B(e.params,"runId")),{ok:!0};case"run.model.set":return Ji(a,e.params);case"run.setModel":return Ji(a,e.params);case"run.provider.set":{let l=_(e.params);return await a.runs.setProvider(N(l,"runId"),N(l,"provider")),{ok:!0}}case"run.setProvider":{let l=_(e.params);return await a.runs.setProvider(N(l,"runId"),N(l,"provider")),{ok:!0}}case"run.reasoning.set":return zi(a,e.params);case"run.setReasoning":return zi(a,e.params);case"event.subscribe":{let l=W(e.params)??{},y=W(l.filter);await We(a,y?.sessionId);let v=sr(),p=a.events.subscribe(y??{},h=>{s(v,rr(h,g))});return r(v,p),{subscriptionId:v}}case"event.unsubscribe":return{ok:i(B(e.params,"subscriptionId"))};case"event.replay":{let l=W(e.params);return await We(a,l?.sessionId),Cu(await a.events.replay(l),c()).map(y=>rr(y,g))}case"permission.list":case"permission.listPending":{let l=W(e.params);return await We(a,l?.sessionId),a.permissions.listPending(l)}case"permission.request":{let l=_(e.params);return await We(a,l.sessionId),a.permissions.request(l)}case"permission.respond":{let l=_(e.params),y=re(l,"runId");return a.permissions.respond(N(l,"requestId"),_(l.decision),y!==void 0?{runId:y}:void 0)}case"permission.grants.list":return a.permissions.listGrants();case"permission.grants.revoke":{let l=_(e.params);return a.permissions.revokeGrant(N(l,"grantId"),st(l,"expectedRevision"))}case"user_input.listPending":{let l=W(e.params);return await We(a,l?.sessionId),a.userInputs.listPending(l)}case"user_input.respond":{let l=_(e.params),y=Cn(l,"expectedRevision"),v=re(l,"runId");return a.userInputs.respond(N(l,"requestId"),l.answer,y!==void 0||v!==void 0?{...y!==void 0?{expectedRevision:y}:{},...v!==void 0?{runId:v}:{}}:void 0)}case"user_input.dismiss":{let l=_(e.params),y=Cn(l,"expectedRevision"),v=re(l,"runId");return a.userInputs.dismiss(N(l,"requestId"),y!==void 0||v!==void 0?{...y!==void 0?{expectedRevision:y}:{},...v!==void 0?{runId:v}:{}}:void 0)}case"credential.register":{let l=_(e.params);return u.registerCredential({leaseId:N(l,"leaseId"),providers:Uu(l,"providers"),...re(l,"expiresAt")!==void 0?{expiresAt:re(l,"expiresAt")}:{}})}case"credential.get":return u.getCredential(B(e.params,"leaseId"));case"credential.revoke":return u.revokeCredential(B(e.params,"leaseId"));case"credential.supply":{let l=_(e.params);return{ok:u.supplyCredential({requestId:N(l,"requestId"),...re(l,"credential")!==void 0?{credential:re(l,"credential")}:{},...re(l,"error")!==void 0?{error:re(l,"error")}:{}})}}case"host_tool.register":{let l=_(e.params);return u.registerHostTools({leaseId:N(l,"leaseId"),tools:Wu(l.tools)})}case"host_tool.get":return u.getHostTools(B(e.params,"leaseId"));case"host_tool.invocation.get":return u.getHostToolInvocation(B(e.params,"invocationId"));case"host_tool.revoke":return u.revokeHostTools(B(e.params,"leaseId"));case"host_tool.complete":{let l=_(e.params);return{ok:u.completeHostTool({invocationId:N(l,"invocationId"),...l.result!==void 0?{result:_(l.result)}:{},...re(l,"error")!==void 0?{error:re(l,"error")}:{}})}}case"workflow.list":return a.workflows.list(W(e.params));case"workflow.get":return a.workflows.get(B(e.params,"runId"));case"workflow.subscribe":{let l=W(e.params)??{},y=W(l.filter),v=sr(),p=a.workflows.subscribe(y??{},h=>{s(v,h)});return r(v,p),{subscriptionId:v}}case"workflow.unsubscribe":return{ok:i(B(e.params,"subscriptionId"))};case"workflow.pause":return a.workflows.pause(B(e.params,"runId"));case"workflow.resume":return a.workflows.resume(B(e.params,"runId"));case"workflow.stop":return a.workflows.stop(B(e.params,"runId"));case"context.budget.get":return Ui(c()),await We(a,re(W(e.params)??{},"sessionId")),Wi(a,"context.budget.snapshot",W(e.params));case"tool.exposure.preview":return Ui(c()),await We(a,re(W(e.params)??{},"sessionId")),Wi(a,"tool.exposure.planned",W(e.params));default:throw $("method_not_found",`Runtime daemon method is not implemented: ${e.method}`)}}o(Du,"dispatchRuntimeDaemonRequest");async function Xi(e){let n=W(e.params.credential),t=W(e.params.hostTools),r=n===void 0?void 0:await e.reverseBridge.acquireCredential({leaseId:N(n,"leaseId"),provider:N(n,"provider"),sessionId:e.sessionId,runId:e.trustedRunId}),i=t===void 0?void 0:e.reverseBridge.createHostToolRuntime({leaseId:N(t,"leaseId"),sessionId:e.sessionId,runId:e.trustedRunId}),s=Ve(),c=i===void 0?void 0:s===null?i:Ju(i,s),m=W(e.params.options)??{};return{...e.params,sessionId:e.sessionId,trustedRunId:e.trustedRunId,origin:{principalId:e.principalId,...e.clientName!==void 0?{clientName:e.clientName}:{},...e.clientVersion!==void 0?{clientVersion:e.clientVersion}:{},...e.operationId!==void 0?{operationId:e.operationId}:{}},...r!==void 0?{providerCredential:r}:{},...n!==void 0?{providerCredentialProvider:N(n,"provider")}:{},...c!==void 0?{options:{...m,extensionRuntime:c}}:{}}}o(Xi,"bindTrustedRunInput");function xu(e){return e==="queued"||e==="running"||e==="waiting_permission"||e==="waiting_user_input"}o(xu,"isActiveRuntimeRunPhase");function Tu(e){return se(e)?{...e.richEvents===!0?{richEvents:!0}:{},...e.permissionPrompts===!0?{permissionPrompts:!0}:{},...e.configAdmin===!0?{configAdmin:!0}:{},...e.commandCatalog===!0?{commandCatalog:!0}:{},...e.skillCatalog===!0?{skillCatalog:!0}:{},...e.artifactUpload===!0?{artifactUpload:!0}:{},...e.contextDiagnostics===!0?{contextDiagnostics:!0}:{},...e.operationDeduplication===!0?{operationDeduplication:!0}:{}}:{}}o(Tu,"parseRuntimeClientCapabilities");function Bi(e={},n=!1,t=!1,r=!1,i,s=!1,c=!1,m=!1){let f={...e};delete f.externalAgents,delete f.externalAgentAdmin,delete f.a2aConfigReconciler;let d=nr();return{events:!0,permissions:!0,workflows:!0,configAdmin:!0,commandCatalog:!0,skillCatalog:!0,artifactUpload:!0,contextDiagnostics:!0,hardDispose:!1,externalAgents:n,...t?{externalAgentAdmin:{version:1,activation:!0,conditionalMutations:!0,managementOwner:!0}}:{},...r?{a2aConfigReconciler:{version:1}}:{},...i!==void 0?{operationDeduplication:{version:1,retentionMs:Number.MAX_SAFE_INTEGER},journalEpoch:i.journalEpoch,controlHealth:i.health}:{},sessionObservation:{version:1,maxBufferedEvents:256},sessionAdmission:{version:1,surfaces:vu,legacySurface:!0,partnerDenied:!0},completeObservationSnapshot:{version:1,transcriptRevision:!0,managedTasks:!0,queuedInputs:!0},connectionLifecycle:{version:1},typedRuntimeEvents:{version:1},daemonSafeRunInput:{version:1},...m?{daemonManagement:{version:1,logicalClientCount:!0,revisionedStop:!0,ownerPolicy:!0,ownerFenceState:!0,reverseBridgeDrainingFence:!0,backgroundWorkPreflight:!0}}:{},sharedSessionSettings:{version:1,keys:["provider","model","effort","thinking","reasoningMode","permissionMode","executionCwd","agentMode","autoModeEngine"]},...i!==void 0?{durableRecoveryQueries:{version:1,operationResult:!0,hostToolInvocation:c,permissionGrants:!0,daemonPreflight:!0,terminalAcknowledgement:!1,terminalAcknowledgementOwner:"client"}}:{},afterTurnInput:{version:1},askUserTransport:{version:1},permissionCas:{version:1},providerCredentialBroker:{version:1,registrationConnectionBound:!s,stableClientResume:s,runtimeRestartExpiresLease:!0,acquiredCredentialSurvivesDisconnect:!0,requestTimeoutMs:d.callTimeoutMs},runBoundHostTools:{version:1,registrationConnectionBound:!s,stableClientResume:s,invocationStatusQuery:s,invocationReplay:!1,invocationTimeoutMs:d.callTimeoutMs,maxResultBytes:d.maxResultBytes},coderOwnerFencing:{version:1},crashOutcomeModel:{version:1},coderFeatureMatrix:{version:1,managedRun:!0,transcriptSessions:!0,todoProjection:!0,managedTasks:!0,workflow:!0,mcp:!0,referenceExternalAgent:n,memory:!0,runtimeArtifacts:!0},...f}}o(Bi,"runtimeDaemonCapabilities");function Au(e){return e?{...e}:{}}o(Au,"publicOperationReceipt");function he(e){if(!e.agents.enabled)throw $("method_not_found","Runtime external agent executor plane is not enabled.")}o(he,"requireExternalAgentsEnabled");function it(e){if(e.allowAgentRegistrationAdmin!==!0)throw $("permission_denied","Runtime daemon host denied Agent registration administration.")}o(it,"requireAgentRegistrationAdmin");function Cu(e,n){return n.contextDiagnostics===!0?e:e.filter(t=>!es(t))}o(Cu,"filterReplayForClientCapabilities");async function We(e,n){n!==void 0&&await e.sessions.transcript(n)}o(We,"assertAdmittedSessionId");function Ou(e,n){return{...e,runs:e.runs.map(t=>Je(t,n))}}o(Ou,"augmentObservationRunRequirements");function _u(e,n){return!se(e)||!Array.isArray(e.runs)?e:{...e,runs:e.runs.map(t=>Zi(t)?Je(t,n):t)}}o(_u,"augmentStatusRunRequirements");function Mu(e,n){return{...e,activeRuns:e.activeRuns.map(t=>Je(t,n)),queuedRuns:e.queuedRuns.map(t=>Je(t,n))}}o(Mu,"augmentPreflightRunRequirements");function rr(e,n){return Zi(e.payload)?{...e,payload:Je(e.payload,n)}:e}o(rr,"augmentRuntimeEventRequirements");function Je(e,n){let t=n?.getRunRequirements(e.runId);return t===void 0?e:Lu(e.phase)?{...e,requirements:{...t.credential!==void 0?{credential:{...t.credential,state:"terminal"}}:{},...t.hostTools!==void 0?{hostTools:{...t.hostTools,state:"terminal"}}:{}}}:{...e,requirements:t}}o(Je,"augmentRunRequirements");function Zi(e){return se(e)&&typeof e.runId=="string"&&typeof e.sessionId=="string"&&typeof e.phase=="string"&&typeof e.startedAt=="string"&&typeof e.provider=="string"}o(Zi,"isRuntimeRunStatus");function Lu(e){return e==="completed"||e==="failed"||e==="cancelled"||e==="interrupted"}o(Lu,"isTerminalRuntimeRunPhase");function Ui(e){if(e.contextDiagnostics!==!0)throw $("unauthorized","Runtime daemon client did not negotiate contextDiagnostics capability.")}o(Ui,"requireContextDiagnosticsCapability");function es(e){return se(e)?e.type==="context.budget.snapshot"||e.type==="tool.exposure.planned"||e.type==="context.compaction.skipped":!1}o(es,"isContextDiagnosticRuntimeEvent");async function Wi(e,n,t){let r=t??{},i={type:n,limit:100,...typeof r.sessionId=="string"?{sessionId:r.sessionId}:{},...typeof r.runId=="string"?{runId:r.runId}:{}};return(await e.events.replay(i)).at(-1)?.payload??null}o(Wi,"latestRuntimeDiagnosticPayload");async function Ji(e,n){let t=_(n);return await e.runs.setModel(N(t,"runId"),re(t,"model")),{ok:!0}}o(Ji,"setRunModel");async function zi(e,n){let t=_(n);return await e.runs.setReasoning(N(t,"runId"),re(t,"reasoning")),{ok:!0}}o(zi,"setRunReasoning");function ju(e,n){let t=Array.isArray(e)?e:[],r=typeof n?.provider=="string"?n.provider:void 0;if(r!==void 0){let i=t.find(s=>se(s)&&s.name===r);return se(i)?{provider:r,models:Array.isArray(i.models)?i.models:[]}:{provider:r,models:[]}}return t.flatMap(i=>!se(i)||typeof i.name!="string"?[]:[{provider:i.name,models:Array.isArray(i.models)?i.models:[]}])}o(ju,"listRuntimeModels");function ar(e){return Array.isArray(e)?e.map(n=>ar(n)):se(e)?Object.fromEntries(Object.entries(e).map(([n,t])=>[n,Nu(n)?"[redacted]":ar(t)])):e}o(ar,"redactRuntimeConfig");function Nu(e){let n=e.toLowerCase();return n.includes("apikey")||n.includes("api_key")||n==="key"||n.endsWith("key")||n.includes("token")||n.includes("secret")||n.includes("password")}o(Nu,"isSensitiveConfigKey");function W(e){if(e!==void 0)return _(e)}o(W,"optionalRecord");function ns(e,n){return _(e[n])}o(ns,"requireRecordField");function Fu(e){let n=W(e);if(n)return typeof n.provider=="string"?{provider:n.provider}:void 0}o(Fu,"parseModelListFilter");function Hu(e){let n=W(e);if(n)return{...typeof n.server=="string"?{server:n.server}:{},...typeof n.forceRefresh=="boolean"?{forceRefresh:n.forceRefresh}:{}}}o(Hu,"parseMcpToolListFilter");function $u(e){let n=W(e);if(n)return{...typeof n.projectRoot=="string"?{projectRoot:n.projectRoot}:{},...typeof n.userInvocableOnly=="boolean"?{userInvocableOnly:n.userInvocableOnly}:{}}}o($u,"parseSkillListFilter");function qu(e){let n=_(e),t=n.kind;if(t!=="image"&&t!=="file"&&t!=="video")throw $("invalid_request","Expected artifact kind: image | file | video");let r=N(n,"path");return{kind:t,path:r,...typeof n.mediaType=="string"?{mediaType:n.mediaType}:{},...typeof n.mimeType=="string"?{mimeType:n.mimeType}:{},...typeof n.name=="string"?{name:n.name}:{},...Ku(n.source)?{source:n.source}:{},...typeof n.description=="string"?{description:n.description}:{}}}o(qu,"parseArtifactCreateInput");function Ku(e){return e==="user-inline"||e==="clipboard"||e==="drag-drop"||e==="file-picker"}o(Ku,"isRuntimeArtifactSource");function Xu(e){return se(e)&&typeof e.name=="string"&&e.name.length>0?e.name:void 0}o(Xu,"parseRuntimeClientName");function Bu(e){return se(e)&&typeof e.version=="string"&&e.version.length>0?e.version:void 0}o(Bu,"parseRuntimeClientVersion");function Uu(e,n){let t=e[n];if(!Array.isArray(t)||t.some(r=>typeof r!="string"||r.length===0))throw $("invalid_request",`Expected string array param: ${n}`);return t}o(Uu,"requireStringArrayField");function Wu(e){if(!Array.isArray(e))throw $("invalid_request","Expected host tool descriptors array.");return e.map(n=>{let t=_(n),r=N(t,"sideEffect");if(r!=="none"&&r!=="idempotent"&&r!=="non_idempotent")throw $("invalid_request",`Invalid host tool sideEffect: ${r}`);return{name:N(t,"name"),description:N(t,"description"),inputSchema:ns(t,"inputSchema"),sideEffect:r}})}o(Wu,"parseRuntimeHostToolDescriptors");function Ju(e,n){return{hasCapabilityProvider(t){return e.hasCapabilityProvider?.(t)===!0||n.hasCapabilityProvider?.(t)===!0},async searchCapabilities(t,r,i){let[s,c]=await Promise.all([e.searchCapabilities(t,r,i),n.searchCapabilities(t,r,i)]),m=[...s,...c];return m.slice(0,i?.limit??m.length)},async describeCapability(t,r){return r.startsWith("host:")?e.describeCapability(t,r):n.describeCapability(t,r)},executeCapability(t,r,i){return r.startsWith("host:")?e.executeCapability(t,r,i):n.executeCapability(t,r,i)},readCapability(t,r,i){return n.readCapability(t,r,i)},getCapabilityPrompt(t,r,i){return n.getCapabilityPrompt(t,r,i)},getCapabilityPromptContext(t){return n.getCapabilityPromptContext(t)},...n.getDefaults!==void 0?{getDefaults:o(()=>n.getDefaults(),"getDefaults")}:{},...n.bindController!==void 0?{bindController:o(t=>n.bindController(t),"bindController")}:{},...n.hydrateSession!==void 0?{hydrateSession:o(t=>n.hydrateSession(t),"hydrateSession")}:{}}}o(Ju,"mergeExtensionRuntimeContracts");function se(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}o(se,"isRecord");function _(e){if(!e||typeof e!="object"||Array.isArray(e))throw $("invalid_request","Expected params to be an object.");return e}o(_,"requireRecord");function B(e,n){return N(_(e),n)}o(B,"requireStringParam");function N(e,n){let t=e[n];if(typeof t!="string"||t.length===0)throw $("invalid_request",`Expected string param: ${n}`);return t}o(N,"requireStringField");function zu(e,n){let t=e[n];if(typeof t!="boolean")throw $("invalid_request",`Expected boolean param: ${n}`);return t}o(zu,"requireBooleanField");function re(e,n){let t=e[n];if(t!=null){if(typeof t!="string")throw $("invalid_request",`Expected optional string param: ${n}`);return t}}o(re,"optionalStringField");function or(e){let n=e.expectedConfigurationRevision;if(n==null)return n;if(typeof n!="string"||n.length===0)throw $("invalid_request","Expected optional string or null param: expectedConfigurationRevision");return n}o(or,"optionalExpectedConfigurationRevision");function ir(e){let n=e.expectedManagementOwner;if(n==null)return n;if(typeof n!="string"||n.length===0)throw $("invalid_request","Expected optional string or null param: expectedManagementOwner");return n}o(ir,"optionalExpectedManagementOwner");function Cn(e,n){let t=e[n];if(t!=null){if(!Number.isSafeInteger(t)||t<0)throw $("invalid_request",`Expected optional non-negative integer param: ${n}`);return t}}o(Cn,"optionalIntegerField");function st(e,n){let t=Cn(e,n);if(t===void 0)throw $("invalid_request",`Expected non-negative integer param: ${n}`);return t}o(st,"requireIntegerField");function $(e,n,t){let r=new Error(n);return r.code=e,t!==void 0&&(r.data=t),r}o($,"daemonError");function sr(){return`sub_${On().replace(/-/g,"").slice(0,12)}`}o(sr,"createSubscriptionId");function Vi(e,n,t,r){let i=mn(ot[e][n],t,n);if(i.length!==0)throw $(r,n==="params"?`Invalid params for ${e}.`:`Runtime daemon produced an invalid result for ${e}.`,{issues:i})}o(Vi,"validateDaemonMethodValue");function Vu(e,n){return n===void 0?null:e!=="run.await"||!se(n)||!(n.error instanceof Error)?n:{...n,error:{name:n.error.name,message:n.error.message,...n.error.stack!==void 0?{stack:n.error.stack}:{}}}}o(Vu,"serializeRuntimeDaemonMethodResult");function Gu(e){if(e instanceof Ar)return{code:"conflict",message:e.message,data:{agentId:e.agentId,conflict:e.code}};if(e instanceof Error){let n=e;return{code:typeof n.code=="string"&&Qu(n.code)?n.code:"internal_error",message:e.message,...n.data!==void 0?{data:n.data}:{}}}return{code:"internal_error",message:String(e)}}o(Gu,"normalizeRuntimeDaemonError");function Qu(e){return e==="invalid_frame"||e==="invalid_request"||e==="invalid_params"||e==="not_initialized"||e==="method_not_found"||e==="unauthorized"||e==="permission_denied"||e==="conflict"||e==="not_found"||e==="session_not_admitted"||e==="cancelled"||e==="overloaded"||e==="client_upgrade_required"||e==="operation_required"||e==="operation_epoch_mismatch"||e==="operation_id_reuse"||e==="operation_interrupted"||e==="operation_unknown"||e==="control_history_untrusted"||e==="credential_unavailable"||e==="host_tool_unavailable"||e==="host_tool_unknown"||e==="internal_error"}o(Qu,"isRuntimeDaemonErrorCode");import{createHash as Yu,randomUUID as os}from"node:crypto";import*as Q from"node:fs";import ts from"node:path";var ve=class extends Error{static{o(this,"RuntimeControlJournalError")}code;constructor(n,t){super(t),this.name="RuntimeControlJournalError",this.code=n}};function is(e){Q.mkdirSync(e.rootDir,{recursive:!0});let n=ts.join(e.rootDir,"journal-meta.json"),t=ts.join(e.rootDir,"control.jsonl"),r=sc(n),i=r.meta,s=ic(t),c=s.records,m=new Map,f=s.trusted&&r.trusted?"healthy":"control_history_untrusted";return f==="healthy"&&oc(c,t),{journalEpoch:i.journalEpoch,get health(){return f},execute(d,u,a){if(f!=="healthy")return Promise.reject(new ve("control_history_untrusted","Runtime control history is untrusted; mutations are quarantined."));try{rc(d,i.journalEpoch);let g=dc(d.params),l=c.get(d.operationId);if(l){tc(l,d,g);let v=m.get(d.operationId);return v||nc(l)}let y=Zu(t,c,d,g,u.externalEffect===!0,a,()=>{f="control_history_untrusted"});return m.set(d.operationId,y),y.finally(()=>m.delete(d.operationId)).catch(()=>{}),y}catch(g){return Promise.reject(g)}},get(d){return c.get(d)}}}o(is,"createRuntimeControlJournal");async function Zu(e,n,t,r,i,s,c){let m=ec(t,r,"accepted");ss(e,m),n.set(t.operationId,m),i&&at(e,n,m,"dispatched");let f;try{f=await s()}catch(d){let u=uc(d);try{at(e,n,m,"rejected",{error:u})}catch{c()}throw d}try{return at(e,n,m,"applied",{result:f}).result}catch{throw c(),n.set(t.operationId,{...m,state:"unknown",updatedAt:new Date().toISOString()}),new ve("operation_unknown","Runtime operation completed but its durable outcome could not be recorded.")}}o(Zu,"executeNewOperation");function at(e,n,t,r,i={}){let s={type:"operation",...t,state:r,...i,updatedAt:new Date().toISOString()};return ss(e,s),n.set(s.operationId,s),s}o(at,"updateOperation");function ec(e,n,t){return{type:"operation",operationId:e.operationId,journalEpoch:e.journalEpoch,principalId:e.principalId,method:e.method,...e.resourceId!==void 0?{resourceId:e.resourceId}:{},requestDigest:n,state:t,updatedAt:new Date().toISOString()}}o(ec,"operationRecord");function nc(e){if(e.state==="applied")return Promise.resolve(e.result);if(e.state==="rejected")return Promise.reject(new ve(e.error?.code??"operation_rejected",e.error?.message??"Runtime operation was rejected."));let n=e.state==="unknown"?"operation_unknown":"operation_interrupted";return Promise.reject(new ve(n,`Runtime operation is ${e.state}; it will not be replayed.`))}o(nc,"replayOperation");function tc(e,n,t){if(!(e.journalEpoch===n.journalEpoch&&e.principalId===n.principalId&&e.method===n.method&&e.resourceId===n.resourceId&&e.requestDigest===t))throw new ve("operation_id_reuse","Runtime operation ID was already used for a different request or principal.")}o(tc,"assertMatchingOperation");function rc(e,n){if(e.journalEpoch!==n)throw new ve("operation_epoch_mismatch","Runtime operation belongs to a different control journal epoch.");if(!/^[A-Za-z0-9_.:-]{4,160}$/.test(e.operationId))throw new ve("invalid_operation_id","Runtime operation ID is invalid.");if(e.principalId.length===0||e.method.length===0)throw new ve("invalid_operation","Runtime operation identity is incomplete.")}o(rc,"validateOperationInput");function oc(e,n){for(let t of[...e.values()])t.state!=="accepted"&&t.state!=="dispatched"||at(n,e,t,t.state==="dispatched"?"unknown":"interrupted")}o(oc,"recoverUnfinished");function ic(e){let n=new Map;if(!Q.existsSync(e))return{trusted:!0,records:n};let t=Q.readFileSync(e,"utf8").split(/\r?\n/);for(let r of t)if(r.length!==0)try{let i=JSON.parse(r);if(!lc(i))return{trusted:!1,records:n};n.set(i.operationId,i)}catch{return{trusted:!1,records:n}}return{trusted:!0,records:n}}o(ic,"loadOperationRecords");function sc(e){if(Q.existsSync(e)){try{let t=JSON.parse(Q.readFileSync(e,"utf8"));if(cc(t))return{meta:t,trusted:!0}}catch{}return{meta:rs(),trusted:!1}}let n=rs();return ac(e,n),{meta:n,trusted:!0}}o(sc,"loadOrCreateMeta");function rs(){return{version:1,journalEpoch:`je_${os().replace(/-/g,"")}`,createdAt:new Date().toISOString()}}o(rs,"createJournalMeta");function ss(e,n){let t=`${JSON.stringify(n)}
|
|
64
|
+
`,r=Q.openSync(e,"a",384);try{Q.writeFileSync(r,t,"utf8"),Q.fsyncSync(r)}finally{Q.closeSync(r)}}o(ss,"appendRecord");function ac(e,n){let t=`${e}.${process.pid}.${os()}.tmp`,r=Q.openSync(t,"wx",384);try{Q.writeFileSync(r,`${JSON.stringify(n,null,2)}
|
|
65
|
+
`,"utf8"),Q.fsyncSync(r)}finally{Q.closeSync(r)}Q.renameSync(t,e)}o(ac,"writeJsonAtomic");function dc(e){return Yu("sha256").update(ur(e)).digest("hex")}o(dc,"digestCanonical");function ur(e){if(e===null||typeof e=="boolean"||typeof e=="string")return JSON.stringify(e);if(typeof e=="number"){if(!Number.isFinite(e))throw new ve("invalid_operation","Operation contains a non-finite number.");return JSON.stringify(e)}if(Array.isArray(e))return`[${e.map(ur).join(",")}]`;if(e&&typeof e=="object"){let n=e;return`{${Object.keys(n).sort().filter(r=>n[r]!==void 0).map(r=>`${JSON.stringify(r)}:${ur(n[r])}`).join(",")}}`}throw new ve("invalid_operation","Operation contains a non-JSON value.")}o(ur,"canonicalJson");function uc(e){if(!(e instanceof Error))return{code:"operation_rejected",message:String(e)};let n=e;return{code:typeof n.code=="string"?n.code:"operation_rejected",message:e.message}}o(uc,"normalizeOperationError");function cc(e){return as(e)?e.version===1&&typeof e.journalEpoch=="string"&&typeof e.createdAt=="string":!1}o(cc,"isJournalMeta");function lc(e){return as(e)?e.type==="operation"&&typeof e.operationId=="string"&&typeof e.journalEpoch=="string"&&typeof e.principalId=="string"&&typeof e.method=="string"&&typeof e.requestDigest=="string"&&mc(e.state)&&typeof e.updatedAt=="string":!1}o(lc,"isOperationRecord");function mc(e){return e==="accepted"||e==="dispatched"||e==="applied"||e==="rejected"||e==="interrupted"||e==="unknown"}o(mc,"isOperationState");function as(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}o(as,"isRecord");function ds(e){return new cr(e)}o(ds,"createRuntimeDaemonManagementController");var cr=class{constructor(n){this.input=n;this.runtimeEvents=n.runtime.events.subscribe({},()=>{this.revision+=1})}input;static{o(this,"DaemonManagementController")}clients=new Set;runtimeEvents;revision=0;activeMutations=0;activeMutationMethods=new Map;draining=!1;closed=!1;preflightFingerprint;attachClient(n){if(this.draining||this.closed)throw fe("conflict","Runtime daemon is draining and cannot attach another client.");this.clients.has(n)||(this.clients.add(n),this.revision+=1)}detachClient(n){this.clients.delete(n)&&(this.revision+=1)}async runMutation(n,t){if(this.draining||this.closed)throw fe("conflict","Runtime daemon is draining and rejects new mutations.");this.activeMutations+=1,this.activeMutationMethods.set(n,(this.activeMutationMethods.get(n)??0)+1),this.revision+=1;try{return await t()}finally{this.activeMutations-=1;let r=(this.activeMutationMethods.get(n)??1)-1;r===0?this.activeMutationMethods.delete(n):this.activeMutationMethods.set(n,r)}}async preflight(){for(let n=0;n<8;n+=1){let t=this.revision,r=await this.input.runtime.status.preflight();if(this.observePreflight(r),t===this.revision&&this.activeMutations===0)return pc(r,this.clients.size)}throw fe("conflict","Runtime state changed while daemon preflight was being read.")}async inspect(){for(let n=0;n<8;n+=1){let t=this.revision,r=await this.preflight();if(t!==this.revision)continue;let i=G(this.input.paths.lockFile);if(i===void 0||i.runtimeId!==this.input.runtime.identity.runtimeId||i.kind!=="daemon")throw fe("conflict","Runtime daemon owner fence changed during inspection.");return{runtimeId:this.input.runtime.identity.runtimeId,revision:t,ownerPolicy:we(this.input.paths),owner:i,preflight:r}}throw fe("conflict","Runtime state changed while daemon management was inspected.")}async stop(){this.beginDraining();try{return await this.assertStoppable(),this.input.requestStop(),{ok:!0}}catch(n){throw this.draining=!1,n}}async rollbackToInline(n){if(n.expectedRuntimeId!==this.input.runtime.identity.runtimeId)throw fe("conflict","Runtime daemon instance changed before rollback commit.");this.beginDraining(n.expectedRevision);try{await this.assertStoppable(n.expectedRevision);let t=Yo(this.input.paths,n.expectedRuntimeId,n.expectedOwnerPolicyRevision);if(t.mode!=="inline")throw fe("internal_error","Runtime owner rollback did not commit inline mode.");return this.revision+=1,this.input.requestStop(),{accepted:!0,runtimeId:this.input.runtime.identity.runtimeId,revision:this.revision,ownerPolicy:{...t,mode:"inline"}}}catch(t){throw this.draining=!1,t}}close(){this.closed||(this.closed=!0,this.runtimeEvents.close(),this.clients.clear())}beginDraining(n){if(this.closed)throw fe("conflict","Runtime daemon management is closed.");if(this.draining)throw fe("conflict","Runtime daemon is already draining.");if(n!==void 0&&this.revision!==n)throw fe("conflict",`Runtime daemon management revision changed: expected ${n}, current ${this.revision}.`);if(this.activeMutations>0)throw fe("conflict",`Runtime daemon has in-flight mutations: ${[...this.activeMutationMethods].map(([t,r])=>`${t} (${r})`).join(", ")}.`);this.draining=!0}async assertStoppable(n){let t=await this.preflight();if(n!==void 0&&this.revision!==n)throw fe("conflict",`Runtime daemon state changed before stop commit: expected ${n}, current ${this.revision}.`);if(!t.canStop)throw fe("conflict",`Runtime daemon cannot stop safely: ${t.blockers.join(", ")}.`,{preflight:t})}observePreflight(n){let t=JSON.stringify(n);if(this.preflightFingerprint===void 0){this.preflightFingerprint=t;return}t!==this.preflightFingerprint&&(this.preflightFingerprint=t,this.revision+=1)}};function pc(e,n){let t=e.blockers.filter(r=>r!=="connected_clients");return n>1&&t.push("connected_clients"),{...e,clientCount:n,blockers:t,canStop:t.length===0}}o(pc,"withLogicalClients");function fe(e,n,t){let r=new Error(n);return r.code=e,t!==void 0&&(r.data=t),r}o(fe,"managementError");async function ls(e){be(e.paths);let n=ni();ti(e.paths,n);let t=dt(e,"starting");sn(e.paths,t),Pe(e.paths,"info","Runtime daemon starting.",{runtimeId:e.runtime.identity.runtimeId,endpoint:e.endpoint.path});let r=Pr(h=>{fc(e.paths,h)}),i,s,c=!1,m=o(()=>{if(s===void 0){c=!0;return}s()},"requestStop"),f=dr(),d=is({rootDir:us.join(e.paths.rootDir,"control")}),u=Fi({invocationStateFile:us.join(e.paths.rootDir,"host-tool-invocations.json")}),a=ds({runtime:e.runtime,paths:e.paths,requestStop:m}),g;try{i=await pi({endpoint:e.endpoint,createDispatcher:o(h=>Yi({runtime:e.runtime,authToken:n,...e.ownsA2AConfigReconciler===!0?{ownsA2AConfigReconciler:!0}:{},allowAgentRegistrationAdmin:!0,notify:h,runResults:f,controlJournal:d,reverseBridgeHub:u,management:a,durableHostToolInvocations:!0,requireOperationEnvelope:!0,logs:o(()=>({logFile:e.paths.logFile,entries:ri(e.paths)}),"logs")}),"createDispatcher")}),g=dt(e,"ready"),sn(e.paths,g),Pe(e.paths,"info","Runtime daemon ready.",{runtimeId:g.runtimeId,endpoint:g.endpoint})}catch(h){Pe(e.paths,"error","Runtime daemon failed to start.",{error:Se(h).message});let k=!0;try{await i?.close()}catch(P){k=!1,Pe(e.paths,"error","Runtime daemon transport cleanup failed.",{error:Se(P).message})}throw a.close(),f.clear(),u.close(),r(),k?await cs(e.paths,e.lock):sn(e.paths,{...t,status:"unhealthy",lastError:"Runtime daemon transport cleanup failed."}),h}let l=!1,y,v=new Promise(h=>{y=h}),p=o(async()=>{if(l)return;l=!0;let h=[],k=!1,P=!1;try{try{sn(e.paths,dt(e,"stopping")),Pe(e.paths,"info","Runtime daemon stopping.")}catch(w){h.push(`state transition: ${Se(w).message}`)}try{await i?.close(),k=!0}catch(w){h.push(`transport close: ${Se(w).message}`)}a.close(),u.close(),f.clear();try{await e.runtime.close(),P=!0}catch(w){h.push(`Runtime close: ${Se(w).message}`)}try{Pe(e.paths,"info","Runtime daemon stopped.")}catch(w){h.push(`stop log: ${Se(w).message}`)}if(r(),k&&P){let w=await cs(e.paths,e.lock),S=G(e.lock.file);!w&&S?.runtimeId===e.lock.owner.runtimeId&&S.pid===e.lock.owner.pid&&S.createdAt===e.lock.owner.createdAt&&h.push("owner release: the daemon still owns its profile lock")}else try{sn(e.paths,{...dt(e,"unhealthy"),lastError:h.join("; ")})}catch(w){h.push(`unhealthy state: ${Se(w).message}`)}if(h.length>0){try{Pe(e.paths,"error","Runtime daemon stopped with cleanup failures.",{failures:h})}catch(w){h.push(`failure log: ${Se(w).message}`)}throw new Error(`Runtime daemon cleanup failed: ${h.join("; ")}`)}}finally{r(),y?.()}},"closeHost");return s=o(()=>{try{Pe(e.paths,"info","Runtime daemon stop requested.")}catch(k){te({source:"runtime.daemon.host",level:"warn",message:"Runtime daemon stop request could not be logged.",detail:Se(k)})}setTimeout(()=>{p().catch(k=>{te({source:"runtime.daemon.host",level:"error",message:"Runtime daemon shutdown failed.",detail:Se(k)})})},0).unref?.()},"scheduleStop"),c&&s(),{endpoint:e.endpoint,state:g,closed:v,unref(){i?.unref()},close:p}}o(ls,"startRuntimeDaemonHost");async function cs(e,n){for(let t=0;t<50;t+=1){try{if(si(e,n))return!0}catch(i){te({source:"runtime.daemon.host",level:"warn",message:"Runtime daemon ownership release attempt failed.",detail:Se(i)})}let r=G(n.file);if(r===void 0||r.runtimeId!==n.owner.runtimeId||r.pid!==n.owner.pid||r.createdAt!==n.owner.createdAt||r.kind!==n.owner.kind)return!1;await new Promise(i=>{setTimeout(i,10)})}try{Pe(e,"error","Runtime daemon ownership release timed out.")}catch(t){te({source:"runtime.daemon.host",level:"error",message:"Runtime daemon ownership release timed out and could not be logged.",detail:Se(t)})}return!1}o(cs,"releaseHostOwnership");function fc(e,n){try{Pe(e,n.level==="error"?"error":n.level==="warn"?"warn":"info",`[${n.source}] ${n.message}`,{level:n.level,source:n.source,...n.detail!==void 0?{detail:n.detail}:{}})}catch{}}o(fc,"appendRuntimeDiagnostic");function dt(e,n){return{runtimeId:e.runtime.identity.runtimeId,profile:e.paths.profile,pid:process.pid,startedAt:e.runtime.identity.startedAt,endpoint:e.endpoint.path,version:e.runtime.identity.version,status:n,configHome:e.paths.configHome}}o(dt,"createHostState");function Se(e){return e instanceof Error?e:new Error(String(e))}o(Se,"normalizeHostError");async function ms(e){let n=e.profile??"default",t=yc(e.homeDir),r=lr.resolve(e.configHome??lr.join(t,".kodax")),i=rn(r,n);Qn(i);let s=e.endpoint??ln(n,on(t,r)),c={runtimeId:`rt_${gc().replace(/-/g,"").slice(0,12)}`,pid:process.pid,createdAt:new Date().toISOString(),kind:"daemon"},m=await Yt(i,c,e.healthCheck);if(m.kind==="attach"){let f=Xe(m.state);return fs(i,f,e.connectTimeoutMs)}if(m.kind==="wait")return wc(i,s,c,{...e,profile:n});if(m.kind==="unhealthy")throw new Error(`Runtime daemon is ${m.health}; refusing to take ownership.`);return ps(i,s,c,m.lock,e)}o(ms,"acquireRuntimeDaemonLease");function yc(e){return lr.resolve(e??Rc.homedir())}o(yc,"resolveRuntimeDaemonHomeDir");async function wc(e,n,t,r){let i=Date.now()+(r.startupTimeoutMs??5e3);for(;Date.now()<=i;){let s=await Yt(e,t,r.healthCheck);if(s.kind==="attach")return fs(e,Xe(s.state),r.connectTimeoutMs);if(s.kind==="claim")return ps(e,n,t,s.lock,r);if(s.kind==="unhealthy")throw new Error(`Runtime daemon is ${s.health}; refusing to take ownership.`);await vc(r.pollIntervalMs??100)}throw new Error(`Timed out waiting for runtime daemon profile "${r.profile}" to become ready.`)}o(wc,"waitForDaemonLease");async function ps(e,n,t,r,i){let s,c=!1;try{if(s=await i.createRuntime(t.runtimeId),s.identity.runtimeId!==t.runtimeId)throw new Error("Runtime factory returned an identity that does not match its owner fence.");c=!0;let m=await ls({runtime:s,paths:e,endpoint:n,lock:r,...i.ownsA2AConfigReconciler===!0?{ownsA2AConfigReconciler:!0}:{}});try{let f=await Ae(n,{connectTimeoutMs:i.connectTimeoutMs});return hc(e,n,f,m)}catch(f){throw await m.close(),f}}catch(m){throw c||Yn(r),await s?.close(),m}}o(ps,"createClaimedDaemonLease");async function fs(e,n,t){let r=await Ae(n,{connectTimeoutMs:t});return{transport:r,endpoint:n,paths:e,ownsHost:!1,async close(){await r.close?.()},async shutdown(){try{await r.request("runtime.shutdown")}finally{await r.close?.()}}}}o(fs,"createAttachedLease");function hc(e,n,t,r){r.unref();let i=!1,s=!1;return{transport:t,endpoint:n,paths:e,ownsHost:!0,hostClosed:r.closed,async close(){i||(i=!0,await t.close?.())},async shutdown(){s||(s=!0,await r.close())}}}o(hc,"createOwnedLease");function vc(e){return new Promise(n=>{setTimeout(n,e).unref?.()})}o(vc,"delay");import{spawn as Sc}from"node:child_process";import{existsSync as kc}from"node:fs";import{fileURLToPath as Ic}from"node:url";import bc from"node:os";import xe from"node:path";async function ws(e){let n=e.profile??"default",t=xe.resolve(e.homeDir??bc.homedir()),r=xe.resolve(e.configHome??xe.join(t,".kodax")),i=rn(r,n);Qn(i);let s=ln(i.profile,on(t,r));if(e.endpoint&&e.endpoint.path!==s.path)throw new Error("SDK daemon auto-start only supports the profile default endpoint; use attach-only mode for custom endpoints.");let c=await tt(i,e.healthCheck),m=Zn(c);if(m==="healthy"&&c.state)return gs(i,Xe(c.state),!1,e);if(m==="unhealthy"||m==="mismatch")throw new Error(`Runtime daemon is ${m}; refusing to start a competing owner.`);let f=await Tc({profile:i.profile,homeDir:t,configHome:r,defaultProvider:e.defaultProvider,defaultModel:e.defaultModel,sessionsDir:e.sessionsDir,permissionTimeoutMs:e.permissionTimeoutMs}),d=await Pc(i,e,f),u=Xe(d.state);return gs(i,u,d.state.pid===f.pid,e)}o(ws,"acquireRuntimeDaemonProcessLease");async function gs(e,n,t,r){let i=await Ae(n,{connectTimeoutMs:r.connectTimeoutMs});return{transport:i,endpoint:n,paths:e,ownsHost:t,async close(){await i.close?.()},async shutdown(){try{await i.request("runtime.shutdown")}finally{await i.close?.()}}}}o(gs,"connectProcessLease");async function Pc(e,n,t,r=tt){let i=Date.now()+(n.startupTimeoutMs??6e4);try{for(;;){let s=await Ec(e,n,t,r),c=Zn(s);if(c==="healthy"&&s.state)return s.state.pid===t.pid?t.unref():await t.terminate(),{...s,state:s.state};if(c==="mismatch")throw new Error("Runtime daemon endpoint identity does not match its persisted owner state.");let m=i-Date.now();if(m<=0)throw xc(e);await Dc(Math.min(Math.max(1,n.pollIntervalMs??100),m),e,t)}}catch(s){try{await t.terminate()}catch(c){throw new AggregateError([s,c],"Runtime daemon startup failed and its child process could not be reclaimed.")}throw s}}o(Pc,"waitForHealthyDaemonStartup");async function Ec(e,n,t,r){let i=await Promise.race([r(e,n.healthCheck).then(s=>({kind:"health",observation:s})),t.exit.then(s=>({kind:"exit",exit:s}))]);if(i.kind==="exit"){if(hs(e,t))return r(e,n.healthCheck);throw vs(i.exit)}return i.observation}o(Ec,"observeStartupHealth");async function Dc(e,n,t){let r=await Promise.race([ys(e).then(()=>{}),t.exit]);if(r!==void 0){if(hs(n,t)){await ys(e);return}throw vs(r)}}o(Dc,"waitForStartupPoll");function hs(e,n){let t=G(e.lockFile);return t!==void 0&&t.pid!==n.pid}o(hs,"hasCompetingStartupOwner");function vs(e){let n=e.signal!==null?`signal ${e.signal}`:`code ${e.code??"unknown"}`;return new Error(`Runtime daemon child exited before becoming healthy (${n}).`)}o(vs,"runtimeDaemonExitedEarly");function xc(e){let n=process.versions.electron===void 0?"":" Packaged Electron auto-start requires the RunAsNode fuse to remain enabled.";return new Error(`Timed out waiting for runtime daemon profile "${e.profile}" to become ready.${n}`)}o(xc,"runtimeDaemonStartupTimeout");async function Tc(e){let n=_c();Cc(n);let t=[...n!==void 0?Mc(process.execArgv,n.endsWith(".ts")):[],...n!==void 0?[n]:[],"daemon","serve","--profile",e.profile,"--home",e.homeDir,"--config-home",e.configHome];e.defaultProvider!==void 0&&t.push("--provider",e.defaultProvider),e.defaultModel!==void 0&&t.push("--model",e.defaultModel),e.sessionsDir!==void 0&&t.push("--sessions-dir",e.sessionsDir),e.permissionTimeoutMs!==void 0&&t.push("--permission-timeout-ms",String(e.permissionTimeoutMs));let r=wn({args:t,env:Oc({homeDir:e.homeDir,configHome:e.configHome,parentEnv:process.env}),isElectron:process.versions.electron!==void 0}),i=Sc(process.execPath,r.args,{detached:!0,stdio:"ignore",windowsHide:!0,env:r.env}),s=new Promise(c=>{i.once("exit",(m,f)=>c({code:m,signal:f}))});return await new Promise((c,m)=>{i.once("spawn",c),i.once("error",m)}),Ac(i,s)}o(Tc,"spawnRuntimeDaemonServeProcess");function Ac(e,n){return{pid:e.pid,exit:n,unref(){e.unref()},async terminate(){if(!(e.exitCode!==null||e.signalCode!==null)&&(e.kill(),!await Rs(n,1e3)&&(e.kill("SIGKILL"),!await Rs(n,1e3))))throw new Error(`Runtime daemon child ${e.pid??"unknown"} did not exit after termination.`)}}}o(Ac,"createRuntimeDaemonStartupProcess");async function Rs(e,n){let t;try{return await Promise.race([e.then(()=>!0),new Promise(r=>{t=setTimeout(()=>r(!1),n)})])}finally{t!==void 0&&clearTimeout(t)}}o(Rs,"didExitWithin");function Cc(e){if(e!==void 0&&!kc(e))throw new Error(`Runtime daemon CLI entry is unavailable at "${e}". Keep the published KodaX dist files external to the embedder bundle.`)}o(Cc,"assertRuntimeDaemonCliEntryAvailable");function Oc(e){let n={...e.parentEnv,KODAX_DAEMON_SERVE:"1",KODAX_HOME:e.configHome??xe.join(e.homeDir,".kodax")};return delete n[Fn],n}o(Oc,"createRuntimeDaemonServeEnvironment");function _c(){if(process.env.KODAX_BUNDLED==="true")return;let e=Ic(import.meta.url);if(e.endsWith(".ts"))return xe.resolve(xe.dirname(e),"..","kodax_cli.ts");let n=xe.dirname(e),t=xe.basename(n)==="chunks"?xe.dirname(n):n;return xe.join(t,"kodax_cli.js")}o(_c,"resolveDaemonCliEntry");function Mc(e,n){let t=[];for(let r=0;r<e.length;r+=1){let i=e[r]??"",s=i.toLowerCase();if(["--import","--loader","--experimental-loader","--require","-r"].includes(s)){t.push(i);let c=e[r+1];c!==void 0&&(t.push(c),r+=1)}else(s.startsWith("--import=")||s.startsWith("--loader=")||s.startsWith("--experimental-loader=")||s.startsWith("--require=")||s.startsWith("--max-old-space-size")||s==="--enable-source-maps")&&t.push(i)}return n&&!t.some(r=>r==="tsx"||r.endsWith("/tsx")||r.endsWith("\\tsx"))&&t.unshift("--import","tsx"),t}o(Mc,"daemonServeExecArgv");function ys(e){return new Promise(n=>setTimeout(n,e))}o(ys,"delay");import{Worker as Lc}from"node:worker_threads";import{existsSync as jc}from"node:fs";import{basename as Nc,dirname as mr,join as Ss}from"node:path";import{fileURLToPath as ks,pathToFileURL as Is}from"node:url";function bs(e,n={}){let t=Fc(),r=new Lc(t,{workerData:e,execArgv:t.href.endsWith(".ts")?["--import","tsx"]:[],...n.resourceLimits!==void 0?{resourceLimits:n.resourceLimits}:{}}),i=new Map,s=new Set,c=0,m=!1,f=o(a=>{for(let g of i.values())g.reject(a);i.clear()},"rejectPending"),d=o(a=>{m||(m=!0,f(a),s.clear())},"markClosed");return r.on("message",a=>{if(Pn(a)){for(let y of s)y(a);return}if(!Ze(a)&&!en(a)||!a.id)return;let g=i.get(a.id);if(!g)return;if(i.delete(a.id),Ze(a)){g.resolve(a.result);return}let l=new Error(a.error.message);l.code=a.error.code,a.error.data!==void 0&&(l.data=a.error.data),g.reject(l)}),r.on("error",a=>d(a)),r.on("exit",a=>d(new Error(`Runtime Worker exited with code ${a}.`))),{transport:{request(a,g,l){if(m)return Promise.reject(new Error("Runtime Worker transport is closed."));let y=`worker_${++c}`;return new Promise((v,p)=>{i.set(y,{resolve:v,reject:p});try{r.postMessage(Un(y,a,g,l))}catch(h){i.delete(y),p(h instanceof Error?h:new Error(String(h)))}})},subscribe(a){return m?{close(){}}:(s.add(a),{close:o(()=>s.delete(a),"close")})},async close(){m||(d(new Error("Runtime Worker transport closed.")),await r.terminate())}},threadId:r.threadId,async terminate(){m||d(new Error("Runtime Worker terminated.")),await r.terminate()}}}o(bs,"createRuntimeWorkerTransport");function Fc(){if(import.meta.url.endsWith(".ts")){let t=new URL("../../dist/runtime-worker.js",import.meta.url);return jc(ks(t))?t:new URL("./entry.ts",import.meta.url)}if(process.env.KODAX_BUNDLED==="true")return Is(Ss(mr(process.execPath),"runtime-worker.js"));let e=mr(ks(import.meta.url)),n=Nc(e)==="chunks"?mr(e):e;return Is(Ss(n,"runtime-worker.js"))}o(Fc,"resolveRuntimeWorkerUrl");function hr(e){let n=j.resolve(e??Ws.homedir());return{homeDir:n,configHome:e===void 0?j.resolve(bt):j.join(n,".kodax")}}o(hr,"resolveRuntimeDaemonClientLocation");function yn(e,n="default"){let t=hr(e);return{...t,paths:rn(t.configHome,n)}}o(yn,"resolveRuntimeDaemonClientPaths");function og(e={}){let{paths:n}=yn(e.homeDir,e.profile),t=`inline_${Ie().replace(/-/g,"")}`,r=ei(n,{runtimeId:t,pid:process.pid,createdAt:new Date().toISOString(),kind:"inline"},e.enableRollback===!0),i=!1;return{profile:n.profile,ownerId:t,ownerPolicy:we(n),close(){i||(i=!0,Yn(r))}}}o(og,"acquireKodaXInlineOwner");function ig(e={}){return we(yn(e.homeDir,e.profile).paths)}o(ig,"getKodaXRuntimeOwnerPolicy");function sg(e={}){let{paths:n}=yn(e.homeDir,e.profile),t=G(n.lockFile);return{profile:n.profile,policy:we(n),ownerStatus:t!==void 0?"owned":C.existsSync(n.lockFile)?"unreadable":"unowned",owner:t??null}}o(sg,"getKodaXRuntimeOwnerState");function ag(e={}){return Zo(yn(e.homeDir,e.profile).paths)}o(ag,"enableKodaXDaemonOwner");function dg(e){let{paths:n}=yn(e.homeDir,e.profile);if(G(n.lockFile)!==void 0)throw new Error("Cannot change Runtime owner mode while an owner lock exists.");return Qo(n,e.mode,e.expectedRevision)}o(dg,"setKodaXRuntimeOwnerMode");var $c=["provider","model","effort","planModeEffort","thinking","reasoningMode","agentMode","permissionMode","locale","providerModels","extensions","repoIntelligenceMode","repoIntelligenceTrace","verifierLog","stallLog","fallbackProviders","fastProvider","fastModel","deepProvider","deepModel","maxOutputTokens","disablePromptCache","lsp","lspAutoDownload","acpLogLevel","sessionRetentionDays","repoIntelligence","workflow"],qc=new Set(["code","cli","repl","acp","a2a","sdk","ide","space-desktop"]),lt=class extends Error{constructor(t){super(`Runtime continuation target is already terminal: ${t}`);this.afterRunId=t;this.name="RuntimeContinuationStaleError"}afterRunId;static{o(this,"RuntimeContinuationStaleError")}},Ps=5*6e4,mt=1e4,pt=1e3,Es=256*1024*1024,Kc=64*1024,Xc=10,Js=16*1024*1024,Bc=Js/2,Uc=128*1024,Wc=8,Ds=1024,Jc=new Set(["assistant.delta","thinking.delta","tool.progress","run.progress"]),zc=new Set(["tool_call","tool_describe"]),Vc=new Set(["image","file","video"]);async function Gc(e={}){if(e.daemonHostRuntimeId!==void 0&&e.sharedDaemonHost!==!0)throw new Error("daemonHostRuntimeId is reserved for a claimed shared daemon owner.");if(e.daemonHostRuntimeId!==void 0&&!/^rt_[a-f0-9]{12}$/.test(e.daemonHostRuntimeId))throw new Error("Invalid shared daemon Runtime owner identity.");if(e.isolation!==void 0&&e.isolation!=="inline"&&e.isolation!=="worker")throw new Error(`Unsupported KodaX Runtime isolation: ${String(e.isolation)}`);if(e.mode==="daemon"){if(e.isolation!==void 0)throw new Error("Daemon mode selects its isolation internally and does not accept an isolation option.");if(e.worker!==void 0)throw new Error("Runtime Worker options require isolation: 'worker'.");return e.externalAgents!==void 0?Qc(e):zs({profile:e.profile,transport:e.daemonTransport,endpoint:e.daemonEndpoint,autoStart:e.autoStartDaemon??(e.daemonTransport===void 0&&e.daemonEndpoint===void 0),homeDir:e.homeDir,sessionsDir:e.sessionsDir,defaultProvider:e.defaultProvider,defaultModel:e.defaultModel,permissionTimeoutMs:e.permissionTimeoutMs,daemonStartupTimeoutMs:e.daemonStartupTimeoutMs,daemonConnectTimeoutMs:e.daemonConnectTimeoutMs,daemonToken:e.daemonToken,clientInfo:e.clientInfo,capabilities:e.capabilities,requirements:e.requirements})}if(e.mode!==void 0&&e.mode!=="embedded")throw new Error(`Unsupported KodaX runtime mode: ${String(e.mode)}`);if(e.worker!==void 0&&e.isolation!=="worker")throw new Error("Runtime Worker options require isolation: 'worker'.");if(e.isolation==="worker"&&e.externalAgents!==void 0)throw new Error("External agent factories must be installed inside the Runtime Worker host; function injection cannot cross the Worker boundary.");if(e.isolation==="worker")return Yc(e);vr({hardDispose:!1,externalAgents:e.externalAgents!==void 0,...e.externalAgents!==void 0?{externalAgentAdmin:{version:1}}:{}},e.requirements);let n={runtimeId:e.daemonHostRuntimeId??`rt_${Ie().replace(/-/g,"").slice(0,12)}`,mode:"embedded",profile:e.profile??"default",startedAt:new Date().toISOString(),version:"0.7.71",isolation:"inline"},t=bl(e),r=Zr(t?{sessionsDir:t}:void 0),i=Xl(n.profile,r,e.sharedDaemonHost===!0),s=Yl(e);na(s);let c=Il(e),m=e.externalAgents?await Cr({factories:e.externalAgents.factories,policy:e.externalAgents.policy,credentialBroker:e.externalAgents.credentialBroker,artifactPolicy:e.externalAgents.artifactPolicy,store:oo(j.join(c.runtimeDir,"agents"))}):void 0,f=wl(c),d=Ll(f,e.permissionTimeoutMs??Ps,c),u=Ol(f,e.permissionTimeoutMs??Ps),a=ul(),g=il(),l=fl(m),y=new Map,v=new Map,p=[...hm(c.loadRunStatuses())].sort(Sr);for(let O of p){let F=O.sessionOrder??(v.get(O.sessionId)??0)+1;v.set(O.sessionId,Math.max(v.get(O.sessionId)??0,F));let b=Al({...O,acceptedAt:O.acceptedAt??O.startedAt,sessionOrder:F},f,c);y.set(b.runId,Tl(b))}let h=!1,k=o(()=>{if(h)throw new Error("KodaX runtime is closed")},"ensureOpen"),P=ol({bus:f,defaultModel:e.defaultModel,defaultProvider:e.defaultProvider,ensureOpen:k,isClosed:o(()=>h,"isClosed"),artifacts:a,permissions:d,userInputs:u,enableSharedInteractions:e.sharedDaemonHost===!0,persistence:c,runs:y,sessionManager:r,sessionAdmission:i,agentPlane:m,defaultAgentContext:e.externalAgents?.defaultContext}),w=rl(n,r,f,c,k,O=>[...y.values()].some(F=>F.sessionId===O&&pn(F.phase)),(O,F)=>{for(let b of y.values())b.sessionId===O&&pn(b.phase)&&(b.permissionMode=F)},O=>P.list({sessionId:O}),O=>d.service.listPending({sessionId:O}),i),S=e.homeDir?j.join(j.resolve(e.homeDir),".kodax"):bt,T=j.join(e.homeDir?j.resolve(e.homeDir):Ws.homedir(),"kodax_a2a_server_workspace",encodeURIComponent(n.profile)),M=Po({configHome:S,managedWorkspaceRoot:T,defaultProvider:e.defaultProvider,defaultModel:e.defaultModel,runs:P,sessions:w,createSkillScriptRunner:o(O=>Lo({...O,snapshotRoot:j.join(T,"bindings")}),"createSkillScriptRunner")});return{identity:n,capabilities:{hardDispose:!1,externalAgents:e.externalAgents!==void 0,afterTurnInput:{version:1}},sessions:w,runs:P,events:f.service,permissions:d.service,userInputs:u.service,credentials:Om(),hostTools:_m(),operations:{async get(){throw new Error("Embedded Runtime does not persist daemon operation receipts.")}},workflows:g,config:sl(k,s),catalog:al(k,s),mcp:dl(k,s),artifacts:a.service,status:gl({identity:n,permissions:d,userInputs:u,runs:y,sessionManager:r,sessionAdmission:i,workflows:g,agentTasks:l}),diagnostics:Rl(f.service),admin:pl(m),agents:ml(m,M),agentTasks:l,async close(){h||(h=!0,P.closeAll("runtime closed"),d.rejectAll("runtime closed"),u.rejectAll("runtime closed"),await m?.close(),f.close())}}}o(Gc,"createKodaXRuntime");async function Qc(e){let n=e.externalAgents;if(!n)throw new Error("External agent options are required for the hosted daemon.");if(e.daemonTransport!==void 0)throw new Error("External agent factories cannot be installed through an existing daemon transport.");if(e.autoStartDaemon===!1)throw new Error("External agent factories require an in-process daemon host with autoStartDaemon enabled.");let t=e.daemonEndpoint!==void 0?Vs(e.daemonEndpoint):void 0,r=hr(e.homeDir),i=await ms({homeDir:r.homeDir,configHome:r.configHome,profile:e.profile,endpoint:t,connectTimeoutMs:e.daemonConnectTimeoutMs,startupTimeoutMs:e.daemonStartupTimeoutMs,createRuntime:o(s=>Gc({mode:"embedded",homeDir:e.homeDir,profile:e.profile,sessionsDir:e.sessionsDir,defaultProvider:e.defaultProvider,defaultModel:e.defaultModel,permissionTimeoutMs:e.permissionTimeoutMs,sharedDaemonHost:!0,daemonHostRuntimeId:s,clientInfo:e.clientInfo,capabilities:e.capabilities,requirements:e.requirements,externalAgents:n}),"createRuntime")});if(!i.ownsHost)throw await i.close(),new Error("External agent factories cannot be installed into an already-running daemon profile; configure its owner or use a unique profile.");try{let s=await zs({profile:e.profile,transport:i.transport,daemonToken:e.daemonToken??En(i.paths),clientInfo:e.clientInfo,capabilities:e.capabilities,requirements:{...e.requirements,externalAgents:!0,externalAgentAdmin:1}}),c=!1;return{...s,identity:{...s.identity,isolation:"inline"},async close(){c||(c=!0,await s.close(),i.ownsHost?await i.shutdown():await i.close())}}}catch(s){throw await i.close(),i.ownsHost&&await i.shutdown(),s}}o(Qc,"createInProcessExternalAgentDaemon");async function Yc(e){let n=e.worker?.shutdownTimeoutMs??2e3;if(!Number.isFinite(n)||n<=0)throw new Error("Runtime Worker shutdownTimeoutMs must be a positive finite number.");let t=bs({homeDir:e.homeDir,profile:e.profile,sessionsDir:e.sessionsDir,defaultProvider:e.defaultProvider,defaultModel:e.defaultModel,permissionTimeoutMs:e.permissionTimeoutMs},e.worker);try{let r=Rn(await t.transport.request("initialize",{profile:e.profile??"default",...e.clientInfo!==void 0?{clientInfo:e.clientInfo}:{},...e.capabilities!==void 0?{capabilities:e.capabilities}:{}})),i=ta(r.identity);vr(r.capabilities,{...e.requirements,hardDispose:!0});let s=Kt({identity:{...i,mode:"embedded",isolation:"worker",workerThreadId:t.threadId},transport:t.transport,capabilities:Rn(r.capabilities)}),c=!1;return{...s,async close(){if(!c){c=!0;try{await Zc(t.transport.request("runtime.shutdown"),n)}finally{await t.terminate()}}}}}catch(r){throw await t.terminate(),r}}o(Yc,"createWorkerHostedKodaXRuntime");function vr(e,n){if(!n?.hardDispose&&!n?.externalAgents&&n?.externalAgentAdmin===void 0&&n?.a2aConfigReconciler===void 0&&n?.operationDeduplication===void 0&&n?.sessionObservation===void 0&&n?.afterTurnInput===void 0&&n?.interruptInput===void 0&&n?.askUserTransport===void 0&&n?.permissionCas===void 0&&n?.providerCredentialBroker===void 0&&n?.runBoundHostTools===void 0&&n?.coderOwnerFencing===void 0&&n?.crashOutcomeModel===void 0&&n?.coderFeatureMatrix===void 0&&n?.sessionAdmission===void 0&&n?.completeObservationSnapshot===void 0&&n?.connectionLifecycle===void 0&&n?.typedRuntimeEvents===void 0&&n?.daemonSafeRunInput===void 0&&n?.sharedSessionSettings===void 0&&n?.durableRecoveryQueries===void 0&&n?.daemonManagement===void 0)return;let t=Rn(e);if(n.hardDispose&&t.hardDispose!==!0)throw new Error("Runtime does not support the required hardDispose capability.");if(n.externalAgents&&t.externalAgents!==!0)throw new Error("Runtime does not support the required externalAgents capability.");n.operationDeduplication!==void 0&&xs(t,"operationDeduplication",n.operationDeduplication);let r=[["externalAgentAdmin",n.externalAgentAdmin],["a2aConfigReconciler",n.a2aConfigReconciler],["sessionObservation",n.sessionObservation],["afterTurnInput",n.afterTurnInput],["interruptInput",n.interruptInput],["askUserTransport",n.askUserTransport],["permissionCas",n.permissionCas],["providerCredentialBroker",n.providerCredentialBroker],["runBoundHostTools",n.runBoundHostTools],["coderOwnerFencing",n.coderOwnerFencing],["crashOutcomeModel",n.crashOutcomeModel],["coderFeatureMatrix",n.coderFeatureMatrix],["sessionAdmission",n.sessionAdmission],["completeObservationSnapshot",n.completeObservationSnapshot],["connectionLifecycle",n.connectionLifecycle],["typedRuntimeEvents",n.typedRuntimeEvents],["daemonSafeRunInput",n.daemonSafeRunInput],["sharedSessionSettings",n.sharedSessionSettings],["durableRecoveryQueries",n.durableRecoveryQueries],["daemonManagement",n.daemonManagement]];for(let[i,s]of r)s!==void 0&&xs(t,i,s)}o(vr,"assertRuntimeCapabilities");function xs(e,n,t){let r=e[n];if(!U(r)||r.version!==t)throw new Error(`Runtime does not support the required ${n} capability.`)}o(xs,"assertVersionedRuntimeCapability");async function Zc(e,n){let t;try{await Promise.race([e,new Promise((r,i)=>{t=setTimeout(()=>i(new Error(`Runtime Worker shutdown timed out after ${n}ms.`)),n),t.unref?.()})])}finally{t!==void 0&&clearTimeout(t)}}o(Zc,"settleWithin");async function zs(e={}){Ts("daemonStartupTimeoutMs",e.daemonStartupTimeoutMs),Ts("daemonConnectTimeoutMs",e.daemonConnectTimeoutMs);let n=e.endpoint!==void 0?Vs(e.endpoint):void 0,t=hr(e.homeDir),r=e.transport===void 0&&e.autoStart===!0?await ws({homeDir:t.homeDir,configHome:t.configHome,profile:e.profile,endpoint:n,defaultProvider:e.defaultProvider,defaultModel:e.defaultModel,sessionsDir:e.sessionsDir,permissionTimeoutMs:e.permissionTimeoutMs,startupTimeoutMs:e.daemonStartupTimeoutMs,connectTimeoutMs:e.daemonConnectTimeoutMs}):void 0,i=n??r?.endpoint??(e.transport===void 0?ln(e.profile??"default",on(t.homeDir,t.configHome)):void 0),s=e.transport??r?.transport??(i!==void 0?await Ae(i,{connectTimeoutMs:e.daemonConnectTimeoutMs}):void 0);if(!s)throw new Error("connectKodaXRuntime requires a daemon transport, endpoint, or autoStart: true.");let c=tl(e),m,f={},d,u;try{let g={name:e.clientInfo?.name??"kodax-sdk",instanceId:e.clientInfo?.instanceId??`sdk_${Ie().replace(/-/g,"")}`,...e.clientInfo?.instanceSecret!==void 0?{instanceSecret:e.clientInfo.instanceSecret}:{},...e.clientInfo?.title!==void 0?{title:e.clientInfo.title}:{},...e.clientInfo?.version!==void 0?{version:e.clientInfo.version}:{}},l=Rn(await s.request("initialize",{profile:e.profile??"default",connectionPurpose:"client",autoStart:e.autoStart===!0,...c!==void 0?{token:c}:{},clientInfo:g,capabilities:{...e.capabilities,operationDeduplication:!0},...i!==void 0?{endpoint:i.path}:{}}));m=ta(l.identity),f=l.capabilities===void 0?{}:Rn(l.capabilities),d=typeof l.journalEpoch=="string"?l.journalEpoch:void 0,u=el(l.grantedScopes),vr(f,e.requirements);let y=e.profile??"default";if(m.profile!==y)throw new Error(`Runtime daemon profile mismatch: expected ${y}, got ${m.profile}`)}catch(g){throw await s.close?.(),await r?.close(),g}let a=Kt({identity:{...m,mode:"daemon",isolation:"process"},transport:s,capabilities:f,...d!==void 0?{journalEpoch:d}:{},...u!==void 0?{grantedScopes:u}:{}});return r?{...a,async close(){await a.close(),await r.close()}}:a}o(zs,"connectKodaXRuntime");function Ts(e,n){if(!(n===void 0||Number.isFinite(n)&&n>0))throw new Error(`${e} must be a positive finite number.`)}o(Ts,"assertPositiveRuntimeTimeout");function el(e){if(!Array.isArray(e))return;let n=e.filter(t=>typeof t=="string"&&nl(t));return n.length===e.length?n:void 0}o(el,"parseRuntimeGrantedScopes");function nl(e){return e==="session:observe"||e==="session:write"||e==="run:control"||e==="interaction:respond"||e==="permission:respond"||e==="permission:grant-admin"||e==="integration:admin"||e==="workflow:control"||e==="artifact:write"||e==="agent:control"||e==="credential:register"||e==="host-tool:register"||e==="owner:admin"||e==="daemon:admin"}o(nl,"isRuntimeGrantedScope");function tl(e){if(e.daemonToken!==void 0)return e.daemonToken;if(!(e.transport!==void 0&&e.autoStart!==!0))return En(yn(e.homeDir,e.profile).paths)}o(tl,"resolveConnectDaemonToken");function Vs(e){return typeof e!="string"?e:{kind:process.platform==="win32"||e.startsWith("\\\\.\\pipe\\")?"pipe":"unix",path:e}}o(Vs,"normalizeRuntimeDaemonEndpoint");function rl(e,n,t,r,i,s,c,m,f,d){let u=new Set,a=o((l,y,v)=>({id:l,title:y.title,...y.gitRoot?{gitRoot:y.gitRoot}:{},...y.runtimeInfo?.workspaceRoot?{workspaceRoot:y.runtimeInfo.workspaceRoot}:{},...y.runtimeInfo?.surface?{surface:y.runtimeInfo.surface}:{},...y.runtimeInfo?.profileId?{profileId:y.runtimeInfo.profileId}:{},...v?{createdAt:v}:{}}),"toRuntimeSession"),g=o(async l=>{for(let y=0;y<Wc;y+=1){let v=t.currentSessionSeq(l),p=await d.loadRequired(l),[h,k,P]=await Promise.all([n.loadFullTranscript(l),m(l),f(l)]),w=r.loadSessionSettingsVersioned(l),S=t.currentSessionSeq(l);if(v===S)return{runtimeId:e.runtimeId,cursor:S,transcriptRevision:Ul(h),session:a(l,p),transcript:h,settings:w,runs:k,pendingPermissions:P,live:t.projectSession(l)}}throw Am(`Session ${l} changed continuously while taking a snapshot`)},"captureObservationSnapshot");return{async create(l={}){i(),d.assertCreate(l);let y=l.sessionId??await kt();if(u.has(y))throw Object.assign(new Error(`Session already exists: ${y}`),{code:"conflict"});u.add(y);try{if(await n.loadSession(y)!==null)throw Object.assign(new Error(`Session already exists: ${y}`),{code:"conflict"});let v=l.projectPath?j.resolve(l.projectPath):void 0,p=l.gitRoot?j.resolve(l.gitRoot):v,h=Nl(l,v,p),k={messages:[],title:l.title??"",gitRoot:p??"",...l.tag!==void 0?{tag:l.tag}:{},...h!==void 0?{runtimeInfo:h}:{},scope:"user"};await n.storage.save(y,k);let P=a(y,k,new Date().toISOString());return t.emit("session.created",P,{sessionId:y,runId:y}),P}finally{u.delete(y)}},async load(l){i();let y=await d.loadRequired(l),v=a(l,y);return t.emit("session.loaded",v,{sessionId:l,runId:l}),v},async list(l){return i(),d.assertFilter(l),(await n.listSessions(l)).filter(d.admitsSummary).map(Ys)},async transcript(l){return i(),await d.loadRequired(l),n.loadFullTranscript(l)},async observe(l,y){i();let v=[],p,h=!1,k=o(w=>{if(!(h||p!==void 0&&w.seq<=p))try{y(w)}catch(S){te({source:"runtime.sessions.observe",level:"error",message:`Session observation listener failed for ${w.type}`,detail:ce(S)})}},"deliver"),P=t.service.subscribe({sessionId:l},w=>{p===void 0?v.push(w):k(w)});try{let w=await g(l);p=w.cursor;for(let S of v.splice(0).sort((T,M)=>T.seq-M.seq))k(S);return{snapshot:w,close(){h||(h=!0,v.length=0,P.close())}}}catch(w){throw h=!0,P.close(),w}},async fork(l){i();let y=await d.loadRequired(l.sessionId),v=await n.forkSession(l.sessionId,{...l.selector!==void 0?{selector:l.selector}:{},...l.newSessionId!==void 0?{sessionId:l.newSessionId}:{},...l.title!==void 0?{title:l.title}:{}});if(!v){let h=l.newSessionId??await kt(),k={...y,title:l.title??y.title,messages:y.messages.map(Lm)};await n.storage.save(h,k);let P=a(h,k);return t.emit("session.created",P,{sessionId:h,runId:h}),P}let p=a(v.sessionId,v.data);return t.emit("session.created",p,{sessionId:v.sessionId,runId:v.sessionId}),p},async getSettingsVersioned(l){return i(),await d.loadRequired(l),r.loadSessionSettingsVersioned(l)},async getSettings(l){return(await this.getSettingsVersioned(l)).value},async updateSettings(l,y){let v=await this.getSettingsVersioned(l);return(await this.updateSettingsVersioned(l,y,{expectedRevision:v.revision})).value},async updateSettingsVersioned(l,y,v){i();let p=await d.loadRequired(l),h=r.loadSessionSettingsVersioned(l);if(h.revision!==v.expectedRevision)throw kr(`Session settings revision ${v.expectedRevision} is stale; current revision is ${h.revision}`,h.revision);let k=zl(h.value,y);Zs(p,k);let P={revision:h.revision+1,value:k};return r.saveSessionSettingsVersioned(l,P),y.permissionMode!==void 0&&c(l,k.permissionMode),t.emit("session.settings.updated",{sessionId:l,revision:P.revision,settings:k,patch:y},{sessionId:l,runId:l}),P},async appendNotice(l){i(),await d.loadRequired(l.sessionId);let y=await n.appendClientNotice(l.sessionId,{content:l.content,...l.source!==void 0?{source:l.source}:{}});return y&&t.emit("session.notice.appended",{sessionId:l.sessionId,entry:y},{sessionId:l.sessionId,runId:l.sessionId}),y},async rewind(l){i(),await d.loadRequired(l.sessionId),yr(l.sessionId,s);let y=await n.rewindSession(l.sessionId,{...l.selector!==void 0?{selector:l.selector}:{}});if(!y)return null;let v=a(l.sessionId,y);return t.emit("session.rewound",{sessionId:l.sessionId,selector:l.selector,session:v},{sessionId:l.sessionId,runId:l.sessionId}),v},async setActiveEntry(l){i(),await d.loadRequired(l.sessionId),yr(l.sessionId,s);let y=await n.setActiveEntry(l.sessionId,l.entryId);if(!y)return null;let v=a(l.sessionId,y);return t.emit("session.active_entry.updated",{sessionId:l.sessionId,entryId:l.entryId,session:v},{sessionId:l.sessionId,runId:l.sessionId}),v},async compact(l){i(),await d.loadRequired(l.sessionId),yr(l.sessionId,s);let y=await n.compactSession(l.sessionId,{...l.provider!==void 0?{provider:l.provider}:{},...l.model!==void 0?{model:l.model}:{},...l.customInstructions!==void 0?{customInstructions:l.customInstructions}:{},...l.contextWindow!==void 0?{contextWindow:l.contextWindow}:{}}),v=await n.loadSession(l.sessionId),p=v?a(l.sessionId,v):void 0;return t.emit("context.compaction.finished",{sessionId:l.sessionId,compacted:y.compacted,tokensBefore:y.tokensBefore,tokensAfter:y.tokensAfter,...y.reason!==void 0?{reason:y.reason}:{}},{sessionId:l.sessionId,runId:l.sessionId}),y.compacted&&t.emit("session.compacted",{sessionId:l.sessionId,result:{compacted:y.compacted,tokensBefore:y.tokensBefore,tokensAfter:y.tokensAfter},...p!==void 0?{session:p}:{}},{sessionId:l.sessionId,runId:l.sessionId}),{...y,...p!==void 0?{session:p}:{}}},async archive(l){if(i(),await d.loadRequired(l),!await n.archiveSession(l))throw new Error(`Session not found or not archived: ${l}`)},async unarchive(l){if(i(),await d.loadRequired(l),!await n.unarchiveSession(l))throw new Error(`Session not found or not unarchived: ${l}`)},async delete(l){i(),await d.loadRequired(l);let y=await n.deleteSession(l);Mm(l,y)}}}o(rl,"createRuntimeSessionService");function ol(e){let n=new Map,t=new Map,r=new Map,i=new Map;for(let p of e.runs.values())r.set(p.sessionId,Math.max(r.get(p.sessionId)??0,p.sessionOrder));let s=o(p=>{let h=e.runs.get(p);if(!h)throw new Error(`Runtime run not found: ${p}`);return h},"getRecord"),c=o(p=>{n.get(p.sessionId)===p.runId&&n.delete(p.sessionId)},"releaseActiveRun"),m=o((p,h)=>{p.start?.resolve(h),p.start=void 0,delete p.providerCredential},"resolveRunStart"),f=o((p,h)=>(e.permissions.rejectForRun(p.runId,"runtime run ended"),e.userInputs.rejectForRun(p.runId,"runtime run ended"),m(p,h),c(p),vm(e.runs),a(p.sessionId),h),"finishRun"),d=o((p,h,k)=>{let P=p.phase==="queued";p.phase==="queued"&&yl(t,p),p.running?.abort(new Error(h)),p.abortController?.abort(new Error(h)),e.permissions.rejectForRun(p.runId,h),e.userInputs.rejectForRun(p.runId,h),Ln(e.bus,e.persistence,p,"cancelled",{code:"cancelled",effectOutcome:P?"none":"unknown",message:h});let w={runId:p.runId,sessionId:p.sessionId,phase:p.phase};return m(p,w),c(p),k&&!e.isClosed()&&a(p.sessionId),w},"cancelRun"),u=o(p=>{if(!p.start||e.isClosed()){d(p,"runtime closed",!1);return}p.phase="running",p.queuedAt=void 0,p.runningAt=new Date().toISOString(),n.set(p.sessionId,p.runId),gn(e.bus,e.persistence,p,ge(p)),e.bus.emit("run.started",ge(p),{sessionId:p.sessionId,runId:p.runId});let h=jl({bus:e.bus,original:p.start.options.events,permissions:e.permissions,userInputs:e.userInputs,enableSharedInteractions:e.enableSharedInteractions,record:p}),k=cl({agentPlane:e.agentPlane,events:h,model:p.model,options:p.start.options,provider:p.provider,record:p,sessionManager:e.sessionManager});if(e.bus.emit("config.effective",{sessionId:p.sessionId,runId:p.runId,provider:p.provider,...p.model!==void 0?{model:p.model}:{},...k.effort!==void 0?{effort:k.effort}:{},...k.thinking!==void 0?{thinking:k.thinking}:{},...k.reasoningMode!==void 0?{reasoningMode:k.reasoningMode}:{},...k.agentMode!==void 0?{agentMode:k.agentMode}:{},...p.permissionMode!==void 0?{permissionMode:p.permissionMode}:{},...p.autoModeEngine!==void 0?{autoModeEngine:p.autoModeEngine}:{},...k.context?.executionCwd!==void 0?{executionCwd:k.context.executionCwd}:{}},{sessionId:p.sessionId,runId:p.runId,...p.turnId!==void 0?{turnId:p.turnId}:{}}),p.mode==="managed_task"){let S=new AbortController;p.abortController=S;let T=k.abortSignal;T?.aborted?S.abort(T.reason):T?.addEventListener("abort",()=>{S.abort(T.reason)},{once:!0});let M=o(()=>Mr({...k,abortSignal:S.signal},p.start.prompt),"managedOperation");(p.providerCredential!==void 0?ht(p.provider,p.providerCredential,M):M()).then(O=>{let F=p.terminalEmitted?p.phase:O.interrupted?"interrupted":O.success?"completed":"failed";return Ln(e.bus,e.persistence,p,F),{runId:p.runId,sessionId:p.sessionId,phase:p.phase,result:O}}).catch(O=>{let F=Xs(O,p),b=Ks(O),x=p.terminalEmitted?p.phase:b.phase;return p.terminalEmitted||(p.error=F.message),Ln(e.bus,e.persistence,p,x,b.terminal),{runId:p.runId,sessionId:p.sessionId,phase:p.phase,error:F}}).then(O=>f(p,O));return}let P=o(()=>_r(k,p.start.prompt),"codingOperation"),w=p.providerCredential!==void 0?ht(p.provider,p.providerCredential,P):P();p.running=w,w.result.then(S=>{let T=p.terminalEmitted?p.phase:S.interrupted?"interrupted":S.success?"completed":"failed";return Ln(e.bus,e.persistence,p,T),{runId:p.runId,sessionId:p.sessionId,phase:p.phase,result:S}}).catch(S=>{let T=Xs(S,p),M=Ks(S),L=p.terminalEmitted?p.phase:M.phase;return p.terminalEmitted||(p.error=T.message),Ln(e.bus,e.persistence,p,L,M.terminal),{runId:p.runId,sessionId:p.sessionId,phase:p.phase,error:T}}).then(S=>f(p,S))},"startRecord"),a=o(p=>{let h=t.get(p);if(!h||h.length===0||n.has(p))return;let k=h.shift();if(h.length===0&&t.delete(p),!k)return;let P=e.runs.get(k);if(!P||P.phase!=="queued"){a(p);return}u(P)},"drainNext"),g=o(p=>{let h=t.get(p.sessionId)??[];h.push(p.runId),t.set(p.sessionId,h),gn(e.bus,e.persistence,p,ge(p)),e.bus.emit("run.queued",ge(p),{sessionId:p.sessionId,runId:p.runId})},"enqueue"),l=o(p=>{let h=ge(p);gn(e.bus,e.persistence,p,h),e.bus.emit("run.updated",h,{sessionId:p.sessionId,runId:p.runId,...p.turnId!==void 0?{turnId:p.turnId}:{}})},"publishRunUpdate"),y=o(async p=>{e.ensureOpen();let h=Fl(p,e.artifacts),k=await e.sessionAdmission.loadRequired(p.sessionId),P=e.persistence.loadSessionSettings(p.sessionId);Zs(k,P);let w=Kl(p.options??{},P,h.inputArtifacts),S=w.provider??e.defaultProvider;if(!S)throw new Error("runtime.runs.start requires input.options.provider or runtime defaultProvider");let T=p;if(T.providerCredential!==void 0&&T.providerCredentialProvider!==void 0&&T.providerCredentialProvider!==S)throw Cm(`Credential lease is bound to ${T.providerCredentialProvider}, not ${S}.`);let M=w.modelOverride??w.model??e.defaultModel,L=p.trustedRunId??ym();if(e.runs.has(L))throw kr(`Runtime run already exists: ${L}`,0);let O=new Date().toISOString(),F=o(()=>{},"resolveResult"),b=new Promise(Ee=>{F=Ee}),x=p.requiredAfterRunId,D=x===void 0?void 0:s(x);if(D!==void 0){if(D.sessionId!==p.sessionId)throw new Error(`Runtime continuation target ${x} does not belong to session ${p.sessionId}`);if(!pn(D.phase)&&D.phase!=="queued")throw new lt(D.runId)}let q=(r.get(p.sessionId)??0)+1;r.set(p.sessionId,q);let J=D!==void 0||n.has(p.sessionId),V={runId:L,sessionId:p.sessionId,phase:J?"queued":"running",startedAt:O,sessionOrder:q,...J?{queuedAt:O}:{},provider:S,...M!==void 0?{model:M}:{},...p.permissionBroker!==void 0?{permissionBroker:p.permissionBroker}:{},...P.permissionMode!==void 0?{permissionMode:P.permissionMode}:{},...P.autoModeEngine!==void 0?{autoModeEngine:P.autoModeEngine}:{},...w.reasoningMode!==void 0?{reasoning:w.reasoningMode}:{},mode:p.mode??"coding",...p.providerCredential!==void 0?{providerCredential:p.providerCredential}:{},hadProviderCredential:p.providerCredential!==void 0,...p.origin!==void 0?{origin:p.origin}:{},...x!==void 0?{continuation:{inputId:L,afterRunId:x,delivery:"after_turn",contentPreview:Wl(h.prompt)}}:{},...p.agentContext??e.defaultAgentContext?{agentContext:p.agentContext??e.defaultAgentContext}:{},result:b,start:{prompt:h.prompt,inputArtifacts:h.inputArtifacts,options:w,resolve:F},terminalEmitted:!1};return e.runs.set(L,V),J?g(V):u(V),{runId:L,sessionId:p.sessionId,get turnId(){return V.turnId},result:b}},"startRun"),v=o(p=>{let k=(i.get(p.sessionId)??Promise.resolve()).then(()=>y(p)),P=k.then(()=>{},()=>{});return i.set(p.sessionId,P),P.then(()=>{i.get(p.sessionId)===P&&i.delete(p.sessionId)}),k},"start");return{start:v,async submitInput(p){e.ensureOpen(),await e.sessionAdmission.loadRequired(p.sessionId);let h=s(p.afterRunId);if(h.sessionId!==p.sessionId)throw new Error(`Runtime continuation target ${p.afterRunId} does not belong to session ${p.sessionId}`);if(!pn(h.phase)&&h.phase!=="queued")return{accepted:!1,delivery:p.delivery,sessionId:p.sessionId,afterRunId:p.afterRunId,reason:"stale_run"};if(p.delivery==="interrupt")return{accepted:!1,delivery:p.delivery,sessionId:p.sessionId,afterRunId:p.afterRunId,reason:"unsupported_capability"};let k=p,P;try{P=await v({sessionId:p.sessionId,input:p.input,...k.options!==void 0?{options:k.options}:{},...k.providerCredential!==void 0?{providerCredential:k.providerCredential}:{},...k.providerCredentialProvider!==void 0?{providerCredentialProvider:k.providerCredentialProvider}:{},...k.origin!==void 0?{origin:k.origin}:{},...k.trustedRunId!==void 0?{trustedRunId:k.trustedRunId}:{},requiredAfterRunId:p.afterRunId})}catch(S){if(!(S instanceof lt))throw S;return{accepted:!1,delivery:p.delivery,sessionId:p.sessionId,afterRunId:p.afterRunId,reason:"stale_run"}}let w=s(P.runId).sessionOrder;return{accepted:!0,delivery:p.delivery,runId:P.runId,sessionId:p.sessionId,afterRunId:p.afterRunId,sessionOrder:w}},async await(p){e.ensureOpen();let h=e.runs.get(p);if(h)return await e.sessionAdmission.assertRunAccess(h.sessionId),h.result;let k=e.persistence.loadRunStatus(p);if(k)return await e.sessionAdmission.assertRunAccess(k.sessionId),ra(k);throw new Error(`Runtime run not found: ${p}`)},async get(p){e.ensureOpen();let h=e.runs.get(p);if(h)return await e.sessionAdmission.assertRunAccess(h.sessionId),ge(h);let k=e.persistence.loadRunStatus(p);if(k)return await e.sessionAdmission.assertRunAccess(k.sessionId),k;throw new Error(`Runtime run not found: ${p}`)},async list(p){e.ensureOpen(),p?.sessionId!==void 0&&await e.sessionAdmission.assertRunAccess(p.sessionId);let h=[...e.runs.values()].filter(k=>Sm(k,p)).map(ge);return wr(h,e.sessionAdmission)},async abort(p){e.ensureOpen();let h=s(p);await e.sessionAdmission.assertRunAccess(h.sessionId),(h.phase==="queued"||pn(h.phase))&&d(h,"runtime run aborted",!0)},async setModel(p,h){e.ensureOpen();let k=s(p);await e.sessionAdmission.assertRunAccess(k.sessionId),k.model=h,k.running?.setModel(h),l(k)},async setProvider(p,h){e.ensureOpen();let k=s(p);await e.sessionAdmission.assertRunAccess(k.sessionId),k.provider=h,k.running?.setProvider(h),l(k)},async setReasoning(p,h){e.ensureOpen();let k=s(p);await e.sessionAdmission.assertRunAccess(k.sessionId),k.reasoning=h,k.running?.setReasoning(h),l(k)},closeAll(p){for(let h of e.runs.values())(h.phase==="queued"||pn(h.phase))&&d(h,p,!1);n.clear(),t.clear()}}}o(ol,"createRuntimeRunService");function il(){let e=Tr();return{async list(n){let t=e.list(),r=n?.runId?t.filter(i=>i.runId===n.runId):t;return n?.limit===void 0?r:r.slice(0,n.limit)},async get(n){return e.getWorkflowProcessSnapshot(n)},subscribe(n,t){return{close:e.subscribeWorkflowProcess(i=>{n.runId&&i.snapshot.runId!==n.runId||n.activeOnly===!0&&Im(i.snapshot.status)||t(i)})}},async pause(n){return e.pause(n)},async resume(n){return e.resume(n)},async stop(n){return e.stop(n)}}}o(il,"createRuntimeWorkflowService");function sl(e,n){return{async read(){return e(),fn(ke(n))},async patch(t){return e(),Gl(t,"runtime.config.patch"),Zl(n,Ql(t)),fn(ke(n))},async reload(){return e(),n!==void 0?(na(n),{ok:!0,config:fn(ke(n))}):{ok:!0,config:fn(Hr())}}}}o(sl,"createRuntimeConfigService");function al(e,n){return{async providers(){return e(),Pt()},async models(t){return e(),um(Pt(),t)},async commands(t){return e(),qs(t)},async resolveCommand(t){e();let r=t.name.trim().toLowerCase();return qs(t.projectRoot).find(i=>i.name.trim().toLowerCase()===r||(i.aliases??[]).some(s=>s.trim().toLowerCase()===r))??null},async skills(t){e();let r=await vt(t?.projectRoot);return(t?.userInvocableOnly===!0?r.listUserInvocable():r.list()).map(fm)},async describeSkill(t){e();let r=await vt(t.projectRoot);return r.has(t.name)?gm(await r.loadFull(t.name)):null},async customProviders(){return e(),em(n)},async upsertCustomProvider(t){return e(),nm(n,t)},async deleteCustomProvider(t){return e(),tm(n,t)},async extensions(){e();let t=Ve();if(!t)return{active:!1,extensions:[]};let r=t.getDiagnostics();return{active:!0,extensions:r.loadedExtensions,diagnostics:r}},async reloadExtensions(){e();let t=Ve();return t?(await t.reloadExtensions({continueOnError:!0}),{ok:!0,active:!0,diagnostics:t.getDiagnostics()}):{ok:!0,active:!1}}}}o(al,"createRuntimeCatalogService");function dl(e,n){return{async listServers(){return e(),Rr(n)},async getServer(t){return e(),om(n,t)},async validateServer(t,r){e();try{return Et(t,r),{ok:!0,config:structuredClone(r)}}catch(i){return{ok:!1,error:i instanceof Error?i.message:String(i)}}},async upsertServer(t,r){return e(),im(n,t,r)},async deleteServer(t){return e(),sm(n,t)},async reloadServers(){e();let t=St(Rr(n));try{return{ok:!0,servers:t.listServers()}}finally{await t.dispose()}},async listTools(t){e();let r=Rr(n),i=t?.server!==void 0?[t.server]:Object.keys(r),s=St(r);try{let c=[];for(let m of i)c.push(await s.listTools(m,{forceRefresh:t?.forceRefresh===!0}));return c}finally{await s.dispose()}}}}o(dl,"createRuntimeMcpService");function ul(){let e=new Map;return{service:{async create(r){if(!ql(r.kind))throw new Error(`Unsupported runtime artifact kind: ${String(r.kind)}`);let i=j.resolve(r.path),s;try{s=await C.promises.stat(i)}catch(f){throw new Error(`Runtime artifact path is not readable: ${i}`,{cause:f})}if(!s.isFile())throw new Error(`Runtime artifact path must be a regular file: ${i}`);if(s.size>Es)throw new Error(`Runtime artifact exceeds the ${Es}-byte limit: ${i}`);let c=`art_${Ie().replace(/-/g,"").slice(0,12)}`,m={id:c,kind:r.kind,path:i,sizeBytes:s.size,...r.mediaType!==void 0?{mediaType:r.mediaType}:{},...r.mimeType!==void 0?{mimeType:r.mimeType}:{},...r.name!==void 0?{name:r.name}:{},...r.source!==void 0?{source:r.source}:{},...r.description!==void 0?{description:r.description}:{},createdAt:new Date().toISOString()};return e.set(c,m),m},async get(r){return e.get(r)},async delete(r){return e.delete(r)}},resolve:o(r=>{let i=e.get(r);if(!i)throw new Error(`Runtime artifact not found: ${r}`);return i},"resolve")}}o(ul,"createRuntimeArtifactStore");function cl(e){let{agentPlane:n,events:t,model:r,options:i,provider:s,record:c,sessionManager:m}=e;return{...i,provider:s,...r!==void 0?{modelOverride:r}:{},session:{...i.session??{},id:c.sessionId,storage:m.storage},events:t,...n&&c.agentContext?{context:{...i.context??{},agentExecutorPlane:{plane:n,context:c.agentContext}}}:{}}}o(cl,"buildRunOptions");function ct(e){if(e.actorId.trim().length===0)throw new Error("Runtime agent context actorId must not be empty.")}o(ct,"assertRuntimeAgentContext");function ll(e,n){let t=[],r=new Set(e.skills);for(let s of n.requiredSkills??[])r.has(s)||t.push(`required skill is unavailable: ${s}`);let i=n.requiredCapabilities;if(i)for(let s of["streaming","durableTasks","inputRequired","cancellation","artifacts"])i[s]===!0&&e.capabilities[s]!=="supported"&&t.push(`required capability ${s} is ${e.capabilities[s]}`);return t}o(ll,"localAgentReasons");function pr(e){return ct(e),hn(e).map(n=>{let t=ll(n,e);return{descriptor:n,dispatchability:{status:t.length===0?"dispatchable":"unavailable",checkedAt:new Date().toISOString(),reasons:t}}}).filter(n=>n.dispatchability.status==="dispatchable")}o(pr,"runtimeLocalListings");function ml(e,n){return{execution:n,enabled:e!==void 0,async listDispatchable(t){ct(t);let r=hn(t);return e?e.listDispatchable(t,r):pr(t)},async describe(t,r){ct(r);let i=hn(r);return e?e.describe(t,r,i):pr(r).find(s=>s.descriptor.agentId===t)},async preflight(t){ct(t.query);let r=hn(t.query);if(e)return e.preflight(t,r);let i=pr(t.query).find(c=>c.descriptor.agentId===t.agentId),s=i?[]:["agent is not dispatchable"];return i&&t.expectedConfigurationRevision!==void 0&&i.descriptor.configurationRevision!==t.expectedConfigurationRevision&&s.push("configuration revision changed"),{ok:i!==void 0&&s.length===0,...i?{descriptor:i.descriptor}:{},dispatchability:i?.dispatchability??{status:"unavailable",checkedAt:new Date().toISOString(),reasons:s},reasons:s}}}}o(ml,"createRuntimeAgentService");function Te(){return new Error("Runtime external agent executor plane is not enabled.")}o(Te,"externalAgentsDisabled");function pl(e){return{agentRegistrations:e?.registrations??{async list(){return[]},async upsert(){throw Te()},async setEnabled(){throw Te()},async remove(){throw Te()}}}}o(pl,"createRuntimeAdminService");function fl(e){return e?e.tasks:{async start(){throw Te()},async list(){return[]},async get(){throw Te()},async events(){throw Te()},async wait(){throw Te()},async sendInput(){throw Te()},async cancel(){throw Te()},async reconcile(){throw Te()}}}o(fl,"createRuntimeAgentTaskService");function gl(e){return{async snapshot(){let n=await wr([...e.runs.values()].map(ge),e.sessionAdmission);return{runtimeId:e.identity.runtimeId,mode:e.identity.mode,profile:e.identity.profile,startedAt:e.identity.startedAt,sessions:(await e.sessionManager.listSessions({includeArchived:!0})).filter(e.sessionAdmission.admitsSummary).map(Ys),runs:n,pendingPermissions:await e.permissions.service.listPending(),workflows:await e.workflows.list({})}},async preflight(){let n=await wr([...e.runs.values()].map(ge),e.sessionAdmission),t=n.filter(d=>d.phase==="running"||d.phase==="waiting_permission"||d.phase==="waiting_user_input"),r=n.filter(d=>d.phase==="queued"),i=(await e.workflows.list({})).filter(d=>d.status!=="completed"&&d.status!=="failed"&&d.status!=="denied"&&d.status!=="stopped"),s=(await e.agentTasks.list()).filter(d=>d.state!=="completed"&&d.state!=="failed"&&d.state!=="canceled"&&d.state!=="rejected"),c=await e.permissions.service.listPending(),m=await e.userInputs.service.listPending(),f=[];return t.length>0&&f.push("active_runs"),r.length>0&&f.push("queued_runs"),i.length>0&&f.push("active_workflows"),s.length>0&&f.push("active_agent_tasks"),(c.length>0||m.length>0)&&f.push("pending_interactions"),{runtimeId:e.identity.runtimeId,clientCount:0,activeRuns:t,queuedRuns:r,activeWorkflows:i,activeAgentTasks:s,pendingPermissions:c,pendingUserInputs:m,blockers:f,canStop:f.length===0}}}}o(gl,"createRuntimeStatusService");function Rl(e){return{latestContextBudget(n){return As(e,"context.budget.snapshot",n)},latestToolExposure(n){return As(e,"tool.exposure.planned",n)}}}o(Rl,"createRuntimeDiagnosticsService");async function As(e,n,t){let r={type:n,limit:100,...t?.sessionId!==void 0?{sessionId:t.sessionId}:{},...t?.runId!==void 0?{runId:t.runId}:{}};return(await e.replay(r)).at(-1)?.payload??null}o(As,"latestRuntimeDiagnosticPayload");function pn(e){return e==="running"||e==="waiting_permission"||e==="waiting_user_input"}o(pn,"isActiveRunPhase");function yl(e,n){let t=e.get(n.sessionId);if(!t)return;let r=t.filter(i=>i!==n.runId);r.length===0?e.delete(n.sessionId):e.set(n.sessionId,r)}o(yl,"removeQueuedRun");function wl(e){let n=!1,t=[],r=new Map,i=new Map,s=new Set,c=o((a,g)=>g?!(g.sessionId!==void 0&&a.sessionId!==g.sessionId||g.runId!==void 0&&a.runId!==g.runId||g.type!==void 0&&!(Array.isArray(g.type)?g.type:[g.type]).includes(a.type)):!0,"matches"),m=o(a=>{t.push(a),t.length>mt&&t.splice(0,t.length-mt)},"remember"),f=o((a,g,l)=>{let y=e.nextEventSeq();return{id:`evt_${y}_${Ie().replace(/-/g,"").slice(0,8)}`,seq:y,time:new Date().toISOString(),sessionId:l.sessionId,runId:l.runId,...l.turnId!==void 0?{turnId:l.turnId}:{},type:a,payload:g}},"createEvent"),d=o(a=>{for(let g of[...s])if(c(a,g.filter))try{g.listener(a)}catch(l){te({source:"runtime.events",level:"error",message:`Runtime event listener failed for ${a.type}`,detail:{eventId:a.id,error:ce(l)}})}},"notify");return{service:{subscribe(a,g){if(n)throw new Error("KodaX runtime event bus is closed");let l={filter:a,listener:g};return s.add(l),{close(){s.delete(l)}}},async replay(a){let g=e.replay(a),l=new Map;for(let v of g)l.set(v.id,v);for(let v of t)l.set(v.id,v);let y=[...l.values()].filter(v=>c(v,a)&&(a?.sinceSeq===void 0||v.seq>a.sinceSeq)).sort((v,p)=>v.seq-p.seq||v.time.localeCompare(p.time));return a?.limit===void 0?y:y.slice(-a.limit)}},emit(a,g,l){let y=f(a,g,l);i.set(y.sessionId,y.seq);let v=r.get(y.sessionId)??Cs();r.set(y.sessionId,v),hl(v,y),m(y);let p=[y];try{e.appendEvent(y)}catch(h){let k=f("runtime.warning",{message:ce(h).message,sourceEventId:y.id},l);m(k),p.push(k)}for(let h of p)d(h);return y},projectSession(a){let g=r.get(a);return Os(g===void 0?Cs():g)},currentSessionSeq(a){let g=i.get(a);if(g!==void 0)return g;let l=Sl(e.replay({sessionId:a}));return i.set(a,l),l},close(){n=!0;try{e.close()}catch(a){te({source:"runtime.persistence",level:"error",message:"Failed to flush runtime events while closing",detail:a})}s.clear(),r.clear(),i.clear()}}}o(wl,"createRuntimeEventBus");function Cs(){return{assistantTextByRun:{},thinkingTextByRun:{},activeTools:new Map,pendingUserInputs:new Map,managedTasks:new Map,todo:void 0}}o(Cs,"createRuntimeSessionLiveProjectionState");function hl(e,n){let t=U(n.payload)?n.payload:void 0;if(n.type==="assistant.delta"&&typeof t?.text=="string")e.assistantTextByRun[n.runId]=`${e.assistantTextByRun[n.runId]??""}${t.text}`;else if(n.type==="thinking.delta"&&typeof t?.text=="string")e.thinkingTextByRun[n.runId]=`${e.thinkingTextByRun[n.runId]??""}${t.text}`;else if(n.type==="tool.started"){let r=fr(n);e.activeTools.set(r,{key:r,runId:n.runId,...n.turnId!==void 0?{turnId:n.turnId}:{},started:n.payload})}else if(n.type==="tool.progress"){let r=fr(n),i=e.activeTools.get(r)??kl(e.activeTools,n.runId);i&&e.activeTools.set(i.key,{...i,progress:n.payload})}else if(n.type==="tool.finished"){let r=fr(n);if(!e.activeTools.delete(r))for(let[i,s]of e.activeTools)s.runId===n.runId&&e.activeTools.delete(i)}else if(n.type==="todo.updated")e.todo=n.payload;else if(n.type==="run.progress"&&t?.kind==="managed_task_status"){let r=vl(t.status);r!==void 0&&e.managedTasks.set(n.runId,{runId:n.runId,...n.turnId!==void 0?{turnId:n.turnId}:{},status:r})}else if(n.type==="user_input.requested"&&(typeof t?.id=="string"||typeof t?.requestId=="string")){let r=typeof t?.id=="string"?t.id:t.requestId;e.pendingUserInputs.set(r,{requestId:r,runId:n.runId,...n.turnId!==void 0?{turnId:n.turnId}:{},detail:n.payload})}else if(n.type==="user_input.resolved"&&typeof t?.requestId=="string")e.pendingUserInputs.delete(t.requestId);else if(Gs(n.type)){delete e.assistantTextByRun[n.runId],delete e.thinkingTextByRun[n.runId];for(let[r,i]of e.activeTools)i.runId===n.runId&&e.activeTools.delete(r);for(let[r,i]of e.pendingUserInputs)i.runId===n.runId&&e.pendingUserInputs.delete(r);e.managedTasks.delete(n.runId)}}o(hl,"applyRuntimeSessionEvent");function Os(e){return{assistantTextByRun:{...e.assistantTextByRun},thinkingTextByRun:{...e.thinkingTextByRun},activeTools:[...e.activeTools.values()],...e.todo!==void 0?{todo:e.todo}:{},pendingUserInputs:[...e.pendingUserInputs.values()],managedTasks:[...e.managedTasks.values()]}}o(Os,"snapshotRuntimeSessionLiveProjection");function vl(e){if(!(!U(e)||typeof e.agentMode!="string"||typeof e.harnessProfile!="string"))return e}o(vl,"parseRuntimeManagedTaskStatus");function Sl(e){return e.at(-1)?.seq??0}o(Sl,"latestRuntimeEventSeq");function fr(e){let n=U(e.payload)?e.payload:void 0,t=U(n?.meta)?n.meta:void 0,r=U(n?.tool)?n.tool:void 0,i=U(n?.update)?n.update:void 0,s=U(n?.result)?n.result:void 0,c=t?.toolCallId??t?.toolUseId??r?.id??i?.id??s?.id??s?.toolCallId;return typeof c=="string"&&c.length>0?`${e.runId}:${c}`:`${e.runId}:${e.turnId??"turn"}:${e.id}`}o(fr,"runtimeToolProjectionKey");function kl(e,n){return[...e.values()].reverse().find(t=>t.runId===n)}o(kl,"latestActiveToolForRun");function Gs(e){return e==="run.completed"||e==="run.failed"||e==="run.cancelled"||e==="run.interrupted"}o(Gs,"isTerminalRuntimeEvent");function Il(e){let n=e.homeDir?j.resolve(e.homeDir):e.sessionsDir?j.resolve(e.sessionsDir,".."):process.cwd(),t=e.sharedDaemonHost===!0?j.join(n,".kodax","runtime","profiles",encodeURIComponent(e.profile??"default")):j.join(n,".kodax","runtime"),r=j.join(t,"runs"),i=j.join(t,"session-settings"),s=j.join(t,"permission-grants.json"),c=j.join(t,"event-sequence"),m=new Map,f=0,d,u,a,g=!1,l=o(b=>j.join(r,encodeURIComponent(b)),"runDir"),y=o(b=>j.join(l(b),"events.jsonl"),"eventFile"),v=o(b=>j.join(l(b),"status.json"),"statusFile"),p=o(b=>j.join(i,`${encodeURIComponent(b)}.json`),"sessionSettingsFile"),h=[],k=new Set,P=o(()=>{let b=0;if(C.existsSync(c))try{let x=Number.parseInt(C.readFileSync(c,"utf-8").trim(),10);Number.isSafeInteger(x)&&x>0&&(b=x)}catch(x){te({source:"runtime.persistence",level:"warn",message:"Failed to read runtime event sequence cursor; recovering from event logs",detail:x})}if(!C.existsSync(r))return b;for(let x of C.readdirSync(r,{withFileTypes:!0})){if(!x.isDirectory())continue;let D=j.join(r,x.name,"events.jsonl");if(!C.existsSync(D))continue;let q=C.statSync(D).size,J=Math.min(q,Uc),V=Buffer.allocUnsafe(J),Ee=C.openSync(D,"r");try{C.readSync(Ee,V,0,J,q-J)}finally{C.closeSync(Ee)}let je=V.toString("utf-8").split(/\r?\n/);J<q&&je.shift();for(let Ir of je)if(Ir.trim())try{let wt=JSON.parse(Ir);_s(wt)&&Number.isSafeInteger(wt.seq)&&(b=Math.max(b,wt.seq))}catch{}}return b},"findMaxPersistedEventSeq"),w=o(()=>{a===void 0&&(a=P()+1);let b=a;return a+=1,g=!0,b},"allocateEventSeq"),S=o((b,x,D)=>{if(k.has(b))return;k.add(b);let q=w(),J={id:`evt_persist_warn_${q}_${Ie().replace(/-/g,"").slice(0,8)}`,seq:q,time:new Date().toISOString(),sessionId:D.sessionId??"runtime",runId:D.runId??D.sessionId??"runtime",type:"runtime.warning",payload:{source:"runtime.persistence",message:x,...D.file!==void 0?{file:D.file}:{}}};h.push(J),h.length>mt&&h.splice(0,h.length-mt)},"pushPersistenceWarning"),T=o((b,x)=>[...b,...h].filter(D=>Pl(D,x)).sort((D,q)=>D.seq-q.seq||D.time.localeCompare(q.time)),"withPersistenceWarnings"),M=o((b,x)=>{if(!C.existsSync(b))return[];let D=C.readFileSync(b,"utf-8"),q=[],J=D.split(/\r?\n/);for(let V=0;V<J.length;V+=1){let Ee=J[V]??"";if(Ee.trim())try{let je=JSON.parse(Ee);_s(je)?q.push(je):S(`${b}:${V+1}:shape`,`Skipped malformed runtime event record at ${j.basename(b)}:${V+1}`,{runId:x,file:b})}catch(je){S(`${b}:${V+1}:parse`,`Skipped malformed runtime event record at ${j.basename(b)}:${V+1}: ${ce(je).message}`,{runId:x,file:b})}}return q},"readEventsFromFile"),L=o(b=>{if(C.statSync(b).size<=Js)return;let x=C.readFileSync(b,"utf-8").trimEnd().split(/\r?\n/),D=[],q=0;for(let J=x.length-1;J>=0;J-=1){let V=x[J]??"";if(!V)continue;let Ee=Buffer.byteLength(V,"utf-8")+1;if(D.length>0&&q+Ee>Bc)break;D.push(V),q+=Ee}D.reverse(),C.writeFileSync(b,D.length>0?`${D.join(`
|
|
66
|
+
`)}
|
|
67
|
+
`:"","utf-8")},"trimEventFile"),O=o(()=>{d!==void 0&&(clearTimeout(d),d=void 0);for(let[b,x]of m){let D=x.join(""),q=Buffer.byteLength(D,"utf-8"),J=l(b),V=y(b);C.mkdirSync(J,{recursive:!0}),C.appendFileSync(V,D,"utf-8"),m.delete(b),f=Math.max(0,f-q),L(V)}g&&a!==void 0&&(C.mkdirSync(t,{recursive:!0}),C.writeFileSync(c,String(a-1),"utf-8"),g=!1),u=void 0},"flushBufferedEvents"),F=o(()=>{d===void 0&&(d=setTimeout(()=>{d=void 0;try{O()}catch(b){u=ce(b),te({source:"runtime.persistence",level:"error",message:"Failed to flush buffered runtime events",detail:b})}},Xc),d.unref?.())},"scheduleEventFlush");return{runtimeDir:t,appendEvent(b){let x=`${JSON.stringify(b)}
|
|
68
|
+
`,D=m.get(b.runId)??[];D.push(x),m.set(b.runId,D),f+=Buffer.byteLength(x,"utf-8");let q=u;u=void 0;try{q!==void 0||!Jc.has(b.type)||f>=Kc?O():F()}catch(J){throw F(),J}if(q!==void 0)throw q},close(){O()},nextEventSeq(){return w()},currentEventSeq(){return a===void 0&&(a=P()+1),a-1},replay(b){try{O()}catch(D){S(`${t}:event-flush`,`Failed to flush buffered runtime events: ${ce(D).message}`,{runId:b?.runId})}if(b?.runId)return T(M(y(b.runId),b.runId),b);if(!C.existsSync(r))return T([],b);let x=[];for(let D of C.readdirSync(r,{withFileTypes:!0}))D.isDirectory()&&x.push(...M(j.join(r,D.name,"events.jsonl"),D.name));return T(x,b)},saveRunStatus(b){let x=l(b.runId);C.mkdirSync(x,{recursive:!0}),gr(v(b.runId),b)},loadRunStatus(b){let x=v(b);if(C.existsSync(x))try{let D=ft(JSON.parse(C.readFileSync(x,"utf-8")));if(D)return D;S(`${x}:shape`,`Skipped malformed runtime status record at ${j.basename(x)}`,{runId:b,file:x});return}catch(D){S(`${x}:parse`,`Skipped malformed runtime status record at ${j.basename(x)}: ${ce(D).message}`,{runId:b,file:x});return}},loadRunStatuses(){if(!C.existsSync(r))return[];let b=[];for(let x of C.readdirSync(r,{withFileTypes:!0})){if(!x.isDirectory())continue;let D=j.join(r,x.name,"status.json");if(C.existsSync(D))try{let q=JSON.parse(C.readFileSync(D,"utf-8")),J=ft(q);J?b.push(J):S(`${D}:shape`,`Skipped malformed runtime status record at ${j.basename(D)}`,{runId:x.name,file:D})}catch(q){S(`${D}:parse`,`Skipped malformed runtime status record at ${j.basename(D)}: ${ce(q).message}`,{runId:x.name,file:D})}}return b},loadSessionSettingsVersioned(b){let x=p(b);if(!C.existsSync(x))return{revision:0,value:{}};try{let D=JSON.parse(C.readFileSync(x,"utf-8"));return U(D)&&Number.isSafeInteger(D.revision)&&typeof D.revision=="number"&&D.revision>=0&&U(D.value)?{revision:D.revision,value:$s(D.value)}:{revision:0,value:$s(D)}}catch(D){return S(`${x}:parse`,`Skipped malformed runtime session settings at ${j.basename(x)}: ${ce(D).message}`,{sessionId:b,file:x}),{revision:0,value:{}}}},loadSessionSettings(b){return this.loadSessionSettingsVersioned(b).value},saveSessionSettingsVersioned(b,x){C.mkdirSync(i,{recursive:!0});let D=p(b);gr(D,{revision:x.revision,value:Rm(x.value)})},saveSessionSettings(b,x){let D=this.loadSessionSettingsVersioned(b);this.saveSessionSettingsVersioned(b,{revision:D.revision+1,value:x})},loadPermissionGrants(){if(!C.existsSync(s))return{revision:0,value:[]};try{let b=JSON.parse(C.readFileSync(s,"utf-8"));if(!U(b)||!Number.isSafeInteger(b.revision)||!Array.isArray(b.value))throw new Error("invalid permission grant store shape");return{revision:b.revision,value:b.value.map(Vl)}}catch(b){throw new Error(`Permission grant store is untrusted: ${ce(b).message}`)}},savePermissionGrants(b){C.mkdirSync(t,{recursive:!0}),gr(s,b)}}}o(Il,"createRuntimePersistence");function gr(e,n){let t=`${e}.${process.pid}.${Ie()}.tmp`,r;try{r=C.openSync(t,"wx",384),C.writeFileSync(r,`${JSON.stringify(n,null,2)}
|
|
69
|
+
`,"utf-8"),C.fsyncSync(r),C.closeSync(r),r=void 0,C.renameSync(t,e)}finally{r!==void 0&&C.closeSync(r),C.rmSync(t,{force:!0})}}o(gr,"writeRuntimeJsonAtomic");function bl(e){if(e.sessionsDir!==void 0)return j.resolve(e.sessionsDir);if(e.homeDir!==void 0)return j.join(j.resolve(e.homeDir),".kodax","sessions")}o(bl,"resolveRuntimeSessionsDir");function Pl(e,n){return n?!(n.sessionId!==void 0&&e.sessionId!==n.sessionId||n.runId!==void 0&&e.runId!==n.runId||n.type!==void 0&&!(Array.isArray(n.type)?n.type:[n.type]).includes(e.type)||n.sinceSeq!==void 0&&e.seq<=n.sinceSeq):!0}o(Pl,"eventMatchesReplayFilter");function _s(e){return U(e)?typeof e.id=="string"&&typeof e.seq=="number"&&typeof e.time=="string"&&typeof e.sessionId=="string"&&typeof e.runId=="string"&&typeof e.type=="string"&&"payload"in e:!1}o(_s,"isRuntimeEvent");function ft(e){if(U(e)&&!(typeof e.runId!="string"||typeof e.sessionId!="string"||!El(e.phase)||typeof e.startedAt!="string"||typeof e.provider!="string"))return{runId:e.runId,sessionId:e.sessionId,...typeof e.turnId=="string"?{turnId:e.turnId}:{},phase:e.phase,startedAt:e.startedAt,...typeof e.acceptedAt=="string"?{acceptedAt:e.acceptedAt}:{},...Number.isSafeInteger(e.sessionOrder)&&typeof e.sessionOrder=="number"?{sessionOrder:e.sessionOrder}:{},...typeof e.queuedAt=="string"?{queuedAt:e.queuedAt}:{},...typeof e.runningAt=="string"?{runningAt:e.runningAt}:{},...typeof e.executionStartedAt=="string"?{executionStartedAt:e.executionStartedAt}:{},...typeof e.endedAt=="string"?{endedAt:e.endedAt}:{},provider:e.provider,...e.mode==="coding"||e.mode==="managed_task"?{mode:e.mode}:{},...U(e.origin)&&typeof e.origin.principalId=="string"?{origin:{principalId:e.origin.principalId,...typeof e.origin.clientName=="string"?{clientName:e.origin.clientName}:{},...typeof e.origin.clientVersion=="string"?{clientVersion:e.origin.clientVersion}:{},...typeof e.origin.operationId=="string"?{operationId:e.origin.operationId}:{}}}:{},...typeof e.model=="string"?{model:e.model}:{},...typeof e.reasoning=="string"?{reasoning:e.reasoning}:{},...typeof e.error=="string"?{error:e.error}:{},...Ls(e.terminal)!==void 0?{terminal:Ls(e.terminal)}:{},...Ms(e.continuation)!==void 0?{continuation:Ms(e.continuation)}:{}}}o(ft,"parseRuntimeRunStatus");function Ms(e){if(!(!U(e)||typeof e.inputId!="string"||typeof e.afterRunId!="string"||e.delivery!=="after_turn"||e.state!=="queued"&&e.state!=="delivered"&&e.state!=="terminal"||typeof e.contentPreview!="string"))return{inputId:e.inputId,afterRunId:e.afterRunId,delivery:e.delivery,state:e.state,contentPreview:e.contentPreview}}o(Ms,"parseRuntimeContinuationStatus");function El(e){return e==="queued"||e==="running"||e==="waiting_permission"||e==="waiting_user_input"||e==="completed"||e==="failed"||e==="cancelled"||e==="interrupted"}o(El,"isRuntimeRunPhase");function Ls(e){if(U(e)&&!(!Number.isSafeInteger(e.revision)||typeof e.revision!="number"||!Dl(e.kind)||!xl(e.code)||e.effectOutcome!=="none"&&e.effectOutcome!=="known"&&e.effectOutcome!=="unknown"))return{revision:e.revision,kind:e.kind,code:e.code,effectOutcome:e.effectOutcome,...typeof e.message=="string"?{message:e.message}:{}}}o(Ls,"parseRuntimeTerminalFact");function Dl(e){return e==="completed"||e==="failed"||e==="cancelled"||e==="interrupted"}o(Dl,"isRuntimeTerminalKind");function xl(e){return e==="completed"||e==="run_failed"||e==="cancelled"||e==="interrupted"||e==="runtime_restarted"||e==="daemon_crashed"||e==="credential_unavailable"||e==="host_not_dispatched"||e==="host_outcome_unknown"||e==="control_history_untrusted"}o(xl,"isRuntimeTerminalCode");function Tl(e){return{runId:e.runId,sessionId:e.sessionId,...e.turnId!==void 0?{turnId:e.turnId}:{},phase:e.phase,startedAt:e.startedAt,sessionOrder:e.sessionOrder??0,...e.queuedAt!==void 0?{queuedAt:e.queuedAt}:{},...e.runningAt!==void 0?{runningAt:e.runningAt}:{},...e.endedAt!==void 0?{endedAt:e.endedAt}:{},provider:e.provider,...e.origin!==void 0?{origin:e.origin}:{},...e.model!==void 0?{model:e.model}:{},...e.reasoning!==void 0?{reasoning:e.reasoning}:{},...e.error!==void 0?{error:e.error}:{},...e.terminal!==void 0?{terminal:e.terminal}:{},...e.continuation!==void 0?{continuation:{inputId:e.continuation.inputId,afterRunId:e.continuation.afterRunId,delivery:e.continuation.delivery,contentPreview:e.continuation.contentPreview}}:{},mode:e.mode??"coding",hadProviderCredential:!1,result:Promise.resolve(ra(e)),terminalEmitted:yt(e.phase)}}o(Tl,"recordFromPersistedStatus");function Al(e,n,t){if(yt(e.phase))return e;let r=[...t.replay({runId:e.runId})].reverse().find(c=>{if(!Gs(c.type))return!1;let m=ft(c.payload);return m?.runId===e.runId&&m.sessionId===e.sessionId&&m.phase===Cl(c.type)});if(r!==void 0){let c=ft(r.payload);if(c!==void 0)return gn(n,t,void 0,c),c}let i=e.phase==="queued"?"runtime_restarted":"daemon_crashed",s={...e,phase:"interrupted",endedAt:new Date().toISOString(),error:i,terminal:{revision:1,kind:"interrupted",code:i,effectOutcome:e.phase==="queued"?"none":"unknown",message:"Runtime process restarted before this run reached a durable terminal state."}};return n.emit("run.interrupted",s,{sessionId:s.sessionId,runId:s.runId,...s.turnId!==void 0?{turnId:s.turnId}:{}}),gn(n,t,void 0,s),s}o(Al,"interruptPersistedNonTerminalRun");function Cl(e){if(e==="run.completed")return"completed";if(e==="run.failed")return"failed";if(e==="run.cancelled")return"cancelled";if(e==="run.interrupted")return"interrupted"}o(Cl,"terminalPhaseFromEvent");function js(e,n){if(e===void 0)return n;let t=Date.parse(e);return Number.isFinite(t)?Math.max(1,t-Date.now()):1}o(js,"resolvePermissionTimeoutMs");function Ol(e,n){let t=new Map,r=o((m,f,d,u)=>{let a=t.get(m);return!a||d?.runId!==void 0&&a.request.runId!==d.runId||d?.expectedRevision!==void 0&&a.request.revision!==d.expectedRevision?{requestId:m,accepted:!1,status:"already_resolved"}:(f.status==="answered"&&_l(a.request.kind,f.answer),t.delete(m),clearTimeout(a.timer),a.resolve(f),e.emit("user_input.resolved",{requestId:m,kind:a.request.kind,status:f.status,...u!==void 0?{reason:u}:{}},{sessionId:a.request.sessionId,runId:a.request.runId,...a.request.turnId!==void 0?{turnId:a.request.turnId}:{}}),{requestId:m,accepted:!0,status:f.status})},"resolvePending"),i=o((m,f=n)=>{let d=`input_${Ie().replace(/-/g,"").slice(0,12)}`,u=new Date,a={id:d,revision:0,sessionId:m.sessionId,runId:m.runId,...m.turnId!==void 0?{turnId:m.turnId}:{},kind:m.kind,options:m.options,createdAt:u.toISOString(),expiresAt:new Date(u.getTime()+f).toISOString()},g=o(()=>{},"resolveResponse"),l=new Promise(v=>{g=v}),y=setTimeout(()=>{r(d,{status:"dismissed"},void 0,"timeout")},Math.max(1,f));return y.unref?.(),t.set(d,{request:a,resolve:g,timer:y}),e.emit("user_input.requested",a,{sessionId:a.sessionId,runId:a.runId,...a.turnId!==void 0?{turnId:a.turnId}:{}}),{request:a,response:l}},"trackAndWait"),s=o((m,f)=>{for(let d of[...t.values()])m(d.request)&&r(d.request.id,{status:"dismissed"},void 0,f)},"dismissMatching");return{service:{async listPending(m){return[...t.values()].map(f=>f.request).filter(f=>(m?.sessionId===void 0||f.sessionId===m.sessionId)&&(m?.runId===void 0||f.runId===m.runId))},async respond(m,f,d){return r(m,{status:"answered",answer:f},d)},async dismiss(m,f){return r(m,{status:"dismissed"},f,"client_dismissed")}},trackAndWait:i,resolve:r,rejectForRun(m,f){s(d=>d.runId===m,f)},rejectAll(m){s(()=>!0,m)}}}o(Ol,"createRuntimeUserInputRegistry");function _l(e,n){if(!(e==="askUser"?Qs(n):e==="askUserMulti"?Ml(n):typeof n=="string"))throw oa(`Invalid answer for ${e}`)}o(_l,"assertRuntimeUserInputAnswer");function Qs(e){return Array.isArray(e)?e.every(Ns):Ns(e)}o(Qs,"isAskUserAnswer");function Ns(e){return typeof e=="string"||U(e)&&e.kind==="customInput"&&typeof e.value=="string"}o(Ns,"isAskUserSelectionAnswer");function Ml(e){return U(e)&&Object.values(e).every(Qs)}o(Ml,"isAskUserMultiAnswer");function Ll(e,n,t){let r=new Map,i=o((d,u=n)=>{let a=o(()=>{},"resolveResponse"),g=new Promise(y=>{a=y});return{request:f(d,[a],js(d.expiresAt,u)),response:g}},"trackAndWait"),s=o((d,u,a)=>{let g=r.get(d);if(!g||a!==void 0&&g.request.runId!==a)return!1;u.type==="allow_always"&&Pm(t,g.request,u.scope),r.delete(d),g.timer&&clearTimeout(g.timer);for(let l of g.waiters)l(u);return e.emit("permission.resolved",{requestId:d,decision:u},{sessionId:g.request.sessionId,runId:g.request.runId,...g.request.turnId!==void 0?{turnId:g.request.turnId}:{}}),!0},"resolvePending"),c=o((d,u)=>{let a=[...r.values()].filter(g=>d(g.request)).map(g=>g.request.id);for(let g of a)s(g,u)},"resolveMatching");return{service:{request(d){let u=Bs(t,d.sessionId,d.toolName);return u!==void 0?Promise.resolve({type:"allow_always",scope:u.scope}):i({sessionId:d.sessionId,runId:d.runId,...d.turnId!==void 0?{turnId:d.turnId}:{},...d.toolCallId!==void 0?{toolCallId:d.toolCallId}:{},toolName:d.toolName,...d.reason!==void 0?{reason:d.reason}:{},...d.risk!==void 0?{risk:d.risk}:{},...d.inputPreview!==void 0?{inputPreview:d.inputPreview}:{},...d.expiresAt!==void 0?{expiresAt:d.expiresAt}:{}},d.timeoutMs??n).response},async listPending(d){return[...r.values()].map(u=>u.request).filter(u=>Em(u,d))},async respond(d,u,a){return s(d,u,a?.runId)},async listGrants(){return t.loadPermissionGrants()},async revokeGrant(d,u){let a=t.loadPermissionGrants();if(a.revision!==u)throw kr(`Permission grant revision ${u} is stale; current revision is ${a.revision}`,a.revision);let g=a.value.filter(l=>l.id!==d);return g.length===a.value.length?!1:(t.savePermissionGrants({revision:a.revision+1,value:g}),!0)}},track(d){return f(d,[],js(d.expiresAt,n))},trackAndWait(d,u=n){return i(d,u)},resolve(d,u){s(d,u)},isGranted(d,u){return Bs(t,d,u)!==void 0},rejectForRun(d,u){c(a=>a.runId===d,{type:"reject",reason:u})},rejectAll(d){c(()=>!0,{type:"reject",reason:d})}};function f(d,u,a=n){let g={...d,id:`perm_${Ie().replace(/-/g,"").slice(0,12)}`,createdAt:new Date().toISOString()},l=a>0?setTimeout(()=>{let y=r.get(g.id);if(!y)return;r.delete(g.id);let v={type:"reject",reason:"permission request timed out"};for(let p of y.waiters)p(v);e.emit("permission.resolved",{requestId:g.id,decision:v},{sessionId:g.sessionId,runId:g.runId,...g.turnId!==void 0?{turnId:g.turnId}:{}})},a):void 0;return l?.unref?.(),r.set(g.id,{request:g,waiters:u,...l!==void 0?{timer:l}:{}}),e.emit("permission.requested",g,{sessionId:g.sessionId,runId:g.runId,...g.turnId!==void 0?{turnId:g.turnId}:{}}),g}}o(Ll,"createRuntimePermissionRegistry");function jl(e){let{bus:n,original:t,permissions:r,userInputs:i,enableSharedInteractions:s,record:c}=e,m=o(u=>({sessionId:u?.sessionId??c.sessionId,runId:c.runId,turnId:u?.turnId??c.turnId}),"scopeFromMeta"),f=o((u,a,g)=>{n.emit(u,Ne(a),m(g))},"emit"),d=o(async(u,a,g,l,y)=>{let v=c.phase;if(c.phase==="running"&&(c.phase="waiting_user_input"),s){let h=i.trackAndWait({sessionId:g?.sessionId??c.sessionId,runId:c.runId,...g?.turnId??c.turnId?{turnId:g?.turnId??c.turnId}:{},kind:u,options:a});try{let k=l===void 0?await h.response:await Promise.race([h.response,l().then(P=>({status:P===void 0?"dismissed":"answered",...P!==void 0?{answer:P}:{}})).then(P=>(i.resolve(h.request.id,P),P))]);return k.status==="answered"?k.answer:y}finally{c.phase==="waiting_user_input"&&(c.phase=v)}}let p=`input_${Ie().replace(/-/g,"").slice(0,12)}`;f("user_input.requested",{requestId:p,kind:u,options:a},g);try{if(l===void 0)return y;let h=await l();return f("user_input.resolved",{requestId:p,kind:u,status:h===void 0?"dismissed":"answered"},g),h}catch(h){throw f("user_input.resolved",{requestId:p,kind:u,status:"failed",error:ce(h).message},g),h}finally{c.phase==="waiting_user_input"&&(c.phase=v)}},"runWithUserInputPhase");return{...t,onTextDelta(u,a){f("assistant.delta",{text:u,meta:a},a),t?.onTextDelta?.(u,a)},onThinkingDelta(u,a){f("thinking.delta",{text:u,meta:a},a),t?.onThinkingDelta?.(u,a)},onThinkingEnd(u,a){f("thinking.finished",{thinking:u,meta:a},a),t?.onThinkingEnd?.(u,a)},onToolUseStart(u,a){f("tool.started",{tool:u,meta:a},a),t?.onToolUseStart?.(u,a)},onToolProgress(u,a){f("tool.progress",{update:u,meta:a},a),t?.onToolProgress?.(u,a)},onToolInputDelta(u,a,g){f("tool.progress",{toolName:u,partialJson:a,meta:g},g),t?.onToolInputDelta?.(u,a,g)},onToolResult(u,a){f("tool.finished",{result:u,meta:a},a),t?.onToolResult?.(u,a)},onStreamEnd(u){f("run.progress",{kind:"stream_end",meta:u},u),t?.onStreamEnd?.(u)},onChildActivityEnd(u){f("child_activity.finished",{meta:u},u),t?.onChildActivityEnd?.(u)},onSessionStart(u){c.provider=u.provider,n.emit("session.loaded",Ne(u),{sessionId:u.sessionId,runId:c.runId,turnId:u.turnId??c.turnId}),t?.onSessionStart?.(u)},onTurnStarted(u){c.turnId=u.turnId,n.emit("turn.started",Ne(u),{sessionId:u.sessionId,runId:c.runId,turnId:u.turnId}),t?.onTurnStarted?.(u)},onTurnCompleted(u){n.emit("turn.completed",Ne(u),{sessionId:u.sessionId,runId:c.runId,turnId:u.turnId}),t?.onTurnCompleted?.(u)},onTurnFailed(u){n.emit("turn.failed",Ne(u),{sessionId:u.sessionId,runId:c.runId,turnId:u.turnId}),t?.onTurnFailed?.(u)},onIterationStart(u,a,g){f("run.progress",{kind:"iteration_start",iter:u,maxIter:a,meta:g},g),t?.onIterationStart?.(u,a,g)},onIterationEnd(u){f("run.progress",{kind:"iteration_end",info:u},u),t?.onIterationEnd?.(u)},onCompactStart(u){f("context.compaction.started",{meta:u},u),t?.onCompactStart?.(u)},onCompact(u,a){f("context.compaction.finished",{estimatedTokens:u,meta:a},a),t?.onCompact?.(u,a)},onCompactStats(u){f("context.compaction.stats",u,u),t?.onCompactStats?.(u)},onCompactedMessages(u,a,g){f("context.compaction.messages",{messageCount:u.length,update:a,meta:g},g),t?.onCompactedMessages?.(u,a,g)},onCompactEnd(u){f("context.compaction.ended",{meta:u},u),t?.onCompactEnd?.(u)},onMidTurnUserMessages(u,a){f("run.progress",{kind:"mid_turn_user_messages",contents:u,meta:a},a),t?.onMidTurnUserMessages?.(u,a)},onRetry(u,a,g,l){f("provider.retry",{reason:u,attempt:a,maxAttempts:g,meta:l},l),t?.onRetry?.(u,a,g,l)},onProviderRateLimit(u,a,g,l){f("provider.retry",{reason:"rate_limit",attempt:u,maxAttempts:a,delayMs:g,meta:l},l),t?.onProviderRateLimit?.(u,a,g,l)},onRetryAfter(u,a){f("provider.retry",{retryAfter:u,meta:a},a),t?.onRetryAfter?.(u,a)},onReasoningEffortRejected(u){f("provider.recovery",{kind:"reasoning_effort_rejected",event:u},u),t?.onReasoningEffortRejected?.(u)},onRepoIntelligenceTrace(u){f("repo_intelligence.trace",u,u),t?.onRepoIntelligenceTrace?.(u)},onContextBudgetSnapshot(u){f("context.budget.snapshot",u,u),t?.onContextBudgetSnapshot?.(u)},onToolExposurePlanned(u){f("tool.exposure.planned",u,u),t?.onToolExposurePlanned?.(u)},onContextCompactionSkipped(u){f("context.compaction.skipped",u,u),t?.onContextCompactionSkipped?.(u)},onSidecarMessage(u){f("sidecar.message",u,u),t?.onSidecarMessage?.(u)},onTodoUpdate(u,a){f("todo.updated",{items:u,meta:a},a),t?.onTodoUpdate?.(u,a)},onTodoDriftWarning(u){f("todo.warning",u,u),t?.onTodoDriftWarning?.(u)},onProviderRecovery(u,a){f("provider.recovery",{event:u,meta:a},a),t?.onProviderRecovery?.(u,a)},onEffectiveConfig(u){f("config.effective",u,u),t?.onEffectiveConfig?.(u)},onWorkflowProcessEvent(u){let a=km(u);n.emit(a,Ne(u),{sessionId:u.snapshot.hostMetadata?.sessionId??c.sessionId,runId:c.runId,turnId:c.turnId}),t?.onWorkflowProcessEvent?.(u)},onComplete(u){f("run.progress",{kind:"complete",meta:u},u),t?.onComplete?.(u)},onError(u,a){f("runtime.warning",{source:"coding",severity:"error",message:u.message},a),t?.onError?.(u,a)},onManagedTaskStatus(u){f("run.progress",{kind:"managed_task_status",status:u},u),t?.onManagedTaskStatus?.(u)},beforeToolExecute:o(async(u,a,g)=>{if(r.isGranted(g?.sessionId??c.sessionId,u))return!0;let l=t?.beforeToolExecute===void 0?xm(c,u,a):void 0;if(l!==void 0)return l;let y=c.phase;c.phase==="running"&&(c.phase="waiting_permission");let v=r.trackAndWait({sessionId:g?.sessionId??c.sessionId,runId:c.runId,...g?.turnId??c.turnId?{turnId:g?.turnId??c.turnId}:{},...g?.toolId?{toolCallId:g.toolId}:{},toolName:u,inputPreview:Tm(a)});try{if(!t?.beforeToolExecute){let P=await v.response;return Us(P)}let p=Promise.resolve(t.beforeToolExecute(u,a,g)).then(P=>({source:"hook",decision:P})),h=v.response.then(P=>({source:"runtime",decision:Us(P)})),k=await Promise.race([p,h]);return k.source==="hook"&&r.resolve(v.request.id,Dm(k.decision)),k.decision}catch(p){throw r.resolve(v.request.id,{type:"reject",reason:ce(p).message}),p}finally{c.phase==="waiting_permission"&&(c.phase=y==="queued"?"running":y)}},"beforeToolExecute"),...t?.askUser||s?{askUser:o((u,a)=>d("askUser",u,a,t?.askUser?()=>t.askUser(u,a):void 0,""),"askUser")}:{},...t?.askUserMulti||s?{askUserMulti:o((u,a)=>d("askUserMulti",u,a,t?.askUserMulti?()=>t.askUserMulti(u,a):void 0,void 0),"askUserMulti")}:{},...t?.askUserInput||s?{askUserInput:o((u,a)=>d("askUserInput",u,a,t?.askUserInput?()=>t.askUserInput(u,a):void 0,void 0),"askUserInput")}:{}}}o(jl,"wrapKodaXEvents");function Nl(e,n,t){let r={...t!==void 0?{canonicalRepoRoot:t}:{},...n!==void 0?{workspaceRoot:n,executionCwd:n}:{},...n!==void 0?{workspaceKind:"managed"}:{},...e.surface!==void 0?{surface:e.surface}:{},...e.profileId!==void 0?{profileId:e.profileId}:{}};return Object.keys(r).length>0?r:void 0}o(Nl,"buildSessionRuntimeInfo");function Ys(e){return{id:e.id,...e.cursor!==void 0?{cursor:e.cursor}:{},title:e.title,msgCount:e.msgCount,...e.runtimeInfo?.gitRoot?{gitRoot:e.runtimeInfo.gitRoot}:{},...e.runtimeInfo?.workspaceRoot?{workspaceRoot:e.runtimeInfo.workspaceRoot}:{},...e.runtimeInfo?.surface?{surface:e.runtimeInfo.surface}:{},...e.runtimeInfo?.profileId?{profileId:e.runtimeInfo.profileId}:{},...e.createdAt!==void 0?{createdAt:e.createdAt}:{},...e.tag!==void 0?{tag:e.tag}:{},...e.projectKey!==void 0?{projectKey:e.projectKey}:{},...e.archived===!0?{archived:!0}:{}}}o(Ys,"toRuntimeSessionSummary");function Fl(e,n){let t=e.input===void 0?[]:Array.isArray(e.input)?[...e.input]:[e.input],r=t.filter(s=>s.type==="text");if(e.prompt!==void 0&&r.length>0)throw new Error("runtime.runs.start accepts either prompt or text input, not both");if(r.length>1)throw new Error("runtime.runs.start accepts at most one text input item");let i=e.prompt??r[0]?.text;if(i===void 0)throw new Error("runtime.runs.start requires prompt or text input");return{prompt:i,inputArtifacts:t.flatMap(s=>Hl(s,n))}}o(Fl,"normalizeRuntimeRunInput");function Hl(e,n){if(e.type==="text")return[];if(e.type==="artifact_ref")return $l(n.resolve(e.artifactId),e.description);if(e.type==="image")return[{kind:"image",path:e.path,...e.mediaType!==void 0?{mediaType:e.mediaType}:{},...e.source!==void 0?{source:e.source}:{},...e.description!==void 0?{description:e.description}:{}}];if(e.type==="file")return[{kind:"file",path:e.path,...e.mediaType!==void 0?{mediaType:e.mediaType}:{},...e.mimeType!==void 0?{mimeType:e.mimeType}:{},...e.name!==void 0?{name:e.name}:{},...e.source!==void 0?{source:e.source}:{},...e.description!==void 0?{description:e.description}:{}}];if(e.type==="video")return[{kind:"video",path:e.path,mediaType:e.mediaType,...e.name!==void 0?{name:e.name}:{},...e.source!==void 0?{source:e.source}:{},...e.description!==void 0?{description:e.description}:{}}];let t=e;throw new Error(`Unsupported runtime input type: ${String(t.type)}`)}o(Hl,"runtimeInputToArtifacts");function $l(e,n){let t=n??e.description;if(e.kind==="image")return[{kind:"image",path:e.path,...e.mediaType!==void 0?{mediaType:e.mediaType}:{},...e.source!==void 0?{source:e.source}:{},...t!==void 0?{description:t}:{}}];if(e.kind==="file")return[{kind:"file",path:e.path,...e.mediaType!==void 0?{mediaType:e.mediaType}:{},...e.mimeType!==void 0?{mimeType:e.mimeType}:{},...e.name!==void 0?{name:e.name}:{},...e.source!==void 0?{source:e.source}:{},...t!==void 0?{description:t}:{}}];if(e.kind==="video")return[{kind:"video",path:e.path,mediaType:e.mediaType??"video/mp4",...e.name!==void 0?{name:e.name}:{},...e.source!==void 0?{source:e.source}:{},...t!==void 0?{description:t}:{}}];throw new Error(`Unsupported runtime artifact kind: ${String(e.kind)}`)}o($l,"runtimeArtifactToInputArtifacts");function ql(e){return typeof e=="string"&&Vc.has(e)}o(ql,"isRuntimeArtifactKind");function Kl(e,n,t){let r={...n.executionCwd!==void 0?{executionCwd:n.executionCwd}:{}},i=e.context,s=[...i?.inputArtifacts??[],...t],c={...r,...i??{},...s.length>0?{inputArtifacts:s}:{}},m=e.provider??n.provider,f=e.model??n.model,d=e.effort??n.effort,u=e.thinking??n.thinking,a=e.reasoningMode??n.reasoningMode,g=e.agentMode??n.agentMode;return{...e,...m!==void 0?{provider:m}:{},...f!==void 0?{model:f}:{},...d!==void 0?{effort:d}:{},...u!==void 0?{thinking:u}:{},...a!==void 0?{reasoningMode:a}:{},...g!==void 0?{agentMode:g}:{},...Object.keys(c).length>0?{context:c}:{}}}o(Kl,"buildEffectiveRuntimeOptions");async function Fs(e,n){let t=await e.loadSession(n);if(!t)throw new Error(`Session not found: ${n}`);return t}o(Fs,"loadRequiredSession");function Xl(e,n,t){let r=o((s,c)=>t?Bl(s,c)?!1:s===void 0||qc.has(s.toLowerCase()):!0,"admitted"),i=o(s=>{throw Object.assign(new Error(`Session is not admitted by shared Runtime profile ${e}: ${s}`),{code:"session_not_admitted"})},"reject");return{assertCreate(s){r(s.surface,s.profileId)||i(s.sessionId??"<new>")},assertFilter(s){s?.surface!==void 0&&!r(s.surface,void 0)&&i("<list>")},admitsData(s){return r(s.runtimeInfo?.surface,s.runtimeInfo?.profileId)},admitsSummary(s){return r(s.runtimeInfo?.surface,s.runtimeInfo?.profileId)},async admitsSession(s){if(!t)return!0;let c=await n.loadSession(s);return c!==null&&r(c.runtimeInfo?.surface,c.runtimeInfo?.profileId)},async assertRunAccess(s){if(!t)return;let c=await Fs(n,s);r(c.runtimeInfo?.surface,c.runtimeInfo?.profileId)||i(s)},async loadRequired(s){let c=await Fs(n,s);return r(c.runtimeInfo?.surface,c.runtimeInfo?.profileId)||i(s),c}}}o(Xl,"createRuntimeSessionAdmission");async function wr(e,n){let t=new Map,r=[];for(let i of e){let s=t.get(i.sessionId);s===void 0&&(s=await n.admitsSession(i.sessionId),t.set(i.sessionId,s)),s&&r.push(i)}return r}o(wr,"filterAdmittedRunStatuses");function Bl(e,n){let t=o(r=>r?.toLowerCase().split(/[^a-z0-9]+/).includes("partner")===!0,"hasPartnerToken");return t(e)||t(n)}o(Bl,"isPartnerSessionIdentity");function Ul(e){return`sha256:${Hc("sha256").update(JSON.stringify(e)).digest("hex")}`}o(Ul,"createRuntimeTranscriptRevision");function Wl(e){return e.length<=Ds?e:`${e.slice(0,Ds-1)}\u2026`}o(Wl,"previewQueuedInput");function Zs(e,n){if(n.executionCwd===void 0)return;let t=e.runtimeInfo?.workspaceRoot??e.gitRoot;t&&Jl(n.executionCwd,t,"executionCwd")}o(Zs,"assertSessionSettingsAllowed");function Jl(e,n,t){let r=Hs(j.resolve(e)),i=Hs(j.resolve(n)),s=j.relative(i,r);if(s!==""&&(s.startsWith("..")||j.isAbsolute(s)))throw new Error(`${t} must stay within the session workspace root`)}o(Jl,"assertPathWithinRoot");function Hs(e){return process.platform==="win32"?e.toLowerCase():e}o(Hs,"normalizePathForContainment");function zl(e,n){let t={...e};return ut(t,"provider",n.provider),ut(t,"model",n.model),ut(t,"permissionMode",n.permissionMode),ut(t,"executionCwd",n.executionCwd,!0),_n(t,"effort",n.effort),_n(t,"thinking",n.thinking),_n(t,"reasoningMode",n.reasoningMode),_n(t,"agentMode",n.agentMode),_n(t,"autoModeEngine",n.autoModeEngine),t}o(zl,"applySessionSettingsPatch");function ut(e,n,t,r=!1){if(t!==void 0){if(t===null){ea(e,n);return}if(r&&!j.isAbsolute(t))throw new Error(`${String(n)} must be an absolute path`);ue(e,n,t)}}o(ut,"applyNullableStringPatch");function _n(e,n,t){if(t!==void 0){if(t===null){ea(e,n);return}ue(e,n,t)}}o(_n,"applyNullablePatch");function ue(e,n,t){e[n]=t}o(ue,"setMutableSetting");function ea(e,n){delete e[n]}o(ea,"deleteMutableSetting");function $s(e){if(!U(e))return{};let n={};return ze(n,"provider",e.provider),ze(n,"model",e.model),ze(n,"permissionMode",e.permissionMode),ze(n,"executionCwd",e.executionCwd),ze(n,"effort",e.effort),typeof e.thinking=="boolean"&&ue(n,"thinking",e.thinking),ze(n,"reasoningMode",e.reasoningMode),ze(n,"agentMode",e.agentMode),(e.autoModeEngine==="llm"||e.autoModeEngine==="rules")&&ue(n,"autoModeEngine",e.autoModeEngine),n}o($s,"parseRuntimeSessionSettings");function Vl(e){if(!U(e)||!U(e.scope))throw new Error("invalid permission grant");let n=e.scope.toolName,t=e.scope.sessionId;if(typeof e.id!="string"||typeof e.createdAt!="string"||n!==void 0&&typeof n!="string"||t!==void 0&&typeof t!="string")throw new Error("invalid permission grant");return{id:e.id,createdAt:e.createdAt,scope:{...n!==void 0?{toolName:n}:{},...t!==void 0?{sessionId:t}:{}}}}o(Vl,"parseRuntimePermissionGrant");function ze(e,n,t){typeof t=="string"&&t.length>0&&ue(e,n,t)}o(ze,"setStringIfPresent");function U(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}o(U,"isRecord");function Gl(e,n){if(!U(e))throw new Error(`${n} requires a plain object`)}o(Gl,"assertPlainObject");function Ql(e){let n=new Set($c);for(let t of Object.keys(e))if(!n.has(t))throw new Error(`runtime.config.patch does not support config key: ${t}`);return e}o(Ql,"sanitizeRuntimeConfigPatch");function Yl(e){if(e.homeDir!==void 0)return j.join(j.resolve(e.homeDir),".kodax","config.json")}o(Yl,"resolveRuntimeConfigFile");function ke(e){if(e===void 0)return Fr();if(!C.existsSync(e))return{};try{let n=JSON.parse(C.readFileSync(e,"utf8"));return U(n)?n:{}}catch{return{}}}o(ke,"readRuntimeConfig");function Zl(e,n){if(e===void 0){$r(n);return}let r={...ke(e),...n};for(let i of Object.keys(n))n[i]===void 0&&delete r[i];jn(e,r)}o(Zl,"patchRuntimeConfig");function jn(e,n){C.mkdirSync(j.dirname(e),{recursive:!0}),C.writeFileSync(e,`${JSON.stringify(n,null,2)}
|
|
70
|
+
`,"utf8")}o(jn,"writeRuntimeConfig");function em(e){return e===void 0?Wr():rm(gt(ke(e)))}o(em,"listRuntimeCustomProviders");function nm(e,n){if(e===void 0)return Jr(n);br(n);let t=ke(e),r=gt(t),i=dm(r,n,s=>s.name===n.name);return jn(e,{...t,customProviders:i}),Nn(i),structuredClone(n)}o(nm,"upsertRuntimeCustomProvider");function tm(e,n){if(e===void 0)return zr(n);if(typeof n!="string"||n.length===0)return!1;let t=ke(e),r=gt(t),i=r.filter(s=>s.name!==n);return i.length===r.length?!1:(jn(e,{...t,customProviders:i}),Nn(i),!0)}o(tm,"removeRuntimeCustomProvider");function na(e){e!==void 0&&Nn(gt(ke(e)))}o(na,"registerRuntimeConfiguredCustomProviders");function gt(e){return Array.isArray(e.customProviders)?structuredClone(e.customProviders):[]}o(gt,"extractRuntimeCustomProviders");function rm(e){return structuredClone(e)}o(rm,"cloneCustomProviders");function Rr(e){return e===void 0?Vr():am(Rt(ke(e)))}o(Rr,"listRuntimeMcpServers");function om(e,n){if(e===void 0)return Gr(n);let t=Rt(ke(e))[n];return t===void 0?void 0:structuredClone(t)}o(om,"getRuntimeMcpServer");function im(e,n,t){if(e===void 0)return Qr(n,t);Et(n,t);let r=ke(e),i={...Rt(r),[n]:structuredClone(t)};return jn(e,{...r,mcpServers:i}),structuredClone(t)}o(im,"upsertRuntimeMcpServer");function sm(e,n){if(e===void 0)return Yr(n);let t=ke(e),r=Rt(t);if(!(n in r))return!1;let i={...r};return delete i[n],jn(e,{...t,mcpServers:i}),!0}o(sm,"removeRuntimeMcpServer");function Rt(e){return U(e.mcpServers)?structuredClone(e.mcpServers):{}}o(Rt,"extractRuntimeMcpServers");function am(e){return structuredClone(e)}o(am,"cloneMcpServers");function dm(e,n,t){let r=e.findIndex(t);return r<0?[...e,structuredClone(n)]:e.map((i,s)=>s===r?structuredClone(n):structuredClone(i))}o(dm,"upsertConfigEntry");function um(e,n){let t=Array.isArray(e)?e:[];if(n?.provider!==void 0){let r=t.find(i=>U(i)&&i.name===n.provider);return U(r)?{provider:n.provider,models:Array.isArray(r.models)?r.models:[]}:{provider:n.provider,models:[]}}return t.flatMap(r=>!U(r)||typeof r.name!="string"?[]:[{provider:r.name,models:Array.isArray(r.models)?r.models:[]}])}o(um,"listRuntimeModels");function qs(e){let n=cm(e).map(lm),t=Ve()?.listCommands().filter(r=>r.metadata?.userInvocable!==!1).map(mm)??[];return[...n,...t].sort((r,i)=>r.name.localeCompare(i.name))}o(qs,"listRuntimeCommands");function cm(e){let n=eo;return typeof n.listRegisteredCommands=="function"?n.listRegisteredCommands(e):Ur().getAll()}o(cm,"listReplCommands");function lm(e){return{name:e.name,...e.aliases!==void 0?{aliases:e.aliases}:{},description:e.description,source:e.source,...e.usage!==void 0?{usage:e.usage}:{},...e.argumentHint!==void 0?{argumentHint:e.argumentHint}:{},...e.location!==void 0?{location:e.location}:{},...e.path!==void 0?{path:e.path}:{},...e.userInvocable!==void 0?{userInvocable:e.userInvocable}:{},...e.disableModelInvocation!==void 0?{disableModelInvocation:e.disableModelInvocation}:{},...e.allowedTools!==void 0?{allowedTools:e.allowedTools}:{},...e.context!==void 0?{context:e.context}:{},...e.agent!==void 0?{agent:e.agent}:{},...e.model!==void 0?{model:e.model}:{}}}o(lm,"replCommandToRuntimeCommandInfo");function mm(e){return{name:e.name,...e.aliases!==void 0?{aliases:e.aliases}:{},description:e.description,source:"extension",...e.usage!==void 0?{usage:e.usage}:{}}}o(mm,"extensionCommandToRuntimeCommandInfo");function fn(e){return Array.isArray(e)?e.map(n=>fn(n)):U(e)?Object.fromEntries(Object.entries(e).map(([n,t])=>[n,pm(n)?"[redacted]":fn(t)])):e}o(fn,"redactRuntimeConfig");function pm(e){let n=e.toLowerCase();return n.includes("apikey")||n.includes("api_key")||n==="key"||n.endsWith("key")||n.includes("token")||n.includes("secret")||n.includes("password")}o(pm,"isSensitiveConfigKey");function fm(e){return{name:e.name,description:e.description,userInvocable:e.userInvocable,...e.argumentHint!==void 0?{argumentHint:e.argumentHint}:{},path:e.path,source:e.source,disableModelInvocation:e.disableModelInvocation}}o(fm,"toRuntimeSkillSummary");function gm(e){return{name:e.name,description:e.description,userInvocable:e.userInvocable??!0,...e.argumentHint!==void 0?{argumentHint:e.argumentHint}:{},path:e.path,source:e.source,disableModelInvocation:e.disableModelInvocation??!1,content:e.content,skillFilePath:e.skillFilePath,...e.scripts!==void 0?{scripts:e.scripts.map(Mn)}:{},...e.references!==void 0?{references:e.references.map(Mn)}:{},...e.assets!==void 0?{assets:e.assets.map(Mn)}:{},...e.templates!==void 0?{templates:e.templates.map(Mn)}:{},...e.resources!==void 0?{resources:e.resources.map(Mn)}:{}}}o(gm,"toRuntimeSkillDescription");function Mn(e){return{name:e.name,path:e.path,relativePath:e.relativePath}}o(Mn,"toRuntimeSkillFileSummary");function Rn(e){if(!U(e))throw new Error("Invalid runtime daemon response: expected object");return e}o(Rn,"requireRuntimeRecord");function ta(e){let n=Rn(e);if(typeof n.runtimeId!="string"||typeof n.mode!="string"||typeof n.profile!="string"||typeof n.startedAt!="string"||typeof n.version!="string")throw new Error("Invalid runtime daemon response: missing identity fields");return{runtimeId:n.runtimeId,mode:n.mode==="daemon"?"daemon":"embedded",profile:n.profile,startedAt:n.startedAt,version:n.version,...n.isolation==="inline"||n.isolation==="worker"||n.isolation==="process"?{isolation:n.isolation}:{},...typeof n.workerThreadId=="number"?{workerThreadId:n.workerThreadId}:{}}}o(ta,"parseRuntimeIdentity");function Rm(e){let n={};return e.provider!==void 0&&ue(n,"provider",e.provider),e.model!==void 0&&ue(n,"model",e.model),e.effort!==void 0&&ue(n,"effort",e.effort),e.thinking!==void 0&&ue(n,"thinking",e.thinking),e.reasoningMode!==void 0&&ue(n,"reasoningMode",e.reasoningMode),e.permissionMode!==void 0&&ue(n,"permissionMode",e.permissionMode),e.executionCwd!==void 0&&ue(n,"executionCwd",e.executionCwd),e.agentMode!==void 0&&ue(n,"agentMode",e.agentMode),e.autoModeEngine!==void 0&&ue(n,"autoModeEngine",e.autoModeEngine),n}o(Rm,"serializeSessionSettings");function ym(){return`run_${Date.now().toString(36)}_${Ie().replace(/-/g,"").slice(0,8)}`}o(ym,"createRunId");function ge(e){return{runId:e.runId,sessionId:e.sessionId,...e.turnId!==void 0?{turnId:e.turnId}:{},phase:e.phase,startedAt:e.startedAt,acceptedAt:e.startedAt,sessionOrder:e.sessionOrder,...e.queuedAt!==void 0?{queuedAt:e.queuedAt}:{},...e.runningAt!==void 0?{runningAt:e.runningAt}:{},...e.runningAt!==void 0?{executionStartedAt:e.runningAt}:{},...e.endedAt!==void 0?{endedAt:e.endedAt}:{},provider:e.provider,mode:e.mode,...e.origin!==void 0?{origin:e.origin}:{},...e.model!==void 0?{model:e.model}:{},...e.reasoning!==void 0?{reasoning:e.reasoning}:{},...e.error!==void 0?{error:e.error}:{},...e.terminal!==void 0?{terminal:e.terminal}:{},...e.continuation!==void 0?{continuation:{...e.continuation,state:wm(e.phase)}}:{}}}o(ge,"statusFromRecord");function wm(e){return e==="queued"?"queued":yt(e)?"terminal":"delivered"}o(wm,"runtimeContinuationState");function ra(e){return{runId:e.runId,sessionId:e.sessionId,phase:e.phase,...e.error!==void 0?{error:new Error(e.error)}:{}}}o(ra,"resultFromStatus");function hm(e){return e.length<=pt?e:[...e].sort(Sr).slice(-pt)}o(hm,"recentRunStatuses");function vm(e){if(e.size<=pt)return;let n=[...e.values()].filter(t=>yt(t.phase)).sort((t,r)=>Sr(ge(t),ge(r)));for(let t of n){if(e.size<=pt)return;e.delete(t.runId)}}o(vm,"pruneTerminalRuns");function Sr(e,n){let t=e.endedAt??e.startedAt,r=n.endedAt??n.startedAt,i=t.localeCompare(r);return i!==0?i:e.runId.localeCompare(n.runId)}o(Sr,"compareRunStatusRecency");function Sm(e,n){return n?!(n.sessionId!==void 0&&e.sessionId!==n.sessionId||n.phase!==void 0&&!(Array.isArray(n.phase)?n.phase:[n.phase]).includes(e.phase)):!0}o(Sm,"runMatchesFilter");function Ln(e,n,t,r,i){if(t.terminalEmitted)return;t.phase=r,t.endedAt=new Date().toISOString(),t.terminalEmitted=!0;let s=r==="completed"?"completed":r==="cancelled"?"cancelled":r==="interrupted"?"interrupted":"failed";t.terminal={revision:1,kind:s,code:i?.code??bm(s),effectOutcome:i?.effectOutcome??(s==="interrupted"?"unknown":"known"),...i?.message!==void 0?{message:i.message}:{}};let c=r==="completed"?"run.completed":r==="cancelled"?"run.cancelled":r==="interrupted"?"run.interrupted":"run.failed";gn(e,n,t,ge(t)),e.emit(c,ge(t),{sessionId:t.sessionId,runId:t.runId,...t.turnId!==void 0?{turnId:t.turnId}:{}})}o(Ln,"markRunTerminal");function gn(e,n,t,r){try{n.saveRunStatus(r)}catch(i){let s=t?.turnId??r.turnId;e.emit("runtime.warning",{message:`Failed to save runtime run status for ${r.runId}: ${ce(i).message}`,runId:r.runId,phase:r.phase},{sessionId:r.sessionId,runId:r.runId,...s!==void 0?{turnId:s}:{}})}}o(gn,"saveRunStatusSafely");function yt(e){return e==="completed"||e==="failed"||e==="cancelled"||e==="interrupted"}o(yt,"isTerminalRunPhase");function km(e){return e.type==="workflow_started"?"workflow.started":e.type==="workflow_finished"?"workflow.finished":"workflow.updated"}o(km,"workflowEventType");function Im(e){return e==="completed"||e==="failed"||e==="cancelled"}o(Im,"isFinalWorkflowStatus");function bm(e){return e==="completed"?"completed":e==="failed"?"run_failed":e==="cancelled"?"cancelled":"interrupted"}o(bm,"defaultRuntimeTerminalCode");function Ks(e){let n=e instanceof Error?e.code:void 0;return n==="host_tool_unknown"?{phase:"interrupted",terminal:{code:"host_outcome_unknown",effectOutcome:"unknown",message:"A run-bound host tool may have produced a side effect; it was not replayed."}}:n==="host_tool_unavailable"?{phase:"failed",terminal:{code:"host_not_dispatched",effectOutcome:"none",message:"The run-bound host tool was unavailable before dispatch."}}:n==="credential_unavailable"?{phase:"failed",terminal:{code:"credential_unavailable",effectOutcome:"none",message:"The provider credential was unavailable before the request could continue."}}:{phase:"failed",terminal:{code:"run_failed",effectOutcome:"known"}}}o(Ks,"classifyRuntimeRunFailure");function Xs(e,n){if(!n.hadProviderCredential)return ce(e);let t=new Error("Provider run failed while using a run-scoped credential.");return t.name="KodaXProviderRunError",t}o(Xs,"normalizeRuntimeRunError");function Pm(e,n,t){if(t.toolName!==void 0&&t.toolName!==n.toolName||t.sessionId!==void 0&&t.sessionId!==n.sessionId)throw oa("Persistent permission scope exceeds the pending request.");let r=e.loadPermissionGrants();if(r.value.some(s=>s.scope.toolName===t.toolName&&s.scope.sessionId===t.sessionId))return;let i={id:`grant_${Ie().replace(/-/g,"").slice(0,12)}`,scope:t,createdAt:new Date().toISOString()};e.savePermissionGrants({revision:r.revision+1,value:[...r.value,i]})}o(Pm,"saveRuntimePermissionGrant");function Bs(e,n,t){return e.loadPermissionGrants().value.find(r=>(r.scope.sessionId===void 0||r.scope.sessionId===n)&&(r.scope.toolName===void 0||r.scope.toolName===t))}o(Bs,"findRuntimePermissionGrant");function Em(e,n){return n?!(n.sessionId!==void 0&&e.sessionId!==n.sessionId||n.runId!==void 0&&e.runId!==n.runId||n.toolName!==void 0&&e.toolName!==n.toolName):!0}o(Em,"permissionMatchesFilter");function Dm(e){return e===!0?{type:"allow_once"}:{type:"reject",reason:e===!1?"tool execution rejected":e}}o(Dm,"decisionToPermissionDecision");function xm(e,n,t){if(zc.has(n))return!0;if(e.permissionBroker==="client")return;let r=Nr(e.permissionMode);if(r===void 0)return;let i=e.start?.options.context?.gitRoot??e.start?.options.context?.executionCwd;if(r==="plan"){let s=Br(n,t,i);return s===null?!0:`${s} Finish the plan before switching to a writable permission mode.`}if(n==="bash"){let s=typeof t.command=="string"?t.command:"";if(qr(s))return!0;if(i&&Xr(s,i))return}if(i&&Lr.has(n)){let s=typeof t.path=="string"?t.path:void 0;if(s&&Kr(j.resolve(i,s),i))return}return jr(r).has(n)?void 0:!0}o(xm,"resolveRuntimePermissionPolicy");function Us(e){return e?e.type==="allow_once"||e.type==="allow_always"?!0:e.reason??!1:!1}o(Us,"decisionToToolDecision");function Tm(e){let n=JSON.stringify(e);return n.length<=500?n:`${n.slice(0,497)}...`}o(Tm,"previewInput");function ce(e){return e instanceof Error?e:new Error(String(e))}o(ce,"normalizeError");function kr(e,n){return Object.assign(new Error(e),{code:"conflict",currentRevision:n})}o(kr,"createRuntimeConflictError");function Am(e){return Object.assign(new Error(e),{code:"resync_required"})}o(Am,"createRuntimeResyncError");function oa(e){return Object.assign(new Error(e),{code:"invalid_input"})}o(oa,"createRuntimeInvalidInputError");function Cm(e){return Object.assign(new Error(e),{code:"credential_unavailable"})}o(Cm,"createRuntimeCredentialUnavailableError");function Om(){return{async register(){throw new Error("Credential broker registration requires a shared daemon client.")},async resume(){throw new Error("Credential broker resume requires a shared daemon client.")},async revoke(){return!1}}}o(Om,"createUnsupportedCredentialService");function _m(){return{async register(){throw new Error("Host tool registration requires a shared daemon client.")},async resume(){throw new Error("Host tool resume requires a shared daemon client.")},async getInvocation(){},async revoke(){return!1}}}o(_m,"createUnsupportedHostToolService");function yr(e,n){if(!n(e))return;let t=new Error(`Session has an active run and cannot be mutated: ${e}`);throw Object.defineProperty(t,"code",{configurable:!0,enumerable:!0,value:"conflict"}),t}o(yr,"assertSessionMutationAllowed");function Mm(e,n){if(!("ok"in n))throw new Error(`Session is running and cannot be deleted: ${e}`)}o(Mm,"assertDeleteSucceeded");function Lm(e){return structuredClone(e)}o(Lm,"cloneMessage");export{Ft as a,_e as b,Ht as c,Ye as d,qe as e,ot as f,xi as g,Ti as h,Wd as i,Jd as j,og as k,ig as l,sg as m,ag as n,dg as o,Gc as p,zs as q};
|