@kodax-ai/kodax 0.7.73 → 0.7.74
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +134 -0
- package/README.md +26 -6
- package/README_CN.md +23 -5
- package/config-templates/config.example.jsonc +7 -0
- package/dist/chunks/{agent-T6PGT6AU.js → agent-2ABIG5NW.js} +1 -1
- package/dist/chunks/argument-completer-C45DEO34.js +2 -0
- package/dist/chunks/chunk-5GH3SVI3.js +74 -0
- package/dist/chunks/{chunk-6JTWXGVU.js → chunk-7W6KYJU2.js} +225 -225
- package/dist/chunks/chunk-C7TZAT3S.js +369 -0
- package/dist/chunks/chunk-KPGVY6PF.js +321 -0
- package/dist/chunks/{chunk-6RI2RBTF.js → chunk-MVCAFD6M.js} +1 -1
- package/dist/chunks/{chunk-BUPJGG3C.js → chunk-PP53SIIL.js} +1 -1
- package/dist/chunks/chunk-QH56WEHK.js +2 -0
- package/dist/chunks/chunk-UJS7JAO6.js +770 -0
- package/dist/chunks/{chunk-M7FXNPWV.js → chunk-VK5QTHS6.js} +6 -6
- package/dist/chunks/chunk-VPURXE2F.js +427 -0
- package/dist/chunks/chunk-XM724XAA.js +329 -0
- package/dist/chunks/{chunk-MLEAQTCD.js → chunk-XMP66YWG.js} +11 -4
- package/dist/chunks/{compaction-config-IHJBP4GO.js → compaction-config-QYCDOW3Q.js} +1 -1
- package/dist/chunks/{construction-bootstrap-EGRUHKLP.js → construction-bootstrap-BKNPJI7O.js} +1 -1
- package/dist/chunks/dist-6EK4H7TP.js +2 -0
- package/dist/chunks/host-KS4TJKWQ.js +2 -0
- package/dist/chunks/{run-manager-AY7RQOWM.js → run-manager-L7MKGQNX.js} +1 -1
- package/dist/chunks/{utils-2GAE4XIM.js → utils-GTJLL4GT.js} +1 -1
- package/dist/index.d.ts +12 -11
- package/dist/index.js +5 -5
- package/dist/kodax_cli.js +1295 -1253
- package/dist/runtime-worker.js +1208 -1166
- package/dist/sdk-a2a.d.ts +9 -8
- package/dist/sdk-a2a.js +1 -1
- package/dist/sdk-agent.d.ts +107 -59
- package/dist/sdk-agent.js +1 -1
- package/dist/sdk-coding.d.ts +32 -16
- package/dist/sdk-coding.js +1 -1
- package/dist/sdk-mcp.js +1 -1
- package/dist/sdk-media.js +1 -1
- package/dist/sdk-repl.d.ts +27 -20
- package/dist/sdk-repl.js +2 -2
- package/dist/sdk-runtime.d.ts +151 -14
- package/dist/sdk-runtime.js +1 -1
- package/dist/sdk-session.d.ts +4 -4
- package/dist/sdk-session.js +1 -1
- package/dist/sdk-skills.js +1 -1
- package/dist/semantic-worker.js +16 -14
- package/dist/types-chunks/{bash-prefix-extractor.d-bApf5nGw.d.ts → bash-prefix-extractor.d-r1beOESM.d.ts} +48 -12
- package/dist/types-chunks/{capsule.d-CGWltwno.d.ts → capsule.d-zeqV4IQX.d.ts} +10 -2
- package/dist/types-chunks/{commands.d-CEHGwRok.d.ts → commands.d-DUxnK2TU.d.ts} +10 -7
- package/dist/types-chunks/{guardrail.d-CC4vAQl7.d.ts → guardrail.d-CWYD1bdL.d.ts} +1 -1
- package/dist/types-chunks/{guardrail.d-CXIPlWP3.d.ts → guardrail.d-qjuKJZ31.d.ts} +72 -11
- package/dist/types-chunks/history-retrieval.d-BKTJIrVd.d.ts +57 -0
- package/dist/types-chunks/{public-api.d-FBmX0kxo.d.ts → public-api.d-CX4B11qY.d.ts} +17 -4
- package/dist/types-chunks/{run-manager.d-DUNnJcpE.d.ts → run-manager.d-B9fEIjZk.d.ts} +1 -1
- package/dist/types-chunks/{sdk-session-XqacVOs8.d.ts → sdk-session-B0fhAOPa.d.ts} +2 -2
- package/dist/types-chunks/{types.d-DKr6TCXL.d.ts → types.d-Bm_y6YuM.d.ts} +2 -2
- package/dist/types-chunks/{types.d-DgciGHoG.d.ts → types.d-DEctY20M.d.ts} +9 -2
- package/dist/types-chunks/{types.d-BnPhGmar.d.ts → types.d-sRLugmjy.d.ts} +61 -14
- package/dist/types-chunks/{utils.d-BPYX7-KN.d.ts → utils.d-D0wPxz8y.d.ts} +5 -5
- package/docs/SDK_EMBEDDER_GUIDE.md +1956 -1684
- package/package.json +8 -1
- package/dist/chunks/argument-completer-QGMWA2C3.js +0 -2
- package/dist/chunks/chunk-AGDDM5AW.js +0 -329
- package/dist/chunks/chunk-EAD4SF3Z.js +0 -413
- package/dist/chunks/chunk-HVCNAZ52.js +0 -365
- package/dist/chunks/chunk-OG6DRNKV.js +0 -755
- package/dist/chunks/chunk-PFH53O4M.js +0 -2
- package/dist/chunks/chunk-V4F6IYNK.js +0 -73
- package/dist/chunks/chunk-WQ6PWGK5.js +0 -320
- package/dist/chunks/dist-5N3I2RTW.js +0 -2
- package/dist/chunks/host-MECITNE3.js +0 -2
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
+
import{Cb as co,Eb as lo,Fb as mo,Nb as po,Ob as fo,Pb as go,Qb as Ro,Rb as dr,Wa as uo,fc as yo,gc as wo}from"./chunk-KPGVY6PF.js";import{C as oo,D as so,Fa as ao,j as Qi,k as Yi,m as Se,q as to,v as ro,x as io}from"./chunk-7W6KYJU2.js";import{K as ar,M as Zi,T as eo,U as no,m as sr}from"./chunk-XMP66YWG.js";import{Z as st,e as Wi,ga as ir,ma as or,pa as Gi,ra as Ji,sa as Vi,va as at,w as zi}from"./chunk-VPURXE2F.js";import{Bc as mn,Hd as Bi,Jd as Ui,Rc as rr,fb as jn,qc as Xi,vb as tr}from"./chunk-C7TZAT3S.js";import{a as Vt,c as Ge,wa as Pi,ya as rt}from"./chunk-XXQLPTAN.js";import{Ec as nr,La as ot,Ma as Ci,Oa as Ln,Ua as _i,Uc as ji,_b as Zt,kd as Fi,qe as $i,ue as Hi,ve as Ki,wc as er,zd as qi}from"./chunk-UJS7JAO6.js";import{F as Oi,V as Ni,X as Yt,a as Ti,b as oe,e as Ai,ea as Li,g as it,h as Mi}from"./chunk-GAFFYJU3.js";import{F as Di,w as Ei,y as Qt,z as xi}from"./chunk-PP53SIIL.js";import{a as o}from"./chunk-ONUPGMER.js";import{createHash as Ed,randomUUID as ge}from"node:crypto";import*as N from"node:fs";import xd from"node:os";import F from"node:path";import{createHash as Jd}from"node:crypto";import Fn from"node:path";var Vd=["path","file_path"],Qd=new Set(["read","write","edit","multi_edit","insert_after_anchor"]);function mr(e){let n=e.platform??dt();if(e.toolName==="bash")return Yd(e,n);let t=Qd.has(e.toolName)?Vd.map(a=>e.toolInput[a]).find(a=>typeof a=="string"&&a.length>0):void 0;if(t!==void 0)return eu(e.toolName,t,e.executionCwd,n);let r=fr(e.executionCwd,e.executionCwd,n),s=Je(ru(e.toolInput));return{version:1,kind:"exact-call",toolName:e.toolName,cwd:r,inputFingerprint:s,fingerprint:Je({version:1,kind:"exact-call",toolName:e.toolName,cwd:r,inputFingerprint:s})}}o(mr,"createRuntimePermissionMatcher");function ho(e,n){if(e.toolName!==n.toolName)return!1;let t=mr(n);return e.kind===t.kind&&e.fingerprint===t.fingerprint}o(ho,"runtimePermissionMatcherMatches");function So(e){if(!iu(e)||e.version!==1||typeof e.toolName!="string"||typeof e.fingerprint!="string")throw new Error("invalid Runtime permission matcher");if(e.kind==="exact-command"){if(e.shell!=="cmd"&&e.shell!=="posix"||!cr(e.commandFingerprint)||typeof e.cwd!="string"||typeof e.background!="boolean"||e.executable!==void 0&&typeof e.executable!="string"||e.argvFingerprint!==void 0&&!cr(e.argvFingerprint))throw new Error("invalid Runtime command permission matcher");let n={version:1,kind:"exact-command",toolName:e.toolName,fingerprint:e.fingerprint,shell:e.shell,commandFingerprint:e.commandFingerprint,cwd:e.cwd,background:e.background,...e.executable!==void 0?{executable:e.executable}:{},...e.argvFingerprint!==void 0?{argvFingerprint:e.argvFingerprint}:{}};return ur(n,{version:1,kind:"exact-command",toolName:n.toolName,shell:n.shell,commandFingerprint:n.commandFingerprint,cwd:n.cwd,...n.executable!==void 0?{executable:n.executable}:{},...n.argvFingerprint!==void 0?{argvFingerprint:n.argvFingerprint}:{},background:n.background}),n}if(e.kind==="exact-path"&&typeof e.path=="string"){let n={version:1,kind:"exact-path",toolName:e.toolName,fingerprint:e.fingerprint,path:e.path};return ur(n,{version:1,kind:"exact-path",toolName:n.toolName,path:n.path}),n}if(e.kind==="exact-call"&&typeof e.cwd=="string"&&cr(e.inputFingerprint)){let n={version:1,kind:"exact-call",toolName:e.toolName,fingerprint:e.fingerprint,cwd:e.cwd,inputFingerprint:e.inputFingerprint};return ur(n,{version:1,kind:"exact-call",toolName:n.toolName,cwd:n.cwd,inputFingerprint:n.inputFingerprint}),n}throw new Error("invalid Runtime permission matcher")}o(So,"parseRuntimePermissionMatcher");function ur(e,n){if(Je(n)!==e.fingerprint)throw new Error("Runtime permission matcher fingerprint does not match its scope.")}o(ur,"assertMatcherFingerprint");function pr(e,n){return n==="win32"?/%[^%\r\n]+%|![^!\r\n]+!|\$(?:[A-Za-z_][A-Za-z0-9_]*|\{[^}\r\n]+\}|\([^)]*\)|[?^$])|%(?:\*|[0-9]|~[A-Za-z]*[0-9])|%%[A-Za-z]/i.test(e):/\$(?:[A-Za-z_][A-Za-z0-9_]*|\{[^}\r\n]+\}|\([^)]*\)|[0-9@*#?$!_-])|`/.test(e)}o(pr,"hasDynamicShellExpansion");function dt(){return process.platform==="win32"?"win32":"posix"}o(dt,"runtimePermissionHostPlatform");function Yd(e,n){let t=e.toolInput.command,r=typeof t=="string"?nu(t):"",s=fr(e.executionCwd,e.executionCwd,n),a=e.toolInput.run_in_background===!0,d=tu(r,n),u=Zd(d?.[0],n),p=d&&d.length>1?Je(d.slice(1)):void 0,f=n==="win32"?"cmd":"posix",v=Je(r),i={version:1,kind:"exact-command",toolName:e.toolName,shell:f,commandFingerprint:v,cwd:s,...u!==void 0?{executable:u}:{},...p!==void 0?{argvFingerprint:p}:{},background:a};return{...i,fingerprint:Je(i)}}o(Yd,"createExactCommandMatcher");function Zd(e,n){if(e===void 0||e.includes("=")||e.length>512)return;let t=n==="win32"?Fn.win32.basename(e.replaceAll("/","\\")):Fn.posix.basename(e);return t.length>0&&t.length<=128?t:void 0}o(Zd,"safeExecutableMetadata");function eu(e,n,t,r){let s=fr(n,t,r),a={version:1,kind:"exact-path",toolName:e,path:s};return{...a,fingerprint:Je(a)}}o(eu,"createExactPathMatcher");function nu(e){return e.replace(/\r\n?/g,`
|
|
3
|
+
`).trim()}o(nu,"normalizeCommand");function fr(e,n,t){if(t==="win32"){let r=Fn.win32.resolve(n.replaceAll("/","\\"));return Fn.win32.resolve(r,e.replaceAll("/","\\")).toLowerCase()}return Fn.posix.resolve(n,e)}o(fr,"normalizePermissionPath");function tu(e,n){if(e.length===0||e.includes("\0")||e.includes(`
|
|
4
|
+
`))return;let t=[],r="",s;for(let a=0;a<e.length;a+=1){let d=e[a]??"";if(n==="posix"&&d==="'"&&s!=="double"){s=s==="single"?void 0:"single";continue}if(d==='"'&&s!=="single"){s=s==="double"?void 0:"double";continue}if(d===(n==="win32"?"^":"\\")&&s!=="single"&&a+1<e.length){r+=e[a+1]??"",a+=1;continue}if(/\s/.test(d)&&s===void 0){r.length>0&&t.push(r),r="";continue}r+=d}if(s===void 0)return r.length>0&&t.push(r),t.length>0?t:void 0}o(tu,"tokenizeShellCommand");function ru(e){return Object.fromEntries(Object.entries(e).sort(([n],[t])=>n.localeCompare(t)))}o(ru,"normalizeGenericInput");function Je(e){return Jd("sha256").update(lr(e)).digest("hex")}o(Je,"stableFingerprint");function lr(e){if(e===null||typeof e!="object")return JSON.stringify(e)??"undefined";if(Array.isArray(e))return`[${e.map(lr).join(",")}]`;let n=e;return`{${Object.keys(n).sort().map(t=>`${JSON.stringify(t)}:${lr(n[t])}`).join(",")}}`}o(lr,"stableSerialize");function cr(e){return typeof e=="string"&&/^[a-f0-9]{64}$/.test(e)}o(cr,"isSha256");function iu(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}o(iu,"isRecord");import{createHash as ou}from"node:crypto";import Pe from"node:fs";import be from"node:path";function pn(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}o(pn,"isRecord");function vo(e){return pn(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"&&pn(e.capabilities)&&pn(e.effects):!1}o(vo,"isRegistration");function su(e){return pn(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"&&pn(e.registration)&&typeof e.idempotencyKey=="string"&&typeof e.dispatchAttempt=="number"&&typeof e.createdAt=="string"&&typeof e.updatedAt=="string":!1}o(su,"isTask");function au(e){return pn(e)?typeof e.taskId=="string"&&Number.isSafeInteger(e.seq)&&typeof e.timestamp=="string"&&typeof e.type=="string":!1}o(au,"isEvent");function ko(e){try{return JSON.parse(Pe.readFileSync(e,"utf8"))}catch(n){let t=n instanceof Error?n.message:String(n);throw new Error(`Failed to parse Runtime agent store file ${e}: ${t}`)}}o(ko,"parseJson");function Io(e,n){if(!Pe.existsSync(e))return[];let t=ko(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(Io,"readList");function gr(e,n){Pe.mkdirSync(be.dirname(e),{recursive:!0});let t=`${e}.${process.pid}.tmp`;Pe.writeFileSync(t,`${JSON.stringify(n,null,2)}
|
|
5
|
+
`,{encoding:"utf8",mode:384}),Pe.renameSync(t,e)}o(gr,"writeJsonAtomic");function ut(e,n){let t=ou("sha256").update(n).digest("hex");return be.join(e,t)}o(ut,"taskDirectory");function du(e,n){if(!Pe.existsSync(e))return[];let t=Pe.readFileSync(e,"utf8").trim();if(!t)return[];let r=0;return t.split(/\r?\n/).map((s,a)=>{let d;try{d=JSON.parse(s)}catch(u){let p=u instanceof Error?u.message:String(u);throw new Error(`Invalid Runtime agent event at ${e}:${a+1}: ${p}`)}if(!au(d))throw new Error(`Invalid Runtime agent event shape at ${e}:${a+1}`);if(d.taskId!==n)throw new Error(`Runtime agent event taskId does not match its ledger at ${e}:${a+1}`);if(d.seq<=r)throw new Error(`Runtime agent events require a strictly increasing positive sequence at ${e}:${a+1}`);return r=d.seq,d})}o(du,"readEvents");function bo(e){let n=be.resolve(e),t=be.join(n,"registrations.json"),r=be.join(n,"task-registration-snapshots.json"),s=be.join(n,"tasks");return{async loadRegistrations(){return Io(t,vo)},async saveRegistrations(a){gr(t,a)},async loadTaskRegistrationSnapshots(){return Io(r,vo)},async saveTaskRegistrationSnapshots(a){gr(r,a)},async loadTasks(){if(!Pe.existsSync(s))return[];let a=[];for(let u of Pe.readdirSync(s,{withFileTypes:!0})){if(!u.isDirectory())continue;let p=be.join(s,u.name,"snapshot.json");if(!Pe.existsSync(p))continue;let f=ko(p);if(!su(f))throw new Error(`Invalid Runtime agent task shape: ${p}`);a.push({directoryName:u.name,file:p,task:f})}let d=new Set;for(let{task:u}of a){if(d.has(u.taskId))throw new Error(`Duplicate Runtime agent taskId: ${u.taskId}`);d.add(u.taskId)}for(let{directoryName:u,file:p,task:f}of a){let v=be.basename(ut(s,f.taskId));if(u!==v)throw new Error(`Runtime agent task directory does not match taskId hash: ${p}`)}return a.map(({task:u})=>u)},async saveTask(a){gr(be.join(ut(s,a.taskId),"snapshot.json"),a)},async loadEvents(a){return du(be.join(ut(s,a),"events.jsonl"),a)},async appendEvent(a){let d=be.join(ut(s,a.taskId),"events.jsonl");Pe.mkdirSync(be.dirname(d),{recursive:!0}),Pe.appendFileSync(d,`${JSON.stringify(a)}
|
|
6
|
+
`,{encoding:"utf8",mode:384})}}}o(bo,"createRuntimeAgentExecutorPlaneStore");import{createHash as Lo,randomUUID as ct}from"node:crypto";import fn from"node:fs";import{mkdir as jo,readFile as Fo}from"node:fs/promises";import ne from"node:path";var qo=["read","grep","glob"],$o=["write","edit","multi_edit","insert_after_anchor"],Ho=["mcp_search","mcp_describe","mcp_call","mcp_read_resource","mcp_get_prompt"],uu=["list_dispatchable_agents","spawn_agent","send_message","followup_task","wait_agent","interrupt_agent","list_agents","agent_output"],cu=new Set([...qo,...$o]),lu=new Set([".ssh",".aws",".azure",".gnupg",".kodax",".agents"]),mu=new Set([".env",".npmrc",".pypirc","credentials","id_rsa","id_ed25519"]);function yr(e){return Array.isArray(e)?e.map(yr):e===null||typeof e!="object"?e:Object.fromEntries(Object.entries(e).sort(([n],[t])=>n.localeCompare(t)).map(([n,t])=>[n,yr(t)]))}o(yr,"canonicalValue");function Ve(e){return Lo("sha256").update(JSON.stringify(yr(e))).digest("hex")}o(Ve,"stableHash");function Ko(e){let n=Lo("sha256");for(let t of e)n.update(t);return n.digest("hex")}o(Ko,"hashParts");function lt(e,n){let t=ne.relative(ne.resolve(e),ne.resolve(n));return t===""||!t.startsWith("..")&&!ne.isAbsolute(t)}o(lt,"isInside");function wr(e){if(!fn.existsSync(e))return 0;let n=0;for(let t of fn.readdirSync(e,{withFileTypes:!0})){let r=ne.join(e,t.name);t.isSymbolicLink()||(t.isDirectory()?n+=wr(r):t.isFile()&&(n+=fn.statSync(r).size))}return n}o(wr,"directoryBytes");function Po(e){if(e!==void 0){if(!Number.isSafeInteger(e)||e<=0)throw new Error("Runtime workspace byte limit must be positive.");return e}}o(Po,"validateWorkspaceByteLimit");function Rr(e){if(e.mode==="managed")return{mode:"managed"};if(!ne.isAbsolute(e.root))throw new Error("Fixed Runtime workspace root must be absolute.");return{mode:"fixed",root:ne.resolve(e.root)}}o(Rr,"normalizedWorkspace");function hr(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(s=>{if(typeof s!="string"||s.trim().length===0||s.includes("*"))throw new Error(`${n} must contain exact names without wildcards.`);return s.trim()});if(new Set(r).size!==r.length)throw new Error(`${n} contains duplicates.`);return r.sort()}o(hr,"exactList");function Eo(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,hr(r,`${n}.${t}`,!1)]}))}o(Eo,"exactMap");function xo(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:hr(n.origins,"Runtime toolPolicy.network.origins").map(a=>{let d=new URL(a);if(!["http:","https:"].includes(d.protocol)||d.origin!==a)throw new Error("Runtime network authority must be an exact HTTP(S) origin.");return d.origin})},r=Eo(e.skillScripts,"Runtime toolPolicy.skillScripts"),s=Object.values(r).reduce((a,d)=>a+d.length,0);if(e.process==="deny"!=(s===0))throw new Error("Runtime isolated process authority and skillScripts must be enabled together.");return{workspace:e.workspace,process:e.process,network:t,tools:hr(e.tools,"Runtime toolPolicy.tools"),mcp:Eo(e.mcp,"Runtime toolPolicy.mcp"),skillScripts:r,subagents:e.subagents}}o(xo,"validatedToolPolicy");function pu(e){return e==="project"?"workspace":e}o(pu,"skillSource");function fu(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(fu,"skillFiles");async function gu(e){let n=[e.name,e.rawContent];for(let t of fu(e))n.push(t.relativePath,await Fo(t.path));return Ko(n)}o(gu,"skillRevision");var Sr=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 Xo(e){let n=e.workspace.mode==="fixed"?e.workspace.root:void 0,t=Oi(n),r=t.userPaths.filter(f=>ne.basename(ne.dirname(f))===".agents"),s=new Ni(n,{projectPaths:e.workspace.mode==="managed"?[]:t.projectPaths,userPaths:[ne.join(e.configHome,"skills"),...r],pluginPaths:t.pluginPaths,builtinPath:t.builtinPath});await s.discover();let a=s.list(),u=e.selection===void 0||e.selection.includes("*")?a.filter(f=>f.source!=="project"&&!f.disableModelInvocation):e.selection.map(f=>{let v=s.get(f);if(!v)throw new Error(`Markdown Agent requires unknown Skill "${f}".`);if(v.disableModelInvocation)throw new Error(`Skill "${f}" disables model invocation.`);return v}),p=[];for(let f of u.sort((v,i)=>v.name.localeCompare(i.name))){let v=await gu(await s.loadFull(f.name));p.push({name:f.name,source:pu(f.source),revision:v})}return{registry:new Sr(s,u),refs:p,revision:Ve(p)}}o(Xo,"resolveSkills");function Ru(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 s=new Set(t.network.mode==="allowlist"?t.network.origins:[]);if(n.networkOrigins.some(a=>!s.has(new URL(a).origin)))throw new Error(`Remote tool "${e}" requires a network origin outside toolPolicy.`)}o(Ru,"validateRemoteContract");function Do(e){let n=new Set;e.policy.workspace!=="none"&&qo.forEach(a=>n.add(a)),e.policy.workspace==="write"&&$o.forEach(a=>n.add(a)),e.hasSkills&&n.add("skill"),e.hasSkillScripts&&n.add("run_skill_script"),Object.keys(e.policy.mcp).length>0&&Ho.forEach(a=>n.add(a)),e.policy.subagents==="inherit"&&uu.forEach(a=>n.add(a));let t=new Map(rr().map(a=>[a.name,a])),r=new Map;for(let a of e.policy.tools){let d=t.get(a)?.remoteContract;if(!d)throw new Error(`Tool "${a}" has no Runtime remote contract.`);Ru(a,d,e.policy),r.set(a,d),n.add(a)}let s=new Map;for(let a of n){let d=t.get(a);if(!d)throw new Error(`Runtime tool is unavailable: ${a}.`);if(!r.has(a)&&d.source.kind!=="builtin")throw new Error(`Native Runtime tool "${a}" is shadowed by a non-builtin registration.`);s.set(a,d.registrationId)}if(e.declared!==void 0){let a=e.declared.filter(u=>!n.has(u));if(a.length>0)throw new Error(`Markdown Agent tools are denied by remote policy: ${a.join(", ")}.`);let d=[...new Set(e.declared)].sort();return{tools:d,contracts:r,registrations:new Map(d.map(u=>[u,s.get(u)]))}}return{tools:[...n].sort(),contracts:r,registrations:s}}o(Do,"resolveToolSurface");function To(e,n){return e.length===0?`## Available Skills
|
|
7
|
+
|
|
8
|
+
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(`
|
|
9
|
+
`)}o(To,"skillsPrompt");function Ao(e,n){let r=ne.relative(n,e).split(ne.sep).map(s=>s.toLowerCase());return r.some(s=>lu.has(s))||r.some(s=>mu.has(s)||s.startsWith(".env."))}o(Ao,"sensitivePath");function yu(e){let n=e;for(;!fn.existsSync(n);){let t=ne.dirname(n);if(t===n)throw new Error("Tool path has no existing parent.");n=t}return n}o(yu,"nearestExistingPath");function wu(e,n){let t=fn.realpathSync(e),r=yu(n),s=fn.realpathSync(r);if(!lt(t,s))throw new Error("Tool path escapes the bound workspace through a link.");let a=ne.resolve(s,ne.relative(r,n));if(!lt(t,a))throw new Error("Tool path escapes the bound workspace through a link.");return{root:t,candidate:a}}o(wu,"resolveRealToolPath");function qn(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=ne.resolve(e,n);if(!lt(e,t))throw new Error("Tool path escapes the bound workspace.");let r=wu(e,t);if(Ao(t,e)||Ao(r.candidate,r.root))throw new Error("Secret-bearing paths are unavailable to remote Agents.");return t}o(qn,"resolveToolPath");function Mo(){return{beforeToolExecute:o(async()=>!0,"beforeToolExecute")}}o(Mo,"remoteRunEvents");function hu(e,n,t){if(!Ho.includes(e))return;if(e==="mcp_search"){let f=n.server;if(typeof f!="string"||t.mcp[f]===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 s=/^mcp:([^:]+):(tool|resource|prompt):(.+)$/.exec(r);if(!s)throw new Error("MCP capability id is invalid.");let[,a,d,u]=s,p=t.mcp[a??""]??[];if(d==="tool"&&!p.includes(u??""))throw new Error("MCP tool is not admitted by the remote policy.");if(d!=="tool"&&!p.includes(u??""))throw new Error("MCP capability is not admitted by the remote policy.")}o(hu,"authorizeMcp");function Su(e){return{async resolveReadablePath(n){return qn(e,n)??e},async stageOutput(n){let t=ct(),r=ne.basename(n).replace(/[^A-Za-z0-9._-]/g,"_")||"output",s=ne.join(e,".kodax-a2a-staging",`${t}-${r}`);return await jo(ne.dirname(s),{recursive:!0}),{stagingId:t,path:qn(e,s)??s}}}}o(Su,"workspaceBroker");function Co(e,n){return{kind:"tool",name:`runtime-remote-policy:${e.bindingId}`,async beforeTool(t,r){try{if(e.workspaceByteLimit!==void 0&&wr(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(rr().find(d=>d.name===t.name)?.registrationId!==e.toolRegistrations.get(t.name))throw new Error("Tool registration changed after the Runtime binding was prepared.");if(cu.has(t.name)){let d=(t.name==="grep"||t.name==="glob","path");qn(n,t.input[d])}hu(t.name,t.input,e.toolPolicy);let a=e.remoteContracts.get(t.name);if(a){let d=await a.authorizeCall(t.input,{workspaceAccess:e.toolPolicy.workspace,allowedNetworkOrigins:e.toolPolicy.network.mode==="allowlist"?e.toolPolicy.network.origins:[],workspace:Su(n),signal:r.abortSignal??new AbortController().signal});if(!d.allowed)throw new Error(d.reason);return{action:"rewrite",payload:{...t,input:d.input}}}return{action:"allow"}}catch(s){return{action:"block",reason:s instanceof Error?s.message:String(s)}}},async afterTool(){return e.workspaceByteLimit!==void 0&&wr(n)>e.workspaceByteLimit?{action:"block",reason:"Remote workspace byte quota exceeded."}:{action:"allow"}}}}o(Co,"createToolGuardrail");async function _o(e,n,t){let r=await e.sessions.load(t),s=r.workspaceRoot??r.gitRoot;if(!s)throw new Error("Remote Runtime session has no bound workspace.");if(n.workspace.mode==="fixed"&&ne.resolve(s)!==n.workspace.root)throw new Error("Runtime session workspace does not match the fixed binding.");if(n.workspace.mode==="managed"&&!lt(e.managedWorkspaceRoot,s))throw new Error("Runtime session workspace is outside the managed A2A root.");return ne.resolve(s)}o(_o,"requiredWorkspaceRoot");async function Oo(e,n,t){let r=t.mode==="fixed"?t.root:e.managedWorkspaceRoot,s=await Xi({cwd:r,configHome:e.configHome,userOnly:!0}),a=s.loaded.find(p=>p.name===n.name&&p.source==="markdown:user"),d=s.scope.resolve(n.name);if(!a||!d||d.source!=="markdown:user"){await s.dispose();let p=s.failed.find(f=>ne.basename(f.path,".md")===n.name);throw new Error(p?.reason??`User Markdown Agent not found: ${n.name}`)}let u=Ko([await Fo(a.path)]);try{let p=await Xo({configHome:e.configHome,workspace:t,selection:a.requestedSkills});return{scope:s.scope,loaded:a,configurationRevision:u,skills:p}}catch(p){throw await s.dispose(),p}}o(Oo,"localAgentResources");function No(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(No,"resolvedLocal");function Bo(e){let n=new Map,t=new Map,r=o(d=>{let u=n.get(d);if(!u)throw new Error("Runtime Agent owner session is not active.");return u},"requireOwner"),s=o((d,u)=>{let p=t.get(u);if(!p||p.ownerSessionId!==d)throw new Error("Runtime Agent binding not found.");return p},"requireBinding"),a=o(async d=>{t.delete(d.bindingId),n.get(d.ownerSessionId)?.delete(d.bindingId),d.scope?.dispose(),await d.skillScriptRunner?.dispose()},"release");return{async resolveLocal(d){let u=Rr(d.workspace),p=await Oo(e,d.ref,u);try{return No(d.ref,p)}finally{p.scope.dispose()}},async openOwnerSession(){let d=ct();return n.set(d,new Set),{ownerSessionId:d}},async bindDefault(d){let u=r(d.ownerSessionId),p=Rr(d.workspace),f=xo(d.toolPolicy),v=Po(d.workspaceByteLimit),i=await Xo({configHome:e.configHome,workspace:p}),l=Object.keys(f.skillScripts).length>0,c=Do({policy:f,hasSkills:i.refs.length>0,hasSkillScripts:l}),w=l?await e.createSkillScriptRunner?.({registry:i.registry,admissions:f.skillScripts,workspaceAccess:f.workspace,network:f.network,workspaceByteLimit:v}):void 0;if(l&&!w)throw new Error("Runtime isolated Skill script backend is unavailable.");let P=ct(),R=Ve(f),I=Ve(p),k=Ve({kind:"runtime-default",profileId:d.profileId,toolPolicyRevision:R,workspaceBindingRevision:I,skillSetRevision:i.revision,provider:e.defaultProvider,model:e.defaultModel,tools:c.tools,workspaceByteLimit:v});if(d.expectedExecutionPolicyRevision&&d.expectedExecutionPolicyRevision!==k)throw await w?.dispose(),new Error("Runtime default execution policy revision changed.");let x={ownerSessionId:d.ownerSessionId,bindingId:P,kind:"runtime-default",executionPolicyRevision:k,toolPolicyRevision:R,workspaceBindingRevision:I,workspace:p,toolPolicy:f,effectiveTools:c.tools,effectiveSkills:i.refs,skillSetRevision:i.revision,skillRegistry:i.registry,skillScriptRunner:w,remoteContracts:c.contracts,toolRegistrations:c.registrations,workspaceByteLimit:v};return t.set(P,x),u.add(P),{ownerSessionId:d.ownerSessionId,bindingId:P,executionPolicyRevision:k,toolPolicyRevision:R,workspaceBindingRevision:I,skillSetRevision:i.revision,effectiveSkills:i.refs,effectiveTools:c.tools}},async startDefault(d){let u=s(d.ownerSessionId,d.bindingId);if(u.kind!=="runtime-default")throw new Error("Runtime Agent binding kind mismatch.");if(u.executionPolicyRevision!==d.expectedExecutionPolicyRevision)throw new Error("Runtime default execution policy revision changed.");let p=await _o(e,u,d.sessionId);return e.runs.start({sessionId:d.sessionId,input:d.input,permissionBroker:d.permissionBroker,agentContext:d.agentContext,options:{context:{executionCwd:p,gitRoot:p,managedTaskWorkspaceDir:p,toolVisibilityPolicy:o(f=>u.effectiveTools.includes(f.name),"toolVisibilityPolicy"),skillRegistry:u.skillRegistry,skillScriptRunner:u.skillScriptRunner,assertReadablePath:o(f=>{qn(p,f)},"assertReadablePath"),skillsPrompt:To(u.effectiveSkills,u.skillRegistry)},skillDynamicContext:{disable:!0},guardrails:[Co(u,p)],events:Mo()}})},async bindLocal(d){let u=r(d.ownerSessionId),p=Rr(d.workspace),f=xo(d.toolPolicy),v=Po(d.workspaceByteLimit),i=await Oo(e,d.ref,p),l=No(d.ref,i);if(d.expectedConfigurationRevision&&d.expectedConfigurationRevision!==l.configurationRevision)throw i.scope.dispose(),new Error("User Markdown Agent configuration revision changed.");let c=Do({declared:i.loaded.effectiveTools,policy:f,hasSkills:i.skills.refs.length>0,hasSkillScripts:Object.keys(f.skillScripts).length>0}),w=Object.keys(f.skillScripts).length>0,P=w?await e.createSkillScriptRunner?.({registry:i.skills.registry,admissions:f.skillScripts,workspaceAccess:f.workspace,network:f.network,workspaceByteLimit:v}):void 0;if(w&&!P)throw i.scope.dispose(),new Error("Runtime isolated Skill script backend is unavailable.");let R=ct(),I=Ve(f),k=Ve(p),x=Ve({kind:"local-agent",profileId:d.profileId,configurationRevision:l.configurationRevision,toolPolicyRevision:I,workspaceBindingRevision:k,skillSetRevision:i.skills.revision,tools:c.tools,workspaceByteLimit:v});if(d.expectedExecutionPolicyRevision&&d.expectedExecutionPolicyRevision!==x)throw await P?.dispose(),i.scope.dispose(),new Error("Local Agent execution policy revision changed.");let g=i.scope.resolve(d.ref.name)?.agent;if(!g)throw await P?.dispose(),i.scope.dispose(),new Error(`User Markdown Agent not found: ${d.ref.name}`);let h={ownerSessionId:d.ownerSessionId,bindingId:R,kind:"local-agent",executionPolicyRevision:x,toolPolicyRevision:I,workspaceBindingRevision:k,workspace:p,toolPolicy:f,effectiveTools:c.tools,effectiveSkills:i.skills.refs,skillSetRevision:i.skills.revision,skillRegistry:i.skills.registry,skillScriptRunner:P,remoteContracts:c.contracts,toolRegistrations:c.registrations,workspaceByteLimit:v,scope:i.scope,loadedAgent:i.loaded,agent:g,configurationRevision:i.configurationRevision};return t.set(R,h),u.add(R),{...l,ownerSessionId:d.ownerSessionId,bindingId:R,executionPolicyRevision:x,toolPolicyRevision:I,workspaceBindingRevision:k,effectiveTools:c.tools}},async startLocal(d){let u=s(d.ownerSessionId,d.bindingId);if(u.kind!=="local-agent"||!u.agent||!u.scope)throw new Error("Runtime Agent binding kind mismatch.");if(u.configurationRevision!==d.expectedConfigurationRevision)throw new Error("User Markdown Agent configuration revision changed.");if(u.executionPolicyRevision!==d.expectedExecutionPolicyRevision)throw new Error("Local Agent execution policy revision changed.");let p=await _o(e,u,d.sessionId),f=typeof u.agent.instructions=="string"?u.agent.instructions:u.agent.instructions({});return e.runs.start({sessionId:d.sessionId,input:d.input,permissionBroker:d.permissionBroker,agentContext:d.agentContext,options:{...u.agent.provider?{provider:u.agent.provider}:{},...u.agent.model?{modelOverride:u.agent.model}:{},...u.agent.effort?{effort:u.agent.effort}:{},context:{executionCwd:p,gitRoot:p,managedTaskWorkspaceDir:p,systemPromptOverride:f,agentScope:u.scope,toolVisibilityPolicy:o(v=>u.effectiveTools.includes(v.name),"toolVisibilityPolicy"),skillRegistry:u.skillRegistry,skillScriptRunner:u.skillScriptRunner,assertReadablePath:o(v=>{qn(p,v)},"assertReadablePath"),skillsPrompt:To(u.effectiveSkills,u.skillRegistry)},skillDynamicContext:{disable:!0},guardrails:[Co(u,p)],events:Mo()}})},async prepareWorkspace(d){let u=s(d.ownerSessionId,d.bindingId);if(u.workspace.mode==="fixed")return u.workspace.root;if(!/^[a-f0-9]{32,64}$/.test(d.contextKey))throw new Error("Managed Runtime workspace context key is invalid.");let p=ne.join(e.managedWorkspaceRoot,"contexts",d.contextKey);return await jo(p,{recursive:!0}),p},async releaseBinding(d){r(d.ownerSessionId),await a(s(d.ownerSessionId,d.bindingId))},async closeOwnerSession(d){let u=r(d);for(let p of[...u])await a(s(d,p));n.delete(d)}}}o(Bo,"createRuntimeAgentBindingService");import{spawn as vu,spawnSync as Iu}from"node:child_process";import{randomUUID as kr}from"node:crypto";import{constants as ku,readdirSync as bu,statSync as Pu}from"node:fs";import{copyFile as Go,lstat as Eu,mkdir as Qe,readFile as br,realpath as $n,rm as mt,stat as ft,writeFile as Pr}from"node:fs/promises";import{createRequire as xu}from"node:module";import Jo from"node:os";import W from"node:path";import{pathToFileURL as Du}from"node:url";import{SandboxManager as vr,getWindowsSandboxUserStatus as Tu,installWindowsSandbox as Xg,verifyWindowsWfpEgress as Au}from"@anthropic-ai/sandbox-runtime";var pt="0.0.65",Uo=1048576,Mu=12e4,Vo=xu(import.meta.url),Cu=process.env.KODAX_BUNDLED==="true"?void 0:Du(Vo.resolve("@anthropic-ai/sandbox-runtime")).href,_u=new Set([".ssh",".aws",".azure",".gnupg",".kodax",".agents"]),Ou=new Set([".env",".npmrc",".pypirc","credentials","id_rsa","id_ed25519"]),Nu=JSON.stringify(Ci),Wo=JSON.stringify(ot),Lu=String.raw`
|
|
10
|
+
import { spawn } from 'node:child_process';
|
|
11
|
+
import { readFile } from 'node:fs/promises';
|
|
12
|
+
const { SandboxManager } = await import(process.argv[1]);
|
|
13
|
+
const request = JSON.parse(await readFile(process.argv[2], 'utf8'));
|
|
14
|
+
const endpoints = new Set(request.endpoints.map((item) => item.host.toLowerCase() + ':' + item.port));
|
|
15
|
+
const callback = request.endpoints.length === 0 ? undefined : async ({ host, port }) => endpoints.has(host.toLowerCase() + ':' + port);
|
|
16
|
+
let child;
|
|
17
|
+
try {
|
|
18
|
+
await SandboxManager.initialize(request.config, callback);
|
|
19
|
+
const quote = (value) => process.platform === 'win32'
|
|
20
|
+
? '"' + value.replaceAll('"', '""') + '"'
|
|
21
|
+
: "'" + value.replaceAll("'", "'\"'\"'") + "'";
|
|
22
|
+
const internalElectronNode = request.command === process.execPath && process.versions.electron !== undefined;
|
|
23
|
+
const childArgs = internalElectronNode
|
|
24
|
+
? ['--import', ${Nu}, ...request.args]
|
|
25
|
+
: request.args;
|
|
26
|
+
const command = [request.command, ...childArgs].map(quote).join(' ');
|
|
27
|
+
if (process.platform === 'win32') {
|
|
28
|
+
const wrapped = await SandboxManager.wrapWithSandboxArgv(command, 'cmd', undefined, undefined, request.cwd);
|
|
29
|
+
const childEnv = internalElectronNode
|
|
30
|
+
? { ...wrapped.env, [${Wo}]: '1' }
|
|
31
|
+
: wrapped.env;
|
|
32
|
+
child = spawn(wrapped.argv[0], wrapped.argv.slice(1), { cwd: request.cwd, env: childEnv, shell: false, stdio: 'inherit' });
|
|
33
|
+
} else {
|
|
34
|
+
const wrapped = await SandboxManager.wrapWithSandbox(command);
|
|
35
|
+
const childEnv = internalElectronNode
|
|
36
|
+
? { ...process.env, [${Wo}]: '1' }
|
|
37
|
+
: process.env;
|
|
38
|
+
child = spawn(wrapped, { cwd: request.cwd, env: childEnv, shell: true, stdio: 'inherit' });
|
|
39
|
+
}
|
|
40
|
+
const stop = () => child?.kill('SIGTERM');
|
|
41
|
+
process.once('SIGINT', stop);
|
|
42
|
+
process.once('SIGTERM', stop);
|
|
43
|
+
const code = await new Promise((resolve, reject) => {
|
|
44
|
+
child.once('error', reject);
|
|
45
|
+
child.once('exit', (exitCode, signal) => resolve(signal ? 1 : exitCode ?? 1));
|
|
46
|
+
});
|
|
47
|
+
SandboxManager.cleanupAfterCommand();
|
|
48
|
+
await SandboxManager.reset();
|
|
49
|
+
process.exitCode = code;
|
|
50
|
+
} catch (error) {
|
|
51
|
+
process.stderr.write((error instanceof Error ? error.message : String(error)) + '\n');
|
|
52
|
+
await SandboxManager.reset().catch(() => undefined);
|
|
53
|
+
process.exitCode = 1;
|
|
54
|
+
}
|
|
55
|
+
`,Ir;function zo(e){return e instanceof Error?e.message:String(e)}o(zo,"errorText");async function ju(e={}){return e.refresh&&(Ir=void 0),Ir??=Fu(),Ir}o(ju,"doctorSandboxRuntime");async function Fu(){let e=[];vr.isSupportedPlatform()||e.push(`Unsupported platform: ${process.platform}.`);let n=vr.checkDependencies();e.push(...n.warnings,...n.errors);let t=n.errors.length>0;if(process.env.KODAX_BUNDLED!=="true")try{let d=JSON.parse(await br(Vo.resolve("@anthropic-ai/sandbox-runtime/package.json"),"utf8"));d.version!==pt&&(t=!0,e.push(`ASRT package version mismatch: expected ${pt}, found ${String(d.version)}.`))}catch(d){t=!0,e.push(`ASRT package provenance check failed: ${zo(d)}`)}let r=process.env.KODAX_A2A_NODE??(process.env.KODAX_BUNDLED==="true"?"node":process.execPath),s=Ln({args:["--version"],env:Yo(),isElectron:r===process.execPath&&process.versions.electron!==void 0}),a=Iu(r,s.args,{env:s.env,shell:!1,encoding:"utf8",windowsHide:!0,timeout:5e3});if(a.status!==0){t=!0;let d=a.error?.message??(a.stderr.trim()||r);e.push(`JavaScript Skill interpreter is unavailable: ${d}.`)}if(process.platform==="win32")try{let d=Tu();!d.provisioned||!d.credPresent||!d.inSandboxGroup?(t=!0,e.push("Windows sandbox account is not fully provisioned.")):await Au()}catch(d){t=!0,e.push(zo(d))}return{ready:vr.isSupportedPlatform()&&!t,platform:process.platform,version:pt,diagnostics:e,setupRequired:t}}o(Fu,"inspectSandboxRuntime");function $e(e,n){let t=e.replaceAll("\\","/").replace(/^\.\//,"");if(!t||W.posix.isAbsolute(t)||t.split("/").includes(".."))throw new Error(`${n} must be a safe relative path.`);return t}o($e,"canonicalRelative");function Hn(e,n){let t=W.relative(e,n);return t===""||!t.startsWith("..")&&!W.isAbsolute(t)}o(Hn,"isInside");function Qo(e){let n=e.split(W.sep).map(t=>t.toLowerCase());return n.some(t=>_u.has(t))||n.some(t=>Ou.has(t)||t.startsWith(".env."))}o(Qo,"isSensitiveRelative");async function qu(e,n){await Qe(n,{recursive:!0,mode:448});let t=[...(e.scripts??[]).map(r=>({folder:"scripts",file:r})),...(e.references??[]).map(r=>({folder:"references",file:r})),...(e.assets??[]).map(r=>({folder:"assets",file:r})),...(e.templates??[]).map(r=>({folder:"templates",file:r})),...(e.resources??[]).map(r=>({folder:"resources",file:r}))];await Pr(W.join(n,"SKILL.md"),await br(e.skillFilePath),{mode:384});for(let{folder:r,file:s}of t){let a=$e(s.relativePath,`Skill ${e.name} support file`),d=W.join(n,r,...a.split("/"));await Qe(W.dirname(d),{recursive:!0,mode:448}),await Pr(d,await br(s.path),{mode:384})}}o(qu,"copySkillSnapshot");async function $u(e,n){let t=new Map;for(let[r,s]of Object.entries(e.admissions)){let a=await e.registry.loadFull(r),d=new Map((a.scripts??[]).map(p=>[`scripts/${$e(p.relativePath,`Skill ${r} script`)}`,p])),u=W.join(n,r.replace(/[^A-Za-z0-9._-]/g,"_"));await qu(a,u);for(let p of s){let f=$e(p,`toolPolicy.skillScripts.${r}`);if(!d.has(f))throw new Error(`Skill "${r}" has no script "${f}".`);t.set(`${r}\0${f}`,{skill:r,relativePath:f,snapshotPath:W.join(u,...f.split("/"))})}}return t}o($u,"snapshotAdmissions");function Hu(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(Hu,"networkEndpoints");function Yo(){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(Yo,"sanitizedEnvironment");function Ku(e){let n=W.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"?W.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??W.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(Ku,"interpreterFor");async function Xu(e,n){let t=[],r=0,s=o(u=>{r+=u.byteLength,r>Uo?e.kill("SIGTERM"):t.push(u)},"append");e.stdout?.on("data",s),e.stderr?.on("data",s);let a=setTimeout(()=>{e.kill("SIGTERM")},Mu),d=o(()=>{e.kill("SIGTERM")},"abort");n?.addEventListener("abort",d,{once:!0});try{let u=await new Promise((p,f)=>{e.once("error",f),e.once("close",v=>p({code:v??1,stdout:Buffer.concat(t).toString("utf8"),stderr:""}))});if(r>Uo)throw new Error("Sandboxed Skill script output exceeded 1 MiB.");if(n?.aborted)throw n.reason??new Error("Sandboxed Skill script was cancelled.");if(u.code!==0)throw new Error(`Sandboxed Skill script failed (${u.code}): ${u.stdout.trim()}`);return{stdout:u.stdout,stderr:u.stderr}}finally{clearTimeout(a),n?.removeEventListener("abort",d)}}o(Xu,"collectProcess");async function Bu(e,n){let t=W.join(Jo.tmpdir(),`kodax-asrt-${process.pid}-${kr()}.json`),r={...e,config:{...e.config,filesystem:{...e.config.filesystem,denyRead:[...e.config.filesystem.denyRead,t]}}};await Pr(t,JSON.stringify(r),{mode:384});try{let s=process.env.KODAX_BUNDLED==="true"?["__asrt-broker",t]:["--input-type=module","-e",Lu,Cu,t],a=Ln({args:s,env:Yo(),isElectron:process.versions.electron!==void 0}),d=vu(process.execPath,a.args,{env:a.env,shell:!1,stdio:["ignore","pipe","pipe"],windowsHide:!0});return(await Xu(d,n)).stdout}finally{await mt(t,{force:!0})}}o(Bu,"runBroker");async function Uu(e,n){let t=await $n(e),r=W.resolve(e,$e(n,"Skill script input")),s=await $n(r);if(!Hn(t,s)||Qo(W.relative(t,s)))throw new Error("Skill script input is outside the permitted workspace surface.");if(!(await ft(s)).isFile())throw new Error("Skill script inputs must be files.");return s}o(Uu,"workspaceSource");async function Wu(e,n){let t=await $n(e),r=W.resolve(e,$e(n,"Skill script output target"));if(!Hn(W.resolve(e),r)||Qo(W.relative(W.resolve(e),r)))throw new Error("Skill script output target is outside the permitted workspace surface.");if(await Qe(W.dirname(r),{recursive:!0}),!Hn(t,await $n(W.dirname(r))))throw new Error("Skill script output target escapes through a symlink.");try{throw await ft(r),new Error("Skill script output target already exists.")}catch(s){if(s.code!=="ENOENT")throw s}return r}o(Wu,"workspaceTarget");async function zu(e,n,t,r){if(t.inputs.length>0&&r==="none")throw new Error("Skill script inputs require workspace read access.");for(let s of t.inputs){let a=await Uu(e,s.path),d=$e(s.as??W.basename(a),"Skill script staged input"),u=W.resolve(n,"inputs",...d.split("/"));if(!Hn(W.join(n,"inputs"),u))throw new Error("Skill script staged input escapes staging.");await Qe(W.dirname(u),{recursive:!0,mode:448}),await Go(a,u)}}o(zu,"stageInputFiles");async function Gu(e,n,t,r,s){if(t.outputs.length>0&&r!=="write")throw new Error("Skill script outputs require workspace write access.");let a=[];for(let d of t.outputs){let u=$e(d.path,"Skill script staged output"),p=W.resolve(n,"outputs",...u.split("/")),f=await $n(p);if(!Hn(W.join(n,"outputs"),f)||(await Eu(p)).isSymbolicLink()||!(await ft(p)).isFile())throw new Error(`Skill script did not produce output "${u}".`);let v=await Wu(e,d.target);if(s!==void 0&&Zo(e,!0)+(await ft(p)).size>s)throw new Error("Skill script outputs would exceed the remote workspace byte quota.");await Go(p,v,ku.COPYFILE_EXCL),a.push(W.relative(e,v))}return a}o(Gu,"promoteOutputs");function Zo(e,n=!1){let t=0;for(let r of bu(e,{withFileTypes:!0})){if(n&&r.name===".kodax-a2a-script"||r.isSymbolicLink())continue;let s=W.join(e,r.name);r.isDirectory()?t+=Zo(s):r.isFile()&&(t+=Pu(s).size)}return t}o(Zo,"directorySize");function Ju(e,n,t,r){let s=Jo.homedir(),a=W.isAbsolute(r)?[r]:[];return{network:{allowedDomains:[],deniedDomains:[],strictAllowlist:t.length===0,allowUnixSockets:[],allowAllUnixSockets:!1,allowLocalBinding:!1},filesystem:{denyRead:[s],allowRead:[e,n,process.execPath,...a],allowWrite:[e],denyWrite:[s]}}}o(Ju,"sandboxConfig");async function es(e){let n=await ju();if(!n.ready)throw new Error(`ASRT ${pt} is not ready: ${n.diagnostics.join(" ")||"run kodax sandbox setup"}`);let t=W.join(e.snapshotRoot,kr()),r=W.join(t,"skills");await Qe(r,{recursive:!0,mode:448});try{let s=await $u(e,r),a=Hu(e.network),d=Promise.resolve();return{async run(u,p){let f=d,v;if(d=new Promise(i=>{v=i}),await f,p.signal?.aborted)throw v?.(),p.signal.reason??new Error("Sandboxed Skill script was cancelled.");try{if(u.args.length>64||u.args.some(w=>w.length>8192))throw new Error("Skill script arguments exceed the bounded remote contract.");if(u.inputs.length>32||u.outputs.length>32)throw new Error("Skill script file mappings exceed the bounded remote contract.");let i=$e(u.script,"Skill script"),l=s.get(`${u.skill}\0${i}`);if(!l)throw new Error("Skill script is not admitted by this Runtime binding.");if([".cmd",".bat"].includes(W.extname(l.snapshotPath).toLowerCase())&&u.args.some(w=>/[&|<>^]/.test(w)))throw new Error("Batch Skill script arguments cannot contain command operators.");let c=W.join(p.workspaceRoot,".kodax-a2a-script",kr());try{await Qe(W.join(c,"inputs"),{recursive:!0,mode:448}),await Qe(W.join(c,"outputs"),{recursive:!0,mode:448}),await zu(p.workspaceRoot,c,u,e.workspaceAccess);let w=Ku(l.snapshotPath),P=await Bu({config:Ju(c,t,a,w.command),command:w.command,args:[...w.args,...u.args],cwd:c,endpoints:a},p.signal),R=await Gu(p.workspaceRoot,c,u,e.workspaceAccess,e.workspaceByteLimit);return JSON.stringify({stdout:P.trim(),outputs:R})}finally{await mt(c,{recursive:!0,force:!0})}}finally{v?.()}},async dispose(){await d,await mt(t,{recursive:!0,force:!0})}}}catch(s){throw await mt(t,{recursive:!0,force:!0}),s}}o(es,"createAsrtSkillScriptRunner");import{createHash as Vu}from"node:crypto";function rs(e){let n=Zt({rootDir:e.rootDir,clientIdentity:ns(e.defaultClientIdentity),proposalStores:e.proposalStores}),t,r=o(()=>(t??=n.initialize(),t),"ensureReady"),s=o(d=>{let u=ns(d),p=Zt({rootDir:e.rootDir,clientIdentity:u,proposalStores:e.proposalStores});return ts(p,r)},"forClient"),a=ts(n,r);return Object.assign(a,{forClient:s})}o(rs,"createRuntimeLearningOwner");function Le(e,n){let t=e;return typeof t.forClient=="function"?t.forClient(n):e}o(Le,"bindRuntimeLearningClient");function ns(e){return`client_${Vu("sha256").update(e).digest("hex").slice(0,32)}`}o(ns,"learningClientFileKey");function ts(e,n){let t,r=o(()=>(t??=n?.()??e.initialize(),t),"ensureReady");return{list:o(async s=>(await r(),e.list(s)),"list"),get:o(async s=>(await r(),e.get(s)),"get"),getSnapshot:o(async()=>(await r(),e.getSnapshot()),"getSnapshot"),events:o(async s=>(await r(),e.events(s)),"events"),subscribe:o(s=>Qu(r(),e,s),"subscribe"),acknowledge:o(async s=>{await r(),await e.acknowledge(s)},"acknowledge"),snooze:o(async(s,a)=>{await r(),await e.snooze(s,a)},"snooze"),reject:o(async s=>{await r(),await e.reject(s)},"reject"),disable:o(async s=>{await r(),await e.disable(s)},"disable"),rollback:o(async s=>{await r(),await e.rollback(s)},"rollback"),promote:o(async(s,a)=>{await r(),await e.promote(s,a)},"promote"),review:o(async s=>{await r(),await e.review(s)},"review"),trust:o(async s=>{await r(),await e.trust(s)},"trust")}}o(ts,"createInitializedFacade");function Qu(e,n,t){return{[Symbol.asyncIterator](){let r=!1,s,a=e.then(()=>{if(!r)return s=n.subscribe(t)[Symbol.asyncIterator](),s});return{async next(){let d=await a;return r||!d?{done:!0,value:void 0}:d.next()},async return(){return r=!0,s?.return?.()??{done:!0,value:void 0}}}}}}o(Qu,"subscribeWhenReady");import{randomUUID as yt}from"node:crypto";var Yu=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","run.input.queued","run.input.delivered","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","permission.grant.changed","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"]),Zu=new Set(["run.queued","run.started","run.updated","run.completed","run.failed","run.cancelled","run.interrupted"]);function Er(e){if(!V(e))return Kn("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"||!Yu.has(e.type))return Kn("Runtime event envelope is malformed or has an unknown type.");if((e.type==="assistant.delta"||e.type==="thinking.delta")&&(!V(e.payload)||typeof e.payload.text!="string"))return Kn(`${e.type} requires a string text payload.`);if(Zu.has(e.type)&&!tc(e.payload))return Kn(`${e.type} requires a RuntimeRunStatus payload.`);let n=ec(e.type,e.payload);return n!==void 0?Kn(`${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(Er,"parseRuntimeEvent");function ec(e,n){if(e==="session.created")return Oe(n,["id","title"])?void 0:"requires a RuntimeSession payload.";if(e==="session.loaded")return Oe(n,["id","title"])||Oe(n,["provider","sessionId"])?void 0:"requires a RuntimeSession or provider session payload.";if(e==="session.settings.updated")return V(n)&&typeof n.sessionId=="string"&&Number.isSafeInteger(n.revision)&&V(n.settings)&&V(n.patch)?void 0:"requires a session settings update payload.";if(e==="thinking.finished")return V(n)&&typeof n.thinking=="string"?void 0:"requires a string thinking payload.";if(e==="tool.started")return V(n)&&Oe(n.tool,["id","name"])?void 0:"requires a tool descriptor payload.";if(e==="tool.progress")return V(n)&&(Oe(n.update,["id","message"])||typeof n.toolName=="string"&&typeof n.partialJson=="string")?void 0:"requires a tool progress payload.";if(e==="tool.finished")return V(n)&&Oe(n.result,["id","name","content"])?void 0:"requires a tool result payload.";if(e==="run.progress")return nc(n);if(e==="run.input.queued")return V(n)&&rc(n.input,"queued")?void 0:"requires a queued interrupt input payload.";if(e==="run.input.delivered")return V(n)&&Array.isArray(n.inputs)&&n.inputs.length>0&&n.inputs.every(ic)?void 0:"requires an ordered interrupt input batch.";if(e==="context.compaction.finished")return V(n)&&typeof n.contextId=="string"&&(n.contextKind==="root"||n.contextKind==="child")&&Number.isSafeInteger(n.contextRevision)&&Number.isSafeInteger(n.beforeRevision)&&Number.isSafeInteger(n.afterRevision)&&(n.source==="manual"||n.source==="automatic_threshold"||n.source==="physical_capacity")&&typeof n.tokensBefore=="number"&&typeof n.tokensAfter=="number"&&typeof n.committed=="boolean"&&typeof n.elapsedMs=="number"?void 0:"requires a canonical compaction payload.";if(e==="todo.updated")return V(n)&&Array.isArray(n.items)?void 0:"requires an items array payload.";if(e==="user_input.requested"){let t=V(n)&&Oe(n,["id","sessionId","runId","kind","createdAt","expiresAt"])&&Number.isSafeInteger(n.revision),r=V(n)&&Oe(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 V(n)&&typeof n.requestId=="string"?void 0:"requires a requestId payload.";if(e==="permission.requested")return Oe(n,["id","sessionId","runId","toolName","createdAt"])?void 0:"requires a RuntimePermissionRequest payload.";if(e==="permission.grant.changed")return V(n)&&(n.action==="created"||n.action==="revoked"||n.action==="expired")&&V(n.grant)&&typeof n.grant.id=="string"&&Number.isSafeInteger(n.revision)?void 0:"requires a permission grant audit payload.";if(e==="turn.started"||e==="turn.completed"||e==="turn.failed")return Oe(n,["sessionId","turnId"])?void 0:"requires a turn payload.";if(e==="workflow.started"||e==="workflow.updated"||e==="workflow.finished")return V(n)?void 0:"requires a workflow event payload.";if(e==="context.budget.snapshot"||e==="tool.exposure.planned")return V(n)?void 0:"requires an object payload.";if(e==="runtime.warning")return V(n)&&typeof n.message=="string"?void 0:"requires a warning message payload."}o(ec,"validateKnownRuntimeEventPayload");function nc(e){return!V(e)||typeof e.kind!="string"?"requires a discriminated progress payload.":e.kind==="managed_task_status"?V(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"?V(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(nc,"validateRunProgressPayload");function tc(e){return V(e)&&typeof e.runId=="string"&&typeof e.sessionId=="string"&&typeof e.startedAt=="string"&&typeof e.provider=="string"&&typeof e.phase=="string"}o(tc,"isRuntimeRunStatusPayload");function rc(e,n){return V(e)&&typeof e.inputId=="string"&&typeof e.afterRunId=="string"&&e.delivery==="interrupt"&&(e.state==="queued"||e.state==="delivered"||e.state==="terminal")&&(n===void 0||e.state===n)&&typeof e.contentPreview=="string"&&typeof e.queuedAt=="string"&&(e.deliveredAt===void 0||typeof e.deliveredAt=="string")}o(rc,"isRuntimeInterruptInputStatus");function ic(e){return V(e)&&typeof e.inputId=="string"&&typeof e.afterRunId=="string"&&typeof e.queuedAt=="string"&&typeof e.deliveredAt=="string"&&is(e.input)}o(ic,"isDeliveredInterruptInput");function is(e){return Array.isArray(e)?e.length>0&&e.every(is):!V(e)||typeof e.type!="string"?!1:e.type==="text"?typeof e.text=="string":e.type==="artifact_ref"?typeof e.artifactId=="string":e.type==="image"||e.type==="file"?typeof e.path=="string":e.type==="video"&&typeof e.path=="string"&&typeof e.mediaType=="string"}o(is,"isRuntimeInput");function Oe(e,n){return V(e)&&n.every(t=>typeof e[t]=="string")}o(Oe,"hasStrings");function Kn(e){return{ok:!1,error:e}}o(Kn,"invalid");function V(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}o(V,"isRecord");var He="kodax-runtime-daemon",xr=1,gn=["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.transcript.page","session.transcript.entryChunk","session.transcript.search","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.autoMode.getStats","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"],oc=["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"],ss=["agentTasks.list","agentTasks.start","agentTasks.get","agentTasks.events","agentTasks.wait","agentTasks.sendInput","agentTasks.cancel","agentTasks.reconcile"],sc=new Set([...gn,...ss]),ac=new Set(oc),dc=new Set(["credential.register","credential.revoke","credential.supply","host_tool.register","host_tool.revoke","host_tool.complete"]),uc=new Set(["event","credential.request","host_tool.invoke","runtime.warning"]),cc=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 gt(e,n,t,r){return{protocol:He,version:1,kind:"request",id:e,method:n,...t!==void 0?{params:t}:{},...r!==void 0?{operation:r}:{}}}o(gt,"createRuntimeDaemonRequest");function Ye(e){return ac.has(e)}o(Ye,"isRuntimeDaemonMutationMethod");function as(e){return Ye(e)||dc.has(e)}o(as,"isRuntimeDaemonDrainingSensitiveMethod");function ds(e){return ss.includes(e)}o(ds,"isRuntimeDaemonRetiredMethod");function us(e,n){return{protocol:He,version:1,kind:"response",id:e,result:n===void 0?null:n}}o(us,"createRuntimeDaemonSuccessResponse");function Ke(e,n){return{protocol:He,version:1,kind:"error",...n!==void 0?{id:n}:{},error:e}}o(Ke,"createRuntimeDaemonErrorResponse");function Xn(e,n){return{protocol:He,version:1,kind:"notification",method:e,...n!==void 0?{params:n}:{}}}o(Xn,"createRuntimeDaemonNotification");function Dr(e){if(!Rt(e))return!1;let n=e;return n.kind==="request"&&typeof n.id=="string"&&n.id.length>0&&typeof n.method=="string"&&sc.has(n.method)&&(n.operation===void 0||pc(n.operation))}o(Dr,"isRuntimeDaemonRequest");function Rn(e){if(!Rt(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(Rn,"isRuntimeDaemonSuccessResponse");function yn(e){if(!Rt(e))return!1;let n=e;return n.kind==="error"&&(n.id===void 0||typeof n.id=="string")&&mc(n.error)}o(yn,"isRuntimeDaemonErrorResponse");function Bn(e){if(!Rt(e))return!1;let n=e;return n.kind==="notification"&&typeof n.method=="string"&&uc.has(n.method)}o(Bn,"isRuntimeDaemonNotification");function lc(e){return Dr(e)||Rn(e)||yn(e)||Bn(e)}o(lc,"isRuntimeDaemonFrame");function cs(e){let n;try{n=JSON.parse(e)}catch{return os("Frame is not valid JSON.")}return lc(n)?n:os("Frame does not match the runtime daemon protocol.")}o(cs,"parseRuntimeDaemonFrame");function os(e){return Ke({code:"invalid_frame",message:e})}o(os,"invalidFrame");function Rt(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let n=e;return n.protocol===He&&n.version===1}o(Rt,"isFrameBase");function mc(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let n=e;return typeof n.code=="string"&&cc.has(n.code)&&typeof n.message=="string"}o(mc,"isRuntimeDaemonError");function pc(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(pc,"isRuntimeDaemonOperationEnvelope");var ws=256,ls=1e3,en=class extends Error{constructor(t,r){super(r);this.path=t;this.name="RuntimeTransportBoundaryError"}path;static{o(this,"RuntimeTransportBoundaryError")}code="invalid_transport_value"},Tr=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"}},wt=class extends Error{static{o(this,"RuntimePermissionScopeUpgradeRequiredError")}code="daemon_upgrade_required";capability="runtimeAutoModeGuardrail";requiredVersion=3;restartRequired=!0;constructor(){super("Runtime daemon does not advertise concrete permission scopes. Upgrade KodaX and restart the daemon before requesting grants for a concrete tool call."),this.name="RuntimePermissionScopeUpgradeRequiredError"}};function ms(e){let n=e.activeAgentTurns??e.activeAgentTasks??[];return{...e,activeAgentTurns:n,activeAgentTasks:n}}o(ms,"normalizeRuntimeDaemonPreflight");function ht(e){let n=o((i,l,c)=>e.transport.request(i,l,Ye(i)?yc(e.journalEpoch,c):void 0),"request"),t=o(()=>{let i=e.capabilities?.actorControlPlane;if(typeof i!="object"||i===null||!("version"in i)||i.version!==1||!("methodNamespace"in i)||i.methodNamespace!=="agents")return new Tr},"actorControlPlaneError"),r=o(()=>{let i=e.capabilities?.runtimeAutoModeGuardrail;if(typeof i!="object"||i===null||!("version"in i)||typeof i.version!="number"||i.version<3||!("concretePermissionMatchers"in i)||i.concretePermissionMatchers!==!0||!("permissionGrantSuggestions"in i)||i.permissionGrantSuggestions!==!0)return new wt},"concretePermissionScopeError"),s=new Map,a=new Map,d=new Map,u=new Set,p={state:"connected",connectionId:`connection_${yt().replace(/-/g,"")}`,runtimeEpoch:e.identity.runtimeId,...e.journalEpoch!==void 0?{journalEpoch:e.journalEpoch}:{},reconnectable:!1},f=e.transport.subscribeLifecycle?.(i=>{p={...i,runtimeEpoch:e.identity.runtimeId,...e.journalEpoch!==void 0?{journalEpoch:e.journalEpoch}:{}};for(let l of u)try{l(p)}catch(c){oe({source:"runtime.daemon.client",level:"warn",message:"Runtime connection lifecycle listener failed.",detail:{errorType:c instanceof Error?c.name:typeof c}})}}),v=e.transport.subscribe(i=>{i.method==="credential.request"?gc(i.params,s,n).catch(()=>ps("credential request")):i.method==="host_tool.invoke"&&Rc(i.params,a,d,n).catch(()=>ps("host tool invocation"))});return{identity:e.identity,capabilities:e.capabilities,...e.grantedScopes!==void 0?{grantedScopes:e.grantedScopes}:{},sessions:{create(i={}){let{operation:l,...c}=i;return n("session.create",c,l)},load(i){return n("session.load",{sessionId:i})},list(i){return n("session.list",i)},transcript(i){return n("session.transcript",{sessionId:i})},transcriptPage(i){return n("session.transcript.page",i)},transcriptEntryChunk(i){return n("session.transcript.entryChunk",i)},transcriptSearch(i){return n("session.transcript.search",i)},observe(i,l){return hc(e.transport,n,i,l)},fork(i){return n("session.fork",i)},getSettings(i){return n("session.settings.get",{sessionId:i})},getSettingsVersioned(i){return n("session.settings.getVersioned",{sessionId:i})},getAutoModeStats(i){return n("session.autoMode.getStats",{sessionId:i})},async updateSettings(i,l){let c=await this.getSettingsVersioned(i);return(await this.updateSettingsVersioned(i,l,{expectedRevision:c.revision})).value},updateSettingsVersioned(i,l,c){return n("session.settings.updateVersioned",{sessionId:i,patch:l,expectedRevision:c.expectedRevision},c)},appendNotice(i){return n("session.notice.append",i)},rewind(i){return n("session.rewind",i)},setActiveEntry(i){return n("session.active_entry.set",i)},compact(i){return n("session.compact",i)},async archive(i){await n("session.archive",{sessionId:i})},async unarchive(i){await n("session.unarchive",{sessionId:i})},async delete(i){await n("session.delete",{sessionId:i})}},runs:{async start(i){let{operation:l,...c}=i;wn(c,"run.start");let w=ve(await n("run.start",c,l)),P=ye(w,"runId"),R=ye(w,"sessionId"),I=bc(w,"turnId");return{runId:P,sessionId:R,...I!==void 0?{turnId:I}:{},result:Rs(n,P)}},async submitInput(i){let{operation:l,...c}=i;return wn(c,"run.input.submit"),n("run.input.submit",c,l)},await(i){return Rs(n,i)},get(i){return n("run.get",{runId:i})},list(i){return n("run.list",i)},async abort(i){await n("run.abort",{runId:i})},async setModel(i,l){await n("run.model.set",{runId:i,model:l})},async setProvider(i,l){await n("run.provider.set",{runId:i,provider:l})},async setReasoning(i,l){await n("run.reasoning.set",{runId:i,reasoning:l})}},events:{subscribe(i,l){return wc(e.transport,n,i,l)},replay(i){return n("event.replay",i).then(l=>{if(!Array.isArray(l))throw new Error("Expected daemon event replay array.");return l.flatMap(c=>{let w=hs(c);return w===void 0?[]:[w]})})}},permissions:{request(i){if(i.toolInput!==void 0){let l=r();if(l)return Promise.reject(l)}return n("permission.request",i)},listPending(i){return n("permission.list",i)},respond(i,l,c){return n("permission.respond",{requestId:i,decision:l,...c?.runId!==void 0?{runId:c.runId}:{}})},listGrants(){return n("permission.grants.list")},revokeGrant(i,l){return n("permission.grants.revoke",{grantId:i,expectedRevision:l})}},userInputs:{listPending(i){return n("user_input.listPending",i)},respond(i,l,c){return n("user_input.respond",{requestId:i,answer:l,...c?.expectedRevision!==void 0?{expectedRevision:c.expectedRevision}:{},...c?.runId!==void 0?{runId:c.runId}:{}})},dismiss(i,l){return n("user_input.dismiss",{requestId:i,...l?.expectedRevision!==void 0?{expectedRevision:l.expectedRevision}:{},...l?.runId!==void 0?{runId:l.runId}:{}})}},credentials:{async register(i,l){let c=`credlease_${yt().replace(/-/g,"")}`;s.set(c,l);try{return await n("credential.register",{leaseId:c,providers:i.providers,...i.expiresAt!==void 0?{expiresAt:i.expiresAt}:{}})}catch(w){throw s.delete(c),w}},async resume(i,l){s.set(i,l);try{let c=await n("credential.get",{leaseId:i});if(c==null)throw Object.assign(new Error(`Credential lease is unavailable after Runtime reconnect: ${i}`),{code:"credential_unavailable"});return ve(c)}catch(c){throw s.delete(i),c}},async revoke(i){let l=await n("credential.revoke",{leaseId:i});return l&&s.delete(i),l}},hostTools:{async register(i,l){fs(i,l);let c=`hostlease_${yt().replace(/-/g,"")}`;a.set(c,l);try{return await n("host_tool.register",{leaseId:c,tools:i})}catch(w){throw a.delete(c),w}},async resume(i,l){a.set(i,l);try{let c=await n("host_tool.get",{leaseId:i});if(c==null)throw Object.assign(new Error(`Host tool lease is unavailable after Runtime reconnect: ${i}`),{code:"host_tool_unavailable"});let w=ve(c);return fs(w.tools,l),w}catch(c){throw a.delete(i),c}},async getInvocation(i){return Ze(await n("host_tool.invocation.get",{invocationId:i}))},async revoke(i){let l=await n("host_tool.revoke",{leaseId:i});return l&&a.delete(i),l}},operations:{get(i){return n("operation.get",i)}},workflows:{list(i){return n("workflow.list",i)},get(i){return n("workflow.get",{runId:i}).then(Ze)},subscribe(i,l){return vc(e.transport,n,i,l)},pause(i){return n("workflow.pause",{runId:i})},resume(i){return n("workflow.resume",{runId:i})},stop(i){return n("workflow.stop",{runId:i})}},learning:{list(i){return n("learning.list",i??{})},get(i){return n("learning.get",{nameOrSlug:i})},getSnapshot(){return n("learning.snapshot")},events(i){return n("learning.events",{...i!==void 0?{afterRevision:i}:{}})},subscribe(i){return fc(n,i?.afterRevision??0)},async acknowledge(i){await n("learning.acknowledge",{nameOrSlug:i})},async snooze(i,l){await n("learning.snooze",{nameOrSlug:i,until:l})},async reject(i){await n("learning.reject",{nameOrSlug:i})},async disable(i){await n("learning.disable",{nameOrSlug:i})},async rollback(i){await n("learning.rollback",{nameOrSlug:i})},async promote(i,l){await n("learning.promote",{nameOrSlug:i,scope:l})},async review(i){await n("learning.review",{nameOrSlug:i})},async trust(i){await n("learning.trust",{nameOrSlug:i})}},config:{read(){return n("config.read")},patch(i){return n("config.patch",{patch:i})},reload(){return n("config.reload")}},catalog:{providers(){return n("provider.list")},models(i){return n("model.list",i)},commands(i){return n("command.list",i!==void 0?{projectRoot:i}:void 0)},resolveCommand(i){return n("command.resolve",i)},skills(i){return n("skill.list",i)},describeSkill(i){return n("skill.describe",i)},customProviders(){return n("provider.custom.list")},upsertCustomProvider(i){return n("provider.custom.upsert",{config:i})},deleteCustomProvider(i){return n("provider.custom.remove",{name:i})},extensions(){return n("extension.list")},reloadExtensions(){return n("extension.reload")}},mcp:{listServers(){return n("mcp.server.list")},getServer(i){return n("mcp.server.get",{name:i}).then(Ze)},validateServer(i,l){return n("mcp.server.validate",{name:i,config:l})},upsertServer(i,l){return n("mcp.server.upsert",{name:i,config:l})},deleteServer(i){return n("mcp.server.delete",{name:i})},reloadServers(){return n("mcp.server.reload")},listTools(i){return n("mcp.tool.list",i)}},artifacts:{create(i){return n("artifact.create",i)},get(i){return n("artifact.get",{artifactId:i}).then(Ze)},delete(i){return n("artifact.delete",{artifactId:i})}},admin:{agentRegistrations:{list(){return n("agentRegistrations.list")},upsert(i,l){return wn(i,"agentRegistrations.upsert.registration"),n("agentRegistrations.upsert",{registration:i,...l?.expectedConfigurationRevision!==void 0?{expectedConfigurationRevision:l.expectedConfigurationRevision}:{},...l?.expectedManagementOwner!==void 0?{expectedManagementOwner:l.expectedManagementOwner}:{}})},setEnabled(i,l,c){return n("agentRegistrations.setEnabled",{agentId:i,enabled:l,...c?.expectedConfigurationRevision!==void 0?{expectedConfigurationRevision:c.expectedConfigurationRevision}:{},...c?.expectedManagementOwner!==void 0?{expectedManagementOwner:c.expectedManagementOwner}:{},...c?.claimOwner!==void 0?{claimOwner:c.claimOwner}:{}}).then(Ze)},remove(i,l){return n("agentRegistrations.remove",{agentId:i,...l?.expectedConfigurationRevision!==void 0?{expectedConfigurationRevision:l.expectedConfigurationRevision}:{},...l?.expectedManagementOwner!==void 0?{expectedManagementOwner:l.expectedManagementOwner}:{}})}}},agents:{enabled:e.capabilities?.externalAgents===!0,listDispatchable(i){return n("agents.listDispatchable",i)},describe(i,l){return n("agents.describe",{agentId:i,query:l}).then(Ze)},preflight(i){return n("agents.preflight",i)},tree(i){let l=t();return l?Promise.reject(l):n("agents.tree",{sessionId:i})},detail(i,l){let c=t();return c?Promise.reject(c):n("agents.detail",{sessionId:i,actorPath:l})},spawn(i,l){let c=t();return c?Promise.reject(c):(wn(l,"agents.spawn"),n("agents.spawn",{sessionId:i,input:l}))},async send(i,l,c,w){let P=t();if(P)throw P;await n("agents.send",{sessionId:i,actorPath:l,content:c,...w!==void 0?{classification:w}:{}})},followup(i,l,c,w){let P=t();return P?Promise.reject(P):n("agents.followup",{sessionId:i,actorPath:l,objective:c,...w?.expectedRevision!==void 0?{expectedRevision:w.expectedRevision}:{}})},async interrupt(i,l,c){let w=t();if(w)throw w;await n("agents.interrupt",{sessionId:i,actorPath:l,...c!==void 0?{reason:c}:{}})},output(i,l,c){let w=t();return w?Promise.reject(w):n("agents.output",{sessionId:i,actorPath:l,...c!==void 0?{turnId:c}:{}})},events(i,l){let c=t();return c?Promise.reject(c):n("agents.events",{sessionId:i,...l!==void 0?{afterSequence:l}:{}})},wait(i,l,c){let w=t();return w?Promise.reject(w):n("agents.wait",{sessionId:i,...l!==void 0?{afterSequence:l}:{},...c!==void 0?{timeoutMs:c}:{}}).then(Ze)}},status:{snapshot(){return n("daemon.status")},preflight(){return n("daemon.preflight").then(i=>ms(i))}},daemon:{inspect(){return n("daemon.management.get").then(i=>{let l=i;return{...l,preflight:ms(l.preflight)}})},stopForInline(i){let{operation:l,...c}=i;return n("daemon.rollbackToInline",c,l)}},diagnostics:{latestContextBudget(i){return n("context.budget.get",i)},latestToolExposure(i){return n("tool.exposure.preview",i)}},connection:{current(){return p},subscribe(i){return u.add(i),i(p),{close(){u.delete(i)}}}},async close(){f?.close(),v.close(),u.clear(),s.clear(),a.clear(),d.clear(),await e.transport.close?.()}}}o(ht,"createRuntimeDaemonClient");async function*fc(e,n){let t=n;for(;;){let r=await e("learning.events",{afterRevision:t});if(r.length===0){await new Promise(s=>setTimeout(s,100));continue}for(let s of r)t=s.sequence,yield s}}o(fc,"pollRuntimeLearningEvents");function ps(e){oe({source:"runtime.daemon.client",level:"warn",message:`Failed to deliver ${e} result to the Runtime daemon.`})}o(ps,"reportReverseBridgeFailure");async function gc(e,n,t){let r=ve(e),s=ye(r,"requestId"),a=ye(r,"leaseId"),d=n.get(a);if(!d){await t("credential.supply",{requestId:s,error:"credential_lease_unavailable"});return}try{let u=await d({leaseId:a,provider:ye(r,"provider"),sessionId:ye(r,"sessionId"),runId:ye(r,"runId")});await t("credential.supply",{requestId:s,...u!==void 0?{credential:u}:{error:"credential_unavailable"}})}catch{await t("credential.supply",{requestId:s,error:"credential_broker_failed"})}}o(gc,"answerCredentialRequest");async function Rc(e,n,t,r){let s=ve(e),a=ye(s,"invocationId"),d=ye(s,"leaseId"),u=ye(s,"toolName"),p=n.get(d)?.[u];if(!p){await r("host_tool.complete",{invocationId:a,error:"host_tool_unavailable"});return}let f=t.get(a);if(!f){let v=Promise.resolve().then(()=>p({invocationId:a,leaseId:d,toolName:u,sessionId:ye(s,"sessionId"),runId:ye(s,"runId"),input:ve(s.input)}));f={promise:v,settled:!1},t.set(a,f);let i=f;v.finally(()=>{i.settled=!0,gs(t)}).catch(()=>{}),gs(t)}try{await r("host_tool.complete",{invocationId:a,result:await f.promise})}catch{try{await r("host_tool.complete",{invocationId:a,error:"host_tool_failed"})}catch(v){throw new Error("Failed to report the Host Tool outcome to the Runtime daemon.",{cause:v})}}}o(Rc,"answerHostToolInvocation");function fs(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(fs,"validateHostToolHandlers");function gs(e){if(!(e.size<=ls))for(let[n,t]of e){if(e.size<=ls)return;t.settled&&e.delete(n)}}o(gs,"pruneHostToolResults");function yc(e,n){let t=n?.journalEpoch??e;if(t!==void 0)return{operationId:n?.operationId??`op_${yt().replace(/-/g,"")}`,journalEpoch:t}}o(yc,"createOperationEnvelope");function wc(e,n,t,r){return Ss(e,n,"event.subscribe",{filter:t},s=>{Ar(s,r)})}o(wc,"subscribeToDaemonEvents");async function hc(e,n,t,r){let s=!1,a,d=!1,u=[],p=e.subscribe(f=>{if(s||f.method!=="event")return;let v=ve(f.params);if(a===void 0){if(!Sc(v.event,t))return;u.length>=ws?d=!0:u.push(v);return}v.subscriptionId===a&&Ar(v.event,r)});try{let f=ve(await n("session.observe",{sessionId:t}));if(a=ye(f,"subscriptionId"),d)throw Object.assign(new Error("Runtime session observation handshake exceeded its event buffer; full resync is required."),{code:"resync_required"});let v=ve(f.snapshot);for(let i of u.splice(0))i.subscriptionId===a&&Ar(i.event,r);return{snapshot:v,close(){s||(s=!0,u.length=0,p.close(),a!==void 0&&n("event.unsubscribe",{subscriptionId:a}).catch(()=>{}))}}}catch(f){throw s=!0,u.length=0,p.close(),a!==void 0&&n("event.unsubscribe",{subscriptionId:a}).catch(()=>{}),f}}o(hc,"observeDaemonSession");function Sc(e,n){return e!==null&&typeof e=="object"&&!Array.isArray(e)&&e.sessionId===n}o(Sc,"isRuntimeEventForSession");function Ar(e,n){let t=hs(e);t!==void 0&&n(t)}o(Ar,"deliverRuntimeEvent");function hs(e){let n=Er(e);if(!n.ok){oe({source:"runtime.daemon.client",level:"warn",message:`Ignored malformed Runtime event: ${n.error}`});return}return n.event}o(hs,"parseRuntimeEventForClient");function vc(e,n,t,r){return Ss(e,n,"workflow.subscribe",{filter:t},s=>{r(s)})}o(vc,"subscribeToDaemonWorkflowEvents");function Ss(e,n,t,r,s){let a=!1,d,u=[],p=e.subscribe(v=>{if(a||v.method!=="event")return;let i=ve(v.params);if(d===void 0){u.length>=ws&&u.shift(),u.push(i);return}i.subscriptionId===d&&s(i.event)}),f=n(t,r).then(v=>{if(d=ye(ve(v),"subscriptionId"),a){ys(n,t,d),u.length=0;return}for(let i of u.splice(0))i.subscriptionId===d&&s(i.event)}).catch(v=>{throw u.length=0,p.close(),v});return f.catch(()=>{}),{ready:f,close(){a=!0,p.close(),d!==void 0&&ys(n,t,d)}}}o(Ss,"subscribeToDaemonNotification");function Rs(e,n){return e("run.await",{runId:n}).then(Ic)}o(Rs,"requestRuntimeRunResult");function Ic(e){let n=ve(e),t=Object.prototype.hasOwnProperty.call(n,"error")?kc(n.error):void 0,r={...n};return delete r.error,{...r,...t!==void 0?{error:t}:{}}}o(Ic,"deserializeRuntimeRunResult");function kc(e){if(e==null)return;if(e instanceof Error)return e;if(typeof e=="string")return new Error(e);let n=ve(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(kc,"deserializeRuntimeError");function ys(e,n,t){e(n==="event.subscribe"?"event.unsubscribe":"workflow.unsubscribe",{subscriptionId:t}).catch(()=>{})}o(ys,"unsubscribeRemote");function Ze(e){return e??void 0}o(Ze,"nullToUndefined");function ve(e){if(!e||typeof e!="object"||Array.isArray(e))throw new Error("Expected daemon response object.");return e}o(ve,"requireRecord");function ye(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(ye,"requireStringField");function bc(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(bc,"optionalStringField");function wn(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 en(n,`${n} is not transport-safe: numbers must be finite.`)}if(typeof e=="function"||typeof e=="symbol"||typeof e=="bigint")throw new en(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 en(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 s=r?.constructor?.name??"object";throw new en(n,`${n} is not transport-safe: ${s} instances cannot cross a Runtime boundary.`)}if(t.add(e),Array.isArray(e))e.forEach((s,a)=>wn(s,`${n}[${a}]`,t));else for(let[s,a]of Object.entries(e))wn(a,`${n}.${s}`,t);t.delete(e)}o(wn,"assertRuntimeTransportSafe");import{randomUUID as Dm}from"node:crypto";import Tm from"node:os";import ei from"node:path";import{randomUUID as Cr}from"node:crypto";import*as L from"node:fs";import ce from"node:path";function hn(e,n="default"){let t=_r(n),r=ce.resolve(e),s=ce.join(r,"runtime","daemon",t);return{profile:t,configHome:r,rootDir:s,stateFile:ce.join(s,"daemon.json"),lockFile:ce.join(s,"daemon.lock"),tokenFile:ce.join(s,"daemon.token"),logFile:ce.join(s,"daemon.log"),runsDir:ce.join(s,"runs"),eventsDir:ce.join(s,"events"),ownerPolicyFile:ce.join(s,"owner-policy.json"),ownerPolicyLockFile:ce.join(s,"owner-policy.lock")}}o(hn,"resolveRuntimeDaemonPathsFromConfigHome");function Pc(e,n){let t=o(r=>{let s=ce.resolve(r);return process.platform==="win32"?s.toLowerCase():s},"resolveIdentity");return t(e)===t(n)}o(Pc,"isSameRuntimeDaemonPath");function Sn(e,n){let t=ce.resolve(e);return Pc(n,ce.join(t,".kodax"))?t:ce.resolve(n)}o(Sn,"resolveRuntimeDaemonEndpointScope");function Ee(e){if(!L.existsSync(e.ownerPolicyFile))return{mode:"daemon",revision:0,updatedAt:new Date(0).toISOString()};try{let n=JSON.parse(L.readFileSync(e.ownerPolicyFile,"utf8"));if(Lr(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(Ee,"readRuntimeOwnerPolicy");function ks(e,n,t){Ce(e);let r=Xe(e);if(!r)throw new Error("Runtime owner policy update is already in progress.");try{if(L.existsSync(e.lockFile))throw new Error("Cannot change Runtime owner mode while an owner lock exists.");return kt(e,n,t,r.nonce)}finally{nn(e,r)}}o(ks,"updateRuntimeOwnerPolicy");function bs(e,n,t){Ce(e);let r=Xe(e);if(!r)throw vt("Runtime owner rollback is already in progress.");try{let s=te(e.lockFile);if(s?.kind!=="daemon"||s.runtimeId!==n)throw vt("Runtime daemon owner changed before rollback commit.");if(Ee(e).mode!=="daemon")throw vt("Runtime owner policy changed before rollback commit.");return kt(e,"inline",t,r.nonce)}finally{nn(e,r)}}o(bs,"commitRuntimeDaemonRollbackPolicy");function It(e){Ce(e);let n=Xe(e);if(!n)throw new Error("Runtime owner transition is already in progress.");try{if(L.existsSync(e.lockFile))throw new Error("Cannot enable Runtime daemon ownership while an owner lock exists.");let t=Ee(e);return t.mode==="daemon"?t:kt(e,"daemon",t.revision,n.nonce)}finally{nn(e,n)}}o(It,"enableRuntimeDaemonOwner");function Ps(e,n,t=!1){Ce(e);let r=Xe(e);if(!r)throw new Error("Runtime owner transition is already in progress.");try{let s=Ee(e);if(s.mode!=="inline"){if(!t)throw new Error("Coder inline ownership requires explicit enableRollback: true.");if(L.existsSync(e.lockFile))throw new Error("Cannot enable inline rollback while a Coder owner lock exists.");kt(e,"inline",s.revision,r.nonce)}if(L.existsSync(e.lockFile))throw new Error(`Coder profile "${e.profile}" already has an owner.`);let a=As(e,n);if(!a)throw new Error(`Coder profile "${e.profile}" already has an owner.`);return a}finally{nn(e,r)}}o(Ps,"acquireRuntimeInlineOwner");function kt(e,n,t,r){let s=Ee(e);if(s.revision!==t)throw vt(`Runtime owner policy conflict: expected ${t}, current ${s.revision}.`);let a={mode:n,revision:s.revision+1,updatedAt:new Date().toISOString()},d=`${e.ownerPolicyFile}.${process.pid}.${r}.tmp`;try{let u=L.openSync(d,"wx",384);try{L.writeFileSync(u,`${JSON.stringify(a,null,2)}
|
|
56
|
+
`,"utf8"),L.fsyncSync(u)}finally{L.closeSync(u)}return L.renameSync(d,e.ownerPolicyFile),a}finally{L.rmSync(d,{force:!0})}}o(kt,"writeRuntimeOwnerPolicy");function vt(e){let n=new Error(e);return n.code="conflict",n}o(vt,"runtimeOwnerPolicyConflict");function Xe(e,n=!0){let t=Cr(),r={runtimeId:`owner-transition-${t}`,pid:process.pid,createdAt:new Date().toISOString()},s;try{return s=L.openSync(e.ownerPolicyLockFile,"wx",384),L.writeFileSync(s,`${JSON.stringify({...r,nonce:t})}
|
|
57
|
+
`,"utf8"),L.fsyncSync(s),{nonce:t,owner:r}}catch(a){if(Nr(a)&&a.code==="EEXIST")return n&&Ec(e)?Xe(e,!1):void 0;throw a}finally{s!==void 0&&L.closeSync(s)}}o(Xe,"tryAcquireRuntimeOwnerCoordination");function Ec(e){let n=vs(e);if(!n||xc(n.owner.pid))return!1;try{let t=vs(e);return!t||t.nonce!==n.nonce?!1:(L.unlinkSync(e.ownerPolicyLockFile),!0)}catch{return!1}}o(Ec,"removeAbandonedRuntimeOwnerCoordination");function vs(e){try{let n=JSON.parse(L.readFileSync(e.ownerPolicyLockFile,"utf8"));return!Lr(n)||typeof n.nonce!="string"||!Os(n)||!n.runtimeId.startsWith("owner-transition-")?void 0:{nonce:n.nonce,owner:n}}catch{return}}o(vs,"readRuntimeOwnerCoordinationHandle");function xc(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch(n){return Nr(n)&&n.code==="EPERM"}}o(xc,"isRuntimeOwnerProcessAlive");function Dc(e){return te(e.ownerPolicyLockFile)}o(Dc,"readRuntimeOwnerCoordinator");function nn(e,n){try{let t=JSON.parse(L.readFileSync(e.ownerPolicyLockFile,"utf8"));Lr(t)&&t.nonce===n.nonce&&L.unlinkSync(e.ownerPolicyLockFile)}catch{}}o(nn,"releaseRuntimeOwnerCoordination");function bt(e){if(Ee(e).mode!=="daemon")throw new Error(`Runtime daemon auto-start is disabled for profile "${e.profile}" by inline rollback policy.`)}o(bt,"assertRuntimeDaemonOwnerAllowed");function _r(e){let n=e.trim()||"default";if(!/^[A-Za-z0-9_.-]+$/.test(n))throw new Error(`Invalid runtime daemon profile: ${e}`);return n}o(_r,"normalizeRuntimeDaemonProfile");function Ce(e){L.mkdirSync(e.rootDir,{recursive:!0}),L.mkdirSync(e.runsDir,{recursive:!0}),L.mkdirSync(e.eventsDir,{recursive:!0})}o(Ce,"ensureRuntimeDaemonDirectories");function Es(){return`dt_${Cr().replace(/-/g,"")}`}o(Es,"createRuntimeDaemonToken");function xs(e,n){Ce(e),L.writeFileSync(e.tokenFile,`${n}
|
|
58
|
+
`,{encoding:"utf8",mode:384}),process.platform!=="win32"&&L.chmodSync(e.tokenFile,384)}o(xs,"writeRuntimeDaemonToken");function Un(e){try{let n=L.readFileSync(e.tokenFile,"utf8").trim();return n.length>0?n:void 0}catch(n){if(n.code==="ENOENT")return;throw n}}o(Un,"readRuntimeDaemonToken");function vn(e,n){Ce(e);let t=`${e.stateFile}.${process.pid}.${Cr()}.tmp`;try{let r=L.openSync(t,"wx",384);try{L.writeFileSync(r,`${JSON.stringify(n,null,2)}
|
|
59
|
+
`,"utf8"),L.fsyncSync(r)}finally{L.closeSync(r)}L.renameSync(t,e.stateFile)}finally{L.rmSync(t,{force:!0})}}o(vn,"writeRuntimeDaemonState");function _e(e,n,t,r){Ce(e);let s={time:new Date().toISOString(),level:n,message:t,...r!==void 0?{data:r}:{}};L.appendFileSync(e.logFile,`${JSON.stringify(s)}
|
|
60
|
+
`,"utf8")}o(_e,"appendRuntimeDaemonLog");function Ds(e,n=200){if(!L.existsSync(e.logFile))return[];let t=[],r=L.readFileSync(e.logFile,"utf8").split(/\r?\n/).filter(s=>s.trim().length>0);for(let s of r.slice(-n))try{let a=JSON.parse(s);Cc(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(Ds,"readRuntimeDaemonLog");function Ts(e){if(L.existsSync(e.stateFile))try{let n=JSON.parse(L.readFileSync(e.stateFile,"utf8"));return Mc(n)?n:void 0}catch{return}}o(Ts,"readRuntimeDaemonState");function As(e,n){Ce(e);let t;try{return t=L.openSync(e.lockFile,"wx",384),L.writeFileSync(t,`${JSON.stringify(n,null,2)}
|
|
61
|
+
`,"utf8"),L.fsyncSync(t),{file:e.lockFile,owner:n}}catch(r){if(Nr(r)&&r.code==="EEXIST")return;throw r}finally{t!==void 0&&L.closeSync(t)}}o(As,"tryAcquireRuntimeDaemonLock");function Pt(e){let n={ownerPolicyLockFile:ce.join(ce.dirname(e.file),"owner-policy.lock")},t=Xe(n);if(!t)return!1;try{return Cs(e)}finally{nn(n,t)}}o(Pt,"releaseRuntimeDaemonLock");function Ms(e,n){let t=Xe(e);if(!t)return!1;try{let r=te(n.file);return Or(r,n.owner)?(Ac(e),Cs(n)):!1}finally{nn(e,t)}}o(Ms,"releaseRuntimeDaemonOwnership");function Cs(e){let n=te(e.file);return Or(n,e.owner)?(L.unlinkSync(e.file),!0):!1}o(Cs,"unlinkRuntimeDaemonLockIfOwned");function te(e){if(L.existsSync(e))try{let n=JSON.parse(L.readFileSync(e,"utf8"));return Os(n)?n:void 0}catch{return}}o(te,"readRuntimeDaemonLockOwner");function _s(e,n,t){Ce(e);let r=Wn(t),s=te(e.lockFile);if(r==="healthy")return t.state&&s!==void 0&&Mr(s,t.state)?{kind:"attach",state:t.state,health:r}:{kind:"unhealthy",health:"mismatch",...t.state!==void 0?{state:t.state}:{},...s!==void 0?{lockOwner:s}:{}};if(r==="unhealthy"&&t.state!==void 0&&Lc(t.state.status)&&t.pidAlive&&s!==void 0)return{kind:"wait",lockOwner:s,state:t.state,health:"missing"};if(r==="unhealthy"||r==="mismatch")return{kind:"unhealthy",health:r,...t.state!==void 0?{state:t.state}:{},...s!==void 0?{lockOwner:s}:{}};let a=r==="stale"?"stale":"missing",d=Xe(e);if(!d){let u=te(e.lockFile)??Dc(e);return u?{kind:"wait",lockOwner:u,...t.state!==void 0?{state:t.state}:{},health:a}:{kind:"unhealthy",health:"unhealthy",...t.state!==void 0?{state:t.state}:{}}}try{return Ee(e).mode!=="daemon"?{kind:"unhealthy",health:"unhealthy",...t.state!==void 0?{state:t.state}:{}}:Tc(e,n,t,a)}finally{nn(e,d)}}o(_s,"claimRuntimeDaemonOwnership");function Tc(e,n,t,r){let s=te(e.lockFile);if(r==="stale"){if(s!==void 0&&(t.observedLockOwner!==void 0&&!Or(s,t.observedLockOwner)||t.state!==void 0&&!Mr(s,t.state)))return St(s,t,r);Is(e)}else if(s!==void 0){if(t.observedLockOwner!==void 0&&!Mr(s,t.observedLockOwner))return St(s,t,r);if(t.lockOwnerPidAlive===!1)Is(e);else return St(s,t,r)}if(r==="missing"){let u=te(e.lockFile);if(u!==void 0)return{kind:"wait",lockOwner:u,...t.state!==void 0?{state:t.state}:{},health:r}}let a=As(e,n);if(a)return{kind:"claim",lock:a,health:r};let d=te(e.lockFile);return d?St(d,t,r):{kind:"unhealthy",health:"unhealthy",...t.state!==void 0?{state:t.state}:{}}}o(Tc,"claimAvailableRuntimeDaemonOwnership");function St(e,n,t){return{kind:"wait",lockOwner:e,...n.state!==void 0?{state:n.state}:{},health:t}}o(St,"waitForRuntimeOwner");function Mr(e,n){return e.runtimeId===n.runtimeId&&e.pid===n.pid}o(Mr,"sameRuntimeOwner");function Or(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(Or,"sameRuntimeLockOwner");function Is(e){L.rmSync(e.lockFile,{force:!0}),L.rmSync(e.stateFile,{force:!0}),L.rmSync(e.tokenFile,{force:!0})}o(Is,"removeRuntimeDaemonOwnershipFiles");function Ac(e){L.rmSync(e.stateFile,{force:!0}),L.rmSync(e.tokenFile,{force:!0})}o(Ac,"removeRuntimeDaemonStateFiles");function Wn(e){return e.state?e.endpointReachable&&!e.identityMatches?"mismatch":e.pidAlive&&e.endpointReachable&&e.identityMatches?"healthy":!e.pidAlive&&!e.endpointReachable?"stale":"unhealthy":"missing"}o(Wn,"classifyRuntimeDaemonHealth");function Mc(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"&&Nc(n.status)&&(n.configHome===void 0||typeof n.configHome=="string")&&(n.lastError===void 0||typeof n.lastError=="string")}o(Mc,"isRuntimeDaemonState");function Cc(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let n=e;return typeof n.time=="string"&&_c(n.level)&&typeof n.message=="string"&&(n.data===void 0||Oc(n.data))}o(Cc,"isRuntimeDaemonLogEntry");function _c(e){return e==="info"||e==="warn"||e==="error"}o(_c,"isRuntimeDaemonLogLevel");function Oc(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}o(Oc,"isPlainRecord");function Os(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(Os,"isRuntimeDaemonLockOwner");function Nc(e){return e==="starting"||e==="ready"||e==="draining"||e==="stopping"||e==="unhealthy"||e==="crashed"}o(Nc,"isRuntimeDaemonStatus");function Lc(e){return e==="starting"||e==="draining"||e==="stopping"}o(Lc,"isRuntimeDaemonTransitionStatus");function Nr(e){return e instanceof Error&&"code"in e}o(Nr,"isNodeFileError");function Lr(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}o(Lr,"isRecord");import{createHash as jc,randomUUID as In}from"node:crypto";import*as Pn from"node:fs/promises";import*as zn from"node:net";import Fc from"node:os";import Ns from"node:path";import{StringDecoder as jr}from"node:string_decoder";var qc=8*1024*1024,bn=class extends Error{constructor(t,r,s){super(t);this.code=r;this.data=s;this.name="RuntimeDaemonTransportError"}code;data;static{o(this,"RuntimeDaemonTransportError")}};function qr(e){return e instanceof bn}o(qr,"isRuntimeDaemonTransportError");function En(e="default",n){let t=_r(e),r=n===void 0?t:`${t}-${$c(Ns.resolve(n))}`;return process.platform==="win32"?{kind:"pipe",path:`\\\\.\\pipe\\kodax-runtime-${r}`}:{kind:"unix",path:Ns.join(Fc.tmpdir(),`kodax-runtime-${process.getuid?.()??"user"}-${r}.sock`)}}o(En,"defaultRuntimeDaemonEndpoint");function $c(e){return jc("sha256").update(e).digest("hex").slice(0,12)}o($c,"shortPathHash");function js(e,n={}){let t="",r=0,s=new jr("utf8"),a=n.maxFrameBytes??qc;if(!Number.isSafeInteger(a)||a<=0)throw new Error("Runtime daemon maxFrameBytes must be a positive safe integer.");let d=o(p=>{Kc(p,a),p.trim()&&e(cs(p))},"consumeLine"),u=o(p=>{t+=p,r+=Buffer.byteLength(p,"utf8")},"append");return{push(p){for(typeof p=="string"?(u(s.end()),s=new jr("utf8"),u(p)):u(s.write(p));;){let f=t.indexOf(`
|
|
62
|
+
`);if(f<0)break;let v=t.slice(0,f).replace(/\r$/,""),i=t.slice(0,f+1);t=t.slice(f+1),r-=Buffer.byteLength(i,"utf8"),d(v)}qs(r,a)},flush(){u(s.end()),s=new jr("utf8");let p=t.trim();t="",r=0,p.length>0&&d(p)}}}o(js,"createRuntimeDaemonFrameParser");async function je(e,n={}){let t=zn.createConnection(e.path);t.setEncoding("utf8");let r=new Promise(P=>{t.once("close",()=>P())});await Xc(t,n.connectTimeoutMs);let s=!1,a,d=`transport_${In().replace(/-/g,"")}`,u=In().replace(/-/g,"")+In().replace(/-/g,""),p=`connection_${In().replace(/-/g,"")}`,f=new Set,v=new Set,i={state:"connected",connectionId:p,reconnectable:!1},l=o((P,R)=>{if(i.state!=="disconnected"){i={state:"disconnected",connectionId:p,reason:P,reconnectable:R};for(let I of v)try{I(i)}catch{oe({source:"runtime.daemon.transport",level:"warn",message:"Runtime transport lifecycle listener failed."})}}},"disconnect"),c=new Map,w=js(P=>{if(Rn(P)){let R=c.get(P.id);if(!R)return;c.delete(P.id),R.resolve(P.result);return}if(yn(P)){if(!P.id)return;let R=c.get(P.id);if(!R)return;c.delete(P.id),R.reject(new bn(P.error.message,P.error.code,P.error.data));return}if(Bn(P))for(let R of f)try{R(P)}catch{oe({source:"runtime.daemon.transport",level:"warn",message:"Runtime transport notification listener failed."})}},{maxFrameBytes:n.maxFrameBytes});return t.on("data",P=>{try{w.push(P)}catch(R){s=!0;let I=kn(R);l(I.message,!0),Et(c,I),t.destroy(I)}}),t.on("close",()=>{s=!0,l("Runtime daemon transport closed.",!0),Et(c,new Error("Runtime daemon transport closed."))}),t.on("error",P=>{s=!0,l(P.message,!0),Et(c,P)}),{request(P,R,I){if(s)return Promise.reject(new Error("Runtime daemon transport is closed."));let k=`req_${In().replace(/-/g,"").slice(0,12)}`,x=P==="initialize"||P==="runtime.initialize"?Hc(R,d,u):R,g=I??(a!==void 0&&Ye(P)?{operationId:`op_${In().replace(/-/g,"")}`,journalEpoch:a}:void 0),h=gt(k,P,x,g),D;try{D=JSON.stringify(h)}catch(C){return Promise.reject(new bn(`Runtime daemon request params are not JSON-serializable: ${kn(C).message}`,"invalid_params"))}let T=new Promise((C,H)=>{c.set(k,{resolve:C,reject:H})});return t.write(`${D}
|
|
63
|
+
`),T.then(C=>{if(P==="initialize"||P==="runtime.initialize"){let H=xt(C);typeof H?.journalEpoch=="string"&&(a=H.journalEpoch)}return C})},subscribe(P){return f.add(P),{close(){f.delete(P)}}},subscribeLifecycle(P){return v.add(P),P(i),{close(){v.delete(P)}}},async close(){let P;if(!s){s=!0,l("Runtime daemon transport closed by client.",!1);try{w.flush()}catch(R){P=kn(R)}t.end(),t.destroy(),Et(c,new Error("Runtime daemon transport closed."))}if(await r,v.clear(),P!==void 0)throw P}}}o(je,"createRuntimeDaemonSocketClientTransport");function Hc(e,n,t){let r=xt(e)??{},s=xt(r.capabilities)??{},a=xt(r.clientInfo)??{name:"kodax-transport"};return{...r,capabilities:{...s,operationDeduplication:!0},clientInfo:{...a,instanceId:typeof a.instanceId=="string"?a.instanceId:n,instanceSecret:typeof a.instanceSecret=="string"?a.instanceSecret:t}}}o(Hc,"withDurableOperationCapability");function xt(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:void 0}o(xt,"asRecord");async function Fs(e){await Uc(e.endpoint);let n=zn.createServer(),t=new Set,r=new Set,s=!1;if(n.on("connection",a=>{if(s){a.destroy();return}t.add(a);let d=!1,u=o(i=>{if(a.destroyed)return;let l;try{l=JSON.stringify(i)}catch(c){let w=Ke({code:"internal_error",message:`Runtime daemon response is not JSON-serializable: ${kn(c).message}`},i.kind==="response"||i.kind==="error"?i.id:void 0);l=JSON.stringify(w)}a.write(`${l}
|
|
64
|
+
`)},"send"),p=e.createDispatcher(i=>u(i));r.add(p);let f=js(i=>{if(Dr(i)){p.handle(i).then(u,l=>{u(Ke({code:"internal_error",message:kn(l).message}))});return}if(yn(i)){u(i);return}u(Ke({code:"invalid_request",message:"Runtime daemon server expects request frames from clients."}))},{maxFrameBytes:e.maxFrameBytes}),v=o(i=>{if(d)return;d=!0;let l=kn(i);u(Ke({code:"invalid_frame",message:l.message,...qr(l)&&l.data!==void 0?{data:l.data}:{}})),a.end()},"rejectInvalidFrame");a.on("data",i=>{if(!d)try{f.push(i)}catch(l){v(l)}}),a.on("end",()=>{try{f.flush()}catch(i){v(i)}}),a.on("close",()=>{t.delete(a),r.delete(p),p.close()}),a.on("error",()=>{a.destroy()})}),await Bc(n,e.endpoint.path),e.endpoint.kind==="unix")try{await Pn.chmod(e.endpoint.path,384)}catch(a){throw await Ls(n),a}return{endpoint:e.endpoint,connectionCount(){return t.size},unref(){n.unref()},async close(){if(!s){s=!0;for(let a of r)a.close();r.clear();for(let a of t)a.destroy();t.clear(),await Ls(n)}}}}o(Fs,"createRuntimeDaemonSocketServer");function Kc(e,n){qs(Buffer.byteLength(e,"utf8"),n)}o(Kc,"assertFrameSize");function qs(e,n){if(!(e<=n))throw new bn(`Runtime daemon frame exceeds the ${n}-byte limit.`,"invalid_frame",{actualBytes:e,maxFrameBytes:n})}o(qs,"assertFrameByteSize");function Xc(e,n=2e3){return new Promise((t,r)=>{let s=setTimeout(()=>{a(),e.destroy(),r(new Error("Timed out connecting to runtime daemon."))},n);s.unref?.();let a=o(()=>{clearTimeout(s),e.off("connect",d),e.off("error",u)},"cleanup"),d=o(()=>{a(),t()},"onConnect"),u=o(p=>{a(),r(p)},"onError");e.once("connect",d),e.once("error",u)})}o(Xc,"waitForConnect");function Bc(e,n){return new Promise((t,r)=>{let s=o(()=>{e.off("listening",a),e.off("error",d)},"cleanup"),a=o(()=>{s(),t()},"onListening"),d=o(u=>{s(),r(u)},"onError");e.once("listening",a),e.once("error",d),e.listen(n)})}o(Bc,"waitForListen");async function Uc(e){if(e.kind!=="unix")return;let n;try{n=await Pn.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 Wc(e.path))throw new Error(`Runtime daemon Unix endpoint is already accepting connections: ${e.path}`);try{await Pn.unlink(e.path)}catch(t){if(!Fr(t)||t.code!=="ENOENT")throw t}}o(Uc,"prepareUnixSocketEndpoint");function Wc(e){return new Promise((n,t)=>{let r=zn.createConnection(e),s=setTimeout(()=>{a(),r.destroy(),t(new Error(`Timed out probing runtime daemon Unix endpoint: ${e}`))},250);s.unref?.();let a=o(()=>{clearTimeout(s),r.off("connect",d),r.off("error",u)},"cleanup"),d=o(()=>{a(),r.end(),r.destroy(),n(!0)},"onConnect"),u=o(p=>{if(a(),r.destroy(),Fr(p)&&(p.code==="ECONNREFUSED"||p.code==="ENOENT")){n(!1);return}t(p)},"onError");r.once("connect",d),r.once("error",u)})}o(Wc,"unixSocketAcceptsConnections");function Ls(e){return new Promise((n,t)=>{e.close(r=>{r?t(r):n()})})}o(Ls,"closeNetServer");function Et(e,n){for(let t of e.values())t.reject(n);e.clear()}o(Et,"rejectPending");function kn(e){return e instanceof Error?e:new Error(String(e))}o(kn,"normalizeTransportError");function Fr(e){return e instanceof Error&&"code"in e}o(Fr,"isNodeFileError");async function Dt(e,n={}){let t=Ts(e);if(!t)return{pidAlive:!1,endpointReachable:!1,identityMatches:!1};let r=te(e.lockFile),s=(n.isPidAlive??Hs)(t.pid),a=tn(t),d=Un(e),u;try{u=await(n.createTransport?n.createTransport(a):je(a,{connectTimeoutMs:n.connectTimeoutMs??1e3}));let p=u.request("initialize",{profile:t.profile,connectionPurpose:"probe",...d!==void 0?{token:d}:{}});p.catch(()=>{});let f=await zc(p,n.handshakeTimeoutMs??1e3,"Timed out waiting for runtime daemon handshake.");return{state:t,pidAlive:s,endpointReachable:!0,identityMatches:Gc(f,t)&&Jc(r,t),...r!==void 0?{observedLockOwner:r}:{}}}catch(p){return qr(p)&&p.code==="unauthorized"?{state:t,pidAlive:s,endpointReachable:!0,identityMatches:!1,...r!==void 0?{observedLockOwner:r}:{}}:{state:t,pidAlive:s,endpointReachable:!1,identityMatches:!1,...r!==void 0?{observedLockOwner:r}:{}}}finally{await u?.close?.()}}o(Dt,"observeRuntimeDaemonHealth");async function $r(e,n,t={}){let r=await Dt(e,t),s=r.state?void 0:te(e.lockFile),a=s?{...r,observedLockOwner:s,lockOwnerPidAlive:(t.isPidAlive??Hs)(s.pid)}:r;return _s(e,n,a)}o($r,"resolveRuntimeDaemonOwnership");function tn(e){return{kind:process.platform==="win32"||e.endpoint.startsWith("\\\\.\\pipe\\")?"pipe":"unix",path:e.endpoint}}o(tn,"runtimeDaemonEndpointFromState");function Hs(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch(n){return Vc(n)&&n.code==="EPERM"}}o(Hs,"isRuntimeDaemonPidAlive");async function zc(e,n,t){let r;try{return await Promise.race([e,new Promise((s,a)=>{r=setTimeout(()=>a(new Error(t)),n),r.unref?.()})])}finally{r!==void 0&&clearTimeout(r)}}o(zc,"withTimeout");function Gc(e,n){let t=$s(e),r=$s(t?.identity)??t;return r?.runtimeId===n.runtimeId&&r.profile===n.profile}o(Gc,"daemonIdentityMatchesState");function Jc(e,n){return e?.runtimeId===n.runtimeId&&e.pid===n.pid}o(Jc,"runtimeDaemonLockMatchesState");function $s(e){if(!(e===null||typeof e!="object"||Array.isArray(e)))return e}o($s,"asRecord");function Vc(e){return e instanceof Error&&"code"in e}o(Vc,"isNodeProcessError");import Na from"node:path";import{randomUUID as Dn}from"node:crypto";var y={type:"string"},J={type:"boolean"},B={type:"integer"},M={type:"object",additionalProperties:!0},Ks={},xe={type:"array",items:M},rn={oneOf:[{type:"null"},M]},Y=E({ok:J},["ok"]),ie=E({}),At={initialize:{params:E({profile:y,token:y,autoStart:J,endpoint:y,connectionPurpose:{type:"string",enum:["client","probe"]},clientInfo:M,capabilities:M},[],!0),result:E({identity:M,capabilities:M},["identity","capabilities"],!0)},"runtime.initialize":{params:E({profile:y,token:y,autoStart:J,endpoint:y,connectionPurpose:{type:"string",enum:["client","probe"]},clientInfo:M,capabilities:M},[],!0),result:E({identity:M,capabilities:M},["identity","capabilities"],!0)},ping:{params:ie,result:E({ok:J,runtimeId:y},["ok","runtimeId"])},"runtime.identity":{params:ie,result:M},"runtime.status":{params:ie,result:M},"runtime.shutdown":{params:ie,result:Y},"runtime.capabilities":{params:ie,result:M},"daemon.status":{params:ie,result:M},"daemon.stop":{params:ie,result:Y},"daemon.logs":{params:ie,result:M},"daemon.preflight":{params:ie,result:M},"daemon.management.get":{params:ie,result:E({runtimeId:y,revision:B,ownerPolicy:Ws(),owner:ul(),preflight:M},["runtimeId","revision","ownerPolicy","owner","preflight"])},"daemon.rollbackToInline":{params:E({expectedRuntimeId:y,expectedRevision:B,expectedOwnerPolicyRevision:B},["expectedRuntimeId","expectedRevision","expectedOwnerPolicyRevision"]),result:E({accepted:{type:"boolean",enum:[!0]},runtimeId:y,revision:B,ownerPolicy:Ws("inline")},["accepted","runtimeId","revision","ownerPolicy"])},"operation.get":{params:E({operationId:y,journalEpoch:y},["operationId","journalEpoch"]),result:M},"session.create":{params:rl(),result:sn()},"session.load":{params:E({sessionId:y},["sessionId"]),result:sn()},"session.list":{params:il(),result:we(sn())},"session.transcript":{params:E({sessionId:y},["sessionId"]),result:rn},"session.transcript.page":{params:M,result:rn},"session.transcript.entryChunk":{params:M,result:rn},"session.transcript.search":{params:nl(),result:le(tl())},"session.observe":{params:E({sessionId:y},["sessionId"]),result:M},"session.fork":{params:cl(),result:le(sn())},"session.notice.append":{params:E({sessionId:y,content:y,source:y},["sessionId","content"]),result:rn},"session.rewind":{params:E({sessionId:y,selector:y},["sessionId"]),result:le(sn())},"session.active_entry.set":{params:zs(),result:le(sn())},"session.activeEntry.set":{params:zs(),result:le(sn())},"session.compact":{params:ll(),result:M},"session.archive":{params:E({sessionId:y},["sessionId"]),result:Y},"session.unarchive":{params:E({sessionId:y},["sessionId"]),result:Y},"session.delete":{params:E({sessionId:y},["sessionId"]),result:Y},"session.settings.get":{params:E({sessionId:y},["sessionId"]),result:M},"session.settings.getVersioned":{params:E({sessionId:y},["sessionId"]),result:M},"session.autoMode.getStats":{params:E({sessionId:y},["sessionId"]),result:le(M)},"session.settings.update":{params:E({sessionId:y,patch:M},["sessionId","patch"]),result:M},"session.settings.updateVersioned":{params:E({sessionId:y,patch:M,expectedRevision:B},["sessionId","patch","expectedRevision"]),result:M},"run.start":{params:ml(),result:el()},"run.input.submit":{params:E({sessionId:y,afterRunId:y,delivery:{type:"string",enum:["after_turn","interrupt"]},input:Ks,credential:M,hostTools:M},["sessionId","afterRunId","delivery","input"]),result:M},"run.get":{params:on(),result:Gs()},"run.list":{params:pl(),result:we(Gs())},"run.await":{params:on(),result:fl()},"run.abort":{params:on(),result:Y},"run.model.set":{params:E({runId:y,model:y},["runId"],!0),result:Y},"run.provider.set":{params:E({runId:y,provider:y},["runId","provider"]),result:Y},"run.reasoning.set":{params:E({runId:y,reasoning:y},["runId"],!0),result:Y},"run.setModel":{params:E({runId:y,model:y},["runId"],!0),result:Y},"run.setProvider":{params:E({runId:y,provider:y},["runId","provider"]),result:Y},"run.setReasoning":{params:E({runId:y,reasoning:y},["runId"],!0),result:Y},"event.subscribe":{params:Xs(ra()),result:Us()},"event.unsubscribe":{params:E({subscriptionId:y},["subscriptionId"]),result:Y},"event.replay":{params:gl(),result:we(Rl())},"permission.list":{params:Hr(),result:we(Js())},"permission.listPending":{params:Hr(),result:we(Js())},"permission.request":{params:ia(),result:Vs()},"permission.respond":{params:E({requestId:y,runId:y,decision:Vs()},["requestId","decision"]),result:J},"permission.grants.list":{params:ie,result:M},"permission.grants.revoke":{params:E({grantId:y,expectedRevision:B},["grantId","expectedRevision"]),result:J},"user_input.listPending":{params:Hr(),result:we(M)},"user_input.respond":{params:E({requestId:y,answer:Ks,runId:y,expectedRevision:B},["requestId","answer"],!0),result:M},"user_input.dismiss":{params:E({requestId:y,runId:y,expectedRevision:B},["requestId"],!0),result:M},"credential.register":{params:E({leaseId:y,providers:{type:"array",items:y},expiresAt:y},["leaseId","providers"],!0),result:M},"credential.get":{params:E({leaseId:y},["leaseId"]),result:{oneOf:[M,{type:"null"}]}},"credential.revoke":{params:E({leaseId:y},["leaseId"]),result:J},"credential.supply":{params:E({requestId:y,credential:y,error:y},["requestId"],!0),result:Y},"host_tool.register":{params:E({leaseId:y,tools:{type:"array",items:M}},["leaseId","tools"]),result:M},"host_tool.get":{params:E({leaseId:y},["leaseId"]),result:{oneOf:[M,{type:"null"}]}},"host_tool.invocation.get":{params:E({invocationId:y},["invocationId"]),result:{oneOf:[M,{type:"null"}]}},"host_tool.revoke":{params:E({leaseId:y},["leaseId"]),result:J},"host_tool.complete":{params:E({invocationId:y,result:M,error:y},["invocationId"],!0),result:Y},"workflow.list":{params:Qs(),result:xe},"workflow.get":{params:on(),result:{oneOf:[M,{type:"null"}]}},"workflow.subscribe":{params:Xs(Qs()),result:Us()},"workflow.unsubscribe":{params:E({subscriptionId:y},["subscriptionId"]),result:Y},"workflow.pause":{params:on(),result:J},"workflow.resume":{params:on(),result:J},"workflow.stop":{params:on(),result:J},"learning.list":{params:ol(),result:dl()},"learning.get":{params:E({nameOrSlug:y},["nameOrSlug"]),result:ta()},"learning.snapshot":{params:ie,result:al()},"learning.events":{params:E({afterRevision:B},[],!0),result:we(sl())},"learning.acknowledge":{params:E({nameOrSlug:y},["nameOrSlug"]),result:Y},"learning.snooze":{params:E({nameOrSlug:y,until:y},["nameOrSlug","until"]),result:Y},"learning.reject":{params:E({nameOrSlug:y},["nameOrSlug"]),result:Y},"learning.disable":{params:E({nameOrSlug:y},["nameOrSlug"]),result:Y},"learning.rollback":{params:E({nameOrSlug:y},["nameOrSlug"]),result:Y},"learning.promote":{params:E({nameOrSlug:y,scope:y},["nameOrSlug","scope"]),result:Y},"learning.review":{params:E({nameOrSlug:y},["nameOrSlug"]),result:Y},"learning.trust":{params:E({nameOrSlug:y},["nameOrSlug"]),result:Y},"config.read":{params:ie,result:M},"config.patch":{params:E({patch:M},["patch"]),result:M},"config.reload":{params:ie,result:E({ok:J,config:M},["ok","config"])},"model.list":{params:E({provider:y},[],!0),result:{oneOf:[M,xe]}},"provider.list":{params:ie,result:xe},"provider.custom.list":{params:ie,result:xe},"provider.custom.upsert":{params:E({config:M},["config"]),result:M},"provider.custom.remove":{params:E({name:y},["name"]),result:J},"mcp.server.list":{params:ie,result:M},"mcp.server.get":{params:E({name:y},["name"]),result:{oneOf:[M,{type:"null"}]}},"mcp.server.validate":{params:E({name:y,config:M},["name","config"]),result:{oneOf:[E({ok:J,config:M},["ok","config"],!0),E({ok:J,error:y},["ok","error"],!0)]}},"mcp.server.upsert":{params:E({name:y,config:M},["name","config"]),result:M},"mcp.server.delete":{params:E({name:y},["name"]),result:J},"mcp.server.remove":{params:E({name:y},["name"]),result:J},"mcp.server.reload":{params:ie,result:E({ok:J,servers:xe},["ok","servers"])},"mcp.tool.list":{params:E({server:y,forceRefresh:J},[],!0),result:xe},"extension.list":{params:ie,result:E({active:J,extensions:xe,diagnostics:M},["active","extensions"],!0)},"extension.reload":{params:ie,result:E({ok:J,active:J},["ok","active"],!0)},"command.list":{params:E({projectRoot:y},[],!0),result:xe},"command.resolve":{params:E({name:y,projectRoot:y},["name"],!0),result:rn},"skill.list":{params:E({projectRoot:y,userInvocableOnly:J},[],!0),result:xe},"skill.describe":{params:E({name:y,projectRoot:y},["name"],!0),result:rn},"skill.read":{params:E({name:y,projectRoot:y},["name"],!0),result:rn},"artifact.create":{params:E({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:Ys()},"artifact.get":{params:E({artifactId:y},["artifactId"]),result:le(Ys())},"artifact.delete":{params:E({artifactId:y},["artifactId"]),result:J},"agentRegistrations.list":{params:ie,result:xe},"agentRegistrations.upsert":{params:E({registration:M,expectedConfigurationRevision:le(y),expectedManagementOwner:le(y)},["registration"]),result:M},"agentRegistrations.setEnabled":{params:E({agentId:y,enabled:J,expectedConfigurationRevision:le(y),expectedManagementOwner:le(y),claimOwner:y},["agentId","enabled"]),result:le(M)},"agentRegistrations.remove":{params:E({agentId:y,expectedConfigurationRevision:le(y),expectedManagementOwner:le(y)},["agentId"]),result:J},"agents.listDispatchable":{params:M,result:xe},"agents.describe":{params:E({agentId:y,query:M},["agentId","query"]),result:le(M)},"agents.preflight":{params:M,result:M},"agents.tree":{params:E({sessionId:y},["sessionId"]),result:M},"agents.detail":{params:E({sessionId:y,actorPath:y},["sessionId","actorPath"]),result:M},"agents.spawn":{params:E({sessionId:y,input:M},["sessionId","input"]),result:M},"agents.send":{params:E({sessionId:y,actorPath:y,content:y,classification:{enum:["public","internal","sensitive"]}},["sessionId","actorPath","content"],!0),result:Y},"agents.followup":{params:E({sessionId:y,actorPath:y,objective:y,expectedRevision:B},["sessionId","actorPath","objective"],!0),result:M},"agents.interrupt":{params:E({sessionId:y,actorPath:y,reason:y},["sessionId","actorPath"],!0),result:Y},"agents.output":{params:E({sessionId:y,actorPath:y,turnId:y},["sessionId","actorPath"],!0),result:M},"agents.events":{params:E({sessionId:y,afterSequence:B},["sessionId"],!0),result:xe},"agents.wait":{params:E({sessionId:y,afterSequence:B,timeoutMs:B},["sessionId"],!0),result:le(M)},"context.budget.get":{params:Bs(),result:{oneOf:[M,{type:"null"}]}},"tool.exposure.preview":{params:Bs(),result:{oneOf:[M,{type:"null"}]}}},Zs={event:E({subscriptionId:y,event:M},["subscriptionId","event"]),"credential.request":M,"host_tool.invoke":M,"runtime.warning":M},ea={protocol:He,version:1,methods:At,notifications:Zs},Qc=JSON.stringify(ea,null,2);function Yc(){return gn}o(Yc,"listRuntimeDaemonSchemaMethods");function xn(e,n,t="$"){if(e.oneOf!==void 0)return e.oneOf.filter(d=>xn(d,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=>Zc(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((d,u)=>xn(a,d,`${t}[${u}]`))}if(!na(n))return[];let s=[];for(let a of e.required??[])(!Object.prototype.hasOwnProperty.call(n,a)||n[a]===void 0)&&s.push(`${t}.${a} is required.`);for(let[a,d]of Object.entries(n)){if(d===void 0)continue;let u=e.properties?.[a];if(u!==void 0){s.push(...xn(u,d,`${t}.${a}`));continue}e.additionalProperties===!1?s.push(`${t}.${a} is not allowed.`):typeof e.additionalProperties=="object"&&s.push(...xn(e.additionalProperties,d,`${t}.${a}`))}return s}o(xn,"validateRuntimeDaemonJsonSchema");function Zc(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 na(n);case"string":return typeof n=="string"}}o(Zc,"matchesJsonSchemaType");function na(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}o(na,"isJsonObject");function E(e,n=[],t=!1){return{type:"object",properties:e,required:n,additionalProperties:t}}o(E,"objectSchema");function on(){return E({runId:y},["runId"])}o(on,"runIdParamsSchema");function Xs(e){return E({filter:e})}o(Xs,"filterParamsSchema");function Bs(){return E({sessionId:y,runId:y},[],!0)}o(Bs,"diagnosticParamsSchema");function Us(){return E({subscriptionId:y},["subscriptionId"])}o(Us,"subscriptionSchema");function el(){return E({runId:y,sessionId:y,turnId:y},["runId","sessionId"],!0)}o(el,"runStartedSchema");function we(e){return{type:"array",items:e}}o(we,"arraySchema");function le(e){return{oneOf:[{type:"null"},e]}}o(le,"nullableSchema");function nl(){return E({sessionId:y,query:y,limit:B,role:{type:"string",enum:["user","assistant"]},scope:{type:"string",enum:["compacted","all"]}},["sessionId","query"])}o(nl,"transcriptSearchParamsSchema");function tl(){let e=E({entryId:y,logicalId:y,sourceEntryId:y,timestamp:y,role:{type:"string",enum:["user","assistant"]},source:{type:"string",enum:["user","assistant","tool","child_task"]},active:J,score:{type:"number"},snippet:y,citation:y,entryIndex:B},["entryId","timestamp","role","source","active","score","snippet","citation","entryIndex"]);return E({revision:y,hits:we(e)},["revision","hits"])}o(tl,"transcriptSearchResultSchema");function rl(){return E({sessionId:y,title:y,projectPath:y,gitRoot:y,surface:y,profileId:y,tag:y})}o(rl,"createSessionParamsSchema");function sn(){return E({id:y,cursor:y,title:y,gitRoot:y,workspaceRoot:y,surface:y,profileId:y,createdAt:y,msgCount:B,tag:y,projectKey:y,archived:J},["id","title"],!0)}o(sn,"sessionSchema");function il(){return E({projectRoot:y,scope:{enum:["user","managed-task-worker","all"]},includeArchived:J,limit:B,before:y,tag:y,surface:y,cursor:y})}o(il,"sessionFilterSchema");function ol(){return E({search:y,carrier:{enum:["skill","extension","workflow_handoff"]},lifecycle:{enum:["opportunity","drafting","ready","testing","active_learned","promoted_user","quarantined","archived","rejected"]},limit:B,cursor:y})}o(ol,"learningQuerySchema");function ta(){return E({schemaVersion:{type:"integer",enum:[1]},capabilityId:y,displayName:y,slug:y,carrier:{enum:["skill","extension","workflow_handoff"]},lifecycle:Kr(),revision:B,createdAt:y,updatedAt:y,source:E({kind:{enum:["learning_controller","f224_proposal"]},proposalId:y},["kind"]),lastAction:{enum:["review","trust","reject","disable","rollback","archive","restore","promote"]},artifactPath:y,previousGoodRevision:B,previousLifecycle:Kr(),diagnostics:we(y)},["schemaVersion","capabilityId","displayName","slug","carrier","lifecycle","revision","createdAt","updatedAt","source"])}o(ta,"learnedCapabilitySchema");function Kr(){return{enum:["opportunity","drafting","ready","testing","active_learned","promoted_user","quarantined","archived","rejected"]}}o(Kr,"learningLifecycleSchema");function sl(){return E({schemaVersion:{type:"integer",enum:[1]},sequence:B,eventId:y,capabilityId:y,capabilityRevision:B,kind:{enum:["opportunity","drafting","ready","testing","activated","promoted","attention","archived","rejected"]},lifecycle:Kr(),displayName:y,slug:y,carrier:{enum:["skill","extension","workflow_handoff"]},createdAt:y},["schemaVersion","sequence","eventId","capabilityId","capabilityRevision","kind","lifecycle","displayName","slug","carrier","createdAt"])}o(sl,"learningEventSchema");function al(){return E({ready:B,newlyActive:B,attention:B,active:B,revision:B},["ready","newlyActive","attention","active","revision"])}o(al,"learningSnapshotSchema");function dl(){return E({items:we(ta()),nextCursor:y,revision:B},["items","revision"])}o(dl,"learningPageSchema");function Ws(e){return E({mode:{type:"string",enum:e===void 0?["daemon","inline"]:[e]},revision:B,updatedAt:y},["mode","revision","updatedAt"])}o(Ws,"ownerPolicySchema");function ul(){return E({runtimeId:y,pid:B,createdAt:y,kind:{type:"string",enum:["daemon","inline"]}},["runtimeId","pid","createdAt"])}o(ul,"ownerIdentitySchema");function cl(){return E({sessionId:y,selector:y,newSessionId:y,title:y},["sessionId"])}o(cl,"forkSessionParamsSchema");function zs(){return E({sessionId:y,entryId:y},["sessionId","entryId"])}o(zs,"activeEntryParamsSchema");function ll(){return E({sessionId:y,provider:y,model:y,customInstructions:y,contextWindow:B},["sessionId"])}o(ll,"compactSessionParamsSchema");function ml(){return E({sessionId:y,prompt:y,input:{oneOf:[M,we(M)]},mode:{enum:["coding","managed_task"]},permissionBroker:{enum:["runtime","client"]},options:M},["sessionId"],!0)}o(ml,"startRunParamsSchema");function pl(){return E({sessionId:y,phase:{oneOf:[Tt(),we(Tt())]}})}o(pl,"runFilterSchema");function Gs(){return E({runId:y,sessionId:y,turnId:y,phase:Tt(),startedAt:y,endedAt:y,provider:y,model:y,reasoning:y,error:y},["runId","sessionId","phase","startedAt","provider"],!0)}o(Gs,"runStatusSchema");function fl(){return E({runId:y,sessionId:y,phase:Tt(),result:M,error:{oneOf:[y,M]}},["runId","sessionId","phase"],!0)}o(fl,"runResultSchema");function Tt(){return{enum:["queued","running","waiting_permission","waiting_user_input","completed","failed","cancelled","interrupted"]}}o(Tt,"runPhaseSchema");function ra(){return E({sessionId:y,runId:y,type:{oneOf:[y,we(y)]}})}o(ra,"eventFilterSchema");function gl(){return E({...ra().properties??{},sinceSeq:B,limit:B})}o(gl,"eventReplayFilterSchema");function Rl(){return E({id:y,seq:B,time:y,sessionId:y,runId:y,turnId:y,type:y,payload:{}},["id","seq","time","sessionId","runId","type","payload"],!0)}o(Rl,"runtimeEventSchema");function Hr(){return E({sessionId:y,runId:y,toolName:y})}o(Hr,"permissionFilterSchema");function ia(){return E({sessionId:y,runId:y,turnId:y,toolCallId:y,toolName:y,reason:y,risk:{enum:["low","medium","high"]},inputPreview:y,toolInput:M,executionCwd:{type:"string",maxLength:4096},expiresAt:y,timeoutMs:B},["sessionId","runId","toolName"])}o(ia,"permissionRequestInputSchema");function Js(){let{toolInput:e,...n}=ia().properties??{};return E({...n,inputPreview:{type:"string",maxLength:8192},grantSuggestions:we(E({id:y,kind:{enum:["session","persistent"]},label:{type:"string",maxLength:512}},["id","kind","label"])),id:y,createdAt:y},["id","sessionId","runId","toolName","createdAt"],!0)}o(Js,"permissionRequestSchema");function Vs(){return{oneOf:[E({type:{enum:["allow_once"]}},["type"]),E({type:{enum:["allow_session"]},suggestionId:y},["type","suggestionId"]),E({type:{enum:["allow_always"]},suggestionId:y},["type","suggestionId"]),E({type:{enum:["allow_always"]},scope:E({toolName:y,sessionId:y,matcher:yl()})},["type","scope"]),E({type:{enum:["reject"]},reason:y},["type"])]}}o(Vs,"permissionDecisionSchema");function yl(){let e={version:{type:"integer",enum:[1]},toolName:y,fingerprint:y};return{oneOf:[E({...e,kind:{enum:["exact-command"]},shell:{enum:["cmd","posix"]},commandFingerprint:y,cwd:y,executable:y,argvFingerprint:y,background:J},["version","kind","toolName","fingerprint","shell","commandFingerprint","cwd","background"]),E({...e,kind:{enum:["exact-path"]},path:y},["version","kind","toolName","fingerprint","path"]),E({...e,kind:{enum:["exact-call"]},cwd:y,inputFingerprint:y},["version","kind","toolName","fingerprint","cwd","inputFingerprint"])]}}o(yl,"runtimePermissionMatcherSchema");function Qs(){return E({runId:y,activeOnly:J,limit:B})}o(Qs,"workflowFilterSchema");function Ys(){return E({id:y,kind:{enum:["image","file","video"]},path:y,sizeBytes:B,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(Ys,"artifactSchema");import{createHash as wl,randomUUID as Gn}from"node:crypto";import*as de from"node:fs";import hl from"node:path";var Sl=6e4,vl=1048576,Il=64,kl=4096,oa=1e3;function Br(){return{callTimeoutMs:da("KODAX_REVERSE_CALL_TIMEOUT_MS",Sl),maxResultBytes:da("KODAX_HOST_TOOL_MAX_RESULT_BYTES",vl)}}o(Br,"runtimeDaemonReverseBridgeLimits");function Ur(e,n={}){let t=Br(),r=new Map,s=new Map,a=new Map,d=new Map,u=new Map((n.initialInvocations??[]).map(g=>[g.invocationId,g])),p=new Set,f=new Map,v=new Map,i,l=!1,c=o(()=>{if(l)throw z("host_tool_unavailable","Host bridge connection is closed.")},"requireOpen"),w=o(()=>{let g=Date.now();for(let[h,D]of r)D.expiresAt!==void 0&&Date.parse(D.expiresAt)<=g&&r.delete(h)},"pruneExpiredCredentials"),P=o(g=>{for(let h of a.values())clearTimeout(h.timer),h.reject(z("credential_unavailable",g));a.clear()},"rejectPendingCredentialRequests"),R=o(()=>{for(let[g,h]of d)h.dispatched&&(d.delete(g),clearTimeout(h.timer),I(g,"unknown"),h.reject(z("host_tool_unknown","Host tool client disconnected; the side-effect outcome is unknown.")))},"rejectDispatchedHostCalls"),I=o((g,h)=>{let D=u.get(g);if(D===void 0)return;let T={...D,state:h,updatedAt:new Date().toISOString()},C=new Map(u);for(C.delete(g),C.set(g,T);C.size>oa;){let H=C.keys().next().value;if(H===void 0)break;C.delete(H)}n.onInvocationsChanged?.([...C.values()]),u.clear();for(let[H,m]of C)u.set(H,m)},"updateHostToolInvocation"),k=o((g,h)=>{let D=i;if(!(h.dispatched||D===void 0||!p.has(h.leaseId)))try{I(g,"dispatched"),h.dispatched=!0,D.notify(h.notification)}catch{d.delete(g),clearTimeout(h.timer),I(g,"unknown"),h.reject(z("host_tool_unknown","Host tool transport failed after durable dispatch; the side-effect outcome is unknown."))}},"dispatchPendingHostCall"),x=o(async g=>{if(c(),s.get(g.lease.id)!==g.lease)throw z("host_tool_unavailable","Host tool lease was revoked.");let h=`hostcall_${Gn().replace(/-/g,"")}`,D=Xn("host_tool.invoke",{invocationId:h,leaseId:g.lease.id,toolName:g.descriptor.name,sessionId:g.sessionId,runId:g.runId,input:g.toolInput,sideEffect:g.descriptor.sideEffect}),T={invocationId:h,leaseId:g.lease.id,toolName:g.descriptor.name,sessionId:g.sessionId,runId:g.runId,state:"prepared",updatedAt:new Date().toISOString()},C=new Map(u);for(C.set(h,T);C.size>oa;){let S=C.keys().next().value;if(S===void 0)break;C.delete(S)}n.onInvocationsChanged?.([...C.values()]),u.clear();for(let[S,b]of C)u.set(S,b);let H=new Promise((S,b)=>{let A=setTimeout(()=>{let _=d.get(h);_&&(d.delete(h),I(h,_.dispatched?"unknown":"not_dispatched"),b(z(_.dispatched?"host_tool_unknown":"host_tool_unavailable",_.dispatched?`Host tool ${g.descriptor.name} did not return a certain result before timeout.`:`Host tool ${g.descriptor.name} had no connected host before timeout.`)))},t.callTimeoutMs);A.unref?.(),d.set(h,{invocationId:h,resolve:S,reject:b,timer:A,notification:D,leaseId:g.lease.id,dispatched:!1})}),m=d.get(h);return m&&k(h,m),H},"invokeHostTool");return e!==void 0&&(i={id:`bridge_${Gn().replace(/-/g,"")}`,notify:e}),{attachTransport(g){c(),i!==void 0&&(P("Credential client connection was replaced."),R());let h=`bridge_${Gn().replace(/-/g,"")}`;return i={id:h,notify:g},p.clear(),{close(){i?.id===h&&(i=void 0,p.clear(),P("Credential client disconnected."),R())}}},registerCredential(g){if(c(),w(),g.providers.length===0||g.providers.some(D=>D.trim().length===0)||new Set(g.providers).size!==g.providers.length)throw z("invalid_params","Credential lease providers must be non-empty and unique.");if(g.expiresAt!==void 0&&!Number.isFinite(Date.parse(g.expiresAt)))throw z("invalid_params","Credential lease expiresAt must be an ISO timestamp.");if(r.has(g.leaseId))throw z("conflict","Credential lease ID is already registered on this connection.");let h={id:g.leaseId,providers:[...g.providers],...g.expiresAt!==void 0?{expiresAt:g.expiresAt}:{},providerSet:new Set(g.providers)};return r.set(g.leaseId,h),aa(h)},getCredential(g){w();let h=r.get(g);return h===void 0?void 0:aa(h)},revokeCredential(g){return r.delete(g)},supplyCredential(g){let h=a.get(g.requestId);return h?(a.delete(g.requestId),clearTimeout(h.timer),g.credential!==void 0&&g.credential.length>0?h.resolve(g.credential):h.reject(z("credential_unavailable",g.error??"Credential broker returned no credential.")),!0):!1},async acquireCredential(g){c();let h=r.get(g.leaseId);if(!h||!h.providerSet.has(g.provider))throw z("credential_unavailable","Credential lease is missing or does not allow this provider.");if(h.expiresAt!==void 0&&Date.parse(h.expiresAt)<=Date.now())throw r.delete(h.id),z("credential_unavailable","Credential lease expired.");let D=i;if(!D)throw z("credential_unavailable","Credential broker transport is unavailable.");let T=`credreq_${Gn().replace(/-/g,"")}`,C=h.expiresAt===void 0?t.callTimeoutMs:Math.min(t.callTimeoutMs,Math.max(1,Date.parse(h.expiresAt)-Date.now())),H=new Promise((m,S)=>{let b=setTimeout(()=>{a.delete(T),S(z("credential_unavailable","Credential lease expired or broker timed out."))},C);b.unref?.(),a.set(T,{resolve:m,reject:S,timer:b})});try{D.notify(Xn("credential.request",{requestId:T,leaseId:h.id,provider:g.provider,sessionId:g.sessionId,runId:g.runId}))}catch{let m=a.get(T);m&&(a.delete(T),clearTimeout(m.timer),m.reject(z("credential_unavailable","Credential request was not dispatched.")))}return H.then(m=>(f.set(g.runId,{leaseId:g.leaseId,provider:g.provider}),m))},registerHostTools(g){c();let h=g.tools.map(T=>T.name);if(h.length===0||h.length>Il||new Set(h).size!==h.length)throw z("invalid_params","Host tool names must be non-empty and unique.");if(s.has(g.leaseId))throw z("conflict","Host tool lease ID is already registered on this connection.");for(let T of g.tools)Dl(T);let D={id:g.leaseId,tools:g.tools.map(T=>({...T,inputSchema:{...T.inputSchema}})),byName:new Map(g.tools.map(T=>[T.name,T]))};return s.set(g.leaseId,D),p.add(g.leaseId),{id:D.id,tools:D.tools}},getHostTools(g){let h=s.get(g);if(h!==void 0){p.add(g);for(let[D,T]of d)T.leaseId===g&&k(D,T)}return h===void 0?void 0:{id:h.id,tools:h.tools}},revokeHostTools(g){return s.delete(g)},completeHostTool(g){let h=d.get(g.invocationId);if(!h)return!1;if(g.result!==void 0){if(typeof g.result.content!="string")throw z("invalid_params","Host tool result content must be a string.");Tl(g.result,t.maxResultBytes,"Host tool result")}return d.delete(g.invocationId),clearTimeout(h.timer),g.result!==void 0?(I(g.invocationId,"completed"),h.resolve(g.result)):(I(g.invocationId,"unknown"),h.reject(z("host_tool_unknown",g.error??"Host tool result is unknown."))),!0},getHostToolInvocation(g){return u.get(g)},createHostToolRuntime(g){c();let h=s.get(g.leaseId);if(!h)throw z("host_tool_unavailable","Host tool lease is missing.");return v.set(g.runId,g.leaseId),{hasCapabilityProvider(D){return D==="mcp"},async searchCapabilities(D,T,C){if(D!=="mcp"||C?.kind!==void 0&&C.kind!=="tool")return[];let H=T.toLowerCase();return h.tools.filter(m=>m.name.toLowerCase().includes(H)||m.description.toLowerCase().includes(H)).slice(0,C?.limit??h.tools.length).map(m=>({id:Al(h.id,m.name),name:m.name,description:m.description,kind:"tool",server:"host",inputSchema:m.inputSchema}))},async describeCapability(D,T){if(D!=="mcp")return;let C=ua(h,T);return C?{...C,id:T,kind:"tool",server:"host"}:void 0},async executeCapability(D,T,C){if(D!=="mcp")throw z("host_tool_unavailable","Unsupported host capability provider.");let H=ua(h,T);if(!H)throw z("host_tool_unavailable","Host tool is not bound to this run.");return await x({lease:h,descriptor:H,sessionId:g.sessionId,runId:g.runId,toolInput:C})},async readCapability(){throw z("host_tool_unavailable","Host tools do not expose resource reads.")},async getCapabilityPrompt(){},async getCapabilityPromptContext(){}}},getRunRequirements(g){let h=f.get(g),D=v.get(g);if(!(h===void 0&&D===void 0))return{...h!==void 0?{credential:{...h,state:"ready"}}:{},...D!==void 0?{hostTools:{leaseId:D,state:s.has(D)?p.has(D)?"ready":"waiting_host":"expired"}}:{}}},close(){if(!l){l=!0,i=void 0,p.clear(),r.clear(),s.clear(),P("Credential client disconnected.");for(let g of d.values())clearTimeout(g.timer),I(g.invocationId,g.dispatched?"unknown":"not_dispatched"),g.reject(z(g.dispatched?"host_tool_unknown":"host_tool_unavailable",g.dispatched?"Host tool client disconnected; the side-effect outcome is unknown.":"Host tool client disconnected before dispatch."));d.clear(),u.clear()}}}}o(Ur,"createRuntimeDaemonReverseBridge");function ca(e={}){let n=new Map,t=Pl(e.invocationStateFile),r=!1;return{attach(s){if(r)throw z("host_tool_unavailable","Host bridge hub is closed.");if(s.instanceSecret!==void 0&&(s.instanceSecret.length<32||s.instanceSecret.length>512))throw z("invalid_params","Runtime client instanceSecret must contain between 32 and 512 characters.");let a=s.instanceSecret===void 0?`ephemeral:${s.connectionId}`:`stable:${s.principalId}:${wl("sha256").update(s.instanceSecret).digest("hex")}`,d=a.startsWith("stable:")?bl(t.get(a)??[]):[],u=n.get(a)??Ur(void 0,{initialInvocations:d,...a.startsWith("stable:")?{onInvocationsChanged(f){t.set(a,f),sa(e.invocationStateFile,t)}}:{}});!n.has(a)&&d.length>0&&(t.set(a,d),sa(e.invocationStateFile,t)),n.set(a,u);let p=u.attachTransport(s.notify);return{bridge:u,close(){p.close()}}},getRunRequirements(s){for(let a of n.values()){let d=a.getRunRequirements(s);if(d!==void 0)return d}},close(){if(!r){r=!0;for(let s of n.values())s.close();n.clear()}}}}o(ca,"createRuntimeDaemonReverseBridgeHub");function bl(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(bl,"recoverHostToolInvocationStates");function Pl(e){if(e===void 0||!de.existsSync(e))return new Map;let n;try{n=JSON.parse(de.readFileSync(e,"utf8"))}catch(r){throw new Error(`Host Tool invocation recovery store is untrusted: ${Ml(r).message}`)}if(!Xr(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(!Xr(r)||typeof r.key!="string"||!Array.isArray(r.invocations))throw new Error("Host Tool invocation recovery store is untrusted: invalid client entry.");let s=r.invocations.map(El);t.set(r.key,s)}return t}o(Pl,"loadHostToolInvocationStore");function sa(e,n){if(e===void 0)return;de.mkdirSync(hl.dirname(e),{recursive:!0});let t=`${e}.${process.pid}.${Gn()}.tmp`,r;try{r=de.openSync(t,"wx",384),de.writeFileSync(r,`${JSON.stringify({version:1,clients:[...n].map(([s,a])=>({key:s,invocations:a}))},null,2)}
|
|
65
|
+
`,"utf8"),de.fsyncSync(r),de.closeSync(r),r=void 0,de.renameSync(t,e)}finally{r!==void 0&&de.closeSync(r),de.rmSync(t,{force:!0})}}o(sa,"saveHostToolInvocationStore");function El(e){if(!Xr(e)||typeof e.invocationId!="string"||typeof e.leaseId!="string"||typeof e.toolName!="string"||typeof e.sessionId!="string"||typeof e.runId!="string"||!xl(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(El,"parseHostToolInvocationStatus");function xl(e){return e==="prepared"||e==="dispatched"||e==="completed"||e==="unknown"||e==="not_dispatched"}o(xl,"isHostToolInvocationState");function aa(e){return{id:e.id,providers:e.providers,...e.expiresAt!==void 0?{expiresAt:e.expiresAt}:{}}}o(aa,"publicCredentialLease");function Dl(e){if(!e.name||!e.description||!e.inputSchema)throw z("invalid_params","Host tool descriptors require name, description, and inputSchema.");if(!["none","idempotent","non_idempotent"].includes(e.sideEffect))throw z("invalid_params",`Invalid host tool sideEffect for ${e.name}.`);if(!/^[A-Za-z][A-Za-z0-9_.-]{0,127}$/.test(e.name))throw z("invalid_params","Host tool name is invalid.");if(e.description.length>kl)throw z("invalid_params",`Host tool description is too long: ${e.name}.`)}o(Dl,"validateHostToolDescriptor");function Tl(e,n,t){let r;try{r=JSON.stringify(e)}catch{throw z("invalid_params",`${t} must be JSON-serializable.`)}if(Buffer.byteLength(r,"utf8")>n)throw z("invalid_params",`${t} exceeds the ${n}-byte limit.`)}o(Tl,"assertJsonByteLimit");function da(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(da,"positiveIntegerEnvironment");function Al(e,n){return`host:${e}:${n}`}o(Al,"hostToolCapabilityId");function ua(e,n){let t=`host:${e.id}:`;return n.startsWith(t)?e.byName.get(n.slice(t.length)):void 0}o(ua,"descriptorFromCapabilityId");function z(e,n){return Object.assign(new Error(n),{code:e})}o(z,"bridgeError");function Xr(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}o(Xr,"isRecord");function Ml(e){return e instanceof Error?e:new Error(String(e))}o(Ml,"normalizeError");var Cl=512*1024,la=1e3,_l=["code","cli","repl","acp","a2a","sdk","ide","space-desktop"],Ol=new Set(["ping","runtime.identity","runtime.status","runtime.capabilities","daemon.status"]),Ia=["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"],ka=new Map([...me("session:observe",["ping","runtime.identity","runtime.status","runtime.capabilities","daemon.status","daemon.logs","operation.get","session.load","session.list","session.transcript","session.transcript.page","session.transcript.entryChunk","session.observe","session.settings.get","session.transcript.search","session.settings.getVersioned","session.autoMode.getStats","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"]),...me("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"]),...me("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"]),...me("permission:respond",["permission.respond"]),...me("permission:grant-admin",["permission.grants.revoke"]),...me("interaction:respond",["user_input.respond","user_input.dismiss"]),...me("credential:register",["credential.register","credential.get","credential.revoke","credential.supply"]),...me("host-tool:register",["host_tool.register","host_tool.get","host_tool.invocation.get","host_tool.revoke","host_tool.complete"]),...me("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"]),...me("workflow:control",["workflow.pause","workflow.resume","workflow.stop"]),...me("learning:read",["learning.list","learning.get","learning.snapshot","learning.events"]),...me("learning:control",["learning.acknowledge","learning.snooze","learning.reject","learning.disable","learning.rollback","learning.promote","learning.review","learning.trust"]),...me("artifact:write",["artifact.create","artifact.delete"]),...me("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"]),...me("owner:admin",["daemon.rollbackToInline"]),...me("daemon:admin",["runtime.shutdown","daemon.stop","daemon.preflight","daemon.management.get"])]),ma=gn.filter(e=>e!=="initialize"&&e!=="runtime.initialize"&&!ka.has(e));if(ma.length>0)throw new Error(`Runtime daemon methods are missing authorization scopes: ${ma.join(", ")}`);function me(e,n){return n.map(t=>[t,e])}o(me,"scopeEntries");function Qr(){let e=new Map,n=o(()=>{if(!(e.size<=la))for(let[r,s]of e){if(e.size<=la)break;s.settled&&e.delete(r)}},"pruneSettled"),t=o((r,s)=>{e.get(r)===s&&(s.settled=!0,n())},"markSettled");return{remember(r,s){let a,d=s.finally(()=>{a&&t(r,a)});d.catch(()=>{}),a={promise:d,settled:!1},e.set(r,a),n()},get(r){return e.get(r)?.promise},clear(){e.clear()}}}o(Qr,"createRuntimeDaemonRunResultStore");function Jn(e){return e==="initialize"||e==="runtime.initialize"}o(Jn,"isInitializeMethod");function ba(e){let n=new Map,t=e.runResults??Qr(),r=`connection_${Dn().replace(/-/g,"")}`,s=Ur(e.notify),a=s,d,u=!1,p=!1,f="client",v={},i=`client_${Dn().replace(/-/g,"")}`,l,c,w=new Set(e.grantedScopes??Ia),P=o(x=>{let g=n.get(x);return g?(n.delete(x),g.close(),!0):!1},"closeSubscription"),R=o((x,g)=>{n.set(x,g)},"rememberSubscription"),I=o((x,g)=>{Ea(g)&&v.contextDiagnostics!==!0||e.notify?.(Xn("event",{subscriptionId:x,event:g}))},"notify");return{handle:o(async x=>{try{if(ds(x.method))throw K("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 g=x;va(g.method,"params",g.params===void 0?{}:g.params,"invalid_params");let h;if(!u&&!Jn(g.method))throw K("not_initialized","Runtime daemon connection must initialize before runtime methods are accepted.");if(u&&Jn(g.method))throw K("conflict","Runtime daemon connection is already initialized.");if(u&&f==="probe"&&!Ol.has(g.method))throw K("unauthorized","Runtime daemon probe connections are read-only and method-limited.");if(Jn(g.method)){h=Z(g.params),f=h?.connectionPurpose==="probe"?"probe":"client";let H=typeof h?.token=="string"?h.token:void 0;if(e.authToken!==void 0&&H!==e.authToken)throw K("unauthorized","Runtime daemon initialize token is invalid.");let m=typeof h?.profile=="string"?h.profile:void 0;if(m!==void 0&&m!==e.runtime.identity.profile)throw K("conflict",`Runtime daemon profile mismatch: expected ${e.runtime.identity.profile}, got ${m}.`);i=ql(h?.clientInfo,i),l=tm(h?.clientInfo),c=rm(h?.clientInfo)}Jn(g.method)||(jl(g.method,w),Fl(g,w));let T=await Nl(g,e,v,i,o(()=>$l(g,e,t,R,P,I,()=>v,i,l,c,a),"dispatch")),C=dm(g.method,T);if(va(g.method,"result",C,"internal_error"),Jn(g.method)){if(v=Kl(h?.capabilities),f==="client"&&e.reverseBridgeHub!==void 0&&e.notify!==void 0&&(d=e.reverseBridgeHub.attach({principalId:i,connectionId:r,...fa(h?.clientInfo)!==void 0?{instanceSecret:fa(h?.clientInfo)}:{},notify:e.notify}),a=d.bridge,s.close()),f==="client"&&e.management!==void 0)try{e.management.attachClient(r),p=!0}catch(H){throw d?.close(),d=void 0,H}u=!0}return us(g.id,C)}catch(g){return Ke(um(g),x.id)}},"handle"),close(){for(let x of[...n.keys()])P(x);d!==void 0?d.close():a.close(),p&&(e.management?.detachClient(r),p=!1)}}}o(ba,"createRuntimeDaemonDispatcher");async function Nl(e,n,t,r,s){let a=o(()=>n.management!==void 0&&Ll(e.method)?n.management.runMutation(e.method,s):s(),"execute");if(!Ye(e.method)||n.requireOperationEnvelope!==!0)return a();if(t.operationDeduplication!==!0)throw K("client_upgrade_required","Runtime daemon mutations require durable operation support.");if(!e.operation)throw K("operation_required","Runtime daemon mutation is missing its operation envelope.");if(!n.controlJournal)throw K("internal_error","Runtime daemon control journal is unavailable.");return n.controlJournal.execute({operationId:e.operation.operationId,journalEpoch:e.operation.journalEpoch,principalId:r,method:e.method,...pa(e.params)!==void 0?{resourceId:pa(e.params)}:{},params:e.params??{}},{externalEffect:!0},a)}o(Nl,"dispatchWithOperation");function Ll(e){return as(e)&&e!=="daemon.stop"&&e!=="runtime.shutdown"&&e!=="daemon.rollbackToInline"}o(Ll,"isManagedRuntimeMutation");function jl(e,n){let t=ka.get(e);if(t===void 0)throw K("internal_error",`Runtime daemon method has no authorization scope: ${e}.`);if(!n.has(t))throw K("unauthorized",`Runtime daemon method requires scope ${t}.`)}o(jl,"requireRuntimeMethodScope");function Fl(e,n){if(e.method!=="permission.respond")return;let t=pe(e.params)?e.params:void 0;if(!((t&&pe(t.decision)?t.decision:void 0)?.type!=="allow_always"||n.has("permission:grant-admin")))throw K("unauthorized","Persistent permission grants require scope permission:grant-admin.")}o(Fl,"requirePersistentGrantScope");function pa(e){if(pe(e)){for(let n of["sessionId","runId","taskId","artifactId","requestId","name"])if(typeof e[n]=="string"&&e[n].length>0)return e[n]}}o(pa,"operationResourceId");function ql(e,n){if(!pe(e))return n;let t=e.instanceId;return typeof t!="string"||!/^[A-Za-z0-9_.:-]{4,160}$/.test(t)?n:t}o(ql,"parseRuntimeClientPrincipal");function fa(e){if(!pe(e))return;let n=e.instanceSecret;return typeof n=="string"?n:void 0}o(fa,"parseRuntimeClientInstanceSecret");async function $l(e,n,t,r,s,a,d,u,p,f,v){let i=n.runtime,l=n.reverseBridgeHub??v;switch(e.method){case"initialize":case"runtime.initialize":return{identity:i.identity,capabilities:Ra(n.capabilities,i.agents.enabled,i.agents.enabled&&n.allowAgentRegistrationAdmin===!0,n.ownsA2AConfigReconciler===!0,n.controlJournal,n.reverseBridgeHub!==void 0,n.durableHostToolInvocations===!0,n.management!==void 0),principalId:u,...n.controlJournal!==void 0?{journalEpoch:n.controlJournal.journalEpoch}:{},grantedScopes:[...n.grantedScopes??Ia]};case"ping":return{ok:!0,runtimeId:i.identity.runtimeId};case"runtime.identity":return i.identity;case"daemon.status":case"runtime.status":return Wl(await(n.status?n.status():i.status.snapshot()),l);case"daemon.stop":case"runtime.shutdown":return n.management?n.management.stop():n.stop?n.stop():i.close().then(()=>({ok:!0}));case"daemon.logs":return n.logs?n.logs():{entries:[]};case"daemon.preflight":return zl(await(n.management?n.management.preflight():n.preflight?n.preflight():i.status.preflight()),l);case"daemon.management.get":if(!n.management)throw K("client_upgrade_required","Runtime daemon management is unavailable.");return n.management.inspect();case"daemon.rollbackToInline":{if(!n.management)throw K("client_upgrade_required","Runtime daemon rollback management is unavailable.");let c=O(e.params),w={expectedRuntimeId:j(c,"expectedRuntimeId"),expectedRevision:_t(c,"expectedRevision"),expectedOwnerPolicyRevision:_t(c,"expectedOwnerPolicyRevision")};return n.management.rollbackToInline(w)}case"runtime.capabilities":return Ra(n.capabilities,i.agents.enabled,i.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=O(e.params),w=j(c,"operationId"),P=j(c,"journalEpoch");if(!n.controlJournal)return i.operations.get({operationId:w,journalEpoch:P});if(P!==n.controlJournal.journalEpoch)throw K("operation_epoch_mismatch","Runtime operation belongs to another journal epoch.");let R=n.controlJournal.get(w);if(!R||R.principalId!==u)throw K("not_found","Runtime operation was not found.");return Xl(R)}case"config.read":return n.config?Vr(await n.config()):i.config.read();case"config.patch":{let c=xa(O(e.params),"patch");return i.config.patch(c)}case"config.reload":return i.config.reload();case"provider.list":return n.providerList?n.providerList():i.catalog.providers();case"model.list":return n.providerList?Jl(await n.providerList(),Z(e.params)):i.catalog.models(Ql(e.params));case"provider.custom.list":return i.catalog.customProviders();case"provider.custom.upsert":{let c=O(e.params);return i.catalog.upsertCustomProvider(O(c.config))}case"provider.custom.remove":return i.catalog.deleteCustomProvider(G(e.params,"name"));case"mcp.server.list":return i.mcp.listServers();case"mcp.server.get":return i.mcp.getServer(G(e.params,"name"));case"mcp.server.validate":{let c=O(e.params);return i.mcp.validateServer(j(c,"name"),c.config)}case"mcp.server.upsert":{let c=O(e.params);return i.mcp.upsertServer(j(c,"name"),O(c.config))}case"mcp.server.delete":case"mcp.server.remove":return i.mcp.deleteServer(G(e.params,"name"));case"mcp.server.reload":return i.mcp.reloadServers();case"mcp.tool.list":return i.mcp.listTools(Yl(e.params));case"extension.list":return i.catalog.extensions();case"extension.reload":return i.catalog.reloadExtensions();case"command.list":{let c=Z(e.params),w=typeof c?.projectRoot=="string"?c.projectRoot:void 0;return i.catalog.commands(w)}case"command.resolve":{let c=O(e.params);return i.catalog.resolveCommand({name:j(c,"name"),...typeof c.projectRoot=="string"?{projectRoot:c.projectRoot}:{}})}case"skill.list":return i.catalog.skills(Zl(e.params));case"skill.describe":case"skill.read":{let c=O(e.params);return i.catalog.describeSkill({name:j(c,"name"),...typeof c.projectRoot=="string"?{projectRoot:c.projectRoot}:{}})}case"artifact.create":return i.artifacts.create(em(e.params));case"artifact.get":return i.artifacts.get(G(e.params,"artifactId"));case"artifact.delete":return i.artifacts.delete(G(e.params,"artifactId"));case"agentRegistrations.list":return Ct(n),Mt(i),i.admin.agentRegistrations.list();case"agentRegistrations.upsert":{Ct(n),Mt(i);let c=O(e.params);return i.admin.agentRegistrations.upsert(O(c.registration),{expectedConfigurationRevision:zr(c),expectedManagementOwner:Gr(c)})}case"agentRegistrations.setEnabled":{Ct(n),Mt(i);let c=O(e.params),w=ue(c,"claimOwner");if(w!==void 0&&w.length===0)throw K("invalid_request","Expected non-empty optional string param: claimOwner");return i.admin.agentRegistrations.setEnabled(j(c,"agentId"),am(c,"enabled"),{expectedConfigurationRevision:zr(c),expectedManagementOwner:Gr(c),...w?{claimOwner:w}:{}})}case"agentRegistrations.remove":Ct(n),Mt(i);{let c=O(e.params);return i.admin.agentRegistrations.remove(j(c,"agentId"),{expectedConfigurationRevision:zr(c),expectedManagementOwner:Gr(c)})}case"agents.listDispatchable":return i.agents.listDispatchable(O(e.params));case"agents.describe":{let c=O(e.params);return i.agents.describe(j(c,"agentId"),O(c.query))}case"agents.preflight":return i.agents.preflight(O(e.params));case"agents.tree":return i.agents.tree(G(e.params,"sessionId"));case"agents.detail":{let c=O(e.params);return i.agents.detail(j(c,"sessionId"),j(c,"actorPath"))}case"agents.spawn":{let c=O(e.params);return i.agents.spawn(j(c,"sessionId"),O(c.input))}case"agents.send":{let c=O(e.params),w=ue(c,"classification");if(w!==void 0&&w!=="public"&&w!=="internal"&&w!=="sensitive")throw K("invalid_params","Invalid Agent message classification.");return await i.agents.send(j(c,"sessionId"),j(c,"actorPath"),j(c,"content"),w),{ok:!0}}case"agents.followup":{let c=O(e.params),w=Be(c,"expectedRevision");return i.agents.followup(j(c,"sessionId"),j(c,"actorPath"),j(c,"objective"),w===void 0?void 0:{expectedRevision:w})}case"agents.interrupt":{let c=O(e.params);return await i.agents.interrupt(j(c,"sessionId"),j(c,"actorPath"),ue(c,"reason")),{ok:!0}}case"agents.output":{let c=O(e.params);return i.agents.output(j(c,"sessionId"),j(c,"actorPath"),ue(c,"turnId"))}case"agents.events":{let c=O(e.params);return i.agents.events(j(c,"sessionId"),Be(c,"afterSequence"))}case"agents.wait":{let c=O(e.params);return i.agents.wait(j(c,"sessionId"),Be(c,"afterSequence"),Be(c,"timeoutMs"))}case"session.create":return i.sessions.create(Z(e.params));case"session.load":return i.sessions.load(G(e.params,"sessionId"));case"session.list":return i.sessions.list(Z(e.params));case"session.transcript":{let c=await i.sessions.transcript(G(e.params,"sessionId"));if(c!==null&&Buffer.byteLength(JSON.stringify(c),"utf8")>Cl)throw K("invalid_request","Transcript is too large for the legacy endpoint; use session.transcript.page and session.transcript.entryChunk.");return c}case"session.transcript.page":return i.sessions.transcriptPage(O(e.params));case"session.transcript.entryChunk":return i.sessions.transcriptEntryChunk(O(e.params));case"session.transcript.search":return i.sessions.transcriptSearch(O(e.params));case"session.observe":{let c=Jr(),w=await i.sessions.observe(G(e.params,"sessionId"),P=>a(c,Wr(P,l)));return r(c,w),{subscriptionId:c,snapshot:Ul(w.snapshot,l)}}case"session.fork":return i.sessions.fork(O(e.params));case"session.notice.append":return i.sessions.appendNotice(O(e.params));case"session.rewind":return i.sessions.rewind(O(e.params));case"session.active_entry.set":case"session.activeEntry.set":return i.sessions.setActiveEntry(O(e.params));case"session.compact":return i.sessions.compact(O(e.params));case"session.archive":return await i.sessions.archive(G(e.params,"sessionId")),{ok:!0};case"session.unarchive":return await i.sessions.unarchive(G(e.params,"sessionId")),{ok:!0};case"session.delete":return await i.sessions.delete(G(e.params,"sessionId")),{ok:!0};case"session.settings.get":return i.sessions.getSettings(G(e.params,"sessionId"));case"session.settings.getVersioned":return i.sessions.getSettingsVersioned(G(e.params,"sessionId"));case"session.autoMode.getStats":return i.sessions.getAutoModeStats(G(e.params,"sessionId"));case"session.settings.update":{if(n.requireOperationEnvelope===!0)throw K("client_upgrade_required","Shared daemon session settings require session.settings.updateVersioned.");let c=O(e.params);return i.sessions.updateSettings(j(c,"sessionId"),O(c.patch))}case"session.settings.updateVersioned":{let c=O(e.params);return i.sessions.updateSettingsVersioned(j(c,"sessionId"),O(c.patch),{expectedRevision:_t(c,"expectedRevision")})}case"run.start":{let c=O(e.params),w=j(c,"sessionId"),P=`run_${Date.now().toString(36)}_${Dn().replace(/-/g,"").slice(0,8)}`,R=await ga({params:c,sessionId:w,trustedRunId:P,principalId:u,clientName:p,clientVersion:f,operationId:e.operation?.operationId,reverseBridge:v}),I=await i.runs.start(R);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=O(e.params),w=j(c,"sessionId"),P=j(c,"afterRunId"),R=j(c,"delivery"),I=await i.runs.get(P);if(I.sessionId!==w)throw K("conflict",`Runtime continuation target ${P} does not belong to session ${w}.`);if(!Hl(I.phase))return{accepted:!1,delivery:R,sessionId:w,afterRunId:P,reason:"stale_run"};if(R==="interrupt"){if(I.phase==="queued")return{accepted:!1,delivery:R,sessionId:w,afterRunId:P,reason:"stale_run"};if(c.credential!==void 0||c.hostTools!==void 0)throw K("invalid_params","Interrupt input cannot replace active-run credential or host-tool bindings.");let h=`input_${Date.now().toString(36)}_${Dn().replace(/-/g,"").slice(0,8)}`;return i.runs.submitInput({...c,sessionId:w,afterRunId:P,delivery:"interrupt",trustedInputId:h,origin:{principalId:u,...p!==void 0?{clientName:p}:{},...f!==void 0?{clientVersion:f}:{},...e.operation?.operationId!==void 0?{operationId:e.operation.operationId}:{}}})}let k=`run_${Date.now().toString(36)}_${Dn().replace(/-/g,"").slice(0,8)}`,x=await ga({params:c,sessionId:w,trustedRunId:k,principalId:u,clientName:p,clientVersion:f,operationId:e.operation?.operationId,reverseBridge:v}),g=await i.runs.submitInput(x);if(g.accepted&&g.delivery==="after_turn"){let h=i.runs.await(g.runId);t.remember(g.runId,h)}return g}case"run.get":return dn(await i.runs.get(G(e.params,"runId")),l);case"run.list":return(await i.runs.list(Z(e.params))).map(c=>dn(c,l));case"run.await":{let c=G(e.params,"runId"),w=t.get(c);return w||i.runs.await(c)}case"run.abort":return await i.runs.abort(G(e.params,"runId")),{ok:!0};case"run.model.set":return ha(i,e.params);case"run.setModel":return ha(i,e.params);case"run.provider.set":{let c=O(e.params);return await i.runs.setProvider(j(c,"runId"),j(c,"provider")),{ok:!0}}case"run.setProvider":{let c=O(e.params);return await i.runs.setProvider(j(c,"runId"),j(c,"provider")),{ok:!0}}case"run.reasoning.set":return Sa(i,e.params);case"run.setReasoning":return Sa(i,e.params);case"event.subscribe":{let c=Z(e.params)??{},w=Z(c.filter);await an(i,w?.sessionId);let P=Jr(),R=i.events.subscribe(w??{},I=>{a(P,Wr(I,l))});return r(P,R),{subscriptionId:P}}case"event.unsubscribe":return{ok:s(G(e.params,"subscriptionId"))};case"event.replay":{let c=Z(e.params);return await an(i,c?.sessionId),Bl(await i.events.replay(c),d()).map(w=>Wr(w,l))}case"permission.list":case"permission.listPending":{let c=Z(e.params);return await an(i,c?.sessionId),i.permissions.listPending(c)}case"permission.request":{let c=O(e.params);return await an(i,c.sessionId),i.permissions.request(c)}case"permission.respond":{let c=O(e.params),w=ue(c,"runId");return i.permissions.respond(j(c,"requestId"),O(c.decision),w!==void 0?{runId:w}:void 0)}case"permission.grants.list":return i.permissions.listGrants();case"permission.grants.revoke":{let c=O(e.params);return i.permissions.revokeGrant(j(c,"grantId"),_t(c,"expectedRevision"))}case"user_input.listPending":{let c=Z(e.params);return await an(i,c?.sessionId),i.userInputs.listPending(c)}case"user_input.respond":{let c=O(e.params),w=Be(c,"expectedRevision"),P=ue(c,"runId");return i.userInputs.respond(j(c,"requestId"),c.answer,w!==void 0||P!==void 0?{...w!==void 0?{expectedRevision:w}:{},...P!==void 0?{runId:P}:{}}:void 0)}case"user_input.dismiss":{let c=O(e.params),w=Be(c,"expectedRevision"),P=ue(c,"runId");return i.userInputs.dismiss(j(c,"requestId"),w!==void 0||P!==void 0?{...w!==void 0?{expectedRevision:w}:{},...P!==void 0?{runId:P}:{}}:void 0)}case"credential.register":{let c=O(e.params);return v.registerCredential({leaseId:j(c,"leaseId"),providers:im(c,"providers"),...ue(c,"expiresAt")!==void 0?{expiresAt:ue(c,"expiresAt")}:{}})}case"credential.get":return v.getCredential(G(e.params,"leaseId"));case"credential.revoke":return v.revokeCredential(G(e.params,"leaseId"));case"credential.supply":{let c=O(e.params);return{ok:v.supplyCredential({requestId:j(c,"requestId"),...ue(c,"credential")!==void 0?{credential:ue(c,"credential")}:{},...ue(c,"error")!==void 0?{error:ue(c,"error")}:{}})}}case"host_tool.register":{let c=O(e.params);return v.registerHostTools({leaseId:j(c,"leaseId"),tools:om(c.tools)})}case"host_tool.get":return v.getHostTools(G(e.params,"leaseId"));case"host_tool.invocation.get":return v.getHostToolInvocation(G(e.params,"invocationId"));case"host_tool.revoke":return v.revokeHostTools(G(e.params,"leaseId"));case"host_tool.complete":{let c=O(e.params);return{ok:v.completeHostTool({invocationId:j(c,"invocationId"),...c.result!==void 0?{result:O(c.result)}:{},...ue(c,"error")!==void 0?{error:ue(c,"error")}:{}})}}case"workflow.list":return i.workflows.list(Z(e.params));case"workflow.get":return i.workflows.get(G(e.params,"runId"));case"workflow.subscribe":{let c=Z(e.params)??{},w=Z(c.filter),P=Jr(),R=i.workflows.subscribe(w??{},I=>{a(P,I)});return r(P,R),{subscriptionId:P}}case"workflow.unsubscribe":return{ok:s(G(e.params,"subscriptionId"))};case"workflow.pause":return i.workflows.pause(G(e.params,"runId"));case"workflow.resume":return i.workflows.resume(G(e.params,"runId"));case"workflow.stop":return i.workflows.stop(G(e.params,"runId"));case"learning.list":return Le(i.learning,u).list(Z(e.params));case"learning.get":return Le(i.learning,u).get(G(e.params,"nameOrSlug"));case"learning.snapshot":return Le(i.learning,u).getSnapshot();case"learning.events":return Le(i.learning,u).events(Be(Z(e.params)??{},"afterRevision"));case"learning.acknowledge":return await Le(i.learning,u).acknowledge(G(e.params,"nameOrSlug")),{ok:!0};case"learning.snooze":{let c=O(e.params);return await Le(i.learning,u).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=Le(i.learning,u),w=G(e.params,"nameOrSlug");return e.method==="learning.reject"?await c.reject(w):e.method==="learning.disable"?await c.disable(w):e.method==="learning.rollback"?await c.rollback(w):e.method==="learning.review"?await c.review(w):await c.trust(w),{ok:!0}}case"learning.promote":{let c=O(e.params),w=j(c,"scope");if(w!=="user")throw K("invalid_params","Learning promotion scope must be user.");return await Le(i.learning,u).promote(j(c,"nameOrSlug"),w),{ok:!0}}case"context.budget.get":return ya(d()),await an(i,ue(Z(e.params)??{},"sessionId")),wa(i,"context.budget.snapshot",Z(e.params));case"tool.exposure.preview":return ya(d()),await an(i,ue(Z(e.params)??{},"sessionId")),wa(i,"tool.exposure.planned",Z(e.params));default:throw K("method_not_found",`Runtime daemon method is not implemented: ${e.method}`)}}o($l,"dispatchRuntimeDaemonRequest");async function ga(e){let n=Z(e.params.credential),t=Z(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}),s=t===void 0?void 0:e.reverseBridge.createHostToolRuntime({leaseId:j(t,"leaseId"),sessionId:e.sessionId,runId:e.trustedRunId}),a=mn(),d=s===void 0?void 0:a===null?s:sm(s,a),u=Z(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")}:{},...d!==void 0?{options:{...u,extensionRuntime:d}}:{}}}o(ga,"bindTrustedRunInput");function Hl(e){return e==="queued"||e==="running"||e==="waiting_permission"||e==="waiting_user_input"}o(Hl,"isActiveRuntimeRunPhase");function Kl(e){return pe(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(Kl,"parseRuntimeClientCapabilities");function Ra(e={},n=!1,t=!1,r=!1,s,a=!1,d=!1,u=!1){let p={...e};delete p.externalAgents,delete p.externalAgentAdmin,delete p.a2aConfigReconciler,delete p.actorControlPlane,delete p.runtimeAutoModeGuardrail;let f=Br();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:3,owner:"session-runtime",escalationCreatesPermission:!0,fallbackPersistsEngine:!0,defaultClassifierTimeoutMs:st,defaultSpeculativeWindowMs:500,boundedClassifierInput:!0,diagnosticsVersion:1,permissionGrantSuggestions:!0,concretePermissionMatchers:!0,clientScopeExpansion:!1},...t?{externalAgentAdmin:{version:1,activation:!0,conditionalMutations:!0,managementOwner:!0}}:{},...r?{a2aConfigReconciler:{version:1}}:{},...s!==void 0?{operationDeduplication:{version:1,retentionMs:Number.MAX_SAFE_INTEGER},journalEpoch:s.journalEpoch,controlHealth:s.health}:{},sessionObservation:{version:1,maxBufferedEvents:256},sessionAdmission:{version:1,surfaces:_l,legacySurface:!0,partnerDenied:!0},completeObservationSnapshot:{version:1,transcriptRevision:!0,managedTasks:!0,queuedInputs:!0},connectionLifecycle:{version:1},typedRuntimeEvents:{version:1},daemonSafeRunInput:{version:1},...u?{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","autoModeSpeculativeWindowMs"]},...s!==void 0?{durableRecoveryQueries:{version:1,operationResult:!0,hostToolInvocation:d,permissionGrants:!0,daemonPreflight:!0,terminalAcknowledgement:!1,terminalAcknowledgementOwner:"client"}}:{},afterTurnInput:{version:1},interruptInput:{version:1,availability:"per_run"},contextCompaction:{version:3,alwaysOn:!0,absoluteThreshold:!0,contextIdentity:!0,canonicalFinishedEvent:!0,durableBeforeEvict:!0,exactHistoryRecovery:!0},transcriptPaging:{version:1,maxPageBytes:512*1024},transcriptSearch:{version:1,defaultScope:"compacted",citedEntries:!0},learningCenter:{version:1},askUserTransport:{version:1},permissionCas:{version:1},providerCredentialBroker:{version:1,registrationConnectionBound:!a,stableClientResume:a,runtimeRestartExpiresLease:!0,acquiredCredentialSurvivesDisconnect:!0,requestTimeoutMs:f.callTimeoutMs},runBoundHostTools:{version:1,registrationConnectionBound:!a,stableClientResume:a,invocationStatusQuery:a,invocationReplay:!1,invocationTimeoutMs:f.callTimeoutMs,maxResultBytes:f.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},...p}}o(Ra,"runtimeDaemonCapabilities");function Xl(e){return e?{...e}:{}}o(Xl,"publicOperationReceipt");function Mt(e){if(!e.agents.enabled)throw K("method_not_found","Runtime external agent executor plane is not enabled.")}o(Mt,"requireExternalAgentsEnabled");function Ct(e){if(e.allowAgentRegistrationAdmin!==!0)throw K("permission_denied","Runtime daemon host denied Agent registration administration.")}o(Ct,"requireAgentRegistrationAdmin");function Bl(e,n){return n.contextDiagnostics===!0?e:e.filter(t=>!Ea(t))}o(Bl,"filterReplayForClientCapabilities");async function an(e,n){n!==void 0&&await e.sessions.transcript(n)}o(an,"assertAdmittedSessionId");function Ul(e,n){return{...e,runs:e.runs.map(t=>dn(t,n))}}o(Ul,"augmentObservationRunRequirements");function Wl(e,n){return!pe(e)||!Array.isArray(e.runs)?e:{...e,runs:e.runs.map(t=>Pa(t)?dn(t,n):t)}}o(Wl,"augmentStatusRunRequirements");function zl(e,n){return{...e,activeRuns:e.activeRuns.map(t=>dn(t,n)),queuedRuns:e.queuedRuns.map(t=>dn(t,n))}}o(zl,"augmentPreflightRunRequirements");function Wr(e,n){return Pa(e.payload)?{...e,payload:dn(e.payload,n)}:e}o(Wr,"augmentRuntimeEventRequirements");function dn(e,n){let t=n?.getRunRequirements(e.runId);return t===void 0?e:Gl(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(dn,"augmentRunRequirements");function Pa(e){return pe(e)&&typeof e.runId=="string"&&typeof e.sessionId=="string"&&typeof e.phase=="string"&&typeof e.startedAt=="string"&&typeof e.provider=="string"}o(Pa,"isRuntimeRunStatus");function Gl(e){return e==="completed"||e==="failed"||e==="cancelled"||e==="interrupted"}o(Gl,"isTerminalRuntimeRunPhase");function ya(e){if(e.contextDiagnostics!==!0)throw K("unauthorized","Runtime daemon client did not negotiate contextDiagnostics capability.")}o(ya,"requireContextDiagnosticsCapability");function Ea(e){return pe(e)?e.type==="context.budget.snapshot"||e.type==="tool.exposure.planned"||e.type==="context.compaction.skipped":!1}o(Ea,"isContextDiagnosticRuntimeEvent");async function wa(e,n,t){let r=t??{},s={type:n,limit:100,...typeof r.sessionId=="string"?{sessionId:r.sessionId}:{},...typeof r.runId=="string"?{runId:r.runId}:{}};return(await e.events.replay(s)).at(-1)?.payload??null}o(wa,"latestRuntimeDiagnosticPayload");async function ha(e,n){let t=O(n);return await e.runs.setModel(j(t,"runId"),ue(t,"model")),{ok:!0}}o(ha,"setRunModel");async function Sa(e,n){let t=O(n);return await e.runs.setReasoning(j(t,"runId"),ue(t,"reasoning")),{ok:!0}}o(Sa,"setRunReasoning");function Jl(e,n){let t=Array.isArray(e)?e:[],r=typeof n?.provider=="string"?n.provider:void 0;if(r!==void 0){let s=t.find(a=>pe(a)&&a.name===r);return pe(s)?{provider:r,models:Array.isArray(s.models)?s.models:[]}:{provider:r,models:[]}}return t.flatMap(s=>!pe(s)||typeof s.name!="string"?[]:[{provider:s.name,models:Array.isArray(s.models)?s.models:[]}])}o(Jl,"listRuntimeModels");function Vr(e){return Array.isArray(e)?e.map(n=>Vr(n)):pe(e)?Object.fromEntries(Object.entries(e).map(([n,t])=>[n,Vl(n)?"[redacted]":Vr(t)])):e}o(Vr,"redactRuntimeConfig");function Vl(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(Vl,"isSensitiveConfigKey");function Z(e){if(e!==void 0)return O(e)}o(Z,"optionalRecord");function xa(e,n){return O(e[n])}o(xa,"requireRecordField");function Ql(e){let n=Z(e);if(n)return typeof n.provider=="string"?{provider:n.provider}:void 0}o(Ql,"parseModelListFilter");function Yl(e){let n=Z(e);if(n)return{...typeof n.server=="string"?{server:n.server}:{},...typeof n.forceRefresh=="boolean"?{forceRefresh:n.forceRefresh}:{}}}o(Yl,"parseMcpToolListFilter");function Zl(e){let n=Z(e);if(n)return{...typeof n.projectRoot=="string"?{projectRoot:n.projectRoot}:{},...typeof n.userInvocableOnly=="boolean"?{userInvocableOnly:n.userInvocableOnly}:{}}}o(Zl,"parseSkillListFilter");function em(e){let n=O(e),t=n.kind;if(t!=="image"&&t!=="file"&&t!=="video")throw K("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}:{},...nm(n.source)?{source:n.source}:{},...typeof n.description=="string"?{description:n.description}:{}}}o(em,"parseArtifactCreateInput");function nm(e){return e==="user-inline"||e==="clipboard"||e==="drag-drop"||e==="file-picker"}o(nm,"isRuntimeArtifactSource");function tm(e){return pe(e)&&typeof e.name=="string"&&e.name.length>0?e.name:void 0}o(tm,"parseRuntimeClientName");function rm(e){return pe(e)&&typeof e.version=="string"&&e.version.length>0?e.version:void 0}o(rm,"parseRuntimeClientVersion");function im(e,n){let t=e[n];if(!Array.isArray(t)||t.some(r=>typeof r!="string"||r.length===0))throw K("invalid_request",`Expected string array param: ${n}`);return t}o(im,"requireStringArrayField");function om(e){if(!Array.isArray(e))throw K("invalid_request","Expected host tool descriptors array.");return e.map(n=>{let t=O(n),r=j(t,"sideEffect");if(r!=="none"&&r!=="idempotent"&&r!=="non_idempotent")throw K("invalid_request",`Invalid host tool sideEffect: ${r}`);return{name:j(t,"name"),description:j(t,"description"),inputSchema:xa(t,"inputSchema"),sideEffect:r}})}o(om,"parseRuntimeHostToolDescriptors");function sm(e,n){return{hasCapabilityProvider(t){return e.hasCapabilityProvider?.(t)===!0||n.hasCapabilityProvider?.(t)===!0},async searchCapabilities(t,r,s){let[a,d]=await Promise.all([e.searchCapabilities(t,r,s),n.searchCapabilities(t,r,s)]),u=[...a,...d];return u.slice(0,s?.limit??u.length)},async describeCapability(t,r){return r.startsWith("host:")?e.describeCapability(t,r):n.describeCapability(t,r)},executeCapability(t,r,s){return r.startsWith("host:")?e.executeCapability(t,r,s):n.executeCapability(t,r,s)},readCapability(t,r,s){return n.readCapability(t,r,s)},getCapabilityPrompt(t,r,s){return n.getCapabilityPrompt(t,r,s)},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(sm,"mergeExtensionRuntimeContracts");function pe(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}o(pe,"isRecord");function O(e){if(!e||typeof e!="object"||Array.isArray(e))throw K("invalid_request","Expected params to be an object.");return e}o(O,"requireRecord");function G(e,n){return j(O(e),n)}o(G,"requireStringParam");function j(e,n){let t=e[n];if(typeof t!="string"||t.length===0)throw K("invalid_request",`Expected string param: ${n}`);return t}o(j,"requireStringField");function am(e,n){let t=e[n];if(typeof t!="boolean")throw K("invalid_request",`Expected boolean param: ${n}`);return t}o(am,"requireBooleanField");function ue(e,n){let t=e[n];if(t!=null){if(typeof t!="string")throw K("invalid_request",`Expected optional string param: ${n}`);return t}}o(ue,"optionalStringField");function zr(e){let n=e.expectedConfigurationRevision;if(n==null)return n;if(typeof n!="string"||n.length===0)throw K("invalid_request","Expected optional string or null param: expectedConfigurationRevision");return n}o(zr,"optionalExpectedConfigurationRevision");function Gr(e){let n=e.expectedManagementOwner;if(n==null)return n;if(typeof n!="string"||n.length===0)throw K("invalid_request","Expected optional string or null param: expectedManagementOwner");return n}o(Gr,"optionalExpectedManagementOwner");function Be(e,n){let t=e[n];if(t!=null){if(!Number.isSafeInteger(t)||t<0)throw K("invalid_request",`Expected optional non-negative integer param: ${n}`);return t}}o(Be,"optionalIntegerField");function _t(e,n){let t=Be(e,n);if(t===void 0)throw K("invalid_request",`Expected non-negative integer param: ${n}`);return t}o(_t,"requireIntegerField");function K(e,n,t){let r=new Error(n);return r.code=e,t!==void 0&&(r.data=t),r}o(K,"daemonError");function Jr(){return`sub_${Dn().replace(/-/g,"").slice(0,12)}`}o(Jr,"createSubscriptionId");function va(e,n,t,r){let s=xn(At[e][n],t,n);if(s.length!==0)throw K(r,n==="params"?`Invalid params for ${e}.`:`Runtime daemon produced an invalid result for ${e}.`,{issues:s})}o(va,"validateDaemonMethodValue");function dm(e,n){return n===void 0?null:e!=="run.await"||!pe(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(dm,"serializeRuntimeDaemonMethodResult");function um(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 Hi)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"&&cm(n.code)?n.code:"internal_error",message:e.message,...n.data!==void 0?{data:n.data}:{}}}return{code:"internal_error",message:String(e)}}o(um,"normalizeRuntimeDaemonError");function cm(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(cm,"isRuntimeDaemonErrorCode");import{createHash as lm,randomUUID as Aa}from"node:crypto";import*as re from"node:fs";import Da from"node:path";var De=class extends Error{static{o(this,"RuntimeControlJournalError")}code;constructor(n,t){super(t),this.name="RuntimeControlJournalError",this.code=n}};function Ma(e){re.mkdirSync(e.rootDir,{recursive:!0});let n=Da.join(e.rootDir,"journal-meta.json"),t=Da.join(e.rootDir,"control.jsonl"),r=hm(n),s=r.meta,a=wm(t),d=a.records,u=new Map,p=a.trusted&&r.trusted?"healthy":"control_history_untrusted";return p==="healthy"&&ym(d,t),{journalEpoch:s.journalEpoch,get health(){return p},execute(f,v,i){if(p!=="healthy")return Promise.reject(new De("control_history_untrusted","Runtime control history is untrusted; mutations are quarantined."));try{Rm(f,s.journalEpoch);let l=vm(f.params),c=d.get(f.operationId);if(c){gm(c,f,l);let P=u.get(f.operationId);return P||fm(c)}let w=mm(t,d,f,l,v.externalEffect===!0,i,()=>{p="control_history_untrusted"});return u.set(f.operationId,w),w.finally(()=>u.delete(f.operationId)).catch(()=>{}),w}catch(l){return Promise.reject(l)}},get(f){return d.get(f)}}}o(Ma,"createRuntimeControlJournal");async function mm(e,n,t,r,s,a,d){let u=pm(t,r,"accepted");Ca(e,u),n.set(t.operationId,u),s&&Ot(e,n,u,"dispatched");let p;try{p=await a()}catch(f){let v=Im(f);try{Ot(e,n,u,"rejected",{error:v})}catch{d()}throw f}try{return Ot(e,n,u,"applied",{result:p}).result}catch{throw d(),n.set(t.operationId,{...u,state:"unknown",updatedAt:new Date().toISOString()}),new De("operation_unknown","Runtime operation completed but its durable outcome could not be recorded.")}}o(mm,"executeNewOperation");function Ot(e,n,t,r,s={}){let a={type:"operation",...t,state:r,...s,updatedAt:new Date().toISOString()};return Ca(e,a),n.set(a.operationId,a),a}o(Ot,"updateOperation");function pm(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(pm,"operationRecord");function fm(e){if(e.state==="applied")return Promise.resolve(e.result);if(e.state==="rejected")return Promise.reject(new De(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 De(n,`Runtime operation is ${e.state}; it will not be replayed.`))}o(fm,"replayOperation");function gm(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 De("operation_id_reuse","Runtime operation ID was already used for a different request or principal.")}o(gm,"assertMatchingOperation");function Rm(e,n){if(e.journalEpoch!==n)throw new De("operation_epoch_mismatch","Runtime operation belongs to a different control journal epoch.");if(!/^[A-Za-z0-9_.:-]{4,160}$/.test(e.operationId))throw new De("invalid_operation_id","Runtime operation ID is invalid.");if(e.principalId.length===0||e.method.length===0)throw new De("invalid_operation","Runtime operation identity is incomplete.")}o(Rm,"validateOperationInput");function ym(e,n){for(let t of[...e.values()])t.state!=="accepted"&&t.state!=="dispatched"||Ot(n,e,t,t.state==="dispatched"?"unknown":"interrupted")}o(ym,"recoverUnfinished");function wm(e){let n=new Map;if(!re.existsSync(e))return{trusted:!0,records:n};let t=re.readFileSync(e,"utf8").split(/\r?\n/);for(let r of t)if(r.length!==0)try{let s=JSON.parse(r);if(!bm(s))return{trusted:!1,records:n};n.set(s.operationId,s)}catch{return{trusted:!1,records:n}}return{trusted:!0,records:n}}o(wm,"loadOperationRecords");function hm(e){if(re.existsSync(e)){try{let t=JSON.parse(re.readFileSync(e,"utf8"));if(km(t))return{meta:t,trusted:!0}}catch{}return{meta:Ta(),trusted:!1}}let n=Ta();return Sm(e,n),{meta:n,trusted:!0}}o(hm,"loadOrCreateMeta");function Ta(){return{version:1,journalEpoch:`je_${Aa().replace(/-/g,"")}`,createdAt:new Date().toISOString()}}o(Ta,"createJournalMeta");function Ca(e,n){let t=`${JSON.stringify(n)}
|
|
66
|
+
`,r=re.openSync(e,"a",384);try{re.writeFileSync(r,t,"utf8"),re.fsyncSync(r)}finally{re.closeSync(r)}}o(Ca,"appendRecord");function Sm(e,n){let t=`${e}.${process.pid}.${Aa()}.tmp`,r=re.openSync(t,"wx",384);try{re.writeFileSync(r,`${JSON.stringify(n,null,2)}
|
|
67
|
+
`,"utf8"),re.fsyncSync(r)}finally{re.closeSync(r)}re.renameSync(t,e)}o(Sm,"writeJsonAtomic");function vm(e){return lm("sha256").update(Yr(e)).digest("hex")}o(vm,"digestCanonical");function Yr(e){if(e===null||typeof e=="boolean"||typeof e=="string")return JSON.stringify(e);if(typeof e=="number"){if(!Number.isFinite(e))throw new De("invalid_operation","Operation contains a non-finite number.");return JSON.stringify(e)}if(Array.isArray(e))return`[${e.map(Yr).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)}:${Yr(n[r])}`).join(",")}}`}throw new De("invalid_operation","Operation contains a non-JSON value.")}o(Yr,"canonicalJson");function Im(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(Im,"normalizeOperationError");function km(e){return _a(e)?e.version===1&&typeof e.journalEpoch=="string"&&typeof e.createdAt=="string":!1}o(km,"isJournalMeta");function bm(e){return _a(e)?e.type==="operation"&&typeof e.operationId=="string"&&typeof e.journalEpoch=="string"&&typeof e.principalId=="string"&&typeof e.method=="string"&&typeof e.requestDigest=="string"&&Pm(e.state)&&typeof e.updatedAt=="string":!1}o(bm,"isOperationRecord");function Pm(e){return e==="accepted"||e==="dispatched"||e==="applied"||e==="rejected"||e==="interrupted"||e==="unknown"}o(Pm,"isOperationState");function _a(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}o(_a,"isRecord");function Oa(e){return new Zr(e)}o(Oa,"createRuntimeDaemonManagementController");var Zr=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 Ie("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 Ie("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 Em(r,this.clients.size)}throw Ie("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 s=te(this.input.paths.lockFile);if(s===void 0||s.runtimeId!==this.input.runtime.identity.runtimeId||s.kind!=="daemon")throw Ie("conflict","Runtime daemon owner fence changed during inspection.");return{runtimeId:this.input.runtime.identity.runtimeId,revision:t,ownerPolicy:Ee(this.input.paths),owner:s,preflight:r}}throw Ie("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 Ie("conflict","Runtime daemon instance changed before rollback commit.");this.beginDraining(n.expectedRevision);try{await this.assertStoppable(n.expectedRevision);let t=bs(this.input.paths,n.expectedRuntimeId,n.expectedOwnerPolicyRevision);if(t.mode!=="inline")throw Ie("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 Ie("conflict","Runtime daemon management is closed.");if(this.draining)throw Ie("conflict","Runtime daemon is already draining.");if(n!==void 0&&this.revision!==n)throw Ie("conflict",`Runtime daemon management revision changed: expected ${n}, current ${this.revision}.`);if(this.activeMutations>0)throw Ie("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 Ie("conflict",`Runtime daemon state changed before stop commit: expected ${n}, current ${this.revision}.`);if(!t.canStop)throw Ie("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 Em(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(Em,"withLogicalClients");function Ie(e,n,t){let r=new Error(n);return r.code=e,t!==void 0&&(r.data=t),r}o(Ie,"managementError");async function ja(e){Ce(e.paths);let n=Es();xs(e.paths,n);let t=Nt(e,"starting");vn(e.paths,t),_e(e.paths,"info","Runtime daemon starting.",{runtimeId:e.runtime.identity.runtimeId,endpoint:e.endpoint.path});let r=Ti(I=>{xm(e.paths,I)}),s,a,d=!1,u=o(()=>{if(a===void 0){d=!0;return}a()},"requestStop"),p=Qr(),f=Ma({rootDir:Na.join(e.paths.rootDir,"control")}),v=ca({invocationStateFile:Na.join(e.paths.rootDir,"host-tool-invocations.json")}),i=Oa({runtime:e.runtime,paths:e.paths,requestStop:u}),l;try{s=await Fs({endpoint:e.endpoint,createDispatcher:o(I=>ba({runtime:e.runtime,authToken:n,...e.ownsA2AConfigReconciler===!0?{ownsA2AConfigReconciler:!0}:{},allowAgentRegistrationAdmin:!0,notify:I,runResults:p,controlJournal:f,reverseBridgeHub:v,management:i,durableHostToolInvocations:!0,requireOperationEnvelope:!0,logs:o(()=>({logFile:e.paths.logFile,entries:Ds(e.paths)}),"logs")}),"createDispatcher")}),l=Nt(e,"ready"),vn(e.paths,l),_e(e.paths,"info","Runtime daemon ready.",{runtimeId:l.runtimeId,endpoint:l.endpoint})}catch(I){_e(e.paths,"error","Runtime daemon failed to start.",{error:Te(I).message});let k=!0;try{await s?.close()}catch(x){k=!1,_e(e.paths,"error","Runtime daemon transport cleanup failed.",{error:Te(x).message})}throw i.close(),p.clear(),v.close(),r(),k?await La(e.paths,e.lock):vn(e.paths,{...t,status:"unhealthy",lastError:"Runtime daemon transport cleanup failed."}),I}let c=!1,w,P=new Promise(I=>{w=I}),R=o(async()=>{if(c)return;c=!0;let I=[],k=!1,x=!1;try{try{vn(e.paths,Nt(e,"stopping")),_e(e.paths,"info","Runtime daemon stopping.")}catch(g){I.push(`state transition: ${Te(g).message}`)}try{await s?.close(),k=!0}catch(g){I.push(`transport close: ${Te(g).message}`)}i.close(),v.close(),p.clear();try{await e.runtime.close(),x=!0}catch(g){I.push(`Runtime close: ${Te(g).message}`)}try{_e(e.paths,"info","Runtime daemon stopped.")}catch(g){I.push(`stop log: ${Te(g).message}`)}if(r(),k&&x){let g=await La(e.paths,e.lock),h=te(e.lock.file);!g&&h?.runtimeId===e.lock.owner.runtimeId&&h.pid===e.lock.owner.pid&&h.createdAt===e.lock.owner.createdAt&&I.push("owner release: the daemon still owns its profile lock")}else try{vn(e.paths,{...Nt(e,"unhealthy"),lastError:I.join("; ")})}catch(g){I.push(`unhealthy state: ${Te(g).message}`)}if(I.length>0){try{_e(e.paths,"error","Runtime daemon stopped with cleanup failures.",{failures:I})}catch(g){I.push(`failure log: ${Te(g).message}`)}throw new Error(`Runtime daemon cleanup failed: ${I.join("; ")}`)}}finally{r(),w?.()}},"closeHost");return a=o(()=>{try{_e(e.paths,"info","Runtime daemon stop requested.")}catch(k){oe({source:"runtime.daemon.host",level:"warn",message:"Runtime daemon stop request could not be logged.",detail:Te(k)})}setTimeout(()=>{R().catch(k=>{oe({source:"runtime.daemon.host",level:"error",message:"Runtime daemon shutdown failed.",detail:Te(k)})})},0).unref?.()},"scheduleStop"),d&&a(),{endpoint:e.endpoint,state:l,closed:P,unref(){s?.unref()},close:R}}o(ja,"startRuntimeDaemonHost");async function La(e,n){for(let t=0;t<50;t+=1){try{if(Ms(e,n))return!0}catch(s){oe({source:"runtime.daemon.host",level:"warn",message:"Runtime daemon ownership release attempt failed.",detail:Te(s)})}let r=te(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(s=>{setTimeout(s,10)})}try{_e(e,"error","Runtime daemon ownership release timed out.")}catch(t){oe({source:"runtime.daemon.host",level:"error",message:"Runtime daemon ownership release timed out and could not be logged.",detail:Te(t)})}return!1}o(La,"releaseHostOwnership");function xm(e,n){try{_e(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(xm,"appendRuntimeDiagnostic");function Nt(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(Nt,"createHostState");function Te(e){return e instanceof Error?e:new Error(String(e))}o(Te,"normalizeHostError");async function Fa(e){let n=e.profile??"default",t=Am(e.homeDir),r=ei.resolve(e.configHome??ei.join(t,".kodax")),s=hn(r,n);bt(s);let a=e.endpoint??En(n,Sn(t,r)),d={runtimeId:`rt_${Dm().replace(/-/g,"").slice(0,12)}`,pid:process.pid,createdAt:new Date().toISOString(),kind:"daemon"},u=await $r(s,d,e.healthCheck);if(u.kind==="attach"){let p=tn(u.state);return $a(s,p,e.connectTimeoutMs)}if(u.kind==="wait")return Mm(s,a,d,{...e,profile:n});if(u.kind==="unhealthy")throw new Error(`Runtime daemon is ${u.health}; refusing to take ownership.`);return qa(s,a,d,u.lock,e)}o(Fa,"acquireRuntimeDaemonLease");function Am(e){return ei.resolve(e??Tm.homedir())}o(Am,"resolveRuntimeDaemonHomeDir");async function Mm(e,n,t,r){let s=Date.now()+(r.startupTimeoutMs??5e3);for(;Date.now()<=s;){let a=await $r(e,t,r.healthCheck);if(a.kind==="attach")return $a(e,tn(a.state),r.connectTimeoutMs);if(a.kind==="claim")return qa(e,n,t,a.lock,r);if(a.kind==="unhealthy")throw new Error(`Runtime daemon is ${a.health}; refusing to take ownership.`);await _m(r.pollIntervalMs??100)}throw new Error(`Timed out waiting for runtime daemon profile "${r.profile}" to become ready.`)}o(Mm,"waitForDaemonLease");async function qa(e,n,t,r,s){let a,d=!1;try{if(a=await s.createRuntime(t.runtimeId),a.identity.runtimeId!==t.runtimeId)throw new Error("Runtime factory returned an identity that does not match its owner fence.");d=!0;let u=await ja({runtime:a,paths:e,endpoint:n,lock:r,...s.ownsA2AConfigReconciler===!0?{ownsA2AConfigReconciler:!0}:{}});try{let p=await je(n,{connectTimeoutMs:s.connectTimeoutMs});return Cm(e,n,p,u)}catch(p){throw await u.close(),p}}catch(u){throw d||Pt(r),await a?.close(),u}}o(qa,"createClaimedDaemonLease");async function $a(e,n,t){let r=await je(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($a,"createAttachedLease");function Cm(e,n,t,r){r.unref();let s=!1,a=!1;return{transport:t,endpoint:n,paths:e,ownsHost:!0,hostClosed:r.closed,async close(){s||(s=!0,await t.close?.())},async shutdown(){a||(a=!0,await r.close())}}}o(Cm,"createOwnedLease");function _m(e){return new Promise(n=>{setTimeout(n,e).unref?.()})}o(_m,"delay");import{spawn as Om}from"node:child_process";import{existsSync as Nm}from"node:fs";import{fileURLToPath as Lm}from"node:url";import jm from"node:os";import Ae from"node:path";var Ha=1e3,Tn=class extends Error{constructor(t,r){super(t);this.reason=r;this.name="RuntimeDaemonStartupError"}reason;static{o(this,"RuntimeDaemonStartupError")}};async function Ua(e){let n=e.profile??"default",t=Ae.resolve(e.homeDir??jm.homedir()),r=Ae.resolve(e.configHome??Ae.join(t,".kodax")),s=hn(r,n);bt(s);let a=En(s.profile,Sn(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 d=await Dt(s,e.healthCheck),u=Wn(d);if(u==="healthy"&&d.state)return Ka(s,tn(d.state),!1,e);if(u==="unhealthy"||u==="mismatch")throw new Error(`Runtime daemon is ${u}; refusing to start a competing owner.`);let p=await Km({profile:s.profile,homeDir:t,configHome:r,defaultProvider:e.defaultProvider,defaultModel:e.defaultModel,sessionsDir:e.sessionsDir,permissionTimeoutMs:e.permissionTimeoutMs}),f=await Fm(s,e,p),v=tn(f.state);return Ka(s,v,f.state.pid===p.pid,e)}o(Ua,"acquireRuntimeDaemonProcessLease");async function Ka(e,n,t,r){let s=await je(n,{connectTimeoutMs:r.connectTimeoutMs});return{transport:s,endpoint:n,paths:e,ownsHost:t,async close(){await s.close?.()},async shutdown(){try{await s.request("runtime.shutdown")}finally{await s.close?.()}}}}o(Ka,"connectProcessLease");async function Fm(e,n,t,r=Dt){let s=Date.now()+(n.startupTimeoutMs??6e4);try{for(;;){let a=await qm(e,n,t,r),d=Wn(a);if(d==="healthy"&&a.state)return a.state.pid===t.pid?t.unref():await t.terminate(),{...a,state:a.state};if(d==="mismatch")throw new Tn("Runtime daemon endpoint identity does not match its persisted owner state.","identity_mismatch");let u=s-Date.now();if(u<=0)throw Hm(e);await $m(Math.min(Math.max(1,n.pollIntervalMs??100),u),e,t,n.startupSignal)}}catch(a){try{await t.terminate()}catch(d){throw new AggregateError([a,d],"Runtime daemon startup failed and its child process could not be reclaimed.")}throw a}}o(Fm,"waitForHealthyDaemonStartup");async function qm(e,n,t,r){let s=await Vn(Promise.race([r(e,n.healthCheck).then(a=>({kind:"health",observation:a})),t.exit.then(a=>({kind:"exit",exit:a}))]),n.startupSignal);if(s.kind==="exit"){if(ni(e,t))return r(e,n.healthCheck);if(s.exit.code===0&&s.exit.signal===null){let a=Math.min(Ha,n.startupTimeoutMs??Ha),d=Date.now()+a;for(;Date.now()<=d;){let u=await Vn(r(e,n.healthCheck),n.startupSignal);if(Wn(u)!=="missing"||ni(e,t))return u;await Vn(ti(Math.min(n.pollIntervalMs??100,Math.max(1,d-Date.now()))),n.startupSignal)}}throw Wa(s.exit)}return s.observation}o(qm,"observeStartupHealth");async function $m(e,n,t,r){let s=await Vn(Promise.race([ti(e).then(()=>{}),t.exit]),r);if(s!==void 0){if(ni(n,t)){await Vn(ti(e),r);return}throw Wa(s)}}o($m,"waitForStartupPoll");function ni(e,n){let t=te(e.lockFile);return t!==void 0&&t.pid!==n.pid}o(ni,"hasCompetingStartupOwner");function Wa(e){let n=e.signal!==null?`signal ${e.signal}`:`code ${e.code??"unknown"}`;return new Tn(`Runtime daemon child exited before becoming healthy (${n}).`,"child_exit")}o(Wa,"runtimeDaemonExitedEarly");function Hm(e){let n=process.versions.electron===void 0?"":" Packaged Electron auto-start requires the RunAsNode fuse to remain enabled.";return new Tn(`Timed out waiting for runtime daemon profile "${e.profile}" to become ready.${n}`,"timeout")}o(Hm,"runtimeDaemonStartupTimeout");async function Km(e){let n=zm();Um(n);let t=[...n!==void 0?Gm(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=Ln({args:t,env:Wm({homeDir:e.homeDir,configHome:e.configHome,parentEnv:process.env}),isElectron:process.versions.electron!==void 0}),s=Om(process.execPath,r.args,{detached:!0,stdio:"ignore",windowsHide:!0,env:r.env}),a=new Promise(d=>{s.once("exit",(u,p)=>d({code:u,signal:p}))});return await new Promise((d,u)=>{s.once("spawn",d),s.once("error",u)}),Xm(s,a)}o(Km,"spawnRuntimeDaemonServeProcess");function Xm(e,n){return{pid:e.pid,exit:n,unref(){e.unref()},async terminate(){if(!(e.exitCode!==null||e.signalCode!==null)&&(await _i(e),!await Bm(n,1e3)))throw new Error(`Runtime daemon child ${e.pid??"unknown"} did not exit after termination.`)}}}o(Xm,"createRuntimeDaemonStartupProcess");async function Bm(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(Bm,"didExitWithin");function Um(e){if(e!==void 0&&!Nm(e))throw new Error(`Runtime daemon CLI entry is unavailable at "${e}". Keep the published KodaX dist files external to the embedder bundle.`)}o(Um,"assertRuntimeDaemonCliEntryAvailable");function Wm(e){let n={...e.parentEnv,KODAX_DAEMON_SERVE:"1",KODAX_HOME:e.configHome??Ae.join(e.homeDir,".kodax")};return delete n[ot],n}o(Wm,"createRuntimeDaemonServeEnvironment");function zm(){if(process.env.KODAX_BUNDLED==="true")return;let e=Lm(import.meta.url);if(e.endsWith(".ts"))return Ae.resolve(Ae.dirname(e),"..","kodax_cli.ts");let n=Ae.dirname(e),t=Ae.basename(n)==="chunks"?Ae.dirname(n):n;return Ae.join(t,"kodax_cli.js")}o(zm,"resolveDaemonCliEntry");function Gm(e,n){let t=[];for(let r=0;r<e.length;r+=1){let s=e[r]??"",a=s.toLowerCase();if(a==="--require"||a==="-r"){let d=e[r+1];d!==void 0&&(Xa(d)&&t.push(s,d),r+=1)}else if(a.startsWith("--require=")){let d=s.slice(10);Xa(d)&&t.push(s)}else(a.startsWith("--max-old-space-size")||a==="--enable-source-maps")&&t.push(s)}return n&&t.push("--import","tsx"),t}o(Gm,"daemonServeExecArgv");function Xa(e){return Ae.resolve(e)===Ae.resolve("scripts","production-env.cjs")}o(Xa,"isKodaXProductionEnvPreload");function ti(e){return new Promise(n=>setTimeout(n,e))}o(ti,"delay");async function Vn(e,n){if(!n)return e;if(n.aborted)throw Ba();let t;try{return await Promise.race([e,new Promise((r,s)=>{t=o(()=>s(Ba()),"cancel"),n.addEventListener("abort",t,{once:!0})})])}finally{t&&n.removeEventListener("abort",t)}}o(Vn,"raceRuntimeDaemonStartupStep");function Ba(){return new Tn("Runtime daemon startup cancelled.","cancelled")}o(Ba,"runtimeDaemonStartupCancelled");import{Worker as Jm}from"node:worker_threads";import{existsSync as Vm}from"node:fs";import{basename as Qm,dirname as ri,join as za}from"node:path";import{fileURLToPath as Ga,pathToFileURL as Ja}from"node:url";function Va(e,n={}){let t=Ym(),r=new Jm(t,{workerData:e,execArgv:t.href.endsWith(".ts")?["--import","tsx"]:[],...n.resourceLimits!==void 0?{resourceLimits:n.resourceLimits}:{}}),s=new Map,a=new Set,d=0,u=!1,p=o(i=>{for(let l of s.values())l.reject(i);s.clear()},"rejectPending"),f=o(i=>{u||(u=!0,p(i),a.clear())},"markClosed");return r.on("message",i=>{if(Bn(i)){for(let w of a)w(i);return}if(!Rn(i)&&!yn(i)||!i.id)return;let l=s.get(i.id);if(!l)return;if(s.delete(i.id),Rn(i)){l.resolve(i.result);return}let c=new Error(i.error.message);c.code=i.error.code,i.error.data!==void 0&&(c.data=i.error.data),l.reject(c)}),r.on("error",i=>f(i)),r.on("exit",i=>f(new Error(`Runtime Worker exited with code ${i}.`))),{transport:{request(i,l,c){if(u)return Promise.reject(new Error("Runtime Worker transport is closed."));let w=`worker_${++d}`;return new Promise((P,R)=>{s.set(w,{resolve:P,reject:R});try{r.postMessage(gt(w,i,l,c))}catch(I){s.delete(w),R(I instanceof Error?I:new Error(String(I)))}})},subscribe(i){return u?{close(){}}:(a.add(i),{close:o(()=>a.delete(i),"close")})},async close(){u||(f(new Error("Runtime Worker transport closed.")),await r.terminate())}},threadId:r.threadId,async terminate(){u||f(new Error("Runtime Worker terminated.")),await r.terminate()}}}o(Va,"createRuntimeWorkerTransport");function Ym(){if(import.meta.url.endsWith(".ts")){let t=new URL("../../dist/runtime-worker.js",import.meta.url);return Vm(Ga(t))?t:new URL("./entry.ts",import.meta.url)}if(process.env.KODAX_BUNDLED==="true")return Ja(za(ri(process.execPath),"runtime-worker.js"));let e=ri(Ga(import.meta.url)),n=Qm(e)==="chunks"?ri(e):e;return Ja(za(n,"runtime-worker.js"))}o(Ym,"resolveRuntimeWorkerUrl");var Ne=class extends Error{constructor(t,r,s){super(t,s);this.preflight=r;this.name="RuntimeDaemonCapabilityUpgradeError"}preflight;static{o(this,"RuntimeDaemonCapabilityUpgradeError")}code="daemon_capability_upgrade_required";capability="runtimeAutoModeGuardrail";recoverable=!0;restartRequired=!0},un=class extends Error{static{o(this,"RuntimeAutoModeConfigurationError")}code="auto_mode_classifier_model_required";recoverable=!0;constructor(n){super(n),this.name="RuntimeAutoModeConfigurationError"}};function yi(e){let n=F.resolve(e??xd.homedir());return{homeDir:n,configHome:e===void 0?F.resolve(sr):F.join(n,".kodax")}}o(yi,"resolveRuntimeDaemonClientLocation");function _n(e,n="default"){let t=yi(e);return{...t,paths:hn(t.configHome,n)}}o(_n,"resolveRuntimeDaemonClientPaths");function Jy(e={}){let{paths:n}=_n(e.homeDir,e.profile),t=`inline_${ge().replace(/-/g,"")}`,r=Ps(n,{runtimeId:t,pid:process.pid,createdAt:new Date().toISOString(),kind:"inline"},e.enableRollback===!0),s=!1;return{profile:n.profile,ownerId:t,ownerPolicy:Ee(n),close(){s||(s=!0,Pt(r))}}}o(Jy,"acquireKodaXInlineOwner");function Vy(e={}){return Ee(_n(e.homeDir,e.profile).paths)}o(Vy,"getKodaXRuntimeOwnerPolicy");function Qy(e={}){let{paths:n}=_n(e.homeDir,e.profile),t=te(n.lockFile);return{profile:n.profile,policy:Ee(n),ownerStatus:t!==void 0?"owned":N.existsSync(n.lockFile)?"unreadable":"unowned",owner:t??null}}o(Qy,"getKodaXRuntimeOwnerState");function Yy(e={}){return It(_n(e.homeDir,e.profile).paths)}o(Yy,"enableKodaXDaemonOwner");function Zy(e){let{paths:n}=_n(e.homeDir,e.profile);if(te(n.lockFile)!==void 0)throw new Error("Cannot change Runtime owner mode while an owner lock exists.");return ks(n,e.mode,e.expectedRevision)}o(Zy,"setKodaXRuntimeOwnerMode");var Zm=["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"],ep=new Set(["code","cli","repl","acp","a2a","sdk","ide","space-desktop"]),qt=class extends Error{constructor(t){super(`Runtime continuation target is already terminal: ${t}`);this.afterRunId=t;this.name="RuntimeContinuationStaleError"}afterRunId;static{o(this,"RuntimeContinuationStaleError")}},Qa=5*6e4,$t=1e4,Ht=1e3,Ya=256*1024*1024,np=64*1024,tp=10,Dd=16*1024*1024,rp=Dd/2,ip=128*1024,op=8,Td=512*1024,Za=128*1024,sp=256*1024,ap=50,dp=200,ed=1024,up=new Set(["assistant.delta","thinking.delta","tool.progress","run.progress"]),Ad=new Set(["tool_call","tool_describe"]),cp=new Set(["image","file","video"]);function lp(e,n){let t=F.relative(Ai(),e);return F.isAbsolute(t)||t.startsWith("..")?e:F.join(n,t)}o(lp,"rebaseAgentConfigPath");async function mp(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 pp(e);let b=e.autoStartDaemon??(e.daemonTransport===void 0&&e.daemonEndpoint===void 0);return Md({profile:e.profile,transport:e.daemonTransport,endpoint:e.daemonEndpoint,autoStart:b,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:b?{...e.requirements,runtimeAutoModeGuardrail:3}: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 fp(e);let n={hardDispose:!1,externalAgents:e.externalAgents!==void 0,afterTurnInput:{version:1},interruptInput:{version:1,availability:"per_run"},contextCompaction:{version:3,alwaysOn:!0,absoluteThreshold:!0,contextIdentity:!0,canonicalFinishedEvent:!0,durableBeforeEvict:!0,exactHistoryRecovery:!0},transcriptPaging:{version:1,maxPageBytes:Td},transcriptSearch:{version:1,defaultScope:"compacted",citedEntries:!0},learningCenter:{version:1},actorControlPlane:{version:1,methodNamespace:"agents"},runtimeAutoModeGuardrail:{version:3,owner:"session-runtime",escalationCreatesPermission:!0,fallbackPersistsEngine:!0,defaultClassifierTimeoutMs:st,defaultSpeculativeWindowMs:500,boundedClassifierInput:!0,diagnosticsVersion:1,permissionGrantSuggestions:!0,concretePermissionMatchers:!0,clientScopeExpansion:!1},...e.externalAgents!==void 0?{externalAgentAdmin:{version:1}}:{}};wi(n,e.requirements);let t={runtimeId:e.daemonHostRuntimeId??`rt_${ge().replace(/-/g,"").slice(0,12)}`,mode:"embedded",profile:e.profile??"default",startedAt:new Date().toISOString(),version:"0.7.74",isolation:"inline"},r=Xp(e),s=yo(r?{sessionsDir:r}:void 0),a=mf(t.profile,s,e.sharedDaemonHost===!0),d=If(e);Bd(d);let u=Kp(e),p=e.externalAgents?await Ki({factories:e.externalAgents.factories,policy:e.externalAgents.policy,credentialBroker:e.externalAgents.credentialBroker,artifactPolicy:e.externalAgents.artifactPolicy,store:bo(F.join(u.runtimeDir,"agents"))}):void 0,f=Lp(u),v=Sp(u,f),i=nf(f,e.permissionTimeoutMs??Qa,u),l=Yp(f,e.permissionTimeoutMs??Qa),c=xp(),w=kp(),P=Ap(s,p,e.externalAgents?.defaultContext),R=new Map,I=new Map,k=[...Bf(u.loadRunStatuses())].sort(hi);for(let b of k){let A=b.sessionOrder??(I.get(b.sessionId)??0)+1;I.set(b.sessionId,Math.max(I.get(b.sessionId)??0,A));let _=Vp({...b,acceptedAt:b.acceptedAt??b.startedAt,sessionOrder:A},f,u);R.set(_.runId,Jp(_))}let x=!1,g=o(()=>{if(x)throw new Error("KodaX runtime is closed")},"ensureOpen"),h=Ip({bus:f,defaultModel:e.defaultModel,defaultProvider:e.defaultProvider,ensureOpen:g,isClosed:o(()=>x,"isClosed"),artifacts:c,permissions:i,userInputs:l,enableSharedInteractions:e.sharedDaemonHost===!0,persistence:u,runs:R,sessionManager:s,sessionAdmission:a,agentPlane:p,defaultAgentContext:e.externalAgents?.defaultContext,actorRegistry:P,settingsOwner:v}),D=vp(t,s,f,u,g,b=>[...R.values()].some(A=>A.sessionId===b&&We(A.phase)),v,b=>h.list({sessionId:b}),b=>i.service.listPending({sessionId:b}),b=>h.getAutoModeStats(b),b=>{h.releaseSession(b),i.releaseSession(b)},a),T=e.homeDir?F.join(F.resolve(e.homeDir),".kodax"):sr,C=F.join(e.homeDir?F.resolve(e.homeDir):xd.homedir(),"kodax_a2a_server_workspace",encodeURIComponent(t.profile)),H=Bo({configHome:T,managedWorkspaceRoot:C,defaultProvider:e.defaultProvider,defaultModel:e.defaultModel,runs:h,sessions:D,createSkillScriptRunner:o(b=>es({...b,snapshotRoot:F.join(C,"bindings")}),"createSkillScriptRunner")}),m=rs({rootDir:F.join(T,"learned"),defaultClientIdentity:e.clientInfo?.instanceId??`inline_${t.runtimeId}`,proposalStores:[lp(Li(process.cwd()),T)]});return{identity:t,capabilities:n,sessions:D,runs:h,events:f.service,permissions:i.service,userInputs:l.service,credentials:pg(),hostTools:fg(),operations:{async get(){throw new Error("Embedded Runtime does not persist daemon operation receipts.")}},workflows:w,learning:m,config:bp(g,d),catalog:Pp(g,d),mcp:Ep(g,d),artifacts:c.service,status:_p({identity:t,permissions:i,userInputs:l,runs:R,sessionManager:s,sessionAdmission:a,workflows:w,actors:P}),diagnostics:Op(f.service),admin:Cp(p),agents:Mp(p,H,P,a),async close(){x||(x=!0,h.closeAll("runtime closed"),i.rejectAll("runtime closed"),i.releaseAllSessionGrants(),l.rejectAll("runtime closed"),await P.close("runtime closed"),await p?.close(),f.close())}}}o(mp,"createKodaXRuntime");async function pp(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?Od(e.daemonEndpoint):void 0,r=yi(e.homeDir),s=await Fa({homeDir:r.homeDir,configHome:r.configHome,profile:e.profile,endpoint:t,connectTimeoutMs:e.daemonConnectTimeoutMs,startupTimeoutMs:e.daemonStartupTimeoutMs,createRuntime:o(a=>mp({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(!s.ownsHost)throw await s.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 Md({profile:e.profile,transport:s.transport,daemonToken:e.daemonToken??Un(s.paths),clientInfo:e.clientInfo,capabilities:e.capabilities,requirements:{...e.requirements,externalAgents:!0,externalAgentAdmin:1}}),d=!1;return{...a,identity:{...a.identity,isolation:"inline"},async close(){d||(d=!0,await a.close(),s.ownsHost?await s.shutdown():await s.close())}}}catch(a){throw await s.close(),s.ownsHost&&await s.shutdown(),a}}o(pp,"createInProcessExternalAgentDaemon");async function fp(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=Va({homeDir:e.homeDir,profile:e.profile,sessionsDir:e.sessionsDir,defaultProvider:e.defaultProvider,defaultModel:e.defaultModel,permissionTimeoutMs:e.permissionTimeoutMs},e.worker);try{let r=Cn(await t.transport.request("initialize",{profile:e.profile??"default",...e.clientInfo!==void 0?{clientInfo:e.clientInfo}:{},...e.capabilities!==void 0?{capabilities:e.capabilities}:{}})),s=Ud(r.identity);wi(r.capabilities,{...e.requirements,hardDispose:!0});let a=ht({identity:{...s,mode:"embedded",isolation:"worker",workerThreadId:t.threadId},transport:t.transport,capabilities:Cn(r.capabilities)}),d=!1;return{...a,async close(){if(!d){d=!0;try{await gp(t.transport.request("runtime.shutdown"),n)}finally{await t.terminate()}}}}}catch(r){throw await t.terminate(),r}}o(fp,"createWorkerHostedKodaXRuntime");function wi(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?.contextCompaction===void 0&&n?.transcriptPaging===void 0&&n?.transcriptSearch===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=Cn(e);if(n.hardDispose&&t.hardDispose!==!0)throw new Error("Runtime does not support the required hardDispose capability.");if(n.externalAgents&&t.externalAgents!==!0)throw new Error("Runtime does not support the required externalAgents capability.");n.operationDeduplication!==void 0&&nd(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],["contextCompaction",n.contextCompaction],["transcriptPaging",n.transcriptPaging],["transcriptSearch",n.transcriptSearch],["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[s,a]of r)a!==void 0&&nd(t,s,a)}o(wi,"assertRuntimeCapabilities");function nd(e,n,t){let r=e[n];if(!X(r)||!Number.isSafeInteger(r.version)||Number(r.version)<t)throw new Error(`Runtime does not support the required ${n} capability.`)}o(nd,"assertVersionedRuntimeCapability");async function gp(e,n){let t;try{await Promise.race([e,new Promise((r,s)=>{t=setTimeout(()=>s(new Error(`Runtime Worker shutdown timed out after ${n}ms.`)),n),t.unref?.()})])}finally{t!==void 0&&clearTimeout(t)}}o(gp,"settleWithin");async function Md(e={}){return _d(e,!0)}o(Md,"connectKodaXRuntime");function Cd(e,n,t){let r=e[n];return X(r)&&Number.isSafeInteger(r.version)&&Number(r.version)>=t}o(Cd,"hasVersionedRuntimeCapability");async function Rp(e){if(!Cd(e.capabilities,"daemonManagement",1))throw new Ne("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=ht({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 Ne(`The running daemon needs runtimeAutoModeGuardrail v${e.requiredVersion} 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(s){throw s instanceof Ne?s:new Ne("The running daemon changed while preparing its safe capability upgrade. Retry after active and queued work has settled.",t?.preflight,{cause:s})}finally{let s=!1;await n.close().then(()=>{s=!0}).catch(a=>{oe({source:"runtime.daemon.upgrade",level:"warn",message:"Failed to close the legacy daemon client after upgrade attempt.",detail:se(a)})}),s||await e.lease.close().catch(a=>{oe({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(;te(e.lease.paths.lockFile)!==void 0;){if(Date.now()>=r)throw new Ne("The legacy daemon accepted the upgrade stop but did not release its owner fence before timeout. Retry after the daemon exits.");await new Promise(s=>setTimeout(s,50))}}catch(s){try{It(e.lease.paths)}catch(a){throw new Ne("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([s,a])})}throw s}try{It(e.lease.paths)}catch(s){throw new Ne("The legacy daemon stopped, but daemon ownership could not be re-enabled automatically. Call `enableKodaXDaemonOwner(...)` from the SDK and retry.",void 0,{cause:s})}}o(Rp,"replaceLegacyRuntimeDaemonForGuardrailUpgrade");async function _d(e,n){td("daemonStartupTimeoutMs",e.daemonStartupTimeoutMs),td("daemonConnectTimeoutMs",e.daemonConnectTimeoutMs);let t=e.endpoint!==void 0?Od(e.endpoint):void 0,r=yi(e.homeDir),s=e.transport===void 0&&e.autoStart===!0?await Ua({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??s?.endpoint??(e.transport===void 0?En(e.profile??"default",Sn(r.homeDir,r.configHome)):void 0),d=e.transport??s?.transport??(a!==void 0?await je(a,{connectTimeoutMs:e.daemonConnectTimeoutMs}):void 0);if(!d)throw new Error("connectKodaXRuntime requires a daemon transport, endpoint, or autoStart: true.");let u=hp(e),p,f={},v,i,l=!1;try{let w={name:e.clientInfo?.name??"kodax-sdk",instanceId:e.clientInfo?.instanceId??`sdk_${ge().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}:{}},P=Cn(await d.request("initialize",{profile:e.profile??"default",connectionPurpose:"client",autoStart:e.autoStart===!0,...u!==void 0?{token:u}:{},clientInfo:w,capabilities:{...e.capabilities,operationDeduplication:!0},...a!==void 0?{endpoint:a.path}:{}}));p=Ud(P.identity),f=P.capabilities===void 0?{}:Cn(P.capabilities),v=typeof P.journalEpoch=="string"?P.journalEpoch:void 0,i=yp(P.grantedScopes);let R=e.autoStart===!0?{...e.requirements,runtimeAutoModeGuardrail:3}:e.requirements,I=R?.runtimeAutoModeGuardrail;if(I!==void 0&&!Cd(f,"runtimeAutoModeGuardrail",I)){if(!n||e.autoStart!==!0||s===void 0)throw new Ne(`Runtime daemon does not support runtimeAutoModeGuardrail v${I}. Stop all daemon work and restart it with the upgraded KodaX installation.`);try{await Rp({identity:p,capabilities:f,transport:d,lease:s,...v!==void 0?{journalEpoch:v}:{},...i!==void 0?{grantedScopes:i}:{},startupTimeoutMs:e.daemonStartupTimeoutMs??6e4,requiredVersion:I})}finally{l=!0}return _d(e,!1)}wi(f,R);let k=e.profile??"default";if(p.profile!==k)throw new Error(`Runtime daemon profile mismatch: expected ${k}, got ${p.profile}`)}catch(w){throw l||(s!==void 0?await s.close():await d.close?.()),w}let c=ht({identity:{...p,mode:"daemon",isolation:"process"},transport:d,capabilities:f,...v!==void 0?{journalEpoch:v}:{},...i!==void 0?{grantedScopes:i}:{}});return s?{...c,async close(){await c.close()}}:c}o(_d,"connectKodaXRuntimeInternal");function td(e,n){if(!(n===void 0||Number.isFinite(n)&&n>0))throw new Error(`${e} must be a positive finite number.`)}o(td,"assertPositiveRuntimeTimeout");function yp(e){if(!Array.isArray(e))return;let n=e.filter(t=>typeof t=="string"&&wp(t));return n.length===e.length?n:void 0}o(yp,"parseRuntimeGrantedScopes");function wp(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(wp,"isRuntimeGrantedScope");function hp(e){if(e.daemonToken!==void 0)return e.daemonToken;if(!(e.transport!==void 0&&e.autoStart!==!0))return Un(_n(e.homeDir,e.profile).paths)}o(hp,"resolveConnectDaemonToken");function Od(e){return typeof e!="string"?e:{kind:process.platform==="win32"||e.startsWith("\\\\.\\pipe\\")?"pipe":"unix",path:e}}o(Od,"normalizeRuntimeDaemonEndpoint");function Sp(e,n){let t=new Map,r=new Map,s=new Set,a=o((u,p)=>{let v=(r.get(u)??Promise.resolve()).then(p),i=v.then(()=>{},()=>{});return r.set(u,i),i.then(()=>{r.get(u)===i&&r.delete(u)}),v},"enqueue"),d=o((u,p,f)=>{t.set(u,p);for(let v of s)v(u,p,f);n.emit("session.settings.updated",{sessionId:u,revision:p.revision,settings:p.value,patch:f},{sessionId:u,runId:u})},"publish");return{async read(u){await(r.get(u)??Promise.resolve());let p=e.loadSessionSettingsVersioned(u);return t.set(u,p),p},peek(u){return t.get(u)},update(u,p,f,v){return a(u,()=>{let i=e.loadSessionSettingsVersioned(u);if(f!==void 0&&i.revision!==f)throw Bt(`Session settings revision ${f} is stale; current revision is ${i.revision}`,i.revision);let l=ff(i.value,p);v(l);let c={revision:i.revision+1,value:l};return e.saveSessionSettingsVersioned(u,c),d(u,c,p),c})},async persistAutoModeEngine(u,p){let f=t.get(u)??e.loadSessionSettingsVersioned(u);t.set(u,{revision:f.revision,value:{...f.value,autoModeEngine:p}}),await a(u,()=>{let v=e.loadSessionSettingsVersioned(u);if(v.value.autoModeEngine===p){t.set(u,v);return}let i={revision:v.revision+1,value:{...v.value,autoModeEngine:p}};e.saveSessionSettingsVersioned(u,i),d(u,i,{autoModeEngine:p})})},subscribe(u){return s.add(u),{close:o(()=>{s.delete(u)},"close")}},release(u){t.delete(u),r.delete(u)}}}o(Sp,"createRuntimeSessionSettingsOwner");function vp(e,n,t,r,s,a,d,u,p,f,v,i){let l=new Set,c=o((R,I,k)=>({id:R,title:I.title,...I.gitRoot?{gitRoot:I.gitRoot}:{},...I.runtimeInfo?.workspaceRoot?{workspaceRoot:I.runtimeInfo.workspaceRoot}:{},...I.runtimeInfo?.surface?{surface:I.runtimeInfo.surface}:{},...I.runtimeInfo?.profileId?{profileId:I.runtimeInfo.profileId}:{},...k?{createdAt:k}:{}}),"toRuntimeSession"),w,P=o(async R=>{for(let I=0;I<op;I+=1){let k=t.currentSessionSeq(R),x=await i.loadRequired(R),[g,h,D]=await Promise.all([n.loadFullTranscript(R),u(R),p(R)]),T=await d.read(R),C=t.currentSessionSeq(R);if(k===C)return{runtimeId:e.runtimeId,cursor:C,transcriptRevision:Ft(g),session:c(R,x),transcript:g===null?null:yd(g),settings:T,runs:h,pendingPermissions:D,live:t.projectSession(R)}}throw Fe(`Session ${R} changed continuously while taking a snapshot`)},"captureObservationSnapshot");return{async create(R={}){s(),i.assertCreate(R);let I=R.sessionId??await nr();if(l.has(I))throw Object.assign(new Error(`Session already exists: ${I}`),{code:"conflict"});l.add(I);try{if(await n.loadSession(I)!==null)throw Object.assign(new Error(`Session already exists: ${I}`),{code:"conflict"});let k=R.projectPath?F.resolve(R.projectPath):void 0,x=R.gitRoot?F.resolve(R.gitRoot):k,g=af(R,k,x),h={messages:[],title:R.title??"",gitRoot:x??"",...R.tag!==void 0?{tag:R.tag}:{},...g!==void 0?{runtimeInfo:g}:{},scope:"user"};await n.storage.save(I,h);let D=c(I,h,new Date().toISOString());return t.emit("session.created",D,{sessionId:I,runId:I}),D}finally{l.delete(I)}},async load(R){s();let I=await i.loadRequired(R),k=c(R,I);return t.emit("session.loaded",k,{sessionId:R,runId:R}),k},async list(R){return s(),i.assertFilter(R),(await n.listSessions(R)).filter(i.admitsSummary).map(jd)},async transcript(R){return s(),await i.loadRequired(R),n.loadFullTranscript(R)},async transcriptPage(R){s(),await i.loadRequired(R.sessionId);let I=await n.loadFullTranscript(R.sessionId);return I===null?null:yd(I,R.cursor,R.limit)},async transcriptEntryChunk(R){s(),await i.loadRequired(R.sessionId);let I=t.currentSessionSeq(R.sessionId);if(w?.sessionId===R.sessionId&&w.sessionSeq===I&&w.revision===R.revision&&w.entryIndex===R.entryIndex)return wd(R,w.revision,w.entryId,w.encoded);let k=await n.loadFullTranscript(R.sessionId);if(k===null)return null;let x=Ft(k);if(R.revision!==x)throw Fe("Transcript revision changed; request a fresh observation snapshot");let g=k.transcriptEntries[R.entryIndex];if(g===void 0)throw new Error(`Transcript entry index is out of range: ${R.entryIndex}`);let h=Buffer.from(JSON.stringify(g),"utf8");return w={sessionId:R.sessionId,sessionSeq:I,revision:x,entryIndex:R.entryIndex,...typeof g.entryId=="string"?{entryId:g.entryId}:{},encoded:h},wd(R,x,w.entryId,h)},async transcriptSearch(R){s(),await i.loadRequired(R.sessionId);let I=await n.loadFullTranscript(R.sessionId);if(I===null)return null;let k=I.lineage??Fi(I.messages),x=qi(k,{query:R.query,limit:R.limit,role:R.role,scope:R.scope}),g=new Map(I.transcriptEntries.map((D,T)=>[D.entryId,T])),h=x.hits.flatMap(D=>{let T=g.get(D.entryId);return T===void 0?[]:[{...D,entryIndex:T}]});return{revision:Ft(I),hits:h}},async observe(R,I){s();let k=[],x,g=!1,h=o(T=>{if(!(g||x!==void 0&&T.seq<=x))try{I(T)}catch(C){oe({source:"runtime.sessions.observe",level:"error",message:`Session observation listener failed for ${T.type}`,detail:se(C)})}},"deliver"),D=t.service.subscribe({sessionId:R},T=>{x===void 0?k.push(T):h(T)});try{let T=await P(R);x=T.cursor;for(let C of k.splice(0).sort((H,m)=>H.seq-m.seq))h(C);return{snapshot:T,close(){g||(g=!0,k.length=0,D.close())}}}catch(T){throw g=!0,D.close(),T}},async fork(R){s();let I=await i.loadRequired(R.sessionId),k=await n.forkSession(R.sessionId,{...R.selector!==void 0?{selector:R.selector}:{},...R.newSessionId!==void 0?{sessionId:R.newSessionId}:{},...R.title!==void 0?{title:R.title}:{}});if(!k){let g=R.newSessionId??await nr(),h={...I,title:R.title??I.title,messages:I.messages.map(Rg),actorSnapshot:void 0};await n.storage.save(g,h);let D=c(g,h);return t.emit("session.created",D,{sessionId:g,runId:g}),D}let x=c(k.sessionId,k.data);return t.emit("session.created",x,{sessionId:k.sessionId,runId:k.sessionId}),x},async getSettingsVersioned(R){return s(),await i.loadRequired(R),d.read(R)},async getSettings(R){return(await this.getSettingsVersioned(R)).value},async getAutoModeStats(R){s(),await i.loadRequired(R);let I=(await d.read(R)).value;if(Se(I.permissionMode)!=="auto")return;let k=f(R);return{engine:I.autoModeEngine??k?.engine??"llm",...I.autoModeClassifierModel!==void 0?{classifierModel:I.autoModeClassifierModel}:{},denials:k?.denials??ir(),breaker:k?.breaker??or()}},async updateSettings(R,I){s();let k=await i.loadRequired(R);return(await d.update(R,I,void 0,x=>pi(k,x))).value},async updateSettingsVersioned(R,I,k){s();let x=await i.loadRequired(R);return d.update(R,I,k.expectedRevision,g=>pi(x,g))},async appendNotice(R){s(),await i.loadRequired(R.sessionId);let I=await n.appendClientNotice(R.sessionId,{content:R.content,...R.source!==void 0?{source:R.source}:{}});return I&&t.emit("session.notice.appended",{sessionId:R.sessionId,entry:I},{sessionId:R.sessionId,runId:R.sessionId}),I},async rewind(R){s(),await i.loadRequired(R.sessionId),li(R.sessionId,a);let I=await n.rewindSession(R.sessionId,{...R.selector!==void 0?{selector:R.selector}:{}});if(!I)return null;let k=c(R.sessionId,I);return t.emit("session.rewound",{sessionId:R.sessionId,selector:R.selector,session:k},{sessionId:R.sessionId,runId:R.sessionId}),k},async setActiveEntry(R){s(),await i.loadRequired(R.sessionId),li(R.sessionId,a);let I=await n.setActiveEntry(R.sessionId,R.entryId);if(!I)return null;let k=c(R.sessionId,I);return t.emit("session.active_entry.updated",{sessionId:R.sessionId,entryId:R.entryId,session:k},{sessionId:R.sessionId,runId:R.sessionId}),k},async compact(R){s();let I=await i.loadRequired(R.sessionId);li(R.sessionId,a);let k=Date.now(),x=I.lineage?.entries.filter(h=>h.type==="compaction").length??0;t.emit("context.compaction.started",{meta:{contextId:R.sessionId,contextKind:"root",contextRevision:x}},{sessionId:R.sessionId,runId:R.sessionId});let g=x;try{let h=(await d.read(R.sessionId)).value,D=await n.compactSession(R.sessionId,{...R.provider!==void 0?{provider:R.provider}:{},...R.model!==void 0?{model:R.model}:{},...R.customInstructions!==void 0?{customInstructions:R.customInstructions}:{},...R.contextWindow!==void 0?{contextWindow:R.contextWindow}:{},...(R.triggerPercent??h.compactionTriggerPercent)!==void 0?{triggerPercent:R.triggerPercent??h.compactionTriggerPercent}:{},...(R.triggerTokens??h.compactionTriggerTokens)!==void 0?{triggerTokens:R.triggerTokens??h.compactionTriggerTokens}:{}}),T=await n.loadSession(R.sessionId),C=T?c(R.sessionId,T):void 0;return g=T?.lineage?.entries.filter(H=>H.type==="compaction").length??x,t.emit("context.compaction.finished",{contextId:R.sessionId,contextKind:"root",contextRevision:g,source:"manual",tokensBefore:D.tokensBefore,tokensAfter:D.tokensAfter,committed:D.compacted,elapsedMs:Date.now()-k,beforeRevision:x,afterRevision:g,...D.report??{},...D.reason!==void 0?{reason:D.reason}:{}},{sessionId:R.sessionId,runId:R.sessionId}),D.compacted&&t.emit("session.compacted",{sessionId:R.sessionId,result:{compacted:D.compacted,tokensBefore:D.tokensBefore,tokensAfter:D.tokensAfter},...C!==void 0?{session:C}:{}},{sessionId:R.sessionId,runId:R.sessionId}),{...D,...C!==void 0?{session:C}:{}}}finally{t.emit("context.compaction.ended",{meta:{contextId:R.sessionId,contextKind:"root",contextRevision:g}},{sessionId:R.sessionId,runId:R.sessionId})}},async archive(R){if(s(),await i.loadRequired(R),!await n.archiveSession(R))throw new Error(`Session not found or not archived: ${R}`)},async unarchive(R){if(s(),await i.loadRequired(R),!await n.unarchiveSession(R))throw new Error(`Session not found or not unarchived: ${R}`)},async delete(R){s(),await i.loadRequired(R);let I=await n.deleteSession(R);gg(R,I),d.release(R),v(R)}}}o(vp,"createRuntimeSessionService");function Ip(e){let n=new Map,t=new Map,r=new Map,s=new Map,a=new Map,d=new Map,u=new Map;for(let m of e.runs.values())d.set(m.sessionId,Math.max(d.get(m.sessionId)??0,m.sessionOrder));let p=o(m=>{let S=e.runs.get(m);if(!S)throw new Error(`Runtime run not found: ${m}`);return S},"getRecord"),f=o(m=>{n.get(m.sessionId)===m.runId&&n.delete(m.sessionId)},"releaseActiveRun"),v=o(m=>{t.get(m.runId)?.(),t.delete(m.runId)},"releaseActiveQueueRoute"),i=o(m=>{m.releaseAbortSignalSubscription?.(),m.releaseAbortSignalSubscription=void 0},"releaseAbortSignalSubscription"),l=o(m=>{m.actorSession===void 0||t.has(m.runId)||t.set(m.runId,xi(Qt(m.sessionId,"/root")))},"registerActiveQueueRoute"),c=o((m,S)=>{m.start?.resolve(S),m.start=void 0,delete m.providerCredential},"resolveRunStart"),w=o((m,S)=>(i(m),e.permissions.rejectForRun(m.runId,"runtime run ended"),e.userInputs.rejectForRun(m.runId,"runtime run ended"),m.start?.options.guardrails?.find(gi)?.clearAllowedCalls(),c(m,S),v(m),f(m),Uf(e.runs),x(m.sessionId),S),"finishRun"),P=o((m,S)=>{let b=Yf(S,m),A=Qf(S),_=m.terminalEmitted?m.phase:A.phase;return m.terminalEmitted||(m.error=b.message),Lt(e.bus,e.persistence,m,_,A.terminal),{runId:m.runId,sessionId:m.sessionId,phase:m.phase,error:b}},"failedRunResult"),R=o((m,S,b)=>{let A=m.phase==="queued";m.phase==="queued"&&Np(a,m),i(m),m.running?.abort(new Error(S)),m.abortController?.abort(new Error(S)),e.permissions.rejectForRun(m.runId,S),e.userInputs.rejectForRun(m.runId,S),m.start?.options.guardrails?.find(gi)?.clearAllowedCalls(),Lt(e.bus,e.persistence,m,"cancelled",{code:"cancelled",effectOutcome:A?"none":"unknown",message:S});let _={runId:m.runId,sessionId:m.sessionId,phase:m.phase};return c(m,_),v(m),f(m),b&&!e.isClosed()&&x(m.sessionId),_},"cancelRun"),I=o(m=>{if(!m.start||e.isClosed()){R(m,"runtime closed",!1);return}m.phase="running",m.interruptInputOpen=m.actorSession!==void 0,m.queuedAt=void 0,m.runningAt=new Date().toISOString(),n.set(m.sessionId,m.runId),cn(e.bus,e.persistence,m,ke(m)),e.bus.emit("run.started",ke(m),{sessionId:m.sessionId,runId:m.runId});let S=sf({bus:e.bus,original:m.start.options.events,permissions:e.permissions,userInputs:e.userInputs,enableSharedInteractions:e.enableSharedInteractions,record:m,onMidTurnUserMessages:o(U=>D(m,U),"onMidTurnUserMessages")}),b=Dp({agentPlane:e.agentPlane,events:S,model:m.model,options:m.start.options,provider:m.provider,record:m,sessionManager:e.sessionManager});if(e.bus.emit("config.effective",{sessionId:m.sessionId,runId:m.runId,provider:m.provider,...m.model!==void 0?{model:m.model}:{},...b.effort!==void 0?{effort:b.effort}:{},...b.thinking!==void 0?{thinking:b.thinking}:{},...b.reasoningMode!==void 0?{reasoningMode:b.reasoningMode}:{},...b.agentMode!==void 0?{agentMode:b.agentMode}:{},...m.permissionMode!==void 0?{permissionMode:m.permissionMode}:{},...m.autoModeEngine!==void 0?{autoModeEngine:m.autoModeEngine}:{},...m.autoModeClassifierModel!==void 0?{autoModeClassifierModel:m.autoModeClassifierModel}:{},...m.autoModeTimeoutMs!==void 0?{autoModeTimeoutMs:m.autoModeTimeoutMs}:{},...m.autoModeSpeculativeWindowMs!==void 0?{autoModeSpeculativeWindowMs:m.autoModeSpeculativeWindowMs}:{},...b.compaction?.triggerPercent!==void 0?{compactionTriggerPercent:b.compaction.triggerPercent}:{},...b.compaction?.triggerTokens!==void 0?{compactionTriggerTokens:b.compaction.triggerTokens}:{},...b.context?.executionCwd!==void 0?{executionCwd:b.context.executionCwd}:{}},{sessionId:m.sessionId,runId:m.runId,...m.turnId!==void 0?{turnId:m.turnId}:{}}),m.mode==="managed_task"){let U=new AbortController;m.abortController=U;let q=b.abortSignal,ae=o(()=>{m.releaseAbortSignalSubscription=void 0,m.interruptInputOpen=!1,U.abort(q?.reason)},"handleUpstreamAbort");q?.aborted&&ae();let fe=o(()=>zi({...b,abortSignal:U.signal},m.start.prompt),"managedOperation"),ze=m.providerCredential!==void 0?Vt(m.provider,m.providerCredential,fe):fe();q!==void 0&&!q.aborted?(q.addEventListener("abort",ae,{once:!0}),m.releaseAbortSignalSubscription=()=>{q.removeEventListener("abort",ae)}):q?.aborted&&!U.signal.aborted&&ae(),l(m),ze.then(he=>{let Gt=m.terminalEmitted?m.phase:he.interrupted?"interrupted":he.success?"completed":"failed";return Lt(e.bus,e.persistence,m,Gt),{runId:m.runId,sessionId:m.sessionId,phase:m.phase,result:he}}).catch(he=>P(m,he)).then(he=>w(m,he));return}let A=o(()=>Wi(b,m.start.prompt),"codingOperation"),_=m.providerCredential!==void 0?Vt(m.provider,m.providerCredential,A):A();m.running=_;let $=b.abortSignal,Q=o(()=>{m.releaseAbortSignalSubscription=void 0,m.interruptInputOpen=!1},"handleUpstreamAbort");$?.aborted?Q():$!==void 0&&($.addEventListener("abort",Q,{once:!0}),m.releaseAbortSignalSubscription=()=>{$.removeEventListener("abort",Q)}),l(m),_.result.then(U=>{let q=m.terminalEmitted?m.phase:U.interrupted?"interrupted":U.success?"completed":"failed";return Lt(e.bus,e.persistence,m,q),{runId:m.runId,sessionId:m.sessionId,phase:m.phase,result:U}}).catch(U=>P(m,U)).then(U=>w(m,U))},"launchRecord"),k=o(m=>{try{I(m);return}catch(S){return w(m,P(m,S)),{error:S}}},"startRecord"),x=o(m=>{let S=a.get(m);if(!S||S.length===0||n.has(m))return;let b=S.shift();if(S.length===0&&a.delete(m),!b)return;let A=e.runs.get(b);if(!A||A.phase!=="queued"){x(m);return}k(A)},"drainNext"),g=o(m=>{let S=a.get(m.sessionId)??[];S.push(m.runId),a.set(m.sessionId,S),cn(e.bus,e.persistence,m,ke(m)),e.bus.emit("run.queued",ke(m),{sessionId:m.sessionId,runId:m.runId})},"enqueue"),h=o(m=>{let S=ke(m);cn(e.bus,e.persistence,m,S),e.bus.emit("run.updated",S,{sessionId:m.sessionId,runId:m.runId,...m.turnId!==void 0?{turnId:m.turnId}:{}})},"publishRunUpdate"),D=o((m,S)=>{let b=new Map;for(let q of m.interruptInputs)q.state==="queued"&&q.queueMessageId!==void 0&&b.set(q.queueMessageId,q);let A=[],_=new Set;for(let q of S){if(_.has(q))continue;_.add(q);let ae=b.get(q);ae!==void 0&&A.push(ae)}if(A.length===0)return;let $=new Date().toISOString(),Q=A.map(q=>{if(q.input===void 0)throw new Error(`Runtime interrupt input is unavailable: ${q.inputId}`);return{inputId:q.inputId,afterRunId:q.afterRunId,input:q.input,queuedAt:q.queuedAt,deliveredAt:$,...q.origin!==void 0?{origin:q.origin}:{}}}),U={sessionId:m.sessionId,runId:m.runId,...m.turnId!==void 0?{turnId:m.turnId}:{}};try{e.bus.emitDurable("run.input.delivered",{inputs:Q},U,()=>{for(let q of A)q.state="delivered",q.deliveredAt=$,delete q.queueMessageId})}catch(q){throw e.bus.emit("runtime.warning",{source:"run.input.delivered",message:`Failed to persist interrupt input delivery: ${se(q).message}`,inputIds:A.map(ae=>ae.inputId)},U),q}h(m)},"deliverInterruptInputs"),T=e.settingsOwner.subscribe((m,S)=>{for(let b of e.runs.values())b.sessionId!==m||b.phase!=="queued"&&!We(b.phase)||(b.permissionMode=S.value.permissionMode,b.autoModeEngine=Se(S.value.permissionMode)==="auto"?S.value.autoModeEngine??"llm":S.value.autoModeEngine,b.autoModeClassifierModel=S.value.autoModeClassifierModel,b.autoModeTimeoutMs=S.value.autoModeTimeoutMs,b.autoModeSpeculativeWindowMs=S.value.autoModeSpeculativeWindowMs,h(b))}),C=o(async(m,S)=>{e.ensureOpen();let b=gd(m,e.artifacts,S),A=await e.sessionAdmission.loadRequired(m.sessionId),_=(await e.settingsOwner.read(m.sessionId)).value;pi(A,_);let $=lf(m.options??{},_,b.inputArtifacts,A),Q=$.agentMode==="sa"?void 0:await e.actorRegistry.forSession(m.sessionId,$.maxConcurrentThreadsPerSession),U=$.provider??e.defaultProvider;if(!U)throw new Error("runtime.runs.start requires input.options.provider or runtime defaultProvider");let q=m;if(q.providerCredential!==void 0&&q.providerCredentialProvider!==void 0&&q.providerCredentialProvider!==U)throw mg(`Credential lease is bound to ${q.providerCredentialProvider}, not ${U}.`);let ae=$.modelOverride??$.model??e.defaultModel,fe=m.trustedRunId??Hf();if(e.runs.has(fe))throw Bt(`Runtime run already exists: ${fe}`,0);let ze=e.enableSharedInteractions||Se(_.permissionMode)==="auto";if(wf(_,ae),ze&&$.guardrails?.some(Re=>Re.kind==="tool"&&Re.name==="auto-mode"))throw new Error("Runtime owns the auto-mode guardrail for shared Session permission state.");let he=ze?og({sessionId:m.sessionId,provider:U,model:ae,options:$,permissions:e.permissions,cache:r,states:s,settingsOwner:e.settingsOwner,getRecord:o(()=>{let Re=n.get(m.sessionId);return Re===void 0?void 0:e.runs.get(Re)},"getRecord"),onEngineChange:o(Re=>{for(let qe of e.runs.values())qe.sessionId===m.sessionId&&(qe.phase==="queued"||We(qe.phase))&&qe.autoModeEngine!==Re&&(qe.autoModeEngine=Re,h(qe));e.settingsOwner.persistAutoModeEngine(m.sessionId,Re).catch(qe=>{e.bus.emit("runtime.warning",{source:"runtime.auto-mode",severity:"error",message:`Failed to persist Session auto-mode engine: ${se(qe).message}`},{sessionId:m.sessionId,runId:m.sessionId})})},"onEngineChange")}):void 0;await he?.prepare?.();let Gt=he===void 0?$:{...$,guardrails:[...$.guardrails??[],he]},vi=new Date().toISOString(),Ii=o(()=>{},"resolveResult"),ki=new Promise(Re=>{Ii=Re}),Nn=m.requiredAfterRunId,ln=Nn===void 0?void 0:p(Nn);if(ln!==void 0){if(ln.sessionId!==m.sessionId)throw new Error(`Runtime continuation target ${Nn} does not belong to session ${m.sessionId}`);if(!We(ln.phase)&&ln.phase!=="queued")throw new qt(ln.runId)}let bi=(d.get(m.sessionId)??0)+1;d.set(m.sessionId,bi);let Jt=ln!==void 0||n.has(m.sessionId),tt={runId:fe,sessionId:m.sessionId,phase:Jt?"queued":"running",startedAt:vi,sessionOrder:bi,...Jt?{queuedAt:vi}:{},provider:U,...ae!==void 0?{model:ae}:{},...m.permissionBroker!==void 0?{permissionBroker:m.permissionBroker}:{},..._.permissionMode!==void 0?{permissionMode:_.permissionMode}:{},..._.autoModeClassifierModel!==void 0?{autoModeClassifierModel:_.autoModeClassifierModel}:{},..._.autoModeTimeoutMs!==void 0?{autoModeTimeoutMs:_.autoModeTimeoutMs}:{},..._.autoModeSpeculativeWindowMs!==void 0?{autoModeSpeculativeWindowMs:_.autoModeSpeculativeWindowMs}:{},...Se(_.permissionMode)==="auto"?{autoModeEngine:_.autoModeEngine??"llm"}:_.autoModeEngine!==void 0?{autoModeEngine:_.autoModeEngine}:{},...$.reasoningMode!==void 0?{reasoning:$.reasoningMode}:{},mode:m.mode??"coding",...m.providerCredential!==void 0?{providerCredential:m.providerCredential}:{},hadProviderCredential:m.providerCredential!==void 0,...m.origin!==void 0?{origin:m.origin}:{},...Nn!==void 0?{continuation:{inputId:fe,afterRunId:Nn,delivery:"after_turn",contentPreview:hd(b.prompt)}}:{},interruptInputs:[],...m.agentContext??e.defaultAgentContext?{agentContext:m.agentContext??e.defaultAgentContext}:{},...Q?{actorSession:Q}:{},interruptInputOpen:!1,result:ki,start:{prompt:b.prompt,inputArtifacts:b.inputArtifacts,options:Gt,resolve:Ii},terminalEmitted:!1};if(e.runs.set(fe,tt),Jt)g(tt);else{let Re=k(tt);if(Re!==void 0)throw Re.error}return{runId:fe,sessionId:m.sessionId,get turnId(){return tt.turnId},result:ki}},"startRun"),H=o((m,S="runtime.runs.start")=>{let A=(u.get(m.sessionId)??Promise.resolve()).then(()=>C(m,S)),_=A.then(()=>{},()=>{});return u.set(m.sessionId,_),_.then(()=>{u.get(m.sessionId)===_&&u.delete(m.sessionId)}),A},"start");return{start:H,async submitInput(m){e.ensureOpen(),await e.sessionAdmission.loadRequired(m.sessionId);let S=p(m.afterRunId);if(S.sessionId!==m.sessionId)throw new Error(`Runtime continuation target ${m.afterRunId} does not belong to session ${m.sessionId}`);if(!We(S.phase)&&S.phase!=="queued")return{accepted:!1,delivery:m.delivery,sessionId:m.sessionId,afterRunId:m.afterRunId,reason:"stale_run"};if(m.delivery==="interrupt"){if(!We(S.phase)||n.get(m.sessionId)!==S.runId)return{accepted:!1,delivery:m.delivery,sessionId:m.sessionId,afterRunId:m.afterRunId,reason:"stale_run"};if(S.actorSession===void 0)return{accepted:!1,delivery:m.delivery,sessionId:m.sessionId,afterRunId:m.afterRunId,reason:"unsupported_capability"};if(!S.interruptInputOpen)return{accepted:!1,delivery:m.delivery,sessionId:m.sessionId,afterRunId:m.afterRunId,reason:"interrupt_window_closed"};if(m.credential!==void 0||m.hostTools!==void 0)throw new Error("runtime.runs.submitInput interrupt delivery cannot replace active-run credential or host-tool bindings");let $=gd({sessionId:m.sessionId,input:m.input},e.artifacts,"runtime.runs.submitInput"),Q=structuredClone(m.input),U=m,q=U.trustedInputId??Kf();if(S.interruptInputs.some(he=>he.inputId===q))throw Bt(`Runtime interrupt input already exists: ${q}`,0);let ae=Di({sessionId:m.sessionId,content:$.prompt,inputArtifacts:$.inputArtifacts,provider:S.provider,...S.model!==void 0?{model:S.model}:{}}),fe=new Date().toISOString(),ze={inputId:q,afterRunId:m.afterRunId,delivery:"interrupt",state:"queued",contentPreview:hd($.prompt),queuedAt:fe,...U.origin!==void 0?{origin:U.origin}:{},input:Q,queueMessageId:ae};return S.interruptInputs.push(ze),h(S),e.bus.emit("run.input.queued",{input:Wd(ze)},{sessionId:S.sessionId,runId:S.runId,...S.turnId!==void 0?{turnId:S.turnId}:{}}),{accepted:!0,delivery:"interrupt",inputId:q,runId:S.runId,sessionId:m.sessionId,afterRunId:m.afterRunId,sessionOrder:S.sessionOrder}}let b=m,A;try{A=await H({sessionId:m.sessionId,input:m.input,...b.options!==void 0?{options:b.options}:{},...b.providerCredential!==void 0?{providerCredential:b.providerCredential}:{},...b.providerCredentialProvider!==void 0?{providerCredentialProvider:b.providerCredentialProvider}:{},...b.origin!==void 0?{origin:b.origin}:{},...b.trustedRunId!==void 0?{trustedRunId:b.trustedRunId}:{},requiredAfterRunId:m.afterRunId},"runtime.runs.submitInput")}catch($){if(!($ instanceof qt))throw $;return{accepted:!1,delivery:m.delivery,sessionId:m.sessionId,afterRunId:m.afterRunId,reason:"stale_run"}}let _=p(A.runId).sessionOrder;return{accepted:!0,delivery:m.delivery,runId:A.runId,sessionId:m.sessionId,afterRunId:m.afterRunId,sessionOrder:_}},async await(m){e.ensureOpen();let S=e.runs.get(m);if(S)return await e.sessionAdmission.assertRunAccess(S.sessionId),S.result;let b=e.persistence.loadRunStatus(m);if(b)return await e.sessionAdmission.assertRunAccess(b.sessionId),zd(b);throw new Error(`Runtime run not found: ${m}`)},async get(m){e.ensureOpen();let S=e.runs.get(m);if(S)return await e.sessionAdmission.assertRunAccess(S.sessionId),ke(S);let b=e.persistence.loadRunStatus(m);if(b)return await e.sessionAdmission.assertRunAccess(b.sessionId),b;throw new Error(`Runtime run not found: ${m}`)},async list(m){e.ensureOpen(),m?.sessionId!==void 0&&await e.sessionAdmission.assertRunAccess(m.sessionId);let S=[...e.runs.values()].filter(b=>Wf(b,m)).map(ke);return mi(S,e.sessionAdmission)},async abort(m){e.ensureOpen();let S=p(m);await e.sessionAdmission.assertRunAccess(S.sessionId),(S.phase==="queued"||We(S.phase))&&R(S,"runtime run aborted",!0)},async setModel(m,S){e.ensureOpen();let b=p(m);await e.sessionAdmission.assertRunAccess(b.sessionId),b.model=S,b.running?.setModel(S),h(b)},async setProvider(m,S){e.ensureOpen();let b=p(m);await e.sessionAdmission.assertRunAccess(b.sessionId),b.provider=S,b.running?.setProvider(S),h(b)},async setReasoning(m,S){e.ensureOpen();let b=p(m);await e.sessionAdmission.assertRunAccess(b.sessionId),b.reasoning=S,b.running?.setReasoning(S),h(b)},closeAll(m){T.close();for(let S of e.runs.values())(S.phase==="queued"||We(S.phase))&&R(S,m,!1);n.clear(),r.clear(),s.clear(),a.clear()},releaseSession(m){for(let S of r.get(m)?.values()??[])S.guardrail.clearAllowedCalls();r.delete(m),s.delete(m)},getAutoModeStats(m){let S=s.get(m);return S===void 0?void 0:{engine:S.engine,denials:S.denials,breaker:S.breaker}}}}o(Ip,"createRuntimeRunService");function kp(){let e=$i();return{async list(n){let t=e.list(),r=n?.runId?t.filter(s=>s.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(s=>{n.runId&&s.snapshot.runId!==n.runId||n.activeOnly===!0&&Jf(s.snapshot.status)||t(s)})}},async pause(n){return e.pause(n)},async resume(n){return e.resume(n)},async stop(n){return e.stop(n)}}}o(kp,"createRuntimeWorkflowService");function bp(e,n){return{async read(){return e(),An(Me(n))},async patch(t){return e(),Sf(t,"runtime.config.patch"),kf(n,vf(t)),An(Me(n))},async reload(){return e(),n!==void 0?(Bd(n),{ok:!0,config:An(Me(n))}):{ok:!0,config:An(eo())}}}}o(bp,"createRuntimeConfigService");function Pp(e,n){return{async providers(){return e(),ar()},async models(t){return e(),_f(ar(),t)},async commands(t){return e(),vd(t)},async resolveCommand(t){e();let r=t.name.trim().toLowerCase();return vd(t.projectRoot).find(s=>s.name.trim().toLowerCase()===r||(s.aliases??[]).some(a=>a.trim().toLowerCase()===r))??null},async skills(t){e();let r=await Yt(t?.projectRoot);return(t?.userInvocableOnly===!0?r.listUserInvocable():r.list()).map(Ff)},async describeSkill(t){e();let r=await Yt(t.projectRoot);return r.has(t.name)?qf(await r.loadFull(t.name)):null},async customProviders(){return e(),bf(n)},async upsertCustomProvider(t){return e(),Pf(n,t)},async deleteCustomProvider(t){return e(),Ef(n,t)},async extensions(){e();let t=mn();if(!t)return{active:!1,extensions:[]};let r=t.getDiagnostics();return{active:!0,extensions:r.loadedExtensions,diagnostics:r}},async reloadExtensions(){e();let t=mn();return t?(await t.reloadExtensions({continueOnError:!0}),{ok:!0,active:!0,diagnostics:t.getDiagnostics()}):{ok:!0,active:!1}}}}o(Pp,"createRuntimeCatalogService");function Ep(e,n){return{async listServers(){return e(),ci(n)},async getServer(t){return e(),Df(n,t)},async validateServer(t,r){e();try{return dr(t,r),{ok:!0,config:structuredClone(r)}}catch(s){return{ok:!1,error:s instanceof Error?s.message:String(s)}}},async upsertServer(t,r){return e(),Tf(n,t,r)},async deleteServer(t){return e(),Af(n,t)},async reloadServers(){e();let t=er(ci(n));try{return{ok:!0,servers:t.listServers()}}finally{await t.dispose()}},async listTools(t){e();let r=ci(n),s=t?.server!==void 0?[t.server]:Object.keys(r),a=er(r);try{let d=[];for(let u of s)d.push(await a.listTools(u,{forceRefresh:t?.forceRefresh===!0}));return d}finally{await a.dispose()}}}}o(Ep,"createRuntimeMcpService");function xp(){let e=new Map;return{service:{async create(r){if(!cf(r.kind))throw new Error(`Unsupported runtime artifact kind: ${String(r.kind)}`);let s=F.resolve(r.path),a;try{a=await N.promises.stat(s)}catch(p){throw new Error(`Runtime artifact path is not readable: ${s}`,{cause:p})}if(!a.isFile())throw new Error(`Runtime artifact path must be a regular file: ${s}`);if(a.size>Ya)throw new Error(`Runtime artifact exceeds the ${Ya}-byte limit: ${s}`);let d=`art_${ge().replace(/-/g,"").slice(0,12)}`,u={id:d,kind:r.kind,path:s,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(d,u),u},async get(r){return e.get(r)},async delete(r){return e.delete(r)}},resolve:o(r=>{let s=e.get(r);if(!s)throw new Error(`Runtime artifact not found: ${r}`);return s},"resolve")}}o(xp,"createRuntimeArtifactStore");function Dp(e){let{agentPlane:n,events:t,model:r,options:s,provider:a,record:d,sessionManager:u}=e,p=s.events?.exitPlanMode===void 0,f=p||d.actorSession!==void 0||!!(n&&d.agentContext);return{...s,provider:a,...r!==void 0?{modelOverride:r}:{},session:{...s.session??{},id:d.sessionId,storage:u.storage,persistedByHost:!1},events:t,...f?{context:{...s.context??{},...p?{excludeTools:[...new Set([...s.context?.excludeTools??[],"exit_plan_mode"])]}:{},...d.actorSession?{actorSession:d.actorSession}:{},...n&&d.agentContext?{agentExecutorPlane:{plane:n,context:d.agentContext}}:{}}}:{}}}o(Dp,"buildRunOptions");function jt(e){if(e.actorId.trim().length===0)throw new Error("Runtime agent context actorId must not be empty.")}o(jt,"assertRuntimeAgentContext");function Tp(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 s=n.requiredCapabilities;if(s)for(let a of["streaming","durableTasks","inputRequired","cancellation","artifacts"])s[a]===!0&&e.capabilities[a]!=="supported"&&t.push(`required capability ${a} is ${e.capabilities[a]}`);return t}o(Tp,"localAgentReasons");function ii(e){return jt(e),jn(e).map(n=>{let t=Tp(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(ii,"runtimeLocalListings");function Ap(e,n,t){let r=new Map,s=o((a,d)=>{let u=r.get(a);if(u)return u.then(f=>{let v=f.rootControl().list().maxConcurrentThreads;if(d!==void 0&&d!==v)throw new Error(`Actor concurrency for ${a} is already ${v}; cannot change it to ${d}.`);return f});let p=(async()=>{let f=await e.storage.load(a);if(!f)throw new Error(`Session not found: ${a}`);let v=f.actorSnapshot?.maxConcurrentThreads;if(v!==void 0&&d!==void 0&&v!==d)throw new Error(`Persisted Actor concurrency for ${a} is ${v}; requested ${d}.`);let i={async load(){return(await e.storage.load(a))?.actorSnapshot},save(c,w){return e.storage.saveActorSnapshot(a,c,w)}},l=new Bi({sessionId:a,store:i,maxConcurrentThreadsPerSession:d??v,...n?{executor:Ui({plane:n,context:t??{actorId:`runtime:${a}`}})}:{}});return await l.initialize(),l})();return r.set(a,p),p.catch(()=>r.delete(a)),p},"forSession");return{forSession:s,async root(a){return(await s(a)).rootControl()},async activeTurns(a){return(await Promise.all(a.map(async u=>({sessionId:u,root:(await s(u)).rootControl()})))).flatMap(({sessionId:u,root:p})=>p.list().actors.flatMap(f=>f.currentTurnId&&f.path!=="/root"?[{sessionId:u,actorPath:f.path,turnId:f.currentTurnId,kind:f.kind}]:[]))},async close(a){let d=await Promise.allSettled([...r.values()]);await Promise.all(d.flatMap(u=>u.status==="fulfilled"?[u.value.close(a)]:[])),r.clear()}}}o(Ap,"createRuntimeAgentActorRegistry");function Mp(e,n,t,r){return{execution:n,enabled:e!==void 0,async listDispatchable(s){jt(s);let a=jn(s);return e?e.listDispatchable(s,a):ii(s)},async describe(s,a){jt(a);let d=jn(a);return e?e.describe(s,a,d):ii(a).find(u=>u.descriptor.agentId===s)},async preflight(s){jt(s.query);let a=jn(s.query);if(e)return e.preflight(s,a);let d=ii(s.query).find(p=>p.descriptor.agentId===s.agentId),u=d?[]:["agent is not dispatchable"];return d&&s.expectedConfigurationRevision!==void 0&&d.descriptor.configurationRevision!==s.expectedConfigurationRevision&&u.push("configuration revision changed"),{ok:d!==void 0&&u.length===0,...d?{descriptor:d.descriptor}:{},dispatchability:d?.dispatchability??{status:"unavailable",checkedAt:new Date().toISOString(),reasons:u},reasons:u}},async tree(s){return await r.loadRequired(s),(await t.root(s)).list()},async detail(s,a){return await r.loadRequired(s),(await t.root(s)).get(a)},async spawn(s,a){return await r.loadRequired(s),(await t.root(s)).spawn(a)},async send(s,a,d,u){await r.loadRequired(s),await(await t.root(s)).send(a,d,u)},async followup(s,a,d,u){return await r.loadRequired(s),(await t.root(s)).followup(a,d,void 0,u)},async interrupt(s,a,d){await r.loadRequired(s),await(await t.root(s)).interrupt(a,d)},async output(s,a,d){return await r.loadRequired(s),(await t.root(s)).output(a,d)},async events(s,a){return await r.loadRequired(s),(await t.root(s)).eventSnapshot(a)},async wait(s,a,d){return await r.loadRequired(s),(await t.root(s)).wait(a,d)}}}o(Mp,"createRuntimeAgentService");function oi(){return new Error("Runtime external agent executor plane is not enabled.")}o(oi,"externalAgentsDisabled");function Cp(e){return{agentRegistrations:e?.registrations??{async list(){return[]},async upsert(){throw oi()},async setEnabled(){throw oi()},async remove(){throw oi()}}}}o(Cp,"createRuntimeAdminService");function _p(e){return{async snapshot(){let n=await mi([...e.runs.values()].map(ke),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(jd),runs:n,pendingPermissions:await e.permissions.service.listPending(),workflows:await e.workflows.list({})}},async preflight(){let n=await mi([...e.runs.values()].map(ke),e.sessionAdmission),t=n.filter(v=>v.phase==="running"||v.phase==="waiting_permission"||v.phase==="waiting_user_input"),r=n.filter(v=>v.phase==="queued"),s=(await e.workflows.list({})).filter(v=>v.status!=="completed"&&v.status!=="failed"&&v.status!=="denied"&&v.status!=="stopped"),a=(await e.sessionManager.listSessions({includeArchived:!0})).filter(e.sessionAdmission.admitsSummary).map(v=>v.id),d=await e.actors.activeTurns(a),u=await e.permissions.service.listPending(),p=await e.userInputs.service.listPending(),f=[];return t.length>0&&f.push("active_runs"),r.length>0&&f.push("queued_runs"),s.length>0&&f.push("active_workflows"),d.length>0&&f.push("active_agent_turns"),d.length>0&&f.push("active_agent_tasks"),(u.length>0||p.length>0)&&f.push("pending_interactions"),{runtimeId:e.identity.runtimeId,clientCount:0,activeRuns:t,queuedRuns:r,activeWorkflows:s,activeAgentTurns:d,activeAgentTasks:d,pendingPermissions:u,pendingUserInputs:p,blockers:f,canStop:f.length===0}}}}o(_p,"createRuntimeStatusService");function Op(e){return{latestContextBudget(n){return rd(e,"context.budget.snapshot",n)},latestToolExposure(n){return rd(e,"tool.exposure.planned",n)}}}o(Op,"createRuntimeDiagnosticsService");async function rd(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(rd,"latestRuntimeDiagnosticPayload");function We(e){return e==="running"||e==="waiting_permission"||e==="waiting_user_input"}o(We,"isActiveRunPhase");function Np(e,n){let t=e.get(n.sessionId);if(!t)return;let r=t.filter(s=>s!==n.runId);r.length===0?e.delete(n.sessionId):e.set(n.sessionId,r)}o(Np,"removeQueuedRun");function Lp(e){let n=!1,t=[],r=new Map,s=new Map,a=new Set,d=o((i,l)=>l?!(l.sessionId!==void 0&&i.sessionId!==l.sessionId||l.runId!==void 0&&i.runId!==l.runId||l.type!==void 0&&!(Array.isArray(l.type)?l.type:[l.type]).includes(i.type)):!0,"matches"),u=o(i=>{t.push(i),t.length>$t&&t.splice(0,t.length-$t)},"remember"),p=o((i,l,c)=>{let w=e.nextEventSeq();return{id:`evt_${w}_${ge().replace(/-/g,"").slice(0,8)}`,seq:w,time:new Date().toISOString(),sessionId:c.sessionId,runId:c.runId,...c.turnId!==void 0?{turnId:c.turnId}:{},type:i,payload:l}},"createEvent"),f=o(i=>{for(let l of[...a])if(d(i,l.filter))try{l.listener(i)}catch(c){oe({source:"runtime.events",level:"error",message:`Runtime event listener failed for ${i.type}`,detail:{eventId:i.id,error:se(c)}})}},"notify");return{service:{subscribe(i,l){if(n)throw new Error("KodaX runtime event bus is closed");let c={filter:i,listener:l};return a.add(c),{close(){a.delete(c)}}},async replay(i){let l=e.replay(i),c=new Map;for(let P of l)c.set(P.id,P);for(let P of t)c.set(P.id,P);let w=[...c.values()].filter(P=>d(P,i)&&(i?.sinceSeq===void 0||P.seq>i.sinceSeq)).sort((P,R)=>P.seq-R.seq||P.time.localeCompare(R.time));return i?.limit===void 0?w:w.slice(-i.limit)}},emit(i,l,c){let w=p(i,l,c);s.set(w.sessionId,w.seq);let P=r.get(w.sessionId)??si();r.set(w.sessionId,P),id(P,w),u(w);let R=[w];try{e.appendEvent(w)}catch(I){let k=p("runtime.warning",{message:se(I).message,sourceEventId:w.id},c);u(k),R.push(k)}for(let I of R)f(I);return w},emitDurable(i,l,c,w){let P=p(i,l,c);e.appendDurableEvent(P),w?.(),s.set(P.sessionId,P.seq);let R=r.get(P.sessionId)??si();return r.set(P.sessionId,R),id(R,P),u(P),f(P),P},projectSession(i){let l=r.get(i);return od(l===void 0?si():l)},currentSessionSeq(i){let l=s.get(i);if(l!==void 0)return l;let c=$p(e.replay({sessionId:i}));return s.set(i,c),c},close(){n=!0;try{e.close()}catch(i){oe({source:"runtime.persistence",level:"error",message:"Failed to flush runtime events while closing",detail:i})}a.clear(),r.clear(),s.clear()}}}o(Lp,"createRuntimeEventBus");function si(){return{assistantTextByRun:{},thinkingTextByRun:{},activeTools:new Map,pendingUserInputs:new Map,managedTasks:new Map,todo:void 0}}o(si,"createRuntimeSessionLiveProjectionState");function id(e,n){let t=X(n.payload)?n.payload:void 0;if(!Fp(n.type,t)){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=ai(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=ai(n),s=e.activeTools.get(r)??Hp(e.activeTools,n.runId);s&&e.activeTools.set(s.key,{...s,progress:n.payload})}else if(n.type==="tool.finished"){let r=ai(n);if(!e.activeTools.delete(r))for(let[s,a]of e.activeTools)a.runId===n.runId&&e.activeTools.delete(s)}else if(n.type==="todo.updated")e.todo=n.payload;else if(n.type==="run.progress"&&t?.kind==="managed_task_status"){let r=qp(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(Nd(n.type)){delete e.assistantTextByRun[n.runId],delete e.thinkingTextByRun[n.runId];for(let[r,s]of e.activeTools)s.runId===n.runId&&e.activeTools.delete(r);for(let[r,s]of e.pendingUserInputs)s.runId===n.runId&&e.pendingUserInputs.delete(r);e.managedTasks.delete(n.runId)}}}o(id,"applyRuntimeSessionEvent");var jp=new Set(["assistant.delta","thinking.delta","thinking.finished","tool.started","tool.progress","tool.finished","todo.updated"]);function Fp(e,n){if(!jp.has(e))return!1;let t=X(n?.meta)?n.meta:void 0;if(!t)return!1;if(t.contextKind==="child"||typeof t.childAgentId=="string"&&t.childAgentId.length>0)return!0;let r=X(t.workflowCorrelation)?t.workflowCorrelation:void 0;return typeof r?.workflowRunId=="string"&&r.workflowRunId.length>0||typeof r?.childAgentId=="string"&&r.childAgentId.length>0}o(Fp,"isChildOwnedPrimaryLiveEvent");function od(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(od,"snapshotRuntimeSessionLiveProjection");function qp(e){if(!(!X(e)||typeof e.agentMode!="string"||typeof e.harnessProfile!="string"))return e}o(qp,"parseRuntimeManagedTaskStatus");function $p(e){return e.at(-1)?.seq??0}o($p,"latestRuntimeEventSeq");function ai(e){let n=X(e.payload)?e.payload:void 0,t=X(n?.meta)?n.meta:void 0,r=X(n?.tool)?n.tool:void 0,s=X(n?.update)?n.update:void 0,a=X(n?.result)?n.result:void 0,d=t?.toolCallId??t?.toolUseId??r?.id??s?.id??a?.id??a?.toolCallId;return typeof d=="string"&&d.length>0?`${e.runId}:${d}`:`${e.runId}:${e.turnId??"turn"}:${e.id}`}o(ai,"runtimeToolProjectionKey");function Hp(e,n){return[...e.values()].reverse().find(t=>t.runId===n)}o(Hp,"latestActiveToolForRun");function Nd(e){return e==="run.completed"||e==="run.failed"||e==="run.cancelled"||e==="run.interrupted"}o(Nd,"isTerminalRuntimeEvent");function Kp(e){let n=e.homeDir?F.resolve(e.homeDir):e.sessionsDir?F.resolve(e.sessionsDir,".."):process.cwd(),t=e.sharedDaemonHost===!0?F.join(n,".kodax","runtime","profiles",encodeURIComponent(e.profile??"default")):F.join(n,".kodax","runtime"),r=F.join(t,"runs"),s=F.join(t,"session-settings"),a=F.join(t,"permission-grants.json"),d=F.join(t,"event-sequence"),u=new Map,p=0,f,v,i,l=!1,c=o(S=>F.join(r,encodeURIComponent(S)),"runDir"),w=o(S=>F.join(c(S),"events.jsonl"),"eventFile"),P=o(S=>F.join(c(S),"status.json"),"statusFile"),R=o(S=>F.join(s,`${encodeURIComponent(S)}.json`),"sessionSettingsFile"),I=[],k=new Set,x=o(()=>{let S=0;if(N.existsSync(d))try{let b=Number.parseInt(N.readFileSync(d,"utf-8").trim(),10);Number.isSafeInteger(b)&&b>0&&(S=b)}catch(b){oe({source:"runtime.persistence",level:"warn",message:"Failed to read runtime event sequence cursor; recovering from event logs",detail:b})}if(!N.existsSync(r))return S;for(let b of N.readdirSync(r,{withFileTypes:!0})){if(!b.isDirectory())continue;let A=F.join(r,b.name,"events.jsonl");if(!N.existsSync(A))continue;let _=N.statSync(A).size,$=Math.min(_,ip),Q=Buffer.allocUnsafe($),U=N.openSync(A,"r");try{N.readSync(U,Q,0,$,_-$)}finally{N.closeSync(U)}let q=Q.toString("utf-8").split(/\r?\n/);$<_&&q.shift();for(let ae of q)if(ae.trim())try{let fe=JSON.parse(ae);sd(fe)&&Number.isSafeInteger(fe.seq)&&(S=Math.max(S,fe.seq))}catch{}}return S},"findMaxPersistedEventSeq"),g=o(()=>{i===void 0&&(i=x()+1);let S=i;return i+=1,l=!0,S},"allocateEventSeq"),h=o((S,b,A)=>{if(k.has(S))return;k.add(S);let _=g(),$={id:`evt_persist_warn_${_}_${ge().replace(/-/g,"").slice(0,8)}`,seq:_,time:new Date().toISOString(),sessionId:A.sessionId??"runtime",runId:A.runId??A.sessionId??"runtime",type:"runtime.warning",payload:{source:"runtime.persistence",message:b,...A.file!==void 0?{file:A.file}:{}}};I.push($),I.length>$t&&I.splice(0,I.length-$t)},"pushPersistenceWarning"),D=o((S,b)=>[...S,...I].filter(A=>Bp(A,b)).sort((A,_)=>A.seq-_.seq||A.time.localeCompare(_.time)),"withPersistenceWarnings"),T=o((S,b)=>{if(!N.existsSync(S))return[];let A=N.readFileSync(S,"utf-8"),_=[],$=A.split(/\r?\n/);for(let Q=0;Q<$.length;Q+=1){let U=$[Q]??"";if(U.trim())try{let q=JSON.parse(U);sd(q)?_.push(q):h(`${S}:${Q+1}:shape`,`Skipped malformed runtime event record at ${F.basename(S)}:${Q+1}`,{runId:b,file:S})}catch(q){h(`${S}:${Q+1}:parse`,`Skipped malformed runtime event record at ${F.basename(S)}:${Q+1}: ${se(q).message}`,{runId:b,file:S})}}return _},"readEventsFromFile"),C=o(S=>{if(N.statSync(S).size<=Dd)return;let b=N.readFileSync(S,"utf-8").trimEnd().split(/\r?\n/),A=[],_=0;for(let $=b.length-1;$>=0;$-=1){let Q=b[$]??"";if(!Q)continue;let U=Buffer.byteLength(Q,"utf-8")+1;if(A.length>0&&_+U>rp)break;A.push(Q),_+=U}A.reverse(),N.writeFileSync(S,A.length>0?`${A.join(`
|
|
68
|
+
`)}
|
|
69
|
+
`:"","utf-8")},"trimEventFile"),H=o(()=>{f!==void 0&&(clearTimeout(f),f=void 0);for(let[S,b]of u){let A=b.join(""),_=Buffer.byteLength(A,"utf-8"),$=c(S),Q=w(S);N.mkdirSync($,{recursive:!0}),N.appendFileSync(Q,A,"utf-8"),u.delete(S),p=Math.max(0,p-_),C(Q)}l&&i!==void 0&&(N.mkdirSync(t,{recursive:!0}),N.writeFileSync(d,String(i-1),"utf-8"),l=!1),v=void 0},"flushBufferedEvents"),m=o(()=>{f===void 0&&(f=setTimeout(()=>{f=void 0;try{H()}catch(S){v=se(S),oe({source:"runtime.persistence",level:"error",message:"Failed to flush buffered runtime events",detail:S})}},tp),f.unref?.())},"scheduleEventFlush");return{runtimeDir:t,appendDurableEvent(S){H();let b=c(S.runId),A=w(S.runId);N.mkdirSync(b,{recursive:!0}),N.appendFileSync(A,`${JSON.stringify(S)}
|
|
70
|
+
`,"utf-8");try{C(A)}catch(_){h(`${A}:trim`,`Failed to trim runtime event file: ${se(_).message}`,{runId:S.runId,file:A})}},appendEvent(S){let b=`${JSON.stringify(S)}
|
|
71
|
+
`,A=u.get(S.runId)??[];A.push(b),u.set(S.runId,A),p+=Buffer.byteLength(b,"utf-8");let _=v;v=void 0;try{_!==void 0||!up.has(S.type)||p>=np?H():m()}catch($){throw m(),$}if(_!==void 0)throw _},close(){H()},nextEventSeq(){return g()},currentEventSeq(){return i===void 0&&(i=x()+1),i-1},replay(S){try{H()}catch(A){h(`${t}:event-flush`,`Failed to flush buffered runtime events: ${se(A).message}`,{runId:S?.runId})}if(S?.runId)return D(T(w(S.runId),S.runId),S);if(!N.existsSync(r))return D([],S);let b=[];for(let A of N.readdirSync(r,{withFileTypes:!0}))A.isDirectory()&&b.push(...T(F.join(r,A.name,"events.jsonl"),A.name));return D(b,S)},saveRunStatus(S){let b=c(S.runId);N.mkdirSync(b,{recursive:!0}),di(P(S.runId),S)},loadRunStatus(S){let b=P(S);if(N.existsSync(b))try{let A=Kt(JSON.parse(N.readFileSync(b,"utf-8")));if(A)return A;h(`${b}:shape`,`Skipped malformed runtime status record at ${F.basename(b)}`,{runId:S,file:b});return}catch(A){h(`${b}:parse`,`Skipped malformed runtime status record at ${F.basename(b)}: ${se(A).message}`,{runId:S,file:b});return}},loadRunStatuses(){if(!N.existsSync(r))return[];let S=[];for(let b of N.readdirSync(r,{withFileTypes:!0})){if(!b.isDirectory())continue;let A=F.join(r,b.name,"status.json");if(N.existsSync(A))try{let _=JSON.parse(N.readFileSync(A,"utf-8")),$=Kt(_);$?S.push($):h(`${A}:shape`,`Skipped malformed runtime status record at ${F.basename(A)}`,{runId:b.name,file:A})}catch(_){h(`${A}:parse`,`Skipped malformed runtime status record at ${F.basename(A)}: ${se(_).message}`,{runId:b.name,file:A})}}return S},loadSessionSettingsVersioned(S){let b=R(S);if(!N.existsSync(b))return{revision:0,value:{}};try{let A=JSON.parse(N.readFileSync(b,"utf-8"));return X(A)&&Number.isSafeInteger(A.revision)&&typeof A.revision=="number"&&A.revision>=0&&X(A.value)?{revision:A.revision,value:Sd(A.value)}:{revision:0,value:Sd(A)}}catch(A){return h(`${b}:parse`,`Skipped malformed runtime session settings at ${F.basename(b)}: ${se(A).message}`,{sessionId:S,file:b}),{revision:0,value:{}}}},loadSessionSettings(S){return this.loadSessionSettingsVersioned(S).value},saveSessionSettingsVersioned(S,b){N.mkdirSync(s,{recursive:!0});let A=R(S);di(A,{revision:b.revision,value:$f(b.value)})},saveSessionSettings(S,b){let A=this.loadSessionSettingsVersioned(S);this.saveSessionSettingsVersioned(S,{revision:A.revision+1,value:b})},loadPermissionGrants(){if(!N.existsSync(a))return{revision:0,value:[]};try{let S=JSON.parse(N.readFileSync(a,"utf-8"));if(!X(S)||!Number.isSafeInteger(S.revision)||!Array.isArray(S.value))throw new Error("invalid permission grant store shape");return{revision:S.revision,value:S.value.map(hf)}}catch(S){throw new Error(`Permission grant store is untrusted: ${se(S).message}`)}},savePermissionGrants(S){N.mkdirSync(t,{recursive:!0}),di(a,S)}}}o(Kp,"createRuntimePersistence");function di(e,n){let t=`${e}.${process.pid}.${ge()}.tmp`,r;try{r=N.openSync(t,"wx",384),N.writeFileSync(r,`${JSON.stringify(n,null,2)}
|
|
72
|
+
`,"utf-8"),N.fsyncSync(r),N.closeSync(r),r=void 0,N.renameSync(t,e)}finally{r!==void 0&&N.closeSync(r),N.rmSync(t,{force:!0})}}o(di,"writeRuntimeJsonAtomic");function Xp(e){if(e.sessionsDir!==void 0)return F.resolve(e.sessionsDir);if(e.homeDir!==void 0)return F.join(F.resolve(e.homeDir),".kodax","sessions")}o(Xp,"resolveRuntimeSessionsDir");function Bp(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(Bp,"eventMatchesReplayFilter");function sd(e){return X(e)?typeof e.id=="string"&&typeof e.seq=="number"&&typeof e.time=="string"&&typeof e.sessionId=="string"&&typeof e.runId=="string"&&typeof e.type=="string"&&"payload"in e:!1}o(sd,"isRuntimeEvent");function Kt(e){if(X(e)&&!(typeof e.runId!="string"||typeof e.sessionId!="string"||!Wp(e.phase)||typeof e.startedAt!="string"||typeof e.provider!="string"))return{runId:e.runId,sessionId:e.sessionId,...typeof e.turnId=="string"?{turnId:e.turnId}:{},phase:e.phase,startedAt:e.startedAt,...typeof e.acceptedAt=="string"?{acceptedAt:e.acceptedAt}:{},...Number.isSafeInteger(e.sessionOrder)&&typeof e.sessionOrder=="number"?{sessionOrder:e.sessionOrder}:{},...typeof e.queuedAt=="string"?{queuedAt:e.queuedAt}:{},...typeof e.runningAt=="string"?{runningAt:e.runningAt}:{},...typeof e.executionStartedAt=="string"?{executionStartedAt:e.executionStartedAt}:{},...typeof e.endedAt=="string"?{endedAt:e.endedAt}:{},provider:e.provider,...e.mode==="coding"||e.mode==="managed_task"?{mode:e.mode}:{},...X(e.origin)&&typeof e.origin.principalId=="string"?{origin:{principalId:e.origin.principalId,...typeof e.origin.clientName=="string"?{clientName:e.origin.clientName}:{},...typeof e.origin.clientVersion=="string"?{clientVersion:e.origin.clientVersion}:{},...typeof e.origin.operationId=="string"?{operationId:e.origin.operationId}:{}}}:{},...typeof e.model=="string"?{model:e.model}:{},...typeof e.reasoning=="string"?{reasoning:e.reasoning}:{},...typeof e.error=="string"?{error:e.error}:{},...ud(e.terminal)!==void 0?{terminal:ud(e.terminal)}:{},...ad(e.continuation)!==void 0?{continuation:ad(e.continuation)}:{},...dd(e.interruptInputs)!==void 0?{interruptInputs:dd(e.interruptInputs)}:{}}}o(Kt,"parseRuntimeRunStatus");function ad(e){if(!(!X(e)||typeof e.inputId!="string"||typeof e.afterRunId!="string"||e.delivery!=="after_turn"||e.state!=="queued"&&e.state!=="delivered"&&e.state!=="terminal"||typeof e.contentPreview!="string"))return{inputId:e.inputId,afterRunId:e.afterRunId,delivery:e.delivery,state:e.state,contentPreview:e.contentPreview}}o(ad,"parseRuntimeContinuationStatus");function dd(e){if(e===void 0||!Array.isArray(e))return;let n=e.map(Up);return n.every(t=>t!==void 0)?n:void 0}o(dd,"parseRuntimeInterruptInputStatuses");function Up(e){if(!X(e)||typeof e.inputId!="string"||typeof e.afterRunId!="string"||e.delivery!=="interrupt"||e.state!=="queued"&&e.state!=="delivered"&&e.state!=="terminal"||typeof e.contentPreview!="string"||typeof e.queuedAt!="string"||e.deliveredAt!==void 0&&typeof e.deliveredAt!="string")return;let n=X(e.origin)&&typeof e.origin.principalId=="string"?{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}:{}}:void 0;return{inputId:e.inputId,afterRunId:e.afterRunId,delivery:"interrupt",state:e.state,contentPreview:e.contentPreview,queuedAt:e.queuedAt,...typeof e.deliveredAt=="string"?{deliveredAt:e.deliveredAt}:{},...n!==void 0?{origin:n}:{}}}o(Up,"parseRuntimeInterruptInputStatus");function Wp(e){return e==="queued"||e==="running"||e==="waiting_permission"||e==="waiting_user_input"||e==="completed"||e==="failed"||e==="cancelled"||e==="interrupted"}o(Wp,"isRuntimeRunPhase");function ud(e){if(X(e)&&!(!Number.isSafeInteger(e.revision)||typeof e.revision!="number"||!zp(e.kind)||!Gp(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(ud,"parseRuntimeTerminalFact");function zp(e){return e==="completed"||e==="failed"||e==="cancelled"||e==="interrupted"}o(zp,"isRuntimeTerminalKind");function Gp(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(Gp,"isRuntimeTerminalCode");function Jp(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}}:{},interruptInputs:(e.interruptInputs??[]).map(n=>({...n})),interruptInputOpen:!1,mode:e.mode??"coding",hadProviderCredential:!1,result:Promise.resolve(zd(e)),terminalEmitted:zt(e.phase)}}o(Jp,"recordFromPersistedStatus");function Vp(e,n,t){let r=[...t.replay({runId:e.runId})],s=cd(e,r);if(zt(s.phase))return s!==e&&cn(n,t,void 0,s),s;let a=[...r].reverse().find(p=>{if(!Nd(p.type))return!1;let f=Kt(p.payload);return f?.runId===s.runId&&f.sessionId===s.sessionId&&f.phase===Qp(p.type)});if(a!==void 0){let p=Kt(a.payload);if(p!==void 0){let f=cd(p,r);return cn(n,t,void 0,f),f}}let d=s.phase==="queued"?"runtime_restarted":"daemon_crashed",u={...s,phase:"interrupted",endedAt:new Date().toISOString(),error:d,...s.interruptInputs!==void 0?{interruptInputs:s.interruptInputs.map(p=>p.state==="queued"?{...p,state:"terminal"}:p)}:{},terminal:{revision:1,kind:"interrupted",code:d,effectOutcome:s.phase==="queued"?"none":"unknown",message:"Runtime process restarted before this run reached a durable terminal state."}};return n.emit("run.interrupted",u,{sessionId:u.sessionId,runId:u.runId,...u.turnId!==void 0?{turnId:u.turnId}:{}}),cn(n,t,void 0,u),u}o(Vp,"interruptPersistedNonTerminalRun");function cd(e,n){if(e.interruptInputs===void 0)return e;let t=new Map;for(let a of n){if(a.type!=="run.input.delivered"||a.runId!==e.runId||a.sessionId!==e.sessionId||!X(a.payload))continue;let d=a.payload.inputs;if(Array.isArray(d))for(let u of d)X(u)&&(typeof u.inputId!="string"||u.afterRunId!==e.runId||typeof u.deliveredAt!="string"||t.set(u.inputId,u.deliveredAt))}let r=!1,s=e.interruptInputs.map(a=>{let d=t.get(a.inputId);return a.state!=="queued"||d===void 0?a:(r=!0,{...a,state:"delivered",deliveredAt:d})});return r?{...e,interruptInputs:s}:e}o(cd,"reconcilePersistedInterruptDeliveries");function Qp(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(Qp,"terminalPhaseFromEvent");function ld(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(ld,"resolvePermissionTimeoutMs");function Yp(e,n){let t=new Map,r=o((u,p,f,v)=>{let i=t.get(u);return!i||f?.runId!==void 0&&i.request.runId!==f.runId||f?.expectedRevision!==void 0&&i.request.revision!==f.expectedRevision?{requestId:u,accepted:!1,status:"already_resolved"}:(p.status==="answered"&&Zp(i.request.kind,p.answer),t.delete(u),clearTimeout(i.timer),i.resolve(p),e.emit("user_input.resolved",{requestId:u,kind:i.request.kind,status:p.status,...v!==void 0?{reason:v}:{}},{sessionId:i.request.sessionId,runId:i.request.runId,...i.request.turnId!==void 0?{turnId:i.request.turnId}:{}}),{requestId:u,accepted:!0,status:p.status})},"resolvePending"),s=o((u,p=n)=>{let f=`input_${ge().replace(/-/g,"").slice(0,12)}`,v=new Date,i={id:f,revision:0,sessionId:u.sessionId,runId:u.runId,...u.turnId!==void 0?{turnId:u.turnId}:{},kind:u.kind,options:u.options,createdAt:v.toISOString(),expiresAt:new Date(v.getTime()+p).toISOString()},l=o(()=>{},"resolveResponse"),c=new Promise(P=>{l=P}),w=setTimeout(()=>{r(f,{status:"dismissed"},void 0,"timeout")},Math.max(1,p));return w.unref?.(),t.set(f,{request:i,resolve:l,timer:w}),e.emit("user_input.requested",i,{sessionId:i.sessionId,runId:i.runId,...i.turnId!==void 0?{turnId:i.turnId}:{}}),{request:i,response:c}},"trackAndWait"),a=o((u,p)=>{for(let f of[...t.values()])u(f.request)&&r(f.request.id,{status:"dismissed"},void 0,p)},"dismissMatching");return{service:{async listPending(u){return[...t.values()].map(p=>p.request).filter(p=>(u?.sessionId===void 0||p.sessionId===u.sessionId)&&(u?.runId===void 0||p.runId===u.runId))},async respond(u,p,f){return r(u,{status:"answered",answer:p},f)},async dismiss(u,p){return r(u,{status:"dismissed"},p,"client_dismissed")}},trackAndWait:s,resolve:r,rejectForRun(u,p){a(f=>f.runId===u,p)},rejectAll(u){a(()=>!0,u)}}}o(Yp,"createRuntimeUserInputRegistry");function Zp(e,n){if(!(e==="askUser"?Ld(n):e==="askUserMulti"?ef(n):typeof n=="string"))throw Gd(`Invalid answer for ${e}`)}o(Zp,"assertRuntimeUserInputAnswer");function Ld(e){return Array.isArray(e)?e.every(md):md(e)}o(Ld,"isAskUserAnswer");function md(e){return typeof e=="string"||X(e)&&e.kind==="customInput"&&typeof e.value=="string"}o(md,"isAskUserSelectionAnswer");function ef(e){return X(e)&&Object.values(e).every(Ld)}o(ef,"isAskUserMultiAnswer");function nf(e,n,t){let r=new Map,s=new Map,a=0,d=o((k,x=n,g)=>{let h=o(()=>{},"resolveResponse"),D=new Promise(C=>{h=C});return{request:I(k,[h],ld(k.expiresAt,x),g),response:D}},"trackAndWait"),u=o((k,x,g)=>{let h=r.get(k);if(!h||g!==void 0&&h.request.runId!==g)return!1;if(x.type==="allow_session"||x.type==="allow_always"){let D=w(h,x);P(D,h.request)}r.delete(k),h.timer&&clearTimeout(h.timer);for(let D of h.waiters)D(x);return e.emit("permission.resolved",{requestId:k,decision:x},{sessionId:h.request.sessionId,runId:h.request.runId,...h.request.turnId!==void 0?{turnId:h.request.turnId}:{}}),!0},"resolvePending"),p=o((k,x)=>{let g=[...r.values()].filter(h=>k(h.request)).map(h=>h.request.id);for(let h of g)u(h,x)},"resolveMatching"),f={request(k){return v(k)},async listPending(k){return[...r.values()].map(x=>x.request).filter(x=>Zf(x,k))},async respond(k,x,g){return u(k,x,g?.runId)},async listGrants(){let k=i();return{revision:a,value:[...k.value,...s.values()]}},async revokeGrant(k,x){let g=i();if(a!==x)throw Bt(`Permission grant revision ${x} is stale; current revision is ${a}`,a);let h=s.get(k);if(h!==void 0)return s.delete(k),a+=1,t.savePermissionGrants({revision:a,value:g.value}),R("revoked",h,a),!0;let D=g.value.find(C=>C.id===k),T=g.value.filter(C=>C.id!==k);return T.length===g.value.length?!1:(a+=1,t.savePermissionGrants({revision:a,value:T}),D!==void 0&&R("revoked",D,a),!0)}};function v(k,x){let g=x??(k.toolInput!==void 0?{toolInput:k.toolInput}:void 0),h=l(k.sessionId,k.toolName,g?.toolInput,k.executionCwd);if(h!==void 0)return h.persistence==="session"?Promise.resolve({type:"allow_session",suggestionId:h.id}):Promise.resolve({type:"allow_always",suggestionId:h.id});let{toolInput:D,...T}=k,C=g===void 0?T.inputPreview:Mn(g.toolInput),H={sessionId:T.sessionId,runId:T.runId,...T.turnId!==void 0?{turnId:T.turnId}:{},...T.toolCallId!==void 0?{toolCallId:T.toolCallId}:{},toolName:T.toolName,...T.reason!==void 0?{reason:T.reason}:{},...T.risk!==void 0?{risk:T.risk}:{},...C!==void 0?{inputPreview:C}:{},...T.executionCwd!==void 0?{executionCwd:T.executionCwd}:{},...T.expiresAt!==void 0?{expiresAt:T.expiresAt}:{}},m=g===void 0?void 0:c(H,g);return m!==void 0?m:d(H,T.timeoutMs??n,g).response}o(v,"requestPermission");function i(){let k=t.loadPermissionGrants();return a=Math.max(a,k.revision),k}o(i,"loadPersistentPermissionGrants");function l(k,x,g,h){let D=i().value;return[...s.values(),...D].find(T=>T.scope.sessionId!==void 0&&T.scope.sessionId!==k||T.scope.toolName!==void 0&&T.scope.toolName!==x||T.scope.matcher===void 0||g===void 0||T.persistence!=="session"&&T.scope.matcher.kind==="exact-command"&&typeof g.command=="string"&&pr(g.command,dt())?!1:ho(T.scope.matcher,{toolName:x,toolInput:g,executionCwd:h??process.cwd()}))}o(l,"findPermissionGrant");function c(k,x){let g=pd(k,x);if(g.length===0)return;let h=[...r.values()].find(D=>D.request.sessionId===k.sessionId&&D.request.runId===k.runId&&D.grantCandidates.length===g.length&&g.every(T=>D.grantCandidates.some(C=>C.persistence===T.persistence&&ui(C.scope,T.scope))));if(h)return new Promise(D=>{h.waiters.push(D)})}o(c,"joinMatchingPendingPermission");function w(k,x){let g=x.type==="allow_session"?"session":"persistent",h="suggestionId"in x?k.grantCandidates.find(D=>D.suggestion.id===x.suggestionId&&D.persistence===g):tf(k,x.scope,g);if(!h)throw Gd("Permission decision does not select a Runtime-issued grant suggestion.");return h}o(w,"resolveRuntimePermissionGrantCandidate");function P(k,x){let g={id:`grant_${ge().replace(/-/g,"").slice(0,12)}`,scope:k.scope,createdAt:new Date().toISOString(),persistence:k.persistence,label:k.suggestion.label,sourcePermissionId:x.id};if(k.persistence==="session"){if([...s.values()].some(T=>ui(T.scope,g.scope)))return;let D=i();a+=1,s.set(g.id,g),t.savePermissionGrants({revision:a,value:D.value}),R("created",g,a,x);return}let h=i();h.value.some(D=>ui(D.scope,g.scope))||(a+=1,t.savePermissionGrants({revision:a,value:[...h.value,g]}),R("created",g,a,x))}o(P,"saveRuntimePermissionCandidate");function R(k,x,g,h){e.emit("permission.grant.changed",{action:k,grant:x,revision:g},{sessionId:h?.sessionId??x.scope.sessionId??"runtime",runId:h?.runId??"permission-grants",...h?.turnId!==void 0?{turnId:h.turnId}:{}})}return o(R,"emitPermissionGrantChanged"),{service:f,requestOwned(k,x){return v(k,x)},track(k){return I(k,[],ld(k.expiresAt,n))},trackAndWait(k,x=n,g){return d(k,x,g)},resolve(k,x){u(k,x)},isGranted(k,x,g,h){return l(k,x,g,h)!==void 0},rejectForRun(k,x){p(g=>g.runId===k,{type:"reject",reason:x})},rejectAll(k){p(()=>!0,{type:"reject",reason:k})},releaseSession(k){let x=i(),g=[...s.values()].filter(h=>h.scope.sessionId===k);if(g.length!==0){for(let h of g)s.delete(h.id);a+=1,t.savePermissionGrants({revision:a,value:x.value});for(let h of g)R("expired",h,a)}},releaseAllSessionGrants(){if(s.size===0)return;let k=i(),x=[...s.values()];s.clear(),a+=1,t.savePermissionGrants({revision:a,value:k.value});for(let g of x)R("expired",g,a)}};function I(k,x,g=n,h){let D=k.inputPreview===void 0?void 0:lg(k.inputPreview),T=h===void 0?[]:pd(k,h),C={...k,...D!==void 0?{inputPreview:D}:{},executionCwd:F.resolve(k.executionCwd??process.cwd()),id:`perm_${ge().replace(/-/g,"").slice(0,12)}`,createdAt:new Date().toISOString(),...T.length>0?{grantSuggestions:T.map(m=>m.suggestion)}:{}},H=g>0?setTimeout(()=>{let m=r.get(C.id);if(!m)return;r.delete(C.id);let S={type:"reject",reason:"permission request timed out"};for(let b of m.waiters)b(S);e.emit("permission.resolved",{requestId:C.id,decision:S},{sessionId:C.sessionId,runId:C.runId,...C.turnId!==void 0?{turnId:C.turnId}:{}})},g):void 0;return H?.unref?.(),r.set(C.id,{request:C,waiters:x,grantCandidates:T,...H!==void 0?{timer:H}:{}}),e.emit("permission.requested",C,{sessionId:C.sessionId,runId:C.runId,...C.turnId!==void 0?{turnId:C.turnId}:{}}),C}o(I,"createPendingPermission")}o(nf,"createRuntimePermissionRegistry");function tf(e,n,t){if(n.toolName!==void 0&&n.toolName!==e.request.toolName||n.sessionId!==void 0&&n.sessionId!==e.request.sessionId)return;let r=e.grantCandidates.find(s=>s.persistence!==t?!1:n.matcher!==void 0?s.scope.matcher?.kind===n.matcher.kind&&s.scope.matcher.fingerprint===n.matcher.fingerprint:!0);return!r||n.sessionId===void 0?r:{...r,scope:{...r.scope,sessionId:n.sessionId}}}o(tf,"resolveLegacyRuntimePermissionGrantCandidate");function pd(e,n){let t=F.resolve(e.executionCwd??process.cwd()),r=mr({toolName:e.toolName,toolInput:n.toolInput,executionCwd:t});if(r.kind==="exact-command"&&(typeof n.toolInput.command!="string"||n.toolInput.command.trim().length===0))return[];let s=of(r,n.toolInput),a=[{suggestion:{id:`scope_${ge().replace(/-/g,"").slice(0,16)}`,kind:"session",label:fd(r,s,e.toolName,"session")},scope:{toolName:e.toolName,sessionId:e.sessionId,matcher:r},persistence:"session"}];return r.kind!=="exact-call"&&rf(e,n,t)&&a.push({suggestion:{id:`scope_${ge().replace(/-/g,"").slice(0,16)}`,kind:"persistent",label:fd(r,s,e.toolName,"persistent")},scope:{toolName:e.toolName,matcher:r},persistence:"persistent"}),a}o(pd,"createRuntimePermissionGrantCandidates");function rf(e,n,t){if(e.risk==="high")return!1;let r={id:e.toolCallId??"permission-scope",name:e.toolName,input:n.toolInput},s=F.resolve(n.projectRoot??t);if(Ji(r,s,t).denied||[...n.signals??[],...Vi.collect(r,s,t)].some(d=>d.kind==="dangerous_pattern"))return!1;if(e.toolName==="bash"){let d=typeof n.toolInput.command=="string"?n.toolInput.command:"";if(pr(d,dt()))return!1}return!0}o(rf,"isPersistentRuntimePermissionSafe");function of(e,n){let t=e.kind==="exact-command"?typeof n.command=="string"?n.command:e.toolName:e.kind==="exact-path"?e.path:e.toolName,r=Ri(t.slice(0,et)).replace(/\s+/g," ").trim();return r.length<=120?r:`${r.slice(0,117)}...`}o(of,"runtimePermissionGrantLabel");function fd(e,n,t,r){return e.kind==="exact-command"?r==="session"?`Allow this exact command for this Runtime session: ${n}`:`Always allow this exact command: ${n}`:e.kind==="exact-path"?r==="session"?`Allow ${t} on this path for this Runtime session: ${n}`:`Always allow ${t} on this path: ${n}`:`Allow this exact ${t} call for this Runtime session`}o(fd,"runtimePermissionGrantSuggestionLabel");function ui(e,n){return e.toolName===n.toolName&&e.sessionId===n.sessionId&&e.matcher?.kind===n.matcher?.kind&&e.matcher?.fingerprint===n.matcher?.fingerprint}o(ui,"permissionScopesEqual");function sf(e){let{bus:n,original:t,permissions:r,userInputs:s,enableSharedInteractions:a,record:d,onMidTurnUserMessages:u}=e,p=o(i=>({sessionId:i?.sessionId??d.sessionId,runId:d.runId,turnId:i?.turnId??d.turnId}),"scopeFromMeta"),f=o((i,l,c)=>{n.emit(i,Ge(l),p(c))},"emit"),v=o(async(i,l,c,w,P)=>{let R=d.phase;if(d.phase==="running"&&(d.phase="waiting_user_input"),a){let k=s.trackAndWait({sessionId:c?.sessionId??d.sessionId,runId:d.runId,...c?.turnId??d.turnId?{turnId:c?.turnId??d.turnId}:{},kind:i,options:l});try{let x=w===void 0?await k.response:await Promise.race([k.response,w().then(g=>({status:g===void 0?"dismissed":"answered",...g!==void 0?{answer:g}:{}})).then(g=>(s.resolve(k.request.id,g),g))]);return x.status==="answered"?x.answer:P}finally{d.phase==="waiting_user_input"&&(d.phase=R)}}let I=`input_${ge().replace(/-/g,"").slice(0,12)}`;f("user_input.requested",{requestId:I,kind:i,options:l},c);try{if(w===void 0)return P;let k=await w();return f("user_input.resolved",{requestId:I,kind:i,status:k===void 0?"dismissed":"answered"},c),k}catch(k){throw f("user_input.resolved",{requestId:I,kind:i,status:"failed",error:se(k).message},c),k}finally{d.phase==="waiting_user_input"&&(d.phase=R)}},"runWithUserInputPhase");return{...t,onTextDelta(i,l){f("assistant.delta",{text:i,meta:l},l),t?.onTextDelta?.(i,l)},onThinkingDelta(i,l){f("thinking.delta",{text:i,meta:l},l),t?.onThinkingDelta?.(i,l)},onThinkingEnd(i,l){f("thinking.finished",{thinking:i,meta:l},l),t?.onThinkingEnd?.(i,l)},onToolUseStart(i,l){f("tool.started",{tool:i,meta:l},l),t?.onToolUseStart?.(i,l)},onToolProgress(i,l){f("tool.progress",{update:i,meta:l},l),t?.onToolProgress?.(i,l)},onToolInputDelta(i,l,c){f("tool.progress",{toolName:i,partialJson:l,meta:c},c),t?.onToolInputDelta?.(i,l,c)},onToolResult(i,l){f("tool.finished",{result:i,meta:l},l),t?.onToolResult?.(i,l)},onStreamEnd(i){f("run.progress",{kind:"stream_end",meta:i},i),t?.onStreamEnd?.(i)},onChildActivityEnd(i){f("child_activity.finished",{meta:i},i),t?.onChildActivityEnd?.(i)},onSessionStart(i){d.provider=i.provider,n.emit("session.loaded",Ge(i),{sessionId:i.sessionId,runId:d.runId,turnId:i.turnId??d.turnId}),t?.onSessionStart?.(i)},onTurnStarted(i){d.turnId=i.turnId,n.emit("turn.started",Ge(i),{sessionId:i.sessionId,runId:d.runId,turnId:i.turnId}),t?.onTurnStarted?.(i)},onTurnCompleted(i){n.emit("turn.completed",Ge(i),{sessionId:i.sessionId,runId:d.runId,turnId:i.turnId}),t?.onTurnCompleted?.(i)},onTurnFailed(i){n.emit("turn.failed",Ge(i),{sessionId:i.sessionId,runId:d.runId,turnId:i.turnId}),t?.onTurnFailed?.(i)},onIterationStart(i,l,c){f("run.progress",{kind:"iteration_start",iter:i,maxIter:l,meta:c},c),t?.onIterationStart?.(i,l,c)},onIterationEnd(i){f("run.progress",{kind:"iteration_end",info:i},i),t?.onIterationEnd?.(i)},onCompactStart(i){f("context.compaction.started",{meta:i},i),t?.onCompactStart?.(i)},onCompact(i,l){t?.onCompact?.(i,l)},onCompactStats(i){f("context.compaction.stats",i,i),t?.onCompactStats?.(i)},async onCompactedMessages(i,l,c){let w=l===void 0?void 0:{hasAnchor:l.anchor!==void 0,...l.anchor?.tokensBefore!==void 0?{tokensBefore:l.anchor.tokensBefore}:{},...l.anchor?.tokensAfter!==void 0?{tokensAfter:l.anchor.tokensAfter}:{},...l.anchor?.entriesRemoved!==void 0?{entriesRemoved:l.anchor.entriesRemoved}:{},...l.anchor?.reason!==void 0?{reason:l.anchor.reason}:{},artifactLedgerEntryCount:l.artifactLedger?.length??0,postCompactAttachmentCount:l.postCompactAttachments?.length??0,exactSnapshotAvailable:l.preCompactionMessages!==void 0};f("context.compaction.messages",{messageCount:i.length,update:w,meta:c},c),await t?.onCompactedMessages?.(i,l,c)},onContextCompactionFinished(i){let l=i.contextRevision??0;f("context.compaction.finished",{...i,contextId:i.contextId??d.sessionId,contextKind:i.contextKind??"root",contextRevision:l,beforeRevision:Math.max(0,l-1),afterRevision:l},i),t?.onContextCompactionFinished?.(i)},onCompactEnd(i){f("context.compaction.ended",{meta:i},i),t?.onCompactEnd?.(i)},onMidTurnUserMessages(i,l){u(l?.queuedMessageIds??[]),f("run.progress",{kind:"mid_turn_user_messages",contents:i,meta:l},l),t?.onMidTurnUserMessages?.(i,l)},onRetry(i,l,c,w){f("provider.retry",{reason:i,attempt:l,maxAttempts:c,meta:w},w),t?.onRetry?.(i,l,c,w)},onProviderRateLimit(i,l,c,w){f("provider.retry",{reason:"rate_limit",attempt:i,maxAttempts:l,delayMs:c,meta:w},w),t?.onProviderRateLimit?.(i,l,c,w)},onRetryAfter(i,l){f("provider.retry",{retryAfter:i,meta:l},l),t?.onRetryAfter?.(i,l)},onReasoningEffortRejected(i){f("provider.recovery",{kind:"reasoning_effort_rejected",event:i},i),t?.onReasoningEffortRejected?.(i)},onRepoIntelligenceTrace(i){f("repo_intelligence.trace",i,i),t?.onRepoIntelligenceTrace?.(i)},onContextBudgetSnapshot(i){f("context.budget.snapshot",i,i),t?.onContextBudgetSnapshot?.(i)},onToolExposurePlanned(i){f("tool.exposure.planned",i,i),t?.onToolExposurePlanned?.(i)},onContextCompactionSkipped(i){f("context.compaction.skipped",i,i),t?.onContextCompactionSkipped?.(i)},onSidecarMessage(i){f("sidecar.message",i,i),t?.onSidecarMessage?.(i)},onTodoUpdate(i,l){f("todo.updated",{items:i,meta:l},l),t?.onTodoUpdate?.(i,l)},onTodoDriftWarning(i){f("todo.warning",i,i),t?.onTodoDriftWarning?.(i)},onProviderRecovery(i,l){f("provider.recovery",{event:i,meta:l},l),t?.onProviderRecovery?.(i,l)},onEffectiveConfig(i){f("config.effective",i,i),t?.onEffectiveConfig?.(i)},onWorkflowProcessEvent(i){let l=Gf(i);n.emit(l,Ge(i),{sessionId:i.snapshot.hostMetadata?.sessionId??d.sessionId,runId:d.runId,turnId:d.turnId}),t?.onWorkflowProcessEvent?.(i)},onComplete(i){d.mode!=="managed_task"&&(d.interruptInputOpen=!1),f("run.progress",{kind:"complete",meta:i},i),t?.onComplete?.(i)},onError(i,l){d.interruptInputOpen=!1,f("runtime.warning",{source:"coding",severity:"error",message:i.message},l),t?.onError?.(i,l)},onManagedTaskStatus(i){d.mode==="managed_task"&&i.phase==="completed"&&(d.interruptInputOpen=!1),f("run.progress",{kind:"managed_task_status",status:i},i),t?.onManagedTaskStatus?.(i)},beforeToolExecute:o(async(i,l,c)=>{let w=rg(d),P=d.autoModeEngine;if(w!==void 0&&Se(d.permissionMode)==="auto"&&(P==="llm"||P==="rules"))return Ad.has(i)?!0:c?.toolId!==void 0&&w.consumeAllowedCall({id:c.toolId,name:i,input:l})?t?.beforeToolExecute?.(i,l,c)??!0:"[Blocked] Runtime auto mode did not classify this concrete tool call.";if(Se(d.permissionMode)==="plan"){let g=kd(d,i,l);if(g!==!0&&g!==void 0)return g}if(r.isGranted(c?.sessionId??d.sessionId,i,l,fi(d)))return!0;let I=t?.beforeToolExecute===void 0?kd(d,i,l):void 0;if(I!==void 0)return I;let k=d.phase;d.phase==="running"&&(d.phase="waiting_permission");let x=r.trackAndWait({sessionId:c?.sessionId??d.sessionId,runId:d.runId,...c?.turnId??d.turnId?{turnId:c?.turnId??d.turnId}:{},...c?.toolId?{toolCallId:c.toolId}:{},toolName:i,inputPreview:Mn(l),executionCwd:fi(d)},void 0,{toolInput:l,...typeof d.start?.options.context?.gitRoot=="string"?{projectRoot:d.start.options.context.gitRoot}:{}});try{if(!t?.beforeToolExecute){let T=await x.response;return bd(T)}let g=Promise.resolve(t.beforeToolExecute(i,l,c)).then(T=>({source:"hook",decision:T})),h=x.response.then(T=>({source:"runtime",decision:bd(T)})),D=await Promise.race([g,h]);return D.source==="hook"&&r.resolve(x.request.id,eg(D.decision)),D.decision}catch(g){throw r.resolve(x.request.id,{type:"reject",reason:se(g).message}),g}finally{d.phase==="waiting_permission"&&(d.phase=k==="queued"?"running":k)}},"beforeToolExecute"),...t?.askUser||a?{askUser:o((i,l)=>v("askUser",i,l,t?.askUser?()=>t.askUser(i,l):void 0,""),"askUser")}:{},...t?.askUserMulti||a?{askUserMulti:o((i,l)=>v("askUserMulti",i,l,t?.askUserMulti?()=>t.askUserMulti(i,l):void 0,void 0),"askUserMulti")}:{},...t?.askUserInput||a?{askUserInput:o((i,l)=>v("askUserInput",i,l,t?.askUserInput?()=>t.askUserInput(i,l):void 0,void 0),"askUserInput")}:{}}}o(sf,"wrapKodaXEvents");function af(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(af,"buildSessionRuntimeInfo");function jd(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(jd,"toRuntimeSessionSummary");function gd(e,n,t){let r=e.input===void 0?[]:Array.isArray(e.input)?[...e.input]:[e.input],s=r.filter(d=>d.type==="text");if(e.prompt!==void 0&&s.length>0)throw new Error(`${t} accepts either prompt or text input, not both`);if(s.length>1)throw new Error(`${t} accepts at most one text input item`);let a=e.prompt??s[0]?.text;if(a===void 0)throw new Error(`${t} requires prompt or text input`);return{prompt:a,inputArtifacts:r.flatMap(d=>df(d,n))}}o(gd,"normalizeRuntimeRunInput");function df(e,n){if(e.type==="text")return[];if(e.type==="artifact_ref")return uf(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(df,"runtimeInputToArtifacts");function uf(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(uf,"runtimeArtifactToInputArtifacts");function cf(e){return typeof e=="string"&&cp.has(e)}o(cf,"isRuntimeArtifactKind");function lf(e,n,t,r){let s=r.runtimeInfo?.canonicalRepoRoot??(r.gitRoot?r.gitRoot:void 0),a=s===void 0?void 0:F.resolve(s),d=r.runtimeInfo?.executionCwd??r.runtimeInfo?.workspaceRoot??a,u={...a!==void 0?{gitRoot:a}:{},...n.executionCwd!==void 0?{executionCwd:F.resolve(n.executionCwd)}:d!==void 0?{executionCwd:F.resolve(d)}:{}},p=e.context,f=typeof p?.gitRoot=="string"?F.resolve(p.gitRoot):void 0;if(a!==void 0&&f!==void 0&&!(it(a,f)&&it(f,a)))throw new Error("gitRoot must match the session repository safety boundary");let v=p?.executionCwd===void 0?void 0:F.resolve(p.executionCwd),i=v??u.executionCwd,l=r.runtimeInfo?.workspaceRoot??a;v!==void 0&&l!==void 0&&$d(v,l,"executionCwd");let c=[...p?.inputArtifacts??[],...t],w={...u,...p??{},...a!==void 0?{gitRoot:a}:f!==void 0?{gitRoot:f}:{},...i!==void 0?{executionCwd:i}:{},...c.length>0?{inputArtifacts:c}:{}},P=e.provider??n.provider,R=e.model??n.model,I=e.effort??n.effort,k=e.thinking??n.thinking,x=e.reasoningMode??n.reasoningMode,g=e.agentMode??n.agentMode,h=g==="amaw"?"ama":g,D=e.compaction!==void 0||n.compactionTriggerPercent!==void 0||n.compactionTriggerTokens!==void 0?{...n.compactionTriggerPercent!==void 0?{triggerPercent:n.compactionTriggerPercent}:{},...n.compactionTriggerTokens!==void 0?{triggerTokens:n.compactionTriggerTokens}:{},...e.compaction??{}}:void 0;return{...e,...P!==void 0?{provider:P}:{},...R!==void 0?{model:R}:{},...I!==void 0?{effort:I}:{},...k!==void 0?{thinking:k}:{},...x!==void 0?{reasoningMode:x}:{},...h!==void 0?{agentMode:h}:{},...D!==void 0?{compaction:D}:{},...Object.keys(w).length>0?{context:w}:{}}}o(lf,"buildEffectiveRuntimeOptions");async function Rd(e,n){let t=await e.loadSession(n);if(!t)throw new Error(`Session not found: ${n}`);return t}o(Rd,"loadRequiredSession");function mf(e,n,t){let r=o((a,d)=>t?pf(a,d)?!1:a===void 0||ep.has(a.toLowerCase()):!0,"admitted"),s=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)||s(a.sessionId??"<new>")},assertFilter(a){a?.surface!==void 0&&!r(a.surface,void 0)&&s("<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 d=await n.loadSession(a);return d!==null&&r(d.runtimeInfo?.surface,d.runtimeInfo?.profileId)},async assertRunAccess(a){if(!t)return;let d=await Rd(n,a);r(d.runtimeInfo?.surface,d.runtimeInfo?.profileId)||s(a)},async loadRequired(a){let d=await Rd(n,a);return r(d.runtimeInfo?.surface,d.runtimeInfo?.profileId)||s(a),d}}}o(mf,"createRuntimeSessionAdmission");async function mi(e,n){let t=new Map,r=[];for(let s of e){let a=t.get(s.sessionId);a===void 0&&(a=await n.admitsSession(s.sessionId),t.set(s.sessionId,a)),a&&r.push(s)}return r}o(mi,"filterAdmittedRunStatuses");function pf(e,n){let t=o(r=>r?.toLowerCase().split(/[^a-z0-9]+/).includes("partner")===!0,"hasPartnerToken");return t(e)||t(n)}o(pf,"isPartnerSessionIdentity");function Ft(e){return`sha256:${Ed("sha256").update(JSON.stringify(e)).digest("hex")}`}o(Ft,"createRuntimeTranscriptRevision");function Fd(e){return Buffer.from(JSON.stringify(e),"utf8").toString("base64url")}o(Fd,"encodeRuntimeTranscriptCursor");function qd(e){let n;try{n=JSON.parse(Buffer.from(e,"base64url").toString("utf8"))}catch(t){throw Fe(`Invalid transcript cursor: ${se(t).message}`)}if(!X(n)||typeof n.revision!="string")throw Fe("Invalid transcript cursor payload");if(n.kind==="page"&&Number.isSafeInteger(n.end)&&Number(n.end)>=0)return{kind:"page",revision:n.revision,end:Number(n.end)};if(n.kind==="entry"&&Number.isSafeInteger(n.entryIndex)&&Number(n.entryIndex)>=0&&Number.isSafeInteger(n.offset)&&Number(n.offset)>=0)return{kind:"entry",revision:n.revision,entryIndex:Number(n.entryIndex),offset:Number(n.offset)};throw Fe("Invalid transcript cursor payload")}o(qd,"decodeRuntimeTranscriptCursor");function yd(e,n,t){let r=Ft(e),s=t??ap;if(!Number.isSafeInteger(s)||s<=0)throw new Error("transcript page limit must be a positive safe integer");let a=Math.min(s,dp),d=e.transcriptEntries.length;if(n!==void 0){let i=qd(n);if(i.kind!=="page"||i.revision!==r)throw Fe("Transcript cursor is stale; request a fresh observation snapshot");d=Math.min(i.end,e.transcriptEntries.length)}let u=[],p=0,f=d;for(let i=d-1;i>=0&&!(u.length>=a);i-=1){let l=e.transcriptEntries[i],c=JSON.stringify(l),w=Buffer.byteLength(c,"utf8"),P={index:i,...typeof l.entryId=="string"?{entryId:l.entryId}:{},byteLength:w,oversized:w>Za,...w<=Za?{entry:l}:{}},R=Buffer.byteLength(JSON.stringify(P),"utf8");if(u.length>0&&p+R>Td)break;u.unshift(P),p+=R,f=i}let v=f>0;return{revision:r,entries:u,hasMore:v,...v?{nextCursor:Fd({kind:"page",revision:r,end:f})}:{}}}o(yd,"createRuntimeTranscriptSlice");function wd(e,n,t,r){if(e.revision!==n)throw Fe("Transcript revision changed; request a fresh observation snapshot");let s=0;if(e.cursor!==void 0){let u=qd(e.cursor);if(u.kind!=="entry"||u.revision!==n||u.entryIndex!==e.entryIndex)throw Fe("Transcript entry cursor is stale; restart entry retrieval");s=u.offset}if(s>r.length)throw Fe("Transcript entry cursor offset is invalid");let a=Math.min(r.length,s+sp),d=a<r.length;return{revision:n,entryIndex:e.entryIndex,...t!==void 0?{entryId:t}:{},encoding:"base64-json",data:r.subarray(s,a).toString("base64"),hasMore:d,...d?{nextCursor:Fd({kind:"entry",revision:n,entryIndex:e.entryIndex,offset:a})}:{}}}o(wd,"createRuntimeTranscriptEntryChunkFromEncoded");function hd(e){return e.length<=ed?e:`${e.slice(0,ed-1)}\u2026`}o(hd,"previewQueuedInput");function pi(e,n){if(n.executionCwd===void 0)return;let t=e.runtimeInfo?.workspaceRoot??e.gitRoot;t&&$d(n.executionCwd,t,"executionCwd")}o(pi,"assertSessionSettingsAllowed");function $d(e,n,t){if(!it(e,n))throw new Error(`${t} must stay within the session workspace root`)}o($d,"assertPathWithinRoot");function ff(e,n){let t={...e};return Qn(t,"provider",n.provider),Qn(t,"model",n.model),Qn(t,"permissionMode",n.permissionMode),Qn(t,"executionCwd",n.executionCwd,!0),Qn(t,"autoModeClassifierModel",n.autoModeClassifierModel),Yn(t,"effort",n.effort),Yn(t,"thinking",n.thinking),Yn(t,"reasoningMode",n.reasoningMode),Yn(t,"agentMode",n.agentMode),Yn(t,"autoModeEngine",n.autoModeEngine),Rf(t,"autoModeTimeoutMs",n.autoModeTimeoutMs),yf(t,"autoModeSpeculativeWindowMs",n.autoModeSpeculativeWindowMs),Hd(t,n.compactionTriggerPercent),gf(t,n.compactionTriggerTokens),t}o(ff,"applySessionSettingsPatch");function Hd(e,n){if(n!==void 0){if(n===null){On(e,"compactionTriggerPercent");return}if(!Number.isFinite(n))throw new Error("compactionTriggerPercent must be a finite number");ee(e,"compactionTriggerPercent",ji({triggerPercent:n}).triggerPercent)}}o(Hd,"applyNullableCompactionPercentPatch");function gf(e,n){if(n!==void 0){if(n===null||n===0){On(e,"compactionTriggerTokens");return}if(!Number.isSafeInteger(n)||n<0)throw new Error("compactionTriggerTokens must be a positive safe integer or zero");ee(e,"compactionTriggerTokens",n)}}o(gf,"applyNullableCompactionTokensPatch");function Rf(e,n,t){if(t!==void 0){if(t===null){On(e,n);return}if(!Number.isSafeInteger(t)||t<=0)throw new Error(`${n} must be a positive safe integer`);ee(e,n,t)}}o(Rf,"applyNullablePositiveIntegerPatch");function yf(e,n,t){if(t!==void 0){if(t===null){On(e,n);return}if(!Number.isSafeInteger(t)||t<0)throw new Error(`${n} must be a non-negative safe integer`);ee(e,n,t)}}o(yf,"applyNullableNonNegativeIntegerPatch");function Qn(e,n,t,r=!1){if(t===void 0)return;if(t===null){On(e,n);return}if(r&&!F.isAbsolute(t))throw new Error(`${String(n)} must be an absolute path`);let s=n==="autoModeClassifierModel"?Kd(t):t;ee(e,n,s)}o(Qn,"applyNullableStringPatch");function Kd(e){let n=e.trim();if(n.length===0)throw new un("autoModeClassifierModel must be a non-empty classifier model spec.");try{Gi(n)}catch(t){let r=t instanceof Error?t.message:String(t);throw new un(`autoModeClassifierModel must be a valid classifier model spec: ${r}`)}return n}o(Kd,"validateRuntimeAutoModeClassifierModel");function Xd(e,n){if(!(Se(e.permissionMode)!=="auto"||(e.autoModeEngine??"llm")!=="llm")){if(e.autoModeClassifierModel!==void 0){try{Kd(e.autoModeClassifierModel)}catch(t){return t instanceof un?t:new un("Auto LLM classifier model configuration is invalid.")}return}if(!n?.trim().length)return new un("Auto LLM requires a classifier model. Set autoModeClassifierModel, the Session/run model, or runtime defaultModel.")}}o(Xd,"runtimeAutoModeClassifierModelError");function wf(e,n){let t=Xd(e,n);if(t)throw t}o(wf,"assertRuntimeAutoModeClassifierModelConfigured");function Yn(e,n,t){if(t!==void 0){if(t===null){On(e,n);return}ee(e,n,t)}}o(Yn,"applyNullablePatch");function ee(e,n,t){e[n]=t}o(ee,"setMutableSetting");function On(e,n){delete e[n]}o(On,"deleteMutableSetting");function Sd(e){if(!X(e))return{};let n={};return Ue(n,"provider",e.provider),Ue(n,"model",e.model),Ue(n,"permissionMode",e.permissionMode),Ue(n,"executionCwd",e.executionCwd),Ue(n,"autoModeClassifierModel",e.autoModeClassifierModel),Ue(n,"effort",e.effort),typeof e.thinking=="boolean"&&ee(n,"thinking",e.thinking),Ue(n,"reasoningMode",e.reasoningMode),Ue(n,"agentMode",e.agentMode),(e.autoModeEngine==="llm"||e.autoModeEngine==="rules")&&ee(n,"autoModeEngine",e.autoModeEngine),Number.isSafeInteger(e.autoModeTimeoutMs)&&Number(e.autoModeTimeoutMs)>0&&ee(n,"autoModeTimeoutMs",Number(e.autoModeTimeoutMs)),Number.isSafeInteger(e.autoModeSpeculativeWindowMs)&&Number(e.autoModeSpeculativeWindowMs)>=0&&ee(n,"autoModeSpeculativeWindowMs",Number(e.autoModeSpeculativeWindowMs)),typeof e.compactionTriggerPercent=="number"&&Hd(n,e.compactionTriggerPercent),Number.isSafeInteger(e.compactionTriggerTokens)&&Number(e.compactionTriggerTokens)>0&&ee(n,"compactionTriggerTokens",Number(e.compactionTriggerTokens)),n}o(Sd,"parseRuntimeSessionSettings");function hf(e){if(!X(e)||!X(e.scope))throw new Error("invalid permission grant");let n=e.scope.toolName,t=e.scope.sessionId,r=e.scope.matcher,s=e.persistence,a=e.label,d=e.sourcePermissionId;if(typeof e.id!="string"||typeof e.createdAt!="string"||n!==void 0&&typeof n!="string"||t!==void 0&&typeof t!="string"||s!==void 0&&s!=="session"&&s!=="persistent"||a!==void 0&&typeof a!="string"||d!==void 0&&typeof d!="string")throw new Error("invalid permission grant");return{id:e.id,createdAt:e.createdAt,persistence:s??"persistent",...a!==void 0?{label:a}:{},...d!==void 0?{sourcePermissionId:d}:{},scope:{...n!==void 0?{toolName:n}:{},...t!==void 0?{sessionId:t}:{},...r!==void 0?{matcher:So(r)}:{}}}}o(hf,"parseRuntimePermissionGrant");function Ue(e,n,t){typeof t=="string"&&t.length>0&&ee(e,n,t)}o(Ue,"setStringIfPresent");function X(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}o(X,"isRecord");function Sf(e,n){if(!X(e))throw new Error(`${n} requires a plain object`)}o(Sf,"assertPlainObject");function vf(e){let n=new Set(Zm);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(vf,"sanitizeRuntimeConfigPatch");function If(e){if(e.homeDir!==void 0)return F.join(F.resolve(e.homeDir),".kodax","config.json")}o(If,"resolveRuntimeConfigFile");function Me(e){if(e===void 0)return Zi();if(!N.existsSync(e))return{};try{let n=JSON.parse(N.readFileSync(e,"utf8"));return X(n)?n:{}}catch{return{}}}o(Me,"readRuntimeConfig");function kf(e,n){if(e===void 0){no(n);return}let r={...Me(e),...n};for(let s of Object.keys(n))n[s]===void 0&&delete r[s];nt(e,r)}o(kf,"patchRuntimeConfig");function nt(e,n){N.mkdirSync(F.dirname(e),{recursive:!0}),N.writeFileSync(e,`${JSON.stringify(n,null,2)}
|
|
73
|
+
`,"utf8")}o(nt,"writeRuntimeConfig");function bf(e){return e===void 0?co():xf(Ut(Me(e)))}o(bf,"listRuntimeCustomProviders");function Pf(e,n){if(e===void 0)return lo(n);Pi(n);let t=Me(e),r=Ut(t),s=Cf(r,n,a=>a.name===n.name);return nt(e,{...t,customProviders:s}),rt(s),structuredClone(n)}o(Pf,"upsertRuntimeCustomProvider");function Ef(e,n){if(e===void 0)return mo(n);if(typeof n!="string"||n.length===0)return!1;let t=Me(e),r=Ut(t),s=r.filter(a=>a.name!==n);return s.length===r.length?!1:(nt(e,{...t,customProviders:s}),rt(s),!0)}o(Ef,"removeRuntimeCustomProvider");function Bd(e){e!==void 0&&rt(Ut(Me(e)))}o(Bd,"registerRuntimeConfiguredCustomProviders");function Ut(e){return Array.isArray(e.customProviders)?structuredClone(e.customProviders):[]}o(Ut,"extractRuntimeCustomProviders");function xf(e){return structuredClone(e)}o(xf,"cloneCustomProviders");function ci(e){return e===void 0?po():Mf(Wt(Me(e)))}o(ci,"listRuntimeMcpServers");function Df(e,n){if(e===void 0)return fo(n);let t=Wt(Me(e))[n];return t===void 0?void 0:structuredClone(t)}o(Df,"getRuntimeMcpServer");function Tf(e,n,t){if(e===void 0)return go(n,t);dr(n,t);let r=Me(e),s={...Wt(r),[n]:structuredClone(t)};return nt(e,{...r,mcpServers:s}),structuredClone(t)}o(Tf,"upsertRuntimeMcpServer");function Af(e,n){if(e===void 0)return Ro(n);let t=Me(e),r=Wt(t);if(!(n in r))return!1;let s={...r};return delete s[n],nt(e,{...t,mcpServers:s}),!0}o(Af,"removeRuntimeMcpServer");function Wt(e){return X(e.mcpServers)?structuredClone(e.mcpServers):{}}o(Wt,"extractRuntimeMcpServers");function Mf(e){return structuredClone(e)}o(Mf,"cloneMcpServers");function Cf(e,n,t){let r=e.findIndex(t);return r<0?[...e,structuredClone(n)]:e.map((s,a)=>a===r?structuredClone(n):structuredClone(s))}o(Cf,"upsertConfigEntry");function _f(e,n){let t=Array.isArray(e)?e:[];if(n?.provider!==void 0){let r=t.find(s=>X(s)&&s.name===n.provider);return X(r)?{provider:n.provider,models:Array.isArray(r.models)?r.models:[]}:{provider:n.provider,models:[]}}return t.flatMap(r=>!X(r)||typeof r.name!="string"?[]:[{provider:r.name,models:Array.isArray(r.models)?r.models:[]}])}o(_f,"listRuntimeModels");function vd(e){let n=Of(e).map(Nf),t=mn()?.listCommands().filter(r=>r.metadata?.userInvocable!==!1).map(Lf)??[];return[...n,...t].sort((r,s)=>r.name.localeCompare(s.name))}o(vd,"listRuntimeCommands");function Of(e){let n=wo;return typeof n.listRegisteredCommands=="function"?n.listRegisteredCommands(e):ao().getAll()}o(Of,"listReplCommands");function Nf(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(Nf,"replCommandToRuntimeCommandInfo");function Lf(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(Lf,"extensionCommandToRuntimeCommandInfo");function An(e){return Array.isArray(e)?e.map(n=>An(n)):X(e)?Object.fromEntries(Object.entries(e).map(([n,t])=>[n,jf(n)?"[redacted]":An(t)])):e}o(An,"redactRuntimeConfig");function jf(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(jf,"isSensitiveConfigKey");function Ff(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(Ff,"toRuntimeSkillSummary");function qf(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(Zn)}:{},...e.references!==void 0?{references:e.references.map(Zn)}:{},...e.assets!==void 0?{assets:e.assets.map(Zn)}:{},...e.templates!==void 0?{templates:e.templates.map(Zn)}:{},...e.resources!==void 0?{resources:e.resources.map(Zn)}:{}}}o(qf,"toRuntimeSkillDescription");function Zn(e){return{name:e.name,path:e.path,relativePath:e.relativePath}}o(Zn,"toRuntimeSkillFileSummary");function Cn(e){if(!X(e))throw new Error("Invalid runtime daemon response: expected object");return e}o(Cn,"requireRuntimeRecord");function Ud(e){let n=Cn(e);if(typeof n.runtimeId!="string"||typeof n.mode!="string"||typeof n.profile!="string"||typeof n.startedAt!="string"||typeof n.version!="string")throw new Error("Invalid runtime daemon response: missing identity fields");return{runtimeId:n.runtimeId,mode:n.mode==="daemon"?"daemon":"embedded",profile:n.profile,startedAt:n.startedAt,version:n.version,...n.isolation==="inline"||n.isolation==="worker"||n.isolation==="process"?{isolation:n.isolation}:{},...typeof n.workerThreadId=="number"?{workerThreadId:n.workerThreadId}:{}}}o(Ud,"parseRuntimeIdentity");function $f(e){let n={};return e.provider!==void 0&&ee(n,"provider",e.provider),e.model!==void 0&&ee(n,"model",e.model),e.effort!==void 0&&ee(n,"effort",e.effort),e.thinking!==void 0&&ee(n,"thinking",e.thinking),e.reasoningMode!==void 0&&ee(n,"reasoningMode",e.reasoningMode),e.permissionMode!==void 0&&ee(n,"permissionMode",e.permissionMode),e.executionCwd!==void 0&&ee(n,"executionCwd",e.executionCwd),e.agentMode!==void 0&&ee(n,"agentMode",e.agentMode),e.autoModeEngine!==void 0&&ee(n,"autoModeEngine",e.autoModeEngine),e.autoModeClassifierModel!==void 0&&ee(n,"autoModeClassifierModel",e.autoModeClassifierModel),e.autoModeTimeoutMs!==void 0&&ee(n,"autoModeTimeoutMs",e.autoModeTimeoutMs),e.autoModeSpeculativeWindowMs!==void 0&&ee(n,"autoModeSpeculativeWindowMs",e.autoModeSpeculativeWindowMs),e.compactionTriggerPercent!==void 0&&ee(n,"compactionTriggerPercent",e.compactionTriggerPercent),e.compactionTriggerTokens!==void 0&&ee(n,"compactionTriggerTokens",e.compactionTriggerTokens),n}o($f,"serializeSessionSettings");function Hf(){return`run_${Date.now().toString(36)}_${ge().replace(/-/g,"").slice(0,8)}`}o(Hf,"createRunId");function Kf(){return`input_${Date.now().toString(36)}_${ge().replace(/-/g,"").slice(0,8)}`}o(Kf,"createInputId");function Wd(e){return{inputId:e.inputId,afterRunId:e.afterRunId,delivery:e.delivery,state:e.state,contentPreview:e.contentPreview,queuedAt:e.queuedAt,...e.deliveredAt!==void 0?{deliveredAt:e.deliveredAt}:{},...e.origin!==void 0?{origin:e.origin}:{}}}o(Wd,"runtimeInterruptInputStatus");function ke(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:Xf(e.phase)}}:{},...e.interruptInputs.length>0?{interruptInputs:e.interruptInputs.map(Wd)}:{}}}o(ke,"statusFromRecord");function Xf(e){return e==="queued"?"queued":zt(e)?"terminal":"delivered"}o(Xf,"runtimeContinuationState");function zd(e){return{runId:e.runId,sessionId:e.sessionId,phase:e.phase,...e.error!==void 0?{error:new Error(e.error)}:{}}}o(zd,"resultFromStatus");function Bf(e){return e.length<=Ht?e:[...e].sort(hi).slice(-Ht)}o(Bf,"recentRunStatuses");function Uf(e){if(e.size<=Ht)return;let n=[...e.values()].filter(t=>zt(t.phase)).sort((t,r)=>hi(ke(t),ke(r)));for(let t of n){if(e.size<=Ht)return;e.delete(t.runId)}}o(Uf,"pruneTerminalRuns");function hi(e,n){let t=e.endedAt??e.startedAt,r=n.endedAt??n.startedAt,s=t.localeCompare(r);return s!==0?s:e.runId.localeCompare(n.runId)}o(hi,"compareRunStatusRecency");function Wf(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(Wf,"runMatchesFilter");function Lt(e,n,t,r,s){if(t.terminalEmitted)return;t.interruptInputOpen=!1,zf(t),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:s?.code??Vf(a),effectOutcome:s?.effectOutcome??(a==="interrupted"?"unknown":"known"),...s?.message!==void 0?{message:s.message}:{}};let d=r==="completed"?"run.completed":r==="cancelled"?"run.cancelled":r==="interrupted"?"run.interrupted":"run.failed";cn(e,n,t,ke(t)),e.emit(d,ke(t),{sessionId:t.sessionId,runId:t.runId,...t.turnId!==void 0?{turnId:t.turnId}:{}})}o(Lt,"markRunTerminal");function zf(e){for(let n of e.interruptInputs)n.state==="queued"&&(n.queueMessageId!==void 0&&(Ei().dequeue({agentId:Qt(e.sessionId,"/root"),maxPriority:"user",mode:"prompt",id:n.queueMessageId}),delete n.queueMessageId),n.state="terminal")}o(zf,"terminalizeQueuedInterruptInputs");function cn(e,n,t,r){try{n.saveRunStatus(r)}catch(s){let a=t?.turnId??r.turnId;e.emit("runtime.warning",{message:`Failed to save runtime run status for ${r.runId}: ${se(s).message}`,runId:r.runId,phase:r.phase},{sessionId:r.sessionId,runId:r.runId,...a!==void 0?{turnId:a}:{}})}}o(cn,"saveRunStatusSafely");function zt(e){return e==="completed"||e==="failed"||e==="cancelled"||e==="interrupted"}o(zt,"isTerminalRunPhase");function Gf(e){return e.type==="workflow_started"?"workflow.started":e.type==="workflow_finished"?"workflow.finished":"workflow.updated"}o(Gf,"workflowEventType");function Jf(e){return e==="completed"||e==="failed"||e==="cancelled"}o(Jf,"isFinalWorkflowStatus");function Vf(e){return e==="completed"?"completed":e==="failed"?"run_failed":e==="cancelled"?"cancelled":"interrupted"}o(Vf,"defaultRuntimeTerminalCode");function Qf(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(Qf,"classifyRuntimeRunFailure");function Yf(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(Yf,"normalizeRuntimeRunError");function Zf(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(Zf,"permissionMatchesFilter");function eg(e){return e===!0?{type:"allow_once"}:{type:"reject",reason:e===!1?"tool execution rejected":e}}o(eg,"decisionToPermissionDecision");function ng(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(ng,"autoModeEscalationRisk");var tg=8;function fi(e){return F.resolve(e.start?.options.context?.executionCwd??e.start?.options.context?.gitRoot??process.cwd())}o(fi,"resolveRuntimeExecutionCwd");function gi(e){return e.kind==="tool"&&e.name==="auto-mode"&&"getEngine"in e&&typeof e.getEngine=="function"&&"consumeAllowedCall"in e&&typeof e.consumeAllowedCall=="function"}o(gi,"isRuntimeAutoModeGuardrail");function rg(e){if(Se(e.permissionMode)==="auto")return e.start?.options.guardrails?.find(gi)}o(rg,"getRuntimeAutoModeGuardrail");function Si(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(d=>d!=="length"&&typeof d=="string").map(d=>{let u=Number(d);if(!Number.isInteger(u)||u<0||u>=e.length||String(u)!==d)throw new Error("Tool input arrays must not contain named properties.");return{index:u,key:d}}).sort((d,u)=>d.index-u.index);return`array:${e.length}:[${a.map(({key:d})=>`${d}:${Id(e,d,n)}`).join("")}]`}return`object:{${r.filter(a=>typeof a=="string").sort().map(a=>`${Si(a,n)}${Id(e,a,n)}`).join("")}}`}finally{n.delete(e)}}o(Si,"serializeRuntimeToolInput");function Id(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 Si(r.value,t)}o(Id,"serializeRuntimeDataProperty");function Xt(e){try{let n=Si(e.input);return Ed("sha256").update(`${e.id}\0${e.name}\0${n}`).digest("hex")}catch{return}}o(Xt,"runtimeAutoModeDecisionKey");function ig(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 s=await e.beforeTool(t,r);if(s.action==="allow"){let a=tr(t),d=a?.ok?a.call:t,u=Xt(d);u!==void 0&&n.add(u)}return s},"beforeTool"),consumeAllowedCall(t){let r=Xt(t);return r===void 0||!n.has(r)?!1:(n.delete(r),!0)},clearAllowedCalls(){n.clear()}}}o(ig,"createRuntimeOwnedAutoModeGuardrail");function og(e){let n=new Set,t,r,s=o(async()=>{let a=(await e.settingsOwner.read(e.sessionId)).value,d=e.getRecord();if(d&&(d.permissionMode=a.permissionMode,d.autoModeEngine=Se(a.permissionMode)==="auto"?a.autoModeEngine??"llm":a.autoModeEngine,d.autoModeClassifierModel=a.autoModeClassifierModel,d.autoModeTimeoutMs=a.autoModeTimeoutMs,d.autoModeSpeculativeWindowMs=a.autoModeSpeculativeWindowMs),r=Xd(a,d?.model??e.model),r){t=void 0;return}let u=await sg({...e,settings:a});return t=u,u},"resolveGuardrail");return{kind:"tool",name:"auto-mode",async prepare(){if(await s(),r)throw r},async beforeTool(a,d){let u=await s();if(!u?.beforeTool)return r?{action:"block",reason:r.message}:{action:"allow"};t=u;let p=await u.beforeTool(a,d);if(p.action==="allow"){let f=tr(a),v=f?.ok?f.call:a;u.consumeAllowedCall(v);let i=Xt(v);i!==void 0&&n.add(i)}return p},getEngine(){if(t)return t.getEngine();let a=e.settingsOwner.peek(e.sessionId)?.value;return Se(a?.permissionMode)==="auto"?a?.autoModeEngine??"llm":"rules"},consumeAllowedCall(a){let d=Xt(a);return d===void 0||!n.has(d)?!1:(n.delete(d),!0)},clearAllowedCalls(){n.clear(),t?.clearAllowedCalls()}}}o(og,"createRuntimeSessionAutoModeGuardrail");async function sg(e){if(Se(e.settings.permissionMode)!=="auto")return;let n=e.settings.autoModeEngine??"llm",t=e.states.get(e.sessionId);t===void 0?(t={engine:n,denials:ir(),breaker:or()},e.states.set(e.sessionId,t)):t.engine=n;let r=F.resolve(e.options.context?.executionCwd??e.settings.executionCwd??e.options.context?.gitRoot??process.cwd()),s=F.resolve(e.options.context?.gitRoot??r),a=JSON.stringify([process.platform==="win32"?s.toLowerCase():s,process.platform==="win32"?r.toLowerCase():r,n,e.settings.autoModeClassifierModel??null,e.settings.autoModeTimeoutMs??null,e.settings.autoModeSpeculativeWindowMs??null]),d=e.cache.get(e.sessionId)??new Map;e.cache.set(e.sessionId,d);let u=d.get(a);if(u?.engine===n)return u.guardrail;u&&d.delete(a);let p,f=await uo({askUser:o(async(i,l,c)=>{let w=e.getRecord();if(!w)return"block";let P=w.phase;w.phase==="running"&&(w.phase="waiting_permission");try{let R=await e.permissions.requestOwned({sessionId:e.sessionId,runId:w.runId,...w.turnId!==void 0?{turnId:w.turnId}:{},toolCallId:i.id,toolName:i.name,reason:l.slice(0,512),risk:ng(c),inputPreview:Mn(i.input),executionCwd:r},{toolInput:i.input,projectRoot:s,...c!==void 0?{signals:c}:{}});return R.type==="allow_once"||R.type==="allow_session"||R.type==="allow_always"?"allow":"block"}finally{w.phase==="waiting_permission"&&(w.phase=P==="queued"?"running":P)}},"askUser"),projectRoot:s,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}:{},...e.settings.autoModeSpeculativeWindowMs!==void 0?{speculativeWindowMs:e.settings.autoModeSpeculativeWindowMs}:{}},sharedState:t,extraCollectors:[so],onEngineChange:o(i=>{p&&(p.engine=i),e.onEngineChange(i)},"onEngineChange")}),v=ig(f.getGuardrail());for(p={projectRoot:s,executionCwd:r,engine:v.getEngine(),...e.settings.autoModeClassifierModel!==void 0?{classifierModel:e.settings.autoModeClassifierModel}:{},...e.settings.autoModeTimeoutMs!==void 0?{timeoutMs:e.settings.autoModeTimeoutMs}:{},...e.settings.autoModeSpeculativeWindowMs!==void 0?{speculativeWindowMs:e.settings.autoModeSpeculativeWindowMs}:{},guardrail:v},d.set(a,p);d.size>tg;){let i=d.keys().next().value;if(i===void 0||i===a)break;d.get(i)?.guardrail.clearAllowedCalls(),d.delete(i)}return v}o(sg,"createRuntimeAutoModeGuardrail");function kd(e,n,t){if(Ad.has(n))return!0;let r=Se(e.permissionMode);if(r===void 0)return;let s=e.start?.options.context?.gitRoot??e.start?.options.context?.executionCwd,a=s===void 0?void 0:F.resolve(s),d=fi(e);if(r==="plan"){let u=oo(n,t,a,d);return u===null?!0:`${u} Finish the plan before switching to a writable permission mode.`}if(e.permissionBroker!=="client"){if(n==="bash"){let u=typeof t.command=="string"?t.command:"";if(to(u))return!0;if(a&&io(u,a,d))return}if(a&&Qi.has(n)){let u=typeof t.path=="string"?t.path:void 0;if(u&&ro(Mi(u,d),a))return}return Yi(r).has(n)?void 0:!0}}o(kd,"resolveRuntimePermissionPolicy");function bd(e){return e?e.type==="allow_once"||e.type==="allow_session"||e.type==="allow_always"?!0:e.reason??!1:!1}o(bd,"decisionToToolDecision");var ag=8192,et=16384,Pd=16,dg={command:2048,description:1024,file_path:1024,path:1024,paths:1024,cwd:1024,url:1024,preview:2048},ug=/(?:api[_-]?key|authorization|cookie|credential|password|secret|token)/i;function Ri(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]
|
|
74
|
+
`).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(Ri,"redactPermissionPreviewString");function Mn(e){try{return cg(e)}catch{return'{"__truncated":true}'}}o(Mn,"previewInput");function cg(e){let n={},t=!0;for(let[s,a]of Object.entries(dg)){let d=Object.getOwnPropertyDescriptor(e,s);if(!d||!d.enumerable||!("value"in d))continue;if(ug.test(s)){n[s]="[REDACTED]";continue}let u=d.value;if(typeof u=="string"){let p=u.slice(0,et),f=Ri(p);n[s]=f.length<=a?f:`${f.slice(0,Math.max(0,a-1))}\u2026`,t||=u.length>p.length||f.length>a;continue}if(s==="paths"&&Array.isArray(u)){let p=[];for(let f of u.slice(0,Pd)){if(typeof f!="string"){t=!0;continue}let v=f.slice(0,et),i=Ri(v);p.push(i.slice(0,a)),t||=f.length>v.length||i.length>a}t||=u.length>Pd,n[s]=p;continue}if(typeof u=="boolean"||typeof u=="number"||typeof u=="bigint"){n[s]=typeof u=="bigint"?u.toString():u;continue}t=!0}t&&(n.__truncated=!0);let r=JSON.stringify(n);return r.length<=ag?r:'{"__truncated":true}'}o(cg,"buildPermissionInputPreview");function lg(e){if(e.length>et)return Mn({preview:e.slice(0,et)});try{let n=JSON.parse(e);return Mn(X(n)?n:{value:n})}catch{return Mn({preview:e})}}o(lg,"normalizePermissionInputPreview");function se(e){return e instanceof Error?e:new Error(String(e))}o(se,"normalizeError");function Bt(e,n){return Object.assign(new Error(e),{code:"conflict",currentRevision:n})}o(Bt,"createRuntimeConflictError");function Fe(e){return Object.assign(new Error(e),{code:"resync_required"})}o(Fe,"createRuntimeResyncError");function Gd(e){return Object.assign(new Error(e),{code:"invalid_input"})}o(Gd,"createRuntimeInvalidInputError");function mg(e){return Object.assign(new Error(e),{code:"credential_unavailable"})}o(mg,"createRuntimeCredentialUnavailableError");function pg(){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(pg,"createUnsupportedCredentialService");function fg(){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(fg,"createUnsupportedHostToolService");function li(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(li,"assertSessionMutationAllowed");function gg(e,n){if(!("ok"in n))throw new Error(`Session is running and cannot be deleted: ${e}`)}o(gg,"assertDeleteSucceeded");function Rg(e){return structuredClone(e)}o(Rg,"cloneMessage");export{Er as a,He as b,xr as c,gn as d,en as e,wt as f,At as g,Zs as h,ea as i,Qc as j,Yc as k,Ne as l,un as m,Jy as n,Vy as o,Qy as p,Yy as q,Zy as r,mp as s,Md as t};
|