@kodax-ai/kodax 0.7.67 → 0.7.69
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 +209 -3
- package/README.md +61 -9
- package/README_CN.md +58 -9
- package/config-templates/config.example.jsonc +26 -0
- package/config-templates/integrations/a2a.example.jsonc +54 -0
- package/config-templates/integrations/extensions.example.jsonc +7 -0
- package/config-templates/integrations/mcp.example.jsonc +16 -0
- package/dist/chunks/agent-DQRXT6M7.js +2 -0
- package/dist/chunks/argument-completer-RSK6CCGP.js +2 -0
- package/dist/chunks/chunk-4WIODYOH.js +329 -0
- package/dist/chunks/chunk-AWMTNUDS.js +37 -0
- package/dist/chunks/chunk-F7C7J6IM.js +7 -0
- package/dist/chunks/chunk-I4TPQEJN.js +5 -0
- package/dist/chunks/chunk-M7TCFYTO.js +107 -0
- package/dist/chunks/chunk-NGHQIGVW.js +46 -0
- package/dist/chunks/chunk-NGJURAY5.js +306 -0
- package/dist/chunks/{chunk-KBBGDRER.js → chunk-PA76WUBL.js} +2 -2
- package/dist/chunks/chunk-PQ3XUSY2.js +357 -0
- package/dist/chunks/chunk-UJEMSPM5.js +78 -0
- package/dist/chunks/{chunk-DEICMTHO.js → chunk-URC6ZI6P.js} +1 -1
- package/dist/chunks/{chunk-EN3O2C43.js → chunk-VAZ25MDX.js} +122 -122
- package/dist/chunks/chunk-VYKFM3TB.js +751 -0
- package/dist/chunks/chunk-WW2O2DEP.js +2 -0
- package/dist/chunks/chunk-Y4WOTWUC.js +2 -0
- package/dist/chunks/chunk-Z4PPLJF2.js +60 -0
- package/dist/chunks/chunk-ZG4DMYBS.js +422 -0
- package/dist/chunks/compaction-config-ABLL6UH3.js +2 -0
- package/dist/chunks/{construction-bootstrap-GLEHQ2KB.js → construction-bootstrap-GH6RW6ST.js} +1 -1
- package/dist/chunks/dist-DRBKYVHF.js +2 -0
- package/dist/chunks/dist-RWL2RBO4.js +2 -0
- package/dist/chunks/host-7SAB4WEC.js +2 -0
- package/dist/chunks/run-manager-XMDKTONJ.js +2 -0
- package/dist/chunks/utils-QYE5Y73D.js +2 -0
- package/dist/index.d.ts +19 -19
- package/dist/index.js +6 -6
- package/dist/kodax_cli.js +1497 -1209
- package/dist/runtime-worker.js +1371 -1107
- package/dist/sdk-a2a.d.ts +397 -0
- package/dist/sdk-a2a.js +9 -0
- package/dist/sdk-agent.d.ts +172 -33
- package/dist/sdk-agent.js +1 -1
- package/dist/sdk-coding.d.ts +126 -51
- package/dist/sdk-coding.js +1 -1
- package/dist/sdk-experimental-memory.d.ts +618 -0
- package/dist/sdk-experimental-memory.js +2 -0
- package/dist/sdk-llm.d.ts +16 -9
- package/dist/sdk-llm.js +1 -1
- package/dist/sdk-mcp.d.ts +1 -1
- 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 +35 -101
- package/dist/sdk-repl.js +2 -2
- package/dist/sdk-runtime.d.ts +744 -21
- 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 +100 -12
- package/dist/types-chunks/{base.d-DalIRhbb.d.ts → base.d-CYjtB68X.d.ts} +1 -1
- package/dist/types-chunks/{bash-prefix-extractor.d-D57Gt6n8.d.ts → bash-prefix-extractor.d-BkIA8Wto.d.ts} +89 -18
- package/dist/types-chunks/{capability-learning.d-BQB0M70w.d.ts → capability-learning.d-WtsyRv3O.d.ts} +1 -1
- package/dist/types-chunks/{capsule.d-BZmqu_HL.d.ts → capsule.d-xJvfh4YR.d.ts} +5 -5
- package/dist/types-chunks/{commands.d-Cg26ud-Y.d.ts → commands.d-DkPfcQWG.d.ts} +4 -4
- package/dist/types-chunks/{cost-tracker.d-CBLk1fiD.d.ts → cost-tracker.d-BeaenODW.d.ts} +4 -1
- package/dist/types-chunks/{guardrail.d-Ds7JHxR1.d.ts → guardrail.d-6ZDbNbHO.d.ts} +1 -1
- package/dist/types-chunks/{guardrail.d-vSaBe64I.d.ts → guardrail.d-R7AiGfrI.d.ts} +4 -4
- package/dist/types-chunks/integration-config.d-ojG4swOP.d.ts +95 -0
- package/dist/types-chunks/{manager.d-Zum9cGHU.d.ts → manager.d-CoEuPRAo.d.ts} +4 -1
- package/dist/types-chunks/{public-api.d-CPBMPDiU.d.ts → public-api.d-7G4--RZE.d.ts} +6 -7
- package/dist/types-chunks/{resolver.d-CGkfRULj.d.ts → resolver.d-CIVoGc97.d.ts} +2 -2
- package/dist/types-chunks/{run-manager.d-lnwnfyNC.d.ts → run-manager.d-BaXtkryp.d.ts} +1 -1
- package/dist/types-chunks/{sdk-session-ByoMLoUS.d.ts → sdk-session-BQccrODn.d.ts} +6 -4
- package/dist/types-chunks/{types.d-DG9B4SMm.d.ts → types.d-BtC4yLYO.d.ts} +170 -13
- package/dist/types-chunks/{types.d-DYv3a1ka.d.ts → types.d-C9YHEAmA.d.ts} +38 -7
- package/dist/types-chunks/{types.d-DU9lLkmE.d.ts → types.d-CJR7t6iW.d.ts} +2 -2
- package/dist/types-chunks/{types.d-Bp4Lm1jv.d.ts → types.d-TTvpAGWf.d.ts} +11 -1
- package/dist/types-chunks/{utils.d-DMI-9GTR.d.ts → utils.d-BbB5jzi1.d.ts} +15 -7
- package/docs/SDK_EMBEDDER_GUIDE.md +732 -14
- package/package.json +14 -2
- package/dist/chunks/agent-E4V5SLX6.js +0 -2
- package/dist/chunks/argument-completer-N6RT5KYT.js +0 -2
- package/dist/chunks/chunk-AKMXJSGM.js +0 -56
- package/dist/chunks/chunk-CW32NQFO.js +0 -2
- package/dist/chunks/chunk-D6QVXQNI.js +0 -1
- package/dist/chunks/chunk-NVDK375I.js +0 -729
- package/dist/chunks/chunk-O7N22GJ3.js +0 -31
- package/dist/chunks/chunk-PZTG2C33.js +0 -7
- package/dist/chunks/chunk-QI6SQ2UQ.js +0 -306
- package/dist/chunks/chunk-QJJKMNZF.js +0 -2
- package/dist/chunks/chunk-RS2GAABJ.js +0 -328
- package/dist/chunks/chunk-W2XMNYLK.js +0 -15
- package/dist/chunks/chunk-WCSSXBHR.js +0 -419
- package/dist/chunks/chunk-YH5BTUQO.js +0 -343
- package/dist/chunks/chunk-YRBNXFHY.js +0 -2
- package/dist/chunks/compaction-config-56NO42ZI.js +0 -2
- package/dist/chunks/dist-4PXB7U22.js +0 -2
- package/dist/chunks/dist-4UIRSSFS.js +0 -2
- package/dist/chunks/host-DMREFNSO.js +0 -2
- package/dist/chunks/paste-C33GZQV5.js +0 -2
- package/dist/chunks/run-manager-P5XMSGZ7.js +0 -2
- package/dist/chunks/utils-JENPFKAE.js +0 -2
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
+
import{Bb as Cr,Cb as _r,Db as Or,Eb as Mr,Fb as Lr,Gb as jr,Hb as gt,Xb as Fr,Yb as Nr,zb as Ar}from"./chunk-NGJURAY5.js";import{j as wr,k as hr,m as Sr,n as Er,s as Pr,t as Dr,x as Tr,xa as xr}from"./chunk-VAZ25MDX.js";import{K as ft,M as kr,T as Ir,U as br,m as vr}from"./chunk-M7TCFYTO.js";import{e as Rr,t as yr}from"./chunk-ZG4DMYBS.js";import{nc as gr,od as pt,tb as ln,yc as Be}from"./chunk-PQ3XUSY2.js";import{a as ut,c as Me,wa as ur,ya as _n}from"./chunk-UJEMSPM5.js";import{Nd as pr,Rd as fr,ic as lt,qc as mt}from"./chunk-VYKFM3TB.js";import{D as lr,T as mr,V as ct,a as cr,b as ee}from"./chunk-AWMTNUDS.js";import{a as o}from"./chunk-ONUPGMER.js";import{createHash as rc,randomUUID as Re}from"node:crypto";import*as _ from"node:fs";import An from"node:os";import L from"node:path";import{createHash as Ms}from"node:crypto";import pe from"node:fs";import ke from"node:path";function Ue(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}o(Ue,"isRecord");function Ls(e){return Ue(e)?typeof e.agentId=="string"&&typeof e.displayName=="string"&&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"&&Ue(e.capabilities)&&Ue(e.effects):!1}o(Ls,"isRegistration");function js(e){return Ue(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"&&Ue(e.registration)&&typeof e.idempotencyKey=="string"&&typeof e.dispatchAttempt=="number"&&typeof e.createdAt=="string"&&typeof e.updatedAt=="string":!1}o(js,"isTask");function Fs(e){return Ue(e)?typeof e.taskId=="string"&&Number.isSafeInteger(e.seq)&&typeof e.timestamp=="string"&&typeof e.type=="string":!1}o(Fs,"isEvent");function $r(e){try{return JSON.parse(pe.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($r,"parseJson");function Ns(e,n){if(!pe.existsSync(e))return[];let t=$r(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(Ns,"readList");function qr(e,n){pe.mkdirSync(ke.dirname(e),{recursive:!0});let t=`${e}.${process.pid}.tmp`;pe.writeFileSync(t,`${JSON.stringify(n,null,2)}
|
|
3
|
+
`,{encoding:"utf8",mode:384}),pe.renameSync(t,e)}o(qr,"writeJsonAtomic");function Rt(e,n){let t=Ms("sha256").update(n).digest("hex");return ke.join(e,t)}o(Rt,"taskDirectory");function qs(e){if(!pe.existsSync(e))return[];let n=pe.readFileSync(e,"utf8").trim();return n?n.split(/\r?\n/).map((t,r)=>{let i;try{i=JSON.parse(t)}catch(s){let c=s instanceof Error?s.message:String(s);throw new Error(`Invalid Runtime agent event at ${e}:${r+1}: ${c}`)}if(!Fs(i))throw new Error(`Invalid Runtime agent event shape at ${e}:${r+1}`);return i}):[]}o(qs,"readEvents");function Hr(e){let n=ke.resolve(e),t=ke.join(n,"registrations.json"),r=ke.join(n,"tasks");return{async loadRegistrations(){return Ns(t,Ls)},async saveRegistrations(i){qr(t,i)},async loadTasks(){if(!pe.existsSync(r))return[];let i=[];for(let s of pe.readdirSync(r,{withFileTypes:!0})){if(!s.isDirectory())continue;let c=ke.join(r,s.name,"snapshot.json");if(!pe.existsSync(c))continue;let p=$r(c);if(!js(p))throw new Error(`Invalid Runtime agent task shape: ${c}`);i.push(p)}return i},async saveTask(i){qr(ke.join(Rt(r,i.taskId),"snapshot.json"),i)},async loadEvents(i){return qs(ke.join(Rt(r,i),"events.jsonl"))},async appendEvent(i){let s=ke.join(Rt(r,i.taskId),"events.jsonl");pe.mkdirSync(ke.dirname(s),{recursive:!0}),pe.appendFileSync(s,`${JSON.stringify(i)}
|
|
4
|
+
`,{encoding:"utf8",mode:384})}}}o(Hr,"createRuntimeAgentExecutorPlaneStore");import{createHash as Zr,randomUUID as On}from"node:crypto";import We from"node:fs";import{mkdir as eo,readFile as no}from"node:fs/promises";import z from"node:path";var to=["read","grep","glob"],ro=["write","edit","multi_edit","insert_after_anchor"],oo=["mcp_search","mcp_describe","mcp_call","mcp_read_resource","mcp_get_prompt"],$s=["list_dispatchable_agents","dispatch_child_task","task_output","task_stop","send_message"],Hs=new Set([...to,...ro]),Ks=new Set([".ssh",".aws",".azure",".gnupg",".kodax",".agents"]),Xs=new Set([".env",".npmrc",".pypirc","credentials","id_rsa","id_ed25519"]);function wt(e){return Array.isArray(e)?e.map(wt):e===null||typeof e!="object"?e:Object.fromEntries(Object.entries(e).sort(([n],[t])=>n.localeCompare(t)).map(([n,t])=>[n,wt(t)]))}o(wt,"canonicalValue");function Le(e){return Zr("sha256").update(JSON.stringify(wt(e))).digest("hex")}o(Le,"stableHash");function io(e){let n=Zr("sha256");for(let t of e)n.update(t);return n.digest("hex")}o(io,"hashParts");function Mn(e,n){let t=z.relative(z.resolve(e),z.resolve(n));return t===""||!t.startsWith("..")&&!z.isAbsolute(t)}o(Mn,"isInside");function ht(e){if(!We.existsSync(e))return 0;let n=0;for(let t of We.readdirSync(e,{withFileTypes:!0})){let r=z.join(e,t.name);t.isSymbolicLink()||(t.isDirectory()?n+=ht(r):t.isFile()&&(n+=We.statSync(r).size))}return n}o(ht,"directoryBytes");function Kr(e){if(e!==void 0){if(!Number.isSafeInteger(e)||e<=0)throw new Error("Runtime workspace byte limit must be positive.");return e}}o(Kr,"validateWorkspaceByteLimit");function yt(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(yt,"normalizedWorkspace");function St(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(St,"exactList");function Xr(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,St(r,`${n}.${t}`,!1)]}))}o(Xr,"exactMap");function Br(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:St(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=Xr(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:St(e.tools,"Runtime toolPolicy.tools"),mcp:Xr(e.mcp,"Runtime toolPolicy.mcp"),skillScripts:r,subagents:e.subagents}}o(Br,"validatedToolPolicy");function Bs(e){return e==="project"?"workspace":e}o(Bs,"skillSource");function Us(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(Us,"skillFiles");async function Ws(e){let n=[e.name,e.rawContent];for(let t of Us(e))n.push(t.relativePath,await no(t.path));return io(n)}o(Ws,"skillRevision");var vt=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 so(e){let n=e.workspace.mode==="fixed"?e.workspace.root:void 0,t=lr(n),r=t.userPaths.filter(d=>z.basename(z.dirname(d))===".agents"),i=new mr(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(),p=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 p.sort((u,a)=>u.name.localeCompare(a.name))){let u=await Ws(await i.loadFull(d.name));f.push({name:d.name,source:Bs(d.source),revision:u})}return{registry:new vt(i,p),refs:f,revision:Le(f)}}o(so,"resolveSkills");function Js(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(Js,"validateRemoteContract");function Ur(e){let n=new Set;e.policy.workspace!=="none"&&to.forEach(s=>n.add(s)),e.policy.workspace==="write"&&ro.forEach(s=>n.add(s)),e.hasSkills&&n.add("skill"),e.hasSkillScripts&&n.add("run_skill_script"),Object.keys(e.policy.mcp).length>0&&oo.forEach(s=>n.add(s)),e.policy.subagents==="inherit"&&$s.forEach(s=>n.add(s));let t=new Map(pt().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.`);Js(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(p=>!n.has(p));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(p=>[p,i.get(p)]))}}return{tools:[...n].sort(),contracts:r,registrations:i}}o(Ur,"resolveToolSurface");function Wr(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(Wr,"skillsPrompt");function Jr(e,n){let r=z.relative(n,e).split(z.sep).map(i=>i.toLowerCase());return r.some(i=>Ks.has(i))||r.some(i=>Xs.has(i)||i.startsWith(".env."))}o(Jr,"sensitivePath");function zs(e){let n=e;for(;!We.existsSync(n);){let t=z.dirname(n);if(t===n)throw new Error("Tool path has no existing parent.");n=t}return n}o(zs,"nearestExistingPath");function Vs(e,n){let t=We.realpathSync(e),r=zs(n),i=We.realpathSync(r);if(!Mn(t,i))throw new Error("Tool path escapes the bound workspace through a link.");let s=z.resolve(i,z.relative(r,n));if(!Mn(t,s))throw new Error("Tool path escapes the bound workspace through a link.");return{root:t,candidate:s}}o(Vs,"resolveRealToolPath");function ao(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(!Mn(e,t))throw new Error("Tool path escapes the bound workspace.");let r=Vs(e,t);if(Jr(t,e)||Jr(r.candidate,r.root))throw new Error("Secret-bearing paths are unavailable to remote Agents.");return t}o(ao,"resolveToolPath");function zr(){return{beforeToolExecute:o(async()=>!0,"beforeToolExecute")}}o(zr,"remoteRunEvents");function Gs(e,n,t){if(!oo.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,p]=i,f=t.mcp[s??""]??[];if(c==="tool"&&!f.includes(p??""))throw new Error("MCP tool is not admitted by the remote policy.");if(c!=="tool"&&!f.includes(p??""))throw new Error("MCP capability is not admitted by the remote policy.")}o(Gs,"authorizeMcp");function Qs(e){return{async resolveReadablePath(n){return ao(e,n)??e},async stageOutput(n){let t=On(),r=z.basename(n).replace(/[^A-Za-z0-9._-]/g,"_")||"output",i=z.join(e,".kodax-a2a-staging",`${t}-${r}`);return await eo(z.dirname(i),{recursive:!0}),{stagingId:t,path:i}}}}o(Qs,"workspaceBroker");function Vr(e,n){return{kind:"tool",name:`runtime-remote-policy:${e.bindingId}`,async beforeTool(t,r){try{if(e.workspaceByteLimit!==void 0&&ht(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(pt().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(Hs.has(t.name)){let c=(t.name==="grep"||t.name==="glob","path");ao(n,t.input[c])}Gs(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:Qs(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&&ht(n)>e.workspaceByteLimit?{action:"block",reason:"Remote workspace byte quota exceeded."}:{action:"allow"}}}}o(Vr,"createToolGuardrail");async function Gr(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"&&!Mn(e.managedWorkspaceRoot,i))throw new Error("Runtime session workspace is outside the managed A2A root.");return z.resolve(i)}o(Gr,"requiredWorkspaceRoot");async function Qr(e,n,t){let r=t.mode==="fixed"?t.root:e.managedWorkspaceRoot,i=await gr({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 p=io([await no(s.path)]);try{let f=await so({configHome:e.configHome,workspace:t,selection:s.requestedSkills});return{scope:i.scope,loaded:s,configurationRevision:p,skills:f}}catch(f){throw await i.dispose(),f}}o(Qr,"localAgentResources");function Yr(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(Yr,"resolvedLocal");function uo(e){let n=new Map,t=new Map,r=o(c=>{let p=n.get(c);if(!p)throw new Error("Runtime Agent owner session is not active.");return p},"requireOwner"),i=o((c,p)=>{let f=t.get(p);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 p=yt(c.workspace),f=await Qr(e,c.ref,p);try{return Yr(c.ref,f)}finally{f.scope.dispose()}},async openOwnerSession(){let c=On();return n.set(c,new Set),{ownerSessionId:c}},async bindDefault(c){let p=r(c.ownerSessionId),f=yt(c.workspace),d=Br(c.toolPolicy),u=Kr(c.workspaceByteLimit),a=await so({configHome:e.configHome,workspace:f}),R=Object.keys(d.skillScripts).length>0,l=Ur({policy:d,hasSkills:a.refs.length>0,hasSkillScripts:R}),g=R?await e.createSkillScriptRunner?.({registry:a.registry,admissions:d.skillScripts,workspaceAccess:d.workspace,network:d.network,workspaceByteLimit:u}):void 0;if(R&&!g)throw new Error("Runtime isolated Skill script backend is unavailable.");let S=On(),m=Le(d),y=Le(f),v=Le({kind:"runtime-default",profileId:c.profileId,toolPolicyRevision:m,workspaceBindingRevision:y,skillSetRevision:a.revision,provider:e.defaultProvider,model:e.defaultModel,tools:l.tools,workspaceByteLimit:u});if(c.expectedExecutionPolicyRevision&&c.expectedExecutionPolicyRevision!==v)throw await g?.dispose(),new Error("Runtime default execution policy revision changed.");let D={ownerSessionId:c.ownerSessionId,bindingId:S,kind:"runtime-default",executionPolicyRevision:v,toolPolicyRevision:m,workspaceBindingRevision:y,workspace:f,toolPolicy:d,effectiveTools:l.tools,effectiveSkills:a.refs,skillSetRevision:a.revision,skillRegistry:a.registry,skillScriptRunner:g,remoteContracts:l.contracts,toolRegistrations:l.registrations,workspaceByteLimit:u};return t.set(S,D),p.add(S),{ownerSessionId:c.ownerSessionId,bindingId:S,executionPolicyRevision:v,toolPolicyRevision:m,workspaceBindingRevision:y,skillSetRevision:a.revision,effectiveSkills:a.refs,effectiveTools:l.tools}},async startDefault(c){let p=i(c.ownerSessionId,c.bindingId);if(p.kind!=="runtime-default")throw new Error("Runtime Agent binding kind mismatch.");if(p.executionPolicyRevision!==c.expectedExecutionPolicyRevision)throw new Error("Runtime default execution policy revision changed.");let f=await Gr(e,p,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=>p.effectiveTools.includes(d.name),"toolVisibilityPolicy"),skillRegistry:p.skillRegistry,skillScriptRunner:p.skillScriptRunner,skillsPrompt:Wr(p.effectiveSkills,p.skillRegistry)},skillDynamicContext:{disable:!0},guardrails:[Vr(p,f)],events:zr()}})},async bindLocal(c){let p=r(c.ownerSessionId),f=yt(c.workspace),d=Br(c.toolPolicy),u=Kr(c.workspaceByteLimit),a=await Qr(e,c.ref,f),R=Yr(c.ref,a);if(c.expectedConfigurationRevision&&c.expectedConfigurationRevision!==R.configurationRevision)throw a.scope.dispose(),new Error("User Markdown Agent configuration revision changed.");let l=Ur({declared:a.loaded.effectiveTools,policy:d,hasSkills:a.skills.refs.length>0,hasSkillScripts:Object.keys(d.skillScripts).length>0}),g=Object.keys(d.skillScripts).length>0,S=g?await e.createSkillScriptRunner?.({registry:a.skills.registry,admissions:d.skillScripts,workspaceAccess:d.workspace,network:d.network,workspaceByteLimit:u}):void 0;if(g&&!S)throw a.scope.dispose(),new Error("Runtime isolated Skill script backend is unavailable.");let m=On(),y=Le(d),v=Le(f),D=Le({kind:"local-agent",profileId:c.profileId,configurationRevision:R.configurationRevision,toolPolicyRevision:y,workspaceBindingRevision:v,skillSetRevision:a.skills.revision,tools:l.tools,workspaceByteLimit:u});if(c.expectedExecutionPolicyRevision&&c.expectedExecutionPolicyRevision!==D)throw await S?.dispose(),a.scope.dispose(),new Error("Local Agent execution policy revision changed.");let h=a.scope.resolve(c.ref.name)?.agent;if(!h)throw await S?.dispose(),a.scope.dispose(),new Error(`User Markdown Agent not found: ${c.ref.name}`);let k={ownerSessionId:c.ownerSessionId,bindingId:m,kind:"local-agent",executionPolicyRevision:D,toolPolicyRevision:y,workspaceBindingRevision:v,workspace:f,toolPolicy:d,effectiveTools:l.tools,effectiveSkills:a.skills.refs,skillSetRevision:a.skills.revision,skillRegistry:a.skills.registry,skillScriptRunner:S,remoteContracts:l.contracts,toolRegistrations:l.registrations,workspaceByteLimit:u,scope:a.scope,loadedAgent:a.loaded,agent:h,configurationRevision:a.configurationRevision};return t.set(m,k),p.add(m),{...R,ownerSessionId:c.ownerSessionId,bindingId:m,executionPolicyRevision:D,toolPolicyRevision:y,workspaceBindingRevision:v,effectiveTools:l.tools}},async startLocal(c){let p=i(c.ownerSessionId,c.bindingId);if(p.kind!=="local-agent"||!p.agent||!p.scope)throw new Error("Runtime Agent binding kind mismatch.");if(p.configurationRevision!==c.expectedConfigurationRevision)throw new Error("User Markdown Agent configuration revision changed.");if(p.executionPolicyRevision!==c.expectedExecutionPolicyRevision)throw new Error("Local Agent execution policy revision changed.");let f=await Gr(e,p,c.sessionId),d=typeof p.agent.instructions=="string"?p.agent.instructions:p.agent.instructions({});return e.runs.start({sessionId:c.sessionId,input:c.input,permissionBroker:c.permissionBroker,agentContext:c.agentContext,options:{...p.agent.provider?{provider:p.agent.provider}:{},...p.agent.model?{modelOverride:p.agent.model}:{},...p.agent.effort?{effort:p.agent.effort}:{},context:{executionCwd:f,gitRoot:f,managedTaskWorkspaceDir:f,systemPromptOverride:d,agentScope:p.scope,toolVisibilityPolicy:o(u=>p.effectiveTools.includes(u.name),"toolVisibilityPolicy"),skillRegistry:p.skillRegistry,skillScriptRunner:p.skillScriptRunner,skillsPrompt:Wr(p.effectiveSkills,p.skillRegistry)},skillDynamicContext:{disable:!0},guardrails:[Vr(p,f)],events:zr()}})},async prepareWorkspace(c){let p=i(c.ownerSessionId,c.bindingId);if(p.workspace.mode==="fixed")return p.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 eo(f,{recursive:!0}),f},async releaseBinding(c){r(c.ownerSessionId),await s(i(c.ownerSessionId,c.bindingId))},async closeOwnerSession(c){let p=r(c);for(let f of[...p])await s(i(c,f));n.delete(c)}}}o(uo,"createRuntimeAgentBindingService");import{spawn as Ys,spawnSync as Zs}from"node:child_process";import{randomUUID as bt}from"node:crypto";import{constants as ea,readdirSync as na,statSync as ta}from"node:fs";import{copyFile as mo,lstat as ra,mkdir as je,readFile as Et,realpath as mn,rm as Ln,stat as Fn,writeFile as Pt}from"node:fs/promises";import{createRequire as oa}from"node:module";import po from"node:os";import q from"node:path";import{pathToFileURL as ia}from"node:url";import{SandboxManager as kt,getWindowsSandboxUserStatus as sa,installWindowsSandbox as km,verifyWindowsWfpEgress as aa}from"@anthropic-ai/sandbox-runtime";var jn="0.0.65",co=1048576,da=12e4,fo=oa(import.meta.url),ua=process.env.KODAX_BUNDLED==="true"?void 0:ia(fo.resolve("@anthropic-ai/sandbox-runtime")).href,ca=new Set([".ssh",".aws",".azure",".gnupg",".kodax",".agents"]),la=new Set([".env",".npmrc",".pypirc","credentials","id_rsa","id_ed25519"]),ma=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 command = [request.command, ...request.args].map(quote).join(' ');
|
|
21
|
+
if (process.platform === 'win32') {
|
|
22
|
+
const wrapped = await SandboxManager.wrapWithSandboxArgv(command, 'cmd', undefined, undefined, request.cwd);
|
|
23
|
+
child = spawn(wrapped.argv[0], wrapped.argv.slice(1), { cwd: request.cwd, env: wrapped.env, shell: false, stdio: 'inherit' });
|
|
24
|
+
} else {
|
|
25
|
+
const wrapped = await SandboxManager.wrapWithSandbox(command);
|
|
26
|
+
child = spawn(wrapped, { cwd: request.cwd, env: process.env, shell: true, stdio: 'inherit' });
|
|
27
|
+
}
|
|
28
|
+
const stop = () => child?.kill('SIGTERM');
|
|
29
|
+
process.once('SIGINT', stop);
|
|
30
|
+
process.once('SIGTERM', stop);
|
|
31
|
+
const code = await new Promise((resolve, reject) => {
|
|
32
|
+
child.once('error', reject);
|
|
33
|
+
child.once('exit', (exitCode, signal) => resolve(signal ? 1 : exitCode ?? 1));
|
|
34
|
+
});
|
|
35
|
+
SandboxManager.cleanupAfterCommand();
|
|
36
|
+
await SandboxManager.reset();
|
|
37
|
+
process.exitCode = code;
|
|
38
|
+
} catch (error) {
|
|
39
|
+
process.stderr.write((error instanceof Error ? error.message : String(error)) + '\n');
|
|
40
|
+
await SandboxManager.reset().catch(() => undefined);
|
|
41
|
+
process.exitCode = 1;
|
|
42
|
+
}
|
|
43
|
+
`,It;function lo(e){return e instanceof Error?e.message:String(e)}o(lo,"errorText");async function pa(e={}){return e.refresh&&(It=void 0),It??=fa(),It}o(pa,"doctorSandboxRuntime");async function fa(){let e=[];kt.isSupportedPlatform()||e.push(`Unsupported platform: ${process.platform}.`);let n=kt.checkDependencies();e.push(...n.warnings,...n.errors);let t=n.errors.length>0;if(process.env.KODAX_BUNDLED!=="true")try{let s=JSON.parse(await Et(fo.resolve("@anthropic-ai/sandbox-runtime/package.json"),"utf8"));s.version!==jn&&(t=!0,e.push(`ASRT package version mismatch: expected ${jn}, found ${String(s.version)}.`))}catch(s){t=!0,e.push(`ASRT package provenance check failed: ${lo(s)}`)}let r=process.env.KODAX_A2A_NODE??(process.env.KODAX_BUNDLED==="true"?"node":process.execPath),i=Zs(r,["--version"],{env:Ro(),shell:!1,encoding:"utf8",windowsHide:!0,timeout:5e3});if(i.status!==0){t=!0;let s=i.error?.message??(i.stderr.trim()||r);e.push(`JavaScript Skill interpreter is unavailable: ${s}.`)}if(process.platform==="win32")try{let s=sa();!s.provisioned||!s.credPresent||!s.inSandboxGroup?(t=!0,e.push("Windows sandbox account is not fully provisioned.")):await aa()}catch(s){t=!0,e.push(lo(s))}return{ready:kt.isSupportedPlatform()&&!t,platform:process.platform,version:jn,diagnostics:e,setupRequired:t}}o(fa,"inspectSandboxRuntime");function Te(e,n){let t=e.replaceAll("\\","/").replace(/^\.\//,"");if(!t||q.posix.isAbsolute(t)||t.split("/").includes(".."))throw new Error(`${n} must be a safe relative path.`);return t}o(Te,"canonicalRelative");function pn(e,n){let t=q.relative(e,n);return t===""||!t.startsWith("..")&&!q.isAbsolute(t)}o(pn,"isInside");function go(e){let n=e.split(q.sep).map(t=>t.toLowerCase());return n.some(t=>ca.has(t))||n.some(t=>la.has(t)||t.startsWith(".env."))}o(go,"isSensitiveRelative");async function ga(e,n){await je(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 Pt(q.join(n,"SKILL.md"),await Et(e.skillFilePath),{mode:384});for(let{folder:r,file:i}of t){let s=Te(i.relativePath,`Skill ${e.name} support file`),c=q.join(n,r,...s.split("/"));await je(q.dirname(c),{recursive:!0,mode:448}),await Pt(c,await Et(i.path),{mode:384})}}o(ga,"copySkillSnapshot");async function Ra(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/${Te(f.relativePath,`Skill ${r} script`)}`,f])),p=q.join(n,r.replace(/[^A-Za-z0-9._-]/g,"_"));await ga(s,p);for(let f of i){let d=Te(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:q.join(p,...d.split("/"))})}}return t}o(Ra,"snapshotAdmissions");function ya(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(ya,"networkEndpoints");function Ro(){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(Ro,"sanitizedEnvironment");function wa(e){let n=q.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"?q.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??q.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(wa,"interpreterFor");async function ha(e,n){let t=[],r=0,i=o(p=>{r+=p.byteLength,r>co?e.kill("SIGTERM"):t.push(p)},"append");e.stdout?.on("data",i),e.stderr?.on("data",i);let s=setTimeout(()=>{e.kill("SIGTERM")},da),c=o(()=>{e.kill("SIGTERM")},"abort");n?.addEventListener("abort",c,{once:!0});try{let p=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>co)throw new Error("Sandboxed Skill script output exceeded 1 MiB.");if(n?.aborted)throw n.reason??new Error("Sandboxed Skill script was cancelled.");if(p.code!==0)throw new Error(`Sandboxed Skill script failed (${p.code}): ${p.stdout.trim()}`);return{stdout:p.stdout,stderr:p.stderr}}finally{clearTimeout(s),n?.removeEventListener("abort",c)}}o(ha,"collectProcess");async function Sa(e,n){let t=q.join(po.tmpdir(),`kodax-asrt-${process.pid}-${bt()}.json`),r={...e,config:{...e.config,filesystem:{...e.config.filesystem,denyRead:[...e.config.filesystem.denyRead,t]}}};await Pt(t,JSON.stringify(r),{mode:384});try{let i=process.env.KODAX_BUNDLED==="true"?["__asrt-broker",t]:["--input-type=module","-e",ma,ua,t],s=Ys(process.execPath,i,{env:Ro(),shell:!1,stdio:["ignore","pipe","pipe"],windowsHide:!0});return(await ha(s,n)).stdout}finally{await Ln(t,{force:!0})}}o(Sa,"runBroker");async function va(e,n){let t=await mn(e),r=q.resolve(e,Te(n,"Skill script input")),i=await mn(r);if(!pn(t,i)||go(q.relative(t,i)))throw new Error("Skill script input is outside the permitted workspace surface.");if(!(await Fn(i)).isFile())throw new Error("Skill script inputs must be files.");return i}o(va,"workspaceSource");async function ka(e,n){let t=await mn(e),r=q.resolve(e,Te(n,"Skill script output target"));if(!pn(q.resolve(e),r)||go(q.relative(q.resolve(e),r)))throw new Error("Skill script output target is outside the permitted workspace surface.");if(await je(q.dirname(r),{recursive:!0}),!pn(t,await mn(q.dirname(r))))throw new Error("Skill script output target escapes through a symlink.");try{throw await Fn(r),new Error("Skill script output target already exists.")}catch(i){if(i.code!=="ENOENT")throw i}return r}o(ka,"workspaceTarget");async function Ia(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 va(e,i.path),c=Te(i.as??q.basename(s),"Skill script staged input"),p=q.resolve(n,"inputs",...c.split("/"));if(!pn(q.join(n,"inputs"),p))throw new Error("Skill script staged input escapes staging.");await je(q.dirname(p),{recursive:!0,mode:448}),await mo(s,p)}}o(Ia,"stageInputFiles");async function ba(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 p=Te(c.path,"Skill script staged output"),f=q.resolve(n,"outputs",...p.split("/")),d=await mn(f);if(!pn(q.join(n,"outputs"),d)||(await ra(f)).isSymbolicLink()||!(await Fn(f)).isFile())throw new Error(`Skill script did not produce output "${p}".`);let u=await ka(e,c.target);if(i!==void 0&&yo(e,!0)+(await Fn(f)).size>i)throw new Error("Skill script outputs would exceed the remote workspace byte quota.");await mo(f,u,ea.COPYFILE_EXCL),s.push(q.relative(e,u))}return s}o(ba,"promoteOutputs");function yo(e,n=!1){let t=0;for(let r of na(e,{withFileTypes:!0})){if(n&&r.name===".kodax-a2a-script"||r.isSymbolicLink())continue;let i=q.join(e,r.name);r.isDirectory()?t+=yo(i):r.isFile()&&(t+=ta(i).size)}return t}o(yo,"directorySize");function Ea(e,n,t,r){let i=po.homedir(),s=q.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(Ea,"sandboxConfig");async function wo(e){let n=await pa();if(!n.ready)throw new Error(`ASRT ${jn} is not ready: ${n.diagnostics.join(" ")||"run kodax sandbox setup"}`);let t=q.join(e.snapshotRoot,bt()),r=q.join(t,"skills");await je(r,{recursive:!0,mode:448});try{let i=await Ra(e,r),s=ya(e.network),c=Promise.resolve();return{async run(p,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(p.args.length>64||p.args.some(g=>g.length>8192))throw new Error("Skill script arguments exceed the bounded remote contract.");if(p.inputs.length>32||p.outputs.length>32)throw new Error("Skill script file mappings exceed the bounded remote contract.");let a=Te(p.script,"Skill script"),R=i.get(`${p.skill}\0${a}`);if(!R)throw new Error("Skill script is not admitted by this Runtime binding.");if([".cmd",".bat"].includes(q.extname(R.snapshotPath).toLowerCase())&&p.args.some(g=>/[&|<>^]/.test(g)))throw new Error("Batch Skill script arguments cannot contain command operators.");let l=q.join(f.workspaceRoot,".kodax-a2a-script",bt());try{await je(q.join(l,"inputs"),{recursive:!0,mode:448}),await je(q.join(l,"outputs"),{recursive:!0,mode:448}),await Ia(f.workspaceRoot,l,p,e.workspaceAccess);let g=wa(R.snapshotPath),S=await Sa({config:Ea(l,t,s,g.command),command:g.command,args:[...g.args,...p.args],cwd:l,endpoints:s},f.signal),m=await ba(f.workspaceRoot,l,p,e.workspaceAccess,e.workspaceByteLimit);return JSON.stringify({stdout:S.trim(),outputs:m})}finally{await Ln(l,{recursive:!0,force:!0})}}finally{u?.()}},async dispose(){await c,await Ln(t,{recursive:!0,force:!0})}}}catch(i){throw await Ln(t,{recursive:!0,force:!0}),i}}o(wo,"createAsrtSkillScriptRunner");import{randomUUID as $n}from"node:crypto";var Pa=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"]),Da=new Set(["run.queued","run.started","run.updated","run.completed","run.failed","run.cancelled","run.interrupted"]);function Dt(e){if(!Q(e))return fn("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"||!Pa.has(e.type))return fn("Runtime event envelope is malformed or has an unknown type.");if((e.type==="assistant.delta"||e.type==="thinking.delta")&&(!Q(e.payload)||typeof e.payload.text!="string"))return fn(`${e.type} requires a string text payload.`);if(Da.has(e.type)&&!Aa(e.payload))return fn(`${e.type} requires a RuntimeRunStatus payload.`);let n=Ta(e.type,e.payload);return n!==void 0?fn(`${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(Dt,"parseRuntimeEvent");function Ta(e,n){if(e==="session.created")return Ie(n,["id","title"])?void 0:"requires a RuntimeSession payload.";if(e==="session.loaded")return Ie(n,["id","title"])||Ie(n,["provider","sessionId"])?void 0:"requires a RuntimeSession or provider session payload.";if(e==="session.settings.updated")return Q(n)&&typeof n.sessionId=="string"&&Number.isSafeInteger(n.revision)&&Q(n.settings)&&Q(n.patch)?void 0:"requires a session settings update payload.";if(e==="thinking.finished")return Q(n)&&typeof n.thinking=="string"?void 0:"requires a string thinking payload.";if(e==="tool.started")return Q(n)&&Ie(n.tool,["id","name"])?void 0:"requires a tool descriptor payload.";if(e==="tool.progress")return Q(n)&&(Ie(n.update,["id","message"])||typeof n.toolName=="string"&&typeof n.partialJson=="string")?void 0:"requires a tool progress payload.";if(e==="tool.finished")return Q(n)&&Ie(n.result,["id","name","content"])?void 0:"requires a tool result payload.";if(e==="run.progress")return xa(n);if(e==="todo.updated")return Q(n)&&Array.isArray(n.items)?void 0:"requires an items array payload.";if(e==="user_input.requested"){let t=Q(n)&&Ie(n,["id","sessionId","runId","kind","createdAt","expiresAt"])&&Number.isSafeInteger(n.revision),r=Q(n)&&Ie(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 Q(n)&&typeof n.requestId=="string"?void 0:"requires a requestId payload.";if(e==="permission.requested")return Ie(n,["id","sessionId","runId","toolName","createdAt"])?void 0:"requires a RuntimePermissionRequest payload.";if(e==="turn.started"||e==="turn.completed"||e==="turn.failed")return Ie(n,["sessionId","turnId"])?void 0:"requires a turn payload.";if(e==="workflow.started"||e==="workflow.updated"||e==="workflow.finished")return Q(n)?void 0:"requires a workflow event payload.";if(e==="context.budget.snapshot"||e==="tool.exposure.planned")return Q(n)?void 0:"requires an object payload.";if(e==="runtime.warning")return Q(n)&&typeof n.message=="string"?void 0:"requires a warning message payload."}o(Ta,"validateKnownRuntimeEventPayload");function xa(e){return!Q(e)||typeof e.kind!="string"?"requires a discriminated progress payload.":e.kind==="managed_task_status"?Q(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"?Q(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(xa,"validateRunProgressPayload");function Aa(e){return Q(e)&&typeof e.runId=="string"&&typeof e.sessionId=="string"&&typeof e.startedAt=="string"&&typeof e.provider=="string"&&typeof e.phase=="string"}o(Aa,"isRuntimeRunStatusPayload");function Ie(e,n){return Q(e)&&n.every(t=>typeof e[t]=="string")}o(Ie,"hasStrings");function fn(e){return{ok:!1,error:e}}o(fn,"invalid");function Q(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}o(Q,"isRecord");var xe="kodax-runtime-daemon",Tt=1,Je=["initialize","runtime.initialize","ping","runtime.identity","runtime.status","runtime.shutdown","runtime.capabilities","daemon.status","daemon.stop","daemon.logs","daemon.preflight","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.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"],Ca=["runtime.shutdown","daemon.stop","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.remove","agentTasks.start","agentTasks.sendInput","agentTasks.cancel","agentTasks.reconcile"],_a=new Set(Je),Oa=new Set(Ca),Ma=new Set(["event","credential.request","host_tool.invoke","runtime.warning"]),La=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 Nn(e,n,t,r){return{protocol:xe,version:1,kind:"request",id:e,method:n,...t!==void 0?{params:t}:{},...r!==void 0?{operation:r}:{}}}o(Nn,"createRuntimeDaemonRequest");function ze(e){return Oa.has(e)}o(ze,"isRuntimeDaemonMutationMethod");function So(e,n){return{protocol:xe,version:1,kind:"response",id:e,result:n===void 0?null:n}}o(So,"createRuntimeDaemonSuccessResponse");function Ae(e,n){return{protocol:xe,version:1,kind:"error",...n!==void 0?{id:n}:{},error:e}}o(Ae,"createRuntimeDaemonErrorResponse");function gn(e,n){return{protocol:xe,version:1,kind:"notification",method:e,...n!==void 0?{params:n}:{}}}o(gn,"createRuntimeDaemonNotification");function xt(e){if(!qn(e))return!1;let n=e;return n.kind==="request"&&typeof n.id=="string"&&n.id.length>0&&typeof n.method=="string"&&_a.has(n.method)&&(n.operation===void 0||Na(n.operation))}o(xt,"isRuntimeDaemonRequest");function Ve(e){if(!qn(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(Ve,"isRuntimeDaemonSuccessResponse");function Ge(e){if(!qn(e))return!1;let n=e;return n.kind==="error"&&(n.id===void 0||typeof n.id=="string")&&Fa(n.error)}o(Ge,"isRuntimeDaemonErrorResponse");function Rn(e){if(!qn(e))return!1;let n=e;return n.kind==="notification"&&typeof n.method=="string"&&Ma.has(n.method)}o(Rn,"isRuntimeDaemonNotification");function ja(e){return xt(e)||Ve(e)||Ge(e)||Rn(e)}o(ja,"isRuntimeDaemonFrame");function vo(e){let n;try{n=JSON.parse(e)}catch{return ho("Frame is not valid JSON.")}return ja(n)?n:ho("Frame does not match the runtime daemon protocol.")}o(vo,"parseRuntimeDaemonFrame");function ho(e){return Ae({code:"invalid_frame",message:e})}o(ho,"invalidFrame");function qn(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let n=e;return n.protocol===xe&&n.version===1}o(qn,"isFrameBase");function Fa(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let n=e;return typeof n.code=="string"&&La.has(n.code)&&typeof n.message=="string"}o(Fa,"isRuntimeDaemonError");function Na(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(Na,"isRuntimeDaemonOperationEnvelope");var To=256,ko=1e3,Fe=class extends Error{constructor(t,r){super(r);this.path=t;this.name="RuntimeTransportBoundaryError"}path;static{o(this,"RuntimeTransportBoundaryError")}code="invalid_transport_value"};function Ct(e){let n=o((d,u,a)=>e.transport.request(d,u,ze(d)?Ha(e.journalEpoch,a):void 0),"request"),t=new Map,r=new Map,i=new Map,s=new Set,c={state:"connected",connectionId:`connection_${$n().replace(/-/g,"")}`,runtimeEpoch:e.identity.runtimeId,...e.journalEpoch!==void 0?{journalEpoch:e.journalEpoch}:{},reconnectable:!1},p=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){ee({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"?qa(d.params,t,n).catch(()=>Io("credential request")):d.method==="host_tool.invoke"&&$a(d.params,r,i,n).catch(()=>Io("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 Xa(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;Qe(a,"run.start");let R=ue(await n("run.start",a,u)),l=se(R,"runId"),g=se(R,"sessionId"),S=za(R,"turnId");return{runId:l,sessionId:g,...S!==void 0?{turnId:S}:{},result:Po(n,l)}},async submitInput(d){let{operation:u,...a}=d;return Qe(a,"run.input.submit"),n("run.input.submit",a,u)},await(d){return Po(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 Ka(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 R=xo(a);return R===void 0?[]:[R]})})}},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_${$n().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(R){throw t.delete(a),R}},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 ue(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){bo(d,u);let a=`hostlease_${$n().replace(/-/g,"")}`;r.set(a,u);try{return await n("host_tool.register",{leaseId:a,tools:d})}catch(R){throw r.delete(a),R}},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 R=ue(a);return bo(R.tools,u),R}catch(a){throw r.delete(d),a}},async getInvocation(d){return yn(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(yn)},subscribe(d,u){return Ua(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(yn)},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(yn)},delete(d){return n("artifact.delete",{artifactId:d})}},admin:{agentRegistrations:{list(){return n("agentRegistrations.list")},upsert(d){return Qe(d,"agentRegistrations.upsert.registration"),n("agentRegistrations.upsert",{registration:d})},remove(d){return n("agentRegistrations.remove",{agentId:d})}}},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(yn)},preflight(d){return n("agents.preflight",d)}},agentTasks:{start(d){return Qe(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")}},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(){p?.close(),f.close(),s.clear(),t.clear(),r.clear(),i.clear(),await e.transport.close?.()}}}o(Ct,"createRuntimeDaemonClient");function Io(e){ee({source:"runtime.daemon.client",level:"warn",message:`Failed to deliver ${e} result to the Runtime daemon.`})}o(Io,"reportReverseBridgeFailure");async function qa(e,n,t){let r=ue(e),i=se(r,"requestId"),s=se(r,"leaseId"),c=n.get(s);if(!c){await t("credential.supply",{requestId:i,error:"credential_lease_unavailable"});return}try{let p=await c({leaseId:s,provider:se(r,"provider"),sessionId:se(r,"sessionId"),runId:se(r,"runId")});await t("credential.supply",{requestId:i,...p!==void 0?{credential:p}:{error:"credential_unavailable"}})}catch{await t("credential.supply",{requestId:i,error:"credential_broker_failed"})}}o(qa,"answerCredentialRequest");async function $a(e,n,t,r){let i=ue(e),s=se(i,"invocationId"),c=se(i,"leaseId"),p=se(i,"toolName"),f=n.get(c)?.[p];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:p,sessionId:se(i,"sessionId"),runId:se(i,"runId"),input:ue(i.input)}));d={promise:u,settled:!1},t.set(s,d);let a=d;u.finally(()=>{a.settled=!0,Eo(t)}).catch(()=>{}),Eo(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($a,"answerHostToolInvocation");function bo(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(bo,"validateHostToolHandlers");function Eo(e){if(!(e.size<=ko))for(let[n,t]of e){if(e.size<=ko)return;t.settled&&e.delete(n)}}o(Eo,"pruneHostToolResults");function Ha(e,n){let t=n?.journalEpoch??e;if(t!==void 0)return{operationId:n?.operationId??`op_${$n().replace(/-/g,"")}`,journalEpoch:t}}o(Ha,"createOperationEnvelope");function Ka(e,n,t,r){return Ao(e,n,"event.subscribe",{filter:t},i=>{At(i,r)})}o(Ka,"subscribeToDaemonEvents");async function Xa(e,n,t,r){let i=!1,s,c=!1,p=[],f=e.subscribe(d=>{if(i||d.method!=="event")return;let u=ue(d.params);if(s===void 0){if(!Ba(u.event,t))return;p.length>=To?c=!0:p.push(u);return}u.subscriptionId===s&&At(u.event,r)});try{let d=ue(await n("session.observe",{sessionId:t}));if(s=se(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=ue(d.snapshot);for(let a of p.splice(0))a.subscriptionId===s&&At(a.event,r);return{snapshot:u,close(){i||(i=!0,p.length=0,f.close(),s!==void 0&&n("event.unsubscribe",{subscriptionId:s}).catch(()=>{}))}}}catch(d){throw i=!0,p.length=0,f.close(),s!==void 0&&n("event.unsubscribe",{subscriptionId:s}).catch(()=>{}),d}}o(Xa,"observeDaemonSession");function Ba(e,n){return e!==null&&typeof e=="object"&&!Array.isArray(e)&&e.sessionId===n}o(Ba,"isRuntimeEventForSession");function At(e,n){let t=xo(e);t!==void 0&&n(t)}o(At,"deliverRuntimeEvent");function xo(e){let n=Dt(e);if(!n.ok){ee({source:"runtime.daemon.client",level:"warn",message:`Ignored malformed Runtime event: ${n.error}`});return}return n.event}o(xo,"parseRuntimeEventForClient");function Ua(e,n,t,r){return Ao(e,n,"workflow.subscribe",{filter:t},i=>{r(i)})}o(Ua,"subscribeToDaemonWorkflowEvents");function Ao(e,n,t,r,i){let s=!1,c,p=[],f=e.subscribe(d=>{if(s||d.method!=="event")return;let u=ue(d.params);if(c===void 0){p.length>=To&&p.shift(),p.push(u);return}u.subscriptionId===c&&i(u.event)});return n(t,r).then(d=>{if(c=se(ue(d),"subscriptionId"),s){Do(n,t,c),p.length=0;return}for(let u of p.splice(0))u.subscriptionId===c&&i(u.event)}).catch(()=>{p.length=0,f.close()}),{close(){s=!0,f.close(),c!==void 0&&Do(n,t,c)}}}o(Ao,"subscribeToDaemonNotification");function Po(e,n){return e("run.await",{runId:n}).then(Wa)}o(Po,"requestRuntimeRunResult");function Wa(e){let n=ue(e),t=Object.prototype.hasOwnProperty.call(n,"error")?Ja(n.error):void 0,r={...n};return delete r.error,{...r,...t!==void 0?{error:t}:{}}}o(Wa,"deserializeRuntimeRunResult");function Ja(e){if(e==null)return;if(e instanceof Error)return e;if(typeof e=="string")return new Error(e);let n=ue(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(Ja,"deserializeRuntimeError");function Do(e,n,t){e(n==="event.subscribe"?"event.unsubscribe":"workflow.unsubscribe",{subscriptionId:t}).catch(()=>{})}o(Do,"unsubscribeRemote");function yn(e){return e??void 0}o(yn,"nullToUndefined");function ue(e){if(!e||typeof e!="object"||Array.isArray(e))throw new Error("Expected daemon response object.");return e}o(ue,"requireRecord");function se(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(se,"requireStringField");function za(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(za,"optionalStringField");function Qe(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 Fe(n,`${n} is not transport-safe: numbers must be finite.`)}if(typeof e=="function"||typeof e=="symbol"||typeof e=="bigint")throw new Fe(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 Fe(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 Fe(n,`${n} is not transport-safe: ${i} instances cannot cross a Runtime boundary.`)}if(t.add(e),Array.isArray(e))e.forEach((i,s)=>Qe(i,`${n}[${s}]`,t));else for(let[i,s]of Object.entries(e))Qe(s,`${n}.${i}`,t);t.delete(e)}o(Qe,"assertRuntimeTransportSafe");import{randomUUID as Nu}from"node:crypto";import qu from"node:os";import $u from"node:path";import{randomUUID as Ot}from"node:crypto";import*as A from"node:fs";import ye from"node:path";function Ce(e,n="default"){let t=Mt(n),r=ye.join(e,".kodax","runtime","daemon",t);return{profile:t,rootDir:r,stateFile:ye.join(r,"daemon.json"),lockFile:ye.join(r,"daemon.lock"),tokenFile:ye.join(r,"daemon.token"),logFile:ye.join(r,"daemon.log"),runsDir:ye.join(r,"runs"),eventsDir:ye.join(r,"events"),ownerPolicyFile:ye.join(r,"owner-policy.json"),ownerPolicyLockFile:ye.join(r,"owner-policy.lock")}}o(Ce,"resolveRuntimeDaemonPaths");function Kn(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(Ft(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(Kn,"readRuntimeOwnerPolicy");function Oo(e,n,t){be(e);let r=Ye(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 Lo(e,n,t,r.nonce)}finally{wn(e,r)}}o(Oo,"updateRuntimeOwnerPolicy");function Mo(e,n,t=!1){be(e);let r=Ye(e);if(!r)throw new Error("Runtime owner transition is already in progress.");try{let i=Kn(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.");Lo(e,"inline",i.revision,r.nonce)}if(A.existsSync(e.lockFile))throw new Error(`Coder profile "${e.profile}" already has an owner.`);let s=$o(e,n);if(!s)throw new Error(`Coder profile "${e.profile}" already has an owner.`);return s}finally{wn(e,r)}}o(Mo,"acquireRuntimeInlineOwner");function Lo(e,n,t,r){let i=Kn(e);if(i.revision!==t)throw new Error(`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 p=A.openSync(c,"wx",384);try{A.writeFileSync(p,`${JSON.stringify(s,null,2)}
|
|
44
|
+
`,"utf8"),A.fsyncSync(p)}finally{A.closeSync(p)}return A.renameSync(c,e.ownerPolicyFile),s}finally{A.rmSync(c,{force:!0})}}o(Lo,"writeRuntimeOwnerPolicy");function Ye(e,n=!0){let t=Ot(),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})}
|
|
45
|
+
`,"utf8"),A.fsyncSync(i),{nonce:t,owner:r}}catch(s){if(jt(s)&&s.code==="EEXIST")return n&&Va(e)?Ye(e,!1):void 0;throw s}finally{i!==void 0&&A.closeSync(i)}}o(Ye,"tryAcquireRuntimeOwnerCoordination");function Va(e){let n=Co(e);if(!n||Ga(n.owner.pid))return!1;try{let t=Co(e);return!t||t.nonce!==n.nonce?!1:(A.unlinkSync(e.ownerPolicyLockFile),!0)}catch{return!1}}o(Va,"removeAbandonedRuntimeOwnerCoordination");function Co(e){try{let n=JSON.parse(A.readFileSync(e.ownerPolicyLockFile,"utf8"));return!Ft(n)||typeof n.nonce!="string"||!Bo(n)||!n.runtimeId.startsWith("owner-transition-")?void 0:{nonce:n.nonce,owner:n}}catch{return}}o(Co,"readRuntimeOwnerCoordinationHandle");function Ga(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(Ga,"isRuntimeOwnerProcessAlive");function Qa(e){return ne(e.ownerPolicyLockFile)}o(Qa,"readRuntimeOwnerCoordinator");function wn(e,n){try{let t=JSON.parse(A.readFileSync(e.ownerPolicyLockFile,"utf8"));Ft(t)&&t.nonce===n.nonce&&A.unlinkSync(e.ownerPolicyLockFile)}catch{}}o(wn,"releaseRuntimeOwnerCoordination");function Xn(e){if(Kn(e).mode!=="daemon")throw new Error(`Runtime daemon auto-start is disabled for profile "${e.profile}" by inline rollback policy.`)}o(Xn,"assertRuntimeDaemonOwnerAllowed");function Mt(e){let n=e.trim()||"default";if(!/^[A-Za-z0-9_.-]+$/.test(n))throw new Error(`Invalid runtime daemon profile: ${e}`);return n}o(Mt,"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 jo(){return`dt_${Ot().replace(/-/g,"")}`}o(jo,"createRuntimeDaemonToken");function Fo(e,n){be(e),A.writeFileSync(e.tokenFile,`${n}
|
|
46
|
+
`,{encoding:"utf8",mode:384}),process.platform!=="win32"&&A.chmodSync(e.tokenFile,384)}o(Fo,"writeRuntimeDaemonToken");function hn(e){if(!A.existsSync(e.tokenFile))return;let n=A.readFileSync(e.tokenFile,"utf8").trim();return n.length>0?n:void 0}o(hn,"readRuntimeDaemonToken");function Ze(e,n){be(e);let t=`${e.stateFile}.${process.pid}.${Ot()}.tmp`;try{let r=A.openSync(t,"wx",384);try{A.writeFileSync(r,`${JSON.stringify(n,null,2)}
|
|
47
|
+
`,"utf8"),A.fsyncSync(r)}finally{A.closeSync(r)}A.renameSync(t,e.stateFile)}finally{A.rmSync(t,{force:!0})}}o(Ze,"writeRuntimeDaemonState");function we(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)}
|
|
48
|
+
`,"utf8")}o(we,"appendRuntimeDaemonLog");function No(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);nd(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(No,"readRuntimeDaemonLog");function qo(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(qo,"readRuntimeDaemonState");function $o(e,n){be(e);let t;try{return t=A.openSync(e.lockFile,"wx",384),A.writeFileSync(t,`${JSON.stringify(n,null,2)}
|
|
49
|
+
`,"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($o,"tryAcquireRuntimeDaemonLock");function Bn(e){let n={ownerPolicyLockFile:ye.join(ye.dirname(e.file),"owner-policy.lock")},t=Ye(n);if(!t)return!1;try{return Ko(e)}finally{wn(n,t)}}o(Bn,"releaseRuntimeDaemonLock");function Ho(e,n){let t=Ye(e);if(!t)return!1;try{let r=ne(n.file);return Lt(r,n.owner)?(Za(e),Ko(n)):!1}finally{wn(e,t)}}o(Ho,"releaseRuntimeDaemonOwnership");function Ko(e){let n=ne(e.file);return Lt(n,e.owner)?(A.unlinkSync(e.file),!0):!1}o(Ko,"unlinkRuntimeDaemonLockIfOwned");function ne(e){if(A.existsSync(e))try{let n=JSON.parse(A.readFileSync(e,"utf8"));return Bo(n)?n:void 0}catch{return}}o(ne,"readRuntimeDaemonLockOwner");function Xo(e,n,t){be(e);let r=Un(t),i=ne(e.lockFile);if(r==="healthy")return t.state&&i!==void 0&&_t(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&&id(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=Ye(e);if(!c){let p=ne(e.lockFile)??Qa(e);return p?{kind:"wait",lockOwner:p,...t.state!==void 0?{state:t.state}:{},health:s}:{kind:"unhealthy",health:"unhealthy",...t.state!==void 0?{state:t.state}:{}}}try{return Kn(e).mode!=="daemon"?{kind:"unhealthy",health:"unhealthy",...t.state!==void 0?{state:t.state}:{}}:Ya(e,n,t,s)}finally{wn(e,c)}}o(Xo,"claimRuntimeDaemonOwnership");function Ya(e,n,t,r){let i=ne(e.lockFile);if(r==="stale"){if(i!==void 0&&(t.observedLockOwner!==void 0&&!Lt(i,t.observedLockOwner)||t.state!==void 0&&!_t(i,t.state)))return Hn(i,t,r);_o(e)}else if(i!==void 0){if(t.observedLockOwner!==void 0&&!_t(i,t.observedLockOwner))return Hn(i,t,r);if(t.lockOwnerPidAlive===!1)_o(e);else return Hn(i,t,r)}if(r==="missing"){let p=ne(e.lockFile);if(p!==void 0)return{kind:"wait",lockOwner:p,...t.state!==void 0?{state:t.state}:{},health:r}}let s=$o(e,n);if(s)return{kind:"claim",lock:s,health:r};let c=ne(e.lockFile);return c?Hn(c,t,r):{kind:"unhealthy",health:"unhealthy",...t.state!==void 0?{state:t.state}:{}}}o(Ya,"claimAvailableRuntimeDaemonOwnership");function Hn(e,n,t){return{kind:"wait",lockOwner:e,...n.state!==void 0?{state:n.state}:{},health:t}}o(Hn,"waitForRuntimeOwner");function _t(e,n){return e.runtimeId===n.runtimeId&&e.pid===n.pid}o(_t,"sameRuntimeOwner");function Lt(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(Lt,"sameRuntimeLockOwner");function _o(e){A.rmSync(e.lockFile,{force:!0}),A.rmSync(e.stateFile,{force:!0}),A.rmSync(e.tokenFile,{force:!0})}o(_o,"removeRuntimeDaemonOwnershipFiles");function Za(e){A.rmSync(e.stateFile,{force:!0}),A.rmSync(e.tokenFile,{force:!0})}o(Za,"removeRuntimeDaemonStateFiles");function Un(e){return e.state?e.endpointReachable&&!e.identityMatches?"mismatch":e.pidAlive&&e.endpointReachable&&e.identityMatches?"healthy":!e.pidAlive&&!e.endpointReachable?"stale":"unhealthy":"missing"}o(Un,"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"&&od(n.status)&&(n.lastError===void 0||typeof n.lastError=="string")}o(ed,"isRuntimeDaemonState");function nd(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let n=e;return typeof n.time=="string"&&td(n.level)&&typeof n.message=="string"&&(n.data===void 0||rd(n.data))}o(nd,"isRuntimeDaemonLogEntry");function td(e){return e==="info"||e==="warn"||e==="error"}o(td,"isRuntimeDaemonLogLevel");function rd(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}o(rd,"isPlainRecord");function Bo(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(Bo,"isRuntimeDaemonLockOwner");function od(e){return e==="starting"||e==="ready"||e==="draining"||e==="stopping"||e==="unhealthy"||e==="crashed"}o(od,"isRuntimeDaemonStatus");function id(e){return e==="starting"||e==="draining"||e==="stopping"}o(id,"isRuntimeDaemonTransitionStatus");function jt(e){return e instanceof Error&&"code"in e}o(jt,"isNodeFileError");function Ft(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}o(Ft,"isRecord");import{createHash as sd,randomUUID as en}from"node:crypto";import*as tn from"node:fs/promises";import*as vn from"node:net";import ad from"node:os";import Uo from"node:path";import{StringDecoder as Nt}from"node:string_decoder";var dd=8*1024*1024,nn=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 $t(e){return e instanceof nn}o($t,"isRuntimeDaemonTransportError");function rn(e="default",n){let t=Mt(e),r=n===void 0?t:`${t}-${ud(Uo.resolve(n))}`;return process.platform==="win32"?{kind:"pipe",path:`\\\\.\\pipe\\kodax-runtime-${r}`}:{kind:"unix",path:Uo.join(ad.tmpdir(),`kodax-runtime-${process.getuid?.()??"user"}-${r}.sock`)}}o(rn,"defaultRuntimeDaemonEndpoint");function ud(e){return sd("sha256").update(e).digest("hex").slice(0,12)}o(ud,"shortPathHash");function Jo(e,n={}){let t="",r=0,i=new Nt("utf8"),s=n.maxFrameBytes??dd;if(!Number.isSafeInteger(s)||s<=0)throw new Error("Runtime daemon maxFrameBytes must be a positive safe integer.");let c=o(f=>{ld(f,s),f.trim()&&e(vo(f))},"consumeLine"),p=o(f=>{t+=f,r+=Buffer.byteLength(f,"utf8")},"append");return{push(f){for(typeof f=="string"?(p(i.end()),i=new Nt("utf8"),p(f)):p(i.write(f));;){let d=t.indexOf(`
|
|
50
|
+
`);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)}Vo(r,s)},flush(){p(i.end()),i=new Nt("utf8");let f=t.trim();t="",r=0,f.length>0&&c(f)}}}o(Jo,"createRuntimeDaemonFrameParser");async function Ee(e,n={}){let t=vn.createConnection(e.path);t.setEncoding("utf8"),await md(t,n.connectTimeoutMs);let r=!1,i,s=`transport_${en().replace(/-/g,"")}`,c=en().replace(/-/g,"")+en().replace(/-/g,""),p=`connection_${en().replace(/-/g,"")}`,f=new Set,d=new Set,u={state:"connected",connectionId:p,reconnectable:!1},a=o((g,S)=>{if(u.state!=="disconnected"){u={state:"disconnected",connectionId:p,reason:g,reconnectable:S};for(let m of d)try{m(u)}catch{ee({source:"runtime.daemon.transport",level:"warn",message:"Runtime transport lifecycle listener failed."})}}},"disconnect"),R=new Map,l=Jo(g=>{if(Ve(g)){let S=R.get(g.id);if(!S)return;R.delete(g.id),S.resolve(g.result);return}if(Ge(g)){if(!g.id)return;let S=R.get(g.id);if(!S)return;R.delete(g.id),S.reject(new nn(g.error.message,g.error.code,g.error.data));return}if(Rn(g))for(let S of f)try{S(g)}catch{ee({source:"runtime.daemon.transport",level:"warn",message:"Runtime transport notification listener failed."})}},{maxFrameBytes:n.maxFrameBytes});return t.on("data",g=>{try{l.push(g)}catch(S){r=!0;let m=Sn(S);a(m.message,!0),Wn(R,m),t.destroy(m)}}),t.on("close",()=>{r=!0,a("Runtime daemon transport closed.",!0),Wn(R,new Error("Runtime daemon transport closed."))}),t.on("error",g=>{r=!0,a(g.message,!0),Wn(R,g)}),{request(g,S,m){if(r)return Promise.reject(new Error("Runtime daemon transport is closed."));let y=`req_${en().replace(/-/g,"").slice(0,12)}`,v=g==="initialize"||g==="runtime.initialize"?cd(S,s,c):S,D=m??(i!==void 0&&ze(g)?{operationId:`op_${en().replace(/-/g,"")}`,journalEpoch:i}:void 0),h=Nn(y,g,v,D),k;try{k=JSON.stringify(h)}catch(O){return Promise.reject(new nn(`Runtime daemon request params are not JSON-serializable: ${Sn(O).message}`,"invalid_params"))}let x=new Promise((O,C)=>{R.set(y,{resolve:O,reject:C})});return t.write(`${k}
|
|
51
|
+
`),x.then(O=>{if(g==="initialize"||g==="runtime.initialize"){let C=Jn(O);typeof C?.journalEpoch=="string"&&(i=C.journalEpoch)}return O})},subscribe(g){return f.add(g),{close(){f.delete(g)}}},subscribeLifecycle(g){return d.add(g),g(u),{close(){d.delete(g)}}},async close(){r||(r=!0,a("Runtime daemon transport closed by client.",!1),l.flush(),t.end(),t.destroy(),Wn(R,new Error("Runtime daemon transport closed.")),d.clear())}}}o(Ee,"createRuntimeDaemonSocketClientTransport");function cd(e,n,t){let r=Jn(e)??{},i=Jn(r.capabilities)??{},s=Jn(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(cd,"withDurableOperationCapability");function Jn(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:void 0}o(Jn,"asRecord");async function zo(e){await fd(e.endpoint);let n=vn.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,p=o(a=>{if(s.destroyed)return;let R;try{R=JSON.stringify(a)}catch(l){let g=Ae({code:"internal_error",message:`Runtime daemon response is not JSON-serializable: ${Sn(l).message}`},a.kind==="response"||a.kind==="error"?a.id:void 0);R=JSON.stringify(g)}s.write(`${R}
|
|
52
|
+
`)},"send"),f=e.createDispatcher(a=>p(a));r.add(f);let d=Jo(a=>{if(xt(a)){f.handle(a).then(p,R=>{p(Ae({code:"internal_error",message:Sn(R).message}))});return}if(Ge(a)){p(a);return}p(Ae({code:"invalid_request",message:"Runtime daemon server expects request frames from clients."}))},{maxFrameBytes:e.maxFrameBytes}),u=o(a=>{if(c)return;c=!0;let R=Sn(a);p(Ae({code:"invalid_frame",message:R.message,...$t(R)&&R.data!==void 0?{data:R.data}:{}})),s.end()},"rejectInvalidFrame");s.on("data",a=>{if(!c)try{d.push(a)}catch(R){u(R)}}),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 pd(n,e.endpoint.path),e.endpoint.kind==="unix")try{await tn.chmod(e.endpoint.path,384)}catch(s){throw await Wo(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 Wo(n)}}}}o(zo,"createRuntimeDaemonSocketServer");function ld(e,n){Vo(Buffer.byteLength(e,"utf8"),n)}o(ld,"assertFrameSize");function Vo(e,n){if(!(e<=n))throw new nn(`Runtime daemon frame exceeds the ${n}-byte limit.`,"invalid_frame",{actualBytes:e,maxFrameBytes:n})}o(Vo,"assertFrameByteSize");function md(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",p)},"cleanup"),c=o(()=>{s(),t()},"onConnect"),p=o(f=>{s(),r(f)},"onError");e.once("connect",c),e.once("error",p)})}o(md,"waitForConnect");function pd(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(p=>{i(),r(p)},"onError");e.once("listening",s),e.once("error",c),e.listen(n)})}o(pd,"waitForListen");async function fd(e){if(e.kind!=="unix")return;let n;try{n=await tn.stat(e.path)}catch(t){if(qt(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 gd(e.path))throw new Error(`Runtime daemon Unix endpoint is already accepting connections: ${e.path}`);try{await tn.unlink(e.path)}catch(t){if(!qt(t)||t.code!=="ENOENT")throw t}}o(fd,"prepareUnixSocketEndpoint");function gd(e){return new Promise((n,t)=>{let r=vn.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",p)},"cleanup"),c=o(()=>{s(),r.end(),r.destroy(),n(!0)},"onConnect"),p=o(f=>{if(s(),r.destroy(),qt(f)&&(f.code==="ECONNREFUSED"||f.code==="ENOENT")){n(!1);return}t(f)},"onError");r.once("connect",c),r.once("error",p)})}o(gd,"unixSocketAcceptsConnections");function Wo(e){return new Promise((n,t)=>{e.close(r=>{r?t(r):n()})})}o(Wo,"closeNetServer");function Wn(e,n){for(let t of e.values())t.reject(n);e.clear()}o(Wn,"rejectPending");function Sn(e){return e instanceof Error?e:new Error(String(e))}o(Sn,"normalizeTransportError");function qt(e){return e instanceof Error&&"code"in e}o(qt,"isNodeFileError");async function zn(e,n={}){let t=qo(e);if(!t)return{pidAlive:!1,endpointReachable:!1,identityMatches:!1};let r=ne(e.lockFile),i=(n.isPidAlive??Qo)(t.pid),s=Ne(t),c=hn(e),p;try{p=await(n.createTransport?n.createTransport(s):Ee(s,{connectTimeoutMs:n.connectTimeoutMs??1e3}));let f=p.request("initialize",{profile:t.profile,...c!==void 0?{token:c}:{}});f.catch(()=>{});let d=await Rd(f,n.handshakeTimeoutMs??1e3,"Timed out waiting for runtime daemon handshake.");return{state:t,pidAlive:i,endpointReachable:!0,identityMatches:yd(d,t)&&wd(r,t),...r!==void 0?{observedLockOwner:r}:{}}}catch(f){return $t(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 p?.close?.()}}o(zn,"observeRuntimeDaemonHealth");async function Ht(e,n,t={}){let r=await zn(e,t),i=r.state?void 0:ne(e.lockFile),s=i?{...r,observedLockOwner:i,lockOwnerPidAlive:(t.isPidAlive??Qo)(i.pid)}:r;return Xo(e,n,s)}o(Ht,"resolveRuntimeDaemonOwnership");function Ne(e){return{kind:process.platform==="win32"||e.endpoint.startsWith("\\\\.\\pipe\\")?"pipe":"unix",path:e.endpoint}}o(Ne,"runtimeDaemonEndpointFromState");function Qo(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch(n){return hd(n)&&n.code==="EPERM"}}o(Qo,"isRuntimeDaemonPidAlive");async function Rd(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(Rd,"withTimeout");function yd(e,n){let t=Go(e),r=Go(t?.identity)??t;return r?.runtimeId===n.runtimeId&&r.profile===n.profile}o(yd,"daemonIdentityMatchesState");function wd(e,n){return e?.runtimeId===n.runtimeId&&e.pid===n.pid}o(wd,"runtimeDaemonLockMatchesState");function Go(e){if(!(e===null||typeof e!="object"||Array.isArray(e)))return e}o(Go,"asRecord");function hd(e){return e instanceof Error&&"code"in e}o(hd,"isNodeProcessError");import Xi from"node:path";import{randomUUID as Pn}from"node:crypto";var w={type:"string"},B={type:"boolean"},ie={type:"integer"},E={type:"object",additionalProperties:!0},Yo={},ce={type:"array",items:E},kn={oneOf:[{type:"null"},E]},te=I({ok:B},["ok"]),Y=I({}),Gn={initialize:{params:I({profile:w,token:w,autoStart:B,endpoint:w,clientInfo:E,capabilities:E},[],!0),result:I({identity:E,capabilities:E},["identity","capabilities"],!0)},"runtime.initialize":{params:I({profile:w,token:w,autoStart:B,endpoint:w,clientInfo:E,capabilities:E},[],!0),result:I({identity:E,capabilities:E},["identity","capabilities"],!0)},ping:{params:Y,result:I({ok:B,runtimeId:w},["ok","runtimeId"])},"runtime.identity":{params:Y,result:E},"runtime.status":{params:Y,result:E},"runtime.shutdown":{params:Y,result:te},"runtime.capabilities":{params:Y,result:E},"daemon.status":{params:Y,result:E},"daemon.stop":{params:Y,result:te},"daemon.logs":{params:Y,result:E},"daemon.preflight":{params:Y,result:E},"operation.get":{params:I({operationId:w,journalEpoch:w},["operationId","journalEpoch"]),result:E},"session.create":{params:bd(),result:$e()},"session.load":{params:I({sessionId:w},["sessionId"]),result:$e()},"session.list":{params:Ed(),result:Pe($e())},"session.transcript":{params:I({sessionId:w},["sessionId"]),result:kn},"session.observe":{params:I({sessionId:w},["sessionId"]),result:E},"session.fork":{params:Pd(),result:on($e())},"session.notice.append":{params:I({sessionId:w,content:w,source:w},["sessionId","content"]),result:kn},"session.rewind":{params:I({sessionId:w,selector:w},["sessionId"]),result:on($e())},"session.active_entry.set":{params:ti(),result:on($e())},"session.activeEntry.set":{params:ti(),result:on($e())},"session.compact":{params:Dd(),result:E},"session.archive":{params:I({sessionId:w},["sessionId"]),result:te},"session.unarchive":{params:I({sessionId:w},["sessionId"]),result:te},"session.delete":{params:I({sessionId:w},["sessionId"]),result:te},"session.settings.get":{params:I({sessionId:w},["sessionId"]),result:E},"session.settings.getVersioned":{params:I({sessionId:w},["sessionId"]),result:E},"session.settings.update":{params:I({sessionId:w,patch:E},["sessionId","patch"]),result:E},"session.settings.updateVersioned":{params:I({sessionId:w,patch:E,expectedRevision:ie},["sessionId","patch","expectedRevision"]),result:E},"run.start":{params:Td(),result:Id()},"run.input.submit":{params:I({sessionId:w,afterRunId:w,delivery:{type:"string",enum:["after_turn","interrupt"]},input:Yo,credential:E,hostTools:E},["sessionId","afterRunId","delivery","input"]),result:E},"run.get":{params:qe(),result:ri()},"run.list":{params:xd(),result:Pe(ri())},"run.await":{params:qe(),result:Ad()},"run.abort":{params:qe(),result:te},"run.model.set":{params:I({runId:w,model:w},["runId"],!0),result:te},"run.provider.set":{params:I({runId:w,provider:w},["runId","provider"]),result:te},"run.reasoning.set":{params:I({runId:w,reasoning:w},["runId"],!0),result:te},"run.setModel":{params:I({runId:w,model:w},["runId"],!0),result:te},"run.setProvider":{params:I({runId:w,provider:w},["runId","provider"]),result:te},"run.setReasoning":{params:I({runId:w,reasoning:w},["runId"],!0),result:te},"event.subscribe":{params:Zo(li()),result:ni()},"event.unsubscribe":{params:I({subscriptionId:w},["subscriptionId"]),result:te},"event.replay":{params:Cd(),result:Pe(_d())},"permission.list":{params:Kt(),result:Pe(oi())},"permission.listPending":{params:Kt(),result:Pe(oi())},"permission.request":{params:mi(),result:ii()},"permission.respond":{params:I({requestId:w,runId:w,decision:ii()},["requestId","decision"]),result:B},"permission.grants.list":{params:Y,result:E},"permission.grants.revoke":{params:I({grantId:w,expectedRevision:ie},["grantId","expectedRevision"]),result:B},"user_input.listPending":{params:Kt(),result:Pe(E)},"user_input.respond":{params:I({requestId:w,answer:Yo,runId:w,expectedRevision:ie},["requestId","answer"],!0),result:E},"user_input.dismiss":{params:I({requestId:w,runId:w,expectedRevision:ie},["requestId"],!0),result:E},"credential.register":{params:I({leaseId:w,providers:{type:"array",items:w},expiresAt:w},["leaseId","providers"],!0),result:E},"credential.get":{params:I({leaseId:w},["leaseId"]),result:{oneOf:[E,{type:"null"}]}},"credential.revoke":{params:I({leaseId:w},["leaseId"]),result:B},"credential.supply":{params:I({requestId:w,credential:w,error:w},["requestId"],!0),result:te},"host_tool.register":{params:I({leaseId:w,tools:{type:"array",items:E}},["leaseId","tools"]),result:E},"host_tool.get":{params:I({leaseId:w},["leaseId"]),result:{oneOf:[E,{type:"null"}]}},"host_tool.invocation.get":{params:I({invocationId:w},["invocationId"]),result:{oneOf:[E,{type:"null"}]}},"host_tool.revoke":{params:I({leaseId:w},["leaseId"]),result:B},"host_tool.complete":{params:I({invocationId:w,result:E,error:w},["invocationId"],!0),result:te},"workflow.list":{params:si(),result:ce},"workflow.get":{params:qe(),result:{oneOf:[E,{type:"null"}]}},"workflow.subscribe":{params:Zo(si()),result:ni()},"workflow.unsubscribe":{params:I({subscriptionId:w},["subscriptionId"]),result:te},"workflow.pause":{params:qe(),result:B},"workflow.resume":{params:qe(),result:B},"workflow.stop":{params:qe(),result:B},"config.read":{params:Y,result:E},"config.patch":{params:I({patch:E},["patch"]),result:E},"config.reload":{params:Y,result:I({ok:B,config:E},["ok","config"])},"model.list":{params:I({provider:w},[],!0),result:{oneOf:[E,ce]}},"provider.list":{params:Y,result:ce},"provider.custom.list":{params:Y,result:ce},"provider.custom.upsert":{params:I({config:E},["config"]),result:E},"provider.custom.remove":{params:I({name:w},["name"]),result:B},"mcp.server.list":{params:Y,result:E},"mcp.server.get":{params:I({name:w},["name"]),result:{oneOf:[E,{type:"null"}]}},"mcp.server.validate":{params:I({name:w,config:E},["name","config"]),result:{oneOf:[I({ok:B,config:E},["ok","config"],!0),I({ok:B,error:w},["ok","error"],!0)]}},"mcp.server.upsert":{params:I({name:w,config:E},["name","config"]),result:E},"mcp.server.delete":{params:I({name:w},["name"]),result:B},"mcp.server.remove":{params:I({name:w},["name"]),result:B},"mcp.server.reload":{params:Y,result:I({ok:B,servers:ce},["ok","servers"])},"mcp.tool.list":{params:I({server:w,forceRefresh:B},[],!0),result:ce},"extension.list":{params:Y,result:I({active:B,extensions:ce,diagnostics:E},["active","extensions"],!0)},"extension.reload":{params:Y,result:I({ok:B,active:B},["ok","active"],!0)},"command.list":{params:I({projectRoot:w},[],!0),result:ce},"command.resolve":{params:I({name:w,projectRoot:w},["name"],!0),result:kn},"skill.list":{params:I({projectRoot:w,userInvocableOnly:B},[],!0),result:ce},"skill.describe":{params:I({name:w,projectRoot:w},["name"],!0),result:kn},"skill.read":{params:I({name:w,projectRoot:w},["name"],!0),result:kn},"artifact.create":{params:I({kind:{enum:["image","file","video"]},path:w,mediaType:w,mimeType:w,name:w,source:{enum:["user-inline","clipboard","drag-drop","file-picker"]},description:w},["kind","path"]),result:ai()},"artifact.get":{params:I({artifactId:w},["artifactId"]),result:on(ai())},"artifact.delete":{params:I({artifactId:w},["artifactId"]),result:B},"agentRegistrations.list":{params:Y,result:ce},"agentRegistrations.upsert":{params:I({registration:E},["registration"]),result:E},"agentRegistrations.remove":{params:I({agentId:w},["agentId"]),result:B},"agents.listDispatchable":{params:E,result:ce},"agents.describe":{params:I({agentId:w,query:E},["agentId","query"]),result:on(E)},"agents.preflight":{params:E,result:E},"agentTasks.list":{params:E,result:ce},"agentTasks.start":{params:E,result:E},"agentTasks.get":{params:I({taskId:w},["taskId"]),result:E},"agentTasks.events":{params:I({taskId:w,cursor:ie},["taskId"],!0),result:ce},"agentTasks.wait":{params:I({taskId:w,timeoutMs:ie},["taskId"],!0),result:E},"agentTasks.sendInput":{params:I({taskId:w,input:E},["taskId","input"]),result:E},"agentTasks.cancel":{params:I({taskId:w,reason:w},["taskId"],!0),result:E},"agentTasks.reconcile":{params:I({taskId:w},["taskId"]),result:E},"context.budget.get":{params:ei(),result:{oneOf:[E,{type:"null"}]}},"tool.exposure.preview":{params:ei(),result:{oneOf:[E,{type:"null"}]}}},di={event:I({subscriptionId:w,event:E},["subscriptionId","event"]),"credential.request":E,"host_tool.invoke":E,"runtime.warning":E},ui={protocol:xe,version:1,methods:Gn,notifications:di},Sd=JSON.stringify(ui,null,2);function vd(){return Je}o(vd,"listRuntimeDaemonSchemaMethods");function sn(e,n,t="$"){if(e.oneOf!==void 0)return e.oneOf.filter(c=>sn(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=>kd(s,n)))return[`${t} must be ${r.join(" or ")}.`];if(Array.isArray(n)){let s=e.items;return s===void 0?[]:n.flatMap((c,p)=>sn(s,c,`${t}[${p}]`))}if(!ci(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 p=e.properties?.[s];if(p!==void 0){i.push(...sn(p,c,`${t}.${s}`));continue}e.additionalProperties===!1?i.push(`${t}.${s} is not allowed.`):typeof e.additionalProperties=="object"&&i.push(...sn(e.additionalProperties,c,`${t}.${s}`))}return i}o(sn,"validateRuntimeDaemonJsonSchema");function kd(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 ci(n);case"string":return typeof n=="string"}}o(kd,"matchesJsonSchemaType");function ci(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}o(ci,"isJsonObject");function I(e,n=[],t=!1){return{type:"object",properties:e,required:n,additionalProperties:t}}o(I,"objectSchema");function qe(){return I({runId:w},["runId"])}o(qe,"runIdParamsSchema");function Zo(e){return I({filter:e})}o(Zo,"filterParamsSchema");function ei(){return I({sessionId:w,runId:w},[],!0)}o(ei,"diagnosticParamsSchema");function ni(){return I({subscriptionId:w},["subscriptionId"])}o(ni,"subscriptionSchema");function Id(){return I({runId:w,sessionId:w,turnId:w},["runId","sessionId"],!0)}o(Id,"runStartedSchema");function Pe(e){return{type:"array",items:e}}o(Pe,"arraySchema");function on(e){return{oneOf:[{type:"null"},e]}}o(on,"nullableSchema");function bd(){return I({sessionId:w,title:w,projectPath:w,gitRoot:w,surface:w,profileId:w,tag:w})}o(bd,"createSessionParamsSchema");function $e(){return I({id:w,cursor:w,title:w,gitRoot:w,workspaceRoot:w,surface:w,profileId:w,createdAt:w,msgCount:ie,tag:w,projectKey:w,archived:B},["id","title"],!0)}o($e,"sessionSchema");function Ed(){return I({projectRoot:w,scope:{enum:["user","managed-task-worker","all"]},includeArchived:B,limit:ie,before:w,tag:w,surface:w,cursor:w})}o(Ed,"sessionFilterSchema");function Pd(){return I({sessionId:w,selector:w,newSessionId:w,title:w},["sessionId"])}o(Pd,"forkSessionParamsSchema");function ti(){return I({sessionId:w,entryId:w},["sessionId","entryId"])}o(ti,"activeEntryParamsSchema");function Dd(){return I({sessionId:w,provider:w,model:w,customInstructions:w,contextWindow:ie},["sessionId"])}o(Dd,"compactSessionParamsSchema");function Td(){return I({sessionId:w,prompt:w,input:{oneOf:[E,Pe(E)]},mode:{enum:["coding","managed_task"]},permissionBroker:{enum:["runtime","client"]},options:E},["sessionId"],!0)}o(Td,"startRunParamsSchema");function xd(){return I({sessionId:w,phase:{oneOf:[Vn(),Pe(Vn())]}})}o(xd,"runFilterSchema");function ri(){return I({runId:w,sessionId:w,turnId:w,phase:Vn(),startedAt:w,endedAt:w,provider:w,model:w,reasoning:w,error:w},["runId","sessionId","phase","startedAt","provider"],!0)}o(ri,"runStatusSchema");function Ad(){return I({runId:w,sessionId:w,phase:Vn(),result:E,error:{oneOf:[w,E]}},["runId","sessionId","phase"],!0)}o(Ad,"runResultSchema");function Vn(){return{enum:["queued","running","waiting_permission","waiting_user_input","completed","failed","cancelled","interrupted"]}}o(Vn,"runPhaseSchema");function li(){return I({sessionId:w,runId:w,type:{oneOf:[w,Pe(w)]}})}o(li,"eventFilterSchema");function Cd(){return I({...li().properties??{},sinceSeq:ie,limit:ie})}o(Cd,"eventReplayFilterSchema");function _d(){return I({id:w,seq:ie,time:w,sessionId:w,runId:w,turnId:w,type:w,payload:{}},["id","seq","time","sessionId","runId","type","payload"],!0)}o(_d,"runtimeEventSchema");function Kt(){return I({sessionId:w,runId:w,toolName:w})}o(Kt,"permissionFilterSchema");function mi(){return I({sessionId:w,runId:w,turnId:w,toolCallId:w,toolName:w,reason:w,risk:{enum:["low","medium","high"]},inputPreview:w,expiresAt:w,timeoutMs:ie},["sessionId","runId","toolName"])}o(mi,"permissionRequestInputSchema");function oi(){return I({...mi().properties??{},id:w,createdAt:w},["id","sessionId","runId","toolName","createdAt"],!0)}o(oi,"permissionRequestSchema");function ii(){return{oneOf:[I({type:{enum:["allow_once"]}},["type"]),I({type:{enum:["allow_always"]},scope:I({toolName:w,sessionId:w})},["type","scope"]),I({type:{enum:["reject"]},reason:w},["type"])]}}o(ii,"permissionDecisionSchema");function si(){return I({runId:w,activeOnly:B,limit:ie})}o(si,"workflowFilterSchema");function ai(){return I({id:w,kind:{enum:["image","file","video"]},path:w,sizeBytes:ie,mediaType:w,mimeType:w,name:w,source:{enum:["user-inline","clipboard","drag-drop","file-picker"]},description:w,createdAt:w},["id","kind","path","sizeBytes","createdAt"],!0)}o(ai,"artifactSchema");import{createHash as Od,randomUUID as In}from"node:crypto";import*as Z from"node:fs";import Md from"node:path";var Ld=6e4,jd=1048576,Fd=64,Nd=4096,pi=1e3;function Bt(){return{callTimeoutMs:Ri("KODAX_REVERSE_CALL_TIMEOUT_MS",Ld),maxResultBytes:Ri("KODAX_HOST_TOOL_MAX_RESULT_BYTES",jd)}}o(Bt,"runtimeDaemonReverseBridgeLimits");function Ut(e,n={}){let t=Bt(),r=new Map,i=new Map,s=new Map,c=new Map,p=new Map((n.initialInvocations??[]).map(h=>[h.invocationId,h])),f=new Set,d=new Map,u=new Map,a,R=!1,l=o(()=>{if(R)throw H("host_tool_unavailable","Host bridge connection is closed.")},"requireOpen"),g=o(()=>{let h=Date.now();for(let[k,x]of r)x.expiresAt!==void 0&&Date.parse(x.expiresAt)<=h&&r.delete(k)},"pruneExpiredCredentials"),S=o(h=>{for(let k of s.values())clearTimeout(k.timer),k.reject(H("credential_unavailable",h));s.clear()},"rejectPendingCredentialRequests"),m=o(()=>{for(let[h,k]of c)k.dispatched&&(c.delete(h),clearTimeout(k.timer),y(h,"unknown"),k.reject(H("host_tool_unknown","Host tool client disconnected; the side-effect outcome is unknown.")))},"rejectDispatchedHostCalls"),y=o((h,k)=>{let x=p.get(h);if(x===void 0)return;let O={...x,state:k,updatedAt:new Date().toISOString()},C=new Map(p);for(C.delete(h),C.set(h,O);C.size>pi;){let F=C.keys().next().value;if(F===void 0)break;C.delete(F)}n.onInvocationsChanged?.([...C.values()]),p.clear();for(let[F,N]of C)p.set(F,N)},"updateHostToolInvocation"),v=o((h,k)=>{let x=a;if(!(k.dispatched||x===void 0||!f.has(k.leaseId)))try{y(h,"dispatched"),k.dispatched=!0,x.notify(k.notification)}catch{c.delete(h),clearTimeout(k.timer),y(h,"unknown"),k.reject(H("host_tool_unknown","Host tool transport failed after durable dispatch; the side-effect outcome is unknown."))}},"dispatchPendingHostCall"),D=o(async h=>{if(l(),i.get(h.lease.id)!==h.lease)throw H("host_tool_unavailable","Host tool lease was revoked.");let k=`hostcall_${In().replace(/-/g,"")}`,x=gn("host_tool.invoke",{invocationId:k,leaseId:h.lease.id,toolName:h.descriptor.name,sessionId:h.sessionId,runId:h.runId,input:h.toolInput,sideEffect:h.descriptor.sideEffect}),O={invocationId:k,leaseId:h.lease.id,toolName:h.descriptor.name,sessionId:h.sessionId,runId:h.runId,state:"prepared",updatedAt:new Date().toISOString()},C=new Map(p);for(C.set(k,O);C.size>pi;){let b=C.keys().next().value;if(b===void 0)break;C.delete(b)}n.onInvocationsChanged?.([...C.values()]),p.clear();for(let[b,T]of C)p.set(b,T);let F=new Promise((b,T)=>{let P=setTimeout(()=>{let $=c.get(k);$&&(c.delete(k),y(k,$.dispatched?"unknown":"not_dispatched"),T(H($.dispatched?"host_tool_unknown":"host_tool_unavailable",$.dispatched?`Host tool ${h.descriptor.name} did not return a certain result before timeout.`:`Host tool ${h.descriptor.name} had no connected host before timeout.`)))},t.callTimeoutMs);P.unref?.(),c.set(k,{invocationId:k,resolve:b,reject:T,timer:P,notification:x,leaseId:h.lease.id,dispatched:!1})}),N=c.get(k);return N&&v(k,N),F},"invokeHostTool");return e!==void 0&&(a={id:`bridge_${In().replace(/-/g,"")}`,notify:e}),{attachTransport(h){l(),a!==void 0&&(S("Credential client connection was replaced."),m());let k=`bridge_${In().replace(/-/g,"")}`;return a={id:k,notify:h},f.clear(),{close(){a?.id===k&&(a=void 0,f.clear(),S("Credential client disconnected."),m())}}},registerCredential(h){if(l(),g(),h.providers.length===0||h.providers.some(x=>x.trim().length===0)||new Set(h.providers).size!==h.providers.length)throw H("invalid_params","Credential lease providers must be non-empty and unique.");if(h.expiresAt!==void 0&&!Number.isFinite(Date.parse(h.expiresAt)))throw H("invalid_params","Credential lease expiresAt must be an ISO timestamp.");if(r.has(h.leaseId))throw H("conflict","Credential lease ID is already registered on this connection.");let k={id:h.leaseId,providers:[...h.providers],...h.expiresAt!==void 0?{expiresAt:h.expiresAt}:{},providerSet:new Set(h.providers)};return r.set(h.leaseId,k),gi(k)},getCredential(h){g();let k=r.get(h);return k===void 0?void 0:gi(k)},revokeCredential(h){return r.delete(h)},supplyCredential(h){let k=s.get(h.requestId);return k?(s.delete(h.requestId),clearTimeout(k.timer),h.credential!==void 0&&h.credential.length>0?k.resolve(h.credential):k.reject(H("credential_unavailable",h.error??"Credential broker returned no credential.")),!0):!1},async acquireCredential(h){l();let k=r.get(h.leaseId);if(!k||!k.providerSet.has(h.provider))throw H("credential_unavailable","Credential lease is missing or does not allow this provider.");if(k.expiresAt!==void 0&&Date.parse(k.expiresAt)<=Date.now())throw r.delete(k.id),H("credential_unavailable","Credential lease expired.");let x=a;if(!x)throw H("credential_unavailable","Credential broker transport is unavailable.");let O=`credreq_${In().replace(/-/g,"")}`,C=k.expiresAt===void 0?t.callTimeoutMs:Math.min(t.callTimeoutMs,Math.max(1,Date.parse(k.expiresAt)-Date.now())),F=new Promise((N,b)=>{let T=setTimeout(()=>{s.delete(O),b(H("credential_unavailable","Credential lease expired or broker timed out."))},C);T.unref?.(),s.set(O,{resolve:N,reject:b,timer:T})});try{x.notify(gn("credential.request",{requestId:O,leaseId:k.id,provider:h.provider,sessionId:h.sessionId,runId:h.runId}))}catch{let N=s.get(O);N&&(s.delete(O),clearTimeout(N.timer),N.reject(H("credential_unavailable","Credential request was not dispatched.")))}return F.then(N=>(d.set(h.runId,{leaseId:h.leaseId,provider:h.provider}),N))},registerHostTools(h){l();let k=h.tools.map(O=>O.name);if(k.length===0||k.length>Fd||new Set(k).size!==k.length)throw H("invalid_params","Host tool names must be non-empty and unique.");if(i.has(h.leaseId))throw H("conflict","Host tool lease ID is already registered on this connection.");for(let O of h.tools)Xd(O);let x={id:h.leaseId,tools:h.tools.map(O=>({...O,inputSchema:{...O.inputSchema}})),byName:new Map(h.tools.map(O=>[O.name,O]))};return i.set(h.leaseId,x),f.add(h.leaseId),{id:x.id,tools:x.tools}},getHostTools(h){let k=i.get(h);if(k!==void 0){f.add(h);for(let[x,O]of c)O.leaseId===h&&v(x,O)}return k===void 0?void 0:{id:k.id,tools:k.tools}},revokeHostTools(h){return i.delete(h)},completeHostTool(h){let k=c.get(h.invocationId);if(!k)return!1;if(h.result!==void 0){if(typeof h.result.content!="string")throw H("invalid_params","Host tool result content must be a string.");Bd(h.result,t.maxResultBytes,"Host tool result")}return c.delete(h.invocationId),clearTimeout(k.timer),h.result!==void 0?(y(h.invocationId,"completed"),k.resolve(h.result)):(y(h.invocationId,"unknown"),k.reject(H("host_tool_unknown",h.error??"Host tool result is unknown."))),!0},getHostToolInvocation(h){return p.get(h)},createHostToolRuntime(h){l();let k=i.get(h.leaseId);if(!k)throw H("host_tool_unavailable","Host tool lease is missing.");return u.set(h.runId,h.leaseId),{hasCapabilityProvider(x){return x==="mcp"},async searchCapabilities(x,O,C){if(x!=="mcp"||C?.kind!==void 0&&C.kind!=="tool")return[];let F=O.toLowerCase();return k.tools.filter(N=>N.name.toLowerCase().includes(F)||N.description.toLowerCase().includes(F)).slice(0,C?.limit??k.tools.length).map(N=>({id:Ud(k.id,N.name),name:N.name,description:N.description,kind:"tool",server:"host",inputSchema:N.inputSchema}))},async describeCapability(x,O){if(x!=="mcp")return;let C=yi(k,O);return C?{...C,id:O,kind:"tool",server:"host"}:void 0},async executeCapability(x,O,C){if(x!=="mcp")throw H("host_tool_unavailable","Unsupported host capability provider.");let F=yi(k,O);if(!F)throw H("host_tool_unavailable","Host tool is not bound to this run.");return await D({lease:k,descriptor:F,sessionId:h.sessionId,runId:h.runId,toolInput:C})},async readCapability(){throw H("host_tool_unavailable","Host tools do not expose resource reads.")},async getCapabilityPrompt(){},async getCapabilityPromptContext(){}}},getRunRequirements(h){let k=d.get(h),x=u.get(h);if(!(k===void 0&&x===void 0))return{...k!==void 0?{credential:{...k,state:"ready"}}:{},...x!==void 0?{hostTools:{leaseId:x,state:i.has(x)?f.has(x)?"ready":"waiting_host":"expired"}}:{}}},close(){if(!R){R=!0,a=void 0,f.clear(),r.clear(),i.clear(),S("Credential client disconnected.");for(let h of c.values())clearTimeout(h.timer),y(h.invocationId,h.dispatched?"unknown":"not_dispatched"),h.reject(H(h.dispatched?"host_tool_unknown":"host_tool_unavailable",h.dispatched?"Host tool client disconnected; the side-effect outcome is unknown.":"Host tool client disconnected before dispatch."));c.clear(),p.clear()}}}}o(Ut,"createRuntimeDaemonReverseBridge");function wi(e={}){let n=new Map,t=$d(e.invocationStateFile),r=!1;return{attach(i){if(r)throw H("host_tool_unavailable","Host bridge hub is closed.");if(i.instanceSecret!==void 0&&(i.instanceSecret.length<32||i.instanceSecret.length>512))throw H("invalid_params","Runtime client instanceSecret must contain between 32 and 512 characters.");let s=i.instanceSecret===void 0?`ephemeral:${i.connectionId}`:`stable:${i.principalId}:${Od("sha256").update(i.instanceSecret).digest("hex")}`,c=s.startsWith("stable:")?qd(t.get(s)??[]):[],p=n.get(s)??Ut(void 0,{initialInvocations:c,...s.startsWith("stable:")?{onInvocationsChanged(d){t.set(s,d),fi(e.invocationStateFile,t)}}:{}});!n.has(s)&&c.length>0&&(t.set(s,c),fi(e.invocationStateFile,t)),n.set(s,p);let f=p.attachTransport(i.notify);return{bridge:p,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(wi,"createRuntimeDaemonReverseBridgeHub");function qd(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(qd,"recoverHostToolInvocationStates");function $d(e){if(e===void 0||!Z.existsSync(e))return new Map;let n;try{n=JSON.parse(Z.readFileSync(e,"utf8"))}catch(r){throw new Error(`Host Tool invocation recovery store is untrusted: ${Wd(r).message}`)}if(!Xt(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(!Xt(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(Hd);t.set(r.key,i)}return t}o($d,"loadHostToolInvocationStore");function fi(e,n){if(e===void 0)return;Z.mkdirSync(Md.dirname(e),{recursive:!0});let t=`${e}.${process.pid}.${In()}.tmp`,r;try{r=Z.openSync(t,"wx",384),Z.writeFileSync(r,`${JSON.stringify({version:1,clients:[...n].map(([i,s])=>({key:i,invocations:s}))},null,2)}
|
|
53
|
+
`,"utf8"),Z.fsyncSync(r),Z.closeSync(r),r=void 0,Z.renameSync(t,e)}finally{r!==void 0&&Z.closeSync(r),Z.rmSync(t,{force:!0})}}o(fi,"saveHostToolInvocationStore");function Hd(e){if(!Xt(e)||typeof e.invocationId!="string"||typeof e.leaseId!="string"||typeof e.toolName!="string"||typeof e.sessionId!="string"||typeof e.runId!="string"||!Kd(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(Hd,"parseHostToolInvocationStatus");function Kd(e){return e==="prepared"||e==="dispatched"||e==="completed"||e==="unknown"||e==="not_dispatched"}o(Kd,"isHostToolInvocationState");function gi(e){return{id:e.id,providers:e.providers,...e.expiresAt!==void 0?{expiresAt:e.expiresAt}:{}}}o(gi,"publicCredentialLease");function Xd(e){if(!e.name||!e.description||!e.inputSchema)throw H("invalid_params","Host tool descriptors require name, description, and inputSchema.");if(!["none","idempotent","non_idempotent"].includes(e.sideEffect))throw H("invalid_params",`Invalid host tool sideEffect for ${e.name}.`);if(!/^[A-Za-z][A-Za-z0-9_.-]{0,127}$/.test(e.name))throw H("invalid_params","Host tool name is invalid.");if(e.description.length>Nd)throw H("invalid_params",`Host tool description is too long: ${e.name}.`)}o(Xd,"validateHostToolDescriptor");function Bd(e,n,t){let r;try{r=JSON.stringify(e)}catch{throw H("invalid_params",`${t} must be JSON-serializable.`)}if(Buffer.byteLength(r,"utf8")>n)throw H("invalid_params",`${t} exceeds the ${n}-byte limit.`)}o(Bd,"assertJsonByteLimit");function Ri(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(Ri,"positiveIntegerEnvironment");function Ud(e,n){return`host:${e}:${n}`}o(Ud,"hostToolCapabilityId");function yi(e,n){let t=`host:${e.id}:`;return n.startsWith(t)?e.byName.get(n.slice(t.length)):void 0}o(yi,"descriptorFromCapabilityId");function H(e,n){return Object.assign(new Error(n),{code:e})}o(H,"bridgeError");function Xt(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}o(Xt,"isRecord");function Wd(e){return e instanceof Error?e:new Error(String(e))}o(Wd,"normalizeError");var hi=1e3,Jd=["code","cli","repl","acp","a2a","sdk","ide","space-desktop"],Ci=["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"],_i=new Map([...le("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"]),...le("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"]),...le("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"]),...le("permission:respond",["permission.respond"]),...le("permission:grant-admin",["permission.grants.revoke"]),...le("interaction:respond",["user_input.respond","user_input.dismiss"]),...le("credential:register",["credential.register","credential.get","credential.revoke","credential.supply"]),...le("host-tool:register",["host_tool.register","host_tool.get","host_tool.invocation.get","host_tool.revoke","host_tool.complete"]),...le("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"]),...le("workflow:control",["workflow.pause","workflow.resume","workflow.stop"]),...le("artifact:write",["artifact.create","artifact.delete"]),...le("agent:control",["agentRegistrations.list","agentRegistrations.upsert","agentRegistrations.remove","agents.listDispatchable","agents.describe","agents.preflight","agentTasks.list","agentTasks.get","agentTasks.events","agentTasks.wait","agentTasks.start","agentTasks.sendInput","agentTasks.cancel","agentTasks.reconcile"]),...le("daemon:admin",["runtime.shutdown","daemon.stop","daemon.preflight"])]),Si=Je.filter(e=>e!=="initialize"&&e!=="runtime.initialize"&&!_i.has(e));if(Si.length>0)throw new Error(`Runtime daemon methods are missing authorization scopes: ${Si.join(", ")}`);function le(e,n){return n.map(t=>[t,e])}o(le,"scopeEntries");function Gt(){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(Gt,"createRuntimeDaemonRunResultStore");function bn(e){return e==="initialize"||e==="runtime.initialize"}o(bn,"isInitializeMethod");function Oi(e){let n=new Map,t=e.runResults??Gt(),r=`connection_${Pn().replace(/-/g,"")}`,i=Ut(e.notify),s=i,c,p=!1,f={},d=`client_${Pn().replace(/-/g,"")}`,u,a,R=new Set(e.grantedScopes??Ci),l=o(y=>{let v=n.get(y);return v?(n.delete(y),v.close(),!0):!1},"closeSubscription"),g=o((y,v)=>{n.set(y,v)},"rememberSubscription"),S=o((y,v)=>{Li(v)&&f.contextDiagnostics!==!0||e.notify?.(gn("event",{subscriptionId:y,event:v}))},"notify");return{handle:o(async y=>{try{Ai(y.method,"params",y.params===void 0?{}:y.params,"invalid_params");let v;if(!p&&!bn(y.method))throw U("not_initialized","Runtime daemon connection must initialize before runtime methods are accepted.");if(p&&bn(y.method))throw U("conflict","Runtime daemon connection is already initialized.");if(bn(y.method)){v=W(y.params);let x=typeof v?.token=="string"?v.token:void 0;if(e.authToken!==void 0&&x!==e.authToken)throw U("unauthorized","Runtime daemon initialize token is invalid.");let O=typeof v?.profile=="string"?v.profile:void 0;if(O!==void 0&&O!==e.runtime.identity.profile)throw U("conflict",`Runtime daemon profile mismatch: expected ${e.runtime.identity.profile}, got ${O}.`);d=Qd(v?.clientInfo,d),u=fu(v?.clientInfo),a=gu(v?.clientInfo)}bn(y.method)||(Vd(y.method,R),Gd(y,R));let h=await zd(y,e,f,d,o(()=>Yd(y,e,t,g,l,S,()=>f,d,u,a,s),"dispatch")),k=hu(y.method,h);return Ai(y.method,"result",k,"internal_error"),bn(y.method)&&(f=eu(v?.capabilities),e.reverseBridgeHub!==void 0&&e.notify!==void 0&&(c=e.reverseBridgeHub.attach({principalId:d,connectionId:r,...ki(v?.clientInfo)!==void 0?{instanceSecret:ki(v?.clientInfo)}:{},notify:e.notify}),s=c.bridge,i.close()),p=!0),So(y.id,k)}catch(v){return Ae(Su(v),y.id)}},"handle"),close(){for(let y of[...n.keys()])l(y);c!==void 0?c.close():s.close()}}}o(Oi,"createRuntimeDaemonDispatcher");async function zd(e,n,t,r,i){if(!ze(e.method)||n.requireOperationEnvelope!==!0)return i();if(t.operationDeduplication!==!0)throw U("client_upgrade_required","Runtime daemon mutations require durable operation support.");if(!e.operation)throw U("operation_required","Runtime daemon mutation is missing its operation envelope.");if(!n.controlJournal)throw U("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,...vi(e.params)!==void 0?{resourceId:vi(e.params)}:{},params:e.params??{}},{externalEffect:!0},i)}o(zd,"dispatchWithOperation");function Vd(e,n){let t=_i.get(e);if(t===void 0)throw U("internal_error",`Runtime daemon method has no authorization scope: ${e}.`);if(!n.has(t))throw U("unauthorized",`Runtime daemon method requires scope ${t}.`)}o(Vd,"requireRuntimeMethodScope");function Gd(e,n){if(e.method!=="permission.respond")return;let t=oe(e.params)?e.params:void 0;if(!((t&&oe(t.decision)?t.decision:void 0)?.type!=="allow_always"||n.has("permission:grant-admin")))throw U("unauthorized","Persistent permission grants require scope permission:grant-admin.")}o(Gd,"requirePersistentGrantScope");function vi(e){if(oe(e)){for(let n of["sessionId","runId","taskId","artifactId","requestId","name"])if(typeof e[n]=="string"&&e[n].length>0)return e[n]}}o(vi,"operationResourceId");function Qd(e,n){if(!oe(e))return n;let t=e.instanceId;return typeof t!="string"||!/^[A-Za-z0-9_.:-]{4,160}$/.test(t)?n:t}o(Qd,"parseRuntimeClientPrincipal");function ki(e){if(!oe(e))return;let n=e.instanceSecret;return typeof n=="string"?n:void 0}o(ki,"parseRuntimeClientInstanceSecret");async function Yd(e,n,t,r,i,s,c,p,f,d,u){let a=n.runtime,R=n.reverseBridgeHub??u;switch(e.method){case"initialize":case"runtime.initialize":return{identity:a.identity,capabilities:bi(n.capabilities,a.agents.enabled,n.controlJournal,n.reverseBridgeHub!==void 0,n.durableHostToolInvocations===!0),principalId:p,...n.controlJournal!==void 0?{journalEpoch:n.controlJournal.journalEpoch}:{},grantedScopes:[...n.grantedScopes??Ci]};case"ping":return{ok:!0,runtimeId:a.identity.runtimeId};case"runtime.identity":return a.identity;case"daemon.status":case"runtime.status":return ou(await(n.status?n.status():a.status.snapshot()),R);case"daemon.stop":case"runtime.shutdown":return n.stop?n.stop():a.close().then(()=>({ok:!0}));case"daemon.logs":return n.logs?n.logs():{entries:[]};case"daemon.preflight":return iu(await(n.preflight?n.preflight():a.status.preflight()),R);case"runtime.capabilities":return bi(n.capabilities,a.agents.enabled,n.controlJournal,n.reverseBridgeHub!==void 0,n.durableHostToolInvocations===!0);case"operation.get":{let l=M(e.params),g=j(l,"operationId"),S=j(l,"journalEpoch");if(!n.controlJournal)return a.operations.get({operationId:g,journalEpoch:S});if(S!==n.controlJournal.journalEpoch)throw U("operation_epoch_mismatch","Runtime operation belongs to another journal epoch.");let m=n.controlJournal.get(g);if(!m||m.principalId!==p)throw U("not_found","Runtime operation was not found.");return nu(m)}case"config.read":return n.config?Vt(await n.config()):a.config.read();case"config.patch":{let l=ji(M(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?au(await n.providerList(),W(e.params)):a.catalog.models(uu(e.params));case"provider.custom.list":return a.catalog.customProviders();case"provider.custom.upsert":{let l=M(e.params);return a.catalog.upsertCustomProvider(M(l.config))}case"provider.custom.remove":return a.catalog.deleteCustomProvider(K(e.params,"name"));case"mcp.server.list":return a.mcp.listServers();case"mcp.server.get":return a.mcp.getServer(K(e.params,"name"));case"mcp.server.validate":{let l=M(e.params);return a.mcp.validateServer(j(l,"name"),l.config)}case"mcp.server.upsert":{let l=M(e.params);return a.mcp.upsertServer(j(l,"name"),M(l.config))}case"mcp.server.delete":case"mcp.server.remove":return a.mcp.deleteServer(K(e.params,"name"));case"mcp.server.reload":return a.mcp.reloadServers();case"mcp.tool.list":return a.mcp.listTools(cu(e.params));case"extension.list":return a.catalog.extensions();case"extension.reload":return a.catalog.reloadExtensions();case"command.list":{let l=W(e.params),g=typeof l?.projectRoot=="string"?l.projectRoot:void 0;return a.catalog.commands(g)}case"command.resolve":{let l=M(e.params);return a.catalog.resolveCommand({name:j(l,"name"),...typeof l.projectRoot=="string"?{projectRoot:l.projectRoot}:{}})}case"skill.list":return a.catalog.skills(lu(e.params));case"skill.describe":case"skill.read":{let l=M(e.params);return a.catalog.describeSkill({name:j(l,"name"),...typeof l.projectRoot=="string"?{projectRoot:l.projectRoot}:{}})}case"artifact.create":return a.artifacts.create(mu(e.params));case"artifact.get":return a.artifacts.get(K(e.params,"artifactId"));case"artifact.delete":return a.artifacts.delete(K(e.params,"artifactId"));case"agentRegistrations.list":return Wt(n),he(a),a.admin.agentRegistrations.list();case"agentRegistrations.upsert":{Wt(n),he(a);let l=M(e.params);return a.admin.agentRegistrations.upsert(M(l.registration))}case"agentRegistrations.remove":return Wt(n),he(a),a.admin.agentRegistrations.remove(K(e.params,"agentId"));case"agents.listDispatchable":return a.agents.listDispatchable(M(e.params));case"agents.describe":{let l=M(e.params);return a.agents.describe(j(l,"agentId"),M(l.query))}case"agents.preflight":return a.agents.preflight(M(e.params));case"agentTasks.list":return he(a),a.agentTasks.list(W(e.params));case"agentTasks.start":return he(a),a.agentTasks.start(M(e.params));case"agentTasks.get":return he(a),a.agentTasks.get(K(e.params,"taskId"));case"agentTasks.events":{he(a);let l=M(e.params);return a.agentTasks.events(j(l,"taskId"),En(l,"cursor"))}case"agentTasks.wait":{he(a);let l=M(e.params);return a.agentTasks.wait(j(l,"taskId"),En(l,"timeoutMs"))}case"agentTasks.sendInput":{he(a);let l=M(e.params);return a.agentTasks.sendInput(j(l,"taskId"),M(l.input))}case"agentTasks.cancel":{he(a);let l=M(e.params);return a.agentTasks.cancel(j(l,"taskId"),re(l,"reason"))}case"agentTasks.reconcile":return he(a),a.agentTasks.reconcile(K(e.params,"taskId"));case"session.create":return a.sessions.create(W(e.params));case"session.load":return a.sessions.load(K(e.params,"sessionId"));case"session.list":return a.sessions.list(W(e.params));case"session.transcript":return a.sessions.transcript(K(e.params,"sessionId"));case"session.observe":{let l=zt(),g=await a.sessions.observe(K(e.params,"sessionId"),S=>s(l,Jt(S,R)));return r(l,g),{subscriptionId:l,snapshot:ru(g.snapshot,R)}}case"session.fork":return a.sessions.fork(M(e.params));case"session.notice.append":return a.sessions.appendNotice(M(e.params));case"session.rewind":return a.sessions.rewind(M(e.params));case"session.active_entry.set":case"session.activeEntry.set":return a.sessions.setActiveEntry(M(e.params));case"session.compact":return a.sessions.compact(M(e.params));case"session.archive":return await a.sessions.archive(K(e.params,"sessionId")),{ok:!0};case"session.unarchive":return await a.sessions.unarchive(K(e.params,"sessionId")),{ok:!0};case"session.delete":return await a.sessions.delete(K(e.params,"sessionId")),{ok:!0};case"session.settings.get":return a.sessions.getSettings(K(e.params,"sessionId"));case"session.settings.getVersioned":return a.sessions.getSettingsVersioned(K(e.params,"sessionId"));case"session.settings.update":{if(n.requireOperationEnvelope===!0)throw U("client_upgrade_required","Shared daemon session settings require session.settings.updateVersioned.");let l=M(e.params);return a.sessions.updateSettings(j(l,"sessionId"),M(l.patch))}case"session.settings.updateVersioned":{let l=M(e.params);return a.sessions.updateSettingsVersioned(j(l,"sessionId"),M(l.patch),{expectedRevision:xi(l,"expectedRevision")})}case"run.start":{let l=M(e.params),g=j(l,"sessionId"),S=`run_${Date.now().toString(36)}_${Pn().replace(/-/g,"").slice(0,8)}`,m=await Ii({params:l,sessionId:g,trustedRunId:S,principalId:p,clientName:f,clientVersion:d,operationId:e.operation?.operationId,reverseBridge:u}),y=await a.runs.start(m);return t.remember(y.runId,y.result),{runId:y.runId,sessionId:y.sessionId,...y.turnId!==void 0?{turnId:y.turnId}:{}}}case"run.input.submit":{let l=M(e.params),g=j(l,"sessionId"),S=j(l,"afterRunId"),m=j(l,"delivery"),y=await a.runs.get(S);if(y.sessionId!==g)throw U("conflict",`Runtime continuation target ${S} does not belong to session ${g}.`);if(!Zd(y.phase))return{accepted:!1,delivery:m,sessionId:g,afterRunId:S,reason:"stale_run"};if(m==="interrupt")return{accepted:!1,delivery:m,sessionId:g,afterRunId:S,reason:"unsupported_capability"};let v=`run_${Date.now().toString(36)}_${Pn().replace(/-/g,"").slice(0,8)}`,D=await Ii({params:l,sessionId:g,trustedRunId:v,principalId:p,clientName:f,clientVersion:d,operationId:e.operation?.operationId,reverseBridge:u}),h=await a.runs.submitInput(D);if(h.accepted){let k=a.runs.await(h.runId);t.remember(h.runId,k)}return h}case"run.get":return Ke(await a.runs.get(K(e.params,"runId")),R);case"run.list":return(await a.runs.list(W(e.params))).map(l=>Ke(l,R));case"run.await":{let l=K(e.params,"runId"),g=t.get(l);return g||a.runs.await(l)}case"run.abort":return await a.runs.abort(K(e.params,"runId")),{ok:!0};case"run.model.set":return Di(a,e.params);case"run.setModel":return Di(a,e.params);case"run.provider.set":{let l=M(e.params);return await a.runs.setProvider(j(l,"runId"),j(l,"provider")),{ok:!0}}case"run.setProvider":{let l=M(e.params);return await a.runs.setProvider(j(l,"runId"),j(l,"provider")),{ok:!0}}case"run.reasoning.set":return Ti(a,e.params);case"run.setReasoning":return Ti(a,e.params);case"event.subscribe":{let l=W(e.params)??{},g=W(l.filter);await He(a,g?.sessionId);let S=zt(),m=a.events.subscribe(g??{},y=>{s(S,Jt(y,R))});return r(S,m),{subscriptionId:S}}case"event.unsubscribe":return{ok:i(K(e.params,"subscriptionId"))};case"event.replay":{let l=W(e.params);return await He(a,l?.sessionId),tu(await a.events.replay(l),c()).map(g=>Jt(g,R))}case"permission.list":case"permission.listPending":{let l=W(e.params);return await He(a,l?.sessionId),a.permissions.listPending(l)}case"permission.request":{let l=M(e.params);return await He(a,l.sessionId),a.permissions.request(l)}case"permission.respond":{let l=M(e.params),g=re(l,"runId");return a.permissions.respond(j(l,"requestId"),M(l.decision),g!==void 0?{runId:g}:void 0)}case"permission.grants.list":return a.permissions.listGrants();case"permission.grants.revoke":{let l=M(e.params);return a.permissions.revokeGrant(j(l,"grantId"),xi(l,"expectedRevision"))}case"user_input.listPending":{let l=W(e.params);return await He(a,l?.sessionId),a.userInputs.listPending(l)}case"user_input.respond":{let l=M(e.params),g=En(l,"expectedRevision"),S=re(l,"runId");return a.userInputs.respond(j(l,"requestId"),l.answer,g!==void 0||S!==void 0?{...g!==void 0?{expectedRevision:g}:{},...S!==void 0?{runId:S}:{}}:void 0)}case"user_input.dismiss":{let l=M(e.params),g=En(l,"expectedRevision"),S=re(l,"runId");return a.userInputs.dismiss(j(l,"requestId"),g!==void 0||S!==void 0?{...g!==void 0?{expectedRevision:g}:{},...S!==void 0?{runId:S}:{}}:void 0)}case"credential.register":{let l=M(e.params);return u.registerCredential({leaseId:j(l,"leaseId"),providers:Ru(l,"providers"),...re(l,"expiresAt")!==void 0?{expiresAt:re(l,"expiresAt")}:{}})}case"credential.get":return u.getCredential(K(e.params,"leaseId"));case"credential.revoke":return u.revokeCredential(K(e.params,"leaseId"));case"credential.supply":{let l=M(e.params);return{ok:u.supplyCredential({requestId:j(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=M(e.params);return u.registerHostTools({leaseId:j(l,"leaseId"),tools:yu(l.tools)})}case"host_tool.get":return u.getHostTools(K(e.params,"leaseId"));case"host_tool.invocation.get":return u.getHostToolInvocation(K(e.params,"invocationId"));case"host_tool.revoke":return u.revokeHostTools(K(e.params,"leaseId"));case"host_tool.complete":{let l=M(e.params);return{ok:u.completeHostTool({invocationId:j(l,"invocationId"),...l.result!==void 0?{result:M(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(K(e.params,"runId"));case"workflow.subscribe":{let l=W(e.params)??{},g=W(l.filter),S=zt(),m=a.workflows.subscribe(g??{},y=>{s(S,y)});return r(S,m),{subscriptionId:S}}case"workflow.unsubscribe":return{ok:i(K(e.params,"subscriptionId"))};case"workflow.pause":return a.workflows.pause(K(e.params,"runId"));case"workflow.resume":return a.workflows.resume(K(e.params,"runId"));case"workflow.stop":return a.workflows.stop(K(e.params,"runId"));case"context.budget.get":return Ei(c()),await He(a,re(W(e.params)??{},"sessionId")),Pi(a,"context.budget.snapshot",W(e.params));case"tool.exposure.preview":return Ei(c()),await He(a,re(W(e.params)??{},"sessionId")),Pi(a,"tool.exposure.planned",W(e.params));default:throw U("method_not_found",`Runtime daemon method is not implemented: ${e.method}`)}}o(Yd,"dispatchRuntimeDaemonRequest");async function Ii(e){let n=W(e.params.credential),t=W(e.params.hostTools),r=n===void 0?void 0:await e.reverseBridge.acquireCredential({leaseId:j(n,"leaseId"),provider:j(n,"provider"),sessionId:e.sessionId,runId:e.trustedRunId}),i=t===void 0?void 0:e.reverseBridge.createHostToolRuntime({leaseId:j(t,"leaseId"),sessionId:e.sessionId,runId:e.trustedRunId}),s=Be(),c=i===void 0?void 0:s===null?i:wu(i,s),p=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:j(n,"provider")}:{},...c!==void 0?{options:{...p,extensionRuntime:c}}:{}}}o(Ii,"bindTrustedRunInput");function Zd(e){return e==="queued"||e==="running"||e==="waiting_permission"||e==="waiting_user_input"}o(Zd,"isActiveRuntimeRunPhase");function eu(e){return oe(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(eu,"parseRuntimeClientCapabilities");function bi(e={},n=!1,t,r=!1,i=!1){let s=Bt();return{events:!0,permissions:!0,workflows:!0,configAdmin:!0,commandCatalog:!0,skillCatalog:!0,artifactUpload:!0,contextDiagnostics:!0,hardDispose:!1,externalAgents:n,...t!==void 0?{operationDeduplication:{version:1,retentionMs:Number.MAX_SAFE_INTEGER},journalEpoch:t.journalEpoch,controlHealth:t.health}:{},sessionObservation:{version:1,maxBufferedEvents:256},sessionAdmission:{version:1,surfaces:Jd,legacySurface:!0,partnerDenied:!0},completeObservationSnapshot:{version:1,transcriptRevision:!0,managedTasks:!0,queuedInputs:!0},connectionLifecycle:{version:1},typedRuntimeEvents:{version:1},daemonSafeRunInput:{version:1},sharedSessionSettings:{version:1,keys:["provider","model","effort","thinking","reasoningMode","permissionMode","executionCwd","agentMode","autoModeEngine"]},...t!==void 0?{durableRecoveryQueries:{version:1,operationResult:!0,hostToolInvocation:i,permissionGrants:!0,daemonPreflight:!0,terminalAcknowledgement:!1,terminalAcknowledgementOwner:"client"}}:{},afterTurnInput:{version:1},askUserTransport:{version:1},permissionCas:{version:1},providerCredentialBroker:{version:1,registrationConnectionBound:!r,stableClientResume:r,runtimeRestartExpiresLease:!0,acquiredCredentialSurvivesDisconnect:!0,requestTimeoutMs:s.callTimeoutMs},runBoundHostTools:{version:1,registrationConnectionBound:!r,stableClientResume:r,invocationStatusQuery:r,invocationReplay:!1,invocationTimeoutMs:s.callTimeoutMs,maxResultBytes:s.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},...e}}o(bi,"runtimeDaemonCapabilities");function nu(e){return e?{...e}:{}}o(nu,"publicOperationReceipt");function he(e){if(!e.agents.enabled)throw U("method_not_found","Runtime external agent executor plane is not enabled.")}o(he,"requireExternalAgentsEnabled");function Wt(e){if(e.allowAgentRegistrationAdmin!==!0)throw U("permission_denied","Runtime daemon host denied Agent registration administration.")}o(Wt,"requireAgentRegistrationAdmin");function tu(e,n){return n.contextDiagnostics===!0?e:e.filter(t=>!Li(t))}o(tu,"filterReplayForClientCapabilities");async function He(e,n){n!==void 0&&await e.sessions.transcript(n)}o(He,"assertAdmittedSessionId");function ru(e,n){return{...e,runs:e.runs.map(t=>Ke(t,n))}}o(ru,"augmentObservationRunRequirements");function ou(e,n){return!oe(e)||!Array.isArray(e.runs)?e:{...e,runs:e.runs.map(t=>Mi(t)?Ke(t,n):t)}}o(ou,"augmentStatusRunRequirements");function iu(e,n){return{...e,activeRuns:e.activeRuns.map(t=>Ke(t,n)),queuedRuns:e.queuedRuns.map(t=>Ke(t,n))}}o(iu,"augmentPreflightRunRequirements");function Jt(e,n){return Mi(e.payload)?{...e,payload:Ke(e.payload,n)}:e}o(Jt,"augmentRuntimeEventRequirements");function Ke(e,n){let t=n?.getRunRequirements(e.runId);return t===void 0?e:su(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(Ke,"augmentRunRequirements");function Mi(e){return oe(e)&&typeof e.runId=="string"&&typeof e.sessionId=="string"&&typeof e.phase=="string"&&typeof e.startedAt=="string"&&typeof e.provider=="string"}o(Mi,"isRuntimeRunStatus");function su(e){return e==="completed"||e==="failed"||e==="cancelled"||e==="interrupted"}o(su,"isTerminalRuntimeRunPhase");function Ei(e){if(e.contextDiagnostics!==!0)throw U("unauthorized","Runtime daemon client did not negotiate contextDiagnostics capability.")}o(Ei,"requireContextDiagnosticsCapability");function Li(e){return oe(e)?e.type==="context.budget.snapshot"||e.type==="tool.exposure.planned"||e.type==="context.compaction.skipped":!1}o(Li,"isContextDiagnosticRuntimeEvent");async function Pi(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(Pi,"latestRuntimeDiagnosticPayload");async function Di(e,n){let t=M(n);return await e.runs.setModel(j(t,"runId"),re(t,"model")),{ok:!0}}o(Di,"setRunModel");async function Ti(e,n){let t=M(n);return await e.runs.setReasoning(j(t,"runId"),re(t,"reasoning")),{ok:!0}}o(Ti,"setRunReasoning");function au(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=>oe(s)&&s.name===r);return oe(i)?{provider:r,models:Array.isArray(i.models)?i.models:[]}:{provider:r,models:[]}}return t.flatMap(i=>!oe(i)||typeof i.name!="string"?[]:[{provider:i.name,models:Array.isArray(i.models)?i.models:[]}])}o(au,"listRuntimeModels");function Vt(e){return Array.isArray(e)?e.map(n=>Vt(n)):oe(e)?Object.fromEntries(Object.entries(e).map(([n,t])=>[n,du(n)?"[redacted]":Vt(t)])):e}o(Vt,"redactRuntimeConfig");function du(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(du,"isSensitiveConfigKey");function W(e){if(e!==void 0)return M(e)}o(W,"optionalRecord");function ji(e,n){return M(e[n])}o(ji,"requireRecordField");function uu(e){let n=W(e);if(n)return typeof n.provider=="string"?{provider:n.provider}:void 0}o(uu,"parseModelListFilter");function cu(e){let n=W(e);if(n)return{...typeof n.server=="string"?{server:n.server}:{},...typeof n.forceRefresh=="boolean"?{forceRefresh:n.forceRefresh}:{}}}o(cu,"parseMcpToolListFilter");function lu(e){let n=W(e);if(n)return{...typeof n.projectRoot=="string"?{projectRoot:n.projectRoot}:{},...typeof n.userInvocableOnly=="boolean"?{userInvocableOnly:n.userInvocableOnly}:{}}}o(lu,"parseSkillListFilter");function mu(e){let n=M(e),t=n.kind;if(t!=="image"&&t!=="file"&&t!=="video")throw U("invalid_request","Expected artifact kind: image | file | video");let r=j(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}:{},...pu(n.source)?{source:n.source}:{},...typeof n.description=="string"?{description:n.description}:{}}}o(mu,"parseArtifactCreateInput");function pu(e){return e==="user-inline"||e==="clipboard"||e==="drag-drop"||e==="file-picker"}o(pu,"isRuntimeArtifactSource");function fu(e){return oe(e)&&typeof e.name=="string"&&e.name.length>0?e.name:void 0}o(fu,"parseRuntimeClientName");function gu(e){return oe(e)&&typeof e.version=="string"&&e.version.length>0?e.version:void 0}o(gu,"parseRuntimeClientVersion");function Ru(e,n){let t=e[n];if(!Array.isArray(t)||t.some(r=>typeof r!="string"||r.length===0))throw U("invalid_request",`Expected string array param: ${n}`);return t}o(Ru,"requireStringArrayField");function yu(e){if(!Array.isArray(e))throw U("invalid_request","Expected host tool descriptors array.");return e.map(n=>{let t=M(n),r=j(t,"sideEffect");if(r!=="none"&&r!=="idempotent"&&r!=="non_idempotent")throw U("invalid_request",`Invalid host tool sideEffect: ${r}`);return{name:j(t,"name"),description:j(t,"description"),inputSchema:ji(t,"inputSchema"),sideEffect:r}})}o(yu,"parseRuntimeHostToolDescriptors");function wu(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)]),p=[...s,...c];return p.slice(0,i?.limit??p.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(wu,"mergeExtensionRuntimeContracts");function oe(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}o(oe,"isRecord");function M(e){if(!e||typeof e!="object"||Array.isArray(e))throw U("invalid_request","Expected params to be an object.");return e}o(M,"requireRecord");function K(e,n){return j(M(e),n)}o(K,"requireStringParam");function j(e,n){let t=e[n];if(typeof t!="string"||t.length===0)throw U("invalid_request",`Expected string param: ${n}`);return t}o(j,"requireStringField");function re(e,n){let t=e[n];if(t!=null){if(typeof t!="string")throw U("invalid_request",`Expected optional string param: ${n}`);return t}}o(re,"optionalStringField");function En(e,n){let t=e[n];if(t!=null){if(!Number.isSafeInteger(t)||t<0)throw U("invalid_request",`Expected optional non-negative integer param: ${n}`);return t}}o(En,"optionalIntegerField");function xi(e,n){let t=En(e,n);if(t===void 0)throw U("invalid_request",`Expected non-negative integer param: ${n}`);return t}o(xi,"requireIntegerField");function U(e,n,t){let r=new Error(n);return r.code=e,t!==void 0&&(r.data=t),r}o(U,"daemonError");function zt(){return`sub_${Pn().replace(/-/g,"").slice(0,12)}`}o(zt,"createSubscriptionId");function Ai(e,n,t,r){let i=sn(Gn[e][n],t,n);if(i.length!==0)throw U(r,n==="params"?`Invalid params for ${e}.`:`Runtime daemon produced an invalid result for ${e}.`,{issues:i})}o(Ai,"validateDaemonMethodValue");function hu(e,n){return n===void 0?null:e!=="run.await"||!oe(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(hu,"serializeRuntimeDaemonMethodResult");function Su(e){if(e instanceof Error){let n=e;return{code:typeof n.code=="string"&&vu(n.code)?n.code:"internal_error",message:e.message,...n.data!==void 0?{data:n.data}:{}}}return{code:"internal_error",message:String(e)}}o(Su,"normalizeRuntimeDaemonError");function vu(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(vu,"isRuntimeDaemonErrorCode");import{createHash as ku,randomUUID as qi}from"node:crypto";import*as G from"node:fs";import Fi from"node:path";var fe=class extends Error{static{o(this,"RuntimeControlJournalError")}code;constructor(n,t){super(t),this.name="RuntimeControlJournalError",this.code=n}};function $i(e){G.mkdirSync(e.rootDir,{recursive:!0});let n=Fi.join(e.rootDir,"journal-meta.json"),t=Fi.join(e.rootDir,"control.jsonl"),r=Au(n),i=r.meta,s=xu(t),c=s.records,p=new Map,f=s.trusted&&r.trusted?"healthy":"control_history_untrusted";return f==="healthy"&&Tu(c,t),{journalEpoch:i.journalEpoch,get health(){return f},execute(d,u,a){if(f!=="healthy")return Promise.reject(new fe("control_history_untrusted","Runtime control history is untrusted; mutations are quarantined."));try{Du(d,i.journalEpoch);let R=_u(d.params),l=c.get(d.operationId);if(l){Pu(l,d,R);let S=p.get(d.operationId);return S||Eu(l)}let g=Iu(t,c,d,R,u.externalEffect===!0,a,()=>{f="control_history_untrusted"});return p.set(d.operationId,g),g.finally(()=>p.delete(d.operationId)).catch(()=>{}),g}catch(R){return Promise.reject(R)}},get(d){return c.get(d)}}}o($i,"createRuntimeControlJournal");async function Iu(e,n,t,r,i,s,c){let p=bu(t,r,"accepted");Hi(e,p),n.set(t.operationId,p),i&&Qn(e,n,p,"dispatched");let f;try{f=await s()}catch(d){let u=Ou(d);try{Qn(e,n,p,"rejected",{error:u})}catch{c()}throw d}try{return Qn(e,n,p,"applied",{result:f}).result}catch{throw c(),n.set(t.operationId,{...p,state:"unknown",updatedAt:new Date().toISOString()}),new fe("operation_unknown","Runtime operation completed but its durable outcome could not be recorded.")}}o(Iu,"executeNewOperation");function Qn(e,n,t,r,i={}){let s={type:"operation",...t,state:r,...i,updatedAt:new Date().toISOString()};return Hi(e,s),n.set(s.operationId,s),s}o(Qn,"updateOperation");function bu(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(bu,"operationRecord");function Eu(e){if(e.state==="applied")return Promise.resolve(e.result);if(e.state==="rejected")return Promise.reject(new fe(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 fe(n,`Runtime operation is ${e.state}; it will not be replayed.`))}o(Eu,"replayOperation");function Pu(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 fe("operation_id_reuse","Runtime operation ID was already used for a different request or principal.")}o(Pu,"assertMatchingOperation");function Du(e,n){if(e.journalEpoch!==n)throw new fe("operation_epoch_mismatch","Runtime operation belongs to a different control journal epoch.");if(!/^[A-Za-z0-9_.:-]{4,160}$/.test(e.operationId))throw new fe("invalid_operation_id","Runtime operation ID is invalid.");if(e.principalId.length===0||e.method.length===0)throw new fe("invalid_operation","Runtime operation identity is incomplete.")}o(Du,"validateOperationInput");function Tu(e,n){for(let t of[...e.values()])t.state!=="accepted"&&t.state!=="dispatched"||Qn(n,e,t,t.state==="dispatched"?"unknown":"interrupted")}o(Tu,"recoverUnfinished");function xu(e){let n=new Map;if(!G.existsSync(e))return{trusted:!0,records:n};let t=G.readFileSync(e,"utf8").split(/\r?\n/);for(let r of t)if(r.length!==0)try{let i=JSON.parse(r);if(!Lu(i))return{trusted:!1,records:n};n.set(i.operationId,i)}catch{return{trusted:!1,records:n}}return{trusted:!0,records:n}}o(xu,"loadOperationRecords");function Au(e){if(G.existsSync(e)){try{let t=JSON.parse(G.readFileSync(e,"utf8"));if(Mu(t))return{meta:t,trusted:!0}}catch{}return{meta:Ni(),trusted:!1}}let n=Ni();return Cu(e,n),{meta:n,trusted:!0}}o(Au,"loadOrCreateMeta");function Ni(){return{version:1,journalEpoch:`je_${qi().replace(/-/g,"")}`,createdAt:new Date().toISOString()}}o(Ni,"createJournalMeta");function Hi(e,n){let t=`${JSON.stringify(n)}
|
|
54
|
+
`,r=G.openSync(e,"a",384);try{G.writeFileSync(r,t,"utf8"),G.fsyncSync(r)}finally{G.closeSync(r)}}o(Hi,"appendRecord");function Cu(e,n){let t=`${e}.${process.pid}.${qi()}.tmp`,r=G.openSync(t,"wx",384);try{G.writeFileSync(r,`${JSON.stringify(n,null,2)}
|
|
55
|
+
`,"utf8"),G.fsyncSync(r)}finally{G.closeSync(r)}G.renameSync(t,e)}o(Cu,"writeJsonAtomic");function _u(e){return ku("sha256").update(Qt(e)).digest("hex")}o(_u,"digestCanonical");function Qt(e){if(e===null||typeof e=="boolean"||typeof e=="string")return JSON.stringify(e);if(typeof e=="number"){if(!Number.isFinite(e))throw new fe("invalid_operation","Operation contains a non-finite number.");return JSON.stringify(e)}if(Array.isArray(e))return`[${e.map(Qt).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)}:${Qt(n[r])}`).join(",")}}`}throw new fe("invalid_operation","Operation contains a non-JSON value.")}o(Qt,"canonicalJson");function Ou(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(Ou,"normalizeOperationError");function Mu(e){return Ki(e)?e.version===1&&typeof e.journalEpoch=="string"&&typeof e.createdAt=="string":!1}o(Mu,"isJournalMeta");function Lu(e){return Ki(e)?e.type==="operation"&&typeof e.operationId=="string"&&typeof e.journalEpoch=="string"&&typeof e.principalId=="string"&&typeof e.method=="string"&&typeof e.requestDigest=="string"&&ju(e.state)&&typeof e.updatedAt=="string":!1}o(Lu,"isOperationRecord");function ju(e){return e==="accepted"||e==="dispatched"||e==="applied"||e==="rejected"||e==="interrupted"||e==="unknown"}o(ju,"isOperationState");function Ki(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}o(Ki,"isRecord");async function Ui(e){be(e.paths);let n=jo();Fo(e.paths,n);let t=Yn(e,"starting");Ze(e.paths,t),we(e.paths,"info","Runtime daemon starting.",{runtimeId:e.runtime.identity.runtimeId,endpoint:e.endpoint.path});let r=cr(g=>{Fu(e.paths,g)}),i,s,c=Gt(),p=$i({rootDir:Xi.join(e.paths.rootDir,"control")}),f=wi({invocationStateFile:Xi.join(e.paths.rootDir,"host-tool-invocations.json")}),d;try{i=await zo({endpoint:e.endpoint,createDispatcher:o(g=>Oi({runtime:e.runtime,authToken:n,allowAgentRegistrationAdmin:!0,notify:g,runResults:c,controlJournal:p,reverseBridgeHub:f,durableHostToolInvocations:!0,requireOperationEnvelope:!0,logs:o(()=>({logFile:e.paths.logFile,entries:No(e.paths)}),"logs"),stop:o(()=>(we(e.paths,"info","Runtime daemon stop requested."),s?.(),{ok:!0}),"stop"),preflight:o(async()=>{let S=await e.runtime.status.preflight(),m=i?.connectionCount()??0,y=[...S.blockers];return m>1&&!y.includes("connected_clients")&&y.push("connected_clients"),{...S,clientCount:m,blockers:y,canStop:y.length===0}},"preflight")}),"createDispatcher")}),d=Yn(e,"ready"),Ze(e.paths,d),we(e.paths,"info","Runtime daemon ready.",{runtimeId:d.runtimeId,endpoint:d.endpoint})}catch(g){we(e.paths,"error","Runtime daemon failed to start.",{error:Se(g).message});let S=!0;try{await i?.close()}catch(m){S=!1,we(e.paths,"error","Runtime daemon transport cleanup failed.",{error:Se(m).message})}throw c.clear(),f.close(),r(),S?await Bi(e.paths,e.lock):Ze(e.paths,{...t,status:"unhealthy",lastError:"Runtime daemon transport cleanup failed."}),g}let u=!1,a,R=new Promise(g=>{a=g}),l=o(async()=>{if(u)return;u=!0;let g=[],S=!1,m=!1;try{try{Ze(e.paths,Yn(e,"stopping")),we(e.paths,"info","Runtime daemon stopping.")}catch(y){g.push(`state transition: ${Se(y).message}`)}try{await i?.close(),S=!0}catch(y){g.push(`transport close: ${Se(y).message}`)}f.close(),c.clear();try{await e.runtime.close(),m=!0}catch(y){g.push(`Runtime close: ${Se(y).message}`)}try{we(e.paths,"info","Runtime daemon stopped.")}catch(y){g.push(`stop log: ${Se(y).message}`)}if(r(),S&&m){let y=await Bi(e.paths,e.lock),v=ne(e.lock.file);!y&&v?.runtimeId===e.lock.owner.runtimeId&&v.pid===e.lock.owner.pid&&v.createdAt===e.lock.owner.createdAt&&g.push("owner release: the daemon still owns its profile lock")}else try{Ze(e.paths,{...Yn(e,"unhealthy"),lastError:g.join("; ")})}catch(y){g.push(`unhealthy state: ${Se(y).message}`)}if(g.length>0){try{we(e.paths,"error","Runtime daemon stopped with cleanup failures.",{failures:g})}catch(y){g.push(`failure log: ${Se(y).message}`)}throw new Error(`Runtime daemon cleanup failed: ${g.join("; ")}`)}}finally{r(),a?.()}},"closeHost");return s=o(()=>{setTimeout(()=>{l().catch(S=>{ee({source:"runtime.daemon.host",level:"error",message:"Runtime daemon shutdown failed.",detail:Se(S)})})},0).unref?.()},"requestStop"),{endpoint:e.endpoint,state:d,closed:R,unref(){i?.unref()},close:l}}o(Ui,"startRuntimeDaemonHost");async function Bi(e,n){for(let t=0;t<50;t+=1){try{if(Ho(e,n))return!0}catch(i){ee({source:"runtime.daemon.host",level:"warn",message:"Runtime daemon ownership release attempt failed.",detail:Se(i)})}let r=ne(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{we(e,"error","Runtime daemon ownership release timed out.")}catch(t){ee({source:"runtime.daemon.host",level:"error",message:"Runtime daemon ownership release timed out and could not be logged.",detail:Se(t)})}return!1}o(Bi,"releaseHostOwnership");function Fu(e,n){try{we(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(Fu,"appendRuntimeDiagnostic");function Yn(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}}o(Yn,"createHostState");function Se(e){return e instanceof Error?e:new Error(String(e))}o(Se,"normalizeHostError");async function Wi(e){let n=e.profile??"default",t=Hu(e.homeDir),r=Ce(t,n);Xn(r);let i=e.endpoint??rn(n,t),s={runtimeId:`rt_${Nu().replace(/-/g,"").slice(0,12)}`,pid:process.pid,createdAt:new Date().toISOString(),kind:"daemon"},c=await Ht(r,s,e.healthCheck);if(c.kind==="attach"){let p=Ne(c.state);return zi(r,p,e.connectTimeoutMs)}if(c.kind==="wait")return Ku(r,i,s,{...e,profile:n});if(c.kind==="unhealthy")throw new Error(`Runtime daemon is ${c.health}; refusing to take ownership.`);return Ji(r,i,s,c.lock,e)}o(Wi,"acquireRuntimeDaemonLease");function Hu(e){return $u.resolve(e??qu.homedir())}o(Hu,"resolveRuntimeDaemonHomeDir");async function Ku(e,n,t,r){let i=Date.now()+(r.startupTimeoutMs??5e3);for(;Date.now()<=i;){let s=await Ht(e,t,r.healthCheck);if(s.kind==="attach")return zi(e,Ne(s.state),r.connectTimeoutMs);if(s.kind==="claim")return Ji(e,n,t,s.lock,r);if(s.kind==="unhealthy")throw new Error(`Runtime daemon is ${s.health}; refusing to take ownership.`);await Bu(r.pollIntervalMs??100)}throw new Error(`Timed out waiting for runtime daemon profile "${r.profile}" to become ready.`)}o(Ku,"waitForDaemonLease");async function Ji(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 p=await Ui({runtime:s,paths:e,endpoint:n,lock:r});try{let f=await Ee(n,{connectTimeoutMs:i.connectTimeoutMs});return Xu(e,n,f,p)}catch(f){throw await p.close(),f}}catch(p){throw c||Bn(r),await s?.close(),p}}o(Ji,"createClaimedDaemonLease");async function zi(e,n,t){let r=await Ee(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(zi,"createAttachedLease");function Xu(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(Xu,"createOwnedLease");function Bu(e){return new Promise(n=>{setTimeout(n,e).unref?.()})}o(Bu,"delay");import{spawn as Uu}from"node:child_process";import{fileURLToPath as Wu}from"node:url";import Ju from"node:os";import _e from"node:path";async function Gi(e){let n=e.profile??"default",t=_e.resolve(e.homeDir??Ju.homedir()),r=Ce(t,n);Xn(r);let i=rn(r.profile,t);if(e.endpoint&&e.endpoint.path!==i.path)throw new Error("SDK daemon auto-start only supports the profile default endpoint; use attach-only mode for custom endpoints.");let s=await zn(r,e.healthCheck),c=Un(s);if(c==="healthy"&&s.state)return Vi(r,Ne(s.state),!1,e);if(c==="unhealthy"||c==="mismatch")throw new Error(`Runtime daemon is ${c}; refusing to start a competing owner.`);let p=await Vu({profile:r.profile,homeDir:t,defaultProvider:e.defaultProvider,defaultModel:e.defaultModel,sessionsDir:e.sessionsDir,permissionTimeoutMs:e.permissionTimeoutMs}),f=await zu(r,e),d=Ne(f.state);return Vi(r,d,f.state.pid===p.pid,e)}o(Gi,"acquireRuntimeDaemonProcessLease");async function Vi(e,n,t,r){let i=await Ee(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(Vi,"connectProcessLease");async function zu(e,n){let t=Date.now()+(n.startupTimeoutMs??6e4);for(;Date.now()<=t;){let r=await zn(e,n.healthCheck),i=Un(r);if(i==="healthy"&&r.state)return{...r,state:r.state};if(i==="mismatch")throw new Error("Runtime daemon endpoint identity does not match its persisted owner state.");await Yu(n.pollIntervalMs??100)}throw new Error(`Timed out waiting for runtime daemon profile "${e.profile}" to become ready.`)}o(zu,"waitForHealthyDaemon");async function Vu(e){let n=Gu(),t=[...n!==void 0?Qu(process.execArgv,n.endsWith(".ts")):[],...n!==void 0?[n]:[],"daemon","serve","--profile",e.profile,"--home",e.homeDir];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=Uu(process.execPath,t,{detached:!0,stdio:"ignore",windowsHide:!0,env:{...process.env,KODAX_DAEMON_SERVE:"1",KODAX_HOME:_e.join(e.homeDir,".kodax")}});return await new Promise((i,s)=>{r.once("spawn",i),r.once("error",s)}),r.unref(),{pid:r.pid}}o(Vu,"spawnRuntimeDaemonServeProcess");function Gu(){if(process.env.KODAX_BUNDLED==="true")return;let e=Wu(import.meta.url);if(e.endsWith(".ts"))return _e.resolve(_e.dirname(e),"..","kodax_cli.ts");let n=_e.dirname(e),t=_e.basename(n)==="chunks"?_e.dirname(n):n;return _e.join(t,"kodax_cli.js")}o(Gu,"resolveDaemonCliEntry");function Qu(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(Qu,"daemonServeExecArgv");function Yu(e){return new Promise(n=>setTimeout(n,e))}o(Yu,"delay");import{Worker as Zu}from"node:worker_threads";import{existsSync as ec}from"node:fs";import{basename as nc,dirname as Yt,join as Qi}from"node:path";import{fileURLToPath as Yi,pathToFileURL as Zi}from"node:url";function es(e,n={}){let t=tc(),r=new Zu(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,p=!1,f=o(a=>{for(let R of i.values())R.reject(a);i.clear()},"rejectPending"),d=o(a=>{p||(p=!0,f(a),s.clear())},"markClosed");return r.on("message",a=>{if(Rn(a)){for(let g of s)g(a);return}if(!Ve(a)&&!Ge(a)||!a.id)return;let R=i.get(a.id);if(!R)return;if(i.delete(a.id),Ve(a)){R.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),R.reject(l)}),r.on("error",a=>d(a)),r.on("exit",a=>d(new Error(`Runtime Worker exited with code ${a}.`))),{transport:{request(a,R,l){if(p)return Promise.reject(new Error("Runtime Worker transport is closed."));let g=`worker_${++c}`;return new Promise((S,m)=>{i.set(g,{resolve:S,reject:m});try{r.postMessage(Nn(g,a,R,l))}catch(y){i.delete(g),m(y instanceof Error?y:new Error(String(y)))}})},subscribe(a){return p?{close(){}}:(s.add(a),{close:o(()=>s.delete(a),"close")})},async close(){p||(d(new Error("Runtime Worker transport closed.")),await r.terminate())}},threadId:r.threadId,async terminate(){p||d(new Error("Runtime Worker terminated.")),await r.terminate()}}}o(es,"createRuntimeWorkerTransport");function tc(){if(import.meta.url.endsWith(".ts")){let t=new URL("../../dist/runtime-worker.js",import.meta.url);return ec(Yi(t))?t:new URL("./entry.ts",import.meta.url)}if(process.env.KODAX_BUNDLED==="true")return Zi(Qi(Yt(process.execPath),"runtime-worker.js"));let e=Yt(Yi(import.meta.url)),n=nc(e)==="chunks"?Yt(e):e;return Zi(Qi(n,"runtime-worker.js"))}o(tc,"resolveRuntimeWorkerUrl");function ff(e={}){let n=L.resolve(e.homeDir??An.homedir()),t=Ce(n,e.profile??"default"),r=`inline_${Re().replace(/-/g,"")}`,i=Mo(t,{runtimeId:r,pid:process.pid,createdAt:new Date().toISOString(),kind:"inline"},e.enableRollback===!0),s=!1;return{profile:t.profile,ownerId:r,close(){s||(s=!0,Bn(i))}}}o(ff,"acquireKodaXInlineOwner");function gf(e){let n=Ce(L.resolve(e.homeDir??An.homedir()),e.profile??"default");if(ne(n.lockFile)!==void 0)throw new Error("Cannot change Runtime owner mode while an owner lock exists.");return Oo(n,e.mode,e.expectedRevision)}o(gf,"setKodaXRuntimeOwnerMode");var oc=["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"],ic=new Set(["code","cli","repl","acp","a2a","sdk","ide","space-desktop"]),nt=class extends Error{constructor(t){super(`Runtime continuation target is already terminal: ${t}`);this.afterRunId=t;this.name="RuntimeContinuationStaleError"}afterRunId;static{o(this,"RuntimeContinuationStaleError")}},ns=5*6e4,tt=1e4,rt=1e3,ts=256*1024*1024,sc=64*1024,ac=10,ks=16*1024*1024,dc=ks/2,uc=128*1024,cc=8,rs=1024,lc=new Set(["assistant.delta","thinking.delta","tool.progress","run.progress"]),mc=new Set(["tool_call","tool_describe"]),pc=new Set(["image","file","video"]);async function fc(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?gc(e):Is({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 Rc(e);ir({hardDispose:!1,externalAgents:e.externalAgents!==void 0},e.requirements);let n={runtimeId:e.daemonHostRuntimeId??`rt_${Re().replace(/-/g,"").slice(0,12)}`,mode:"embedded",profile:e.profile??"default",startedAt:new Date().toISOString(),version:"0.7.69",isolation:"inline"},t=Kc(e),r=Fr(t?{sessionsDir:t}:void 0),i=al(n.profile,r,e.sharedDaemonHost===!0),s=Rl(e);As(s);let c=Hc(e),p=e.externalAgents?await fr({factories:e.externalAgents.factories,policy:e.externalAgents.policy,credentialBroker:e.externalAgents.credentialBroker,artifactPolicy:e.externalAgents.artifactPolicy,store:Hr(L.join(c.runtimeDir,"agents"))}):void 0,f=jc(c),d=Zc(f,e.permissionTimeoutMs??ns,c),u=Gc(f,e.permissionTimeoutMs??ns),a=Dc(),R=Ic(),l=new Map,g=new Map,S=[...Fl(c.loadRunStatuses())].sort(sr);for(let C of S){let F=C.sessionOrder??(g.get(C.sessionId)??0)+1;g.set(C.sessionId,Math.max(g.get(C.sessionId)??0,F));let N=zc({...C,acceptedAt:C.acceptedAt??C.startedAt,sessionOrder:F},f,c);l.set(N.runId,Jc(N))}let m=!1,y=o(()=>{if(m)throw new Error("KodaX runtime is closed")},"ensureOpen"),v=kc({bus:f,defaultModel:e.defaultModel,defaultProvider:e.defaultProvider,ensureOpen:y,isClosed:o(()=>m,"isClosed"),artifacts:a,permissions:d,userInputs:u,enableSharedInteractions:e.sharedDaemonHost===!0,persistence:c,runs:l,sessionManager:r,sessionAdmission:i,agentPlane:p,defaultAgentContext:e.externalAgents?.defaultContext}),D=vc(n,r,f,c,y,C=>[...l.values()].some(F=>F.sessionId===C&&an(F.phase)),(C,F)=>{for(let N of l.values())N.sessionId===C&&an(N.phase)&&(N.permissionMode=F)},C=>v.list({sessionId:C}),C=>d.service.listPending({sessionId:C}),i),h=e.homeDir?L.join(L.resolve(e.homeDir),".kodax"):vr,k=L.join(e.homeDir?L.resolve(e.homeDir):An.homedir(),"kodax_a2a_server_workspace",encodeURIComponent(n.profile)),x=uo({configHome:h,managedWorkspaceRoot:k,defaultProvider:e.defaultProvider,defaultModel:e.defaultModel,runs:v,sessions:D,createSkillScriptRunner:o(C=>wo({...C,snapshotRoot:L.join(k,"bindings")}),"createSkillScriptRunner")});return{identity:n,capabilities:{hardDispose:!1,externalAgents:e.externalAgents!==void 0,afterTurnInput:{version:1}},sessions:D,runs:v,events:f.service,permissions:d.service,userInputs:u.service,credentials:Gl(),hostTools:Ql(),operations:{async get(){throw new Error("Embedded Runtime does not persist daemon operation receipts.")}},workflows:R,config:bc(y,s),catalog:Ec(y,s),mcp:Pc(y,s),artifacts:a.service,status:Oc({identity:n,permissions:d,userInputs:u,runs:l,sessionManager:r,sessionAdmission:i,workflows:R}),diagnostics:Mc(f.service),admin:Cc(p),agents:Ac(p,x),agentTasks:_c(p),async close(){m||(m=!0,v.closeAll("runtime closed"),d.rejectAll("runtime closed"),u.rejectAll("runtime closed"),await p?.close(),f.close())}}}o(fc,"createKodaXRuntime");async function gc(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?bs(e.daemonEndpoint):void 0,r=await Wi({homeDir:e.homeDir,profile:e.profile,endpoint:t,connectTimeoutMs:e.daemonConnectTimeoutMs,startupTimeoutMs:e.daemonStartupTimeoutMs,createRuntime:o(i=>fc({mode:"embedded",homeDir:e.homeDir,profile:e.profile,sessionsDir:e.sessionsDir,defaultProvider:e.defaultProvider,defaultModel:e.defaultModel,permissionTimeoutMs:e.permissionTimeoutMs,sharedDaemonHost:!0,daemonHostRuntimeId:i,clientInfo:e.clientInfo,capabilities:e.capabilities,requirements:e.requirements,externalAgents:n}),"createRuntime")});if(!r.ownsHost)throw await r.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 i=await Is({profile:e.profile,transport:r.transport,daemonToken:e.daemonToken??hn(r.paths),clientInfo:e.clientInfo,capabilities:e.capabilities,requirements:{...e.requirements,externalAgents:!0}}),s=!1;return{...i,identity:{...i.identity,isolation:"inline"},async close(){s||(s=!0,await i.close(),r.ownsHost?await r.shutdown():await r.close())}}}catch(i){throw await r.close(),r.ownsHost&&await r.shutdown(),i}}o(gc,"createInProcessExternalAgentDaemon");async function Rc(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=es({homeDir:e.homeDir,profile:e.profile,sessionsDir:e.sessionsDir,defaultProvider:e.defaultProvider,defaultModel:e.defaultModel,permissionTimeoutMs:e.permissionTimeoutMs},e.worker);try{let r=cn(await t.transport.request("initialize",{profile:e.profile??"default",...e.clientInfo!==void 0?{clientInfo:e.clientInfo}:{},...e.capabilities!==void 0?{capabilities:e.capabilities}:{}})),i=Cs(r.identity);ir(r.capabilities,{...e.requirements,hardDispose:!0});let s=Ct({identity:{...i,mode:"embedded",isolation:"worker",workerThreadId:t.threadId},transport:t.transport,capabilities:cn(r.capabilities)}),c=!1;return{...s,async close(){if(!c){c=!0;try{await yc(t.transport.request("runtime.shutdown"),n)}finally{await t.terminate()}}}}}catch(r){throw await t.terminate(),r}}o(Rc,"createWorkerHostedKodaXRuntime");function ir(e,n){if(!n?.hardDispose&&!n?.externalAgents&&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)return;let t=cn(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&&os(t,"operationDeduplication",n.operationDeduplication);let r=[["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]];for(let[i,s]of r)s!==void 0&&os(t,i,s)}o(ir,"assertRuntimeCapabilities");function os(e,n,t){let r=e[n];if(!X(r)||r.version!==t)throw new Error(`Runtime does not support the required ${n} capability.`)}o(os,"assertVersionedRuntimeCapability");async function yc(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(yc,"settleWithin");async function Is(e={}){is("daemonStartupTimeoutMs",e.daemonStartupTimeoutMs),is("daemonConnectTimeoutMs",e.daemonConnectTimeoutMs);let n=e.endpoint!==void 0?bs(e.endpoint):void 0,t=e.transport===void 0&&e.autoStart===!0?await Gi({homeDir:e.homeDir,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,r=n??t?.endpoint??(e.transport===void 0?rn(e.profile??"default",L.resolve(e.homeDir??An.homedir())):void 0),i=e.transport??t?.transport??(r!==void 0?await Ee(r,{connectTimeoutMs:e.daemonConnectTimeoutMs}):void 0);if(!i)throw new Error("connectKodaXRuntime requires a daemon transport, endpoint, or autoStart: true.");let s=Sc(e),c,p={},f,d;try{let a={name:e.clientInfo?.name??"kodax-sdk",instanceId:e.clientInfo?.instanceId??`sdk_${Re().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}:{}},R=cn(await i.request("initialize",{profile:e.profile??"default",autoStart:e.autoStart===!0,...s!==void 0?{token:s}:{},clientInfo:a,capabilities:{...e.capabilities,operationDeduplication:!0},...r!==void 0?{endpoint:r.path}:{}}));c=Cs(R.identity),p=R.capabilities===void 0?{}:cn(R.capabilities),f=typeof R.journalEpoch=="string"?R.journalEpoch:void 0,d=wc(R.grantedScopes),ir(p,e.requirements);let l=e.profile??"default";if(c.profile!==l)throw new Error(`Runtime daemon profile mismatch: expected ${l}, got ${c.profile}`)}catch(a){throw await i.close?.(),await t?.close(),a}let u=Ct({identity:{...c,mode:"daemon",isolation:"process"},transport:i,capabilities:p,...f!==void 0?{journalEpoch:f}:{},...d!==void 0?{grantedScopes:d}:{}});return t?{...u,async close(){await u.close(),await t.close()}}:u}o(Is,"connectKodaXRuntime");function is(e,n){if(!(n===void 0||Number.isFinite(n)&&n>0))throw new Error(`${e} must be a positive finite number.`)}o(is,"assertPositiveRuntimeTimeout");function wc(e){if(!Array.isArray(e))return;let n=e.filter(t=>typeof t=="string"&&hc(t));return n.length===e.length?n:void 0}o(wc,"parseRuntimeGrantedScopes");function hc(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(hc,"isRuntimeGrantedScope");function Sc(e){if(e.daemonToken!==void 0)return e.daemonToken;if(e.transport!==void 0&&e.autoStart!==!0)return;let n=L.resolve(e.homeDir??An.homedir());return hn(Ce(n,e.profile??"default"))}o(Sc,"resolveConnectDaemonToken");function bs(e){return typeof e!="string"?e:{kind:process.platform==="win32"||e.startsWith("\\\\.\\pipe\\")?"pipe":"unix",path:e}}o(bs,"normalizeRuntimeDaemonEndpoint");function vc(e,n,t,r,i,s,c,p,f,d){let u=new Set,a=o((l,g,S)=>({id:l,title:g.title,...g.gitRoot?{gitRoot:g.gitRoot}:{},...g.runtimeInfo?.workspaceRoot?{workspaceRoot:g.runtimeInfo.workspaceRoot}:{},...g.runtimeInfo?.surface?{surface:g.runtimeInfo.surface}:{},...g.runtimeInfo?.profileId?{profileId:g.runtimeInfo.profileId}:{},...S?{createdAt:S}:{}}),"toRuntimeSession"),R=o(async l=>{for(let g=0;g<cc;g+=1){let S=t.currentSessionSeq(l),m=await d.loadRequired(l),[y,v,D]=await Promise.all([n.loadFullTranscript(l),p(l),f(l)]),h=r.loadSessionSettingsVersioned(l),k=t.currentSessionSeq(l);if(S===k)return{runtimeId:e.runtimeId,cursor:k,transcriptRevision:ul(y),session:a(l,m),transcript:y,settings:h,runs:v,pendingPermissions:D,live:t.projectSession(l)}}throw zl(`Session ${l} changed continuously while taking a snapshot`)},"captureObservationSnapshot");return{async create(l={}){i(),d.assertCreate(l);let g=l.sessionId??await mt();if(u.has(g))throw Object.assign(new Error(`Session already exists: ${g}`),{code:"conflict"});u.add(g);try{if(await n.loadSession(g)!==null)throw Object.assign(new Error(`Session already exists: ${g}`),{code:"conflict"});let S=l.projectPath?L.resolve(l.projectPath):void 0,m=l.gitRoot?L.resolve(l.gitRoot):S,y=nl(l,S,m),v={messages:[],title:l.title??"",gitRoot:m??"",...l.tag!==void 0?{tag:l.tag}:{},...y!==void 0?{runtimeInfo:y}:{},scope:"user"};await n.storage.save(g,v);let D=a(g,v,new Date().toISOString());return t.emit("session.created",D,{sessionId:g,runId:g}),D}finally{u.delete(g)}},async load(l){i();let g=await d.loadRequired(l),S=a(l,g);return t.emit("session.loaded",S,{sessionId:l,runId:l}),S},async list(l){return i(),d.assertFilter(l),(await n.listSessions(l)).filter(d.admitsSummary).map(Ds)},async transcript(l){return i(),await d.loadRequired(l),n.loadFullTranscript(l)},async observe(l,g){i();let S=[],m,y=!1,v=o(h=>{if(!(y||m!==void 0&&h.seq<=m))try{g(h)}catch(k){ee({source:"runtime.sessions.observe",level:"error",message:`Session observation listener failed for ${h.type}`,detail:de(k)})}},"deliver"),D=t.service.subscribe({sessionId:l},h=>{m===void 0?S.push(h):v(h)});try{let h=await R(l);m=h.cursor;for(let k of S.splice(0).sort((x,O)=>x.seq-O.seq))v(k);return{snapshot:h,close(){y||(y=!0,S.length=0,D.close())}}}catch(h){throw y=!0,D.close(),h}},async fork(l){i();let g=await d.loadRequired(l.sessionId),S=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(!S){let y=l.newSessionId??await mt(),v={...g,title:l.title??g.title,messages:g.messages.map(Zl)};await n.storage.save(y,v);let D=a(y,v);return t.emit("session.created",D,{sessionId:y,runId:y}),D}let m=a(S.sessionId,S.data);return t.emit("session.created",m,{sessionId:S.sessionId,runId:S.sessionId}),m},async getSettingsVersioned(l){return i(),await d.loadRequired(l),r.loadSessionSettingsVersioned(l)},async getSettings(l){return(await this.getSettingsVersioned(l)).value},async updateSettings(l,g){let S=await this.getSettingsVersioned(l);return(await this.updateSettingsVersioned(l,g,{expectedRevision:S.revision})).value},async updateSettingsVersioned(l,g,S){i();let m=await d.loadRequired(l),y=r.loadSessionSettingsVersioned(l);if(y.revision!==S.expectedRevision)throw ar(`Session settings revision ${S.expectedRevision} is stale; current revision is ${y.revision}`,y.revision);let v=ml(y.value,g);Ts(m,v);let D={revision:y.revision+1,value:v};return r.saveSessionSettingsVersioned(l,D),g.permissionMode!==void 0&&c(l,v.permissionMode),t.emit("session.settings.updated",{sessionId:l,revision:D.revision,settings:v,patch:g},{sessionId:l,runId:l}),D},async appendNotice(l){i(),await d.loadRequired(l.sessionId);let g=await n.appendClientNotice(l.sessionId,{content:l.content,...l.source!==void 0?{source:l.source}:{}});return g&&t.emit("session.notice.appended",{sessionId:l.sessionId,entry:g},{sessionId:l.sessionId,runId:l.sessionId}),g},async rewind(l){i(),await d.loadRequired(l.sessionId),rr(l.sessionId,s);let g=await n.rewindSession(l.sessionId,{...l.selector!==void 0?{selector:l.selector}:{}});if(!g)return null;let S=a(l.sessionId,g);return t.emit("session.rewound",{sessionId:l.sessionId,selector:l.selector,session:S},{sessionId:l.sessionId,runId:l.sessionId}),S},async setActiveEntry(l){i(),await d.loadRequired(l.sessionId),rr(l.sessionId,s);let g=await n.setActiveEntry(l.sessionId,l.entryId);if(!g)return null;let S=a(l.sessionId,g);return t.emit("session.active_entry.updated",{sessionId:l.sessionId,entryId:l.entryId,session:S},{sessionId:l.sessionId,runId:l.sessionId}),S},async compact(l){i(),await d.loadRequired(l.sessionId),rr(l.sessionId,s);let g=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}:{}}),S=await n.loadSession(l.sessionId),m=S?a(l.sessionId,S):void 0;return t.emit("context.compaction.finished",{sessionId:l.sessionId,compacted:g.compacted,tokensBefore:g.tokensBefore,tokensAfter:g.tokensAfter,...g.reason!==void 0?{reason:g.reason}:{}},{sessionId:l.sessionId,runId:l.sessionId}),g.compacted&&t.emit("session.compacted",{sessionId:l.sessionId,result:{compacted:g.compacted,tokensBefore:g.tokensBefore,tokensAfter:g.tokensAfter},...m!==void 0?{session:m}:{}},{sessionId:l.sessionId,runId:l.sessionId}),{...g,...m!==void 0?{session:m}:{}}},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 g=await n.deleteSession(l);Yl(l,g)}}}o(vc,"createRuntimeSessionService");function kc(e){let n=new Map,t=new Map,r=new Map,i=new Map;for(let m of e.runs.values())r.set(m.sessionId,Math.max(r.get(m.sessionId)??0,m.sessionOrder));let s=o(m=>{let y=e.runs.get(m);if(!y)throw new Error(`Runtime run not found: ${m}`);return y},"getRecord"),c=o(m=>{n.get(m.sessionId)===m.runId&&n.delete(m.sessionId)},"releaseActiveRun"),p=o((m,y)=>{m.start?.resolve(y),m.start=void 0,delete m.providerCredential},"resolveRunStart"),f=o((m,y)=>(e.permissions.rejectForRun(m.runId,"runtime run ended"),e.userInputs.rejectForRun(m.runId,"runtime run ended"),p(m,y),c(m),Nl(e.runs),a(m.sessionId),y),"finishRun"),d=o((m,y,v)=>{let D=m.phase==="queued";m.phase==="queued"&&Lc(t,m),m.running?.abort(new Error(y)),m.abortController?.abort(new Error(y)),e.permissions.rejectForRun(m.runId,y),e.userInputs.rejectForRun(m.runId,y),xn(e.bus,e.persistence,m,"cancelled",{code:"cancelled",effectOutcome:D?"none":"unknown",message:y});let h={runId:m.runId,sessionId:m.sessionId,phase:m.phase};return p(m,h),c(m),v&&!e.isClosed()&&a(m.sessionId),h},"cancelRun"),u=o(m=>{if(!m.start||e.isClosed()){d(m,"runtime closed",!1);return}m.phase="running",m.queuedAt=void 0,m.runningAt=new Date().toISOString(),n.set(m.sessionId,m.runId),un(e.bus,e.persistence,m,me(m)),e.bus.emit("run.started",me(m),{sessionId:m.sessionId,runId:m.runId});let y=el({bus:e.bus,original:m.start.options.events,permissions:e.permissions,userInputs:e.userInputs,enableSharedInteractions:e.enableSharedInteractions,record:m}),v=Tc({agentPlane:e.agentPlane,events:y,model:m.model,options:m.start.options,provider:m.provider,record:m,sessionManager:e.sessionManager});if(e.bus.emit("config.effective",{sessionId:m.sessionId,runId:m.runId,provider:m.provider,...m.model!==void 0?{model:m.model}:{},...v.effort!==void 0?{effort:v.effort}:{},...v.thinking!==void 0?{thinking:v.thinking}:{},...v.reasoningMode!==void 0?{reasoningMode:v.reasoningMode}:{},...v.agentMode!==void 0?{agentMode:v.agentMode}:{},...m.permissionMode!==void 0?{permissionMode:m.permissionMode}:{},...m.autoModeEngine!==void 0?{autoModeEngine:m.autoModeEngine}:{},...v.context?.executionCwd!==void 0?{executionCwd:v.context.executionCwd}:{}},{sessionId:m.sessionId,runId:m.runId,...m.turnId!==void 0?{turnId:m.turnId}:{}}),m.mode==="managed_task"){let k=new AbortController;m.abortController=k;let x=v.abortSignal;x?.aborted?k.abort(x.reason):x?.addEventListener("abort",()=>{k.abort(x.reason)},{once:!0});let O=o(()=>yr({...v,abortSignal:k.signal},m.start.prompt),"managedOperation");(m.providerCredential!==void 0?ut(m.provider,m.providerCredential,O):O()).then(F=>{let N=m.terminalEmitted?m.phase:F.interrupted?"interrupted":F.success?"completed":"failed";return xn(e.bus,e.persistence,m,N),{runId:m.runId,sessionId:m.sessionId,phase:m.phase,result:F}}).catch(F=>{let N=hs(F,m),b=ws(F),T=m.terminalEmitted?m.phase:b.phase;return m.terminalEmitted||(m.error=N.message),xn(e.bus,e.persistence,m,T,b.terminal),{runId:m.runId,sessionId:m.sessionId,phase:m.phase,error:N}}).then(F=>f(m,F));return}let D=o(()=>Rr(v,m.start.prompt),"codingOperation"),h=m.providerCredential!==void 0?ut(m.provider,m.providerCredential,D):D();m.running=h,h.result.then(k=>{let x=m.terminalEmitted?m.phase:k.interrupted?"interrupted":k.success?"completed":"failed";return xn(e.bus,e.persistence,m,x),{runId:m.runId,sessionId:m.sessionId,phase:m.phase,result:k}}).catch(k=>{let x=hs(k,m),O=ws(k),C=m.terminalEmitted?m.phase:O.phase;return m.terminalEmitted||(m.error=x.message),xn(e.bus,e.persistence,m,C,O.terminal),{runId:m.runId,sessionId:m.sessionId,phase:m.phase,error:x}}).then(k=>f(m,k))},"startRecord"),a=o(m=>{let y=t.get(m);if(!y||y.length===0||n.has(m))return;let v=y.shift();if(y.length===0&&t.delete(m),!v)return;let D=e.runs.get(v);if(!D||D.phase!=="queued"){a(m);return}u(D)},"drainNext"),R=o(m=>{let y=t.get(m.sessionId)??[];y.push(m.runId),t.set(m.sessionId,y),un(e.bus,e.persistence,m,me(m)),e.bus.emit("run.queued",me(m),{sessionId:m.sessionId,runId:m.runId})},"enqueue"),l=o(m=>{let y=me(m);un(e.bus,e.persistence,m,y),e.bus.emit("run.updated",y,{sessionId:m.sessionId,runId:m.runId,...m.turnId!==void 0?{turnId:m.turnId}:{}})},"publishRunUpdate"),g=o(async m=>{e.ensureOpen();let y=tl(m,e.artifacts),v=await e.sessionAdmission.loadRequired(m.sessionId),D=e.persistence.loadSessionSettings(m.sessionId);Ts(v,D);let h=sl(m.options??{},D,y.inputArtifacts),k=h.provider??e.defaultProvider;if(!k)throw new Error("runtime.runs.start requires input.options.provider or runtime defaultProvider");let x=m;if(x.providerCredential!==void 0&&x.providerCredentialProvider!==void 0&&x.providerCredentialProvider!==k)throw Vl(`Credential lease is bound to ${x.providerCredentialProvider}, not ${k}.`);let O=h.modelOverride??h.model??e.defaultModel,C=m.trustedRunId??Ll();if(e.runs.has(C))throw ar(`Runtime run already exists: ${C}`,0);let F=new Date().toISOString(),N=o(()=>{},"resolveResult"),b=new Promise(ve=>{N=ve}),T=m.requiredAfterRunId,P=T===void 0?void 0:s(T);if(P!==void 0){if(P.sessionId!==m.sessionId)throw new Error(`Runtime continuation target ${T} does not belong to session ${m.sessionId}`);if(!an(P.phase)&&P.phase!=="queued")throw new nt(P.runId)}let $=(r.get(m.sessionId)??0)+1;r.set(m.sessionId,$);let J=P!==void 0||n.has(m.sessionId),V={runId:C,sessionId:m.sessionId,phase:J?"queued":"running",startedAt:F,sessionOrder:$,...J?{queuedAt:F}:{},provider:k,...O!==void 0?{model:O}:{},...m.permissionBroker!==void 0?{permissionBroker:m.permissionBroker}:{},...D.permissionMode!==void 0?{permissionMode:D.permissionMode}:{},...D.autoModeEngine!==void 0?{autoModeEngine:D.autoModeEngine}:{},...h.reasoningMode!==void 0?{reasoning:h.reasoningMode}:{},mode:m.mode??"coding",...m.providerCredential!==void 0?{providerCredential:m.providerCredential}:{},hadProviderCredential:m.providerCredential!==void 0,...m.origin!==void 0?{origin:m.origin}:{},...T!==void 0?{continuation:{inputId:C,afterRunId:T,delivery:"after_turn",contentPreview:cl(y.prompt)}}:{},...m.agentContext??e.defaultAgentContext?{agentContext:m.agentContext??e.defaultAgentContext}:{},result:b,start:{prompt:y.prompt,inputArtifacts:y.inputArtifacts,options:h,resolve:N},terminalEmitted:!1};return e.runs.set(C,V),J?R(V):u(V),{runId:C,sessionId:m.sessionId,get turnId(){return V.turnId},result:b}},"startRun"),S=o(m=>{let v=(i.get(m.sessionId)??Promise.resolve()).then(()=>g(m)),D=v.then(()=>{},()=>{});return i.set(m.sessionId,D),D.then(()=>{i.get(m.sessionId)===D&&i.delete(m.sessionId)}),v},"start");return{start:S,async submitInput(m){e.ensureOpen(),await e.sessionAdmission.loadRequired(m.sessionId);let y=s(m.afterRunId);if(y.sessionId!==m.sessionId)throw new Error(`Runtime continuation target ${m.afterRunId} does not belong to session ${m.sessionId}`);if(!an(y.phase)&&y.phase!=="queued")return{accepted:!1,delivery:m.delivery,sessionId:m.sessionId,afterRunId:m.afterRunId,reason:"stale_run"};if(m.delivery==="interrupt")return{accepted:!1,delivery:m.delivery,sessionId:m.sessionId,afterRunId:m.afterRunId,reason:"unsupported_capability"};let v=m,D;try{D=await S({sessionId:m.sessionId,input:m.input,...v.options!==void 0?{options:v.options}:{},...v.providerCredential!==void 0?{providerCredential:v.providerCredential}:{},...v.providerCredentialProvider!==void 0?{providerCredentialProvider:v.providerCredentialProvider}:{},...v.origin!==void 0?{origin:v.origin}:{},...v.trustedRunId!==void 0?{trustedRunId:v.trustedRunId}:{},requiredAfterRunId:m.afterRunId})}catch(k){if(!(k instanceof nt))throw k;return{accepted:!1,delivery:m.delivery,sessionId:m.sessionId,afterRunId:m.afterRunId,reason:"stale_run"}}let h=s(D.runId).sessionOrder;return{accepted:!0,delivery:m.delivery,runId:D.runId,sessionId:m.sessionId,afterRunId:m.afterRunId,sessionOrder:h}},async await(m){e.ensureOpen();let y=e.runs.get(m);if(y)return await e.sessionAdmission.assertRunAccess(y.sessionId),y.result;let v=e.persistence.loadRunStatus(m);if(v)return await e.sessionAdmission.assertRunAccess(v.sessionId),_s(v);throw new Error(`Runtime run not found: ${m}`)},async get(m){e.ensureOpen();let y=e.runs.get(m);if(y)return await e.sessionAdmission.assertRunAccess(y.sessionId),me(y);let v=e.persistence.loadRunStatus(m);if(v)return await e.sessionAdmission.assertRunAccess(v.sessionId),v;throw new Error(`Runtime run not found: ${m}`)},async list(m){e.ensureOpen(),m?.sessionId!==void 0&&await e.sessionAdmission.assertRunAccess(m.sessionId);let y=[...e.runs.values()].filter(v=>ql(v,m)).map(me);return or(y,e.sessionAdmission)},async abort(m){e.ensureOpen();let y=s(m);await e.sessionAdmission.assertRunAccess(y.sessionId),(y.phase==="queued"||an(y.phase))&&d(y,"runtime run aborted",!0)},async setModel(m,y){e.ensureOpen();let v=s(m);await e.sessionAdmission.assertRunAccess(v.sessionId),v.model=y,v.running?.setModel(y),l(v)},async setProvider(m,y){e.ensureOpen();let v=s(m);await e.sessionAdmission.assertRunAccess(v.sessionId),v.provider=y,v.running?.setProvider(y),l(v)},async setReasoning(m,y){e.ensureOpen();let v=s(m);await e.sessionAdmission.assertRunAccess(v.sessionId),v.reasoning=y,v.running?.setReasoning(y),l(v)},closeAll(m){for(let y of e.runs.values())(y.phase==="queued"||an(y.phase))&&d(y,m,!1);n.clear(),t.clear()}}}o(kc,"createRuntimeRunService");function Ic(){let e=pr();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&&Hl(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(Ic,"createRuntimeWorkflowService");function bc(e,n){return{async read(){return e(),dn(ge(n))},async patch(t){return e(),fl(t,"runtime.config.patch"),yl(n,gl(t)),dn(ge(n))},async reload(){return e(),n!==void 0?(As(n),{ok:!0,config:dn(ge(n))}):{ok:!0,config:dn(Ir())}}}}o(bc,"createRuntimeConfigService");function Ec(e,n){return{async providers(){return e(),ft()},async models(t){return e(),Dl(ft(),t)},async commands(t){return e(),ys(t)},async resolveCommand(t){e();let r=t.name.trim().toLowerCase();return ys(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 ct(t?.projectRoot);return(t?.userInvocableOnly===!0?r.listUserInvocable():r.list()).map(_l)},async describeSkill(t){e();let r=await ct(t.projectRoot);return r.has(t.name)?Ol(await r.loadFull(t.name)):null},async customProviders(){return e(),wl(n)},async upsertCustomProvider(t){return e(),hl(n,t)},async deleteCustomProvider(t){return e(),Sl(n,t)},async extensions(){e();let t=Be();if(!t)return{active:!1,extensions:[]};let r=t.getDiagnostics();return{active:!0,extensions:r.loadedExtensions,diagnostics:r}},async reloadExtensions(){e();let t=Be();return t?(await t.reloadExtensions({continueOnError:!0}),{ok:!0,active:!0,diagnostics:t.getDiagnostics()}):{ok:!0,active:!1}}}}o(Ec,"createRuntimeCatalogService");function Pc(e,n){return{async listServers(){return e(),tr(n)},async getServer(t){return e(),kl(n,t)},async validateServer(t,r){e();try{return gt(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(),Il(n,t,r)},async deleteServer(t){return e(),bl(n,t)},async reloadServers(){e();let t=lt(tr(n));try{return{ok:!0,servers:t.listServers()}}finally{await t.dispose()}},async listTools(t){e();let r=tr(n),i=t?.server!==void 0?[t.server]:Object.keys(r),s=lt(r);try{let c=[];for(let p of i)c.push(await s.listTools(p,{forceRefresh:t?.forceRefresh===!0}));return c}finally{await s.dispose()}}}}o(Pc,"createRuntimeMcpService");function Dc(){let e=new Map;return{service:{async create(r){if(!il(r.kind))throw new Error(`Unsupported runtime artifact kind: ${String(r.kind)}`);let i=L.resolve(r.path),s;try{s=await _.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>ts)throw new Error(`Runtime artifact exceeds the ${ts}-byte limit: ${i}`);let c=`art_${Re().replace(/-/g,"").slice(0,12)}`,p={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,p),p},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(Dc,"createRuntimeArtifactStore");function Tc(e){let{agentPlane:n,events:t,model:r,options:i,provider:s,record:c,sessionManager:p}=e;return{...i,provider:s,...r!==void 0?{modelOverride:r}:{},session:{...i.session??{},id:c.sessionId,storage:p.storage},events:t,...n&&c.agentContext?{context:{...i.context??{},agentExecutorPlane:{plane:n,context:c.agentContext}}}:{}}}o(Tc,"buildRunOptions");function et(e){if(e.actorId.trim().length===0)throw new Error("Runtime agent context actorId must not be empty.")}o(et,"assertRuntimeAgentContext");function xc(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(xc,"localAgentReasons");function Zt(e){return et(e),ln(e).map(n=>{let t=xc(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(Zt,"runtimeLocalListings");function Ac(e,n){return{execution:n,enabled:e!==void 0,async listDispatchable(t){et(t);let r=ln(t);return e?e.listDispatchable(t,r):Zt(t)},async describe(t,r){et(r);let i=ln(r);return e?e.describe(t,r,i):Zt(r).find(s=>s.descriptor.agentId===t)},async preflight(t){et(t.query);let r=ln(t.query);if(e)return e.preflight(t,r);let i=Zt(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(Ac,"createRuntimeAgentService");function De(){return new Error("Runtime external agent executor plane is not enabled.")}o(De,"externalAgentsDisabled");function Cc(e){return{agentRegistrations:e?.registrations??{async list(){return[]},async upsert(){throw De()},async remove(){throw De()}}}}o(Cc,"createRuntimeAdminService");function _c(e){return e?e.tasks:{async start(){throw De()},async list(){return[]},async get(){throw De()},async events(){throw De()},async wait(){throw De()},async sendInput(){throw De()},async cancel(){throw De()},async reconcile(){throw De()}}}o(_c,"createRuntimeAgentTaskService");function Oc(e){return{async snapshot(){let n=await or([...e.runs.values()].map(me),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(Ds),runs:n,pendingPermissions:await e.permissions.service.listPending(),workflows:await e.workflows.list({})}},async preflight(){let n=await or([...e.runs.values()].map(me),e.sessionAdmission),t=n.filter(p=>p.phase==="running"||p.phase==="waiting_permission"||p.phase==="waiting_user_input"),r=n.filter(p=>p.phase==="queued"),i=await e.permissions.service.listPending(),s=await e.userInputs.service.listPending(),c=[];return t.length>0&&c.push("active_runs"),r.length>0&&c.push("queued_runs"),(i.length>0||s.length>0)&&c.push("pending_interactions"),{runtimeId:e.identity.runtimeId,clientCount:0,activeRuns:t,queuedRuns:r,pendingPermissions:i,pendingUserInputs:s,blockers:c,canStop:c.length===0}}}}o(Oc,"createRuntimeStatusService");function Mc(e){return{latestContextBudget(n){return ss(e,"context.budget.snapshot",n)},latestToolExposure(n){return ss(e,"tool.exposure.planned",n)}}}o(Mc,"createRuntimeDiagnosticsService");async function ss(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(ss,"latestRuntimeDiagnosticPayload");function an(e){return e==="running"||e==="waiting_permission"||e==="waiting_user_input"}o(an,"isActiveRunPhase");function Lc(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(Lc,"removeQueuedRun");function jc(e){let n=!1,t=[],r=new Map,i=new Map,s=new Set,c=o((a,R)=>R?!(R.sessionId!==void 0&&a.sessionId!==R.sessionId||R.runId!==void 0&&a.runId!==R.runId||R.type!==void 0&&!(Array.isArray(R.type)?R.type:[R.type]).includes(a.type)):!0,"matches"),p=o(a=>{t.push(a),t.length>tt&&t.splice(0,t.length-tt)},"remember"),f=o((a,R,l)=>{let g=e.nextEventSeq();return{id:`evt_${g}_${Re().replace(/-/g,"").slice(0,8)}`,seq:g,time:new Date().toISOString(),sessionId:l.sessionId,runId:l.runId,...l.turnId!==void 0?{turnId:l.turnId}:{},type:a,payload:R}},"createEvent"),d=o(a=>{for(let R of[...s])if(c(a,R.filter))try{R.listener(a)}catch(l){ee({source:"runtime.events",level:"error",message:`Runtime event listener failed for ${a.type}`,detail:{eventId:a.id,error:de(l)}})}},"notify");return{service:{subscribe(a,R){if(n)throw new Error("KodaX runtime event bus is closed");let l={filter:a,listener:R};return s.add(l),{close(){s.delete(l)}}},async replay(a){let R=e.replay(a),l=new Map;for(let S of R)l.set(S.id,S);for(let S of t)l.set(S.id,S);let g=[...l.values()].filter(S=>c(S,a)&&(a?.sinceSeq===void 0||S.seq>a.sinceSeq)).sort((S,m)=>S.seq-m.seq||S.time.localeCompare(m.time));return a?.limit===void 0?g:g.slice(-a.limit)}},emit(a,R,l){let g=f(a,R,l);i.set(g.sessionId,g.seq);let S=r.get(g.sessionId)??as();r.set(g.sessionId,S),Fc(S,g),p(g);let m=[g];try{e.appendEvent(g)}catch(y){let v=f("runtime.warning",{message:de(y).message,sourceEventId:g.id},l);p(v),m.push(v)}for(let y of m)d(y);return g},projectSession(a){let R=r.get(a);return ds(R===void 0?as():R)},currentSessionSeq(a){let R=i.get(a);if(R!==void 0)return R;let l=qc(e.replay({sessionId:a}));return i.set(a,l),l},close(){n=!0;try{e.close()}catch(a){ee({source:"runtime.persistence",level:"error",message:"Failed to flush runtime events while closing",detail:a})}s.clear(),r.clear(),i.clear()}}}o(jc,"createRuntimeEventBus");function as(){return{assistantTextByRun:{},thinkingTextByRun:{},activeTools:new Map,pendingUserInputs:new Map,managedTasks:new Map,todo:void 0}}o(as,"createRuntimeSessionLiveProjectionState");function Fc(e,n){let t=X(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=er(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=er(n),i=e.activeTools.get(r)??$c(e.activeTools,n.runId);i&&e.activeTools.set(i.key,{...i,progress:n.payload})}else if(n.type==="tool.finished"){let r=er(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=Nc(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(Es(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(Fc,"applyRuntimeSessionEvent");function ds(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(ds,"snapshotRuntimeSessionLiveProjection");function Nc(e){if(!(!X(e)||typeof e.agentMode!="string"||typeof e.harnessProfile!="string"))return e}o(Nc,"parseRuntimeManagedTaskStatus");function qc(e){return e.at(-1)?.seq??0}o(qc,"latestRuntimeEventSeq");function er(e){let n=X(e.payload)?e.payload:void 0,t=X(n?.meta)?n.meta:void 0,r=X(n?.tool)?n.tool:void 0,i=X(n?.update)?n.update:void 0,s=X(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(er,"runtimeToolProjectionKey");function $c(e,n){return[...e.values()].reverse().find(t=>t.runId===n)}o($c,"latestActiveToolForRun");function Es(e){return e==="run.completed"||e==="run.failed"||e==="run.cancelled"||e==="run.interrupted"}o(Es,"isTerminalRuntimeEvent");function Hc(e){let n=e.homeDir?L.resolve(e.homeDir):e.sessionsDir?L.resolve(e.sessionsDir,".."):process.cwd(),t=e.sharedDaemonHost===!0?L.join(n,".kodax","runtime","profiles",encodeURIComponent(e.profile??"default")):L.join(n,".kodax","runtime"),r=L.join(t,"runs"),i=L.join(t,"session-settings"),s=L.join(t,"permission-grants.json"),c=L.join(t,"event-sequence"),p=new Map,f=0,d,u,a,R=!1,l=o(b=>L.join(r,encodeURIComponent(b)),"runDir"),g=o(b=>L.join(l(b),"events.jsonl"),"eventFile"),S=o(b=>L.join(l(b),"status.json"),"statusFile"),m=o(b=>L.join(i,`${encodeURIComponent(b)}.json`),"sessionSettingsFile"),y=[],v=new Set,D=o(()=>{let b=0;if(_.existsSync(c))try{let T=Number.parseInt(_.readFileSync(c,"utf-8").trim(),10);Number.isSafeInteger(T)&&T>0&&(b=T)}catch(T){ee({source:"runtime.persistence",level:"warn",message:"Failed to read runtime event sequence cursor; recovering from event logs",detail:T})}if(!_.existsSync(r))return b;for(let T of _.readdirSync(r,{withFileTypes:!0})){if(!T.isDirectory())continue;let P=L.join(r,T.name,"events.jsonl");if(!_.existsSync(P))continue;let $=_.statSync(P).size,J=Math.min($,uc),V=Buffer.allocUnsafe(J),ve=_.openSync(P,"r");try{_.readSync(ve,V,0,J,$-J)}finally{_.closeSync(ve)}let Oe=V.toString("utf-8").split(/\r?\n/);J<$&&Oe.shift();for(let dr of Oe)if(dr.trim())try{let dt=JSON.parse(dr);us(dt)&&Number.isSafeInteger(dt.seq)&&(b=Math.max(b,dt.seq))}catch{}}return b},"findMaxPersistedEventSeq"),h=o(()=>{a===void 0&&(a=D()+1);let b=a;return a+=1,R=!0,b},"allocateEventSeq"),k=o((b,T,P)=>{if(v.has(b))return;v.add(b);let $=h(),J={id:`evt_persist_warn_${$}_${Re().replace(/-/g,"").slice(0,8)}`,seq:$,time:new Date().toISOString(),sessionId:P.sessionId??"runtime",runId:P.runId??P.sessionId??"runtime",type:"runtime.warning",payload:{source:"runtime.persistence",message:T,...P.file!==void 0?{file:P.file}:{}}};y.push(J),y.length>tt&&y.splice(0,y.length-tt)},"pushPersistenceWarning"),x=o((b,T)=>[...b,...y].filter(P=>Xc(P,T)).sort((P,$)=>P.seq-$.seq||P.time.localeCompare($.time)),"withPersistenceWarnings"),O=o((b,T)=>{if(!_.existsSync(b))return[];let P=_.readFileSync(b,"utf-8"),$=[],J=P.split(/\r?\n/);for(let V=0;V<J.length;V+=1){let ve=J[V]??"";if(ve.trim())try{let Oe=JSON.parse(ve);us(Oe)?$.push(Oe):k(`${b}:${V+1}:shape`,`Skipped malformed runtime event record at ${L.basename(b)}:${V+1}`,{runId:T,file:b})}catch(Oe){k(`${b}:${V+1}:parse`,`Skipped malformed runtime event record at ${L.basename(b)}:${V+1}: ${de(Oe).message}`,{runId:T,file:b})}}return $},"readEventsFromFile"),C=o(b=>{if(_.statSync(b).size<=ks)return;let T=_.readFileSync(b,"utf-8").trimEnd().split(/\r?\n/),P=[],$=0;for(let J=T.length-1;J>=0;J-=1){let V=T[J]??"";if(!V)continue;let ve=Buffer.byteLength(V,"utf-8")+1;if(P.length>0&&$+ve>dc)break;P.push(V),$+=ve}P.reverse(),_.writeFileSync(b,P.length>0?`${P.join(`
|
|
56
|
+
`)}
|
|
57
|
+
`:"","utf-8")},"trimEventFile"),F=o(()=>{d!==void 0&&(clearTimeout(d),d=void 0);for(let[b,T]of p){let P=T.join(""),$=Buffer.byteLength(P,"utf-8"),J=l(b),V=g(b);_.mkdirSync(J,{recursive:!0}),_.appendFileSync(V,P,"utf-8"),p.delete(b),f=Math.max(0,f-$),C(V)}R&&a!==void 0&&(_.mkdirSync(t,{recursive:!0}),_.writeFileSync(c,String(a-1),"utf-8"),R=!1),u=void 0},"flushBufferedEvents"),N=o(()=>{d===void 0&&(d=setTimeout(()=>{d=void 0;try{F()}catch(b){u=de(b),ee({source:"runtime.persistence",level:"error",message:"Failed to flush buffered runtime events",detail:b})}},ac),d.unref?.())},"scheduleEventFlush");return{runtimeDir:t,appendEvent(b){let T=`${JSON.stringify(b)}
|
|
58
|
+
`,P=p.get(b.runId)??[];P.push(T),p.set(b.runId,P),f+=Buffer.byteLength(T,"utf-8");let $=u;u=void 0;try{$!==void 0||!lc.has(b.type)||f>=sc?F():N()}catch(J){throw N(),J}if($!==void 0)throw $},close(){F()},nextEventSeq(){return h()},currentEventSeq(){return a===void 0&&(a=D()+1),a-1},replay(b){try{F()}catch(P){k(`${t}:event-flush`,`Failed to flush buffered runtime events: ${de(P).message}`,{runId:b?.runId})}if(b?.runId)return x(O(g(b.runId),b.runId),b);if(!_.existsSync(r))return x([],b);let T=[];for(let P of _.readdirSync(r,{withFileTypes:!0}))P.isDirectory()&&T.push(...O(L.join(r,P.name,"events.jsonl"),P.name));return x(T,b)},saveRunStatus(b){let T=l(b.runId);_.mkdirSync(T,{recursive:!0}),nr(S(b.runId),b)},loadRunStatus(b){let T=S(b);if(_.existsSync(T))try{let P=ot(JSON.parse(_.readFileSync(T,"utf-8")));if(P)return P;k(`${T}:shape`,`Skipped malformed runtime status record at ${L.basename(T)}`,{runId:b,file:T});return}catch(P){k(`${T}:parse`,`Skipped malformed runtime status record at ${L.basename(T)}: ${de(P).message}`,{runId:b,file:T});return}},loadRunStatuses(){if(!_.existsSync(r))return[];let b=[];for(let T of _.readdirSync(r,{withFileTypes:!0})){if(!T.isDirectory())continue;let P=L.join(r,T.name,"status.json");if(_.existsSync(P))try{let $=JSON.parse(_.readFileSync(P,"utf-8")),J=ot($);J?b.push(J):k(`${P}:shape`,`Skipped malformed runtime status record at ${L.basename(P)}`,{runId:T.name,file:P})}catch($){k(`${P}:parse`,`Skipped malformed runtime status record at ${L.basename(P)}: ${de($).message}`,{runId:T.name,file:P})}}return b},loadSessionSettingsVersioned(b){let T=m(b);if(!_.existsSync(T))return{revision:0,value:{}};try{let P=JSON.parse(_.readFileSync(T,"utf-8"));return X(P)&&Number.isSafeInteger(P.revision)&&typeof P.revision=="number"&&P.revision>=0&&X(P.value)?{revision:P.revision,value:Rs(P.value)}:{revision:0,value:Rs(P)}}catch(P){return k(`${T}:parse`,`Skipped malformed runtime session settings at ${L.basename(T)}: ${de(P).message}`,{sessionId:b,file:T}),{revision:0,value:{}}}},loadSessionSettings(b){return this.loadSessionSettingsVersioned(b).value},saveSessionSettingsVersioned(b,T){_.mkdirSync(i,{recursive:!0});let P=m(b);nr(P,{revision:T.revision,value:Ml(T.value)})},saveSessionSettings(b,T){let P=this.loadSessionSettingsVersioned(b);this.saveSessionSettingsVersioned(b,{revision:P.revision+1,value:T})},loadPermissionGrants(){if(!_.existsSync(s))return{revision:0,value:[]};try{let b=JSON.parse(_.readFileSync(s,"utf-8"));if(!X(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(pl)}}catch(b){throw new Error(`Permission grant store is untrusted: ${de(b).message}`)}},savePermissionGrants(b){_.mkdirSync(t,{recursive:!0}),nr(s,b)}}}o(Hc,"createRuntimePersistence");function nr(e,n){let t=`${e}.${process.pid}.${Re()}.tmp`,r;try{r=_.openSync(t,"wx",384),_.writeFileSync(r,`${JSON.stringify(n,null,2)}
|
|
59
|
+
`,"utf-8"),_.fsyncSync(r),_.closeSync(r),r=void 0,_.renameSync(t,e)}finally{r!==void 0&&_.closeSync(r),_.rmSync(t,{force:!0})}}o(nr,"writeRuntimeJsonAtomic");function Kc(e){if(e.sessionsDir!==void 0)return L.resolve(e.sessionsDir);if(e.homeDir!==void 0)return L.join(L.resolve(e.homeDir),".kodax","sessions")}o(Kc,"resolveRuntimeSessionsDir");function Xc(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(Xc,"eventMatchesReplayFilter");function us(e){return X(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(us,"isRuntimeEvent");function ot(e){if(X(e)&&!(typeof e.runId!="string"||typeof e.sessionId!="string"||!Bc(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}:{},...X(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)}:{},...cs(e.continuation)!==void 0?{continuation:cs(e.continuation)}:{}}}o(ot,"parseRuntimeRunStatus");function cs(e){if(!(!X(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(cs,"parseRuntimeContinuationStatus");function Bc(e){return e==="queued"||e==="running"||e==="waiting_permission"||e==="waiting_user_input"||e==="completed"||e==="failed"||e==="cancelled"||e==="interrupted"}o(Bc,"isRuntimeRunPhase");function ls(e){if(X(e)&&!(!Number.isSafeInteger(e.revision)||typeof e.revision!="number"||!Uc(e.kind)||!Wc(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 Uc(e){return e==="completed"||e==="failed"||e==="cancelled"||e==="interrupted"}o(Uc,"isRuntimeTerminalKind");function Wc(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(Wc,"isRuntimeTerminalCode");function Jc(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(_s(e)),terminalEmitted:at(e.phase)}}o(Jc,"recordFromPersistedStatus");function zc(e,n,t){if(at(e.phase))return e;let r=[...t.replay({runId:e.runId})].reverse().find(c=>{if(!Es(c.type))return!1;let p=ot(c.payload);return p?.runId===e.runId&&p.sessionId===e.sessionId&&p.phase===Vc(c.type)});if(r!==void 0){let c=ot(r.payload);if(c!==void 0)return un(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}:{}}),un(n,t,void 0,s),s}o(zc,"interruptPersistedNonTerminalRun");function Vc(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(Vc,"terminalPhaseFromEvent");function ms(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(ms,"resolvePermissionTimeoutMs");function Gc(e,n){let t=new Map,r=o((p,f,d,u)=>{let a=t.get(p);return!a||d?.runId!==void 0&&a.request.runId!==d.runId||d?.expectedRevision!==void 0&&a.request.revision!==d.expectedRevision?{requestId:p,accepted:!1,status:"already_resolved"}:(f.status==="answered"&&Qc(a.request.kind,f.answer),t.delete(p),clearTimeout(a.timer),a.resolve(f),e.emit("user_input.resolved",{requestId:p,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:p,accepted:!0,status:f.status})},"resolvePending"),i=o((p,f=n)=>{let d=`input_${Re().replace(/-/g,"").slice(0,12)}`,u=new Date,a={id:d,revision:0,sessionId:p.sessionId,runId:p.runId,...p.turnId!==void 0?{turnId:p.turnId}:{},kind:p.kind,options:p.options,createdAt:u.toISOString(),expiresAt:new Date(u.getTime()+f).toISOString()},R=o(()=>{},"resolveResponse"),l=new Promise(S=>{R=S}),g=setTimeout(()=>{r(d,{status:"dismissed"},void 0,"timeout")},Math.max(1,f));return g.unref?.(),t.set(d,{request:a,resolve:R,timer:g}),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((p,f)=>{for(let d of[...t.values()])p(d.request)&&r(d.request.id,{status:"dismissed"},void 0,f)},"dismissMatching");return{service:{async listPending(p){return[...t.values()].map(f=>f.request).filter(f=>(p?.sessionId===void 0||f.sessionId===p.sessionId)&&(p?.runId===void 0||f.runId===p.runId))},async respond(p,f,d){return r(p,{status:"answered",answer:f},d)},async dismiss(p,f){return r(p,{status:"dismissed"},f,"client_dismissed")}},trackAndWait:i,resolve:r,rejectForRun(p,f){s(d=>d.runId===p,f)},rejectAll(p){s(()=>!0,p)}}}o(Gc,"createRuntimeUserInputRegistry");function Qc(e,n){if(!(e==="askUser"?Ps(n):e==="askUserMulti"?Yc(n):typeof n=="string"))throw Os(`Invalid answer for ${e}`)}o(Qc,"assertRuntimeUserInputAnswer");function Ps(e){return Array.isArray(e)?e.every(ps):ps(e)}o(Ps,"isAskUserAnswer");function ps(e){return typeof e=="string"||X(e)&&e.kind==="customInput"&&typeof e.value=="string"}o(ps,"isAskUserSelectionAnswer");function Yc(e){return X(e)&&Object.values(e).every(Ps)}o(Yc,"isAskUserMultiAnswer");function Zc(e,n,t){let r=new Map,i=o((d,u=n)=>{let a=o(()=>{},"resolveResponse"),R=new Promise(g=>{a=g});return{request:f(d,[a],ms(d.expiresAt,u)),response:R}},"trackAndWait"),s=o((d,u,a)=>{let R=r.get(d);if(!R||a!==void 0&&R.request.runId!==a)return!1;u.type==="allow_always"&&Xl(t,R.request,u.scope),r.delete(d),R.timer&&clearTimeout(R.timer);for(let l of R.waiters)l(u);return e.emit("permission.resolved",{requestId:d,decision:u},{sessionId:R.request.sessionId,runId:R.request.runId,...R.request.turnId!==void 0?{turnId:R.request.turnId}:{}}),!0},"resolvePending"),c=o((d,u)=>{let a=[...r.values()].filter(R=>d(R.request)).map(R=>R.request.id);for(let R of a)s(R,u)},"resolveMatching");return{service:{request(d){let u=Ss(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=>Bl(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 ar(`Permission grant revision ${u} is stale; current revision is ${a.revision}`,a.revision);let R=a.value.filter(l=>l.id!==d);return R.length===a.value.length?!1:(t.savePermissionGrants({revision:a.revision+1,value:R}),!0)}},track(d){return f(d,[],ms(d.expiresAt,n))},trackAndWait(d,u=n){return i(d,u)},resolve(d,u){s(d,u)},isGranted(d,u){return Ss(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 R={...d,id:`perm_${Re().replace(/-/g,"").slice(0,12)}`,createdAt:new Date().toISOString()},l=a>0?setTimeout(()=>{let g=r.get(R.id);if(!g)return;r.delete(R.id);let S={type:"reject",reason:"permission request timed out"};for(let m of g.waiters)m(S);e.emit("permission.resolved",{requestId:R.id,decision:S},{sessionId:R.sessionId,runId:R.runId,...R.turnId!==void 0?{turnId:R.turnId}:{}})},a):void 0;return l?.unref?.(),r.set(R.id,{request:R,waiters:u,...l!==void 0?{timer:l}:{}}),e.emit("permission.requested",R,{sessionId:R.sessionId,runId:R.runId,...R.turnId!==void 0?{turnId:R.turnId}:{}}),R}}o(Zc,"createRuntimePermissionRegistry");function el(e){let{bus:n,original:t,permissions:r,userInputs:i,enableSharedInteractions:s,record:c}=e,p=o(u=>({sessionId:u?.sessionId??c.sessionId,runId:c.runId,turnId:u?.turnId??c.turnId}),"scopeFromMeta"),f=o((u,a,R)=>{n.emit(u,Me(a),p(R))},"emit"),d=o(async(u,a,R,l,g)=>{let S=c.phase;if(c.phase==="running"&&(c.phase="waiting_user_input"),s){let y=i.trackAndWait({sessionId:R?.sessionId??c.sessionId,runId:c.runId,...R?.turnId??c.turnId?{turnId:R?.turnId??c.turnId}:{},kind:u,options:a});try{let v=l===void 0?await y.response:await Promise.race([y.response,l().then(D=>({status:D===void 0?"dismissed":"answered",...D!==void 0?{answer:D}:{}})).then(D=>(i.resolve(y.request.id,D),D))]);return v.status==="answered"?v.answer:g}finally{c.phase==="waiting_user_input"&&(c.phase=S)}}let m=`input_${Re().replace(/-/g,"").slice(0,12)}`;f("user_input.requested",{requestId:m,kind:u,options:a},R);try{if(l===void 0)return g;let y=await l();return f("user_input.resolved",{requestId:m,kind:u,status:y===void 0?"dismissed":"answered"},R),y}catch(y){throw f("user_input.resolved",{requestId:m,kind:u,status:"failed",error:de(y).message},R),y}finally{c.phase==="waiting_user_input"&&(c.phase=S)}},"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,R){f("tool.progress",{toolName:u,partialJson:a,meta:R},R),t?.onToolInputDelta?.(u,a,R)},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",Me(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",Me(u),{sessionId:u.sessionId,runId:c.runId,turnId:u.turnId}),t?.onTurnStarted?.(u)},onTurnCompleted(u){n.emit("turn.completed",Me(u),{sessionId:u.sessionId,runId:c.runId,turnId:u.turnId}),t?.onTurnCompleted?.(u)},onTurnFailed(u){n.emit("turn.failed",Me(u),{sessionId:u.sessionId,runId:c.runId,turnId:u.turnId}),t?.onTurnFailed?.(u)},onIterationStart(u,a,R){f("run.progress",{kind:"iteration_start",iter:u,maxIter:a,meta:R},R),t?.onIterationStart?.(u,a,R)},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,R){f("context.compaction.messages",{messageCount:u.length,update:a,meta:R},R),t?.onCompactedMessages?.(u,a,R)},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,R,l){f("provider.retry",{reason:u,attempt:a,maxAttempts:R,meta:l},l),t?.onRetry?.(u,a,R,l)},onProviderRateLimit(u,a,R,l){f("provider.retry",{reason:"rate_limit",attempt:u,maxAttempts:a,delayMs:R,meta:l},l),t?.onProviderRateLimit?.(u,a,R,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=$l(u);n.emit(a,Me(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,R)=>{if(r.isGranted(R?.sessionId??c.sessionId,u))return!0;let l=t?.beforeToolExecute===void 0?Wl(c,u,a):void 0;if(l!==void 0)return l;let g=c.phase;c.phase==="running"&&(c.phase="waiting_permission");let S=r.trackAndWait({sessionId:R?.sessionId??c.sessionId,runId:c.runId,...R?.turnId??c.turnId?{turnId:R?.turnId??c.turnId}:{},...R?.toolId?{toolCallId:R.toolId}:{},toolName:u,inputPreview:Jl(a)});try{if(!t?.beforeToolExecute){let D=await S.response;return vs(D)}let m=Promise.resolve(t.beforeToolExecute(u,a,R)).then(D=>({source:"hook",decision:D})),y=S.response.then(D=>({source:"runtime",decision:vs(D)})),v=await Promise.race([m,y]);return v.source==="hook"&&r.resolve(S.request.id,Ul(v.decision)),v.decision}catch(m){throw r.resolve(S.request.id,{type:"reject",reason:de(m).message}),m}finally{c.phase==="waiting_permission"&&(c.phase=g==="queued"?"running":g)}},"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(el,"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 Ds(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(Ds,"toRuntimeSessionSummary");function tl(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=>rl(s,n))}}o(tl,"normalizeRuntimeRunInput");function rl(e,n){if(e.type==="text")return[];if(e.type==="artifact_ref")return ol(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(rl,"runtimeInputToArtifacts");function ol(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(ol,"runtimeArtifactToInputArtifacts");function il(e){return typeof e=="string"&&pc.has(e)}o(il,"isRuntimeArtifactKind");function sl(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}:{}},p=e.provider??n.provider,f=e.model??n.model,d=e.effort??n.effort,u=e.thinking??n.thinking,a=e.reasoningMode??n.reasoningMode,R=e.agentMode??n.agentMode;return{...e,...p!==void 0?{provider:p}:{},...f!==void 0?{model:f}:{},...d!==void 0?{effort:d}:{},...u!==void 0?{thinking:u}:{},...a!==void 0?{reasoningMode:a}:{},...R!==void 0?{agentMode:R}:{},...Object.keys(c).length>0?{context:c}:{}}}o(sl,"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 al(e,n,t){let r=o((s,c)=>t?dl(s,c)?!1:s===void 0||ic.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(al,"createRuntimeSessionAdmission");async function or(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(or,"filterAdmittedRunStatuses");function dl(e,n){let t=o(r=>r?.toLowerCase().split(/[^a-z0-9]+/).includes("partner")===!0,"hasPartnerToken");return t(e)||t(n)}o(dl,"isPartnerSessionIdentity");function ul(e){return`sha256:${rc("sha256").update(JSON.stringify(e)).digest("hex")}`}o(ul,"createRuntimeTranscriptRevision");function cl(e){return e.length<=rs?e:`${e.slice(0,rs-1)}\u2026`}o(cl,"previewQueuedInput");function Ts(e,n){if(n.executionCwd===void 0)return;let t=e.runtimeInfo?.workspaceRoot??e.gitRoot;t&&ll(n.executionCwd,t,"executionCwd")}o(Ts,"assertSessionSettingsAllowed");function ll(e,n,t){let r=gs(L.resolve(e)),i=gs(L.resolve(n)),s=L.relative(i,r);if(s!==""&&(s.startsWith("..")||L.isAbsolute(s)))throw new Error(`${t} must stay within the session workspace root`)}o(ll,"assertPathWithinRoot");function gs(e){return process.platform==="win32"?e.toLowerCase():e}o(gs,"normalizePathForContainment");function ml(e,n){let t={...e};return Zn(t,"provider",n.provider),Zn(t,"model",n.model),Zn(t,"permissionMode",n.permissionMode),Zn(t,"executionCwd",n.executionCwd,!0),Dn(t,"effort",n.effort),Dn(t,"thinking",n.thinking),Dn(t,"reasoningMode",n.reasoningMode),Dn(t,"agentMode",n.agentMode),Dn(t,"autoModeEngine",n.autoModeEngine),t}o(ml,"applySessionSettingsPatch");function Zn(e,n,t,r=!1){if(t!==void 0){if(t===null){xs(e,n);return}if(r&&!L.isAbsolute(t))throw new Error(`${String(n)} must be an absolute path`);ae(e,n,t)}}o(Zn,"applyNullableStringPatch");function Dn(e,n,t){if(t!==void 0){if(t===null){xs(e,n);return}ae(e,n,t)}}o(Dn,"applyNullablePatch");function ae(e,n,t){e[n]=t}o(ae,"setMutableSetting");function xs(e,n){delete e[n]}o(xs,"deleteMutableSetting");function Rs(e){if(!X(e))return{};let n={};return Xe(n,"provider",e.provider),Xe(n,"model",e.model),Xe(n,"permissionMode",e.permissionMode),Xe(n,"executionCwd",e.executionCwd),Xe(n,"effort",e.effort),typeof e.thinking=="boolean"&&ae(n,"thinking",e.thinking),Xe(n,"reasoningMode",e.reasoningMode),Xe(n,"agentMode",e.agentMode),(e.autoModeEngine==="llm"||e.autoModeEngine==="rules")&&ae(n,"autoModeEngine",e.autoModeEngine),n}o(Rs,"parseRuntimeSessionSettings");function pl(e){if(!X(e)||!X(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(pl,"parseRuntimePermissionGrant");function Xe(e,n,t){typeof t=="string"&&t.length>0&&ae(e,n,t)}o(Xe,"setStringIfPresent");function X(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}o(X,"isRecord");function fl(e,n){if(!X(e))throw new Error(`${n} requires a plain object`)}o(fl,"assertPlainObject");function gl(e){let n=new Set(oc);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(gl,"sanitizeRuntimeConfigPatch");function Rl(e){if(e.homeDir!==void 0)return L.join(L.resolve(e.homeDir),".kodax","config.json")}o(Rl,"resolveRuntimeConfigFile");function ge(e){if(e===void 0)return kr();if(!_.existsSync(e))return{};try{let n=JSON.parse(_.readFileSync(e,"utf8"));return X(n)?n:{}}catch{return{}}}o(ge,"readRuntimeConfig");function yl(e,n){if(e===void 0){br(n);return}let r={...ge(e),...n};for(let i of Object.keys(n))n[i]===void 0&&delete r[i];Cn(e,r)}o(yl,"patchRuntimeConfig");function Cn(e,n){_.mkdirSync(L.dirname(e),{recursive:!0}),_.writeFileSync(e,`${JSON.stringify(n,null,2)}
|
|
60
|
+
`,"utf8")}o(Cn,"writeRuntimeConfig");function wl(e){return e===void 0?Ar():vl(it(ge(e)))}o(wl,"listRuntimeCustomProviders");function hl(e,n){if(e===void 0)return Cr(n);ur(n);let t=ge(e),r=it(t),i=Pl(r,n,s=>s.name===n.name);return Cn(e,{...t,customProviders:i}),_n(i),structuredClone(n)}o(hl,"upsertRuntimeCustomProvider");function Sl(e,n){if(e===void 0)return _r(n);if(typeof n!="string"||n.length===0)return!1;let t=ge(e),r=it(t),i=r.filter(s=>s.name!==n);return i.length===r.length?!1:(Cn(e,{...t,customProviders:i}),_n(i),!0)}o(Sl,"removeRuntimeCustomProvider");function As(e){e!==void 0&&_n(it(ge(e)))}o(As,"registerRuntimeConfiguredCustomProviders");function it(e){return Array.isArray(e.customProviders)?structuredClone(e.customProviders):[]}o(it,"extractRuntimeCustomProviders");function vl(e){return structuredClone(e)}o(vl,"cloneCustomProviders");function tr(e){return e===void 0?Or():El(st(ge(e)))}o(tr,"listRuntimeMcpServers");function kl(e,n){if(e===void 0)return Mr(n);let t=st(ge(e))[n];return t===void 0?void 0:structuredClone(t)}o(kl,"getRuntimeMcpServer");function Il(e,n,t){if(e===void 0)return Lr(n,t);gt(n,t);let r=ge(e),i={...st(r),[n]:structuredClone(t)};return Cn(e,{...r,mcpServers:i}),structuredClone(t)}o(Il,"upsertRuntimeMcpServer");function bl(e,n){if(e===void 0)return jr(n);let t=ge(e),r=st(t);if(!(n in r))return!1;let i={...r};return delete i[n],Cn(e,{...t,mcpServers:i}),!0}o(bl,"removeRuntimeMcpServer");function st(e){return X(e.mcpServers)?structuredClone(e.mcpServers):{}}o(st,"extractRuntimeMcpServers");function El(e){return structuredClone(e)}o(El,"cloneMcpServers");function Pl(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(Pl,"upsertConfigEntry");function Dl(e,n){let t=Array.isArray(e)?e:[];if(n?.provider!==void 0){let r=t.find(i=>X(i)&&i.name===n.provider);return X(r)?{provider:n.provider,models:Array.isArray(r.models)?r.models:[]}:{provider:n.provider,models:[]}}return t.flatMap(r=>!X(r)||typeof r.name!="string"?[]:[{provider:r.name,models:Array.isArray(r.models)?r.models:[]}])}o(Dl,"listRuntimeModels");function ys(e){let n=Tl(e).map(xl),t=Be()?.listCommands().filter(r=>r.metadata?.userInvocable!==!1).map(Al)??[];return[...n,...t].sort((r,i)=>r.name.localeCompare(i.name))}o(ys,"listRuntimeCommands");function Tl(e){let n=Nr;return typeof n.listRegisteredCommands=="function"?n.listRegisteredCommands(e):xr().getAll()}o(Tl,"listReplCommands");function xl(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(xl,"replCommandToRuntimeCommandInfo");function Al(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(Al,"extensionCommandToRuntimeCommandInfo");function dn(e){return Array.isArray(e)?e.map(n=>dn(n)):X(e)?Object.fromEntries(Object.entries(e).map(([n,t])=>[n,Cl(n)?"[redacted]":dn(t)])):e}o(dn,"redactRuntimeConfig");function Cl(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(Cl,"isSensitiveConfigKey");function _l(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(_l,"toRuntimeSkillSummary");function Ol(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(Tn)}:{},...e.references!==void 0?{references:e.references.map(Tn)}:{},...e.assets!==void 0?{assets:e.assets.map(Tn)}:{},...e.templates!==void 0?{templates:e.templates.map(Tn)}:{},...e.resources!==void 0?{resources:e.resources.map(Tn)}:{}}}o(Ol,"toRuntimeSkillDescription");function Tn(e){return{name:e.name,path:e.path,relativePath:e.relativePath}}o(Tn,"toRuntimeSkillFileSummary");function cn(e){if(!X(e))throw new Error("Invalid runtime daemon response: expected object");return e}o(cn,"requireRuntimeRecord");function Cs(e){let n=cn(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(Cs,"parseRuntimeIdentity");function Ml(e){let n={};return e.provider!==void 0&&ae(n,"provider",e.provider),e.model!==void 0&&ae(n,"model",e.model),e.effort!==void 0&&ae(n,"effort",e.effort),e.thinking!==void 0&&ae(n,"thinking",e.thinking),e.reasoningMode!==void 0&&ae(n,"reasoningMode",e.reasoningMode),e.permissionMode!==void 0&&ae(n,"permissionMode",e.permissionMode),e.executionCwd!==void 0&&ae(n,"executionCwd",e.executionCwd),e.agentMode!==void 0&&ae(n,"agentMode",e.agentMode),e.autoModeEngine!==void 0&&ae(n,"autoModeEngine",e.autoModeEngine),n}o(Ml,"serializeSessionSettings");function Ll(){return`run_${Date.now().toString(36)}_${Re().replace(/-/g,"").slice(0,8)}`}o(Ll,"createRunId");function me(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:jl(e.phase)}}:{}}}o(me,"statusFromRecord");function jl(e){return e==="queued"?"queued":at(e)?"terminal":"delivered"}o(jl,"runtimeContinuationState");function _s(e){return{runId:e.runId,sessionId:e.sessionId,phase:e.phase,...e.error!==void 0?{error:new Error(e.error)}:{}}}o(_s,"resultFromStatus");function Fl(e){return e.length<=rt?e:[...e].sort(sr).slice(-rt)}o(Fl,"recentRunStatuses");function Nl(e){if(e.size<=rt)return;let n=[...e.values()].filter(t=>at(t.phase)).sort((t,r)=>sr(me(t),me(r)));for(let t of n){if(e.size<=rt)return;e.delete(t.runId)}}o(Nl,"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 ql(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(ql,"runMatchesFilter");function xn(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??Kl(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";un(e,n,t,me(t)),e.emit(c,me(t),{sessionId:t.sessionId,runId:t.runId,...t.turnId!==void 0?{turnId:t.turnId}:{}})}o(xn,"markRunTerminal");function un(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}: ${de(i).message}`,runId:r.runId,phase:r.phase},{sessionId:r.sessionId,runId:r.runId,...s!==void 0?{turnId:s}:{}})}}o(un,"saveRunStatusSafely");function at(e){return e==="completed"||e==="failed"||e==="cancelled"||e==="interrupted"}o(at,"isTerminalRunPhase");function $l(e){return e.type==="workflow_started"?"workflow.started":e.type==="workflow_finished"?"workflow.finished":"workflow.updated"}o($l,"workflowEventType");function Hl(e){return e==="completed"||e==="failed"||e==="cancelled"}o(Hl,"isFinalWorkflowStatus");function Kl(e){return e==="completed"?"completed":e==="failed"?"run_failed":e==="cancelled"?"cancelled":"interrupted"}o(Kl,"defaultRuntimeTerminalCode");function ws(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(ws,"classifyRuntimeRunFailure");function hs(e,n){if(!n.hadProviderCredential)return de(e);let t=new Error("Provider run failed while using a run-scoped credential.");return t.name="KodaXProviderRunError",t}o(hs,"normalizeRuntimeRunError");function Xl(e,n,t){if(t.toolName!==void 0&&t.toolName!==n.toolName||t.sessionId!==void 0&&t.sessionId!==n.sessionId)throw Os("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_${Re().replace(/-/g,"").slice(0,12)}`,scope:t,createdAt:new Date().toISOString()};e.savePermissionGrants({revision:r.revision+1,value:[...r.value,i]})}o(Xl,"saveRuntimePermissionGrant");function Ss(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(Ss,"findRuntimePermissionGrant");function Bl(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(Bl,"permissionMatchesFilter");function Ul(e){return e===!0?{type:"allow_once"}:{type:"reject",reason:e===!1?"tool execution rejected":e}}o(Ul,"decisionToPermissionDecision");function Wl(e,n,t){if(mc.has(n))return!0;if(e.permissionBroker==="client")return;let r=Sr(e.permissionMode);if(r===void 0)return;let i=e.start?.options.context?.gitRoot??e.start?.options.context?.executionCwd;if(r==="plan"){let s=Tr(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(Er(s))return!0;if(i&&Dr(s,i))return}if(i&&wr.has(n)){let s=typeof t.path=="string"?t.path:void 0;if(s&&Pr(L.resolve(i,s),i))return}return hr(r).has(n)?void 0:!0}o(Wl,"resolveRuntimePermissionPolicy");function vs(e){return e?e.type==="allow_once"||e.type==="allow_always"?!0:e.reason??!1:!1}o(vs,"decisionToToolDecision");function Jl(e){let n=JSON.stringify(e);return n.length<=500?n:`${n.slice(0,497)}...`}o(Jl,"previewInput");function de(e){return e instanceof Error?e:new Error(String(e))}o(de,"normalizeError");function ar(e,n){return Object.assign(new Error(e),{code:"conflict",currentRevision:n})}o(ar,"createRuntimeConflictError");function zl(e){return Object.assign(new Error(e),{code:"resync_required"})}o(zl,"createRuntimeResyncError");function Os(e){return Object.assign(new Error(e),{code:"invalid_input"})}o(Os,"createRuntimeInvalidInputError");function Vl(e){return Object.assign(new Error(e),{code:"credential_unavailable"})}o(Vl,"createRuntimeCredentialUnavailableError");function Gl(){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(Gl,"createUnsupportedCredentialService");function Ql(){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(Ql,"createUnsupportedHostToolService");function rr(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(rr,"assertSessionMutationAllowed");function Yl(e,n){if(!("ok"in n))throw new Error(`Session is running and cannot be deleted: ${e}`)}o(Yl,"assertDeleteSucceeded");function Zl(e){return structuredClone(e)}o(Zl,"cloneMessage");export{Dt as a,xe as b,Tt as c,Je as d,Fe as e,Gn as f,di as g,ui as h,Sd as i,vd as j,ff as k,gf as l,fc as m,Is as n};
|