@kodax-ai/kodax 0.7.71 → 0.7.72

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 (86) hide show
  1. package/CHANGELOG.md +602 -487
  2. package/README.md +46 -27
  3. package/README_CN.md +30 -13
  4. package/dist/chunks/agent-YKGU4USA.js +2 -0
  5. package/dist/chunks/argument-completer-QZETLNAB.js +2 -0
  6. package/dist/chunks/{chunk-SX2WFHIS.js → chunk-2RI252RN.js} +1 -1
  7. package/dist/chunks/chunk-CLFP6UGU.js +71 -0
  8. package/dist/chunks/chunk-E27LHEIP.js +37 -0
  9. package/dist/chunks/chunk-EDZ5KJFT.js +5 -0
  10. package/dist/chunks/chunk-GIK4SGAT.js +364 -0
  11. package/dist/chunks/chunk-GVWPHE23.js +310 -0
  12. package/dist/chunks/{chunk-A2TFSV5M.js → chunk-IR5KIK7E.js} +1 -1
  13. package/dist/chunks/chunk-JSDLBXME.js +755 -0
  14. package/dist/chunks/chunk-MVARIMQV.js +22 -0
  15. package/dist/chunks/chunk-PKQOEDHJ.js +628 -0
  16. package/dist/chunks/{chunk-64NQBOSN.js → chunk-SQODXBLX.js} +1 -1
  17. package/dist/chunks/chunk-VDGCGOQH.js +328 -0
  18. package/dist/chunks/chunk-VVE3UM4F.js +410 -0
  19. package/dist/chunks/chunk-WIBLZK4G.js +151 -0
  20. package/dist/chunks/{compaction-config-5KKKXYFT.js → compaction-config-TWCDFLX6.js} +1 -1
  21. package/dist/chunks/{construction-bootstrap-OXDDDW6O.js → construction-bootstrap-ZJPXUPXQ.js} +1 -1
  22. package/dist/chunks/dist-JT4ATXVM.js +2 -0
  23. package/dist/chunks/host-SVEDZUC5.js +2 -0
  24. package/dist/chunks/{run-manager-Z3W6MDO7.js → run-manager-RX42UNEM.js} +1 -1
  25. package/dist/chunks/{utils-CFOXDCB5.js → utils-OTT5CG5J.js} +1 -1
  26. package/dist/index.d.ts +13 -13
  27. package/dist/index.js +4 -4
  28. package/dist/kodax_bootstrap.js +28 -0
  29. package/dist/kodax_cli.js +1325 -1333
  30. package/dist/kodax_resume.js +44 -0
  31. package/dist/provider-capabilities.json +50 -48
  32. package/dist/runtime-worker.js +1322 -1330
  33. package/dist/sdk-a2a.d.ts +10 -9
  34. package/dist/sdk-a2a.js +1 -1
  35. package/dist/sdk-agent.d.ts +382 -206
  36. package/dist/sdk-agent.js +1 -1
  37. package/dist/sdk-coding.d.ts +80 -128
  38. package/dist/sdk-coding.js +1 -1
  39. package/dist/sdk-experimental-memory.js +1 -1
  40. package/dist/sdk-mcp.js +1 -1
  41. package/dist/sdk-media.d.ts +3 -0
  42. package/dist/sdk-media.js +1 -1
  43. package/dist/sdk-repl.d.ts +71 -23
  44. package/dist/sdk-repl.js +2 -2
  45. package/dist/sdk-runtime.d.ts +143 -31
  46. package/dist/sdk-runtime.js +1 -1
  47. package/dist/sdk-session.d.ts +6 -5
  48. package/dist/sdk-session.js +1 -1
  49. package/dist/sdk-skills.d.ts +5 -5
  50. package/dist/sdk-skills.js +1 -1
  51. package/dist/semantic-worker.js +14 -14
  52. package/dist/types-chunks/{bash-prefix-extractor.d-YoiZl5yt.d.ts → bash-prefix-extractor.d-CHJO5y94.d.ts} +107 -248
  53. package/dist/types-chunks/{capsule.d-CK5Pfz1k.d.ts → capsule.d-DxtdE-GD.d.ts} +24 -95
  54. package/dist/types-chunks/center-types.d-BBT122uJ.d.ts +91 -0
  55. package/dist/types-chunks/{commands.d-D6g2jq8V.d.ts → commands.d-DZxHzH5-.d.ts} +6 -4
  56. package/dist/types-chunks/{guardrail.d-DilYC1dh.d.ts → guardrail.d-DlpMnd-Y.d.ts} +1 -1
  57. package/dist/types-chunks/{guardrail.d-DdeDWnVu.d.ts → guardrail.d-auV61_h5.d.ts} +83 -10
  58. package/dist/types-chunks/public-api.d--IDNJsu1.d.ts +1342 -0
  59. package/dist/types-chunks/{run-manager.d-DxU3SSGR.d.ts → run-manager.d-Bh50OdVl.d.ts} +1 -1
  60. package/dist/types-chunks/sdk-session-Cfw6NFu-.d.ts +82 -0
  61. package/dist/types-chunks/{types.d-CEZZSY9s.d.ts → types.d-CNZgY52F.d.ts} +2 -2
  62. package/dist/types-chunks/{types.d-vJExiRje.d.ts → types.d-DCQVBqVn.d.ts} +10 -5
  63. package/dist/types-chunks/{types.d-CRCaLt_s.d.ts → types.d-DH1mvdcl.d.ts} +284 -164
  64. package/dist/types-chunks/{types.d-CzsLFqmf.d.ts → types.d-EqQmHztg.d.ts} +9 -10
  65. package/dist/types-chunks/{utils.d-Cb6vdvFM.d.ts → utils.d-gmn3c5U4.d.ts} +9 -12
  66. package/docs/SDK_EMBEDDER_GUIDE.md +171 -26
  67. package/package.json +4 -4
  68. package/scripts/kodax-bin.cjs +4 -2
  69. package/scripts/production-env.cjs +9 -0
  70. package/dist/chunks/agent-X2EWQADL.js +0 -2
  71. package/dist/chunks/argument-completer-BLNXDO2F.js +0 -2
  72. package/dist/chunks/chunk-4DY756KL.js +0 -70
  73. package/dist/chunks/chunk-52JSZ77P.js +0 -37
  74. package/dist/chunks/chunk-A574DBTV.js +0 -422
  75. package/dist/chunks/chunk-F7KGYHJ3.js +0 -624
  76. package/dist/chunks/chunk-GVTM4Z6O.js +0 -151
  77. package/dist/chunks/chunk-PHH4TRGF.js +0 -22
  78. package/dist/chunks/chunk-PVUXONQB.js +0 -366
  79. package/dist/chunks/chunk-T7LYK53M.js +0 -329
  80. package/dist/chunks/chunk-VRSVNU2Y.js +0 -7
  81. package/dist/chunks/chunk-Y5XKAN7C.js +0 -755
  82. package/dist/chunks/chunk-Z535BARK.js +0 -306
  83. package/dist/chunks/dist-IXJRJ27U.js +0 -2
  84. package/dist/chunks/host-VRKDAN26.js +0 -2
  85. package/dist/types-chunks/public-api.d-BvCp5VkW.d.ts +0 -601
  86. package/dist/types-chunks/sdk-session-wGpa7X_U.d.ts +0 -796
@@ -0,0 +1,71 @@
1
+ // @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
2
+ import{Bb as Co,Cb as Mo,Db as Oo,Eb as _o,Fb as Lo,Gb as jo,Hb as Bt,Ua as To,Xb as No,Yb as Fo,zb as Ao}from"./chunk-GVWPHE23.js";import{j as wo,k as ho,m as Ke,n as Io,s as bo,t as Po,x as Eo,y as Do,za as xo}from"./chunk-PKQOEDHJ.js";import{K as Xt,M as vo,T as So,U as ko,m as Kt}from"./chunk-WIBLZK4G.js";import{e as fo,fa as Ro,la as yo,w as go}from"./chunk-VVE3UM4F.js";import{$a as xn,Ed as mo,Gd as po,Mc as Ht,jc as co,ob as qt,uc as rn}from"./chunk-GIK4SGAT.js";import{a as Lt,c as He,wa as Gr,ya as zn}from"./chunk-ZJIMT5I3.js";import{Ec as $t,La as Gn,Ma as to,Oa as Dn,Ua as ro,_b as Nt,ae as ao,ee as uo,fe as lo,wc as Ft}from"./chunk-JSDLBXME.js";import{F as oo,V as io,X as jt,a as Zr,b as te,e as eo,ea as so,g as Vn,h as no}from"./chunk-E27LHEIP.js";import{y as Qr,z as Yr}from"./chunk-EDZ5KJFT.js";import{a as o}from"./chunk-ONUPGMER.js";import{createHash as $a,randomUUID as Pe}from"node:crypto";import*as L from"node:fs";import qa from"node:os";import N from"node:path";import{createHash as td}from"node:crypto";import ye from"node:fs";import Re from"node:path";function on(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}o(on,"isRecord");function $o(e){return on(e)?typeof e.agentId=="string"&&typeof e.displayName=="string"&&(e.managementOwner===void 0||typeof e.managementOwner=="string"&&e.managementOwner.length>0)&&typeof e.enabled=="boolean"&&typeof e.executorId=="string"&&(e.protocol==="a2a"||e.protocol==="mcp"||e.protocol==="http")&&typeof e.configurationRevision=="string"&&typeof e.endpointIdentityHash=="string"&&on(e.capabilities)&&on(e.effects):!1}o($o,"isRegistration");function rd(e){return on(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"&&on(e.registration)&&typeof e.idempotencyKey=="string"&&typeof e.dispatchAttempt=="number"&&typeof e.createdAt=="string"&&typeof e.updatedAt=="string":!1}o(rd,"isTask");function od(e){return on(e)?typeof e.taskId=="string"&&Number.isSafeInteger(e.seq)&&typeof e.timestamp=="string"&&typeof e.type=="string":!1}o(od,"isEvent");function Ho(e){try{return JSON.parse(ye.readFileSync(e,"utf8"))}catch(n){let t=n instanceof Error?n.message:String(n);throw new Error(`Failed to parse Runtime agent store file ${e}: ${t}`)}}o(Ho,"parseJson");function qo(e,n){if(!ye.existsSync(e))return[];let t=Ho(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(qo,"readList");function Ut(e,n){ye.mkdirSync(Re.dirname(e),{recursive:!0});let t=`${e}.${process.pid}.tmp`;ye.writeFileSync(t,`${JSON.stringify(n,null,2)}
3
+ `,{encoding:"utf8",mode:384}),ye.renameSync(t,e)}o(Ut,"writeJsonAtomic");function Qn(e,n){let t=td("sha256").update(n).digest("hex");return Re.join(e,t)}o(Qn,"taskDirectory");function id(e,n){if(!ye.existsSync(e))return[];let t=ye.readFileSync(e,"utf8").trim();if(!t)return[];let r=0;return t.split(/\r?\n/).map((i,a)=>{let u;try{u=JSON.parse(i)}catch(l){let m=l instanceof Error?l.message:String(l);throw new Error(`Invalid Runtime agent event at ${e}:${a+1}: ${m}`)}if(!od(u))throw new Error(`Invalid Runtime agent event shape at ${e}:${a+1}`);if(u.taskId!==n)throw new Error(`Runtime agent event taskId does not match its ledger at ${e}:${a+1}`);if(u.seq<=r)throw new Error(`Runtime agent events require a strictly increasing positive sequence at ${e}:${a+1}`);return r=u.seq,u})}o(id,"readEvents");function Ko(e){let n=Re.resolve(e),t=Re.join(n,"registrations.json"),r=Re.join(n,"task-registration-snapshots.json"),i=Re.join(n,"tasks");return{async loadRegistrations(){return qo(t,$o)},async saveRegistrations(a){Ut(t,a)},async loadTaskRegistrationSnapshots(){return qo(r,$o)},async saveTaskRegistrationSnapshots(a){Ut(r,a)},async loadTasks(){if(!ye.existsSync(i))return[];let a=[];for(let l of ye.readdirSync(i,{withFileTypes:!0})){if(!l.isDirectory())continue;let m=Re.join(i,l.name,"snapshot.json");if(!ye.existsSync(m))continue;let g=Ho(m);if(!rd(g))throw new Error(`Invalid Runtime agent task shape: ${m}`);a.push({directoryName:l.name,file:m,task:g})}let u=new Set;for(let{task:l}of a){if(u.has(l.taskId))throw new Error(`Duplicate Runtime agent taskId: ${l.taskId}`);u.add(l.taskId)}for(let{directoryName:l,file:m,task:g}of a){let s=Re.basename(Qn(i,g.taskId));if(l!==s)throw new Error(`Runtime agent task directory does not match taskId hash: ${m}`)}return a.map(({task:l})=>l)},async saveTask(a){Ut(Re.join(Qn(i,a.taskId),"snapshot.json"),a)},async loadEvents(a){return id(Re.join(Qn(i,a),"events.jsonl"),a)},async appendEvent(a){let u=Re.join(Qn(i,a.taskId),"events.jsonl");ye.mkdirSync(Re.dirname(u),{recursive:!0}),ye.appendFileSync(u,`${JSON.stringify(a)}
4
+ `,{encoding:"utf8",mode:384})}}}o(Ko,"createRuntimeAgentExecutorPlaneStore");import{createHash as ei,randomUUID as Yn}from"node:crypto";import sn from"node:fs";import{mkdir as ni,readFile as ti}from"node:fs/promises";import Q from"node:path";var ri=["read","grep","glob"],oi=["write","edit","multi_edit","insert_after_anchor"],ii=["mcp_search","mcp_describe","mcp_call","mcp_read_resource","mcp_get_prompt"],sd=["list_dispatchable_agents","spawn_agent","send_message","followup_task","wait_agent","interrupt_agent","list_agents","agent_output"],ad=new Set([...ri,...oi]),dd=new Set([".ssh",".aws",".azure",".gnupg",".kodax",".agents"]),ud=new Set([".env",".npmrc",".pypirc","credentials","id_rsa","id_ed25519"]);function Jt(e){return Array.isArray(e)?e.map(Jt):e===null||typeof e!="object"?e:Object.fromEntries(Object.entries(e).sort(([n],[t])=>n.localeCompare(t)).map(([n,t])=>[n,Jt(t)]))}o(Jt,"canonicalValue");function Xe(e){return ei("sha256").update(JSON.stringify(Jt(e))).digest("hex")}o(Xe,"stableHash");function si(e){let n=ei("sha256");for(let t of e)n.update(t);return n.digest("hex")}o(si,"hashParts");function Zn(e,n){let t=Q.relative(Q.resolve(e),Q.resolve(n));return t===""||!t.startsWith("..")&&!Q.isAbsolute(t)}o(Zn,"isInside");function zt(e){if(!sn.existsSync(e))return 0;let n=0;for(let t of sn.readdirSync(e,{withFileTypes:!0})){let r=Q.join(e,t.name);t.isSymbolicLink()||(t.isDirectory()?n+=zt(r):t.isFile()&&(n+=sn.statSync(r).size))}return n}o(zt,"directoryBytes");function Xo(e){if(e!==void 0){if(!Number.isSafeInteger(e)||e<=0)throw new Error("Runtime workspace byte limit must be positive.");return e}}o(Xo,"validateWorkspaceByteLimit");function Wt(e){if(e.mode==="managed")return{mode:"managed"};if(!Q.isAbsolute(e.root))throw new Error("Fixed Runtime workspace root must be absolute.");return{mode:"fixed",root:Q.resolve(e.root)}}o(Wt,"normalizedWorkspace");function Vt(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(Vt,"exactList");function Bo(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,Vt(r,`${n}.${t}`,!1)]}))}o(Bo,"exactMap");function Uo(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:Vt(n.origins,"Runtime toolPolicy.network.origins").map(a=>{let u=new URL(a);if(!["http:","https:"].includes(u.protocol)||u.origin!==a)throw new Error("Runtime network authority must be an exact HTTP(S) origin.");return u.origin})},r=Bo(e.skillScripts,"Runtime toolPolicy.skillScripts"),i=Object.values(r).reduce((a,u)=>a+u.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:Vt(e.tools,"Runtime toolPolicy.tools"),mcp:Bo(e.mcp,"Runtime toolPolicy.mcp"),skillScripts:r,subagents:e.subagents}}o(Uo,"validatedToolPolicy");function ld(e){return e==="project"?"workspace":e}o(ld,"skillSource");function cd(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(cd,"skillFiles");async function md(e){let n=[e.name,e.rawContent];for(let t of cd(e))n.push(t.relativePath,await ti(t.path));return si(n)}o(md,"skillRevision");var Gt=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 ai(e){let n=e.workspace.mode==="fixed"?e.workspace.root:void 0,t=oo(n),r=t.userPaths.filter(g=>Q.basename(Q.dirname(g))===".agents"),i=new io(n,{projectPaths:e.workspace.mode==="managed"?[]:t.projectPaths,userPaths:[Q.join(e.configHome,"skills"),...r],pluginPaths:t.pluginPaths,builtinPath:t.builtinPath});await i.discover();let a=i.list(),l=e.selection===void 0||e.selection.includes("*")?a.filter(g=>g.source!=="project"&&!g.disableModelInvocation):e.selection.map(g=>{let s=i.get(g);if(!s)throw new Error(`Markdown Agent requires unknown Skill "${g}".`);if(s.disableModelInvocation)throw new Error(`Skill "${g}" disables model invocation.`);return s}),m=[];for(let g of l.sort((s,d)=>s.name.localeCompare(d.name))){let s=await md(await i.loadFull(g.name));m.push({name:g.name,source:ld(g.source),revision:s})}return{registry:new Gt(i,l),refs:m,revision:Xe(m)}}o(ai,"resolveSkills");function pd(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(a=>!i.has(new URL(a).origin)))throw new Error(`Remote tool "${e}" requires a network origin outside toolPolicy.`)}o(pd,"validateRemoteContract");function Wo(e){let n=new Set;e.policy.workspace!=="none"&&ri.forEach(a=>n.add(a)),e.policy.workspace==="write"&&oi.forEach(a=>n.add(a)),e.hasSkills&&n.add("skill"),e.hasSkillScripts&&n.add("run_skill_script"),Object.keys(e.policy.mcp).length>0&&ii.forEach(a=>n.add(a)),e.policy.subagents==="inherit"&&sd.forEach(a=>n.add(a));let t=new Map(Ht().map(a=>[a.name,a])),r=new Map;for(let a of e.policy.tools){let u=t.get(a)?.remoteContract;if(!u)throw new Error(`Tool "${a}" has no Runtime remote contract.`);pd(a,u,e.policy),r.set(a,u),n.add(a)}let i=new Map;for(let a of n){let u=t.get(a);if(!u)throw new Error(`Runtime tool is unavailable: ${a}.`);if(!r.has(a)&&u.source.kind!=="builtin")throw new Error(`Native Runtime tool "${a}" is shadowed by a non-builtin registration.`);i.set(a,u.registrationId)}if(e.declared!==void 0){let a=e.declared.filter(l=>!n.has(l));if(a.length>0)throw new Error(`Markdown Agent tools are denied by remote policy: ${a.join(", ")}.`);let u=[...new Set(e.declared)].sort();return{tools:u,contracts:r,registrations:new Map(u.map(l=>[l,i.get(l)]))}}return{tools:[...n].sort(),contracts:r,registrations:i}}o(Wo,"resolveToolSurface");function Jo(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(Jo,"skillsPrompt");function zo(e,n){let r=Q.relative(n,e).split(Q.sep).map(i=>i.toLowerCase());return r.some(i=>dd.has(i))||r.some(i=>ud.has(i)||i.startsWith(".env."))}o(zo,"sensitivePath");function fd(e){let n=e;for(;!sn.existsSync(n);){let t=Q.dirname(n);if(t===n)throw new Error("Tool path has no existing parent.");n=t}return n}o(fd,"nearestExistingPath");function gd(e,n){let t=sn.realpathSync(e),r=fd(n),i=sn.realpathSync(r);if(!Zn(t,i))throw new Error("Tool path escapes the bound workspace through a link.");let a=Q.resolve(i,Q.relative(r,n));if(!Zn(t,a))throw new Error("Tool path escapes the bound workspace through a link.");return{root:t,candidate:a}}o(gd,"resolveRealToolPath");function Tn(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=Q.resolve(e,n);if(!Zn(e,t))throw new Error("Tool path escapes the bound workspace.");let r=gd(e,t);if(zo(t,e)||zo(r.candidate,r.root))throw new Error("Secret-bearing paths are unavailable to remote Agents.");return t}o(Tn,"resolveToolPath");function Vo(){return{beforeToolExecute:o(async()=>!0,"beforeToolExecute")}}o(Vo,"remoteRunEvents");function Rd(e,n,t){if(!ii.includes(e))return;if(e==="mcp_search"){let g=n.server;if(typeof g!="string"||t.mcp[g]===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[,a,u,l]=i,m=t.mcp[a??""]??[];if(u==="tool"&&!m.includes(l??""))throw new Error("MCP tool is not admitted by the remote policy.");if(u!=="tool"&&!m.includes(l??""))throw new Error("MCP capability is not admitted by the remote policy.")}o(Rd,"authorizeMcp");function yd(e){return{async resolveReadablePath(n){return Tn(e,n)??e},async stageOutput(n){let t=Yn(),r=Q.basename(n).replace(/[^A-Za-z0-9._-]/g,"_")||"output",i=Q.join(e,".kodax-a2a-staging",`${t}-${r}`);return await ni(Q.dirname(i),{recursive:!0}),{stagingId:t,path:Tn(e,i)??i}}}}o(yd,"workspaceBroker");function Go(e,n){return{kind:"tool",name:`runtime-remote-policy:${e.bindingId}`,async beforeTool(t,r){try{if(e.workspaceByteLimit!==void 0&&zt(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(Ht().find(u=>u.name===t.name)?.registrationId!==e.toolRegistrations.get(t.name))throw new Error("Tool registration changed after the Runtime binding was prepared.");if(ad.has(t.name)){let u=(t.name==="grep"||t.name==="glob","path");Tn(n,t.input[u])}Rd(t.name,t.input,e.toolPolicy);let a=e.remoteContracts.get(t.name);if(a){let u=await a.authorizeCall(t.input,{workspaceAccess:e.toolPolicy.workspace,allowedNetworkOrigins:e.toolPolicy.network.mode==="allowlist"?e.toolPolicy.network.origins:[],workspace:yd(n),signal:r.abortSignal??new AbortController().signal});if(!u.allowed)throw new Error(u.reason);return{action:"rewrite",payload:{...t,input:u.input}}}return{action:"allow"}}catch(i){return{action:"block",reason:i instanceof Error?i.message:String(i)}}},async afterTool(){return e.workspaceByteLimit!==void 0&&zt(n)>e.workspaceByteLimit?{action:"block",reason:"Remote workspace byte quota exceeded."}:{action:"allow"}}}}o(Go,"createToolGuardrail");async function Qo(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"&&Q.resolve(i)!==n.workspace.root)throw new Error("Runtime session workspace does not match the fixed binding.");if(n.workspace.mode==="managed"&&!Zn(e.managedWorkspaceRoot,i))throw new Error("Runtime session workspace is outside the managed A2A root.");return Q.resolve(i)}o(Qo,"requiredWorkspaceRoot");async function Yo(e,n,t){let r=t.mode==="fixed"?t.root:e.managedWorkspaceRoot,i=await co({cwd:r,configHome:e.configHome,userOnly:!0}),a=i.loaded.find(m=>m.name===n.name&&m.source==="markdown:user"),u=i.scope.resolve(n.name);if(!a||!u||u.source!=="markdown:user"){await i.dispose();let m=i.failed.find(g=>Q.basename(g.path,".md")===n.name);throw new Error(m?.reason??`User Markdown Agent not found: ${n.name}`)}let l=si([await ti(a.path)]);try{let m=await ai({configHome:e.configHome,workspace:t,selection:a.requestedSkills});return{scope:i.scope,loaded:a,configurationRevision:l,skills:m}}catch(m){throw await i.dispose(),m}}o(Yo,"localAgentResources");function Zo(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(Zo,"resolvedLocal");function di(e){let n=new Map,t=new Map,r=o(u=>{let l=n.get(u);if(!l)throw new Error("Runtime Agent owner session is not active.");return l},"requireOwner"),i=o((u,l)=>{let m=t.get(l);if(!m||m.ownerSessionId!==u)throw new Error("Runtime Agent binding not found.");return m},"requireBinding"),a=o(async u=>{t.delete(u.bindingId),n.get(u.ownerSessionId)?.delete(u.bindingId),u.scope?.dispose(),await u.skillScriptRunner?.dispose()},"release");return{async resolveLocal(u){let l=Wt(u.workspace),m=await Yo(e,u.ref,l);try{return Zo(u.ref,m)}finally{m.scope.dispose()}},async openOwnerSession(){let u=Yn();return n.set(u,new Set),{ownerSessionId:u}},async bindDefault(u){let l=r(u.ownerSessionId),m=Wt(u.workspace),g=Uo(u.toolPolicy),s=Xo(u.workspaceByteLimit),d=await ai({configHome:e.configHome,workspace:m}),R=Object.keys(g.skillScripts).length>0,c=Wo({policy:g,hasSkills:d.refs.length>0,hasSkillScripts:R}),f=R?await e.createSkillScriptRunner?.({registry:d.registry,admissions:g.skillScripts,workspaceAccess:g.workspace,network:g.network,workspaceByteLimit:s}):void 0;if(R&&!f)throw new Error("Runtime isolated Skill script backend is unavailable.");let w=Yn(),k=Xe(g),I=Xe(m),C=Xe({kind:"runtime-default",profileId:u.profileId,toolPolicyRevision:k,workspaceBindingRevision:I,skillSetRevision:d.revision,provider:e.defaultProvider,model:e.defaultModel,tools:c.tools,workspaceByteLimit:s});if(u.expectedExecutionPolicyRevision&&u.expectedExecutionPolicyRevision!==C)throw await f?.dispose(),new Error("Runtime default execution policy revision changed.");let A={ownerSessionId:u.ownerSessionId,bindingId:w,kind:"runtime-default",executionPolicyRevision:C,toolPolicyRevision:k,workspaceBindingRevision:I,workspace:m,toolPolicy:g,effectiveTools:c.tools,effectiveSkills:d.refs,skillSetRevision:d.revision,skillRegistry:d.registry,skillScriptRunner:f,remoteContracts:c.contracts,toolRegistrations:c.registrations,workspaceByteLimit:s};return t.set(w,A),l.add(w),{ownerSessionId:u.ownerSessionId,bindingId:w,executionPolicyRevision:C,toolPolicyRevision:k,workspaceBindingRevision:I,skillSetRevision:d.revision,effectiveSkills:d.refs,effectiveTools:c.tools}},async startDefault(u){let l=i(u.ownerSessionId,u.bindingId);if(l.kind!=="runtime-default")throw new Error("Runtime Agent binding kind mismatch.");if(l.executionPolicyRevision!==u.expectedExecutionPolicyRevision)throw new Error("Runtime default execution policy revision changed.");let m=await Qo(e,l,u.sessionId);return e.runs.start({sessionId:u.sessionId,input:u.input,permissionBroker:u.permissionBroker,agentContext:u.agentContext,options:{context:{executionCwd:m,gitRoot:m,managedTaskWorkspaceDir:m,toolVisibilityPolicy:o(g=>l.effectiveTools.includes(g.name),"toolVisibilityPolicy"),skillRegistry:l.skillRegistry,skillScriptRunner:l.skillScriptRunner,assertReadablePath:o(g=>{Tn(m,g)},"assertReadablePath"),skillsPrompt:Jo(l.effectiveSkills,l.skillRegistry)},skillDynamicContext:{disable:!0},guardrails:[Go(l,m)],events:Vo()}})},async bindLocal(u){let l=r(u.ownerSessionId),m=Wt(u.workspace),g=Uo(u.toolPolicy),s=Xo(u.workspaceByteLimit),d=await Yo(e,u.ref,m),R=Zo(u.ref,d);if(u.expectedConfigurationRevision&&u.expectedConfigurationRevision!==R.configurationRevision)throw d.scope.dispose(),new Error("User Markdown Agent configuration revision changed.");let c=Wo({declared:d.loaded.effectiveTools,policy:g,hasSkills:d.skills.refs.length>0,hasSkillScripts:Object.keys(g.skillScripts).length>0}),f=Object.keys(g.skillScripts).length>0,w=f?await e.createSkillScriptRunner?.({registry:d.skills.registry,admissions:g.skillScripts,workspaceAccess:g.workspace,network:g.network,workspaceByteLimit:s}):void 0;if(f&&!w)throw d.scope.dispose(),new Error("Runtime isolated Skill script backend is unavailable.");let k=Yn(),I=Xe(g),C=Xe(m),A=Xe({kind:"local-agent",profileId:u.profileId,configurationRevision:R.configurationRevision,toolPolicyRevision:I,workspaceBindingRevision:C,skillSetRevision:d.skills.revision,tools:c.tools,workspaceByteLimit:s});if(u.expectedExecutionPolicyRevision&&u.expectedExecutionPolicyRevision!==A)throw await w?.dispose(),d.scope.dispose(),new Error("Local Agent execution policy revision changed.");let h=d.scope.resolve(u.ref.name)?.agent;if(!h)throw await w?.dispose(),d.scope.dispose(),new Error(`User Markdown Agent not found: ${u.ref.name}`);let v={ownerSessionId:u.ownerSessionId,bindingId:k,kind:"local-agent",executionPolicyRevision:A,toolPolicyRevision:I,workspaceBindingRevision:C,workspace:m,toolPolicy:g,effectiveTools:c.tools,effectiveSkills:d.skills.refs,skillSetRevision:d.skills.revision,skillRegistry:d.skills.registry,skillScriptRunner:w,remoteContracts:c.contracts,toolRegistrations:c.registrations,workspaceByteLimit:s,scope:d.scope,loadedAgent:d.loaded,agent:h,configurationRevision:d.configurationRevision};return t.set(k,v),l.add(k),{...R,ownerSessionId:u.ownerSessionId,bindingId:k,executionPolicyRevision:A,toolPolicyRevision:I,workspaceBindingRevision:C,effectiveTools:c.tools}},async startLocal(u){let l=i(u.ownerSessionId,u.bindingId);if(l.kind!=="local-agent"||!l.agent||!l.scope)throw new Error("Runtime Agent binding kind mismatch.");if(l.configurationRevision!==u.expectedConfigurationRevision)throw new Error("User Markdown Agent configuration revision changed.");if(l.executionPolicyRevision!==u.expectedExecutionPolicyRevision)throw new Error("Local Agent execution policy revision changed.");let m=await Qo(e,l,u.sessionId),g=typeof l.agent.instructions=="string"?l.agent.instructions:l.agent.instructions({});return e.runs.start({sessionId:u.sessionId,input:u.input,permissionBroker:u.permissionBroker,agentContext:u.agentContext,options:{...l.agent.provider?{provider:l.agent.provider}:{},...l.agent.model?{modelOverride:l.agent.model}:{},...l.agent.effort?{effort:l.agent.effort}:{},context:{executionCwd:m,gitRoot:m,managedTaskWorkspaceDir:m,systemPromptOverride:g,agentScope:l.scope,toolVisibilityPolicy:o(s=>l.effectiveTools.includes(s.name),"toolVisibilityPolicy"),skillRegistry:l.skillRegistry,skillScriptRunner:l.skillScriptRunner,assertReadablePath:o(s=>{Tn(m,s)},"assertReadablePath"),skillsPrompt:Jo(l.effectiveSkills,l.skillRegistry)},skillDynamicContext:{disable:!0},guardrails:[Go(l,m)],events:Vo()}})},async prepareWorkspace(u){let l=i(u.ownerSessionId,u.bindingId);if(l.workspace.mode==="fixed")return l.workspace.root;if(!/^[a-f0-9]{32,64}$/.test(u.contextKey))throw new Error("Managed Runtime workspace context key is invalid.");let m=Q.join(e.managedWorkspaceRoot,"contexts",u.contextKey);return await ni(m,{recursive:!0}),m},async releaseBinding(u){r(u.ownerSessionId),await a(i(u.ownerSessionId,u.bindingId))},async closeOwnerSession(u){let l=r(u);for(let m of[...l])await a(i(u,m));n.delete(u)}}}o(di,"createRuntimeAgentBindingService");import{spawn as wd,spawnSync as hd}from"node:child_process";import{randomUUID as Zt}from"node:crypto";import{constants as vd,readdirSync as Sd,statSync as kd}from"node:fs";import{copyFile as mi,lstat as Id,mkdir as Be,readFile as er,realpath as An,rm as et,stat as tt,writeFile as nr}from"node:fs/promises";import{createRequire as bd}from"node:module";import pi from"node:os";import K from"node:path";import{pathToFileURL as Pd}from"node:url";import{SandboxManager as Qt,getWindowsSandboxUserStatus as Ed,installWindowsSandbox as hf,verifyWindowsWfpEgress as Dd}from"@anthropic-ai/sandbox-runtime";var nt="0.0.65",ui=1048576,xd=12e4,fi=bd(import.meta.url),Td=process.env.KODAX_BUNDLED==="true"?void 0:Pd(fi.resolve("@anthropic-ai/sandbox-runtime")).href,Ad=new Set([".ssh",".aws",".azure",".gnupg",".kodax",".agents"]),Cd=new Set([".env",".npmrc",".pypirc","credentials","id_rsa","id_ed25519"]),Md=JSON.stringify(to),li=JSON.stringify(Gn),Od=String.raw`
8
+ import { spawn } from 'node:child_process';
9
+ import { readFile } from 'node:fs/promises';
10
+ const { SandboxManager } = await import(process.argv[1]);
11
+ const request = JSON.parse(await readFile(process.argv[2], 'utf8'));
12
+ const endpoints = new Set(request.endpoints.map((item) => item.host.toLowerCase() + ':' + item.port));
13
+ const callback = request.endpoints.length === 0 ? undefined : async ({ host, port }) => endpoints.has(host.toLowerCase() + ':' + port);
14
+ let child;
15
+ try {
16
+ await SandboxManager.initialize(request.config, callback);
17
+ const quote = (value) => process.platform === 'win32'
18
+ ? '"' + value.replaceAll('"', '""') + '"'
19
+ : "'" + value.replaceAll("'", "'\"'\"'") + "'";
20
+ const internalElectronNode = request.command === process.execPath && process.versions.electron !== undefined;
21
+ const childArgs = internalElectronNode
22
+ ? ['--import', ${Md}, ...request.args]
23
+ : request.args;
24
+ const command = [request.command, ...childArgs].map(quote).join(' ');
25
+ if (process.platform === 'win32') {
26
+ const wrapped = await SandboxManager.wrapWithSandboxArgv(command, 'cmd', undefined, undefined, request.cwd);
27
+ const childEnv = internalElectronNode
28
+ ? { ...wrapped.env, [${li}]: '1' }
29
+ : wrapped.env;
30
+ child = spawn(wrapped.argv[0], wrapped.argv.slice(1), { cwd: request.cwd, env: childEnv, shell: false, stdio: 'inherit' });
31
+ } else {
32
+ const wrapped = await SandboxManager.wrapWithSandbox(command);
33
+ const childEnv = internalElectronNode
34
+ ? { ...process.env, [${li}]: '1' }
35
+ : process.env;
36
+ child = spawn(wrapped, { cwd: request.cwd, env: childEnv, shell: true, stdio: 'inherit' });
37
+ }
38
+ const stop = () => child?.kill('SIGTERM');
39
+ process.once('SIGINT', stop);
40
+ process.once('SIGTERM', stop);
41
+ const code = await new Promise((resolve, reject) => {
42
+ child.once('error', reject);
43
+ child.once('exit', (exitCode, signal) => resolve(signal ? 1 : exitCode ?? 1));
44
+ });
45
+ SandboxManager.cleanupAfterCommand();
46
+ await SandboxManager.reset();
47
+ process.exitCode = code;
48
+ } catch (error) {
49
+ process.stderr.write((error instanceof Error ? error.message : String(error)) + '\n');
50
+ await SandboxManager.reset().catch(() => undefined);
51
+ process.exitCode = 1;
52
+ }
53
+ `,Yt;function ci(e){return e instanceof Error?e.message:String(e)}o(ci,"errorText");async function _d(e={}){return e.refresh&&(Yt=void 0),Yt??=Ld(),Yt}o(_d,"doctorSandboxRuntime");async function Ld(){let e=[];Qt.isSupportedPlatform()||e.push(`Unsupported platform: ${process.platform}.`);let n=Qt.checkDependencies();e.push(...n.warnings,...n.errors);let t=n.errors.length>0;if(process.env.KODAX_BUNDLED!=="true")try{let u=JSON.parse(await er(fi.resolve("@anthropic-ai/sandbox-runtime/package.json"),"utf8"));u.version!==nt&&(t=!0,e.push(`ASRT package version mismatch: expected ${nt}, found ${String(u.version)}.`))}catch(u){t=!0,e.push(`ASRT package provenance check failed: ${ci(u)}`)}let r=process.env.KODAX_A2A_NODE??(process.env.KODAX_BUNDLED==="true"?"node":process.execPath),i=Dn({args:["--version"],env:Ri(),isElectron:r===process.execPath&&process.versions.electron!==void 0}),a=hd(r,i.args,{env:i.env,shell:!1,encoding:"utf8",windowsHide:!0,timeout:5e3});if(a.status!==0){t=!0;let u=a.error?.message??(a.stderr.trim()||r);e.push(`JavaScript Skill interpreter is unavailable: ${u}.`)}if(process.platform==="win32")try{let u=Ed();!u.provisioned||!u.credPresent||!u.inSandboxGroup?(t=!0,e.push("Windows sandbox account is not fully provisioned.")):await Dd()}catch(u){t=!0,e.push(ci(u))}return{ready:Qt.isSupportedPlatform()&&!t,platform:process.platform,version:nt,diagnostics:e,setupRequired:t}}o(Ld,"inspectSandboxRuntime");function Le(e,n){let t=e.replaceAll("\\","/").replace(/^\.\//,"");if(!t||K.posix.isAbsolute(t)||t.split("/").includes(".."))throw new Error(`${n} must be a safe relative path.`);return t}o(Le,"canonicalRelative");function Cn(e,n){let t=K.relative(e,n);return t===""||!t.startsWith("..")&&!K.isAbsolute(t)}o(Cn,"isInside");function gi(e){let n=e.split(K.sep).map(t=>t.toLowerCase());return n.some(t=>Ad.has(t))||n.some(t=>Cd.has(t)||t.startsWith(".env."))}o(gi,"isSensitiveRelative");async function jd(e,n){await Be(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 nr(K.join(n,"SKILL.md"),await er(e.skillFilePath),{mode:384});for(let{folder:r,file:i}of t){let a=Le(i.relativePath,`Skill ${e.name} support file`),u=K.join(n,r,...a.split("/"));await Be(K.dirname(u),{recursive:!0,mode:448}),await nr(u,await er(i.path),{mode:384})}}o(jd,"copySkillSnapshot");async function Nd(e,n){let t=new Map;for(let[r,i]of Object.entries(e.admissions)){let a=await e.registry.loadFull(r),u=new Map((a.scripts??[]).map(m=>[`scripts/${Le(m.relativePath,`Skill ${r} script`)}`,m])),l=K.join(n,r.replace(/[^A-Za-z0-9._-]/g,"_"));await jd(a,l);for(let m of i){let g=Le(m,`toolPolicy.skillScripts.${r}`);if(!u.has(g))throw new Error(`Skill "${r}" has no script "${g}".`);t.set(`${r}\0${g}`,{skill:r,relativePath:g,snapshotPath:K.join(l,...g.split("/"))})}}return t}o(Nd,"snapshotAdmissions");function Fd(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(Fd,"networkEndpoints");function Ri(){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(Ri,"sanitizedEnvironment");function $d(e){let n=K.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"?K.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??K.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($d,"interpreterFor");async function qd(e,n){let t=[],r=0,i=o(l=>{r+=l.byteLength,r>ui?e.kill("SIGTERM"):t.push(l)},"append");e.stdout?.on("data",i),e.stderr?.on("data",i);let a=setTimeout(()=>{e.kill("SIGTERM")},xd),u=o(()=>{e.kill("SIGTERM")},"abort");n?.addEventListener("abort",u,{once:!0});try{let l=await new Promise((m,g)=>{e.once("error",g),e.once("close",s=>m({code:s??1,stdout:Buffer.concat(t).toString("utf8"),stderr:""}))});if(r>ui)throw new Error("Sandboxed Skill script output exceeded 1 MiB.");if(n?.aborted)throw n.reason??new Error("Sandboxed Skill script was cancelled.");if(l.code!==0)throw new Error(`Sandboxed Skill script failed (${l.code}): ${l.stdout.trim()}`);return{stdout:l.stdout,stderr:l.stderr}}finally{clearTimeout(a),n?.removeEventListener("abort",u)}}o(qd,"collectProcess");async function Hd(e,n){let t=K.join(pi.tmpdir(),`kodax-asrt-${process.pid}-${Zt()}.json`),r={...e,config:{...e.config,filesystem:{...e.config.filesystem,denyRead:[...e.config.filesystem.denyRead,t]}}};await nr(t,JSON.stringify(r),{mode:384});try{let i=process.env.KODAX_BUNDLED==="true"?["__asrt-broker",t]:["--input-type=module","-e",Od,Td,t],a=Dn({args:i,env:Ri(),isElectron:process.versions.electron!==void 0}),u=wd(process.execPath,a.args,{env:a.env,shell:!1,stdio:["ignore","pipe","pipe"],windowsHide:!0});return(await qd(u,n)).stdout}finally{await et(t,{force:!0})}}o(Hd,"runBroker");async function Kd(e,n){let t=await An(e),r=K.resolve(e,Le(n,"Skill script input")),i=await An(r);if(!Cn(t,i)||gi(K.relative(t,i)))throw new Error("Skill script input is outside the permitted workspace surface.");if(!(await tt(i)).isFile())throw new Error("Skill script inputs must be files.");return i}o(Kd,"workspaceSource");async function Xd(e,n){let t=await An(e),r=K.resolve(e,Le(n,"Skill script output target"));if(!Cn(K.resolve(e),r)||gi(K.relative(K.resolve(e),r)))throw new Error("Skill script output target is outside the permitted workspace surface.");if(await Be(K.dirname(r),{recursive:!0}),!Cn(t,await An(K.dirname(r))))throw new Error("Skill script output target escapes through a symlink.");try{throw await tt(r),new Error("Skill script output target already exists.")}catch(i){if(i.code!=="ENOENT")throw i}return r}o(Xd,"workspaceTarget");async function Bd(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 a=await Kd(e,i.path),u=Le(i.as??K.basename(a),"Skill script staged input"),l=K.resolve(n,"inputs",...u.split("/"));if(!Cn(K.join(n,"inputs"),l))throw new Error("Skill script staged input escapes staging.");await Be(K.dirname(l),{recursive:!0,mode:448}),await mi(a,l)}}o(Bd,"stageInputFiles");async function Ud(e,n,t,r,i){if(t.outputs.length>0&&r!=="write")throw new Error("Skill script outputs require workspace write access.");let a=[];for(let u of t.outputs){let l=Le(u.path,"Skill script staged output"),m=K.resolve(n,"outputs",...l.split("/")),g=await An(m);if(!Cn(K.join(n,"outputs"),g)||(await Id(m)).isSymbolicLink()||!(await tt(m)).isFile())throw new Error(`Skill script did not produce output "${l}".`);let s=await Xd(e,u.target);if(i!==void 0&&yi(e,!0)+(await tt(m)).size>i)throw new Error("Skill script outputs would exceed the remote workspace byte quota.");await mi(m,s,vd.COPYFILE_EXCL),a.push(K.relative(e,s))}return a}o(Ud,"promoteOutputs");function yi(e,n=!1){let t=0;for(let r of Sd(e,{withFileTypes:!0})){if(n&&r.name===".kodax-a2a-script"||r.isSymbolicLink())continue;let i=K.join(e,r.name);r.isDirectory()?t+=yi(i):r.isFile()&&(t+=kd(i).size)}return t}o(yi,"directorySize");function Wd(e,n,t,r){let i=pi.homedir(),a=K.isAbsolute(r)?[r]:[];return{network:{allowedDomains:[],deniedDomains:[],strictAllowlist:t.length===0,allowUnixSockets:[],allowAllUnixSockets:!1,allowLocalBinding:!1},filesystem:{denyRead:[i],allowRead:[e,n,process.execPath,...a],allowWrite:[e],denyWrite:[i]}}}o(Wd,"sandboxConfig");async function wi(e){let n=await _d();if(!n.ready)throw new Error(`ASRT ${nt} is not ready: ${n.diagnostics.join(" ")||"run kodax sandbox setup"}`);let t=K.join(e.snapshotRoot,Zt()),r=K.join(t,"skills");await Be(r,{recursive:!0,mode:448});try{let i=await Nd(e,r),a=Fd(e.network),u=Promise.resolve();return{async run(l,m){let g=u,s;if(u=new Promise(d=>{s=d}),await g,m.signal?.aborted)throw s?.(),m.signal.reason??new Error("Sandboxed Skill script was cancelled.");try{if(l.args.length>64||l.args.some(f=>f.length>8192))throw new Error("Skill script arguments exceed the bounded remote contract.");if(l.inputs.length>32||l.outputs.length>32)throw new Error("Skill script file mappings exceed the bounded remote contract.");let d=Le(l.script,"Skill script"),R=i.get(`${l.skill}\0${d}`);if(!R)throw new Error("Skill script is not admitted by this Runtime binding.");if([".cmd",".bat"].includes(K.extname(R.snapshotPath).toLowerCase())&&l.args.some(f=>/[&|<>^]/.test(f)))throw new Error("Batch Skill script arguments cannot contain command operators.");let c=K.join(m.workspaceRoot,".kodax-a2a-script",Zt());try{await Be(K.join(c,"inputs"),{recursive:!0,mode:448}),await Be(K.join(c,"outputs"),{recursive:!0,mode:448}),await Bd(m.workspaceRoot,c,l,e.workspaceAccess);let f=$d(R.snapshotPath),w=await Hd({config:Wd(c,t,a,f.command),command:f.command,args:[...f.args,...l.args],cwd:c,endpoints:a},m.signal),k=await Ud(m.workspaceRoot,c,l,e.workspaceAccess,e.workspaceByteLimit);return JSON.stringify({stdout:w.trim(),outputs:k})}finally{await et(c,{recursive:!0,force:!0})}}finally{s?.()}},async dispose(){await u,await et(t,{recursive:!0,force:!0})}}}catch(i){throw await et(t,{recursive:!0,force:!0}),i}}o(wi,"createAsrtSkillScriptRunner");import{createHash as Jd}from"node:crypto";function Si(e){let n=Nt({rootDir:e.rootDir,clientIdentity:hi(e.defaultClientIdentity),proposalStores:e.proposalStores}),t,r=o(()=>(t??=n.initialize(),t),"ensureReady"),i=o(u=>{let l=hi(u),m=Nt({rootDir:e.rootDir,clientIdentity:l,proposalStores:e.proposalStores});return vi(m,r)},"forClient"),a=vi(n,r);return Object.assign(a,{forClient:i})}o(Si,"createRuntimeLearningOwner");function Me(e,n){let t=e;return typeof t.forClient=="function"?t.forClient(n):e}o(Me,"bindRuntimeLearningClient");function hi(e){return`client_${Jd("sha256").update(e).digest("hex").slice(0,32)}`}o(hi,"learningClientFileKey");function vi(e,n){let t,r=o(()=>(t??=n?.()??e.initialize(),t),"ensureReady");return{list:o(async i=>(await r(),e.list(i)),"list"),get:o(async i=>(await r(),e.get(i)),"get"),getSnapshot:o(async()=>(await r(),e.getSnapshot()),"getSnapshot"),events:o(async i=>(await r(),e.events(i)),"events"),subscribe:o(i=>zd(r(),e,i),"subscribe"),acknowledge:o(async i=>{await r(),await e.acknowledge(i)},"acknowledge"),snooze:o(async(i,a)=>{await r(),await e.snooze(i,a)},"snooze"),reject:o(async i=>{await r(),await e.reject(i)},"reject"),disable:o(async i=>{await r(),await e.disable(i)},"disable"),rollback:o(async i=>{await r(),await e.rollback(i)},"rollback"),promote:o(async(i,a)=>{await r(),await e.promote(i,a)},"promote"),review:o(async i=>{await r(),await e.review(i)},"review"),trust:o(async i=>{await r(),await e.trust(i)},"trust")}}o(vi,"createInitializedFacade");function zd(e,n,t){return{[Symbol.asyncIterator](){let r=!1,i,a=e.then(()=>{if(!r)return i=n.subscribe(t)[Symbol.asyncIterator](),i});return{async next(){let u=await a;return r||!u?{done:!0,value:void 0}:u.next()},async return(){return r=!0,i?.return?.()??{done:!0,value:void 0}}}}}}o(zd,"subscribeWhenReady");import{randomUUID as it}from"node:crypto";var Vd=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"]),Gd=new Set(["run.queued","run.started","run.updated","run.completed","run.failed","run.cancelled","run.interrupted"]);function tr(e){if(!ee(e))return Mn("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"||!Vd.has(e.type))return Mn("Runtime event envelope is malformed or has an unknown type.");if((e.type==="assistant.delta"||e.type==="thinking.delta")&&(!ee(e.payload)||typeof e.payload.text!="string"))return Mn(`${e.type} requires a string text payload.`);if(Gd.has(e.type)&&!Zd(e.payload))return Mn(`${e.type} requires a RuntimeRunStatus payload.`);let n=Qd(e.type,e.payload);return n!==void 0?Mn(`${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(tr,"parseRuntimeEvent");function Qd(e,n){if(e==="session.created")return Ae(n,["id","title"])?void 0:"requires a RuntimeSession payload.";if(e==="session.loaded")return Ae(n,["id","title"])||Ae(n,["provider","sessionId"])?void 0:"requires a RuntimeSession or provider session payload.";if(e==="session.settings.updated")return ee(n)&&typeof n.sessionId=="string"&&Number.isSafeInteger(n.revision)&&ee(n.settings)&&ee(n.patch)?void 0:"requires a session settings update payload.";if(e==="thinking.finished")return ee(n)&&typeof n.thinking=="string"?void 0:"requires a string thinking payload.";if(e==="tool.started")return ee(n)&&Ae(n.tool,["id","name"])?void 0:"requires a tool descriptor payload.";if(e==="tool.progress")return ee(n)&&(Ae(n.update,["id","message"])||typeof n.toolName=="string"&&typeof n.partialJson=="string")?void 0:"requires a tool progress payload.";if(e==="tool.finished")return ee(n)&&Ae(n.result,["id","name","content"])?void 0:"requires a tool result payload.";if(e==="run.progress")return Yd(n);if(e==="todo.updated")return ee(n)&&Array.isArray(n.items)?void 0:"requires an items array payload.";if(e==="user_input.requested"){let t=ee(n)&&Ae(n,["id","sessionId","runId","kind","createdAt","expiresAt"])&&Number.isSafeInteger(n.revision),r=ee(n)&&Ae(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 ee(n)&&typeof n.requestId=="string"?void 0:"requires a requestId payload.";if(e==="permission.requested")return Ae(n,["id","sessionId","runId","toolName","createdAt"])?void 0:"requires a RuntimePermissionRequest payload.";if(e==="turn.started"||e==="turn.completed"||e==="turn.failed")return Ae(n,["sessionId","turnId"])?void 0:"requires a turn payload.";if(e==="workflow.started"||e==="workflow.updated"||e==="workflow.finished")return ee(n)?void 0:"requires a workflow event payload.";if(e==="context.budget.snapshot"||e==="tool.exposure.planned")return ee(n)?void 0:"requires an object payload.";if(e==="runtime.warning")return ee(n)&&typeof n.message=="string"?void 0:"requires a warning message payload."}o(Qd,"validateKnownRuntimeEventPayload");function Yd(e){return!ee(e)||typeof e.kind!="string"?"requires a discriminated progress payload.":e.kind==="managed_task_status"?ee(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"?ee(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(Yd,"validateRunProgressPayload");function Zd(e){return ee(e)&&typeof e.runId=="string"&&typeof e.sessionId=="string"&&typeof e.startedAt=="string"&&typeof e.provider=="string"&&typeof e.phase=="string"}o(Zd,"isRuntimeRunStatusPayload");function Ae(e,n){return ee(e)&&n.every(t=>typeof e[t]=="string")}o(Ae,"hasStrings");function Mn(e){return{ok:!1,error:e}}o(Mn,"invalid");function ee(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}o(ee,"isRecord");var je="kodax-runtime-daemon",rr=1,an=["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","learning.list","learning.get","learning.snapshot","learning.events","learning.acknowledge","learning.snooze","learning.reject","learning.disable","learning.rollback","learning.promote","learning.review","learning.trust","config.read","config.patch","config.reload","model.list","provider.list","provider.custom.list","provider.custom.upsert","provider.custom.remove","mcp.server.list","mcp.server.get","mcp.server.validate","mcp.server.upsert","mcp.server.delete","mcp.server.remove","mcp.server.reload","mcp.tool.list","extension.list","extension.reload","command.list","command.resolve","skill.list","skill.describe","skill.read","artifact.create","artifact.get","artifact.delete","agentRegistrations.list","agentRegistrations.upsert","agentRegistrations.setEnabled","agentRegistrations.remove","agents.listDispatchable","agents.describe","agents.preflight","agents.tree","agents.detail","agents.spawn","agents.send","agents.followup","agents.interrupt","agents.output","agents.events","agents.wait","context.budget.get","tool.exposure.preview"],eu=["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","learning.acknowledge","learning.snooze","learning.reject","learning.disable","learning.rollback","learning.promote","learning.review","learning.trust","config.patch","config.reload","provider.custom.upsert","provider.custom.remove","mcp.server.upsert","mcp.server.delete","mcp.server.remove","mcp.server.reload","extension.reload","artifact.create","artifact.delete","agentRegistrations.upsert","agentRegistrations.setEnabled","agentRegistrations.remove","agents.spawn","agents.send","agents.followup","agents.interrupt"],Ii=["agentTasks.list","agentTasks.start","agentTasks.get","agentTasks.events","agentTasks.wait","agentTasks.sendInput","agentTasks.cancel","agentTasks.reconcile"],nu=new Set([...an,...Ii]),tu=new Set(eu),ru=new Set(["credential.register","credential.revoke","credential.supply","host_tool.register","host_tool.revoke","host_tool.complete"]),ou=new Set(["event","credential.request","host_tool.invoke","runtime.warning"]),iu=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 rt(e,n,t,r){return{protocol:je,version:1,kind:"request",id:e,method:n,...t!==void 0?{params:t}:{},...r!==void 0?{operation:r}:{}}}o(rt,"createRuntimeDaemonRequest");function Ue(e){return tu.has(e)}o(Ue,"isRuntimeDaemonMutationMethod");function bi(e){return Ue(e)||ru.has(e)}o(bi,"isRuntimeDaemonDrainingSensitiveMethod");function Pi(e){return Ii.includes(e)}o(Pi,"isRuntimeDaemonRetiredMethod");function Ei(e,n){return{protocol:je,version:1,kind:"response",id:e,result:n===void 0?null:n}}o(Ei,"createRuntimeDaemonSuccessResponse");function Ne(e,n){return{protocol:je,version:1,kind:"error",...n!==void 0?{id:n}:{},error:e}}o(Ne,"createRuntimeDaemonErrorResponse");function On(e,n){return{protocol:je,version:1,kind:"notification",method:e,...n!==void 0?{params:n}:{}}}o(On,"createRuntimeDaemonNotification");function or(e){if(!ot(e))return!1;let n=e;return n.kind==="request"&&typeof n.id=="string"&&n.id.length>0&&typeof n.method=="string"&&nu.has(n.method)&&(n.operation===void 0||du(n.operation))}o(or,"isRuntimeDaemonRequest");function dn(e){if(!ot(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(dn,"isRuntimeDaemonSuccessResponse");function un(e){if(!ot(e))return!1;let n=e;return n.kind==="error"&&(n.id===void 0||typeof n.id=="string")&&au(n.error)}o(un,"isRuntimeDaemonErrorResponse");function _n(e){if(!ot(e))return!1;let n=e;return n.kind==="notification"&&typeof n.method=="string"&&ou.has(n.method)}o(_n,"isRuntimeDaemonNotification");function su(e){return or(e)||dn(e)||un(e)||_n(e)}o(su,"isRuntimeDaemonFrame");function Di(e){let n;try{n=JSON.parse(e)}catch{return ki("Frame is not valid JSON.")}return su(n)?n:ki("Frame does not match the runtime daemon protocol.")}o(Di,"parseRuntimeDaemonFrame");function ki(e){return Ne({code:"invalid_frame",message:e})}o(ki,"invalidFrame");function ot(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let n=e;return n.protocol===je&&n.version===1}o(ot,"isFrameBase");function au(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let n=e;return typeof n.code=="string"&&iu.has(n.code)&&typeof n.message=="string"}o(au,"isRuntimeDaemonError");function du(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(du,"isRuntimeDaemonOperationEnvelope");var Li=256,xi=1e3,Je=class extends Error{constructor(t,r){super(r);this.path=t;this.name="RuntimeTransportBoundaryError"}path;static{o(this,"RuntimeTransportBoundaryError")}code="invalid_transport_value"},ir=class extends Error{static{o(this,"RuntimeDaemonUpgradeRequiredError")}code="daemon_upgrade_required";capability="actorControlPlane";restartRequired=!0;constructor(){super("Runtime daemon does not advertise actorControlPlane v1. Upgrade KodaX and restart the daemon before using Runtime Actor control."),this.name="RuntimeDaemonUpgradeRequiredError"}};function Ti(e){let n=e.activeAgentTurns??e.activeAgentTasks??[];return{...e,activeAgentTurns:n,activeAgentTasks:n}}o(Ti,"normalizeRuntimeDaemonPreflight");function st(e){let n=o((s,d,R)=>e.transport.request(s,d,Ue(s)?mu(e.journalEpoch,R):void 0),"request"),t=o(()=>{let s=e.capabilities?.actorControlPlane;if(typeof s!="object"||s===null||!("version"in s)||s.version!==1||!("methodNamespace"in s)||s.methodNamespace!=="agents")return new ir},"actorControlPlaneError"),r=new Map,i=new Map,a=new Map,u=new Set,l={state:"connected",connectionId:`connection_${it().replace(/-/g,"")}`,runtimeEpoch:e.identity.runtimeId,...e.journalEpoch!==void 0?{journalEpoch:e.journalEpoch}:{},reconnectable:!1},m=e.transport.subscribeLifecycle?.(s=>{l={...s,runtimeEpoch:e.identity.runtimeId,...e.journalEpoch!==void 0?{journalEpoch:e.journalEpoch}:{}};for(let d of u)try{d(l)}catch(R){te({source:"runtime.daemon.client",level:"warn",message:"Runtime connection lifecycle listener failed.",detail:{errorType:R instanceof Error?R.name:typeof R}})}}),g=e.transport.subscribe(s=>{s.method==="credential.request"?lu(s.params,r,n).catch(()=>Ai("credential request")):s.method==="host_tool.invoke"&&cu(s.params,i,a,n).catch(()=>Ai("host tool invocation"))});return{identity:e.identity,capabilities:e.capabilities,...e.grantedScopes!==void 0?{grantedScopes:e.grantedScopes}:{},sessions:{create(s={}){let{operation:d,...R}=s;return n("session.create",R,d)},load(s){return n("session.load",{sessionId:s})},list(s){return n("session.list",s)},transcript(s){return n("session.transcript",{sessionId:s})},observe(s,d){return fu(e.transport,n,s,d)},fork(s){return n("session.fork",s)},getSettings(s){return n("session.settings.get",{sessionId:s})},getSettingsVersioned(s){return n("session.settings.getVersioned",{sessionId:s})},async updateSettings(s,d){let R=await this.getSettingsVersioned(s);return(await this.updateSettingsVersioned(s,d,{expectedRevision:R.revision})).value},updateSettingsVersioned(s,d,R){return n("session.settings.updateVersioned",{sessionId:s,patch:d,expectedRevision:R.expectedRevision},R)},appendNotice(s){return n("session.notice.append",s)},rewind(s){return n("session.rewind",s)},setActiveEntry(s){return n("session.active_entry.set",s)},compact(s){return n("session.compact",s)},async archive(s){await n("session.archive",{sessionId:s})},async unarchive(s){await n("session.unarchive",{sessionId:s})},async delete(s){await n("session.delete",{sessionId:s})}},runs:{async start(s){let{operation:d,...R}=s;ln(R,"run.start");let c=pe(await n("run.start",R,d)),f=ce(c,"runId"),w=ce(c,"sessionId"),k=hu(c,"turnId");return{runId:f,sessionId:w,...k!==void 0?{turnId:k}:{},result:Oi(n,f)}},async submitInput(s){let{operation:d,...R}=s;return ln(R,"run.input.submit"),n("run.input.submit",R,d)},await(s){return Oi(n,s)},get(s){return n("run.get",{runId:s})},list(s){return n("run.list",s)},async abort(s){await n("run.abort",{runId:s})},async setModel(s,d){await n("run.model.set",{runId:s,model:d})},async setProvider(s,d){await n("run.provider.set",{runId:s,provider:d})},async setReasoning(s,d){await n("run.reasoning.set",{runId:s,reasoning:d})}},events:{subscribe(s,d){return pu(e.transport,n,s,d)},replay(s){return n("event.replay",s).then(d=>{if(!Array.isArray(d))throw new Error("Expected daemon event replay array.");return d.flatMap(R=>{let c=ji(R);return c===void 0?[]:[c]})})}},permissions:{request(s){return n("permission.request",s)},listPending(s){return n("permission.list",s)},respond(s,d,R){return n("permission.respond",{requestId:s,decision:d,...R?.runId!==void 0?{runId:R.runId}:{}})},listGrants(){return n("permission.grants.list")},revokeGrant(s,d){return n("permission.grants.revoke",{grantId:s,expectedRevision:d})}},userInputs:{listPending(s){return n("user_input.listPending",s)},respond(s,d,R){return n("user_input.respond",{requestId:s,answer:d,...R?.expectedRevision!==void 0?{expectedRevision:R.expectedRevision}:{},...R?.runId!==void 0?{runId:R.runId}:{}})},dismiss(s,d){return n("user_input.dismiss",{requestId:s,...d?.expectedRevision!==void 0?{expectedRevision:d.expectedRevision}:{},...d?.runId!==void 0?{runId:d.runId}:{}})}},credentials:{async register(s,d){let R=`credlease_${it().replace(/-/g,"")}`;r.set(R,d);try{return await n("credential.register",{leaseId:R,providers:s.providers,...s.expiresAt!==void 0?{expiresAt:s.expiresAt}:{}})}catch(c){throw r.delete(R),c}},async resume(s,d){r.set(s,d);try{let R=await n("credential.get",{leaseId:s});if(R==null)throw Object.assign(new Error(`Credential lease is unavailable after Runtime reconnect: ${s}`),{code:"credential_unavailable"});return pe(R)}catch(R){throw r.delete(s),R}},async revoke(s){let d=await n("credential.revoke",{leaseId:s});return d&&r.delete(s),d}},hostTools:{async register(s,d){Ci(s,d);let R=`hostlease_${it().replace(/-/g,"")}`;i.set(R,d);try{return await n("host_tool.register",{leaseId:R,tools:s})}catch(c){throw i.delete(R),c}},async resume(s,d){i.set(s,d);try{let R=await n("host_tool.get",{leaseId:s});if(R==null)throw Object.assign(new Error(`Host tool lease is unavailable after Runtime reconnect: ${s}`),{code:"host_tool_unavailable"});let c=pe(R);return Ci(c.tools,d),c}catch(R){throw i.delete(s),R}},async getInvocation(s){return We(await n("host_tool.invocation.get",{invocationId:s}))},async revoke(s){let d=await n("host_tool.revoke",{leaseId:s});return d&&i.delete(s),d}},operations:{get(s){return n("operation.get",s)}},workflows:{list(s){return n("workflow.list",s)},get(s){return n("workflow.get",{runId:s}).then(We)},subscribe(s,d){return Ru(e.transport,n,s,d)},pause(s){return n("workflow.pause",{runId:s})},resume(s){return n("workflow.resume",{runId:s})},stop(s){return n("workflow.stop",{runId:s})}},learning:{list(s){return n("learning.list",s??{})},get(s){return n("learning.get",{nameOrSlug:s})},getSnapshot(){return n("learning.snapshot")},events(s){return n("learning.events",{...s!==void 0?{afterRevision:s}:{}})},subscribe(s){return uu(n,s?.afterRevision??0)},async acknowledge(s){await n("learning.acknowledge",{nameOrSlug:s})},async snooze(s,d){await n("learning.snooze",{nameOrSlug:s,until:d})},async reject(s){await n("learning.reject",{nameOrSlug:s})},async disable(s){await n("learning.disable",{nameOrSlug:s})},async rollback(s){await n("learning.rollback",{nameOrSlug:s})},async promote(s,d){await n("learning.promote",{nameOrSlug:s,scope:d})},async review(s){await n("learning.review",{nameOrSlug:s})},async trust(s){await n("learning.trust",{nameOrSlug:s})}},config:{read(){return n("config.read")},patch(s){return n("config.patch",{patch:s})},reload(){return n("config.reload")}},catalog:{providers(){return n("provider.list")},models(s){return n("model.list",s)},commands(s){return n("command.list",s!==void 0?{projectRoot:s}:void 0)},resolveCommand(s){return n("command.resolve",s)},skills(s){return n("skill.list",s)},describeSkill(s){return n("skill.describe",s)},customProviders(){return n("provider.custom.list")},upsertCustomProvider(s){return n("provider.custom.upsert",{config:s})},deleteCustomProvider(s){return n("provider.custom.remove",{name:s})},extensions(){return n("extension.list")},reloadExtensions(){return n("extension.reload")}},mcp:{listServers(){return n("mcp.server.list")},getServer(s){return n("mcp.server.get",{name:s}).then(We)},validateServer(s,d){return n("mcp.server.validate",{name:s,config:d})},upsertServer(s,d){return n("mcp.server.upsert",{name:s,config:d})},deleteServer(s){return n("mcp.server.delete",{name:s})},reloadServers(){return n("mcp.server.reload")},listTools(s){return n("mcp.tool.list",s)}},artifacts:{create(s){return n("artifact.create",s)},get(s){return n("artifact.get",{artifactId:s}).then(We)},delete(s){return n("artifact.delete",{artifactId:s})}},admin:{agentRegistrations:{list(){return n("agentRegistrations.list")},upsert(s,d){return ln(s,"agentRegistrations.upsert.registration"),n("agentRegistrations.upsert",{registration:s,...d?.expectedConfigurationRevision!==void 0?{expectedConfigurationRevision:d.expectedConfigurationRevision}:{},...d?.expectedManagementOwner!==void 0?{expectedManagementOwner:d.expectedManagementOwner}:{}})},setEnabled(s,d,R){return n("agentRegistrations.setEnabled",{agentId:s,enabled:d,...R?.expectedConfigurationRevision!==void 0?{expectedConfigurationRevision:R.expectedConfigurationRevision}:{},...R?.expectedManagementOwner!==void 0?{expectedManagementOwner:R.expectedManagementOwner}:{},...R?.claimOwner!==void 0?{claimOwner:R.claimOwner}:{}}).then(We)},remove(s,d){return n("agentRegistrations.remove",{agentId:s,...d?.expectedConfigurationRevision!==void 0?{expectedConfigurationRevision:d.expectedConfigurationRevision}:{},...d?.expectedManagementOwner!==void 0?{expectedManagementOwner:d.expectedManagementOwner}:{}})}}},agents:{enabled:e.capabilities?.externalAgents===!0,listDispatchable(s){return n("agents.listDispatchable",s)},describe(s,d){return n("agents.describe",{agentId:s,query:d}).then(We)},preflight(s){return n("agents.preflight",s)},tree(s){let d=t();return d?Promise.reject(d):n("agents.tree",{sessionId:s})},detail(s,d){let R=t();return R?Promise.reject(R):n("agents.detail",{sessionId:s,actorPath:d})},spawn(s,d){let R=t();return R?Promise.reject(R):(ln(d,"agents.spawn"),n("agents.spawn",{sessionId:s,input:d}))},async send(s,d,R,c){let f=t();if(f)throw f;await n("agents.send",{sessionId:s,actorPath:d,content:R,...c!==void 0?{classification:c}:{}})},followup(s,d,R,c){let f=t();return f?Promise.reject(f):n("agents.followup",{sessionId:s,actorPath:d,objective:R,...c?.expectedRevision!==void 0?{expectedRevision:c.expectedRevision}:{}})},async interrupt(s,d,R){let c=t();if(c)throw c;await n("agents.interrupt",{sessionId:s,actorPath:d,...R!==void 0?{reason:R}:{}})},output(s,d,R){let c=t();return c?Promise.reject(c):n("agents.output",{sessionId:s,actorPath:d,...R!==void 0?{turnId:R}:{}})},events(s,d){let R=t();return R?Promise.reject(R):n("agents.events",{sessionId:s,...d!==void 0?{afterSequence:d}:{}})},wait(s,d,R){let c=t();return c?Promise.reject(c):n("agents.wait",{sessionId:s,...d!==void 0?{afterSequence:d}:{},...R!==void 0?{timeoutMs:R}:{}}).then(We)}},status:{snapshot(){return n("daemon.status")},preflight(){return n("daemon.preflight").then(s=>Ti(s))}},daemon:{inspect(){return n("daemon.management.get").then(s=>{let d=s;return{...d,preflight:Ti(d.preflight)}})},stopForInline(s){let{operation:d,...R}=s;return n("daemon.rollbackToInline",R,d)}},diagnostics:{latestContextBudget(s){return n("context.budget.get",s)},latestToolExposure(s){return n("tool.exposure.preview",s)}},connection:{current(){return l},subscribe(s){return u.add(s),s(l),{close(){u.delete(s)}}}},async close(){m?.close(),g.close(),u.clear(),r.clear(),i.clear(),a.clear(),await e.transport.close?.()}}}o(st,"createRuntimeDaemonClient");async function*uu(e,n){let t=n;for(;;){let r=await e("learning.events",{afterRevision:t});if(r.length===0){await new Promise(i=>setTimeout(i,100));continue}for(let i of r)t=i.sequence,yield i}}o(uu,"pollRuntimeLearningEvents");function Ai(e){te({source:"runtime.daemon.client",level:"warn",message:`Failed to deliver ${e} result to the Runtime daemon.`})}o(Ai,"reportReverseBridgeFailure");async function lu(e,n,t){let r=pe(e),i=ce(r,"requestId"),a=ce(r,"leaseId"),u=n.get(a);if(!u){await t("credential.supply",{requestId:i,error:"credential_lease_unavailable"});return}try{let l=await u({leaseId:a,provider:ce(r,"provider"),sessionId:ce(r,"sessionId"),runId:ce(r,"runId")});await t("credential.supply",{requestId:i,...l!==void 0?{credential:l}:{error:"credential_unavailable"}})}catch{await t("credential.supply",{requestId:i,error:"credential_broker_failed"})}}o(lu,"answerCredentialRequest");async function cu(e,n,t,r){let i=pe(e),a=ce(i,"invocationId"),u=ce(i,"leaseId"),l=ce(i,"toolName"),m=n.get(u)?.[l];if(!m){await r("host_tool.complete",{invocationId:a,error:"host_tool_unavailable"});return}let g=t.get(a);if(!g){let s=Promise.resolve().then(()=>m({invocationId:a,leaseId:u,toolName:l,sessionId:ce(i,"sessionId"),runId:ce(i,"runId"),input:pe(i.input)}));g={promise:s,settled:!1},t.set(a,g);let d=g;s.finally(()=>{d.settled=!0,Mi(t)}).catch(()=>{}),Mi(t)}try{await r("host_tool.complete",{invocationId:a,result:await g.promise})}catch{try{await r("host_tool.complete",{invocationId:a,error:"host_tool_failed"})}catch(s){throw new Error("Failed to report the Host Tool outcome to the Runtime daemon.",{cause:s})}}}o(cu,"answerHostToolInvocation");function Ci(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(Ci,"validateHostToolHandlers");function Mi(e){if(!(e.size<=xi))for(let[n,t]of e){if(e.size<=xi)return;t.settled&&e.delete(n)}}o(Mi,"pruneHostToolResults");function mu(e,n){let t=n?.journalEpoch??e;if(t!==void 0)return{operationId:n?.operationId??`op_${it().replace(/-/g,"")}`,journalEpoch:t}}o(mu,"createOperationEnvelope");function pu(e,n,t,r){return Ni(e,n,"event.subscribe",{filter:t},i=>{sr(i,r)})}o(pu,"subscribeToDaemonEvents");async function fu(e,n,t,r){let i=!1,a,u=!1,l=[],m=e.subscribe(g=>{if(i||g.method!=="event")return;let s=pe(g.params);if(a===void 0){if(!gu(s.event,t))return;l.length>=Li?u=!0:l.push(s);return}s.subscriptionId===a&&sr(s.event,r)});try{let g=pe(await n("session.observe",{sessionId:t}));if(a=ce(g,"subscriptionId"),u)throw Object.assign(new Error("Runtime session observation handshake exceeded its event buffer; full resync is required."),{code:"resync_required"});let s=pe(g.snapshot);for(let d of l.splice(0))d.subscriptionId===a&&sr(d.event,r);return{snapshot:s,close(){i||(i=!0,l.length=0,m.close(),a!==void 0&&n("event.unsubscribe",{subscriptionId:a}).catch(()=>{}))}}}catch(g){throw i=!0,l.length=0,m.close(),a!==void 0&&n("event.unsubscribe",{subscriptionId:a}).catch(()=>{}),g}}o(fu,"observeDaemonSession");function gu(e,n){return e!==null&&typeof e=="object"&&!Array.isArray(e)&&e.sessionId===n}o(gu,"isRuntimeEventForSession");function sr(e,n){let t=ji(e);t!==void 0&&n(t)}o(sr,"deliverRuntimeEvent");function ji(e){let n=tr(e);if(!n.ok){te({source:"runtime.daemon.client",level:"warn",message:`Ignored malformed Runtime event: ${n.error}`});return}return n.event}o(ji,"parseRuntimeEventForClient");function Ru(e,n,t,r){return Ni(e,n,"workflow.subscribe",{filter:t},i=>{r(i)})}o(Ru,"subscribeToDaemonWorkflowEvents");function Ni(e,n,t,r,i){let a=!1,u,l=[],m=e.subscribe(s=>{if(a||s.method!=="event")return;let d=pe(s.params);if(u===void 0){l.length>=Li&&l.shift(),l.push(d);return}d.subscriptionId===u&&i(d.event)}),g=n(t,r).then(s=>{if(u=ce(pe(s),"subscriptionId"),a){_i(n,t,u),l.length=0;return}for(let d of l.splice(0))d.subscriptionId===u&&i(d.event)}).catch(s=>{throw l.length=0,m.close(),s});return g.catch(()=>{}),{ready:g,close(){a=!0,m.close(),u!==void 0&&_i(n,t,u)}}}o(Ni,"subscribeToDaemonNotification");function Oi(e,n){return e("run.await",{runId:n}).then(yu)}o(Oi,"requestRuntimeRunResult");function yu(e){let n=pe(e),t=Object.prototype.hasOwnProperty.call(n,"error")?wu(n.error):void 0,r={...n};return delete r.error,{...r,...t!==void 0?{error:t}:{}}}o(yu,"deserializeRuntimeRunResult");function wu(e){if(e==null)return;if(e instanceof Error)return e;if(typeof e=="string")return new Error(e);let n=pe(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(wu,"deserializeRuntimeError");function _i(e,n,t){e(n==="event.subscribe"?"event.unsubscribe":"workflow.unsubscribe",{subscriptionId:t}).catch(()=>{})}o(_i,"unsubscribeRemote");function We(e){return e??void 0}o(We,"nullToUndefined");function pe(e){if(!e||typeof e!="object"||Array.isArray(e))throw new Error("Expected daemon response object.");return e}o(pe,"requireRecord");function ce(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(ce,"requireStringField");function hu(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(hu,"optionalStringField");function ln(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 Je(n,`${n} is not transport-safe: numbers must be finite.`)}if(typeof e=="function"||typeof e=="symbol"||typeof e=="bigint")throw new Je(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 Je(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 Je(n,`${n} is not transport-safe: ${i} instances cannot cross a Runtime boundary.`)}if(t.add(e),Array.isArray(e))e.forEach((i,a)=>ln(i,`${n}[${a}]`,t));else for(let[i,a]of Object.entries(e))ln(a,`${n}.${i}`,t);t.delete(e)}o(ln,"assertRuntimeTransportSafe");import{randomUUID as hc}from"node:crypto";import vc from"node:os";import Ar from"node:path";import{randomUUID as dr}from"node:crypto";import*as M from"node:fs";import ae from"node:path";function cn(e,n="default"){let t=ur(n),r=ae.resolve(e),i=ae.join(r,"runtime","daemon",t);return{profile:t,configHome:r,rootDir:i,stateFile:ae.join(i,"daemon.json"),lockFile:ae.join(i,"daemon.lock"),tokenFile:ae.join(i,"daemon.token"),logFile:ae.join(i,"daemon.log"),runsDir:ae.join(i,"runs"),eventsDir:ae.join(i,"events"),ownerPolicyFile:ae.join(i,"owner-policy.json"),ownerPolicyLockFile:ae.join(i,"owner-policy.lock")}}o(cn,"resolveRuntimeDaemonPathsFromConfigHome");function vu(e,n){let t=o(r=>{let i=ae.resolve(r);return process.platform==="win32"?i.toLowerCase():i},"resolveIdentity");return t(e)===t(n)}o(vu,"isSameRuntimeDaemonPath");function mn(e,n){let t=ae.resolve(e);return vu(n,ae.join(t,".kodax"))?t:ae.resolve(n)}o(mn,"resolveRuntimeDaemonEndpointScope");function we(e){if(!M.existsSync(e.ownerPolicyFile))return{mode:"daemon",revision:0,updatedAt:new Date(0).toISOString()};try{let n=JSON.parse(M.readFileSync(e.ownerPolicyFile,"utf8"));if(mr(n)&&(n.mode==="daemon"||n.mode==="inline")&&typeof n.revision=="number"&&Number.isSafeInteger(n.revision)&&n.revision>=0&&typeof n.updatedAt=="string")return{mode:n.mode,revision:n.revision,updatedAt:n.updatedAt}}catch{}throw new Error("Runtime owner policy is corrupt; refusing to choose an owner.")}o(we,"readRuntimeOwnerPolicy");function qi(e,n,t){xe(e);let r=Fe(e);if(!r)throw new Error("Runtime owner policy update is already in progress.");try{if(M.existsSync(e.lockFile))throw new Error("Cannot change Runtime owner mode while an owner lock exists.");return lt(e,n,t,r.nonce)}finally{ze(e,r)}}o(qi,"updateRuntimeOwnerPolicy");function Hi(e,n,t){xe(e);let r=Fe(e);if(!r)throw dt("Runtime owner rollback is already in progress.");try{let i=Y(e.lockFile);if(i?.kind!=="daemon"||i.runtimeId!==n)throw dt("Runtime daemon owner changed before rollback commit.");if(we(e).mode!=="daemon")throw dt("Runtime owner policy changed before rollback commit.");return lt(e,"inline",t,r.nonce)}finally{ze(e,r)}}o(Hi,"commitRuntimeDaemonRollbackPolicy");function ut(e){xe(e);let n=Fe(e);if(!n)throw new Error("Runtime owner transition is already in progress.");try{if(M.existsSync(e.lockFile))throw new Error("Cannot enable Runtime daemon ownership while an owner lock exists.");let t=we(e);return t.mode==="daemon"?t:lt(e,"daemon",t.revision,n.nonce)}finally{ze(e,n)}}o(ut,"enableRuntimeDaemonOwner");function Ki(e,n,t=!1){xe(e);let r=Fe(e);if(!r)throw new Error("Runtime owner transition is already in progress.");try{let i=we(e);if(i.mode!=="inline"){if(!t)throw new Error("Coder inline ownership requires explicit enableRollback: true.");if(M.existsSync(e.lockFile))throw new Error("Cannot enable inline rollback while a Coder owner lock exists.");lt(e,"inline",i.revision,r.nonce)}if(M.existsSync(e.lockFile))throw new Error(`Coder profile "${e.profile}" already has an owner.`);let a=Ji(e,n);if(!a)throw new Error(`Coder profile "${e.profile}" already has an owner.`);return a}finally{ze(e,r)}}o(Ki,"acquireRuntimeInlineOwner");function lt(e,n,t,r){let i=we(e);if(i.revision!==t)throw dt(`Runtime owner policy conflict: expected ${t}, current ${i.revision}.`);let a={mode:n,revision:i.revision+1,updatedAt:new Date().toISOString()},u=`${e.ownerPolicyFile}.${process.pid}.${r}.tmp`;try{let l=M.openSync(u,"wx",384);try{M.writeFileSync(l,`${JSON.stringify(a,null,2)}
54
+ `,"utf8"),M.fsyncSync(l)}finally{M.closeSync(l)}return M.renameSync(u,e.ownerPolicyFile),a}finally{M.rmSync(u,{force:!0})}}o(lt,"writeRuntimeOwnerPolicy");function dt(e){let n=new Error(e);return n.code="conflict",n}o(dt,"runtimeOwnerPolicyConflict");function Fe(e,n=!0){let t=dr(),r={runtimeId:`owner-transition-${t}`,pid:process.pid,createdAt:new Date().toISOString()},i;try{return i=M.openSync(e.ownerPolicyLockFile,"wx",384),M.writeFileSync(i,`${JSON.stringify({...r,nonce:t})}
55
+ `,"utf8"),M.fsyncSync(i),{nonce:t,owner:r}}catch(a){if(cr(a)&&a.code==="EEXIST")return n&&Su(e)?Fe(e,!1):void 0;throw a}finally{i!==void 0&&M.closeSync(i)}}o(Fe,"tryAcquireRuntimeOwnerCoordination");function Su(e){let n=Fi(e);if(!n||ku(n.owner.pid))return!1;try{let t=Fi(e);return!t||t.nonce!==n.nonce?!1:(M.unlinkSync(e.ownerPolicyLockFile),!0)}catch{return!1}}o(Su,"removeAbandonedRuntimeOwnerCoordination");function Fi(e){try{let n=JSON.parse(M.readFileSync(e.ownerPolicyLockFile,"utf8"));return!mr(n)||typeof n.nonce!="string"||!Qi(n)||!n.runtimeId.startsWith("owner-transition-")?void 0:{nonce:n.nonce,owner:n}}catch{return}}o(Fi,"readRuntimeOwnerCoordinationHandle");function ku(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch(n){return cr(n)&&n.code==="EPERM"}}o(ku,"isRuntimeOwnerProcessAlive");function Iu(e){return Y(e.ownerPolicyLockFile)}o(Iu,"readRuntimeOwnerCoordinator");function ze(e,n){try{let t=JSON.parse(M.readFileSync(e.ownerPolicyLockFile,"utf8"));mr(t)&&t.nonce===n.nonce&&M.unlinkSync(e.ownerPolicyLockFile)}catch{}}o(ze,"releaseRuntimeOwnerCoordination");function ct(e){if(we(e).mode!=="daemon")throw new Error(`Runtime daemon auto-start is disabled for profile "${e.profile}" by inline rollback policy.`)}o(ct,"assertRuntimeDaemonOwnerAllowed");function ur(e){let n=e.trim()||"default";if(!/^[A-Za-z0-9_.-]+$/.test(n))throw new Error(`Invalid runtime daemon profile: ${e}`);return n}o(ur,"normalizeRuntimeDaemonProfile");function xe(e){M.mkdirSync(e.rootDir,{recursive:!0}),M.mkdirSync(e.runsDir,{recursive:!0}),M.mkdirSync(e.eventsDir,{recursive:!0})}o(xe,"ensureRuntimeDaemonDirectories");function Xi(){return`dt_${dr().replace(/-/g,"")}`}o(Xi,"createRuntimeDaemonToken");function Bi(e,n){xe(e),M.writeFileSync(e.tokenFile,`${n}
56
+ `,{encoding:"utf8",mode:384}),process.platform!=="win32"&&M.chmodSync(e.tokenFile,384)}o(Bi,"writeRuntimeDaemonToken");function Ln(e){try{let n=M.readFileSync(e.tokenFile,"utf8").trim();return n.length>0?n:void 0}catch(n){if(n.code==="ENOENT")return;throw n}}o(Ln,"readRuntimeDaemonToken");function pn(e,n){xe(e);let t=`${e.stateFile}.${process.pid}.${dr()}.tmp`;try{let r=M.openSync(t,"wx",384);try{M.writeFileSync(r,`${JSON.stringify(n,null,2)}
57
+ `,"utf8"),M.fsyncSync(r)}finally{M.closeSync(r)}M.renameSync(t,e.stateFile)}finally{M.rmSync(t,{force:!0})}}o(pn,"writeRuntimeDaemonState");function Te(e,n,t,r){xe(e);let i={time:new Date().toISOString(),level:n,message:t,...r!==void 0?{data:r}:{}};M.appendFileSync(e.logFile,`${JSON.stringify(i)}
58
+ `,"utf8")}o(Te,"appendRuntimeDaemonLog");function Ui(e,n=200){if(!M.existsSync(e.logFile))return[];let t=[],r=M.readFileSync(e.logFile,"utf8").split(/\r?\n/).filter(i=>i.trim().length>0);for(let i of r.slice(-n))try{let a=JSON.parse(i);Du(a)&&t.push(a)}catch(a){t.push({time:new Date().toISOString(),level:"warn",message:`Skipped malformed daemon log line: ${a instanceof Error?a.message:String(a)}`})}return t}o(Ui,"readRuntimeDaemonLog");function Wi(e){if(M.existsSync(e.stateFile))try{let n=JSON.parse(M.readFileSync(e.stateFile,"utf8"));return Eu(n)?n:void 0}catch{return}}o(Wi,"readRuntimeDaemonState");function Ji(e,n){xe(e);let t;try{return t=M.openSync(e.lockFile,"wx",384),M.writeFileSync(t,`${JSON.stringify(n,null,2)}
59
+ `,"utf8"),M.fsyncSync(t),{file:e.lockFile,owner:n}}catch(r){if(cr(r)&&r.code==="EEXIST")return;throw r}finally{t!==void 0&&M.closeSync(t)}}o(Ji,"tryAcquireRuntimeDaemonLock");function mt(e){let n={ownerPolicyLockFile:ae.join(ae.dirname(e.file),"owner-policy.lock")},t=Fe(n);if(!t)return!1;try{return Vi(e)}finally{ze(n,t)}}o(mt,"releaseRuntimeDaemonLock");function zi(e,n){let t=Fe(e);if(!t)return!1;try{let r=Y(n.file);return lr(r,n.owner)?(Pu(e),Vi(n)):!1}finally{ze(e,t)}}o(zi,"releaseRuntimeDaemonOwnership");function Vi(e){let n=Y(e.file);return lr(n,e.owner)?(M.unlinkSync(e.file),!0):!1}o(Vi,"unlinkRuntimeDaemonLockIfOwned");function Y(e){if(M.existsSync(e))try{let n=JSON.parse(M.readFileSync(e,"utf8"));return Qi(n)?n:void 0}catch{return}}o(Y,"readRuntimeDaemonLockOwner");function Gi(e,n,t){xe(e);let r=pt(t),i=Y(e.lockFile);if(r==="healthy")return t.state&&i!==void 0&&ar(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&&Cu(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 a=r==="stale"?"stale":"missing",u=Fe(e);if(!u){let l=Y(e.lockFile)??Iu(e);return l?{kind:"wait",lockOwner:l,...t.state!==void 0?{state:t.state}:{},health:a}:{kind:"unhealthy",health:"unhealthy",...t.state!==void 0?{state:t.state}:{}}}try{return we(e).mode!=="daemon"?{kind:"unhealthy",health:"unhealthy",...t.state!==void 0?{state:t.state}:{}}:bu(e,n,t,a)}finally{ze(e,u)}}o(Gi,"claimRuntimeDaemonOwnership");function bu(e,n,t,r){let i=Y(e.lockFile);if(r==="stale"){if(i!==void 0&&(t.observedLockOwner!==void 0&&!lr(i,t.observedLockOwner)||t.state!==void 0&&!ar(i,t.state)))return at(i,t,r);$i(e)}else if(i!==void 0){if(t.observedLockOwner!==void 0&&!ar(i,t.observedLockOwner))return at(i,t,r);if(t.lockOwnerPidAlive===!1)$i(e);else return at(i,t,r)}if(r==="missing"){let l=Y(e.lockFile);if(l!==void 0)return{kind:"wait",lockOwner:l,...t.state!==void 0?{state:t.state}:{},health:r}}let a=Ji(e,n);if(a)return{kind:"claim",lock:a,health:r};let u=Y(e.lockFile);return u?at(u,t,r):{kind:"unhealthy",health:"unhealthy",...t.state!==void 0?{state:t.state}:{}}}o(bu,"claimAvailableRuntimeDaemonOwnership");function at(e,n,t){return{kind:"wait",lockOwner:e,...n.state!==void 0?{state:n.state}:{},health:t}}o(at,"waitForRuntimeOwner");function ar(e,n){return e.runtimeId===n.runtimeId&&e.pid===n.pid}o(ar,"sameRuntimeOwner");function lr(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(lr,"sameRuntimeLockOwner");function $i(e){M.rmSync(e.lockFile,{force:!0}),M.rmSync(e.stateFile,{force:!0}),M.rmSync(e.tokenFile,{force:!0})}o($i,"removeRuntimeDaemonOwnershipFiles");function Pu(e){M.rmSync(e.stateFile,{force:!0}),M.rmSync(e.tokenFile,{force:!0})}o(Pu,"removeRuntimeDaemonStateFiles");function pt(e){return e.state?e.endpointReachable&&!e.identityMatches?"mismatch":e.pidAlive&&e.endpointReachable&&e.identityMatches?"healthy":!e.pidAlive&&!e.endpointReachable?"stale":"unhealthy":"missing"}o(pt,"classifyRuntimeDaemonHealth");function Eu(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"&&Au(n.status)&&(n.configHome===void 0||typeof n.configHome=="string")&&(n.lastError===void 0||typeof n.lastError=="string")}o(Eu,"isRuntimeDaemonState");function Du(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let n=e;return typeof n.time=="string"&&xu(n.level)&&typeof n.message=="string"&&(n.data===void 0||Tu(n.data))}o(Du,"isRuntimeDaemonLogEntry");function xu(e){return e==="info"||e==="warn"||e==="error"}o(xu,"isRuntimeDaemonLogLevel");function Tu(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}o(Tu,"isPlainRecord");function Qi(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(Qi,"isRuntimeDaemonLockOwner");function Au(e){return e==="starting"||e==="ready"||e==="draining"||e==="stopping"||e==="unhealthy"||e==="crashed"}o(Au,"isRuntimeDaemonStatus");function Cu(e){return e==="starting"||e==="draining"||e==="stopping"}o(Cu,"isRuntimeDaemonTransitionStatus");function cr(e){return e instanceof Error&&"code"in e}o(cr,"isNodeFileError");function mr(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}o(mr,"isRecord");import{createHash as Mu,randomUUID as fn}from"node:crypto";import*as yn from"node:fs/promises";import*as jn from"node:net";import Ou from"node:os";import Yi from"node:path";import{StringDecoder as pr}from"node:string_decoder";var _u=8*1024*1024,Rn=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 gr(e){return e instanceof Rn}o(gr,"isRuntimeDaemonTransportError");function wn(e="default",n){let t=ur(e),r=n===void 0?t:`${t}-${Lu(Yi.resolve(n))}`;return process.platform==="win32"?{kind:"pipe",path:`\\\\.\\pipe\\kodax-runtime-${r}`}:{kind:"unix",path:Yi.join(Ou.tmpdir(),`kodax-runtime-${process.getuid?.()??"user"}-${r}.sock`)}}o(wn,"defaultRuntimeDaemonEndpoint");function Lu(e){return Mu("sha256").update(e).digest("hex").slice(0,12)}o(Lu,"shortPathHash");function es(e,n={}){let t="",r=0,i=new pr("utf8"),a=n.maxFrameBytes??_u;if(!Number.isSafeInteger(a)||a<=0)throw new Error("Runtime daemon maxFrameBytes must be a positive safe integer.");let u=o(m=>{Nu(m,a),m.trim()&&e(Di(m))},"consumeLine"),l=o(m=>{t+=m,r+=Buffer.byteLength(m,"utf8")},"append");return{push(m){for(typeof m=="string"?(l(i.end()),i=new pr("utf8"),l(m)):l(i.write(m));;){let g=t.indexOf(`
60
+ `);if(g<0)break;let s=t.slice(0,g).replace(/\r$/,""),d=t.slice(0,g+1);t=t.slice(g+1),r-=Buffer.byteLength(d,"utf8"),u(s)}ts(r,a)},flush(){l(i.end()),i=new pr("utf8");let m=t.trim();t="",r=0,m.length>0&&u(m)}}}o(es,"createRuntimeDaemonFrameParser");async function Oe(e,n={}){let t=jn.createConnection(e.path);t.setEncoding("utf8");let r=new Promise(w=>{t.once("close",()=>w())});await Fu(t,n.connectTimeoutMs);let i=!1,a,u=`transport_${fn().replace(/-/g,"")}`,l=fn().replace(/-/g,"")+fn().replace(/-/g,""),m=`connection_${fn().replace(/-/g,"")}`,g=new Set,s=new Set,d={state:"connected",connectionId:m,reconnectable:!1},R=o((w,k)=>{if(d.state!=="disconnected"){d={state:"disconnected",connectionId:m,reason:w,reconnectable:k};for(let I of s)try{I(d)}catch{te({source:"runtime.daemon.transport",level:"warn",message:"Runtime transport lifecycle listener failed."})}}},"disconnect"),c=new Map,f=es(w=>{if(dn(w)){let k=c.get(w.id);if(!k)return;c.delete(w.id),k.resolve(w.result);return}if(un(w)){if(!w.id)return;let k=c.get(w.id);if(!k)return;c.delete(w.id),k.reject(new Rn(w.error.message,w.error.code,w.error.data));return}if(_n(w))for(let k of g)try{k(w)}catch{te({source:"runtime.daemon.transport",level:"warn",message:"Runtime transport notification listener failed."})}},{maxFrameBytes:n.maxFrameBytes});return t.on("data",w=>{try{f.push(w)}catch(k){i=!0;let I=gn(k);R(I.message,!0),ft(c,I),t.destroy(I)}}),t.on("close",()=>{i=!0,R("Runtime daemon transport closed.",!0),ft(c,new Error("Runtime daemon transport closed."))}),t.on("error",w=>{i=!0,R(w.message,!0),ft(c,w)}),{request(w,k,I){if(i)return Promise.reject(new Error("Runtime daemon transport is closed."));let C=`req_${fn().replace(/-/g,"").slice(0,12)}`,A=w==="initialize"||w==="runtime.initialize"?ju(k,u,l):k,h=I??(a!==void 0&&Ue(w)?{operationId:`op_${fn().replace(/-/g,"")}`,journalEpoch:a}:void 0),v=rt(C,w,A,h),p;try{p=JSON.stringify(v)}catch(E){return Promise.reject(new Rn(`Runtime daemon request params are not JSON-serializable: ${gn(E).message}`,"invalid_params"))}let P=new Promise((E,O)=>{c.set(C,{resolve:E,reject:O})});return t.write(`${p}
61
+ `),P.then(E=>{if(w==="initialize"||w==="runtime.initialize"){let O=gt(E);typeof O?.journalEpoch=="string"&&(a=O.journalEpoch)}return E})},subscribe(w){return g.add(w),{close(){g.delete(w)}}},subscribeLifecycle(w){return s.add(w),w(d),{close(){s.delete(w)}}},async close(){let w;if(!i){i=!0,R("Runtime daemon transport closed by client.",!1);try{f.flush()}catch(k){w=gn(k)}t.end(),t.destroy(),ft(c,new Error("Runtime daemon transport closed."))}if(await r,s.clear(),w!==void 0)throw w}}}o(Oe,"createRuntimeDaemonSocketClientTransport");function ju(e,n,t){let r=gt(e)??{},i=gt(r.capabilities)??{},a=gt(r.clientInfo)??{name:"kodax-transport"};return{...r,capabilities:{...i,operationDeduplication:!0},clientInfo:{...a,instanceId:typeof a.instanceId=="string"?a.instanceId:n,instanceSecret:typeof a.instanceSecret=="string"?a.instanceSecret:t}}}o(ju,"withDurableOperationCapability");function gt(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:void 0}o(gt,"asRecord");async function ns(e){await qu(e.endpoint);let n=jn.createServer(),t=new Set,r=new Set,i=!1;if(n.on("connection",a=>{if(i){a.destroy();return}t.add(a);let u=!1,l=o(d=>{if(a.destroyed)return;let R;try{R=JSON.stringify(d)}catch(c){let f=Ne({code:"internal_error",message:`Runtime daemon response is not JSON-serializable: ${gn(c).message}`},d.kind==="response"||d.kind==="error"?d.id:void 0);R=JSON.stringify(f)}a.write(`${R}
62
+ `)},"send"),m=e.createDispatcher(d=>l(d));r.add(m);let g=es(d=>{if(or(d)){m.handle(d).then(l,R=>{l(Ne({code:"internal_error",message:gn(R).message}))});return}if(un(d)){l(d);return}l(Ne({code:"invalid_request",message:"Runtime daemon server expects request frames from clients."}))},{maxFrameBytes:e.maxFrameBytes}),s=o(d=>{if(u)return;u=!0;let R=gn(d);l(Ne({code:"invalid_frame",message:R.message,...gr(R)&&R.data!==void 0?{data:R.data}:{}})),a.end()},"rejectInvalidFrame");a.on("data",d=>{if(!u)try{g.push(d)}catch(R){s(R)}}),a.on("end",()=>{try{g.flush()}catch(d){s(d)}}),a.on("close",()=>{t.delete(a),r.delete(m),m.close()}),a.on("error",()=>{a.destroy()})}),await $u(n,e.endpoint.path),e.endpoint.kind==="unix")try{await yn.chmod(e.endpoint.path,384)}catch(a){throw await Zi(n),a}return{endpoint:e.endpoint,connectionCount(){return t.size},unref(){n.unref()},async close(){if(!i){i=!0;for(let a of r)a.close();r.clear();for(let a of t)a.destroy();t.clear(),await Zi(n)}}}}o(ns,"createRuntimeDaemonSocketServer");function Nu(e,n){ts(Buffer.byteLength(e,"utf8"),n)}o(Nu,"assertFrameSize");function ts(e,n){if(!(e<=n))throw new Rn(`Runtime daemon frame exceeds the ${n}-byte limit.`,"invalid_frame",{actualBytes:e,maxFrameBytes:n})}o(ts,"assertFrameByteSize");function Fu(e,n=2e3){return new Promise((t,r)=>{let i=setTimeout(()=>{a(),e.destroy(),r(new Error("Timed out connecting to runtime daemon."))},n);i.unref?.();let a=o(()=>{clearTimeout(i),e.off("connect",u),e.off("error",l)},"cleanup"),u=o(()=>{a(),t()},"onConnect"),l=o(m=>{a(),r(m)},"onError");e.once("connect",u),e.once("error",l)})}o(Fu,"waitForConnect");function $u(e,n){return new Promise((t,r)=>{let i=o(()=>{e.off("listening",a),e.off("error",u)},"cleanup"),a=o(()=>{i(),t()},"onListening"),u=o(l=>{i(),r(l)},"onError");e.once("listening",a),e.once("error",u),e.listen(n)})}o($u,"waitForListen");async function qu(e){if(e.kind!=="unix")return;let n;try{n=await yn.stat(e.path)}catch(t){if(fr(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 Hu(e.path))throw new Error(`Runtime daemon Unix endpoint is already accepting connections: ${e.path}`);try{await yn.unlink(e.path)}catch(t){if(!fr(t)||t.code!=="ENOENT")throw t}}o(qu,"prepareUnixSocketEndpoint");function Hu(e){return new Promise((n,t)=>{let r=jn.createConnection(e),i=setTimeout(()=>{a(),r.destroy(),t(new Error(`Timed out probing runtime daemon Unix endpoint: ${e}`))},250);i.unref?.();let a=o(()=>{clearTimeout(i),r.off("connect",u),r.off("error",l)},"cleanup"),u=o(()=>{a(),r.end(),r.destroy(),n(!0)},"onConnect"),l=o(m=>{if(a(),r.destroy(),fr(m)&&(m.code==="ECONNREFUSED"||m.code==="ENOENT")){n(!1);return}t(m)},"onError");r.once("connect",u),r.once("error",l)})}o(Hu,"unixSocketAcceptsConnections");function Zi(e){return new Promise((n,t)=>{e.close(r=>{r?t(r):n()})})}o(Zi,"closeNetServer");function ft(e,n){for(let t of e.values())t.reject(n);e.clear()}o(ft,"rejectPending");function gn(e){return e instanceof Error?e:new Error(String(e))}o(gn,"normalizeTransportError");function fr(e){return e instanceof Error&&"code"in e}o(fr,"isNodeFileError");async function Rt(e,n={}){let t=Wi(e);if(!t)return{pidAlive:!1,endpointReachable:!1,identityMatches:!1};let r=Y(e.lockFile),i=(n.isPidAlive??os)(t.pid),a=Ve(t),u=Ln(e),l;try{l=await(n.createTransport?n.createTransport(a):Oe(a,{connectTimeoutMs:n.connectTimeoutMs??1e3}));let m=l.request("initialize",{profile:t.profile,connectionPurpose:"probe",...u!==void 0?{token:u}:{}});m.catch(()=>{});let g=await Ku(m,n.handshakeTimeoutMs??1e3,"Timed out waiting for runtime daemon handshake.");return{state:t,pidAlive:i,endpointReachable:!0,identityMatches:Xu(g,t)&&Bu(r,t),...r!==void 0?{observedLockOwner:r}:{}}}catch(m){return gr(m)&&m.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 l?.close?.()}}o(Rt,"observeRuntimeDaemonHealth");async function Rr(e,n,t={}){let r=await Rt(e,t),i=r.state?void 0:Y(e.lockFile),a=i?{...r,observedLockOwner:i,lockOwnerPidAlive:(t.isPidAlive??os)(i.pid)}:r;return Gi(e,n,a)}o(Rr,"resolveRuntimeDaemonOwnership");function Ve(e){return{kind:process.platform==="win32"||e.endpoint.startsWith("\\\\.\\pipe\\")?"pipe":"unix",path:e.endpoint}}o(Ve,"runtimeDaemonEndpointFromState");function os(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch(n){return Uu(n)&&n.code==="EPERM"}}o(os,"isRuntimeDaemonPidAlive");async function Ku(e,n,t){let r;try{return await Promise.race([e,new Promise((i,a)=>{r=setTimeout(()=>a(new Error(t)),n),r.unref?.()})])}finally{r!==void 0&&clearTimeout(r)}}o(Ku,"withTimeout");function Xu(e,n){let t=rs(e),r=rs(t?.identity)??t;return r?.runtimeId===n.runtimeId&&r.profile===n.profile}o(Xu,"daemonIdentityMatchesState");function Bu(e,n){return e?.runtimeId===n.runtimeId&&e.pid===n.pid}o(Bu,"runtimeDaemonLockMatchesState");function rs(e){if(!(e===null||typeof e!="object"||Array.isArray(e)))return e}o(rs,"asRecord");function Uu(e){return e instanceof Error&&"code"in e}o(Uu,"isNodeProcessError");import Ys from"node:path";import{randomUUID as qn}from"node:crypto";var y={type:"string"},J={type:"boolean"},X={type:"integer"},T={type:"object",additionalProperties:!0},is={},he={type:"array",items:T},Nn={oneOf:[{type:"null"},T]},z=S({ok:J},["ok"]),ne=S({}),wt={initialize:{params:S({profile:y,token:y,autoStart:J,endpoint:y,connectionPurpose:{type:"string",enum:["client","probe"]},clientInfo:T,capabilities:T},[],!0),result:S({identity:T,capabilities:T},["identity","capabilities"],!0)},"runtime.initialize":{params:S({profile:y,token:y,autoStart:J,endpoint:y,connectionPurpose:{type:"string",enum:["client","probe"]},clientInfo:T,capabilities:T},[],!0),result:S({identity:T,capabilities:T},["identity","capabilities"],!0)},ping:{params:ne,result:S({ok:J,runtimeId:y},["ok","runtimeId"])},"runtime.identity":{params:ne,result:T},"runtime.status":{params:ne,result:T},"runtime.shutdown":{params:ne,result:z},"runtime.capabilities":{params:ne,result:T},"daemon.status":{params:ne,result:T},"daemon.stop":{params:ne,result:z},"daemon.logs":{params:ne,result:T},"daemon.preflight":{params:ne,result:T},"daemon.management.get":{params:ne,result:S({runtimeId:y,revision:X,ownerPolicy:us(),owner:tl(),preflight:T},["runtimeId","revision","ownerPolicy","owner","preflight"])},"daemon.rollbackToInline":{params:S({expectedRuntimeId:y,expectedRevision:X,expectedOwnerPolicyRevision:X},["expectedRuntimeId","expectedRevision","expectedOwnerPolicyRevision"]),result:S({accepted:{type:"boolean",enum:[!0]},runtimeId:y,revision:X,ownerPolicy:us("inline")},["accepted","runtimeId","revision","ownerPolicy"])},"operation.get":{params:S({operationId:y,journalEpoch:y},["operationId","journalEpoch"]),result:T},"session.create":{params:Gu(),result:Qe()},"session.load":{params:S({sessionId:y},["sessionId"]),result:Qe()},"session.list":{params:Qu(),result:ve(Qe())},"session.transcript":{params:S({sessionId:y},["sessionId"]),result:Nn},"session.observe":{params:S({sessionId:y},["sessionId"]),result:T},"session.fork":{params:rl(),result:me(Qe())},"session.notice.append":{params:S({sessionId:y,content:y,source:y},["sessionId","content"]),result:Nn},"session.rewind":{params:S({sessionId:y,selector:y},["sessionId"]),result:me(Qe())},"session.active_entry.set":{params:ls(),result:me(Qe())},"session.activeEntry.set":{params:ls(),result:me(Qe())},"session.compact":{params:ol(),result:T},"session.archive":{params:S({sessionId:y},["sessionId"]),result:z},"session.unarchive":{params:S({sessionId:y},["sessionId"]),result:z},"session.delete":{params:S({sessionId:y},["sessionId"]),result:z},"session.settings.get":{params:S({sessionId:y},["sessionId"]),result:T},"session.settings.getVersioned":{params:S({sessionId:y},["sessionId"]),result:T},"session.settings.update":{params:S({sessionId:y,patch:T},["sessionId","patch"]),result:T},"session.settings.updateVersioned":{params:S({sessionId:y,patch:T,expectedRevision:X},["sessionId","patch","expectedRevision"]),result:T},"run.start":{params:il(),result:Vu()},"run.input.submit":{params:S({sessionId:y,afterRunId:y,delivery:{type:"string",enum:["after_turn","interrupt"]},input:is,credential:T,hostTools:T},["sessionId","afterRunId","delivery","input"]),result:T},"run.get":{params:Ge(),result:cs()},"run.list":{params:sl(),result:ve(cs())},"run.await":{params:Ge(),result:al()},"run.abort":{params:Ge(),result:z},"run.model.set":{params:S({runId:y,model:y},["runId"],!0),result:z},"run.provider.set":{params:S({runId:y,provider:y},["runId","provider"]),result:z},"run.reasoning.set":{params:S({runId:y,reasoning:y},["runId"],!0),result:z},"run.setModel":{params:S({runId:y,model:y},["runId"],!0),result:z},"run.setProvider":{params:S({runId:y,provider:y},["runId","provider"]),result:z},"run.setReasoning":{params:S({runId:y,reasoning:y},["runId"],!0),result:z},"event.subscribe":{params:ss(vs()),result:ds()},"event.unsubscribe":{params:S({subscriptionId:y},["subscriptionId"]),result:z},"event.replay":{params:dl(),result:ve(ul())},"permission.list":{params:yr(),result:ve(ms())},"permission.listPending":{params:yr(),result:ve(ms())},"permission.request":{params:Ss(),result:ps()},"permission.respond":{params:S({requestId:y,runId:y,decision:ps()},["requestId","decision"]),result:J},"permission.grants.list":{params:ne,result:T},"permission.grants.revoke":{params:S({grantId:y,expectedRevision:X},["grantId","expectedRevision"]),result:J},"user_input.listPending":{params:yr(),result:ve(T)},"user_input.respond":{params:S({requestId:y,answer:is,runId:y,expectedRevision:X},["requestId","answer"],!0),result:T},"user_input.dismiss":{params:S({requestId:y,runId:y,expectedRevision:X},["requestId"],!0),result:T},"credential.register":{params:S({leaseId:y,providers:{type:"array",items:y},expiresAt:y},["leaseId","providers"],!0),result:T},"credential.get":{params:S({leaseId:y},["leaseId"]),result:{oneOf:[T,{type:"null"}]}},"credential.revoke":{params:S({leaseId:y},["leaseId"]),result:J},"credential.supply":{params:S({requestId:y,credential:y,error:y},["requestId"],!0),result:z},"host_tool.register":{params:S({leaseId:y,tools:{type:"array",items:T}},["leaseId","tools"]),result:T},"host_tool.get":{params:S({leaseId:y},["leaseId"]),result:{oneOf:[T,{type:"null"}]}},"host_tool.invocation.get":{params:S({invocationId:y},["invocationId"]),result:{oneOf:[T,{type:"null"}]}},"host_tool.revoke":{params:S({leaseId:y},["leaseId"]),result:J},"host_tool.complete":{params:S({invocationId:y,result:T,error:y},["invocationId"],!0),result:z},"workflow.list":{params:fs(),result:he},"workflow.get":{params:Ge(),result:{oneOf:[T,{type:"null"}]}},"workflow.subscribe":{params:ss(fs()),result:ds()},"workflow.unsubscribe":{params:S({subscriptionId:y},["subscriptionId"]),result:z},"workflow.pause":{params:Ge(),result:J},"workflow.resume":{params:Ge(),result:J},"workflow.stop":{params:Ge(),result:J},"learning.list":{params:Yu(),result:nl()},"learning.get":{params:S({nameOrSlug:y},["nameOrSlug"]),result:hs()},"learning.snapshot":{params:ne,result:el()},"learning.events":{params:S({afterRevision:X},[],!0),result:ve(Zu())},"learning.acknowledge":{params:S({nameOrSlug:y},["nameOrSlug"]),result:z},"learning.snooze":{params:S({nameOrSlug:y,until:y},["nameOrSlug","until"]),result:z},"learning.reject":{params:S({nameOrSlug:y},["nameOrSlug"]),result:z},"learning.disable":{params:S({nameOrSlug:y},["nameOrSlug"]),result:z},"learning.rollback":{params:S({nameOrSlug:y},["nameOrSlug"]),result:z},"learning.promote":{params:S({nameOrSlug:y,scope:y},["nameOrSlug","scope"]),result:z},"learning.review":{params:S({nameOrSlug:y},["nameOrSlug"]),result:z},"learning.trust":{params:S({nameOrSlug:y},["nameOrSlug"]),result:z},"config.read":{params:ne,result:T},"config.patch":{params:S({patch:T},["patch"]),result:T},"config.reload":{params:ne,result:S({ok:J,config:T},["ok","config"])},"model.list":{params:S({provider:y},[],!0),result:{oneOf:[T,he]}},"provider.list":{params:ne,result:he},"provider.custom.list":{params:ne,result:he},"provider.custom.upsert":{params:S({config:T},["config"]),result:T},"provider.custom.remove":{params:S({name:y},["name"]),result:J},"mcp.server.list":{params:ne,result:T},"mcp.server.get":{params:S({name:y},["name"]),result:{oneOf:[T,{type:"null"}]}},"mcp.server.validate":{params:S({name:y,config:T},["name","config"]),result:{oneOf:[S({ok:J,config:T},["ok","config"],!0),S({ok:J,error:y},["ok","error"],!0)]}},"mcp.server.upsert":{params:S({name:y,config:T},["name","config"]),result:T},"mcp.server.delete":{params:S({name:y},["name"]),result:J},"mcp.server.remove":{params:S({name:y},["name"]),result:J},"mcp.server.reload":{params:ne,result:S({ok:J,servers:he},["ok","servers"])},"mcp.tool.list":{params:S({server:y,forceRefresh:J},[],!0),result:he},"extension.list":{params:ne,result:S({active:J,extensions:he,diagnostics:T},["active","extensions"],!0)},"extension.reload":{params:ne,result:S({ok:J,active:J},["ok","active"],!0)},"command.list":{params:S({projectRoot:y},[],!0),result:he},"command.resolve":{params:S({name:y,projectRoot:y},["name"],!0),result:Nn},"skill.list":{params:S({projectRoot:y,userInvocableOnly:J},[],!0),result:he},"skill.describe":{params:S({name:y,projectRoot:y},["name"],!0),result:Nn},"skill.read":{params:S({name:y,projectRoot:y},["name"],!0),result:Nn},"artifact.create":{params:S({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:gs()},"artifact.get":{params:S({artifactId:y},["artifactId"]),result:me(gs())},"artifact.delete":{params:S({artifactId:y},["artifactId"]),result:J},"agentRegistrations.list":{params:ne,result:he},"agentRegistrations.upsert":{params:S({registration:T,expectedConfigurationRevision:me(y),expectedManagementOwner:me(y)},["registration"]),result:T},"agentRegistrations.setEnabled":{params:S({agentId:y,enabled:J,expectedConfigurationRevision:me(y),expectedManagementOwner:me(y),claimOwner:y},["agentId","enabled"]),result:me(T)},"agentRegistrations.remove":{params:S({agentId:y,expectedConfigurationRevision:me(y),expectedManagementOwner:me(y)},["agentId"]),result:J},"agents.listDispatchable":{params:T,result:he},"agents.describe":{params:S({agentId:y,query:T},["agentId","query"]),result:me(T)},"agents.preflight":{params:T,result:T},"agents.tree":{params:S({sessionId:y},["sessionId"]),result:T},"agents.detail":{params:S({sessionId:y,actorPath:y},["sessionId","actorPath"]),result:T},"agents.spawn":{params:S({sessionId:y,input:T},["sessionId","input"]),result:T},"agents.send":{params:S({sessionId:y,actorPath:y,content:y,classification:{enum:["public","internal","sensitive"]}},["sessionId","actorPath","content"],!0),result:z},"agents.followup":{params:S({sessionId:y,actorPath:y,objective:y,expectedRevision:X},["sessionId","actorPath","objective"],!0),result:T},"agents.interrupt":{params:S({sessionId:y,actorPath:y,reason:y},["sessionId","actorPath"],!0),result:z},"agents.output":{params:S({sessionId:y,actorPath:y,turnId:y},["sessionId","actorPath"],!0),result:T},"agents.events":{params:S({sessionId:y,afterSequence:X},["sessionId"],!0),result:he},"agents.wait":{params:S({sessionId:y,afterSequence:X,timeoutMs:X},["sessionId"],!0),result:me(T)},"context.budget.get":{params:as(),result:{oneOf:[T,{type:"null"}]}},"tool.exposure.preview":{params:as(),result:{oneOf:[T,{type:"null"}]}}},Rs={event:S({subscriptionId:y,event:T},["subscriptionId","event"]),"credential.request":T,"host_tool.invoke":T,"runtime.warning":T},ys={protocol:je,version:1,methods:wt,notifications:Rs},Wu=JSON.stringify(ys,null,2);function Ju(){return an}o(Ju,"listRuntimeDaemonSchemaMethods");function hn(e,n,t="$"){if(e.oneOf!==void 0)return e.oneOf.filter(u=>hn(u,n,t).length===0).length===1?[]:[`${t} must match exactly one allowed schema.`];if(e.enum!==void 0&&!e.enum.some(a=>Object.is(a,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(a=>zu(a,n)))return[`${t} must be ${r.join(" or ")}.`];if(typeof n=="string"&&e.maxLength!==void 0&&n.length>e.maxLength)return[`${t} must have at most ${e.maxLength} characters.`];if(Array.isArray(n)){let a=e.items;return a===void 0?[]:n.flatMap((u,l)=>hn(a,u,`${t}[${l}]`))}if(!ws(n))return[];let i=[];for(let a of e.required??[])(!Object.prototype.hasOwnProperty.call(n,a)||n[a]===void 0)&&i.push(`${t}.${a} is required.`);for(let[a,u]of Object.entries(n)){if(u===void 0)continue;let l=e.properties?.[a];if(l!==void 0){i.push(...hn(l,u,`${t}.${a}`));continue}e.additionalProperties===!1?i.push(`${t}.${a} is not allowed.`):typeof e.additionalProperties=="object"&&i.push(...hn(e.additionalProperties,u,`${t}.${a}`))}return i}o(hn,"validateRuntimeDaemonJsonSchema");function zu(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 ws(n);case"string":return typeof n=="string"}}o(zu,"matchesJsonSchemaType");function ws(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}o(ws,"isJsonObject");function S(e,n=[],t=!1){return{type:"object",properties:e,required:n,additionalProperties:t}}o(S,"objectSchema");function Ge(){return S({runId:y},["runId"])}o(Ge,"runIdParamsSchema");function ss(e){return S({filter:e})}o(ss,"filterParamsSchema");function as(){return S({sessionId:y,runId:y},[],!0)}o(as,"diagnosticParamsSchema");function ds(){return S({subscriptionId:y},["subscriptionId"])}o(ds,"subscriptionSchema");function Vu(){return S({runId:y,sessionId:y,turnId:y},["runId","sessionId"],!0)}o(Vu,"runStartedSchema");function ve(e){return{type:"array",items:e}}o(ve,"arraySchema");function me(e){return{oneOf:[{type:"null"},e]}}o(me,"nullableSchema");function Gu(){return S({sessionId:y,title:y,projectPath:y,gitRoot:y,surface:y,profileId:y,tag:y})}o(Gu,"createSessionParamsSchema");function Qe(){return S({id:y,cursor:y,title:y,gitRoot:y,workspaceRoot:y,surface:y,profileId:y,createdAt:y,msgCount:X,tag:y,projectKey:y,archived:J},["id","title"],!0)}o(Qe,"sessionSchema");function Qu(){return S({projectRoot:y,scope:{enum:["user","managed-task-worker","all"]},includeArchived:J,limit:X,before:y,tag:y,surface:y,cursor:y})}o(Qu,"sessionFilterSchema");function Yu(){return S({search:y,carrier:{enum:["skill","extension","workflow_handoff"]},lifecycle:{enum:["opportunity","drafting","ready","testing","active_learned","promoted_user","quarantined","archived","rejected"]},limit:X,cursor:y})}o(Yu,"learningQuerySchema");function hs(){return S({schemaVersion:{type:"integer",enum:[1]},capabilityId:y,displayName:y,slug:y,carrier:{enum:["skill","extension","workflow_handoff"]},lifecycle:wr(),revision:X,createdAt:y,updatedAt:y,source:S({kind:{enum:["learning_controller","f224_proposal"]},proposalId:y},["kind"]),lastAction:{enum:["review","trust","reject","disable","rollback","archive","restore","promote"]},artifactPath:y,previousGoodRevision:X,previousLifecycle:wr(),diagnostics:ve(y)},["schemaVersion","capabilityId","displayName","slug","carrier","lifecycle","revision","createdAt","updatedAt","source"])}o(hs,"learnedCapabilitySchema");function wr(){return{enum:["opportunity","drafting","ready","testing","active_learned","promoted_user","quarantined","archived","rejected"]}}o(wr,"learningLifecycleSchema");function Zu(){return S({schemaVersion:{type:"integer",enum:[1]},sequence:X,eventId:y,capabilityId:y,capabilityRevision:X,kind:{enum:["opportunity","drafting","ready","testing","activated","promoted","attention","archived","rejected"]},lifecycle:wr(),displayName:y,slug:y,carrier:{enum:["skill","extension","workflow_handoff"]},createdAt:y},["schemaVersion","sequence","eventId","capabilityId","capabilityRevision","kind","lifecycle","displayName","slug","carrier","createdAt"])}o(Zu,"learningEventSchema");function el(){return S({ready:X,newlyActive:X,attention:X,active:X,revision:X},["ready","newlyActive","attention","active","revision"])}o(el,"learningSnapshotSchema");function nl(){return S({items:ve(hs()),nextCursor:y,revision:X},["items","revision"])}o(nl,"learningPageSchema");function us(e){return S({mode:{type:"string",enum:e===void 0?["daemon","inline"]:[e]},revision:X,updatedAt:y},["mode","revision","updatedAt"])}o(us,"ownerPolicySchema");function tl(){return S({runtimeId:y,pid:X,createdAt:y,kind:{type:"string",enum:["daemon","inline"]}},["runtimeId","pid","createdAt"])}o(tl,"ownerIdentitySchema");function rl(){return S({sessionId:y,selector:y,newSessionId:y,title:y},["sessionId"])}o(rl,"forkSessionParamsSchema");function ls(){return S({sessionId:y,entryId:y},["sessionId","entryId"])}o(ls,"activeEntryParamsSchema");function ol(){return S({sessionId:y,provider:y,model:y,customInstructions:y,contextWindow:X},["sessionId"])}o(ol,"compactSessionParamsSchema");function il(){return S({sessionId:y,prompt:y,input:{oneOf:[T,ve(T)]},mode:{enum:["coding","managed_task"]},permissionBroker:{enum:["runtime","client"]},options:T},["sessionId"],!0)}o(il,"startRunParamsSchema");function sl(){return S({sessionId:y,phase:{oneOf:[yt(),ve(yt())]}})}o(sl,"runFilterSchema");function cs(){return S({runId:y,sessionId:y,turnId:y,phase:yt(),startedAt:y,endedAt:y,provider:y,model:y,reasoning:y,error:y},["runId","sessionId","phase","startedAt","provider"],!0)}o(cs,"runStatusSchema");function al(){return S({runId:y,sessionId:y,phase:yt(),result:T,error:{oneOf:[y,T]}},["runId","sessionId","phase"],!0)}o(al,"runResultSchema");function yt(){return{enum:["queued","running","waiting_permission","waiting_user_input","completed","failed","cancelled","interrupted"]}}o(yt,"runPhaseSchema");function vs(){return S({sessionId:y,runId:y,type:{oneOf:[y,ve(y)]}})}o(vs,"eventFilterSchema");function dl(){return S({...vs().properties??{},sinceSeq:X,limit:X})}o(dl,"eventReplayFilterSchema");function ul(){return S({id:y,seq:X,time:y,sessionId:y,runId:y,turnId:y,type:y,payload:{}},["id","seq","time","sessionId","runId","type","payload"],!0)}o(ul,"runtimeEventSchema");function yr(){return S({sessionId:y,runId:y,toolName:y})}o(yr,"permissionFilterSchema");function Ss(){return S({sessionId:y,runId:y,turnId:y,toolCallId:y,toolName:y,reason:y,risk:{enum:["low","medium","high"]},inputPreview:y,executionCwd:{type:"string",maxLength:4096},expiresAt:y,timeoutMs:X},["sessionId","runId","toolName"])}o(Ss,"permissionRequestInputSchema");function ms(){return S({...Ss().properties??{},inputPreview:{type:"string",maxLength:8192},id:y,createdAt:y},["id","sessionId","runId","toolName","createdAt"],!0)}o(ms,"permissionRequestSchema");function ps(){return{oneOf:[S({type:{enum:["allow_once"]}},["type"]),S({type:{enum:["allow_always"]},scope:S({toolName:y,sessionId:y})},["type","scope"]),S({type:{enum:["reject"]},reason:y},["type"])]}}o(ps,"permissionDecisionSchema");function fs(){return S({runId:y,activeOnly:J,limit:X})}o(fs,"workflowFilterSchema");function gs(){return S({id:y,kind:{enum:["image","file","video"]},path:y,sizeBytes:X,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(gs,"artifactSchema");import{createHash as ll,randomUUID as Fn}from"node:crypto";import*as re from"node:fs";import cl from"node:path";var ml=6e4,pl=1048576,fl=64,gl=4096,ks=1e3;function vr(){return{callTimeoutMs:Ps("KODAX_REVERSE_CALL_TIMEOUT_MS",ml),maxResultBytes:Ps("KODAX_HOST_TOOL_MAX_RESULT_BYTES",pl)}}o(vr,"runtimeDaemonReverseBridgeLimits");function Sr(e,n={}){let t=vr(),r=new Map,i=new Map,a=new Map,u=new Map,l=new Map((n.initialInvocations??[]).map(h=>[h.invocationId,h])),m=new Set,g=new Map,s=new Map,d,R=!1,c=o(()=>{if(R)throw B("host_tool_unavailable","Host bridge connection is closed.")},"requireOpen"),f=o(()=>{let h=Date.now();for(let[v,p]of r)p.expiresAt!==void 0&&Date.parse(p.expiresAt)<=h&&r.delete(v)},"pruneExpiredCredentials"),w=o(h=>{for(let v of a.values())clearTimeout(v.timer),v.reject(B("credential_unavailable",h));a.clear()},"rejectPendingCredentialRequests"),k=o(()=>{for(let[h,v]of u)v.dispatched&&(u.delete(h),clearTimeout(v.timer),I(h,"unknown"),v.reject(B("host_tool_unknown","Host tool client disconnected; the side-effect outcome is unknown.")))},"rejectDispatchedHostCalls"),I=o((h,v)=>{let p=l.get(h);if(p===void 0)return;let P={...p,state:v,updatedAt:new Date().toISOString()},E=new Map(l);for(E.delete(h),E.set(h,P);E.size>ks;){let O=E.keys().next().value;if(O===void 0)break;E.delete(O)}n.onInvocationsChanged?.([...E.values()]),l.clear();for(let[O,F]of E)l.set(O,F)},"updateHostToolInvocation"),C=o((h,v)=>{let p=d;if(!(v.dispatched||p===void 0||!m.has(v.leaseId)))try{I(h,"dispatched"),v.dispatched=!0,p.notify(v.notification)}catch{u.delete(h),clearTimeout(v.timer),I(h,"unknown"),v.reject(B("host_tool_unknown","Host tool transport failed after durable dispatch; the side-effect outcome is unknown."))}},"dispatchPendingHostCall"),A=o(async h=>{if(c(),i.get(h.lease.id)!==h.lease)throw B("host_tool_unavailable","Host tool lease was revoked.");let v=`hostcall_${Fn().replace(/-/g,"")}`,p=On("host_tool.invoke",{invocationId:v,leaseId:h.lease.id,toolName:h.descriptor.name,sessionId:h.sessionId,runId:h.runId,input:h.toolInput,sideEffect:h.descriptor.sideEffect}),P={invocationId:v,leaseId:h.lease.id,toolName:h.descriptor.name,sessionId:h.sessionId,runId:h.runId,state:"prepared",updatedAt:new Date().toISOString()},E=new Map(l);for(E.set(v,P);E.size>ks;){let b=E.keys().next().value;if(b===void 0)break;E.delete(b)}n.onInvocationsChanged?.([...E.values()]),l.clear();for(let[b,D]of E)l.set(b,D);let O=new Promise((b,D)=>{let x=setTimeout(()=>{let $=u.get(v);$&&(u.delete(v),I(v,$.dispatched?"unknown":"not_dispatched"),D(B($.dispatched?"host_tool_unknown":"host_tool_unavailable",$.dispatched?`Host tool ${h.descriptor.name} did not return a certain result before timeout.`:`Host tool ${h.descriptor.name} had no connected host before timeout.`)))},t.callTimeoutMs);x.unref?.(),u.set(v,{invocationId:v,resolve:b,reject:D,timer:x,notification:p,leaseId:h.lease.id,dispatched:!1})}),F=u.get(v);return F&&C(v,F),O},"invokeHostTool");return e!==void 0&&(d={id:`bridge_${Fn().replace(/-/g,"")}`,notify:e}),{attachTransport(h){c(),d!==void 0&&(w("Credential client connection was replaced."),k());let v=`bridge_${Fn().replace(/-/g,"")}`;return d={id:v,notify:h},m.clear(),{close(){d?.id===v&&(d=void 0,m.clear(),w("Credential client disconnected."),k())}}},registerCredential(h){if(c(),f(),h.providers.length===0||h.providers.some(p=>p.trim().length===0)||new Set(h.providers).size!==h.providers.length)throw B("invalid_params","Credential lease providers must be non-empty and unique.");if(h.expiresAt!==void 0&&!Number.isFinite(Date.parse(h.expiresAt)))throw B("invalid_params","Credential lease expiresAt must be an ISO timestamp.");if(r.has(h.leaseId))throw B("conflict","Credential lease ID is already registered on this connection.");let v={id:h.leaseId,providers:[...h.providers],...h.expiresAt!==void 0?{expiresAt:h.expiresAt}:{},providerSet:new Set(h.providers)};return r.set(h.leaseId,v),bs(v)},getCredential(h){f();let v=r.get(h);return v===void 0?void 0:bs(v)},revokeCredential(h){return r.delete(h)},supplyCredential(h){let v=a.get(h.requestId);return v?(a.delete(h.requestId),clearTimeout(v.timer),h.credential!==void 0&&h.credential.length>0?v.resolve(h.credential):v.reject(B("credential_unavailable",h.error??"Credential broker returned no credential.")),!0):!1},async acquireCredential(h){c();let v=r.get(h.leaseId);if(!v||!v.providerSet.has(h.provider))throw B("credential_unavailable","Credential lease is missing or does not allow this provider.");if(v.expiresAt!==void 0&&Date.parse(v.expiresAt)<=Date.now())throw r.delete(v.id),B("credential_unavailable","Credential lease expired.");let p=d;if(!p)throw B("credential_unavailable","Credential broker transport is unavailable.");let P=`credreq_${Fn().replace(/-/g,"")}`,E=v.expiresAt===void 0?t.callTimeoutMs:Math.min(t.callTimeoutMs,Math.max(1,Date.parse(v.expiresAt)-Date.now())),O=new Promise((F,b)=>{let D=setTimeout(()=>{a.delete(P),b(B("credential_unavailable","Credential lease expired or broker timed out."))},E);D.unref?.(),a.set(P,{resolve:F,reject:b,timer:D})});try{p.notify(On("credential.request",{requestId:P,leaseId:v.id,provider:h.provider,sessionId:h.sessionId,runId:h.runId}))}catch{let F=a.get(P);F&&(a.delete(P),clearTimeout(F.timer),F.reject(B("credential_unavailable","Credential request was not dispatched.")))}return O.then(F=>(g.set(h.runId,{leaseId:h.leaseId,provider:h.provider}),F))},registerHostTools(h){c();let v=h.tools.map(P=>P.name);if(v.length===0||v.length>fl||new Set(v).size!==v.length)throw B("invalid_params","Host tool names must be non-empty and unique.");if(i.has(h.leaseId))throw B("conflict","Host tool lease ID is already registered on this connection.");for(let P of h.tools)vl(P);let p={id:h.leaseId,tools:h.tools.map(P=>({...P,inputSchema:{...P.inputSchema}})),byName:new Map(h.tools.map(P=>[P.name,P]))};return i.set(h.leaseId,p),m.add(h.leaseId),{id:p.id,tools:p.tools}},getHostTools(h){let v=i.get(h);if(v!==void 0){m.add(h);for(let[p,P]of u)P.leaseId===h&&C(p,P)}return v===void 0?void 0:{id:v.id,tools:v.tools}},revokeHostTools(h){return i.delete(h)},completeHostTool(h){let v=u.get(h.invocationId);if(!v)return!1;if(h.result!==void 0){if(typeof h.result.content!="string")throw B("invalid_params","Host tool result content must be a string.");Sl(h.result,t.maxResultBytes,"Host tool result")}return u.delete(h.invocationId),clearTimeout(v.timer),h.result!==void 0?(I(h.invocationId,"completed"),v.resolve(h.result)):(I(h.invocationId,"unknown"),v.reject(B("host_tool_unknown",h.error??"Host tool result is unknown."))),!0},getHostToolInvocation(h){return l.get(h)},createHostToolRuntime(h){c();let v=i.get(h.leaseId);if(!v)throw B("host_tool_unavailable","Host tool lease is missing.");return s.set(h.runId,h.leaseId),{hasCapabilityProvider(p){return p==="mcp"},async searchCapabilities(p,P,E){if(p!=="mcp"||E?.kind!==void 0&&E.kind!=="tool")return[];let O=P.toLowerCase();return v.tools.filter(F=>F.name.toLowerCase().includes(O)||F.description.toLowerCase().includes(O)).slice(0,E?.limit??v.tools.length).map(F=>({id:kl(v.id,F.name),name:F.name,description:F.description,kind:"tool",server:"host",inputSchema:F.inputSchema}))},async describeCapability(p,P){if(p!=="mcp")return;let E=Es(v,P);return E?{...E,id:P,kind:"tool",server:"host"}:void 0},async executeCapability(p,P,E){if(p!=="mcp")throw B("host_tool_unavailable","Unsupported host capability provider.");let O=Es(v,P);if(!O)throw B("host_tool_unavailable","Host tool is not bound to this run.");return await A({lease:v,descriptor:O,sessionId:h.sessionId,runId:h.runId,toolInput:E})},async readCapability(){throw B("host_tool_unavailable","Host tools do not expose resource reads.")},async getCapabilityPrompt(){},async getCapabilityPromptContext(){}}},getRunRequirements(h){let v=g.get(h),p=s.get(h);if(!(v===void 0&&p===void 0))return{...v!==void 0?{credential:{...v,state:"ready"}}:{},...p!==void 0?{hostTools:{leaseId:p,state:i.has(p)?m.has(p)?"ready":"waiting_host":"expired"}}:{}}},close(){if(!R){R=!0,d=void 0,m.clear(),r.clear(),i.clear(),w("Credential client disconnected.");for(let h of u.values())clearTimeout(h.timer),I(h.invocationId,h.dispatched?"unknown":"not_dispatched"),h.reject(B(h.dispatched?"host_tool_unknown":"host_tool_unavailable",h.dispatched?"Host tool client disconnected; the side-effect outcome is unknown.":"Host tool client disconnected before dispatch."));u.clear(),l.clear()}}}}o(Sr,"createRuntimeDaemonReverseBridge");function Ds(e={}){let n=new Map,t=yl(e.invocationStateFile),r=!1;return{attach(i){if(r)throw B("host_tool_unavailable","Host bridge hub is closed.");if(i.instanceSecret!==void 0&&(i.instanceSecret.length<32||i.instanceSecret.length>512))throw B("invalid_params","Runtime client instanceSecret must contain between 32 and 512 characters.");let a=i.instanceSecret===void 0?`ephemeral:${i.connectionId}`:`stable:${i.principalId}:${ll("sha256").update(i.instanceSecret).digest("hex")}`,u=a.startsWith("stable:")?Rl(t.get(a)??[]):[],l=n.get(a)??Sr(void 0,{initialInvocations:u,...a.startsWith("stable:")?{onInvocationsChanged(g){t.set(a,g),Is(e.invocationStateFile,t)}}:{}});!n.has(a)&&u.length>0&&(t.set(a,u),Is(e.invocationStateFile,t)),n.set(a,l);let m=l.attachTransport(i.notify);return{bridge:l,close(){m.close()}}},getRunRequirements(i){for(let a of n.values()){let u=a.getRunRequirements(i);if(u!==void 0)return u}},close(){if(!r){r=!0;for(let i of n.values())i.close();n.clear()}}}}o(Ds,"createRuntimeDaemonReverseBridgeHub");function Rl(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(Rl,"recoverHostToolInvocationStates");function yl(e){if(e===void 0||!re.existsSync(e))return new Map;let n;try{n=JSON.parse(re.readFileSync(e,"utf8"))}catch(r){throw new Error(`Host Tool invocation recovery store is untrusted: ${Il(r).message}`)}if(!hr(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(!hr(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(wl);t.set(r.key,i)}return t}o(yl,"loadHostToolInvocationStore");function Is(e,n){if(e===void 0)return;re.mkdirSync(cl.dirname(e),{recursive:!0});let t=`${e}.${process.pid}.${Fn()}.tmp`,r;try{r=re.openSync(t,"wx",384),re.writeFileSync(r,`${JSON.stringify({version:1,clients:[...n].map(([i,a])=>({key:i,invocations:a}))},null,2)}
63
+ `,"utf8"),re.fsyncSync(r),re.closeSync(r),r=void 0,re.renameSync(t,e)}finally{r!==void 0&&re.closeSync(r),re.rmSync(t,{force:!0})}}o(Is,"saveHostToolInvocationStore");function wl(e){if(!hr(e)||typeof e.invocationId!="string"||typeof e.leaseId!="string"||typeof e.toolName!="string"||typeof e.sessionId!="string"||typeof e.runId!="string"||!hl(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(wl,"parseHostToolInvocationStatus");function hl(e){return e==="prepared"||e==="dispatched"||e==="completed"||e==="unknown"||e==="not_dispatched"}o(hl,"isHostToolInvocationState");function bs(e){return{id:e.id,providers:e.providers,...e.expiresAt!==void 0?{expiresAt:e.expiresAt}:{}}}o(bs,"publicCredentialLease");function vl(e){if(!e.name||!e.description||!e.inputSchema)throw B("invalid_params","Host tool descriptors require name, description, and inputSchema.");if(!["none","idempotent","non_idempotent"].includes(e.sideEffect))throw B("invalid_params",`Invalid host tool sideEffect for ${e.name}.`);if(!/^[A-Za-z][A-Za-z0-9_.-]{0,127}$/.test(e.name))throw B("invalid_params","Host tool name is invalid.");if(e.description.length>gl)throw B("invalid_params",`Host tool description is too long: ${e.name}.`)}o(vl,"validateHostToolDescriptor");function Sl(e,n,t){let r;try{r=JSON.stringify(e)}catch{throw B("invalid_params",`${t} must be JSON-serializable.`)}if(Buffer.byteLength(r,"utf8")>n)throw B("invalid_params",`${t} exceeds the ${n}-byte limit.`)}o(Sl,"assertJsonByteLimit");function Ps(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(Ps,"positiveIntegerEnvironment");function kl(e,n){return`host:${e}:${n}`}o(kl,"hostToolCapabilityId");function Es(e,n){let t=`host:${e.id}:`;return n.startsWith(t)?e.byName.get(n.slice(t.length)):void 0}o(Es,"descriptorFromCapabilityId");function B(e,n){return Object.assign(new Error(n),{code:e})}o(B,"bridgeError");function hr(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}o(hr,"isRecord");function Il(e){return e instanceof Error?e:new Error(String(e))}o(Il,"normalizeError");var xs=1e3,bl=["code","cli","repl","acp","a2a","sdk","ide","space-desktop"],Pl=new Set(["ping","runtime.identity","runtime.status","runtime.capabilities","daemon.status"]),$s=["session:observe","session:write","run:control","interaction:respond","permission:respond","permission:grant-admin","integration:admin","workflow:control","learning:read","learning:control","artifact:write","agent:control","credential:register","host-tool:register","owner:admin","daemon:admin"],qs=new Map([...de("session:observe",["ping","runtime.identity","runtime.status","runtime.capabilities","daemon.status","daemon.logs","operation.get","session.load","session.list","session.transcript","session.observe","session.settings.get","session.settings.getVersioned","run.get","run.list","run.await","event.subscribe","event.unsubscribe","event.replay","permission.list","permission.listPending","permission.grants.list","user_input.listPending","workflow.list","workflow.get","workflow.subscribe","workflow.unsubscribe","context.budget.get","tool.exposure.preview","config.read","model.list","provider.list","provider.custom.list","mcp.server.list","mcp.server.get","mcp.tool.list","extension.list","command.list","command.resolve","skill.list","skill.describe","skill.read","artifact.get"]),...de("session:write",["session.create","session.fork","session.notice.append","session.rewind","session.active_entry.set","session.activeEntry.set","session.compact","session.archive","session.unarchive","session.delete","session.settings.update","session.settings.updateVersioned"]),...de("run:control",["run.start","run.input.submit","run.abort","run.model.set","run.provider.set","run.reasoning.set","run.setModel","run.setProvider","run.setReasoning","permission.request"]),...de("permission:respond",["permission.respond"]),...de("permission:grant-admin",["permission.grants.revoke"]),...de("interaction:respond",["user_input.respond","user_input.dismiss"]),...de("credential:register",["credential.register","credential.get","credential.revoke","credential.supply"]),...de("host-tool:register",["host_tool.register","host_tool.get","host_tool.invocation.get","host_tool.revoke","host_tool.complete"]),...de("integration:admin",["config.patch","config.reload","provider.custom.upsert","provider.custom.remove","mcp.server.validate","mcp.server.upsert","mcp.server.delete","mcp.server.remove","mcp.server.reload","extension.reload"]),...de("workflow:control",["workflow.pause","workflow.resume","workflow.stop"]),...de("learning:read",["learning.list","learning.get","learning.snapshot","learning.events"]),...de("learning:control",["learning.acknowledge","learning.snooze","learning.reject","learning.disable","learning.rollback","learning.promote","learning.review","learning.trust"]),...de("artifact:write",["artifact.create","artifact.delete"]),...de("agent:control",["agentRegistrations.list","agentRegistrations.upsert","agentRegistrations.setEnabled","agentRegistrations.remove","agents.listDispatchable","agents.describe","agents.preflight","agents.tree","agents.detail","agents.spawn","agents.send","agents.followup","agents.interrupt","agents.output","agents.events","agents.wait"]),...de("owner:admin",["daemon.rollbackToInline"]),...de("daemon:admin",["runtime.shutdown","daemon.stop","daemon.preflight","daemon.management.get"])]),Ts=an.filter(e=>e!=="initialize"&&e!=="runtime.initialize"&&!qs.has(e));if(Ts.length>0)throw new Error(`Runtime daemon methods are missing authorization scopes: ${Ts.join(", ")}`);function de(e,n){return n.map(t=>[t,e])}o(de,"scopeEntries");function Dr(){let e=new Map,n=o(()=>{if(!(e.size<=xs))for(let[r,i]of e){if(e.size<=xs)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 a,u=i.finally(()=>{a&&t(r,a)});u.catch(()=>{}),a={promise:u,settled:!1},e.set(r,a),n()},get(r){return e.get(r)?.promise},clear(){e.clear()}}}o(Dr,"createRuntimeDaemonRunResultStore");function $n(e){return e==="initialize"||e==="runtime.initialize"}o($n,"isInitializeMethod");function Hs(e){let n=new Map,t=e.runResults??Dr(),r=`connection_${qn().replace(/-/g,"")}`,i=Sr(e.notify),a=i,u,l=!1,m=!1,g="client",s={},d=`client_${qn().replace(/-/g,"")}`,R,c,f=new Set(e.grantedScopes??$s),w=o(A=>{let h=n.get(A);return h?(n.delete(A),h.close(),!0):!1},"closeSubscription"),k=o((A,h)=>{n.set(A,h)},"rememberSubscription"),I=o((A,h)=>{Xs(h)&&s.contextDiagnostics!==!0||e.notify?.(On("event",{subscriptionId:A,event:h}))},"notify");return{handle:o(async A=>{try{if(Pi(A.method))throw q("client_upgrade_required","The legacy agentTasks control plane was retired. Upgrade the KodaX SDK; if this daemon does not advertise actorControlPlane v1, restart it with the upgraded KodaX installation.");let h=A;Fs(h.method,"params",h.params===void 0?{}:h.params,"invalid_params");let v;if(!l&&!$n(h.method))throw q("not_initialized","Runtime daemon connection must initialize before runtime methods are accepted.");if(l&&$n(h.method))throw q("conflict","Runtime daemon connection is already initialized.");if(l&&g==="probe"&&!Pl.has(h.method))throw q("unauthorized","Runtime daemon probe connections are read-only and method-limited.");if($n(h.method)){v=V(h.params),g=v?.connectionPurpose==="probe"?"probe":"client";let O=typeof v?.token=="string"?v.token:void 0;if(e.authToken!==void 0&&O!==e.authToken)throw q("unauthorized","Runtime daemon initialize token is invalid.");let F=typeof v?.profile=="string"?v.profile:void 0;if(F!==void 0&&F!==e.runtime.identity.profile)throw q("conflict",`Runtime daemon profile mismatch: expected ${e.runtime.identity.profile}, got ${F}.`);d=Al(v?.clientInfo,d),R=Jl(v?.clientInfo),c=zl(v?.clientInfo)}$n(h.method)||(xl(h.method,f),Tl(h,f));let P=await El(h,e,s,d,o(()=>Cl(h,e,t,k,w,I,()=>s,d,R,c,a),"dispatch")),E=Zl(h.method,P);if(Fs(h.method,"result",E,"internal_error"),$n(h.method)){if(s=Ol(v?.capabilities),g==="client"&&e.reverseBridgeHub!==void 0&&e.notify!==void 0&&(u=e.reverseBridgeHub.attach({principalId:d,connectionId:r,...Cs(v?.clientInfo)!==void 0?{instanceSecret:Cs(v?.clientInfo)}:{},notify:e.notify}),a=u.bridge,i.close()),g==="client"&&e.management!==void 0)try{e.management.attachClient(r),m=!0}catch(O){throw u?.close(),u=void 0,O}l=!0}return Ei(h.id,E)}catch(h){return Ne(ec(h),A.id)}},"handle"),close(){for(let A of[...n.keys()])w(A);u!==void 0?u.close():a.close(),m&&(e.management?.detachClient(r),m=!1)}}}o(Hs,"createRuntimeDaemonDispatcher");async function El(e,n,t,r,i){let a=o(()=>n.management!==void 0&&Dl(e.method)?n.management.runMutation(e.method,i):i(),"execute");if(!Ue(e.method)||n.requireOperationEnvelope!==!0)return a();if(t.operationDeduplication!==!0)throw q("client_upgrade_required","Runtime daemon mutations require durable operation support.");if(!e.operation)throw q("operation_required","Runtime daemon mutation is missing its operation envelope.");if(!n.controlJournal)throw q("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,...As(e.params)!==void 0?{resourceId:As(e.params)}:{},params:e.params??{}},{externalEffect:!0},a)}o(El,"dispatchWithOperation");function Dl(e){return bi(e)&&e!=="daemon.stop"&&e!=="runtime.shutdown"&&e!=="daemon.rollbackToInline"}o(Dl,"isManagedRuntimeMutation");function xl(e,n){let t=qs.get(e);if(t===void 0)throw q("internal_error",`Runtime daemon method has no authorization scope: ${e}.`);if(!n.has(t))throw q("unauthorized",`Runtime daemon method requires scope ${t}.`)}o(xl,"requireRuntimeMethodScope");function Tl(e,n){if(e.method!=="permission.respond")return;let t=ue(e.params)?e.params:void 0;if(!((t&&ue(t.decision)?t.decision:void 0)?.type!=="allow_always"||n.has("permission:grant-admin")))throw q("unauthorized","Persistent permission grants require scope permission:grant-admin.")}o(Tl,"requirePersistentGrantScope");function As(e){if(ue(e)){for(let n of["sessionId","runId","taskId","artifactId","requestId","name"])if(typeof e[n]=="string"&&e[n].length>0)return e[n]}}o(As,"operationResourceId");function Al(e,n){if(!ue(e))return n;let t=e.instanceId;return typeof t!="string"||!/^[A-Za-z0-9_.:-]{4,160}$/.test(t)?n:t}o(Al,"parseRuntimeClientPrincipal");function Cs(e){if(!ue(e))return;let n=e.instanceSecret;return typeof n=="string"?n:void 0}o(Cs,"parseRuntimeClientInstanceSecret");async function Cl(e,n,t,r,i,a,u,l,m,g,s){let d=n.runtime,R=n.reverseBridgeHub??s;switch(e.method){case"initialize":case"runtime.initialize":return{identity:d.identity,capabilities:Os(n.capabilities,d.agents.enabled,d.agents.enabled&&n.allowAgentRegistrationAdmin===!0,n.ownsA2AConfigReconciler===!0,n.controlJournal,n.reverseBridgeHub!==void 0,n.durableHostToolInvocations===!0,n.management!==void 0),principalId:l,...n.controlJournal!==void 0?{journalEpoch:n.controlJournal.journalEpoch}:{},grantedScopes:[...n.grantedScopes??$s]};case"ping":return{ok:!0,runtimeId:d.identity.runtimeId};case"runtime.identity":return d.identity;case"daemon.status":case"runtime.status":return Nl(await(n.status?n.status():d.status.snapshot()),R);case"daemon.stop":case"runtime.shutdown":return n.management?n.management.stop():n.stop?n.stop():d.close().then(()=>({ok:!0}));case"daemon.logs":return n.logs?n.logs():{entries:[]};case"daemon.preflight":return Fl(await(n.management?n.management.preflight():n.preflight?n.preflight():d.status.preflight()),R);case"daemon.management.get":if(!n.management)throw q("client_upgrade_required","Runtime daemon management is unavailable.");return n.management.inspect();case"daemon.rollbackToInline":{if(!n.management)throw q("client_upgrade_required","Runtime daemon rollback management is unavailable.");let c=_(e.params),f={expectedRuntimeId:j(c,"expectedRuntimeId"),expectedRevision:St(c,"expectedRevision"),expectedOwnerPolicyRevision:St(c,"expectedOwnerPolicyRevision")};return n.management.rollbackToInline(f)}case"runtime.capabilities":return Os(n.capabilities,d.agents.enabled,d.agents.enabled&&n.allowAgentRegistrationAdmin===!0,n.ownsA2AConfigReconciler===!0,n.controlJournal,n.reverseBridgeHub!==void 0,n.durableHostToolInvocations===!0,n.management!==void 0);case"operation.get":{let c=_(e.params),f=j(c,"operationId"),w=j(c,"journalEpoch");if(!n.controlJournal)return d.operations.get({operationId:f,journalEpoch:w});if(w!==n.controlJournal.journalEpoch)throw q("operation_epoch_mismatch","Runtime operation belongs to another journal epoch.");let k=n.controlJournal.get(f);if(!k||k.principalId!==l)throw q("not_found","Runtime operation was not found.");return _l(k)}case"config.read":return n.config?Er(await n.config()):d.config.read();case"config.patch":{let c=Bs(_(e.params),"patch");return d.config.patch(c)}case"config.reload":return d.config.reload();case"provider.list":return n.providerList?n.providerList():d.catalog.providers();case"model.list":return n.providerList?ql(await n.providerList(),V(e.params)):d.catalog.models(Kl(e.params));case"provider.custom.list":return d.catalog.customProviders();case"provider.custom.upsert":{let c=_(e.params);return d.catalog.upsertCustomProvider(_(c.config))}case"provider.custom.remove":return d.catalog.deleteCustomProvider(U(e.params,"name"));case"mcp.server.list":return d.mcp.listServers();case"mcp.server.get":return d.mcp.getServer(U(e.params,"name"));case"mcp.server.validate":{let c=_(e.params);return d.mcp.validateServer(j(c,"name"),c.config)}case"mcp.server.upsert":{let c=_(e.params);return d.mcp.upsertServer(j(c,"name"),_(c.config))}case"mcp.server.delete":case"mcp.server.remove":return d.mcp.deleteServer(U(e.params,"name"));case"mcp.server.reload":return d.mcp.reloadServers();case"mcp.tool.list":return d.mcp.listTools(Xl(e.params));case"extension.list":return d.catalog.extensions();case"extension.reload":return d.catalog.reloadExtensions();case"command.list":{let c=V(e.params),f=typeof c?.projectRoot=="string"?c.projectRoot:void 0;return d.catalog.commands(f)}case"command.resolve":{let c=_(e.params);return d.catalog.resolveCommand({name:j(c,"name"),...typeof c.projectRoot=="string"?{projectRoot:c.projectRoot}:{}})}case"skill.list":return d.catalog.skills(Bl(e.params));case"skill.describe":case"skill.read":{let c=_(e.params);return d.catalog.describeSkill({name:j(c,"name"),...typeof c.projectRoot=="string"?{projectRoot:c.projectRoot}:{}})}case"artifact.create":return d.artifacts.create(Ul(e.params));case"artifact.get":return d.artifacts.get(U(e.params,"artifactId"));case"artifact.delete":return d.artifacts.delete(U(e.params,"artifactId"));case"agentRegistrations.list":return vt(n),ht(d),d.admin.agentRegistrations.list();case"agentRegistrations.upsert":{vt(n),ht(d);let c=_(e.params);return d.admin.agentRegistrations.upsert(_(c.registration),{expectedConfigurationRevision:Ir(c),expectedManagementOwner:br(c)})}case"agentRegistrations.setEnabled":{vt(n),ht(d);let c=_(e.params),f=oe(c,"claimOwner");if(f!==void 0&&f.length===0)throw q("invalid_request","Expected non-empty optional string param: claimOwner");return d.admin.agentRegistrations.setEnabled(j(c,"agentId"),Yl(c,"enabled"),{expectedConfigurationRevision:Ir(c),expectedManagementOwner:br(c),...f?{claimOwner:f}:{}})}case"agentRegistrations.remove":vt(n),ht(d);{let c=_(e.params);return d.admin.agentRegistrations.remove(j(c,"agentId"),{expectedConfigurationRevision:Ir(c),expectedManagementOwner:br(c)})}case"agents.listDispatchable":return d.agents.listDispatchable(_(e.params));case"agents.describe":{let c=_(e.params);return d.agents.describe(j(c,"agentId"),_(c.query))}case"agents.preflight":return d.agents.preflight(_(e.params));case"agents.tree":return d.agents.tree(U(e.params,"sessionId"));case"agents.detail":{let c=_(e.params);return d.agents.detail(j(c,"sessionId"),j(c,"actorPath"))}case"agents.spawn":{let c=_(e.params);return d.agents.spawn(j(c,"sessionId"),_(c.input))}case"agents.send":{let c=_(e.params),f=oe(c,"classification");if(f!==void 0&&f!=="public"&&f!=="internal"&&f!=="sensitive")throw q("invalid_params","Invalid Agent message classification.");return await d.agents.send(j(c,"sessionId"),j(c,"actorPath"),j(c,"content"),f),{ok:!0}}case"agents.followup":{let c=_(e.params),f=$e(c,"expectedRevision");return d.agents.followup(j(c,"sessionId"),j(c,"actorPath"),j(c,"objective"),f===void 0?void 0:{expectedRevision:f})}case"agents.interrupt":{let c=_(e.params);return await d.agents.interrupt(j(c,"sessionId"),j(c,"actorPath"),oe(c,"reason")),{ok:!0}}case"agents.output":{let c=_(e.params);return d.agents.output(j(c,"sessionId"),j(c,"actorPath"),oe(c,"turnId"))}case"agents.events":{let c=_(e.params);return d.agents.events(j(c,"sessionId"),$e(c,"afterSequence"))}case"agents.wait":{let c=_(e.params);return d.agents.wait(j(c,"sessionId"),$e(c,"afterSequence"),$e(c,"timeoutMs"))}case"session.create":return d.sessions.create(V(e.params));case"session.load":return d.sessions.load(U(e.params,"sessionId"));case"session.list":return d.sessions.list(V(e.params));case"session.transcript":return d.sessions.transcript(U(e.params,"sessionId"));case"session.observe":{let c=Pr(),f=await d.sessions.observe(U(e.params,"sessionId"),w=>a(c,kr(w,R)));return r(c,f),{subscriptionId:c,snapshot:jl(f.snapshot,R)}}case"session.fork":return d.sessions.fork(_(e.params));case"session.notice.append":return d.sessions.appendNotice(_(e.params));case"session.rewind":return d.sessions.rewind(_(e.params));case"session.active_entry.set":case"session.activeEntry.set":return d.sessions.setActiveEntry(_(e.params));case"session.compact":return d.sessions.compact(_(e.params));case"session.archive":return await d.sessions.archive(U(e.params,"sessionId")),{ok:!0};case"session.unarchive":return await d.sessions.unarchive(U(e.params,"sessionId")),{ok:!0};case"session.delete":return await d.sessions.delete(U(e.params,"sessionId")),{ok:!0};case"session.settings.get":return d.sessions.getSettings(U(e.params,"sessionId"));case"session.settings.getVersioned":return d.sessions.getSettingsVersioned(U(e.params,"sessionId"));case"session.settings.update":{if(n.requireOperationEnvelope===!0)throw q("client_upgrade_required","Shared daemon session settings require session.settings.updateVersioned.");let c=_(e.params);return d.sessions.updateSettings(j(c,"sessionId"),_(c.patch))}case"session.settings.updateVersioned":{let c=_(e.params);return d.sessions.updateSettingsVersioned(j(c,"sessionId"),_(c.patch),{expectedRevision:St(c,"expectedRevision")})}case"run.start":{let c=_(e.params),f=j(c,"sessionId"),w=`run_${Date.now().toString(36)}_${qn().replace(/-/g,"").slice(0,8)}`,k=await Ms({params:c,sessionId:f,trustedRunId:w,principalId:l,clientName:m,clientVersion:g,operationId:e.operation?.operationId,reverseBridge:s}),I=await d.runs.start(k);return t.remember(I.runId,I.result),{runId:I.runId,sessionId:I.sessionId,...I.turnId!==void 0?{turnId:I.turnId}:{}}}case"run.input.submit":{let c=_(e.params),f=j(c,"sessionId"),w=j(c,"afterRunId"),k=j(c,"delivery"),I=await d.runs.get(w);if(I.sessionId!==f)throw q("conflict",`Runtime continuation target ${w} does not belong to session ${f}.`);if(!Ml(I.phase))return{accepted:!1,delivery:k,sessionId:f,afterRunId:w,reason:"stale_run"};if(k==="interrupt")return{accepted:!1,delivery:k,sessionId:f,afterRunId:w,reason:"unsupported_capability"};let C=`run_${Date.now().toString(36)}_${qn().replace(/-/g,"").slice(0,8)}`,A=await Ms({params:c,sessionId:f,trustedRunId:C,principalId:l,clientName:m,clientVersion:g,operationId:e.operation?.operationId,reverseBridge:s}),h=await d.runs.submitInput(A);if(h.accepted){let v=d.runs.await(h.runId);t.remember(h.runId,v)}return h}case"run.get":return Ze(await d.runs.get(U(e.params,"runId")),R);case"run.list":return(await d.runs.list(V(e.params))).map(c=>Ze(c,R));case"run.await":{let c=U(e.params,"runId"),f=t.get(c);return f||d.runs.await(c)}case"run.abort":return await d.runs.abort(U(e.params,"runId")),{ok:!0};case"run.model.set":return js(d,e.params);case"run.setModel":return js(d,e.params);case"run.provider.set":{let c=_(e.params);return await d.runs.setProvider(j(c,"runId"),j(c,"provider")),{ok:!0}}case"run.setProvider":{let c=_(e.params);return await d.runs.setProvider(j(c,"runId"),j(c,"provider")),{ok:!0}}case"run.reasoning.set":return Ns(d,e.params);case"run.setReasoning":return Ns(d,e.params);case"event.subscribe":{let c=V(e.params)??{},f=V(c.filter);await Ye(d,f?.sessionId);let w=Pr(),k=d.events.subscribe(f??{},I=>{a(w,kr(I,R))});return r(w,k),{subscriptionId:w}}case"event.unsubscribe":return{ok:i(U(e.params,"subscriptionId"))};case"event.replay":{let c=V(e.params);return await Ye(d,c?.sessionId),Ll(await d.events.replay(c),u()).map(f=>kr(f,R))}case"permission.list":case"permission.listPending":{let c=V(e.params);return await Ye(d,c?.sessionId),d.permissions.listPending(c)}case"permission.request":{let c=_(e.params);return await Ye(d,c.sessionId),d.permissions.request(c)}case"permission.respond":{let c=_(e.params),f=oe(c,"runId");return d.permissions.respond(j(c,"requestId"),_(c.decision),f!==void 0?{runId:f}:void 0)}case"permission.grants.list":return d.permissions.listGrants();case"permission.grants.revoke":{let c=_(e.params);return d.permissions.revokeGrant(j(c,"grantId"),St(c,"expectedRevision"))}case"user_input.listPending":{let c=V(e.params);return await Ye(d,c?.sessionId),d.userInputs.listPending(c)}case"user_input.respond":{let c=_(e.params),f=$e(c,"expectedRevision"),w=oe(c,"runId");return d.userInputs.respond(j(c,"requestId"),c.answer,f!==void 0||w!==void 0?{...f!==void 0?{expectedRevision:f}:{},...w!==void 0?{runId:w}:{}}:void 0)}case"user_input.dismiss":{let c=_(e.params),f=$e(c,"expectedRevision"),w=oe(c,"runId");return d.userInputs.dismiss(j(c,"requestId"),f!==void 0||w!==void 0?{...f!==void 0?{expectedRevision:f}:{},...w!==void 0?{runId:w}:{}}:void 0)}case"credential.register":{let c=_(e.params);return s.registerCredential({leaseId:j(c,"leaseId"),providers:Vl(c,"providers"),...oe(c,"expiresAt")!==void 0?{expiresAt:oe(c,"expiresAt")}:{}})}case"credential.get":return s.getCredential(U(e.params,"leaseId"));case"credential.revoke":return s.revokeCredential(U(e.params,"leaseId"));case"credential.supply":{let c=_(e.params);return{ok:s.supplyCredential({requestId:j(c,"requestId"),...oe(c,"credential")!==void 0?{credential:oe(c,"credential")}:{},...oe(c,"error")!==void 0?{error:oe(c,"error")}:{}})}}case"host_tool.register":{let c=_(e.params);return s.registerHostTools({leaseId:j(c,"leaseId"),tools:Gl(c.tools)})}case"host_tool.get":return s.getHostTools(U(e.params,"leaseId"));case"host_tool.invocation.get":return s.getHostToolInvocation(U(e.params,"invocationId"));case"host_tool.revoke":return s.revokeHostTools(U(e.params,"leaseId"));case"host_tool.complete":{let c=_(e.params);return{ok:s.completeHostTool({invocationId:j(c,"invocationId"),...c.result!==void 0?{result:_(c.result)}:{},...oe(c,"error")!==void 0?{error:oe(c,"error")}:{}})}}case"workflow.list":return d.workflows.list(V(e.params));case"workflow.get":return d.workflows.get(U(e.params,"runId"));case"workflow.subscribe":{let c=V(e.params)??{},f=V(c.filter),w=Pr(),k=d.workflows.subscribe(f??{},I=>{a(w,I)});return r(w,k),{subscriptionId:w}}case"workflow.unsubscribe":return{ok:i(U(e.params,"subscriptionId"))};case"workflow.pause":return d.workflows.pause(U(e.params,"runId"));case"workflow.resume":return d.workflows.resume(U(e.params,"runId"));case"workflow.stop":return d.workflows.stop(U(e.params,"runId"));case"learning.list":return Me(d.learning,l).list(V(e.params));case"learning.get":return Me(d.learning,l).get(U(e.params,"nameOrSlug"));case"learning.snapshot":return Me(d.learning,l).getSnapshot();case"learning.events":return Me(d.learning,l).events($e(V(e.params)??{},"afterRevision"));case"learning.acknowledge":return await Me(d.learning,l).acknowledge(U(e.params,"nameOrSlug")),{ok:!0};case"learning.snooze":{let c=_(e.params);return await Me(d.learning,l).snooze(j(c,"nameOrSlug"),j(c,"until")),{ok:!0}}case"learning.reject":case"learning.disable":case"learning.rollback":case"learning.review":case"learning.trust":{let c=Me(d.learning,l),f=U(e.params,"nameOrSlug");return e.method==="learning.reject"?await c.reject(f):e.method==="learning.disable"?await c.disable(f):e.method==="learning.rollback"?await c.rollback(f):e.method==="learning.review"?await c.review(f):await c.trust(f),{ok:!0}}case"learning.promote":{let c=_(e.params),f=j(c,"scope");if(f!=="user")throw q("invalid_params","Learning promotion scope must be user.");return await Me(d.learning,l).promote(j(c,"nameOrSlug"),f),{ok:!0}}case"context.budget.get":return _s(u()),await Ye(d,oe(V(e.params)??{},"sessionId")),Ls(d,"context.budget.snapshot",V(e.params));case"tool.exposure.preview":return _s(u()),await Ye(d,oe(V(e.params)??{},"sessionId")),Ls(d,"tool.exposure.planned",V(e.params));default:throw q("method_not_found",`Runtime daemon method is not implemented: ${e.method}`)}}o(Cl,"dispatchRuntimeDaemonRequest");async function Ms(e){let n=V(e.params.credential),t=V(e.params.hostTools),r=n===void 0?void 0:await e.reverseBridge.acquireCredential({leaseId:j(n,"leaseId"),provider:j(n,"provider"),sessionId:e.sessionId,runId:e.trustedRunId}),i=t===void 0?void 0:e.reverseBridge.createHostToolRuntime({leaseId:j(t,"leaseId"),sessionId:e.sessionId,runId:e.trustedRunId}),a=rn(),u=i===void 0?void 0:a===null?i:Ql(i,a),l=V(e.params.options)??{};return{...e.params,sessionId:e.sessionId,trustedRunId:e.trustedRunId,origin:{principalId:e.principalId,...e.clientName!==void 0?{clientName:e.clientName}:{},...e.clientVersion!==void 0?{clientVersion:e.clientVersion}:{},...e.operationId!==void 0?{operationId:e.operationId}:{}},...r!==void 0?{providerCredential:r}:{},...n!==void 0?{providerCredentialProvider:j(n,"provider")}:{},...u!==void 0?{options:{...l,extensionRuntime:u}}:{}}}o(Ms,"bindTrustedRunInput");function Ml(e){return e==="queued"||e==="running"||e==="waiting_permission"||e==="waiting_user_input"}o(Ml,"isActiveRuntimeRunPhase");function Ol(e){return ue(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(Ol,"parseRuntimeClientCapabilities");function Os(e={},n=!1,t=!1,r=!1,i,a=!1,u=!1,l=!1){let m={...e};delete m.externalAgents,delete m.externalAgentAdmin,delete m.a2aConfigReconciler,delete m.actorControlPlane,delete m.runtimeAutoModeGuardrail;let g=vr();return{events:!0,permissions:!0,workflows:!0,configAdmin:!0,commandCatalog:!0,skillCatalog:!0,artifactUpload:!0,contextDiagnostics:!0,hardDispose:!1,externalAgents:n,actorControlPlane:{version:1,methodNamespace:"agents"},runtimeAutoModeGuardrail:{version:1,owner:"session-runtime",escalationCreatesPermission:!0,fallbackPersistsEngine:!0},...t?{externalAgentAdmin:{version:1,activation:!0,conditionalMutations:!0,managementOwner:!0}}:{},...r?{a2aConfigReconciler:{version:1}}:{},...i!==void 0?{operationDeduplication:{version:1,retentionMs:Number.MAX_SAFE_INTEGER},journalEpoch:i.journalEpoch,controlHealth:i.health}:{},sessionObservation:{version:1,maxBufferedEvents:256},sessionAdmission:{version:1,surfaces:bl,legacySurface:!0,partnerDenied:!0},completeObservationSnapshot:{version:1,transcriptRevision:!0,managedTasks:!0,queuedInputs:!0},connectionLifecycle:{version:1},typedRuntimeEvents:{version:1},daemonSafeRunInput:{version:1},...l?{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","autoModeClassifierModel","autoModeTimeoutMs"]},...i!==void 0?{durableRecoveryQueries:{version:1,operationResult:!0,hostToolInvocation:u,permissionGrants:!0,daemonPreflight:!0,terminalAcknowledgement:!1,terminalAcknowledgementOwner:"client"}}:{},afterTurnInput:{version:1},learningCenter:{version:1},askUserTransport:{version:1},permissionCas:{version:1},providerCredentialBroker:{version:1,registrationConnectionBound:!a,stableClientResume:a,runtimeRestartExpiresLease:!0,acquiredCredentialSurvivesDisconnect:!0,requestTimeoutMs:g.callTimeoutMs},runBoundHostTools:{version:1,registrationConnectionBound:!a,stableClientResume:a,invocationStatusQuery:a,invocationReplay:!1,invocationTimeoutMs:g.callTimeoutMs,maxResultBytes:g.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},...m}}o(Os,"runtimeDaemonCapabilities");function _l(e){return e?{...e}:{}}o(_l,"publicOperationReceipt");function ht(e){if(!e.agents.enabled)throw q("method_not_found","Runtime external agent executor plane is not enabled.")}o(ht,"requireExternalAgentsEnabled");function vt(e){if(e.allowAgentRegistrationAdmin!==!0)throw q("permission_denied","Runtime daemon host denied Agent registration administration.")}o(vt,"requireAgentRegistrationAdmin");function Ll(e,n){return n.contextDiagnostics===!0?e:e.filter(t=>!Xs(t))}o(Ll,"filterReplayForClientCapabilities");async function Ye(e,n){n!==void 0&&await e.sessions.transcript(n)}o(Ye,"assertAdmittedSessionId");function jl(e,n){return{...e,runs:e.runs.map(t=>Ze(t,n))}}o(jl,"augmentObservationRunRequirements");function Nl(e,n){return!ue(e)||!Array.isArray(e.runs)?e:{...e,runs:e.runs.map(t=>Ks(t)?Ze(t,n):t)}}o(Nl,"augmentStatusRunRequirements");function Fl(e,n){return{...e,activeRuns:e.activeRuns.map(t=>Ze(t,n)),queuedRuns:e.queuedRuns.map(t=>Ze(t,n))}}o(Fl,"augmentPreflightRunRequirements");function kr(e,n){return Ks(e.payload)?{...e,payload:Ze(e.payload,n)}:e}o(kr,"augmentRuntimeEventRequirements");function Ze(e,n){let t=n?.getRunRequirements(e.runId);return t===void 0?e:$l(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 Ks(e){return ue(e)&&typeof e.runId=="string"&&typeof e.sessionId=="string"&&typeof e.phase=="string"&&typeof e.startedAt=="string"&&typeof e.provider=="string"}o(Ks,"isRuntimeRunStatus");function $l(e){return e==="completed"||e==="failed"||e==="cancelled"||e==="interrupted"}o($l,"isTerminalRuntimeRunPhase");function _s(e){if(e.contextDiagnostics!==!0)throw q("unauthorized","Runtime daemon client did not negotiate contextDiagnostics capability.")}o(_s,"requireContextDiagnosticsCapability");function Xs(e){return ue(e)?e.type==="context.budget.snapshot"||e.type==="tool.exposure.planned"||e.type==="context.compaction.skipped":!1}o(Xs,"isContextDiagnosticRuntimeEvent");async function Ls(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(Ls,"latestRuntimeDiagnosticPayload");async function js(e,n){let t=_(n);return await e.runs.setModel(j(t,"runId"),oe(t,"model")),{ok:!0}}o(js,"setRunModel");async function Ns(e,n){let t=_(n);return await e.runs.setReasoning(j(t,"runId"),oe(t,"reasoning")),{ok:!0}}o(Ns,"setRunReasoning");function ql(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(a=>ue(a)&&a.name===r);return ue(i)?{provider:r,models:Array.isArray(i.models)?i.models:[]}:{provider:r,models:[]}}return t.flatMap(i=>!ue(i)||typeof i.name!="string"?[]:[{provider:i.name,models:Array.isArray(i.models)?i.models:[]}])}o(ql,"listRuntimeModels");function Er(e){return Array.isArray(e)?e.map(n=>Er(n)):ue(e)?Object.fromEntries(Object.entries(e).map(([n,t])=>[n,Hl(n)?"[redacted]":Er(t)])):e}o(Er,"redactRuntimeConfig");function Hl(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(Hl,"isSensitiveConfigKey");function V(e){if(e!==void 0)return _(e)}o(V,"optionalRecord");function Bs(e,n){return _(e[n])}o(Bs,"requireRecordField");function Kl(e){let n=V(e);if(n)return typeof n.provider=="string"?{provider:n.provider}:void 0}o(Kl,"parseModelListFilter");function Xl(e){let n=V(e);if(n)return{...typeof n.server=="string"?{server:n.server}:{},...typeof n.forceRefresh=="boolean"?{forceRefresh:n.forceRefresh}:{}}}o(Xl,"parseMcpToolListFilter");function Bl(e){let n=V(e);if(n)return{...typeof n.projectRoot=="string"?{projectRoot:n.projectRoot}:{},...typeof n.userInvocableOnly=="boolean"?{userInvocableOnly:n.userInvocableOnly}:{}}}o(Bl,"parseSkillListFilter");function Ul(e){let n=_(e),t=n.kind;if(t!=="image"&&t!=="file"&&t!=="video")throw q("invalid_request","Expected artifact kind: image | file | video");let r=j(n,"path");return{kind:t,path:r,...typeof n.mediaType=="string"?{mediaType:n.mediaType}:{},...typeof n.mimeType=="string"?{mimeType:n.mimeType}:{},...typeof n.name=="string"?{name:n.name}:{},...Wl(n.source)?{source:n.source}:{},...typeof n.description=="string"?{description:n.description}:{}}}o(Ul,"parseArtifactCreateInput");function Wl(e){return e==="user-inline"||e==="clipboard"||e==="drag-drop"||e==="file-picker"}o(Wl,"isRuntimeArtifactSource");function Jl(e){return ue(e)&&typeof e.name=="string"&&e.name.length>0?e.name:void 0}o(Jl,"parseRuntimeClientName");function zl(e){return ue(e)&&typeof e.version=="string"&&e.version.length>0?e.version:void 0}o(zl,"parseRuntimeClientVersion");function Vl(e,n){let t=e[n];if(!Array.isArray(t)||t.some(r=>typeof r!="string"||r.length===0))throw q("invalid_request",`Expected string array param: ${n}`);return t}o(Vl,"requireStringArrayField");function Gl(e){if(!Array.isArray(e))throw q("invalid_request","Expected host tool descriptors array.");return e.map(n=>{let t=_(n),r=j(t,"sideEffect");if(r!=="none"&&r!=="idempotent"&&r!=="non_idempotent")throw q("invalid_request",`Invalid host tool sideEffect: ${r}`);return{name:j(t,"name"),description:j(t,"description"),inputSchema:Bs(t,"inputSchema"),sideEffect:r}})}o(Gl,"parseRuntimeHostToolDescriptors");function Ql(e,n){return{hasCapabilityProvider(t){return e.hasCapabilityProvider?.(t)===!0||n.hasCapabilityProvider?.(t)===!0},async searchCapabilities(t,r,i){let[a,u]=await Promise.all([e.searchCapabilities(t,r,i),n.searchCapabilities(t,r,i)]),l=[...a,...u];return l.slice(0,i?.limit??l.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(Ql,"mergeExtensionRuntimeContracts");function ue(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}o(ue,"isRecord");function _(e){if(!e||typeof e!="object"||Array.isArray(e))throw q("invalid_request","Expected params to be an object.");return e}o(_,"requireRecord");function U(e,n){return j(_(e),n)}o(U,"requireStringParam");function j(e,n){let t=e[n];if(typeof t!="string"||t.length===0)throw q("invalid_request",`Expected string param: ${n}`);return t}o(j,"requireStringField");function Yl(e,n){let t=e[n];if(typeof t!="boolean")throw q("invalid_request",`Expected boolean param: ${n}`);return t}o(Yl,"requireBooleanField");function oe(e,n){let t=e[n];if(t!=null){if(typeof t!="string")throw q("invalid_request",`Expected optional string param: ${n}`);return t}}o(oe,"optionalStringField");function Ir(e){let n=e.expectedConfigurationRevision;if(n==null)return n;if(typeof n!="string"||n.length===0)throw q("invalid_request","Expected optional string or null param: expectedConfigurationRevision");return n}o(Ir,"optionalExpectedConfigurationRevision");function br(e){let n=e.expectedManagementOwner;if(n==null)return n;if(typeof n!="string"||n.length===0)throw q("invalid_request","Expected optional string or null param: expectedManagementOwner");return n}o(br,"optionalExpectedManagementOwner");function $e(e,n){let t=e[n];if(t!=null){if(!Number.isSafeInteger(t)||t<0)throw q("invalid_request",`Expected optional non-negative integer param: ${n}`);return t}}o($e,"optionalIntegerField");function St(e,n){let t=$e(e,n);if(t===void 0)throw q("invalid_request",`Expected non-negative integer param: ${n}`);return t}o(St,"requireIntegerField");function q(e,n,t){let r=new Error(n);return r.code=e,t!==void 0&&(r.data=t),r}o(q,"daemonError");function Pr(){return`sub_${qn().replace(/-/g,"").slice(0,12)}`}o(Pr,"createSubscriptionId");function Fs(e,n,t,r){let i=hn(wt[e][n],t,n);if(i.length!==0)throw q(r,n==="params"?`Invalid params for ${e}.`:`Runtime daemon produced an invalid result for ${e}.`,{issues:i})}o(Fs,"validateDaemonMethodValue");function Zl(e,n){return n===void 0?null:e!=="run.await"||!ue(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(Zl,"serializeRuntimeDaemonMethodResult");function ec(e){if(e instanceof Error&&"code"in e&&e.code==="revision_conflict"){let n=e;return{code:"conflict",message:e.message,data:{conflict:"revision_conflict",expectedRevision:n.expectedRevision,currentRevision:n.currentRevision}}}if(e instanceof uo)return{code:"conflict",message:e.message,data:{agentId:e.agentId,conflict:e.code}};if(e instanceof Error){let n=e;return{code:typeof n.code=="string"&&nc(n.code)?n.code:"internal_error",message:e.message,...n.data!==void 0?{data:n.data}:{}}}return{code:"internal_error",message:String(e)}}o(ec,"normalizeRuntimeDaemonError");function nc(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(nc,"isRuntimeDaemonErrorCode");import{createHash as tc,randomUUID as Js}from"node:crypto";import*as Z from"node:fs";import Us from"node:path";var Se=class extends Error{static{o(this,"RuntimeControlJournalError")}code;constructor(n,t){super(t),this.name="RuntimeControlJournalError",this.code=n}};function zs(e){Z.mkdirSync(e.rootDir,{recursive:!0});let n=Us.join(e.rootDir,"journal-meta.json"),t=Us.join(e.rootDir,"control.jsonl"),r=lc(n),i=r.meta,a=uc(t),u=a.records,l=new Map,m=a.trusted&&r.trusted?"healthy":"control_history_untrusted";return m==="healthy"&&dc(u,t),{journalEpoch:i.journalEpoch,get health(){return m},execute(g,s,d){if(m!=="healthy")return Promise.reject(new Se("control_history_untrusted","Runtime control history is untrusted; mutations are quarantined."));try{ac(g,i.journalEpoch);let R=mc(g.params),c=u.get(g.operationId);if(c){sc(c,g,R);let w=l.get(g.operationId);return w||ic(c)}let f=rc(t,u,g,R,s.externalEffect===!0,d,()=>{m="control_history_untrusted"});return l.set(g.operationId,f),f.finally(()=>l.delete(g.operationId)).catch(()=>{}),f}catch(R){return Promise.reject(R)}},get(g){return u.get(g)}}}o(zs,"createRuntimeControlJournal");async function rc(e,n,t,r,i,a,u){let l=oc(t,r,"accepted");Vs(e,l),n.set(t.operationId,l),i&&kt(e,n,l,"dispatched");let m;try{m=await a()}catch(g){let s=pc(g);try{kt(e,n,l,"rejected",{error:s})}catch{u()}throw g}try{return kt(e,n,l,"applied",{result:m}).result}catch{throw u(),n.set(t.operationId,{...l,state:"unknown",updatedAt:new Date().toISOString()}),new Se("operation_unknown","Runtime operation completed but its durable outcome could not be recorded.")}}o(rc,"executeNewOperation");function kt(e,n,t,r,i={}){let a={type:"operation",...t,state:r,...i,updatedAt:new Date().toISOString()};return Vs(e,a),n.set(a.operationId,a),a}o(kt,"updateOperation");function oc(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(oc,"operationRecord");function ic(e){if(e.state==="applied")return Promise.resolve(e.result);if(e.state==="rejected")return Promise.reject(new Se(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 Se(n,`Runtime operation is ${e.state}; it will not be replayed.`))}o(ic,"replayOperation");function sc(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 Se("operation_id_reuse","Runtime operation ID was already used for a different request or principal.")}o(sc,"assertMatchingOperation");function ac(e,n){if(e.journalEpoch!==n)throw new Se("operation_epoch_mismatch","Runtime operation belongs to a different control journal epoch.");if(!/^[A-Za-z0-9_.:-]{4,160}$/.test(e.operationId))throw new Se("invalid_operation_id","Runtime operation ID is invalid.");if(e.principalId.length===0||e.method.length===0)throw new Se("invalid_operation","Runtime operation identity is incomplete.")}o(ac,"validateOperationInput");function dc(e,n){for(let t of[...e.values()])t.state!=="accepted"&&t.state!=="dispatched"||kt(n,e,t,t.state==="dispatched"?"unknown":"interrupted")}o(dc,"recoverUnfinished");function uc(e){let n=new Map;if(!Z.existsSync(e))return{trusted:!0,records:n};let t=Z.readFileSync(e,"utf8").split(/\r?\n/);for(let r of t)if(r.length!==0)try{let i=JSON.parse(r);if(!gc(i))return{trusted:!1,records:n};n.set(i.operationId,i)}catch{return{trusted:!1,records:n}}return{trusted:!0,records:n}}o(uc,"loadOperationRecords");function lc(e){if(Z.existsSync(e)){try{let t=JSON.parse(Z.readFileSync(e,"utf8"));if(fc(t))return{meta:t,trusted:!0}}catch{}return{meta:Ws(),trusted:!1}}let n=Ws();return cc(e,n),{meta:n,trusted:!0}}o(lc,"loadOrCreateMeta");function Ws(){return{version:1,journalEpoch:`je_${Js().replace(/-/g,"")}`,createdAt:new Date().toISOString()}}o(Ws,"createJournalMeta");function Vs(e,n){let t=`${JSON.stringify(n)}
64
+ `,r=Z.openSync(e,"a",384);try{Z.writeFileSync(r,t,"utf8"),Z.fsyncSync(r)}finally{Z.closeSync(r)}}o(Vs,"appendRecord");function cc(e,n){let t=`${e}.${process.pid}.${Js()}.tmp`,r=Z.openSync(t,"wx",384);try{Z.writeFileSync(r,`${JSON.stringify(n,null,2)}
65
+ `,"utf8"),Z.fsyncSync(r)}finally{Z.closeSync(r)}Z.renameSync(t,e)}o(cc,"writeJsonAtomic");function mc(e){return tc("sha256").update(xr(e)).digest("hex")}o(mc,"digestCanonical");function xr(e){if(e===null||typeof e=="boolean"||typeof e=="string")return JSON.stringify(e);if(typeof e=="number"){if(!Number.isFinite(e))throw new Se("invalid_operation","Operation contains a non-finite number.");return JSON.stringify(e)}if(Array.isArray(e))return`[${e.map(xr).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)}:${xr(n[r])}`).join(",")}}`}throw new Se("invalid_operation","Operation contains a non-JSON value.")}o(xr,"canonicalJson");function pc(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(pc,"normalizeOperationError");function fc(e){return Gs(e)?e.version===1&&typeof e.journalEpoch=="string"&&typeof e.createdAt=="string":!1}o(fc,"isJournalMeta");function gc(e){return Gs(e)?e.type==="operation"&&typeof e.operationId=="string"&&typeof e.journalEpoch=="string"&&typeof e.principalId=="string"&&typeof e.method=="string"&&typeof e.requestDigest=="string"&&Rc(e.state)&&typeof e.updatedAt=="string":!1}o(gc,"isOperationRecord");function Rc(e){return e==="accepted"||e==="dispatched"||e==="applied"||e==="rejected"||e==="interrupted"||e==="unknown"}o(Rc,"isOperationState");function Gs(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}o(Gs,"isRecord");function Qs(e){return new Tr(e)}o(Qs,"createRuntimeDaemonManagementController");var Tr=class{constructor(n){this.input=n;this.runtimeEvents=n.runtime.events.subscribe({},()=>{this.revision+=1})}input;static{o(this,"DaemonManagementController")}clients=new Set;runtimeEvents;revision=0;activeMutations=0;activeMutationMethods=new Map;draining=!1;closed=!1;preflightFingerprint;attachClient(n){if(this.draining||this.closed)throw fe("conflict","Runtime daemon is draining and cannot attach another client.");this.clients.has(n)||(this.clients.add(n),this.revision+=1)}detachClient(n){this.clients.delete(n)&&(this.revision+=1)}async runMutation(n,t){if(this.draining||this.closed)throw fe("conflict","Runtime daemon is draining and rejects new mutations.");this.activeMutations+=1,this.activeMutationMethods.set(n,(this.activeMutationMethods.get(n)??0)+1),this.revision+=1;try{return await t()}finally{this.activeMutations-=1;let r=(this.activeMutationMethods.get(n)??1)-1;r===0?this.activeMutationMethods.delete(n):this.activeMutationMethods.set(n,r)}}async preflight(){for(let n=0;n<8;n+=1){let t=this.revision,r=await this.input.runtime.status.preflight();if(this.observePreflight(r),t===this.revision&&this.activeMutations===0)return yc(r,this.clients.size)}throw fe("conflict","Runtime state changed while daemon preflight was being read.")}async inspect(){for(let n=0;n<8;n+=1){let t=this.revision,r=await this.preflight();if(t!==this.revision)continue;let i=Y(this.input.paths.lockFile);if(i===void 0||i.runtimeId!==this.input.runtime.identity.runtimeId||i.kind!=="daemon")throw fe("conflict","Runtime daemon owner fence changed during inspection.");return{runtimeId:this.input.runtime.identity.runtimeId,revision:t,ownerPolicy:we(this.input.paths),owner:i,preflight:r}}throw fe("conflict","Runtime state changed while daemon management was inspected.")}async stop(){this.beginDraining();try{return await this.assertStoppable(),this.input.requestStop(),{ok:!0}}catch(n){throw this.draining=!1,n}}async rollbackToInline(n){if(n.expectedRuntimeId!==this.input.runtime.identity.runtimeId)throw fe("conflict","Runtime daemon instance changed before rollback commit.");this.beginDraining(n.expectedRevision);try{await this.assertStoppable(n.expectedRevision);let t=Hi(this.input.paths,n.expectedRuntimeId,n.expectedOwnerPolicyRevision);if(t.mode!=="inline")throw fe("internal_error","Runtime owner rollback did not commit inline mode.");return this.revision+=1,this.input.requestStop(),{accepted:!0,runtimeId:this.input.runtime.identity.runtimeId,revision:this.revision,ownerPolicy:{...t,mode:"inline"}}}catch(t){throw this.draining=!1,t}}close(){this.closed||(this.closed=!0,this.runtimeEvents.close(),this.clients.clear())}beginDraining(n){if(this.closed)throw fe("conflict","Runtime daemon management is closed.");if(this.draining)throw fe("conflict","Runtime daemon is already draining.");if(n!==void 0&&this.revision!==n)throw fe("conflict",`Runtime daemon management revision changed: expected ${n}, current ${this.revision}.`);if(this.activeMutations>0)throw fe("conflict",`Runtime daemon has in-flight mutations: ${[...this.activeMutationMethods].map(([t,r])=>`${t} (${r})`).join(", ")}.`);this.draining=!0}async assertStoppable(n){let t=await this.preflight();if(n!==void 0&&this.revision!==n)throw fe("conflict",`Runtime daemon state changed before stop commit: expected ${n}, current ${this.revision}.`);if(!t.canStop)throw fe("conflict",`Runtime daemon cannot stop safely: ${t.blockers.join(", ")}.`,{preflight:t})}observePreflight(n){let t=JSON.stringify(n);if(this.preflightFingerprint===void 0){this.preflightFingerprint=t;return}t!==this.preflightFingerprint&&(this.preflightFingerprint=t,this.revision+=1)}};function yc(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(yc,"withLogicalClients");function fe(e,n,t){let r=new Error(n);return r.code=e,t!==void 0&&(r.data=t),r}o(fe,"managementError");async function ea(e){xe(e.paths);let n=Xi();Bi(e.paths,n);let t=It(e,"starting");pn(e.paths,t),Te(e.paths,"info","Runtime daemon starting.",{runtimeId:e.runtime.identity.runtimeId,endpoint:e.endpoint.path});let r=Zr(I=>{wc(e.paths,I)}),i,a,u=!1,l=o(()=>{if(a===void 0){u=!0;return}a()},"requestStop"),m=Dr(),g=zs({rootDir:Ys.join(e.paths.rootDir,"control")}),s=Ds({invocationStateFile:Ys.join(e.paths.rootDir,"host-tool-invocations.json")}),d=Qs({runtime:e.runtime,paths:e.paths,requestStop:l}),R;try{i=await ns({endpoint:e.endpoint,createDispatcher:o(I=>Hs({runtime:e.runtime,authToken:n,...e.ownsA2AConfigReconciler===!0?{ownsA2AConfigReconciler:!0}:{},allowAgentRegistrationAdmin:!0,notify:I,runResults:m,controlJournal:g,reverseBridgeHub:s,management:d,durableHostToolInvocations:!0,requireOperationEnvelope:!0,logs:o(()=>({logFile:e.paths.logFile,entries:Ui(e.paths)}),"logs")}),"createDispatcher")}),R=It(e,"ready"),pn(e.paths,R),Te(e.paths,"info","Runtime daemon ready.",{runtimeId:R.runtimeId,endpoint:R.endpoint})}catch(I){Te(e.paths,"error","Runtime daemon failed to start.",{error:ke(I).message});let C=!0;try{await i?.close()}catch(A){C=!1,Te(e.paths,"error","Runtime daemon transport cleanup failed.",{error:ke(A).message})}throw d.close(),m.clear(),s.close(),r(),C?await Zs(e.paths,e.lock):pn(e.paths,{...t,status:"unhealthy",lastError:"Runtime daemon transport cleanup failed."}),I}let c=!1,f,w=new Promise(I=>{f=I}),k=o(async()=>{if(c)return;c=!0;let I=[],C=!1,A=!1;try{try{pn(e.paths,It(e,"stopping")),Te(e.paths,"info","Runtime daemon stopping.")}catch(h){I.push(`state transition: ${ke(h).message}`)}try{await i?.close(),C=!0}catch(h){I.push(`transport close: ${ke(h).message}`)}d.close(),s.close(),m.clear();try{await e.runtime.close(),A=!0}catch(h){I.push(`Runtime close: ${ke(h).message}`)}try{Te(e.paths,"info","Runtime daemon stopped.")}catch(h){I.push(`stop log: ${ke(h).message}`)}if(r(),C&&A){let h=await Zs(e.paths,e.lock),v=Y(e.lock.file);!h&&v?.runtimeId===e.lock.owner.runtimeId&&v.pid===e.lock.owner.pid&&v.createdAt===e.lock.owner.createdAt&&I.push("owner release: the daemon still owns its profile lock")}else try{pn(e.paths,{...It(e,"unhealthy"),lastError:I.join("; ")})}catch(h){I.push(`unhealthy state: ${ke(h).message}`)}if(I.length>0){try{Te(e.paths,"error","Runtime daemon stopped with cleanup failures.",{failures:I})}catch(h){I.push(`failure log: ${ke(h).message}`)}throw new Error(`Runtime daemon cleanup failed: ${I.join("; ")}`)}}finally{r(),f?.()}},"closeHost");return a=o(()=>{try{Te(e.paths,"info","Runtime daemon stop requested.")}catch(C){te({source:"runtime.daemon.host",level:"warn",message:"Runtime daemon stop request could not be logged.",detail:ke(C)})}setTimeout(()=>{k().catch(C=>{te({source:"runtime.daemon.host",level:"error",message:"Runtime daemon shutdown failed.",detail:ke(C)})})},0).unref?.()},"scheduleStop"),u&&a(),{endpoint:e.endpoint,state:R,closed:w,unref(){i?.unref()},close:k}}o(ea,"startRuntimeDaemonHost");async function Zs(e,n){for(let t=0;t<50;t+=1){try{if(zi(e,n))return!0}catch(i){te({source:"runtime.daemon.host",level:"warn",message:"Runtime daemon ownership release attempt failed.",detail:ke(i)})}let r=Y(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{Te(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:ke(t)})}return!1}o(Zs,"releaseHostOwnership");function wc(e,n){try{Te(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(wc,"appendRuntimeDiagnostic");function It(e,n){return{runtimeId:e.runtime.identity.runtimeId,profile:e.paths.profile,pid:process.pid,startedAt:e.runtime.identity.startedAt,endpoint:e.endpoint.path,version:e.runtime.identity.version,status:n,configHome:e.paths.configHome}}o(It,"createHostState");function ke(e){return e instanceof Error?e:new Error(String(e))}o(ke,"normalizeHostError");async function na(e){let n=e.profile??"default",t=Sc(e.homeDir),r=Ar.resolve(e.configHome??Ar.join(t,".kodax")),i=cn(r,n);ct(i);let a=e.endpoint??wn(n,mn(t,r)),u={runtimeId:`rt_${hc().replace(/-/g,"").slice(0,12)}`,pid:process.pid,createdAt:new Date().toISOString(),kind:"daemon"},l=await Rr(i,u,e.healthCheck);if(l.kind==="attach"){let m=Ve(l.state);return ra(i,m,e.connectTimeoutMs)}if(l.kind==="wait")return kc(i,a,u,{...e,profile:n});if(l.kind==="unhealthy")throw new Error(`Runtime daemon is ${l.health}; refusing to take ownership.`);return ta(i,a,u,l.lock,e)}o(na,"acquireRuntimeDaemonLease");function Sc(e){return Ar.resolve(e??vc.homedir())}o(Sc,"resolveRuntimeDaemonHomeDir");async function kc(e,n,t,r){let i=Date.now()+(r.startupTimeoutMs??5e3);for(;Date.now()<=i;){let a=await Rr(e,t,r.healthCheck);if(a.kind==="attach")return ra(e,Ve(a.state),r.connectTimeoutMs);if(a.kind==="claim")return ta(e,n,t,a.lock,r);if(a.kind==="unhealthy")throw new Error(`Runtime daemon is ${a.health}; refusing to take ownership.`);await bc(r.pollIntervalMs??100)}throw new Error(`Timed out waiting for runtime daemon profile "${r.profile}" to become ready.`)}o(kc,"waitForDaemonLease");async function ta(e,n,t,r,i){let a,u=!1;try{if(a=await i.createRuntime(t.runtimeId),a.identity.runtimeId!==t.runtimeId)throw new Error("Runtime factory returned an identity that does not match its owner fence.");u=!0;let l=await ea({runtime:a,paths:e,endpoint:n,lock:r,...i.ownsA2AConfigReconciler===!0?{ownsA2AConfigReconciler:!0}:{}});try{let m=await Oe(n,{connectTimeoutMs:i.connectTimeoutMs});return Ic(e,n,m,l)}catch(m){throw await l.close(),m}}catch(l){throw u||mt(r),await a?.close(),l}}o(ta,"createClaimedDaemonLease");async function ra(e,n,t){let r=await Oe(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(ra,"createAttachedLease");function Ic(e,n,t,r){r.unref();let i=!1,a=!1;return{transport:t,endpoint:n,paths:e,ownsHost:!0,hostClosed:r.closed,async close(){i||(i=!0,await t.close?.())},async shutdown(){a||(a=!0,await r.close())}}}o(Ic,"createOwnedLease");function bc(e){return new Promise(n=>{setTimeout(n,e).unref?.()})}o(bc,"delay");import{spawn as Pc}from"node:child_process";import{existsSync as Ec}from"node:fs";import{fileURLToPath as Dc}from"node:url";import xc from"node:os";import Ie from"node:path";var vn=class extends Error{constructor(t,r){super(t);this.reason=r;this.name="RuntimeDaemonStartupError"}reason;static{o(this,"RuntimeDaemonStartupError")}};async function da(e){let n=e.profile??"default",t=Ie.resolve(e.homeDir??xc.homedir()),r=Ie.resolve(e.configHome??Ie.join(t,".kodax")),i=cn(r,n);ct(i);let a=wn(i.profile,mn(t,r));if(e.endpoint&&e.endpoint.path!==a.path)throw new Error("SDK daemon auto-start only supports the profile default endpoint; use attach-only mode for custom endpoints.");let u=await Rt(i,e.healthCheck),l=pt(u);if(l==="healthy"&&u.state)return oa(i,Ve(u.state),!1,e);if(l==="unhealthy"||l==="mismatch")throw new Error(`Runtime daemon is ${l}; refusing to start a competing owner.`);let m=await Oc({profile:i.profile,homeDir:t,configHome:r,defaultProvider:e.defaultProvider,defaultModel:e.defaultModel,sessionsDir:e.sessionsDir,permissionTimeoutMs:e.permissionTimeoutMs}),g=await Tc(i,e,m),s=Ve(g.state);return oa(i,s,g.state.pid===m.pid,e)}o(da,"acquireRuntimeDaemonProcessLease");async function oa(e,n,t,r){let i=await Oe(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(oa,"connectProcessLease");async function Tc(e,n,t,r=Rt){let i=Date.now()+(n.startupTimeoutMs??6e4);try{for(;;){let a=await Ac(e,n,t,r),u=pt(a);if(u==="healthy"&&a.state)return a.state.pid===t.pid?t.unref():await t.terminate(),{...a,state:a.state};if(u==="mismatch")throw new vn("Runtime daemon endpoint identity does not match its persisted owner state.","identity_mismatch");let l=i-Date.now();if(l<=0)throw Mc(e);await Cc(Math.min(Math.max(1,n.pollIntervalMs??100),l),e,t,n.startupSignal)}}catch(a){try{await t.terminate()}catch(u){throw new AggregateError([a,u],"Runtime daemon startup failed and its child process could not be reclaimed.")}throw a}}o(Tc,"waitForHealthyDaemonStartup");async function Ac(e,n,t,r){let i=await Cr(Promise.race([r(e,n.healthCheck).then(a=>({kind:"health",observation:a})),t.exit.then(a=>({kind:"exit",exit:a}))]),n.startupSignal);if(i.kind==="exit"){if(ua(e,t))return r(e,n.healthCheck);throw la(i.exit)}return i.observation}o(Ac,"observeStartupHealth");async function Cc(e,n,t,r){let i=await Cr(Promise.race([sa(e).then(()=>{}),t.exit]),r);if(i!==void 0){if(ua(n,t)){await Cr(sa(e),r);return}throw la(i)}}o(Cc,"waitForStartupPoll");function ua(e,n){let t=Y(e.lockFile);return t!==void 0&&t.pid!==n.pid}o(ua,"hasCompetingStartupOwner");function la(e){let n=e.signal!==null?`signal ${e.signal}`:`code ${e.code??"unknown"}`;return new vn(`Runtime daemon child exited before becoming healthy (${n}).`,"child_exit")}o(la,"runtimeDaemonExitedEarly");function Mc(e){let n=process.versions.electron===void 0?"":" Packaged Electron auto-start requires the RunAsNode fuse to remain enabled.";return new vn(`Timed out waiting for runtime daemon profile "${e.profile}" to become ready.${n}`,"timeout")}o(Mc,"runtimeDaemonStartupTimeout");async function Oc(e){let n=Fc();jc(n);let t=[...n!==void 0?$c(process.execArgv,n.endsWith(".ts")):[],...n!==void 0?[n]:[],"daemon","serve","--profile",e.profile,"--home",e.homeDir,"--config-home",e.configHome];e.defaultProvider!==void 0&&t.push("--provider",e.defaultProvider),e.defaultModel!==void 0&&t.push("--model",e.defaultModel),e.sessionsDir!==void 0&&t.push("--sessions-dir",e.sessionsDir),e.permissionTimeoutMs!==void 0&&t.push("--permission-timeout-ms",String(e.permissionTimeoutMs));let r=Dn({args:t,env:Nc({homeDir:e.homeDir,configHome:e.configHome,parentEnv:process.env}),isElectron:process.versions.electron!==void 0}),i=Pc(process.execPath,r.args,{detached:!0,stdio:"ignore",windowsHide:!0,env:r.env}),a=new Promise(u=>{i.once("exit",(l,m)=>u({code:l,signal:m}))});return await new Promise((u,l)=>{i.once("spawn",u),i.once("error",l)}),_c(i,a)}o(Oc,"spawnRuntimeDaemonServeProcess");function _c(e,n){return{pid:e.pid,exit:n,unref(){e.unref()},async terminate(){if(!(e.exitCode!==null||e.signalCode!==null)&&(await ro(e),!await Lc(n,1e3)))throw new Error(`Runtime daemon child ${e.pid??"unknown"} did not exit after termination.`)}}}o(_c,"createRuntimeDaemonStartupProcess");async function Lc(e,n){let t;try{return await Promise.race([e.then(()=>!0),new Promise(r=>{t=setTimeout(()=>r(!1),n)})])}finally{t!==void 0&&clearTimeout(t)}}o(Lc,"didExitWithin");function jc(e){if(e!==void 0&&!Ec(e))throw new Error(`Runtime daemon CLI entry is unavailable at "${e}". Keep the published KodaX dist files external to the embedder bundle.`)}o(jc,"assertRuntimeDaemonCliEntryAvailable");function Nc(e){let n={...e.parentEnv,KODAX_DAEMON_SERVE:"1",KODAX_HOME:e.configHome??Ie.join(e.homeDir,".kodax")};return delete n[Gn],n}o(Nc,"createRuntimeDaemonServeEnvironment");function Fc(){if(process.env.KODAX_BUNDLED==="true")return;let e=Dc(import.meta.url);if(e.endsWith(".ts"))return Ie.resolve(Ie.dirname(e),"..","kodax_cli.ts");let n=Ie.dirname(e),t=Ie.basename(n)==="chunks"?Ie.dirname(n):n;return Ie.join(t,"kodax_cli.js")}o(Fc,"resolveDaemonCliEntry");function $c(e,n){let t=[];for(let r=0;r<e.length;r+=1){let i=e[r]??"",a=i.toLowerCase();if(a==="--require"||a==="-r"){let u=e[r+1];u!==void 0&&(ia(u)&&t.push(i,u),r+=1)}else if(a.startsWith("--require=")){let u=i.slice(10);ia(u)&&t.push(i)}else(a.startsWith("--max-old-space-size")||a==="--enable-source-maps")&&t.push(i)}return n&&t.push("--import","tsx"),t}o($c,"daemonServeExecArgv");function ia(e){return Ie.resolve(e)===Ie.resolve("scripts","production-env.cjs")}o(ia,"isKodaXProductionEnvPreload");function sa(e){return new Promise(n=>setTimeout(n,e))}o(sa,"delay");async function Cr(e,n){if(!n)return e;if(n.aborted)throw aa();let t;try{return await Promise.race([e,new Promise((r,i)=>{t=o(()=>i(aa()),"cancel"),n.addEventListener("abort",t,{once:!0})})])}finally{t&&n.removeEventListener("abort",t)}}o(Cr,"raceRuntimeDaemonStartupStep");function aa(){return new vn("Runtime daemon startup cancelled.","cancelled")}o(aa,"runtimeDaemonStartupCancelled");import{Worker as qc}from"node:worker_threads";import{existsSync as Hc}from"node:fs";import{basename as Kc,dirname as Mr,join as ca}from"node:path";import{fileURLToPath as ma,pathToFileURL as pa}from"node:url";function fa(e,n={}){let t=Xc(),r=new qc(t,{workerData:e,execArgv:t.href.endsWith(".ts")?["--import","tsx"]:[],...n.resourceLimits!==void 0?{resourceLimits:n.resourceLimits}:{}}),i=new Map,a=new Set,u=0,l=!1,m=o(d=>{for(let R of i.values())R.reject(d);i.clear()},"rejectPending"),g=o(d=>{l||(l=!0,m(d),a.clear())},"markClosed");return r.on("message",d=>{if(_n(d)){for(let f of a)f(d);return}if(!dn(d)&&!un(d)||!d.id)return;let R=i.get(d.id);if(!R)return;if(i.delete(d.id),dn(d)){R.resolve(d.result);return}let c=new Error(d.error.message);c.code=d.error.code,d.error.data!==void 0&&(c.data=d.error.data),R.reject(c)}),r.on("error",d=>g(d)),r.on("exit",d=>g(new Error(`Runtime Worker exited with code ${d}.`))),{transport:{request(d,R,c){if(l)return Promise.reject(new Error("Runtime Worker transport is closed."));let f=`worker_${++u}`;return new Promise((w,k)=>{i.set(f,{resolve:w,reject:k});try{r.postMessage(rt(f,d,R,c))}catch(I){i.delete(f),k(I instanceof Error?I:new Error(String(I)))}})},subscribe(d){return l?{close(){}}:(a.add(d),{close:o(()=>a.delete(d),"close")})},async close(){l||(g(new Error("Runtime Worker transport closed.")),await r.terminate())}},threadId:r.threadId,async terminate(){l||g(new Error("Runtime Worker terminated.")),await r.terminate()}}}o(fa,"createRuntimeWorkerTransport");function Xc(){if(import.meta.url.endsWith(".ts")){let t=new URL("../../dist/runtime-worker.js",import.meta.url);return Hc(ma(t))?t:new URL("./entry.ts",import.meta.url)}if(process.env.KODAX_BUNDLED==="true")return pa(ca(Mr(process.execPath),"runtime-worker.js"));let e=Mr(ma(import.meta.url)),n=Kc(e)==="chunks"?Mr(e):e;return pa(ca(n,"runtime-worker.js"))}o(Xc,"resolveRuntimeWorkerUrl");var Ce=class extends Error{constructor(t,r,i){super(t,i);this.preflight=r;this.name="RuntimeDaemonCapabilityUpgradeError"}preflight;static{o(this,"RuntimeDaemonCapabilityUpgradeError")}code="daemon_capability_upgrade_required";capability="runtimeAutoModeGuardrail";recoverable=!0;restartRequired=!0};function Kr(e){let n=N.resolve(e??qa.homedir());return{homeDir:n,configHome:e===void 0?N.resolve(Kt):N.join(n,".kodax")}}o(Kr,"resolveRuntimeDaemonClientLocation");function bn(e,n="default"){let t=Kr(e);return{...t,paths:cn(t.configHome,n)}}o(bn,"resolveRuntimeDaemonClientPaths");function bR(e={}){let{paths:n}=bn(e.homeDir,e.profile),t=`inline_${Pe().replace(/-/g,"")}`,r=Ki(n,{runtimeId:t,pid:process.pid,createdAt:new Date().toISOString(),kind:"inline"},e.enableRollback===!0),i=!1;return{profile:n.profile,ownerId:t,ownerPolicy:we(n),close(){i||(i=!0,mt(r))}}}o(bR,"acquireKodaXInlineOwner");function PR(e={}){return we(bn(e.homeDir,e.profile).paths)}o(PR,"getKodaXRuntimeOwnerPolicy");function ER(e={}){let{paths:n}=bn(e.homeDir,e.profile),t=Y(n.lockFile);return{profile:n.profile,policy:we(n),ownerStatus:t!==void 0?"owned":L.existsSync(n.lockFile)?"unreadable":"unowned",owner:t??null}}o(ER,"getKodaXRuntimeOwnerState");function DR(e={}){return ut(bn(e.homeDir,e.profile).paths)}o(DR,"enableKodaXDaemonOwner");function xR(e){let{paths:n}=bn(e.homeDir,e.profile);if(Y(n.lockFile)!==void 0)throw new Error("Cannot change Runtime owner mode while an owner lock exists.");return qi(n,e.mode,e.expectedRevision)}o(xR,"setKodaXRuntimeOwnerMode");var Bc=["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"],Uc=new Set(["code","cli","repl","acp","a2a","sdk","ide","space-desktop"]),Pt=class extends Error{constructor(t){super(`Runtime continuation target is already terminal: ${t}`);this.afterRunId=t;this.name="RuntimeContinuationStaleError"}afterRunId;static{o(this,"RuntimeContinuationStaleError")}},ga=5*6e4,Et=1e4,Dt=1e3,Ra=256*1024*1024,Wc=64*1024,Jc=10,Ha=16*1024*1024,zc=Ha/2,Vc=128*1024,Gc=8,ya=1024,Qc=new Set(["assistant.delta","thinking.delta","tool.progress","run.progress"]),Ka=new Set(["tool_call","tool_describe"]),Yc=new Set(["image","file","video"]);function Zc(e,n){let t=N.relative(eo(),e);return N.isAbsolute(t)||t.startsWith("..")?e:N.join(n,t)}o(Zc,"rebaseAgentConfigPath");async function em(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'.");if(e.externalAgents!==void 0)return nm(e);let D=e.autoStartDaemon??(e.daemonTransport===void 0&&e.daemonEndpoint===void 0);return Xa({profile:e.profile,transport:e.daemonTransport,endpoint:e.daemonEndpoint,autoStart:D,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:D?{...e.requirements,runtimeAutoModeGuardrail:1}: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 tm(e);let n={hardDispose:!1,externalAgents:e.externalAgents!==void 0,afterTurnInput:{version:1},learningCenter:{version:1},actorControlPlane:{version:1,methodNamespace:"agents"},runtimeAutoModeGuardrail:{version:1,owner:"session-runtime"},...e.externalAgents!==void 0?{externalAgentAdmin:{version:1}}:{}};Xr(n,e.requirements);let t={runtimeId:e.daemonHostRuntimeId??`rt_${Pe().replace(/-/g,"").slice(0,12)}`,mode:"embedded",profile:e.profile??"default",startedAt:new Date().toISOString(),version:"0.7.72",isolation:"inline"},r=Am(e),i=No(r?{sessionsDir:r}:void 0),a=Vm(t.profile,i,e.sharedDaemonHost===!0),u=op(e);Qa(u);let l=Tm(e),m=e.externalAgents?await lo({factories:e.externalAgents.factories,policy:e.externalAgents.policy,credentialBroker:e.externalAgents.credentialBroker,artifactPolicy:e.externalAgents.artifactPolicy,store:Ko(N.join(l.runtimeDir,"agents"))}):void 0,g=bm(l),s=dm(l,g),d=Hm(g,e.permissionTimeoutMs??ga,l),R=Fm(g,e.permissionTimeoutMs??ga),c=gm(),f=cm(),w=wm(i,m,e.externalAgents?.defaultContext),k=new Map,I=new Map,C=[...Pp(l.loadRunStatuses())].sort(Ur);for(let D of C){let x=D.sessionOrder??(I.get(D.sessionId)??0)+1;I.set(D.sessionId,Math.max(I.get(D.sessionId)??0,x));let $=jm({...D,acceptedAt:D.acceptedAt??D.startedAt,sessionOrder:x},g,l);k.set($.runId,Lm($))}let A=!1,h=o(()=>{if(A)throw new Error("KodaX runtime is closed")},"ensureOpen"),v=lm({bus:g,defaultModel:e.defaultModel,defaultProvider:e.defaultProvider,ensureOpen:h,isClosed:o(()=>A,"isClosed"),artifacts:c,permissions:d,userInputs:R,enableSharedInteractions:e.sharedDaemonHost===!0,persistence:l,runs:k,sessionManager:i,sessionAdmission:a,agentPlane:m,defaultAgentContext:e.externalAgents?.defaultContext,actorRegistry:w,settingsOwner:s}),p=um(t,i,g,l,h,D=>[...k.values()].some(x=>x.sessionId===D&&en(x.phase)),s,D=>v.list({sessionId:D}),D=>d.service.listPending({sessionId:D}),D=>v.releaseSession(D),a),P=e.homeDir?N.join(N.resolve(e.homeDir),".kodax"):Kt,E=N.join(e.homeDir?N.resolve(e.homeDir):qa.homedir(),"kodax_a2a_server_workspace",encodeURIComponent(t.profile)),O=di({configHome:P,managedWorkspaceRoot:E,defaultProvider:e.defaultProvider,defaultModel:e.defaultModel,runs:v,sessions:p,createSkillScriptRunner:o(D=>wi({...D,snapshotRoot:N.join(E,"bindings")}),"createSkillScriptRunner")}),F=Si({rootDir:N.join(P,"learned"),defaultClientIdentity:e.clientInfo?.instanceId??`inline_${t.runtimeId}`,proposalStores:[Zc(so(process.cwd()),P)]});return{identity:t,capabilities:n,sessions:p,runs:v,events:g.service,permissions:d.service,userInputs:R.service,credentials:Wp(),hostTools:Jp(),operations:{async get(){throw new Error("Embedded Runtime does not persist daemon operation receipts.")}},workflows:f,learning:F,config:mm(h,u),catalog:pm(h,u),mcp:fm(h,u),artifacts:c.service,status:Sm({identity:t,permissions:d,userInputs:R,runs:k,sessionManager:i,sessionAdmission:a,workflows:f,actors:w}),diagnostics:km(g.service),admin:vm(m),agents:hm(m,O,w,a),async close(){A||(A=!0,v.closeAll("runtime closed"),d.rejectAll("runtime closed"),R.rejectAll("runtime closed"),await w.close("runtime closed"),await m?.close(),g.close())}}}o(em,"createKodaXRuntime");async function nm(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?Wa(e.daemonEndpoint):void 0,r=Kr(e.homeDir),i=await na({homeDir:r.homeDir,configHome:r.configHome,profile:e.profile,endpoint:t,connectTimeoutMs:e.daemonConnectTimeoutMs,startupTimeoutMs:e.daemonStartupTimeoutMs,createRuntime:o(a=>em({mode:"embedded",homeDir:e.homeDir,profile:e.profile,sessionsDir:e.sessionsDir,defaultProvider:e.defaultProvider,defaultModel:e.defaultModel,permissionTimeoutMs:e.permissionTimeoutMs,sharedDaemonHost:!0,daemonHostRuntimeId:a,clientInfo:e.clientInfo,capabilities:e.capabilities,requirements:e.requirements,externalAgents:n}),"createRuntime")});if(!i.ownsHost)throw await i.close(),new Error("External agent factories cannot be installed into an already-running daemon profile; configure its owner or use a unique profile.");try{let a=await Xa({profile:e.profile,transport:i.transport,daemonToken:e.daemonToken??Ln(i.paths),clientInfo:e.clientInfo,capabilities:e.capabilities,requirements:{...e.requirements,externalAgents:!0,externalAgentAdmin:1}}),u=!1;return{...a,identity:{...a.identity,isolation:"inline"},async close(){u||(u=!0,await a.close(),i.ownsHost?await i.shutdown():await i.close())}}}catch(a){throw await i.close(),i.ownsHost&&await i.shutdown(),a}}o(nm,"createInProcessExternalAgentDaemon");async function tm(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=fa({homeDir:e.homeDir,profile:e.profile,sessionsDir:e.sessionsDir,defaultProvider:e.defaultProvider,defaultModel:e.defaultModel,permissionTimeoutMs:e.permissionTimeoutMs},e.worker);try{let r=In(await t.transport.request("initialize",{profile:e.profile??"default",...e.clientInfo!==void 0?{clientInfo:e.clientInfo}:{},...e.capabilities!==void 0?{capabilities:e.capabilities}:{}})),i=Ya(r.identity);Xr(r.capabilities,{...e.requirements,hardDispose:!0});let a=st({identity:{...i,mode:"embedded",isolation:"worker",workerThreadId:t.threadId},transport:t.transport,capabilities:In(r.capabilities)}),u=!1;return{...a,async close(){if(!u){u=!0;try{await rm(t.transport.request("runtime.shutdown"),n)}finally{await t.terminate()}}}}}catch(r){throw await t.terminate(),r}}o(tm,"createWorkerHostedKodaXRuntime");function Xr(e,n){if(!n?.hardDispose&&!n?.externalAgents&&n?.externalAgentAdmin===void 0&&n?.a2aConfigReconciler===void 0&&n?.operationDeduplication===void 0&&n?.sessionObservation===void 0&&n?.afterTurnInput===void 0&&n?.learningCenter===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&&n?.actorControlPlane===void 0&&n?.runtimeAutoModeGuardrail===void 0)return;let t=In(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&&wa(t,"operationDeduplication",n.operationDeduplication);let r=[["externalAgentAdmin",n.externalAgentAdmin],["a2aConfigReconciler",n.a2aConfigReconciler],["sessionObservation",n.sessionObservation],["afterTurnInput",n.afterTurnInput],["learningCenter",n.learningCenter],["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],["actorControlPlane",n.actorControlPlane],["runtimeAutoModeGuardrail",n.runtimeAutoModeGuardrail]];for(let[i,a]of r)a!==void 0&&wa(t,i,a)}o(Xr,"assertRuntimeCapabilities");function wa(e,n,t){let r=e[n];if(!W(r)||r.version!==t)throw new Error(`Runtime does not support the required ${n} capability.`)}o(wa,"assertVersionedRuntimeCapability");async function rm(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(rm,"settleWithin");async function Xa(e={}){return Ua(e,!0)}o(Xa,"connectKodaXRuntime");function Ba(e,n,t){let r=e[n];return W(r)&&r.version===t}o(Ba,"hasVersionedRuntimeCapability");async function om(e){if(!Ba(e.capabilities,"daemonManagement",1))throw new Ce("The running daemon is too old to perform a fenced in-place upgrade. Stop it manually after all runs and pending interactions finish, then retry.");let n=st({identity:{...e.identity,mode:"daemon",isolation:"process"},transport:e.transport,capabilities:e.capabilities,...e.journalEpoch!==void 0?{journalEpoch:e.journalEpoch}:{},...e.grantedScopes!==void 0?{grantedScopes:e.grantedScopes}:{}}),t;try{if(t=await n.daemon.inspect(),!t.preflight.canStop)throw new Ce(`The running daemon needs runtimeAutoModeGuardrail v1 but cannot be replaced safely yet: ${t.preflight.blockers.join(", ")}. Finish or cancel that work and retry.`,t.preflight);await n.daemon.stopForInline({expectedRuntimeId:t.runtimeId,expectedRevision:t.revision,expectedOwnerPolicyRevision:t.ownerPolicy.revision})}catch(i){throw i instanceof Ce?i:new Ce("The running daemon changed while preparing its safe capability upgrade. Retry after active and queued work has settled.",t?.preflight,{cause:i})}finally{let i=!1;await n.close().then(()=>{i=!0}).catch(a=>{te({source:"runtime.daemon.upgrade",level:"warn",message:"Failed to close the legacy daemon client after upgrade attempt.",detail:se(a)})}),i||await e.lease.close().catch(a=>{te({source:"runtime.daemon.upgrade",level:"warn",message:"Failed to close the legacy daemon process lease after client cleanup failed.",detail:se(a)})})}let r=Date.now()+e.startupTimeoutMs;try{for(;Y(e.lease.paths.lockFile)!==void 0;){if(Date.now()>=r)throw new Ce("The legacy daemon accepted the upgrade stop but did not release its owner fence before timeout. Retry after the daemon exits.");await new Promise(i=>setTimeout(i,50))}}catch(i){try{ut(e.lease.paths)}catch(a){throw new Ce("The legacy daemon upgrade failed and daemon ownership could not be restored automatically. Call `enableKodaXDaemonOwner(...)` from the SDK and retry.",void 0,{cause:new AggregateError([i,a])})}throw i}try{ut(e.lease.paths)}catch(i){throw new Ce("The legacy daemon stopped, but daemon ownership could not be re-enabled automatically. Call `enableKodaXDaemonOwner(...)` from the SDK and retry.",void 0,{cause:i})}}o(om,"replaceLegacyRuntimeDaemonForGuardrailUpgrade");async function Ua(e,n){ha("daemonStartupTimeoutMs",e.daemonStartupTimeoutMs),ha("daemonConnectTimeoutMs",e.daemonConnectTimeoutMs);let t=e.endpoint!==void 0?Wa(e.endpoint):void 0,r=Kr(e.homeDir),i=e.transport===void 0&&e.autoStart===!0?await da({homeDir:r.homeDir,configHome:r.configHome,profile:e.profile,endpoint:t,defaultProvider:e.defaultProvider,defaultModel:e.defaultModel,sessionsDir:e.sessionsDir,permissionTimeoutMs:e.permissionTimeoutMs,startupTimeoutMs:e.daemonStartupTimeoutMs,connectTimeoutMs:e.daemonConnectTimeoutMs}):void 0,a=t??i?.endpoint??(e.transport===void 0?wn(e.profile??"default",mn(r.homeDir,r.configHome)):void 0),u=e.transport??i?.transport??(a!==void 0?await Oe(a,{connectTimeoutMs:e.daemonConnectTimeoutMs}):void 0);if(!u)throw new Error("connectKodaXRuntime requires a daemon transport, endpoint, or autoStart: true.");let l=am(e),m,g={},s,d,R=!1;try{let f={name:e.clientInfo?.name??"kodax-sdk",instanceId:e.clientInfo?.instanceId??`sdk_${Pe().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}:{}},w=In(await u.request("initialize",{profile:e.profile??"default",connectionPurpose:"client",autoStart:e.autoStart===!0,...l!==void 0?{token:l}:{},clientInfo:f,capabilities:{...e.capabilities,operationDeduplication:!0},...a!==void 0?{endpoint:a.path}:{}}));m=Ya(w.identity),g=w.capabilities===void 0?{}:In(w.capabilities),s=typeof w.journalEpoch=="string"?w.journalEpoch:void 0,d=im(w.grantedScopes);let k=e.autoStart===!0?{...e.requirements,runtimeAutoModeGuardrail:1}:e.requirements;if(k?.runtimeAutoModeGuardrail===1&&!Ba(g,"runtimeAutoModeGuardrail",1)){if(!n||e.autoStart!==!0||i===void 0)throw new Ce("Runtime daemon does not support runtimeAutoModeGuardrail v1. Stop all daemon work and restart it with the upgraded KodaX installation.");try{await om({identity:m,capabilities:g,transport:u,lease:i,...s!==void 0?{journalEpoch:s}:{},...d!==void 0?{grantedScopes:d}:{},startupTimeoutMs:e.daemonStartupTimeoutMs??6e4})}finally{R=!0}return Ua(e,!1)}Xr(g,k);let I=e.profile??"default";if(m.profile!==I)throw new Error(`Runtime daemon profile mismatch: expected ${I}, got ${m.profile}`)}catch(f){throw R||(i!==void 0?await i.close():await u.close?.()),f}let c=st({identity:{...m,mode:"daemon",isolation:"process"},transport:u,capabilities:g,...s!==void 0?{journalEpoch:s}:{},...d!==void 0?{grantedScopes:d}:{}});return i?{...c,async close(){await c.close()}}:c}o(Ua,"connectKodaXRuntimeInternal");function ha(e,n){if(!(n===void 0||Number.isFinite(n)&&n>0))throw new Error(`${e} must be a positive finite number.`)}o(ha,"assertPositiveRuntimeTimeout");function im(e){if(!Array.isArray(e))return;let n=e.filter(t=>typeof t=="string"&&sm(t));return n.length===e.length?n:void 0}o(im,"parseRuntimeGrantedScopes");function sm(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==="learning:read"||e==="learning:control"||e==="artifact:write"||e==="agent:control"||e==="credential:register"||e==="host-tool:register"||e==="owner:admin"||e==="daemon:admin"}o(sm,"isRuntimeGrantedScope");function am(e){if(e.daemonToken!==void 0)return e.daemonToken;if(!(e.transport!==void 0&&e.autoStart!==!0))return Ln(bn(e.homeDir,e.profile).paths)}o(am,"resolveConnectDaemonToken");function Wa(e){return typeof e!="string"?e:{kind:process.platform==="win32"||e.startsWith("\\\\.\\pipe\\")?"pipe":"unix",path:e}}o(Wa,"normalizeRuntimeDaemonEndpoint");function dm(e,n){let t=new Map,r=new Map,i=new Set,a=o((l,m)=>{let s=(r.get(l)??Promise.resolve()).then(m),d=s.then(()=>{},()=>{});return r.set(l,d),d.then(()=>{r.get(l)===d&&r.delete(l)}),s},"enqueue"),u=o((l,m,g)=>{t.set(l,m);for(let s of i)s(l,m,g);n.emit("session.settings.updated",{sessionId:l,revision:m.revision,settings:m.value,patch:g},{sessionId:l,runId:l})},"publish");return{async read(l){await(r.get(l)??Promise.resolve());let m=e.loadSessionSettingsVersioned(l);return t.set(l,m),m},peek(l){return t.get(l)},update(l,m,g,s){return a(l,()=>{let d=e.loadSessionSettingsVersioned(l);if(g!==void 0&&d.revision!==g)throw Jr(`Session settings revision ${g} is stale; current revision is ${d.revision}`,d.revision);let R=Zm(d.value,m);s(R);let c={revision:d.revision+1,value:R};return e.saveSessionSettingsVersioned(l,c),u(l,c,m),c})},async persistAutoModeEngine(l,m){let g=t.get(l)??e.loadSessionSettingsVersioned(l);t.set(l,{revision:g.revision,value:{...g.value,autoModeEngine:m}}),await a(l,()=>{let s=e.loadSessionSettingsVersioned(l);if(s.value.autoModeEngine===m){t.set(l,s);return}let d={revision:s.revision+1,value:{...s.value,autoModeEngine:m}};e.saveSessionSettingsVersioned(l,d),u(l,d,{autoModeEngine:m})})},subscribe(l){return i.add(l),{close:o(()=>{i.delete(l)},"close")}},release(l){t.delete(l),r.delete(l)}}}o(dm,"createRuntimeSessionSettingsOwner");function um(e,n,t,r,i,a,u,l,m,g,s){let d=new Set,R=o((f,w,k)=>({id:f,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}:{},...k?{createdAt:k}:{}}),"toRuntimeSession"),c=o(async f=>{for(let w=0;w<Gc;w+=1){let k=t.currentSessionSeq(f),I=await s.loadRequired(f),[C,A,h]=await Promise.all([n.loadFullTranscript(f),l(f),m(f)]),v=await u.read(f),p=t.currentSessionSeq(f);if(k===p)return{runtimeId:e.runtimeId,cursor:p,transcriptRevision:Qm(C),session:R(f,I),transcript:C,settings:v,runs:A,pendingPermissions:h,live:t.projectSession(f)}}throw Bp(`Session ${f} changed continuously while taking a snapshot`)},"captureObservationSnapshot");return{async create(f={}){i(),s.assertCreate(f);let w=f.sessionId??await $t();if(d.has(w))throw Object.assign(new Error(`Session already exists: ${w}`),{code:"conflict"});d.add(w);try{if(await n.loadSession(w)!==null)throw Object.assign(new Error(`Session already exists: ${w}`),{code:"conflict"});let k=f.projectPath?N.resolve(f.projectPath):void 0,I=f.gitRoot?N.resolve(f.gitRoot):k,C=Xm(f,k,I),A={messages:[],title:f.title??"",gitRoot:I??"",...f.tag!==void 0?{tag:f.tag}:{},...C!==void 0?{runtimeInfo:C}:{},scope:"user"};await n.storage.save(w,A);let h=R(w,A,new Date().toISOString());return t.emit("session.created",h,{sessionId:w,runId:w}),h}finally{d.delete(w)}},async load(f){i();let w=await s.loadRequired(f),k=R(f,w);return t.emit("session.loaded",k,{sessionId:f,runId:f}),k},async list(f){return i(),s.assertFilter(f),(await n.listSessions(f)).filter(s.admitsSummary).map(Va)},async transcript(f){return i(),await s.loadRequired(f),n.loadFullTranscript(f)},async observe(f,w){i();let k=[],I,C=!1,A=o(v=>{if(!(C||I!==void 0&&v.seq<=I))try{w(v)}catch(p){te({source:"runtime.sessions.observe",level:"error",message:`Session observation listener failed for ${v.type}`,detail:se(p)})}},"deliver"),h=t.service.subscribe({sessionId:f},v=>{I===void 0?k.push(v):A(v)});try{let v=await c(f);I=v.cursor;for(let p of k.splice(0).sort((P,E)=>P.seq-E.seq))A(p);return{snapshot:v,close(){C||(C=!0,k.length=0,h.close())}}}catch(v){throw C=!0,h.close(),v}},async fork(f){i();let w=await s.loadRequired(f.sessionId),k=await n.forkSession(f.sessionId,{...f.selector!==void 0?{selector:f.selector}:{},...f.newSessionId!==void 0?{sessionId:f.newSessionId}:{},...f.title!==void 0?{title:f.title}:{}});if(!k){let C=f.newSessionId??await $t(),A={...w,title:f.title??w.title,messages:w.messages.map(Vp),actorSnapshot:void 0};await n.storage.save(C,A);let h=R(C,A);return t.emit("session.created",h,{sessionId:C,runId:C}),h}let I=R(k.sessionId,k.data);return t.emit("session.created",I,{sessionId:k.sessionId,runId:k.sessionId}),I},async getSettingsVersioned(f){return i(),await s.loadRequired(f),u.read(f)},async getSettings(f){return(await this.getSettingsVersioned(f)).value},async updateSettings(f,w){i();let k=await s.loadRequired(f);return(await u.update(f,w,void 0,I=>qr(k,I))).value},async updateSettingsVersioned(f,w,k){i();let I=await s.loadRequired(f);return u.update(f,w,k.expectedRevision,C=>qr(I,C))},async appendNotice(f){i(),await s.loadRequired(f.sessionId);let w=await n.appendClientNotice(f.sessionId,{content:f.content,...f.source!==void 0?{source:f.source}:{}});return w&&t.emit("session.notice.appended",{sessionId:f.sessionId,entry:w},{sessionId:f.sessionId,runId:f.sessionId}),w},async rewind(f){i(),await s.loadRequired(f.sessionId),Fr(f.sessionId,a);let w=await n.rewindSession(f.sessionId,{...f.selector!==void 0?{selector:f.selector}:{}});if(!w)return null;let k=R(f.sessionId,w);return t.emit("session.rewound",{sessionId:f.sessionId,selector:f.selector,session:k},{sessionId:f.sessionId,runId:f.sessionId}),k},async setActiveEntry(f){i(),await s.loadRequired(f.sessionId),Fr(f.sessionId,a);let w=await n.setActiveEntry(f.sessionId,f.entryId);if(!w)return null;let k=R(f.sessionId,w);return t.emit("session.active_entry.updated",{sessionId:f.sessionId,entryId:f.entryId,session:k},{sessionId:f.sessionId,runId:f.sessionId}),k},async compact(f){i(),await s.loadRequired(f.sessionId),Fr(f.sessionId,a);let w=await n.compactSession(f.sessionId,{...f.provider!==void 0?{provider:f.provider}:{},...f.model!==void 0?{model:f.model}:{},...f.customInstructions!==void 0?{customInstructions:f.customInstructions}:{},...f.contextWindow!==void 0?{contextWindow:f.contextWindow}:{}}),k=await n.loadSession(f.sessionId),I=k?R(f.sessionId,k):void 0;return t.emit("context.compaction.finished",{sessionId:f.sessionId,compacted:w.compacted,tokensBefore:w.tokensBefore,tokensAfter:w.tokensAfter,...w.reason!==void 0?{reason:w.reason}:{}},{sessionId:f.sessionId,runId:f.sessionId}),w.compacted&&t.emit("session.compacted",{sessionId:f.sessionId,result:{compacted:w.compacted,tokensBefore:w.tokensBefore,tokensAfter:w.tokensAfter},...I!==void 0?{session:I}:{}},{sessionId:f.sessionId,runId:f.sessionId}),{...w,...I!==void 0?{session:I}:{}}},async archive(f){if(i(),await s.loadRequired(f),!await n.archiveSession(f))throw new Error(`Session not found or not archived: ${f}`)},async unarchive(f){if(i(),await s.loadRequired(f),!await n.unarchiveSession(f))throw new Error(`Session not found or not unarchived: ${f}`)},async delete(f){i(),await s.loadRequired(f);let w=await n.deleteSession(f);zp(f,w),u.release(f),g(f)}}}o(um,"createRuntimeSessionService");function lm(e){let n=new Map,t=new Map,r=new Map,i=new Map,a=new Map,u=new Map,l=new Map;for(let p of e.runs.values())u.set(p.sessionId,Math.max(u.get(p.sessionId)??0,p.sessionOrder));let m=o(p=>{let P=e.runs.get(p);if(!P)throw new Error(`Runtime run not found: ${p}`);return P},"getRecord"),g=o(p=>{n.get(p.sessionId)===p.runId&&n.delete(p.sessionId)},"releaseActiveRun"),s=o(p=>{t.get(p.runId)?.(),t.delete(p.runId)},"releaseActiveQueueRoute"),d=o(p=>{p.actorSession===void 0||t.has(p.runId)||t.set(p.runId,Yr(Qr(p.sessionId,"/root")))},"registerActiveQueueRoute"),R=o((p,P)=>{p.start?.resolve(P),p.start=void 0,delete p.providerCredential},"resolveRunStart"),c=o((p,P)=>(e.permissions.rejectForRun(p.runId,"runtime run ended"),e.userInputs.rejectForRun(p.runId,"runtime run ended"),p.start?.options.guardrails?.find(Hr)?.clearAllowedCalls(),R(p,P),s(p),g(p),Ep(e.runs),k(p.sessionId),P),"finishRun"),f=o((p,P,E)=>{let O=p.phase==="queued";p.phase==="queued"&&Im(a,p),p.running?.abort(new Error(P)),p.abortController?.abort(new Error(P)),e.permissions.rejectForRun(p.runId,P),e.userInputs.rejectForRun(p.runId,P),p.start?.options.guardrails?.find(Hr)?.clearAllowedCalls(),Bn(e.bus,e.persistence,p,"cancelled",{code:"cancelled",effectOutcome:O?"none":"unknown",message:P});let F={runId:p.runId,sessionId:p.sessionId,phase:p.phase};return R(p,F),s(p),g(p),E&&!e.isClosed()&&k(p.sessionId),F},"cancelRun"),w=o(p=>{if(!p.start||e.isClosed()){f(p,"runtime closed",!1);return}p.phase="running",p.queuedAt=void 0,p.runningAt=new Date().toISOString(),n.set(p.sessionId,p.runId),kn(e.bus,e.persistence,p,ge(p)),e.bus.emit("run.started",ge(p),{sessionId:p.sessionId,runId:p.runId});let P=Km({bus:e.bus,original:p.start.options.events,permissions:e.permissions,userInputs:e.userInputs,enableSharedInteractions:e.enableSharedInteractions,record:p}),E=Rm({agentPlane:e.agentPlane,events:P,model:p.model,options:p.start.options,provider:p.provider,record:p,sessionManager:e.sessionManager});if(e.bus.emit("config.effective",{sessionId:p.sessionId,runId:p.runId,provider:p.provider,...p.model!==void 0?{model:p.model}:{},...E.effort!==void 0?{effort:E.effort}:{},...E.thinking!==void 0?{thinking:E.thinking}:{},...E.reasoningMode!==void 0?{reasoningMode:E.reasoningMode}:{},...E.agentMode!==void 0?{agentMode:E.agentMode}:{},...p.permissionMode!==void 0?{permissionMode:p.permissionMode}:{},...p.autoModeEngine!==void 0?{autoModeEngine:p.autoModeEngine}:{},...p.autoModeClassifierModel!==void 0?{autoModeClassifierModel:p.autoModeClassifierModel}:{},...p.autoModeTimeoutMs!==void 0?{autoModeTimeoutMs:p.autoModeTimeoutMs}:{},...E.context?.executionCwd!==void 0?{executionCwd:E.context.executionCwd}:{}},{sessionId:p.sessionId,runId:p.runId,...p.turnId!==void 0?{turnId:p.turnId}:{}}),p.mode==="managed_task"){let b=new AbortController;p.abortController=b;let D=E.abortSignal;D?.aborted?b.abort(D.reason):D?.addEventListener("abort",()=>{b.abort(D.reason)},{once:!0});let x=o(()=>go({...E,abortSignal:b.signal},p.start.prompt),"managedOperation"),$=p.providerCredential!==void 0?Lt(p.provider,p.providerCredential,x):x();d(p),$.then(H=>{let G=p.terminalEmitted?p.phase:H.interrupted?"interrupted":H.success?"completed":"failed";return Bn(e.bus,e.persistence,p,G),{runId:p.runId,sessionId:p.sessionId,phase:p.phase,result:H}}).catch(H=>{let G=Ma(H,p),le=Ca(H),Ee=p.terminalEmitted?p.phase:le.phase;return p.terminalEmitted||(p.error=G.message),Bn(e.bus,e.persistence,p,Ee,le.terminal),{runId:p.runId,sessionId:p.sessionId,phase:p.phase,error:G}}).then(H=>c(p,H));return}let O=o(()=>fo(E,p.start.prompt),"codingOperation"),F=p.providerCredential!==void 0?Lt(p.provider,p.providerCredential,O):O();p.running=F,d(p),F.result.then(b=>{let D=p.terminalEmitted?p.phase:b.interrupted?"interrupted":b.success?"completed":"failed";return Bn(e.bus,e.persistence,p,D),{runId:p.runId,sessionId:p.sessionId,phase:p.phase,result:b}}).catch(b=>{let D=Ma(b,p),x=Ca(b),$=p.terminalEmitted?p.phase:x.phase;return p.terminalEmitted||(p.error=D.message),Bn(e.bus,e.persistence,p,$,x.terminal),{runId:p.runId,sessionId:p.sessionId,phase:p.phase,error:D}}).then(b=>c(p,b))},"startRecord"),k=o(p=>{let P=a.get(p);if(!P||P.length===0||n.has(p))return;let E=P.shift();if(P.length===0&&a.delete(p),!E)return;let O=e.runs.get(E);if(!O||O.phase!=="queued"){k(p);return}w(O)},"drainNext"),I=o(p=>{let P=a.get(p.sessionId)??[];P.push(p.runId),a.set(p.sessionId,P),kn(e.bus,e.persistence,p,ge(p)),e.bus.emit("run.queued",ge(p),{sessionId:p.sessionId,runId:p.runId})},"enqueue"),C=o(p=>{let P=ge(p);kn(e.bus,e.persistence,p,P),e.bus.emit("run.updated",P,{sessionId:p.sessionId,runId:p.runId,...p.turnId!==void 0?{turnId:p.turnId}:{}})},"publishRunUpdate"),A=e.settingsOwner.subscribe((p,P)=>{for(let E of e.runs.values())E.sessionId!==p||E.phase!=="queued"&&!en(E.phase)||(E.permissionMode=P.value.permissionMode,E.autoModeEngine=P.value.autoModeEngine,E.autoModeClassifierModel=P.value.autoModeClassifierModel,E.autoModeTimeoutMs=P.value.autoModeTimeoutMs,C(E))}),h=o(async p=>{e.ensureOpen();let P=Bm(p,e.artifacts),E=await e.sessionAdmission.loadRequired(p.sessionId),O=(await e.settingsOwner.read(p.sessionId)).value;qr(E,O);let F=zm(p.options??{},O,P.inputArtifacts,E),b=F.agentMode==="sa"?void 0:await e.actorRegistry.forSession(p.sessionId,F.maxConcurrentThreadsPerSession),D=F.provider??e.defaultProvider;if(!D)throw new Error("runtime.runs.start requires input.options.provider or runtime defaultProvider");let x=p;if(x.providerCredential!==void 0&&x.providerCredentialProvider!==void 0&&x.providerCredentialProvider!==D)throw Up(`Credential lease is bound to ${x.providerCredentialProvider}, not ${D}.`);let $=F.modelOverride??F.model??e.defaultModel,H=p.trustedRunId??Ip();if(e.runs.has(H))throw Jr(`Runtime run already exists: ${H}`,0);let G=e.enableSharedInteractions||Ke(O.permissionMode)==="auto"&&O.autoModeEngine!==void 0;if(G&&F.guardrails?.some(De=>De.kind==="tool"&&De.name==="auto-mode"))throw new Error("Runtime owns the auto-mode guardrail for shared Session permission state.");let le=G?Fp({sessionId:p.sessionId,provider:D,model:$,options:F,permissions:e.permissions,cache:r,states:i,settingsOwner:e.settingsOwner,getRecord:o(()=>{let De=n.get(p.sessionId);return De===void 0?void 0:e.runs.get(De)},"getRecord"),onEngineChange:o(De=>{for(let _e of e.runs.values())_e.sessionId===p.sessionId&&(_e.phase==="queued"||en(_e.phase))&&_e.autoModeEngine!==De&&(_e.autoModeEngine=De,C(_e));e.settingsOwner.persistAutoModeEngine(p.sessionId,De).catch(_e=>{e.bus.emit("runtime.warning",{source:"runtime.auto-mode",severity:"error",message:`Failed to persist Session auto-mode engine: ${se(_e).message}`},{sessionId:p.sessionId,runId:p.sessionId})})},"onEngineChange")}):void 0;await le?.prepare?.();let Ee=le===void 0?F:{...F,guardrails:[...F.guardrails??[],le]},Pn=new Date().toISOString(),nn=o(()=>{},"resolveResult"),zr=new Promise(De=>{nn=De}),En=p.requiredAfterRunId,tn=En===void 0?void 0:m(En);if(tn!==void 0){if(tn.sessionId!==p.sessionId)throw new Error(`Runtime continuation target ${En} does not belong to session ${p.sessionId}`);if(!en(tn.phase)&&tn.phase!=="queued")throw new Pt(tn.runId)}let Vr=(u.get(p.sessionId)??0)+1;u.set(p.sessionId,Vr);let _t=tn!==void 0||n.has(p.sessionId),Jn={runId:H,sessionId:p.sessionId,phase:_t?"queued":"running",startedAt:Pn,sessionOrder:Vr,..._t?{queuedAt:Pn}:{},provider:D,...$!==void 0?{model:$}:{},...p.permissionBroker!==void 0?{permissionBroker:p.permissionBroker}:{},...O.permissionMode!==void 0?{permissionMode:O.permissionMode}:{},...O.autoModeClassifierModel!==void 0?{autoModeClassifierModel:O.autoModeClassifierModel}:{},...O.autoModeTimeoutMs!==void 0?{autoModeTimeoutMs:O.autoModeTimeoutMs}:{},...O.autoModeEngine!==void 0?{autoModeEngine:O.autoModeEngine}:{},...F.reasoningMode!==void 0?{reasoning:F.reasoningMode}:{},mode:p.mode??"coding",...p.providerCredential!==void 0?{providerCredential:p.providerCredential}:{},hadProviderCredential:p.providerCredential!==void 0,...p.origin!==void 0?{origin:p.origin}:{},...En!==void 0?{continuation:{inputId:H,afterRunId:En,delivery:"after_turn",contentPreview:Ym(P.prompt)}}:{},...p.agentContext??e.defaultAgentContext?{agentContext:p.agentContext??e.defaultAgentContext}:{},...b?{actorSession:b}:{},result:zr,start:{prompt:P.prompt,inputArtifacts:P.inputArtifacts,options:Ee,resolve:nn},terminalEmitted:!1};return e.runs.set(H,Jn),_t?I(Jn):w(Jn),{runId:H,sessionId:p.sessionId,get turnId(){return Jn.turnId},result:zr}},"startRun"),v=o(p=>{let E=(l.get(p.sessionId)??Promise.resolve()).then(()=>h(p)),O=E.then(()=>{},()=>{});return l.set(p.sessionId,O),O.then(()=>{l.get(p.sessionId)===O&&l.delete(p.sessionId)}),E},"start");return{start:v,async submitInput(p){e.ensureOpen(),await e.sessionAdmission.loadRequired(p.sessionId);let P=m(p.afterRunId);if(P.sessionId!==p.sessionId)throw new Error(`Runtime continuation target ${p.afterRunId} does not belong to session ${p.sessionId}`);if(!en(P.phase)&&P.phase!=="queued")return{accepted:!1,delivery:p.delivery,sessionId:p.sessionId,afterRunId:p.afterRunId,reason:"stale_run"};if(p.delivery==="interrupt")return{accepted:!1,delivery:p.delivery,sessionId:p.sessionId,afterRunId:p.afterRunId,reason:"unsupported_capability"};let E=p,O;try{O=await v({sessionId:p.sessionId,input:p.input,...E.options!==void 0?{options:E.options}:{},...E.providerCredential!==void 0?{providerCredential:E.providerCredential}:{},...E.providerCredentialProvider!==void 0?{providerCredentialProvider:E.providerCredentialProvider}:{},...E.origin!==void 0?{origin:E.origin}:{},...E.trustedRunId!==void 0?{trustedRunId:E.trustedRunId}:{},requiredAfterRunId:p.afterRunId})}catch(b){if(!(b instanceof Pt))throw b;return{accepted:!1,delivery:p.delivery,sessionId:p.sessionId,afterRunId:p.afterRunId,reason:"stale_run"}}let F=m(O.runId).sessionOrder;return{accepted:!0,delivery:p.delivery,runId:O.runId,sessionId:p.sessionId,afterRunId:p.afterRunId,sessionOrder:F}},async await(p){e.ensureOpen();let P=e.runs.get(p);if(P)return await e.sessionAdmission.assertRunAccess(P.sessionId),P.result;let E=e.persistence.loadRunStatus(p);if(E)return await e.sessionAdmission.assertRunAccess(E.sessionId),Za(E);throw new Error(`Runtime run not found: ${p}`)},async get(p){e.ensureOpen();let P=e.runs.get(p);if(P)return await e.sessionAdmission.assertRunAccess(P.sessionId),ge(P);let E=e.persistence.loadRunStatus(p);if(E)return await e.sessionAdmission.assertRunAccess(E.sessionId),E;throw new Error(`Runtime run not found: ${p}`)},async list(p){e.ensureOpen(),p?.sessionId!==void 0&&await e.sessionAdmission.assertRunAccess(p.sessionId);let P=[...e.runs.values()].filter(E=>Dp(E,p)).map(ge);return $r(P,e.sessionAdmission)},async abort(p){e.ensureOpen();let P=m(p);await e.sessionAdmission.assertRunAccess(P.sessionId),(P.phase==="queued"||en(P.phase))&&f(P,"runtime run aborted",!0)},async setModel(p,P){e.ensureOpen();let E=m(p);await e.sessionAdmission.assertRunAccess(E.sessionId),E.model=P,E.running?.setModel(P),C(E)},async setProvider(p,P){e.ensureOpen();let E=m(p);await e.sessionAdmission.assertRunAccess(E.sessionId),E.provider=P,E.running?.setProvider(P),C(E)},async setReasoning(p,P){e.ensureOpen();let E=m(p);await e.sessionAdmission.assertRunAccess(E.sessionId),E.reasoning=P,E.running?.setReasoning(P),C(E)},closeAll(p){A.close();for(let P of e.runs.values())(P.phase==="queued"||en(P.phase))&&f(P,p,!1);n.clear(),r.clear(),i.clear(),a.clear()},releaseSession(p){for(let P of r.get(p)?.values()??[])P.guardrail.clearAllowedCalls();r.delete(p),i.delete(p)}}}o(lm,"createRuntimeRunService");function cm(){let e=ao();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&&Tp(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(cm,"createRuntimeWorkflowService");function mm(e,n){return{async read(){return e(),Sn(be(n))},async patch(t){return e(),tp(t,"runtime.config.patch"),ip(n,rp(t)),Sn(be(n))},async reload(){return e(),n!==void 0?(Qa(n),{ok:!0,config:Sn(be(n))}):{ok:!0,config:Sn(So())}}}}o(mm,"createRuntimeConfigService");function pm(e,n){return{async providers(){return e(),Xt()},async models(t){return e(),gp(Xt(),t)},async commands(t){return e(),Aa(t)},async resolveCommand(t){e();let r=t.name.trim().toLowerCase();return Aa(t.projectRoot).find(i=>i.name.trim().toLowerCase()===r||(i.aliases??[]).some(a=>a.trim().toLowerCase()===r))??null},async skills(t){e();let r=await jt(t?.projectRoot);return(t?.userInvocableOnly===!0?r.listUserInvocable():r.list()).map(vp)},async describeSkill(t){e();let r=await jt(t.projectRoot);return r.has(t.name)?Sp(await r.loadFull(t.name)):null},async customProviders(){return e(),sp(n)},async upsertCustomProvider(t){return e(),ap(n,t)},async deleteCustomProvider(t){return e(),dp(n,t)},async extensions(){e();let t=rn();if(!t)return{active:!1,extensions:[]};let r=t.getDiagnostics();return{active:!0,extensions:r.loadedExtensions,diagnostics:r}},async reloadExtensions(){e();let t=rn();return t?(await t.reloadExtensions({continueOnError:!0}),{ok:!0,active:!0,diagnostics:t.getDiagnostics()}):{ok:!0,active:!1}}}}o(pm,"createRuntimeCatalogService");function fm(e,n){return{async listServers(){return e(),Nr(n)},async getServer(t){return e(),lp(n,t)},async validateServer(t,r){e();try{return Bt(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(),cp(n,t,r)},async deleteServer(t){return e(),mp(n,t)},async reloadServers(){e();let t=Ft(Nr(n));try{return{ok:!0,servers:t.listServers()}}finally{await t.dispose()}},async listTools(t){e();let r=Nr(n),i=t?.server!==void 0?[t.server]:Object.keys(r),a=Ft(r);try{let u=[];for(let l of i)u.push(await a.listTools(l,{forceRefresh:t?.forceRefresh===!0}));return u}finally{await a.dispose()}}}}o(fm,"createRuntimeMcpService");function gm(){let e=new Map;return{service:{async create(r){if(!Jm(r.kind))throw new Error(`Unsupported runtime artifact kind: ${String(r.kind)}`);let i=N.resolve(r.path),a;try{a=await L.promises.stat(i)}catch(m){throw new Error(`Runtime artifact path is not readable: ${i}`,{cause:m})}if(!a.isFile())throw new Error(`Runtime artifact path must be a regular file: ${i}`);if(a.size>Ra)throw new Error(`Runtime artifact exceeds the ${Ra}-byte limit: ${i}`);let u=`art_${Pe().replace(/-/g,"").slice(0,12)}`,l={id:u,kind:r.kind,path:i,sizeBytes:a.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(u,l),l},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(gm,"createRuntimeArtifactStore");function Rm(e){let{agentPlane:n,events:t,model:r,options:i,provider:a,record:u,sessionManager:l}=e,m=i.events?.exitPlanMode===void 0,g=m||u.actorSession!==void 0||!!(n&&u.agentContext);return{...i,provider:a,...r!==void 0?{modelOverride:r}:{},session:{...i.session??{},id:u.sessionId,storage:l.storage},events:t,...g?{context:{...i.context??{},...m?{excludeTools:[...new Set([...i.context?.excludeTools??[],"exit_plan_mode"])]}:{},...u.actorSession?{actorSession:u.actorSession}:{},...n&&u.agentContext?{agentExecutorPlane:{plane:n,context:u.agentContext}}:{}}}:{}}}o(Rm,"buildRunOptions");function bt(e){if(e.actorId.trim().length===0)throw new Error("Runtime agent context actorId must not be empty.")}o(bt,"assertRuntimeAgentContext");function ym(e,n){let t=[],r=new Set(e.skills);for(let a of n.requiredSkills??[])r.has(a)||t.push(`required skill is unavailable: ${a}`);let i=n.requiredCapabilities;if(i)for(let a of["streaming","durableTasks","inputRequired","cancellation","artifacts"])i[a]===!0&&e.capabilities[a]!=="supported"&&t.push(`required capability ${a} is ${e.capabilities[a]}`);return t}o(ym,"localAgentReasons");function Or(e){return bt(e),xn(e).map(n=>{let t=ym(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(Or,"runtimeLocalListings");function wm(e,n,t){let r=new Map,i=o((a,u)=>{let l=r.get(a);if(l)return l.then(g=>{let s=g.rootControl().list().maxConcurrentThreads;if(u!==void 0&&u!==s)throw new Error(`Actor concurrency for ${a} is already ${s}; cannot change it to ${u}.`);return g});let m=(async()=>{let g=await e.storage.load(a);if(!g)throw new Error(`Session not found: ${a}`);let s=g.actorSnapshot?.maxConcurrentThreads;if(s!==void 0&&u!==void 0&&s!==u)throw new Error(`Persisted Actor concurrency for ${a} is ${s}; requested ${u}.`);let d={async load(){return(await e.storage.load(a))?.actorSnapshot},save(c,f){return e.storage.saveActorSnapshot(a,c,f)}},R=new mo({sessionId:a,store:d,maxConcurrentThreadsPerSession:u??s,...n?{executor:po({plane:n,context:t??{actorId:`runtime:${a}`}})}:{}});return await R.initialize(),R})();return r.set(a,m),m.catch(()=>r.delete(a)),m},"forSession");return{forSession:i,async root(a){return(await i(a)).rootControl()},async activeTurns(a){return(await Promise.all(a.map(async l=>({sessionId:l,root:(await i(l)).rootControl()})))).flatMap(({sessionId:l,root:m})=>m.list().actors.flatMap(g=>g.currentTurnId&&g.path!=="/root"?[{sessionId:l,actorPath:g.path,turnId:g.currentTurnId,kind:g.kind}]:[]))},async close(a){let u=await Promise.allSettled([...r.values()]);await Promise.all(u.flatMap(l=>l.status==="fulfilled"?[l.value.close(a)]:[])),r.clear()}}}o(wm,"createRuntimeAgentActorRegistry");function hm(e,n,t,r){return{execution:n,enabled:e!==void 0,async listDispatchable(i){bt(i);let a=xn(i);return e?e.listDispatchable(i,a):Or(i)},async describe(i,a){bt(a);let u=xn(a);return e?e.describe(i,a,u):Or(a).find(l=>l.descriptor.agentId===i)},async preflight(i){bt(i.query);let a=xn(i.query);if(e)return e.preflight(i,a);let u=Or(i.query).find(m=>m.descriptor.agentId===i.agentId),l=u?[]:["agent is not dispatchable"];return u&&i.expectedConfigurationRevision!==void 0&&u.descriptor.configurationRevision!==i.expectedConfigurationRevision&&l.push("configuration revision changed"),{ok:u!==void 0&&l.length===0,...u?{descriptor:u.descriptor}:{},dispatchability:u?.dispatchability??{status:"unavailable",checkedAt:new Date().toISOString(),reasons:l},reasons:l}},async tree(i){return await r.loadRequired(i),(await t.root(i)).list()},async detail(i,a){return await r.loadRequired(i),(await t.root(i)).get(a)},async spawn(i,a){return await r.loadRequired(i),(await t.root(i)).spawn(a)},async send(i,a,u,l){await r.loadRequired(i),await(await t.root(i)).send(a,u,l)},async followup(i,a,u,l){return await r.loadRequired(i),(await t.root(i)).followup(a,u,void 0,l)},async interrupt(i,a,u){await r.loadRequired(i),await(await t.root(i)).interrupt(a,u)},async output(i,a,u){return await r.loadRequired(i),(await t.root(i)).output(a,u)},async events(i,a){return await r.loadRequired(i),(await t.root(i)).eventSnapshot(a)},async wait(i,a,u){return await r.loadRequired(i),(await t.root(i)).wait(a,u)}}}o(hm,"createRuntimeAgentService");function _r(){return new Error("Runtime external agent executor plane is not enabled.")}o(_r,"externalAgentsDisabled");function vm(e){return{agentRegistrations:e?.registrations??{async list(){return[]},async upsert(){throw _r()},async setEnabled(){throw _r()},async remove(){throw _r()}}}}o(vm,"createRuntimeAdminService");function Sm(e){return{async snapshot(){let n=await $r([...e.runs.values()].map(ge),e.sessionAdmission);return{runtimeId:e.identity.runtimeId,mode:e.identity.mode,profile:e.identity.profile,startedAt:e.identity.startedAt,sessions:(await e.sessionManager.listSessions({includeArchived:!0})).filter(e.sessionAdmission.admitsSummary).map(Va),runs:n,pendingPermissions:await e.permissions.service.listPending(),workflows:await e.workflows.list({})}},async preflight(){let n=await $r([...e.runs.values()].map(ge),e.sessionAdmission),t=n.filter(s=>s.phase==="running"||s.phase==="waiting_permission"||s.phase==="waiting_user_input"),r=n.filter(s=>s.phase==="queued"),i=(await e.workflows.list({})).filter(s=>s.status!=="completed"&&s.status!=="failed"&&s.status!=="denied"&&s.status!=="stopped"),a=(await e.sessionManager.listSessions({includeArchived:!0})).filter(e.sessionAdmission.admitsSummary).map(s=>s.id),u=await e.actors.activeTurns(a),l=await e.permissions.service.listPending(),m=await e.userInputs.service.listPending(),g=[];return t.length>0&&g.push("active_runs"),r.length>0&&g.push("queued_runs"),i.length>0&&g.push("active_workflows"),u.length>0&&g.push("active_agent_turns"),u.length>0&&g.push("active_agent_tasks"),(l.length>0||m.length>0)&&g.push("pending_interactions"),{runtimeId:e.identity.runtimeId,clientCount:0,activeRuns:t,queuedRuns:r,activeWorkflows:i,activeAgentTurns:u,activeAgentTasks:u,pendingPermissions:l,pendingUserInputs:m,blockers:g,canStop:g.length===0}}}}o(Sm,"createRuntimeStatusService");function km(e){return{latestContextBudget(n){return va(e,"context.budget.snapshot",n)},latestToolExposure(n){return va(e,"tool.exposure.planned",n)}}}o(km,"createRuntimeDiagnosticsService");async function va(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(va,"latestRuntimeDiagnosticPayload");function en(e){return e==="running"||e==="waiting_permission"||e==="waiting_user_input"}o(en,"isActiveRunPhase");function Im(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(Im,"removeQueuedRun");function bm(e){let n=!1,t=[],r=new Map,i=new Map,a=new Set,u=o((d,R)=>R?!(R.sessionId!==void 0&&d.sessionId!==R.sessionId||R.runId!==void 0&&d.runId!==R.runId||R.type!==void 0&&!(Array.isArray(R.type)?R.type:[R.type]).includes(d.type)):!0,"matches"),l=o(d=>{t.push(d),t.length>Et&&t.splice(0,t.length-Et)},"remember"),m=o((d,R,c)=>{let f=e.nextEventSeq();return{id:`evt_${f}_${Pe().replace(/-/g,"").slice(0,8)}`,seq:f,time:new Date().toISOString(),sessionId:c.sessionId,runId:c.runId,...c.turnId!==void 0?{turnId:c.turnId}:{},type:d,payload:R}},"createEvent"),g=o(d=>{for(let R of[...a])if(u(d,R.filter))try{R.listener(d)}catch(c){te({source:"runtime.events",level:"error",message:`Runtime event listener failed for ${d.type}`,detail:{eventId:d.id,error:se(c)}})}},"notify");return{service:{subscribe(d,R){if(n)throw new Error("KodaX runtime event bus is closed");let c={filter:d,listener:R};return a.add(c),{close(){a.delete(c)}}},async replay(d){let R=e.replay(d),c=new Map;for(let w of R)c.set(w.id,w);for(let w of t)c.set(w.id,w);let f=[...c.values()].filter(w=>u(w,d)&&(d?.sinceSeq===void 0||w.seq>d.sinceSeq)).sort((w,k)=>w.seq-k.seq||w.time.localeCompare(k.time));return d?.limit===void 0?f:f.slice(-d.limit)}},emit(d,R,c){let f=m(d,R,c);i.set(f.sessionId,f.seq);let w=r.get(f.sessionId)??Sa();r.set(f.sessionId,w),Pm(w,f),l(f);let k=[f];try{e.appendEvent(f)}catch(I){let C=m("runtime.warning",{message:se(I).message,sourceEventId:f.id},c);l(C),k.push(C)}for(let I of k)g(I);return f},projectSession(d){let R=r.get(d);return ka(R===void 0?Sa():R)},currentSessionSeq(d){let R=i.get(d);if(R!==void 0)return R;let c=Dm(e.replay({sessionId:d}));return i.set(d,c),c},close(){n=!0;try{e.close()}catch(d){te({source:"runtime.persistence",level:"error",message:"Failed to flush runtime events while closing",detail:d})}a.clear(),r.clear(),i.clear()}}}o(bm,"createRuntimeEventBus");function Sa(){return{assistantTextByRun:{},thinkingTextByRun:{},activeTools:new Map,pendingUserInputs:new Map,managedTasks:new Map,todo:void 0}}o(Sa,"createRuntimeSessionLiveProjectionState");function Pm(e,n){let t=W(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=Lr(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=Lr(n),i=e.activeTools.get(r)??xm(e.activeTools,n.runId);i&&e.activeTools.set(i.key,{...i,progress:n.payload})}else if(n.type==="tool.finished"){let r=Lr(n);if(!e.activeTools.delete(r))for(let[i,a]of e.activeTools)a.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=Em(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(Ja(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(Pm,"applyRuntimeSessionEvent");function ka(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(ka,"snapshotRuntimeSessionLiveProjection");function Em(e){if(!(!W(e)||typeof e.agentMode!="string"||typeof e.harnessProfile!="string"))return e}o(Em,"parseRuntimeManagedTaskStatus");function Dm(e){return e.at(-1)?.seq??0}o(Dm,"latestRuntimeEventSeq");function Lr(e){let n=W(e.payload)?e.payload:void 0,t=W(n?.meta)?n.meta:void 0,r=W(n?.tool)?n.tool:void 0,i=W(n?.update)?n.update:void 0,a=W(n?.result)?n.result:void 0,u=t?.toolCallId??t?.toolUseId??r?.id??i?.id??a?.id??a?.toolCallId;return typeof u=="string"&&u.length>0?`${e.runId}:${u}`:`${e.runId}:${e.turnId??"turn"}:${e.id}`}o(Lr,"runtimeToolProjectionKey");function xm(e,n){return[...e.values()].reverse().find(t=>t.runId===n)}o(xm,"latestActiveToolForRun");function Ja(e){return e==="run.completed"||e==="run.failed"||e==="run.cancelled"||e==="run.interrupted"}o(Ja,"isTerminalRuntimeEvent");function Tm(e){let n=e.homeDir?N.resolve(e.homeDir):e.sessionsDir?N.resolve(e.sessionsDir,".."):process.cwd(),t=e.sharedDaemonHost===!0?N.join(n,".kodax","runtime","profiles",encodeURIComponent(e.profile??"default")):N.join(n,".kodax","runtime"),r=N.join(t,"runs"),i=N.join(t,"session-settings"),a=N.join(t,"permission-grants.json"),u=N.join(t,"event-sequence"),l=new Map,m=0,g,s,d,R=!1,c=o(b=>N.join(r,encodeURIComponent(b)),"runDir"),f=o(b=>N.join(c(b),"events.jsonl"),"eventFile"),w=o(b=>N.join(c(b),"status.json"),"statusFile"),k=o(b=>N.join(i,`${encodeURIComponent(b)}.json`),"sessionSettingsFile"),I=[],C=new Set,A=o(()=>{let b=0;if(L.existsSync(u))try{let D=Number.parseInt(L.readFileSync(u,"utf-8").trim(),10);Number.isSafeInteger(D)&&D>0&&(b=D)}catch(D){te({source:"runtime.persistence",level:"warn",message:"Failed to read runtime event sequence cursor; recovering from event logs",detail:D})}if(!L.existsSync(r))return b;for(let D of L.readdirSync(r,{withFileTypes:!0})){if(!D.isDirectory())continue;let x=N.join(r,D.name,"events.jsonl");if(!L.existsSync(x))continue;let $=L.statSync(x).size,H=Math.min($,Vc),G=Buffer.allocUnsafe(H),le=L.openSync(x,"r");try{L.readSync(le,G,0,H,$-H)}finally{L.closeSync(le)}let Ee=G.toString("utf-8").split(/\r?\n/);H<$&&Ee.shift();for(let Pn of Ee)if(Pn.trim())try{let nn=JSON.parse(Pn);Ia(nn)&&Number.isSafeInteger(nn.seq)&&(b=Math.max(b,nn.seq))}catch{}}return b},"findMaxPersistedEventSeq"),h=o(()=>{d===void 0&&(d=A()+1);let b=d;return d+=1,R=!0,b},"allocateEventSeq"),v=o((b,D,x)=>{if(C.has(b))return;C.add(b);let $=h(),H={id:`evt_persist_warn_${$}_${Pe().replace(/-/g,"").slice(0,8)}`,seq:$,time:new Date().toISOString(),sessionId:x.sessionId??"runtime",runId:x.runId??x.sessionId??"runtime",type:"runtime.warning",payload:{source:"runtime.persistence",message:D,...x.file!==void 0?{file:x.file}:{}}};I.push(H),I.length>Et&&I.splice(0,I.length-Et)},"pushPersistenceWarning"),p=o((b,D)=>[...b,...I].filter(x=>Cm(x,D)).sort((x,$)=>x.seq-$.seq||x.time.localeCompare($.time)),"withPersistenceWarnings"),P=o((b,D)=>{if(!L.existsSync(b))return[];let x=L.readFileSync(b,"utf-8"),$=[],H=x.split(/\r?\n/);for(let G=0;G<H.length;G+=1){let le=H[G]??"";if(le.trim())try{let Ee=JSON.parse(le);Ia(Ee)?$.push(Ee):v(`${b}:${G+1}:shape`,`Skipped malformed runtime event record at ${N.basename(b)}:${G+1}`,{runId:D,file:b})}catch(Ee){v(`${b}:${G+1}:parse`,`Skipped malformed runtime event record at ${N.basename(b)}:${G+1}: ${se(Ee).message}`,{runId:D,file:b})}}return $},"readEventsFromFile"),E=o(b=>{if(L.statSync(b).size<=Ha)return;let D=L.readFileSync(b,"utf-8").trimEnd().split(/\r?\n/),x=[],$=0;for(let H=D.length-1;H>=0;H-=1){let G=D[H]??"";if(!G)continue;let le=Buffer.byteLength(G,"utf-8")+1;if(x.length>0&&$+le>zc)break;x.push(G),$+=le}x.reverse(),L.writeFileSync(b,x.length>0?`${x.join(`
66
+ `)}
67
+ `:"","utf-8")},"trimEventFile"),O=o(()=>{g!==void 0&&(clearTimeout(g),g=void 0);for(let[b,D]of l){let x=D.join(""),$=Buffer.byteLength(x,"utf-8"),H=c(b),G=f(b);L.mkdirSync(H,{recursive:!0}),L.appendFileSync(G,x,"utf-8"),l.delete(b),m=Math.max(0,m-$),E(G)}R&&d!==void 0&&(L.mkdirSync(t,{recursive:!0}),L.writeFileSync(u,String(d-1),"utf-8"),R=!1),s=void 0},"flushBufferedEvents"),F=o(()=>{g===void 0&&(g=setTimeout(()=>{g=void 0;try{O()}catch(b){s=se(b),te({source:"runtime.persistence",level:"error",message:"Failed to flush buffered runtime events",detail:b})}},Jc),g.unref?.())},"scheduleEventFlush");return{runtimeDir:t,appendEvent(b){let D=`${JSON.stringify(b)}
68
+ `,x=l.get(b.runId)??[];x.push(D),l.set(b.runId,x),m+=Buffer.byteLength(D,"utf-8");let $=s;s=void 0;try{$!==void 0||!Qc.has(b.type)||m>=Wc?O():F()}catch(H){throw F(),H}if($!==void 0)throw $},close(){O()},nextEventSeq(){return h()},currentEventSeq(){return d===void 0&&(d=A()+1),d-1},replay(b){try{O()}catch(x){v(`${t}:event-flush`,`Failed to flush buffered runtime events: ${se(x).message}`,{runId:b?.runId})}if(b?.runId)return p(P(f(b.runId),b.runId),b);if(!L.existsSync(r))return p([],b);let D=[];for(let x of L.readdirSync(r,{withFileTypes:!0}))x.isDirectory()&&D.push(...P(N.join(r,x.name,"events.jsonl"),x.name));return p(D,b)},saveRunStatus(b){let D=c(b.runId);L.mkdirSync(D,{recursive:!0}),jr(w(b.runId),b)},loadRunStatus(b){let D=w(b);if(L.existsSync(D))try{let x=xt(JSON.parse(L.readFileSync(D,"utf-8")));if(x)return x;v(`${D}:shape`,`Skipped malformed runtime status record at ${N.basename(D)}`,{runId:b,file:D});return}catch(x){v(`${D}:parse`,`Skipped malformed runtime status record at ${N.basename(D)}: ${se(x).message}`,{runId:b,file:D});return}},loadRunStatuses(){if(!L.existsSync(r))return[];let b=[];for(let D of L.readdirSync(r,{withFileTypes:!0})){if(!D.isDirectory())continue;let x=N.join(r,D.name,"status.json");if(L.existsSync(x))try{let $=JSON.parse(L.readFileSync(x,"utf-8")),H=xt($);H?b.push(H):v(`${x}:shape`,`Skipped malformed runtime status record at ${N.basename(x)}`,{runId:D.name,file:x})}catch($){v(`${x}:parse`,`Skipped malformed runtime status record at ${N.basename(x)}: ${se($).message}`,{runId:D.name,file:x})}}return b},loadSessionSettingsVersioned(b){let D=k(b);if(!L.existsSync(D))return{revision:0,value:{}};try{let x=JSON.parse(L.readFileSync(D,"utf-8"));return W(x)&&Number.isSafeInteger(x.revision)&&typeof x.revision=="number"&&x.revision>=0&&W(x.value)?{revision:x.revision,value:Ta(x.value)}:{revision:0,value:Ta(x)}}catch(x){return v(`${D}:parse`,`Skipped malformed runtime session settings at ${N.basename(D)}: ${se(x).message}`,{sessionId:b,file:D}),{revision:0,value:{}}}},loadSessionSettings(b){return this.loadSessionSettingsVersioned(b).value},saveSessionSettingsVersioned(b,D){L.mkdirSync(i,{recursive:!0});let x=k(b);jr(x,{revision:D.revision,value:kp(D.value)})},saveSessionSettings(b,D){let x=this.loadSessionSettingsVersioned(b);this.saveSessionSettingsVersioned(b,{revision:x.revision+1,value:D})},loadPermissionGrants(){if(!L.existsSync(a))return{revision:0,value:[]};try{let b=JSON.parse(L.readFileSync(a,"utf-8"));if(!W(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(np)}}catch(b){throw new Error(`Permission grant store is untrusted: ${se(b).message}`)}},savePermissionGrants(b){L.mkdirSync(t,{recursive:!0}),jr(a,b)}}}o(Tm,"createRuntimePersistence");function jr(e,n){let t=`${e}.${process.pid}.${Pe()}.tmp`,r;try{r=L.openSync(t,"wx",384),L.writeFileSync(r,`${JSON.stringify(n,null,2)}
69
+ `,"utf-8"),L.fsyncSync(r),L.closeSync(r),r=void 0,L.renameSync(t,e)}finally{r!==void 0&&L.closeSync(r),L.rmSync(t,{force:!0})}}o(jr,"writeRuntimeJsonAtomic");function Am(e){if(e.sessionsDir!==void 0)return N.resolve(e.sessionsDir);if(e.homeDir!==void 0)return N.join(N.resolve(e.homeDir),".kodax","sessions")}o(Am,"resolveRuntimeSessionsDir");function Cm(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(Cm,"eventMatchesReplayFilter");function Ia(e){return W(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(Ia,"isRuntimeEvent");function xt(e){if(W(e)&&!(typeof e.runId!="string"||typeof e.sessionId!="string"||!Mm(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}:{},...W(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}:{},...Pa(e.terminal)!==void 0?{terminal:Pa(e.terminal)}:{},...ba(e.continuation)!==void 0?{continuation:ba(e.continuation)}:{}}}o(xt,"parseRuntimeRunStatus");function ba(e){if(!(!W(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(ba,"parseRuntimeContinuationStatus");function Mm(e){return e==="queued"||e==="running"||e==="waiting_permission"||e==="waiting_user_input"||e==="completed"||e==="failed"||e==="cancelled"||e==="interrupted"}o(Mm,"isRuntimeRunPhase");function Pa(e){if(W(e)&&!(!Number.isSafeInteger(e.revision)||typeof e.revision!="number"||!Om(e.kind)||!_m(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(Pa,"parseRuntimeTerminalFact");function Om(e){return e==="completed"||e==="failed"||e==="cancelled"||e==="interrupted"}o(Om,"isRuntimeTerminalKind");function _m(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(_m,"isRuntimeTerminalCode");function Lm(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(Za(e)),terminalEmitted:Ot(e.phase)}}o(Lm,"recordFromPersistedStatus");function jm(e,n,t){if(Ot(e.phase))return e;let r=[...t.replay({runId:e.runId})].reverse().find(u=>{if(!Ja(u.type))return!1;let l=xt(u.payload);return l?.runId===e.runId&&l.sessionId===e.sessionId&&l.phase===Nm(u.type)});if(r!==void 0){let u=xt(r.payload);if(u!==void 0)return kn(n,t,void 0,u),u}let i=e.phase==="queued"?"runtime_restarted":"daemon_crashed",a={...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",a,{sessionId:a.sessionId,runId:a.runId,...a.turnId!==void 0?{turnId:a.turnId}:{}}),kn(n,t,void 0,a),a}o(jm,"interruptPersistedNonTerminalRun");function Nm(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(Nm,"terminalPhaseFromEvent");function Ea(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(Ea,"resolvePermissionTimeoutMs");function Fm(e,n){let t=new Map,r=o((l,m,g,s)=>{let d=t.get(l);return!d||g?.runId!==void 0&&d.request.runId!==g.runId||g?.expectedRevision!==void 0&&d.request.revision!==g.expectedRevision?{requestId:l,accepted:!1,status:"already_resolved"}:(m.status==="answered"&&$m(d.request.kind,m.answer),t.delete(l),clearTimeout(d.timer),d.resolve(m),e.emit("user_input.resolved",{requestId:l,kind:d.request.kind,status:m.status,...s!==void 0?{reason:s}:{}},{sessionId:d.request.sessionId,runId:d.request.runId,...d.request.turnId!==void 0?{turnId:d.request.turnId}:{}}),{requestId:l,accepted:!0,status:m.status})},"resolvePending"),i=o((l,m=n)=>{let g=`input_${Pe().replace(/-/g,"").slice(0,12)}`,s=new Date,d={id:g,revision:0,sessionId:l.sessionId,runId:l.runId,...l.turnId!==void 0?{turnId:l.turnId}:{},kind:l.kind,options:l.options,createdAt:s.toISOString(),expiresAt:new Date(s.getTime()+m).toISOString()},R=o(()=>{},"resolveResponse"),c=new Promise(w=>{R=w}),f=setTimeout(()=>{r(g,{status:"dismissed"},void 0,"timeout")},Math.max(1,m));return f.unref?.(),t.set(g,{request:d,resolve:R,timer:f}),e.emit("user_input.requested",d,{sessionId:d.sessionId,runId:d.runId,...d.turnId!==void 0?{turnId:d.turnId}:{}}),{request:d,response:c}},"trackAndWait"),a=o((l,m)=>{for(let g of[...t.values()])l(g.request)&&r(g.request.id,{status:"dismissed"},void 0,m)},"dismissMatching");return{service:{async listPending(l){return[...t.values()].map(m=>m.request).filter(m=>(l?.sessionId===void 0||m.sessionId===l.sessionId)&&(l?.runId===void 0||m.runId===l.runId))},async respond(l,m,g){return r(l,{status:"answered",answer:m},g)},async dismiss(l,m){return r(l,{status:"dismissed"},m,"client_dismissed")}},trackAndWait:i,resolve:r,rejectForRun(l,m){a(g=>g.runId===l,m)},rejectAll(l){a(()=>!0,l)}}}o(Fm,"createRuntimeUserInputRegistry");function $m(e,n){if(!(e==="askUser"?za(n):e==="askUserMulti"?qm(n):typeof n=="string"))throw nd(`Invalid answer for ${e}`)}o($m,"assertRuntimeUserInputAnswer");function za(e){return Array.isArray(e)?e.every(Da):Da(e)}o(za,"isAskUserAnswer");function Da(e){return typeof e=="string"||W(e)&&e.kind==="customInput"&&typeof e.value=="string"}o(Da,"isAskUserSelectionAnswer");function qm(e){return W(e)&&Object.values(e).every(za)}o(qm,"isAskUserMultiAnswer");function Hm(e,n,t){let r=new Map,i=o((g,s=n)=>{let d=o(()=>{},"resolveResponse"),R=new Promise(f=>{d=f});return{request:m(g,[d],Ea(g.expiresAt,s)),response:R}},"trackAndWait"),a=o((g,s,d)=>{let R=r.get(g);if(!R||d!==void 0&&R.request.runId!==d)return!1;s.type==="allow_always"&&Cp(t,R.request,s.scope),r.delete(g),R.timer&&clearTimeout(R.timer);for(let c of R.waiters)c(s);return e.emit("permission.resolved",{requestId:g,decision:s},{sessionId:R.request.sessionId,runId:R.request.runId,...R.request.turnId!==void 0?{turnId:R.request.turnId}:{}}),!0},"resolvePending"),u=o((g,s)=>{let d=[...r.values()].filter(R=>g(R.request)).map(R=>R.request.id);for(let R of d)a(R,s)},"resolveMatching");return{service:{request(g){let s=Oa(t,g.sessionId,g.toolName);return s!==void 0?Promise.resolve({type:"allow_always",scope:s.scope}):i({sessionId:g.sessionId,runId:g.runId,...g.turnId!==void 0?{turnId:g.turnId}:{},...g.toolCallId!==void 0?{toolCallId:g.toolCallId}:{},toolName:g.toolName,...g.reason!==void 0?{reason:g.reason}:{},...g.risk!==void 0?{risk:g.risk}:{},...g.inputPreview!==void 0?{inputPreview:g.inputPreview}:{},...g.executionCwd!==void 0?{executionCwd:g.executionCwd}:{},...g.expiresAt!==void 0?{expiresAt:g.expiresAt}:{}},g.timeoutMs??n).response},async listPending(g){return[...r.values()].map(s=>s.request).filter(s=>Mp(s,g))},async respond(g,s,d){return a(g,s,d?.runId)},async listGrants(){return t.loadPermissionGrants()},async revokeGrant(g,s){let d=t.loadPermissionGrants();if(d.revision!==s)throw Jr(`Permission grant revision ${s} is stale; current revision is ${d.revision}`,d.revision);let R=d.value.filter(c=>c.id!==g);return R.length===d.value.length?!1:(t.savePermissionGrants({revision:d.revision+1,value:R}),!0)}},track(g){return m(g,[],Ea(g.expiresAt,n))},trackAndWait(g,s=n){return i(g,s)},resolve(g,s){a(g,s)},isGranted(g,s){return Oa(t,g,s)!==void 0},rejectForRun(g,s){u(d=>d.runId===g,{type:"reject",reason:s})},rejectAll(g){u(()=>!0,{type:"reject",reason:g})}};function m(g,s,d=n){let R=g.inputPreview===void 0?void 0:Xp(g.inputPreview),c={...g,...R!==void 0?{inputPreview:R}:{},executionCwd:N.resolve(g.executionCwd??process.cwd()),id:`perm_${Pe().replace(/-/g,"").slice(0,12)}`,createdAt:new Date().toISOString()},f=d>0?setTimeout(()=>{let w=r.get(c.id);if(!w)return;r.delete(c.id);let k={type:"reject",reason:"permission request timed out"};for(let I of w.waiters)I(k);e.emit("permission.resolved",{requestId:c.id,decision:k},{sessionId:c.sessionId,runId:c.runId,...c.turnId!==void 0?{turnId:c.turnId}:{}})},d):void 0;return f?.unref?.(),r.set(c.id,{request:c,waiters:s,...f!==void 0?{timer:f}:{}}),e.emit("permission.requested",c,{sessionId:c.sessionId,runId:c.runId,...c.turnId!==void 0?{turnId:c.turnId}:{}}),c}}o(Hm,"createRuntimePermissionRegistry");function Km(e){let{bus:n,original:t,permissions:r,userInputs:i,enableSharedInteractions:a,record:u}=e,l=o(s=>({sessionId:s?.sessionId??u.sessionId,runId:u.runId,turnId:s?.turnId??u.turnId}),"scopeFromMeta"),m=o((s,d,R)=>{n.emit(s,He(d),l(R))},"emit"),g=o(async(s,d,R,c,f)=>{let w=u.phase;if(u.phase==="running"&&(u.phase="waiting_user_input"),a){let I=i.trackAndWait({sessionId:R?.sessionId??u.sessionId,runId:u.runId,...R?.turnId??u.turnId?{turnId:R?.turnId??u.turnId}:{},kind:s,options:d});try{let C=c===void 0?await I.response:await Promise.race([I.response,c().then(A=>({status:A===void 0?"dismissed":"answered",...A!==void 0?{answer:A}:{}})).then(A=>(i.resolve(I.request.id,A),A))]);return C.status==="answered"?C.answer:f}finally{u.phase==="waiting_user_input"&&(u.phase=w)}}let k=`input_${Pe().replace(/-/g,"").slice(0,12)}`;m("user_input.requested",{requestId:k,kind:s,options:d},R);try{if(c===void 0)return f;let I=await c();return m("user_input.resolved",{requestId:k,kind:s,status:I===void 0?"dismissed":"answered"},R),I}catch(I){throw m("user_input.resolved",{requestId:k,kind:s,status:"failed",error:se(I).message},R),I}finally{u.phase==="waiting_user_input"&&(u.phase=w)}},"runWithUserInputPhase");return{...t,onTextDelta(s,d){m("assistant.delta",{text:s,meta:d},d),t?.onTextDelta?.(s,d)},onThinkingDelta(s,d){m("thinking.delta",{text:s,meta:d},d),t?.onThinkingDelta?.(s,d)},onThinkingEnd(s,d){m("thinking.finished",{thinking:s,meta:d},d),t?.onThinkingEnd?.(s,d)},onToolUseStart(s,d){m("tool.started",{tool:s,meta:d},d),t?.onToolUseStart?.(s,d)},onToolProgress(s,d){m("tool.progress",{update:s,meta:d},d),t?.onToolProgress?.(s,d)},onToolInputDelta(s,d,R){m("tool.progress",{toolName:s,partialJson:d,meta:R},R),t?.onToolInputDelta?.(s,d,R)},onToolResult(s,d){m("tool.finished",{result:s,meta:d},d),t?.onToolResult?.(s,d)},onStreamEnd(s){m("run.progress",{kind:"stream_end",meta:s},s),t?.onStreamEnd?.(s)},onChildActivityEnd(s){m("child_activity.finished",{meta:s},s),t?.onChildActivityEnd?.(s)},onSessionStart(s){u.provider=s.provider,n.emit("session.loaded",He(s),{sessionId:s.sessionId,runId:u.runId,turnId:s.turnId??u.turnId}),t?.onSessionStart?.(s)},onTurnStarted(s){u.turnId=s.turnId,n.emit("turn.started",He(s),{sessionId:s.sessionId,runId:u.runId,turnId:s.turnId}),t?.onTurnStarted?.(s)},onTurnCompleted(s){n.emit("turn.completed",He(s),{sessionId:s.sessionId,runId:u.runId,turnId:s.turnId}),t?.onTurnCompleted?.(s)},onTurnFailed(s){n.emit("turn.failed",He(s),{sessionId:s.sessionId,runId:u.runId,turnId:s.turnId}),t?.onTurnFailed?.(s)},onIterationStart(s,d,R){m("run.progress",{kind:"iteration_start",iter:s,maxIter:d,meta:R},R),t?.onIterationStart?.(s,d,R)},onIterationEnd(s){m("run.progress",{kind:"iteration_end",info:s},s),t?.onIterationEnd?.(s)},onCompactStart(s){m("context.compaction.started",{meta:s},s),t?.onCompactStart?.(s)},onCompact(s,d){m("context.compaction.finished",{estimatedTokens:s,meta:d},d),t?.onCompact?.(s,d)},onCompactStats(s){m("context.compaction.stats",s,s),t?.onCompactStats?.(s)},onCompactedMessages(s,d,R){m("context.compaction.messages",{messageCount:s.length,update:d,meta:R},R),t?.onCompactedMessages?.(s,d,R)},onCompactEnd(s){m("context.compaction.ended",{meta:s},s),t?.onCompactEnd?.(s)},onMidTurnUserMessages(s,d){m("run.progress",{kind:"mid_turn_user_messages",contents:s,meta:d},d),t?.onMidTurnUserMessages?.(s,d)},onRetry(s,d,R,c){m("provider.retry",{reason:s,attempt:d,maxAttempts:R,meta:c},c),t?.onRetry?.(s,d,R,c)},onProviderRateLimit(s,d,R,c){m("provider.retry",{reason:"rate_limit",attempt:s,maxAttempts:d,delayMs:R,meta:c},c),t?.onProviderRateLimit?.(s,d,R,c)},onRetryAfter(s,d){m("provider.retry",{retryAfter:s,meta:d},d),t?.onRetryAfter?.(s,d)},onReasoningEffortRejected(s){m("provider.recovery",{kind:"reasoning_effort_rejected",event:s},s),t?.onReasoningEffortRejected?.(s)},onRepoIntelligenceTrace(s){m("repo_intelligence.trace",s,s),t?.onRepoIntelligenceTrace?.(s)},onContextBudgetSnapshot(s){m("context.budget.snapshot",s,s),t?.onContextBudgetSnapshot?.(s)},onToolExposurePlanned(s){m("tool.exposure.planned",s,s),t?.onToolExposurePlanned?.(s)},onContextCompactionSkipped(s){m("context.compaction.skipped",s,s),t?.onContextCompactionSkipped?.(s)},onSidecarMessage(s){m("sidecar.message",s,s),t?.onSidecarMessage?.(s)},onTodoUpdate(s,d){m("todo.updated",{items:s,meta:d},d),t?.onTodoUpdate?.(s,d)},onTodoDriftWarning(s){m("todo.warning",s,s),t?.onTodoDriftWarning?.(s)},onProviderRecovery(s,d){m("provider.recovery",{event:s,meta:d},d),t?.onProviderRecovery?.(s,d)},onEffectiveConfig(s){m("config.effective",s,s),t?.onEffectiveConfig?.(s)},onWorkflowProcessEvent(s){let d=xp(s);n.emit(d,He(s),{sessionId:s.snapshot.hostMetadata?.sessionId??u.sessionId,runId:u.runId,turnId:u.turnId}),t?.onWorkflowProcessEvent?.(s)},onComplete(s){m("run.progress",{kind:"complete",meta:s},s),t?.onComplete?.(s)},onError(s,d){m("runtime.warning",{source:"coding",severity:"error",message:s.message},d),t?.onError?.(s,d)},onManagedTaskStatus(s){m("run.progress",{kind:"managed_task_status",status:s},s),t?.onManagedTaskStatus?.(s)},beforeToolExecute:o(async(s,d,R)=>{let c=jp(u),f=u.autoModeEngine;if(c!==void 0&&Ke(u.permissionMode)==="auto"&&(f==="llm"||f==="rules"))return Ka.has(s)?!0:R?.toolId!==void 0&&c.consumeAllowedCall({id:R.toolId,name:s,input:d})?t?.beforeToolExecute?.(s,d,R)??!0:"[Blocked] Runtime auto mode did not classify this concrete tool call.";if(Ke(u.permissionMode)==="plan"){let A=La(u,s,d);if(A!==!0&&A!==void 0)return A}if(r.isGranted(R?.sessionId??u.sessionId,s))return!0;let k=t?.beforeToolExecute===void 0?La(u,s,d):void 0;if(k!==void 0)return k;let I=u.phase;u.phase==="running"&&(u.phase="waiting_permission");let C=r.trackAndWait({sessionId:R?.sessionId??u.sessionId,runId:u.runId,...R?.turnId??u.turnId?{turnId:R?.turnId??u.turnId}:{},...R?.toolId?{toolCallId:R.toolId}:{},toolName:s,inputPreview:Un(d),executionCwd:ed(u)});try{if(!t?.beforeToolExecute){let p=await C.response;return ja(p)}let A=Promise.resolve(t.beforeToolExecute(s,d,R)).then(p=>({source:"hook",decision:p})),h=C.response.then(p=>({source:"runtime",decision:ja(p)})),v=await Promise.race([A,h]);return v.source==="hook"&&r.resolve(C.request.id,Op(v.decision)),v.decision}catch(A){throw r.resolve(C.request.id,{type:"reject",reason:se(A).message}),A}finally{u.phase==="waiting_permission"&&(u.phase=I==="queued"?"running":I)}},"beforeToolExecute"),...t?.askUser||a?{askUser:o((s,d)=>g("askUser",s,d,t?.askUser?()=>t.askUser(s,d):void 0,""),"askUser")}:{},...t?.askUserMulti||a?{askUserMulti:o((s,d)=>g("askUserMulti",s,d,t?.askUserMulti?()=>t.askUserMulti(s,d):void 0,void 0),"askUserMulti")}:{},...t?.askUserInput||a?{askUserInput:o((s,d)=>g("askUserInput",s,d,t?.askUserInput?()=>t.askUserInput(s,d):void 0,void 0),"askUserInput")}:{}}}o(Km,"wrapKodaXEvents");function Xm(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(Xm,"buildSessionRuntimeInfo");function Va(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(Va,"toRuntimeSessionSummary");function Bm(e,n){let t=e.input===void 0?[]:Array.isArray(e.input)?[...e.input]:[e.input],r=t.filter(a=>a.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(a=>Um(a,n))}}o(Bm,"normalizeRuntimeRunInput");function Um(e,n){if(e.type==="text")return[];if(e.type==="artifact_ref")return Wm(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(Um,"runtimeInputToArtifacts");function Wm(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(Wm,"runtimeArtifactToInputArtifacts");function Jm(e){return typeof e=="string"&&Yc.has(e)}o(Jm,"isRuntimeArtifactKind");function zm(e,n,t,r){let i=r.runtimeInfo?.canonicalRepoRoot??(r.gitRoot?r.gitRoot:void 0),a=i===void 0?void 0:N.resolve(i),u=r.runtimeInfo?.executionCwd??r.runtimeInfo?.workspaceRoot??a,l={...a!==void 0?{gitRoot:a}:{},...n.executionCwd!==void 0?{executionCwd:N.resolve(n.executionCwd)}:u!==void 0?{executionCwd:N.resolve(u)}:{}},m=e.context,g=typeof m?.gitRoot=="string"?N.resolve(m.gitRoot):void 0;if(a!==void 0&&g!==void 0&&!(Vn(a,g)&&Vn(g,a)))throw new Error("gitRoot must match the session repository safety boundary");let s=m?.executionCwd===void 0?void 0:N.resolve(m.executionCwd),d=s??l.executionCwd,R=r.runtimeInfo?.workspaceRoot??a;s!==void 0&&R!==void 0&&Ga(s,R,"executionCwd");let c=[...m?.inputArtifacts??[],...t],f={...l,...m??{},...a!==void 0?{gitRoot:a}:g!==void 0?{gitRoot:g}:{},...d!==void 0?{executionCwd:d}:{},...c.length>0?{inputArtifacts:c}:{}},w=e.provider??n.provider,k=e.model??n.model,I=e.effort??n.effort,C=e.thinking??n.thinking,A=e.reasoningMode??n.reasoningMode,h=e.agentMode??n.agentMode,v=h==="amaw"?"ama":h;return{...e,...w!==void 0?{provider:w}:{},...k!==void 0?{model:k}:{},...I!==void 0?{effort:I}:{},...C!==void 0?{thinking:C}:{},...A!==void 0?{reasoningMode:A}:{},...v!==void 0?{agentMode:v}:{},...Object.keys(f).length>0?{context:f}:{}}}o(zm,"buildEffectiveRuntimeOptions");async function xa(e,n){let t=await e.loadSession(n);if(!t)throw new Error(`Session not found: ${n}`);return t}o(xa,"loadRequiredSession");function Vm(e,n,t){let r=o((a,u)=>t?Gm(a,u)?!1:a===void 0||Uc.has(a.toLowerCase()):!0,"admitted"),i=o(a=>{throw Object.assign(new Error(`Session is not admitted by shared Runtime profile ${e}: ${a}`),{code:"session_not_admitted"})},"reject");return{assertCreate(a){r(a.surface,a.profileId)||i(a.sessionId??"<new>")},assertFilter(a){a?.surface!==void 0&&!r(a.surface,void 0)&&i("<list>")},admitsData(a){return r(a.runtimeInfo?.surface,a.runtimeInfo?.profileId)},admitsSummary(a){return r(a.runtimeInfo?.surface,a.runtimeInfo?.profileId)},async admitsSession(a){if(!t)return!0;let u=await n.loadSession(a);return u!==null&&r(u.runtimeInfo?.surface,u.runtimeInfo?.profileId)},async assertRunAccess(a){if(!t)return;let u=await xa(n,a);r(u.runtimeInfo?.surface,u.runtimeInfo?.profileId)||i(a)},async loadRequired(a){let u=await xa(n,a);return r(u.runtimeInfo?.surface,u.runtimeInfo?.profileId)||i(a),u}}}o(Vm,"createRuntimeSessionAdmission");async function $r(e,n){let t=new Map,r=[];for(let i of e){let a=t.get(i.sessionId);a===void 0&&(a=await n.admitsSession(i.sessionId),t.set(i.sessionId,a)),a&&r.push(i)}return r}o($r,"filterAdmittedRunStatuses");function Gm(e,n){let t=o(r=>r?.toLowerCase().split(/[^a-z0-9]+/).includes("partner")===!0,"hasPartnerToken");return t(e)||t(n)}o(Gm,"isPartnerSessionIdentity");function Qm(e){return`sha256:${$a("sha256").update(JSON.stringify(e)).digest("hex")}`}o(Qm,"createRuntimeTranscriptRevision");function Ym(e){return e.length<=ya?e:`${e.slice(0,ya-1)}\u2026`}o(Ym,"previewQueuedInput");function qr(e,n){if(n.executionCwd===void 0)return;let t=e.runtimeInfo?.workspaceRoot??e.gitRoot;t&&Ga(n.executionCwd,t,"executionCwd")}o(qr,"assertSessionSettingsAllowed");function Ga(e,n,t){if(!Vn(e,n))throw new Error(`${t} must stay within the session workspace root`)}o(Ga,"assertPathWithinRoot");function Zm(e,n){let t={...e};return Hn(t,"provider",n.provider),Hn(t,"model",n.model),Hn(t,"permissionMode",n.permissionMode),Hn(t,"executionCwd",n.executionCwd,!0),Hn(t,"autoModeClassifierModel",n.autoModeClassifierModel),Kn(t,"effort",n.effort),Kn(t,"thinking",n.thinking),Kn(t,"reasoningMode",n.reasoningMode),Kn(t,"agentMode",n.agentMode),Kn(t,"autoModeEngine",n.autoModeEngine),ep(t,"autoModeTimeoutMs",n.autoModeTimeoutMs),t}o(Zm,"applySessionSettingsPatch");function ep(e,n,t){if(t!==void 0){if(t===null){Br(e,n);return}if(!Number.isSafeInteger(t)||t<=0)throw new Error(`${n} must be a positive safe integer`);ie(e,n,t)}}o(ep,"applyNullablePositiveIntegerPatch");function Hn(e,n,t,r=!1){if(t!==void 0){if(t===null){Br(e,n);return}if(r&&!N.isAbsolute(t))throw new Error(`${String(n)} must be an absolute path`);ie(e,n,t)}}o(Hn,"applyNullableStringPatch");function Kn(e,n,t){if(t!==void 0){if(t===null){Br(e,n);return}ie(e,n,t)}}o(Kn,"applyNullablePatch");function ie(e,n,t){e[n]=t}o(ie,"setMutableSetting");function Br(e,n){delete e[n]}o(Br,"deleteMutableSetting");function Ta(e){if(!W(e))return{};let n={};return qe(n,"provider",e.provider),qe(n,"model",e.model),qe(n,"permissionMode",e.permissionMode),qe(n,"executionCwd",e.executionCwd),qe(n,"autoModeClassifierModel",e.autoModeClassifierModel),qe(n,"effort",e.effort),typeof e.thinking=="boolean"&&ie(n,"thinking",e.thinking),qe(n,"reasoningMode",e.reasoningMode),qe(n,"agentMode",e.agentMode),(e.autoModeEngine==="llm"||e.autoModeEngine==="rules")&&ie(n,"autoModeEngine",e.autoModeEngine),Number.isSafeInteger(e.autoModeTimeoutMs)&&Number(e.autoModeTimeoutMs)>0&&ie(n,"autoModeTimeoutMs",Number(e.autoModeTimeoutMs)),n}o(Ta,"parseRuntimeSessionSettings");function np(e){if(!W(e)||!W(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(np,"parseRuntimePermissionGrant");function qe(e,n,t){typeof t=="string"&&t.length>0&&ie(e,n,t)}o(qe,"setStringIfPresent");function W(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}o(W,"isRecord");function tp(e,n){if(!W(e))throw new Error(`${n} requires a plain object`)}o(tp,"assertPlainObject");function rp(e){let n=new Set(Bc);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(rp,"sanitizeRuntimeConfigPatch");function op(e){if(e.homeDir!==void 0)return N.join(N.resolve(e.homeDir),".kodax","config.json")}o(op,"resolveRuntimeConfigFile");function be(e){if(e===void 0)return vo();if(!L.existsSync(e))return{};try{let n=JSON.parse(L.readFileSync(e,"utf8"));return W(n)?n:{}}catch{return{}}}o(be,"readRuntimeConfig");function ip(e,n){if(e===void 0){ko(n);return}let r={...be(e),...n};for(let i of Object.keys(n))n[i]===void 0&&delete r[i];Wn(e,r)}o(ip,"patchRuntimeConfig");function Wn(e,n){L.mkdirSync(N.dirname(e),{recursive:!0}),L.writeFileSync(e,`${JSON.stringify(n,null,2)}
70
+ `,"utf8")}o(Wn,"writeRuntimeConfig");function sp(e){return e===void 0?Ao():up(Ct(be(e)))}o(sp,"listRuntimeCustomProviders");function ap(e,n){if(e===void 0)return Co(n);Gr(n);let t=be(e),r=Ct(t),i=fp(r,n,a=>a.name===n.name);return Wn(e,{...t,customProviders:i}),zn(i),structuredClone(n)}o(ap,"upsertRuntimeCustomProvider");function dp(e,n){if(e===void 0)return Mo(n);if(typeof n!="string"||n.length===0)return!1;let t=be(e),r=Ct(t),i=r.filter(a=>a.name!==n);return i.length===r.length?!1:(Wn(e,{...t,customProviders:i}),zn(i),!0)}o(dp,"removeRuntimeCustomProvider");function Qa(e){e!==void 0&&zn(Ct(be(e)))}o(Qa,"registerRuntimeConfiguredCustomProviders");function Ct(e){return Array.isArray(e.customProviders)?structuredClone(e.customProviders):[]}o(Ct,"extractRuntimeCustomProviders");function up(e){return structuredClone(e)}o(up,"cloneCustomProviders");function Nr(e){return e===void 0?Oo():pp(Mt(be(e)))}o(Nr,"listRuntimeMcpServers");function lp(e,n){if(e===void 0)return _o(n);let t=Mt(be(e))[n];return t===void 0?void 0:structuredClone(t)}o(lp,"getRuntimeMcpServer");function cp(e,n,t){if(e===void 0)return Lo(n,t);Bt(n,t);let r=be(e),i={...Mt(r),[n]:structuredClone(t)};return Wn(e,{...r,mcpServers:i}),structuredClone(t)}o(cp,"upsertRuntimeMcpServer");function mp(e,n){if(e===void 0)return jo(n);let t=be(e),r=Mt(t);if(!(n in r))return!1;let i={...r};return delete i[n],Wn(e,{...t,mcpServers:i}),!0}o(mp,"removeRuntimeMcpServer");function Mt(e){return W(e.mcpServers)?structuredClone(e.mcpServers):{}}o(Mt,"extractRuntimeMcpServers");function pp(e){return structuredClone(e)}o(pp,"cloneMcpServers");function fp(e,n,t){let r=e.findIndex(t);return r<0?[...e,structuredClone(n)]:e.map((i,a)=>a===r?structuredClone(n):structuredClone(i))}o(fp,"upsertConfigEntry");function gp(e,n){let t=Array.isArray(e)?e:[];if(n?.provider!==void 0){let r=t.find(i=>W(i)&&i.name===n.provider);return W(r)?{provider:n.provider,models:Array.isArray(r.models)?r.models:[]}:{provider:n.provider,models:[]}}return t.flatMap(r=>!W(r)||typeof r.name!="string"?[]:[{provider:r.name,models:Array.isArray(r.models)?r.models:[]}])}o(gp,"listRuntimeModels");function Aa(e){let n=Rp(e).map(yp),t=rn()?.listCommands().filter(r=>r.metadata?.userInvocable!==!1).map(wp)??[];return[...n,...t].sort((r,i)=>r.name.localeCompare(i.name))}o(Aa,"listRuntimeCommands");function Rp(e){let n=Fo;return typeof n.listRegisteredCommands=="function"?n.listRegisteredCommands(e):xo().getAll()}o(Rp,"listReplCommands");function yp(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(yp,"replCommandToRuntimeCommandInfo");function wp(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(wp,"extensionCommandToRuntimeCommandInfo");function Sn(e){return Array.isArray(e)?e.map(n=>Sn(n)):W(e)?Object.fromEntries(Object.entries(e).map(([n,t])=>[n,hp(n)?"[redacted]":Sn(t)])):e}o(Sn,"redactRuntimeConfig");function hp(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(hp,"isSensitiveConfigKey");function vp(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(vp,"toRuntimeSkillSummary");function Sp(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(Xn)}:{},...e.references!==void 0?{references:e.references.map(Xn)}:{},...e.assets!==void 0?{assets:e.assets.map(Xn)}:{},...e.templates!==void 0?{templates:e.templates.map(Xn)}:{},...e.resources!==void 0?{resources:e.resources.map(Xn)}:{}}}o(Sp,"toRuntimeSkillDescription");function Xn(e){return{name:e.name,path:e.path,relativePath:e.relativePath}}o(Xn,"toRuntimeSkillFileSummary");function In(e){if(!W(e))throw new Error("Invalid runtime daemon response: expected object");return e}o(In,"requireRuntimeRecord");function Ya(e){let n=In(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(Ya,"parseRuntimeIdentity");function kp(e){let n={};return e.provider!==void 0&&ie(n,"provider",e.provider),e.model!==void 0&&ie(n,"model",e.model),e.effort!==void 0&&ie(n,"effort",e.effort),e.thinking!==void 0&&ie(n,"thinking",e.thinking),e.reasoningMode!==void 0&&ie(n,"reasoningMode",e.reasoningMode),e.permissionMode!==void 0&&ie(n,"permissionMode",e.permissionMode),e.executionCwd!==void 0&&ie(n,"executionCwd",e.executionCwd),e.agentMode!==void 0&&ie(n,"agentMode",e.agentMode),e.autoModeEngine!==void 0&&ie(n,"autoModeEngine",e.autoModeEngine),e.autoModeClassifierModel!==void 0&&ie(n,"autoModeClassifierModel",e.autoModeClassifierModel),e.autoModeTimeoutMs!==void 0&&ie(n,"autoModeTimeoutMs",e.autoModeTimeoutMs),n}o(kp,"serializeSessionSettings");function Ip(){return`run_${Date.now().toString(36)}_${Pe().replace(/-/g,"").slice(0,8)}`}o(Ip,"createRunId");function ge(e){return{runId:e.runId,sessionId:e.sessionId,...e.turnId!==void 0?{turnId:e.turnId}:{},phase:e.phase,startedAt:e.startedAt,acceptedAt:e.startedAt,sessionOrder:e.sessionOrder,...e.queuedAt!==void 0?{queuedAt:e.queuedAt}:{},...e.runningAt!==void 0?{runningAt:e.runningAt}:{},...e.runningAt!==void 0?{executionStartedAt:e.runningAt}:{},...e.endedAt!==void 0?{endedAt:e.endedAt}:{},provider:e.provider,mode:e.mode,...e.origin!==void 0?{origin:e.origin}:{},...e.model!==void 0?{model:e.model}:{},...e.reasoning!==void 0?{reasoning:e.reasoning}:{},...e.error!==void 0?{error:e.error}:{},...e.terminal!==void 0?{terminal:e.terminal}:{},...e.continuation!==void 0?{continuation:{...e.continuation,state:bp(e.phase)}}:{}}}o(ge,"statusFromRecord");function bp(e){return e==="queued"?"queued":Ot(e)?"terminal":"delivered"}o(bp,"runtimeContinuationState");function Za(e){return{runId:e.runId,sessionId:e.sessionId,phase:e.phase,...e.error!==void 0?{error:new Error(e.error)}:{}}}o(Za,"resultFromStatus");function Pp(e){return e.length<=Dt?e:[...e].sort(Ur).slice(-Dt)}o(Pp,"recentRunStatuses");function Ep(e){if(e.size<=Dt)return;let n=[...e.values()].filter(t=>Ot(t.phase)).sort((t,r)=>Ur(ge(t),ge(r)));for(let t of n){if(e.size<=Dt)return;e.delete(t.runId)}}o(Ep,"pruneTerminalRuns");function Ur(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(Ur,"compareRunStatusRecency");function Dp(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(Dp,"runMatchesFilter");function Bn(e,n,t,r,i){if(t.terminalEmitted)return;t.phase=r,t.endedAt=new Date().toISOString(),t.terminalEmitted=!0;let a=r==="completed"?"completed":r==="cancelled"?"cancelled":r==="interrupted"?"interrupted":"failed";t.terminal={revision:1,kind:a,code:i?.code??Ap(a),effectOutcome:i?.effectOutcome??(a==="interrupted"?"unknown":"known"),...i?.message!==void 0?{message:i.message}:{}};let u=r==="completed"?"run.completed":r==="cancelled"?"run.cancelled":r==="interrupted"?"run.interrupted":"run.failed";kn(e,n,t,ge(t)),e.emit(u,ge(t),{sessionId:t.sessionId,runId:t.runId,...t.turnId!==void 0?{turnId:t.turnId}:{}})}o(Bn,"markRunTerminal");function kn(e,n,t,r){try{n.saveRunStatus(r)}catch(i){let a=t?.turnId??r.turnId;e.emit("runtime.warning",{message:`Failed to save runtime run status for ${r.runId}: ${se(i).message}`,runId:r.runId,phase:r.phase},{sessionId:r.sessionId,runId:r.runId,...a!==void 0?{turnId:a}:{}})}}o(kn,"saveRunStatusSafely");function Ot(e){return e==="completed"||e==="failed"||e==="cancelled"||e==="interrupted"}o(Ot,"isTerminalRunPhase");function xp(e){return e.type==="workflow_started"?"workflow.started":e.type==="workflow_finished"?"workflow.finished":"workflow.updated"}o(xp,"workflowEventType");function Tp(e){return e==="completed"||e==="failed"||e==="cancelled"}o(Tp,"isFinalWorkflowStatus");function Ap(e){return e==="completed"?"completed":e==="failed"?"run_failed":e==="cancelled"?"cancelled":"interrupted"}o(Ap,"defaultRuntimeTerminalCode");function Ca(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(Ca,"classifyRuntimeRunFailure");function Ma(e,n){if(!n.hadProviderCredential)return se(e);let t=new Error("Provider run failed while using a run-scoped credential.");return t.name="KodaXProviderRunError",t}o(Ma,"normalizeRuntimeRunError");function Cp(e,n,t){if(t.toolName!==void 0&&t.toolName!==n.toolName||t.sessionId!==void 0&&t.sessionId!==n.sessionId)throw nd("Persistent permission scope exceeds the pending request.");let r=e.loadPermissionGrants();if(r.value.some(a=>a.scope.toolName===t.toolName&&a.scope.sessionId===t.sessionId))return;let i={id:`grant_${Pe().replace(/-/g,"").slice(0,12)}`,scope:t,createdAt:new Date().toISOString()};e.savePermissionGrants({revision:r.revision+1,value:[...r.value,i]})}o(Cp,"saveRuntimePermissionGrant");function Oa(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(Oa,"findRuntimePermissionGrant");function Mp(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(Mp,"permissionMatchesFilter");function Op(e){return e===!0?{type:"allow_once"}:{type:"reject",reason:e===!1?"tool execution rejected":e}}o(Op,"decisionToPermissionDecision");function _p(e){return e?.some(n=>n.kind==="dangerous_pattern"&&n.severity==="high"||n.kind==="protected_path"||n.kind==="shell_redirect_outside")?"high":e&&e.length>0?"medium":"low"}o(_p,"autoModeEscalationRisk");var Lp=8;function ed(e){return N.resolve(e.start?.options.context?.executionCwd??e.start?.options.context?.gitRoot??process.cwd())}o(ed,"resolveRuntimeExecutionCwd");function Hr(e){return e.kind==="tool"&&e.name==="auto-mode"&&"getEngine"in e&&typeof e.getEngine=="function"&&"consumeAllowedCall"in e&&typeof e.consumeAllowedCall=="function"}o(Hr,"isRuntimeAutoModeGuardrail");function jp(e){if(!(Ke(e.permissionMode)!=="auto"||e.autoModeEngine===void 0))return e.start?.options.guardrails?.find(Hr)}o(jp,"getRuntimeAutoModeGuardrail");function Wr(e,n=new Set){if(e===null)return"null";if(typeof e=="string")return`string:${e.length}:${e}`;if(typeof e=="boolean")return e?"boolean:true":"boolean:false";if(typeof e>"u")return"undefined";if(typeof e=="bigint")return`bigint:${e.toString()};`;if(typeof e=="number")return Number.isNaN(e)?"number:NaN":Object.is(e,-0)?"number:-0":`number:${String(e)};`;if(typeof e!="object")throw new Error("Tool input must contain data values only.");if(n.has(e))throw new Error("Tool input must not be circular.");let t=Object.getPrototypeOf(e);if(!Array.isArray(e)&&t!==Object.prototype&&t!==null)throw new Error("Tool input must be a plain object.");n.add(e);try{let r=Reflect.ownKeys(e);if(r.some(a=>typeof a=="symbol"))throw new Error("Tool input must not contain symbol properties.");if(Array.isArray(e)){let a=r.filter(u=>u!=="length"&&typeof u=="string").map(u=>{let l=Number(u);if(!Number.isInteger(l)||l<0||l>=e.length||String(l)!==u)throw new Error("Tool input arrays must not contain named properties.");return{index:l,key:u}}).sort((u,l)=>u.index-l.index);return`array:${e.length}:[${a.map(({key:u})=>`${u}:${_a(e,u,n)}`).join("")}]`}return`object:{${r.filter(a=>typeof a=="string").sort().map(a=>`${Wr(a,n)}${_a(e,a,n)}`).join("")}}`}finally{n.delete(e)}}o(Wr,"serializeRuntimeToolInput");function _a(e,n,t){let r=Object.getOwnPropertyDescriptor(e,n);if(!r||!r.enumerable||!("value"in r))throw new Error("Tool input must contain enumerable data properties only.");return Wr(r.value,t)}o(_a,"serializeRuntimeDataProperty");function Tt(e){try{let n=Wr(e.input);return $a("sha256").update(`${e.id}\0${e.name}\0${n}`).digest("hex")}catch{return}}o(Tt,"runtimeAutoModeDecisionKey");function Np(e){let n=new Set;return{...e,beforeTool:o(async(t,r)=>{if(!e.beforeTool)return{action:"block",reason:"Runtime auto-mode guardrail has no beforeTool hook."};let i=await e.beforeTool(t,r);if(i.action==="allow"){let a=qt(t),u=a?.ok?a.call:t,l=Tt(u);l!==void 0&&n.add(l)}return i},"beforeTool"),consumeAllowedCall(t){let r=Tt(t);return r===void 0||!n.has(r)?!1:(n.delete(r),!0)},clearAllowedCalls(){n.clear()}}}o(Np,"createRuntimeOwnedAutoModeGuardrail");function Fp(e){let n=new Set,t,r=o(async()=>{let i=(await e.settingsOwner.read(e.sessionId)).value,a=e.getRecord();a&&(a.permissionMode=i.permissionMode,a.autoModeEngine=i.autoModeEngine,a.autoModeClassifierModel=i.autoModeClassifierModel,a.autoModeTimeoutMs=i.autoModeTimeoutMs);let u=await $p({...e,settings:i});return u&&(t=u),u},"resolveGuardrail");return{kind:"tool",name:"auto-mode",async prepare(){await r()},async beforeTool(i,a){let u=await r();if(!u?.beforeTool)return{action:"allow"};t=u;let l=await u.beforeTool(i,a);if(l.action==="allow"){let m=qt(i),g=m?.ok?m.call:i;u.consumeAllowedCall(g);let s=Tt(g);s!==void 0&&n.add(s)}return l},getEngine(){return t?.getEngine()??e.settingsOwner.peek(e.sessionId)?.value.autoModeEngine??"rules"},consumeAllowedCall(i){let a=Tt(i);return a===void 0||!n.has(a)?!1:(n.delete(a),!0)},clearAllowedCalls(){n.clear(),t?.clearAllowedCalls()}}}o(Fp,"createRuntimeSessionAutoModeGuardrail");async function $p(e){let n=e.settings.autoModeEngine;if(Ke(e.settings.permissionMode)!=="auto"||n!=="llm"&&n!=="rules")return;let t=e.states.get(e.sessionId);t===void 0?(t={engine:n,denials:Ro(),breaker:yo()},e.states.set(e.sessionId,t)):t.engine=n;let r=N.resolve(e.options.context?.executionCwd??e.settings.executionCwd??e.options.context?.gitRoot??process.cwd()),i=N.resolve(e.options.context?.gitRoot??r),a=JSON.stringify([process.platform==="win32"?i.toLowerCase():i,process.platform==="win32"?r.toLowerCase():r,n,e.settings.autoModeClassifierModel??null,e.settings.autoModeTimeoutMs??null]),u=e.cache.get(e.sessionId)??new Map;e.cache.set(e.sessionId,u);let l=u.get(a);if(l?.engine===n)return l.guardrail;l&&u.delete(a);let m,g=await To({askUser:o(async(d,R,c)=>{let f=e.getRecord();if(!f)return"block";let w=f.phase;f.phase==="running"&&(f.phase="waiting_permission");try{let k=await e.permissions.service.request({sessionId:e.sessionId,runId:f.runId,...f.turnId!==void 0?{turnId:f.turnId}:{},toolCallId:d.id,toolName:d.name,reason:R.slice(0,512),risk:_p(c),inputPreview:Un(d.input),executionCwd:r});return k.type==="allow_once"||k.type==="allow_always"?"allow":"block"}finally{f.phase==="waiting_permission"&&(f.phase=w==="queued"?"running":w)}},"askUser"),projectRoot:i,executionCwd:r,getCurrentProviderName:o(()=>e.getRecord()?.provider??e.provider,"getCurrentProviderName"),getCurrentModel:o(()=>e.getRecord()?.model??e.model,"getCurrentModel"),getCurrentPermissionMode:o(()=>"auto","getCurrentPermissionMode"),autoModeSettings:{engine:n,...e.settings.autoModeClassifierModel!==void 0?{classifierModel:e.settings.autoModeClassifierModel}:{},...e.settings.autoModeTimeoutMs!==void 0?{timeoutMs:e.settings.autoModeTimeoutMs}:{}},sharedState:t,extraCollectors:[Do],onEngineChange:o(d=>{m&&(m.engine=d),e.onEngineChange(d)},"onEngineChange")}),s=Np(g.getGuardrail());for(m={projectRoot:i,executionCwd:r,engine:s.getEngine(),...e.settings.autoModeClassifierModel!==void 0?{classifierModel:e.settings.autoModeClassifierModel}:{},...e.settings.autoModeTimeoutMs!==void 0?{timeoutMs:e.settings.autoModeTimeoutMs}:{},guardrail:s},u.set(a,m);u.size>Lp;){let d=u.keys().next().value;if(d===void 0||d===a)break;u.get(d)?.guardrail.clearAllowedCalls(),u.delete(d)}return s}o($p,"createRuntimeAutoModeGuardrail");function La(e,n,t){if(Ka.has(n))return!0;let r=Ke(e.permissionMode);if(r===void 0)return;let i=e.start?.options.context?.gitRoot??e.start?.options.context?.executionCwd,a=i===void 0?void 0:N.resolve(i),u=ed(e);if(r==="plan"){let l=Eo(n,t,a,u);return l===null?!0:`${l} Finish the plan before switching to a writable permission mode.`}if(e.permissionBroker!=="client"){if(n==="bash"){let l=typeof t.command=="string"?t.command:"";if(Io(l))return!0;if(a&&Po(l,a,u))return}if(a&&wo.has(n)){let l=typeof t.path=="string"?t.path:void 0;if(l&&bo(no(l,u),a))return}return ho(r).has(n)?void 0:!0}}o(La,"resolveRuntimePermissionPolicy");function ja(e){return e?e.type==="allow_once"||e.type==="allow_always"?!0:e.reason??!1:!1}o(ja,"decisionToToolDecision");var qp=8192,At=16384,Na=16,Hp={command:2048,description:1024,path:1024,paths:1024,cwd:1024,url:1024,preview:2048},Kp=/(?:api[_-]?key|authorization|cookie|credential|password|secret|token)/i;function Fa(e){return e.replace(/-----BEGIN ([A-Z0-9][A-Z0-9 _-]{0,63})-----[\s\S]*?(?:-----END \1-----|$)/gi,"[REDACTED_PEM]").replace(/^([ \t]*(?:api[_-]?key|access[_-]?key|access[_-]?token|auth(?:orization)?[_-]?token|client[_-]?secret|cookie|credential|password|private[_-]?key|refresh[_-]?token|secret|token)\s*:\s*[>|][-+0-9]*[ \t]*\r?\n)(?:(?:[ \t]+[^\r\n]*(?:\r?\n|$)))+/gim,`$1 [REDACTED]
71
+ `).replace(/\b((?=[a-z0-9_]*(?:api[_-]?key|access[_-]?key|access[_-]?token|auth[_-]?token|client[_-]?secret|password|private[_-]?key|refresh[_-]?token|secret|token))[a-z_][a-z0-9_]*)\s*=\s*(?:"[^"]*"|'[^']*'|[^\s;&|]+)/gi,"$1=[REDACTED]").replace(/((?:["']?(?:api[_-]?key|access[_-]?key|access[_-]?token|auth(?:orization)?[_-]?token|client[_-]?secret|cookie|credential|password|private[_-]?key|refresh[_-]?token|secret|token)["']?)\s*:\s*)(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|[^\s,;}\]]+)/gi,'$1"[REDACTED]"').replace(/(--(?:(?:api|access|auth|id|refresh)[_-]?(?:key|token)|authorization|client[_-]?secret|password|private[_-]?key|secret|token))(?:=|\s+)(?:"[^"]*"|'[^']*'|[^\s;&|]+)/gi,"$1=[REDACTED]").replace(/\b((?:proxy-)?authorization|cookie|x-api-key)(\s*:\s*)(?:bearer\s+|basic\s+)?[^\s"';&|]+/gi,"$1$2[REDACTED]").replace(/(https?:\/\/)[^\s/:@]+:[^\s/@]+@/gi,"$1[REDACTED]@")}o(Fa,"redactPermissionPreviewString");function Un(e){let n={},t=!0;for(let[i,a]of Object.entries(Hp)){let u=Object.getOwnPropertyDescriptor(e,i);if(!u||!u.enumerable||!("value"in u))continue;if(Kp.test(i)){n[i]="[REDACTED]";continue}let l=u.value;if(typeof l=="string"){let m=l.slice(0,At),g=Fa(m);n[i]=g.length<=a?g:`${g.slice(0,Math.max(0,a-1))}\u2026`,t||=l.length>m.length||g.length>a;continue}if(i==="paths"&&Array.isArray(l)){let m=[];for(let g of l.slice(0,Na)){if(typeof g!="string"){t=!0;continue}let s=g.slice(0,At),d=Fa(s);m.push(d.slice(0,a)),t||=g.length>s.length||d.length>a}t||=l.length>Na,n[i]=m;continue}if(typeof l=="boolean"||typeof l=="number"||typeof l=="bigint"){n[i]=typeof l=="bigint"?l.toString():l;continue}t=!0}t&&(n.__truncated=!0);let r=JSON.stringify(n);return r.length<=qp?r:'{"__truncated":true,"__unavailable":"Tool input could not be serialized safely"}'}o(Un,"previewInput");function Xp(e){if(e.length>At)return Un({preview:e.slice(0,At)});try{let n=JSON.parse(e);return Un(W(n)?n:{value:n})}catch{return Un({preview:e})}}o(Xp,"normalizePermissionInputPreview");function se(e){return e instanceof Error?e:new Error(String(e))}o(se,"normalizeError");function Jr(e,n){return Object.assign(new Error(e),{code:"conflict",currentRevision:n})}o(Jr,"createRuntimeConflictError");function Bp(e){return Object.assign(new Error(e),{code:"resync_required"})}o(Bp,"createRuntimeResyncError");function nd(e){return Object.assign(new Error(e),{code:"invalid_input"})}o(nd,"createRuntimeInvalidInputError");function Up(e){return Object.assign(new Error(e),{code:"credential_unavailable"})}o(Up,"createRuntimeCredentialUnavailableError");function Wp(){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(Wp,"createUnsupportedCredentialService");function Jp(){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(Jp,"createUnsupportedHostToolService");function Fr(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(Fr,"assertSessionMutationAllowed");function zp(e,n){if(!("ok"in n))throw new Error(`Session is running and cannot be deleted: ${e}`)}o(zp,"assertDeleteSucceeded");function Vp(e){return structuredClone(e)}o(Vp,"cloneMessage");export{tr as a,je as b,rr as c,an as d,Je as e,wt as f,Rs as g,ys as h,Wu as i,Ju as j,Ce as k,bR as l,PR as m,ER as n,DR as o,xR as p,em as q,Xa as r};