@kodax-ai/kodax 0.7.69 → 0.7.70

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