@kodax-ai/kodax 0.7.83 → 0.7.85
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 +154 -4
- package/README.md +48 -26
- package/README_CN.md +26 -21
- package/dist/chunks/agent-OQ37XUWF.js +2 -0
- package/dist/chunks/argument-completer-IMRSIF2N.js +2 -0
- package/dist/chunks/chunk-2XJQNFVR.js +379 -0
- package/dist/chunks/chunk-3E4OSFP2.js +1279 -0
- package/dist/chunks/chunk-CDWYKVZC.js +482 -0
- package/dist/chunks/chunk-CZCEFGQG.js +412 -0
- package/dist/chunks/chunk-IA246OAN.js +679 -0
- package/dist/chunks/chunk-IWRNGH4M.js +319 -0
- package/dist/chunks/chunk-MJ4G5ZCW.js +2 -0
- package/dist/chunks/{chunk-RAQGGVIF.js → chunk-ODRLFQQH.js} +1 -1
- package/dist/chunks/chunk-RSOAHVUR.js +5 -0
- package/dist/chunks/chunk-RTFVMEF6.js +415 -0
- package/dist/chunks/{chunk-XB2JNLXH.js → chunk-SR4E5FQK.js} +2 -2
- package/dist/chunks/{chunk-HI6RCW5Y.js → chunk-TBBY2DKE.js} +2 -2
- package/dist/chunks/chunk-UH5WNJXF.js +92 -0
- package/dist/chunks/{chunk-6QILIBOU.js → chunk-ZVOXWLT6.js} +214 -201
- package/dist/chunks/compaction-config-3WLLNN57.js +2 -0
- package/dist/chunks/{construction-bootstrap-E4M3CY3N.js → construction-bootstrap-CZ6NWEWQ.js} +1 -1
- package/dist/chunks/dist-NFLLOZWF.js +2 -0
- package/dist/chunks/host-LWUSSCWH.js +2 -0
- package/dist/chunks/run-manager-PBMOVP7A.js +2 -0
- package/dist/chunks/utils-KFLK3EHJ.js +2 -0
- package/dist/index.d.ts +17 -15
- package/dist/index.js +2 -2
- package/dist/kodax_bootstrap.js +1 -1
- package/dist/kodax_cli.js +1975 -1564
- package/dist/kodax_resume.js +269 -90
- package/dist/runtime-worker.js +1824 -1419
- package/dist/sandbox-workspace-session.js +979 -66
- package/dist/sdk-a2a.d.ts +11 -10
- package/dist/sdk-a2a.js +9 -8
- package/dist/sdk-agent.d.ts +39 -299
- package/dist/sdk-agent.js +1 -1
- package/dist/sdk-coding.d.ts +103 -16
- package/dist/sdk-coding.js +1 -1
- package/dist/sdk-experimental-memory.d.ts +7 -20
- package/dist/sdk-experimental-memory.js +1 -1
- package/dist/sdk-mcp.js +1 -1
- package/dist/sdk-media.js +1 -1
- package/dist/sdk-repl.d.ts +14 -13
- package/dist/sdk-repl.js +2 -2
- package/dist/sdk-runtime.d.ts +64 -23
- package/dist/sdk-runtime.js +1 -1
- package/dist/sdk-sandbox.js +1 -1
- package/dist/sdk-session.d.ts +7 -6
- package/dist/sdk-session.js +1 -1
- package/dist/sdk-skills.d.ts +2 -2
- package/dist/sdk-skills.js +1 -1
- package/dist/semantic-worker.js +251 -64
- package/dist/types-chunks/{bash-prefix-extractor.d-CJM7OY-L.d.ts → bash-prefix-extractor.d-BnZQDirs.d.ts} +130 -13
- package/dist/types-chunks/{capsule.d-B7yoH4dM.d.ts → capsule.d-CN_iMqAS.d.ts} +2 -1
- package/dist/types-chunks/controller.d-A73Kf6tH.d.ts +105 -0
- package/dist/types-chunks/{controller.d-CYNuR2n9.d.ts → controller.d-Dzxz22X-.d.ts} +28 -1020
- package/dist/types-chunks/{guardrail.d-fM3mn4Op.d.ts → guardrail.d-BCkgaWT1.d.ts} +25 -19
- package/dist/types-chunks/{history-retrieval.d-BDI-ZMvY.d.ts → history-retrieval.d-Debbzn1z.d.ts} +1 -1
- package/dist/types-chunks/{public-api.d-i10kvYFs.d.ts → public-api.d-N6G6Jw8X.d.ts} +3 -2
- package/dist/types-chunks/{repl.d-Cs3eqGVT.d.ts → repl.d-BkTIOkJD.d.ts} +5 -5
- package/dist/types-chunks/review-inbox.d-DuZqFX-z.d.ts +221 -0
- package/dist/types-chunks/{run-manager.d-CodHf6rw.d.ts → run-manager.d-BS4lJfL3.d.ts} +1 -1
- package/dist/types-chunks/{sdk-session-CRXu5xNs.d.ts → sdk-session-DLkZTOc-.d.ts} +2 -2
- package/dist/types-chunks/{shell-command-sets.d-DfeSUjjM.d.ts → shell-command-sets.d-BrLw-WN9.d.ts} +3 -2
- package/dist/types-chunks/{types-Bf3Y3mW-.d.ts → types-PHjfwebT.d.ts} +62 -190
- package/dist/types-chunks/{types.d-BbtGlKZu.d.ts → types.d-BSPlmJqf.d.ts} +25 -6
- package/dist/types-chunks/{types.d-DIXZFauU.d.ts → types.d-Bo4fyMLu.d.ts} +1 -1
- package/dist/types-chunks/{types.d-DKs4tfSd.d.ts → types.d-Ch3BD97c.d.ts} +2 -2
- package/dist/types-chunks/types.d-DlLBRqZ9.d.ts +1057 -0
- package/dist/types-chunks/{utils.d-CgITiLyc.d.ts → utils.d-BI-kjuev.d.ts} +7 -4
- package/package.json +4 -2
- package/dist/chunks/agent-S7LMMTG7.js +0 -2
- package/dist/chunks/argument-completer-SQHG2LYE.js +0 -2
- package/dist/chunks/chunk-37RT45HT.js +0 -379
- package/dist/chunks/chunk-3DKQC7A2.js +0 -479
- package/dist/chunks/chunk-45E23YJI.js +0 -885
- package/dist/chunks/chunk-6UENDY33.js +0 -89
- package/dist/chunks/chunk-DSFHIUHZ.js +0 -655
- package/dist/chunks/chunk-DZUMH6GJ.js +0 -2
- package/dist/chunks/chunk-E7C4DRD2.js +0 -5
- package/dist/chunks/chunk-EVXIJPZ6.js +0 -218
- package/dist/chunks/chunk-KHEFUT6O.js +0 -5
- package/dist/chunks/chunk-LF2JBTBG.js +0 -319
- package/dist/chunks/chunk-TC2VHPG5.js +0 -348
- package/dist/chunks/chunk-URCS6CVP.js +0 -292
- package/dist/chunks/compaction-config-SSQ5NXUP.js +0 -2
- package/dist/chunks/dist-MIXP4ULB.js +0 -2
- package/dist/chunks/host-ZCPI7SMC.js +0 -2
- package/dist/chunks/run-manager-4RYG7HSP.js +0 -2
- package/dist/chunks/utils-7DKE2EKT.js +0 -2
- package/docs/SDK_EMBEDDER_GUIDE.md +0 -5735
|
@@ -0,0 +1,379 @@
|
|
|
1
|
+
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
+
import{b as Zr,h as cd,i as ld}from"./chunk-CDWYKVZC.js";import{Cb as nd,Eb as td,Fb as rd,Gb as id,Hb as od,Ib as sd,Jb as ad,Kb as ho,Ob as wo,Pb as vo,Qb as mn,Wa as ed,Zb as So,jc as dd,kc as ud}from"./chunk-IWRNGH4M.js";import{Aa as Za,k as Ja,m as wn,y as Qa}from"./chunk-IA246OAN.js";import{O as Ro,Q as Va,X as Ga,Y as Ya,f as za,q as yo,y as Qr}from"./chunk-TBBY2DKE.js";import{e as Ua,w as Wa}from"./chunk-CZCEFGQG.js";import{$b as Gr,Bb as Fa,Cb as ja,Jb as Ha,Qb as $a,Sb as qa,Xb as Ba,fc as po,hb as Na,hc as Ka,j as Da,kc as go,pc as Xa,sc as Yr,yb as La}from"./chunk-RTFVMEF6.js";import{Ib as Rr,Vc as Ma,_b as mo,ed as Lt,le as _a,m as yr,n as lo,ne as Oa,ud as fo}from"./chunk-ZVOXWLT6.js";import{Aa as zr,Ta as ra,a as Zi,c as na,ya as ta}from"./chunk-TRNAWSXP.js";import{$c as ro,Dc as ga,Ed as so,Gd as ao,Ia as eo,Ka as gr,La as oa,Lg as Ca,Me as uo,Pg as Aa,Qf as co,Qg as Ta,Tf as Pa,Uf as xa,Vb as fa,Wa as sa,Xc as ya,_a as aa,bb as no,cd as Ra,dd as ha,df as Ea,eb as Vr,fb as da,ib as ua,jd as wa,kc as pa,kd as io,pd as va,qd as Sa,rd as Ia,s as ia,sd as ba,t as we,td as ka,ud as oo}from"./chunk-3E4OSFP2.js";import{L as ma,h as ca,j as to,k as la}from"./chunk-UH5WNJXF.js";import{a as i}from"./chunk-ONUPGMER.js";import{createHash as Dt,randomUUID as Qe}from"node:crypto";import{spawnSync as il}from"node:child_process";import*as $ from"node:fs";import $r from"node:os";import Y from"node:path";import{createHash as Em}from"node:crypto";import hr from"node:path";var Pm=["path","file_path"],xm=new Set(["read","write","edit","multi_edit","insert_after_anchor"]);function ko(e){let n=e.platform??ni();if(e.toolName==="bash")return Am(e,n);let t=xm.has(e.toolName)?Pm.map(s=>e.toolInput[s]).find(s=>typeof s=="string"&&s.length>0):void 0;if(t!==void 0)return Dm(e.toolName,t,e.executionCwd,n);let r=Po(e.executionCwd,e.executionCwd,n),o=ut(Om(e.toolInput));return{version:1,kind:"exact-call",toolName:e.toolName,cwd:r,inputFingerprint:o,fingerprint:ut({version:1,kind:"exact-call",toolName:e.toolName,cwd:r,inputFingerprint:o})}}i(ko,"createRuntimePermissionMatcher");function md(e,n){if(e.toolName!==n.toolName)return!1;let t=ko(n);return e.kind===t.kind&&e.fingerprint===t.fingerprint}i(md,"runtimePermissionMatcherMatches");function fd(e){if(!Nm(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"&&e.shell!=="powershell"||!ei(e.commandFingerprint)||typeof e.cwd!="string"||typeof e.background!="boolean"||e.shellContractFingerprint!==void 0&&!ei(e.shellContractFingerprint)||e.executable!==void 0&&typeof e.executable!="string"||e.argvFingerprint!==void 0&&!ei(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,...e.shellContractFingerprint!==void 0?{shellContractFingerprint:e.shellContractFingerprint}:{},commandFingerprint:e.commandFingerprint,cwd:e.cwd,background:e.background,...e.executable!==void 0?{executable:e.executable}:{},...e.argvFingerprint!==void 0?{argvFingerprint:e.argvFingerprint}:{}};return Io(n,{version:1,kind:"exact-command",toolName:n.toolName,shell:n.shell,...n.shellContractFingerprint!==void 0?{shellContractFingerprint:n.shellContractFingerprint}:{},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 Io(n,{version:1,kind:"exact-path",toolName:n.toolName,path:n.path}),n}if(e.kind==="exact-call"&&typeof e.cwd=="string"&&ei(e.inputFingerprint)){let n={version:1,kind:"exact-call",toolName:e.toolName,fingerprint:e.fingerprint,cwd:e.cwd,inputFingerprint:e.inputFingerprint};return Io(n,{version:1,kind:"exact-call",toolName:n.toolName,cwd:n.cwd,inputFingerprint:n.inputFingerprint}),n}throw new Error("invalid Runtime permission matcher")}i(fd,"parseRuntimePermissionMatcher");function Io(e,n){if(ut(n)!==e.fingerprint)throw new Error("Runtime permission matcher fingerprint does not match its scope.")}i(Io,"assertMatcherFingerprint");function Cm(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)}i(Cm,"hasDynamicShellExpansion");function Eo(e,n){return Cm(e,n==="posix"?"posix":"win32")}i(Eo,"hasDynamicExpansionForPermissionShell");function ni(){return process.platform==="win32"?"win32":"posix"}i(ni,"runtimePermissionHostPlatform");function Am(e,n){let t=e.toolInput.command,r=typeof t=="string"?Mm(t):"",o=Po(e.executionCwd,e.executionCwd,n),s=e.toolInput.run_in_background===!0,a=e.shell??(n==="win32"?"cmd":"posix"),u=_m(r,a),c=Tm(u?.[0],n),p=u&&u.length>1?ut(u.slice(1)):void 0,R=ut(r),I={version:1,kind:"exact-command",toolName:e.toolName,shell:a,...e.shellContractFingerprint!==void 0?{shellContractFingerprint:e.shellContractFingerprint}:{},commandFingerprint:R,cwd:o,...c!==void 0?{executable:c}:{},...p!==void 0?{argvFingerprint:p}:{},background:s};return{...I,fingerprint:ut(I)}}i(Am,"createExactCommandMatcher");function Tm(e,n){if(e===void 0||e.includes("=")||e.length>512)return;let t=n==="win32"?hr.win32.basename(e.replaceAll("/","\\")):hr.posix.basename(e);return t.length>0&&t.length<=128?t:void 0}i(Tm,"safeExecutableMetadata");function Dm(e,n,t,r){let o=Po(n,t,r),s={version:1,kind:"exact-path",toolName:e,path:o};return{...s,fingerprint:ut(s)}}i(Dm,"createExactPathMatcher");function Mm(e){return e.replace(/\r\n?/g,`
|
|
3
|
+
`).trim()}i(Mm,"normalizeCommand");function Po(e,n,t){if(t==="win32"){let r=hr.win32.resolve(n.replaceAll("/","\\"));return hr.win32.resolve(r,e.replaceAll("/","\\")).toLowerCase()}return hr.posix.resolve(n,e)}i(Po,"normalizePermissionPath");function _m(e,n){if(e.length===0||e.includes("\0")||e.includes(`
|
|
4
|
+
`))return;let t=[],r="",o;for(let s=0;s<e.length;s+=1){let a=e[s]??"";if(n!=="cmd"&&a==="'"&&o!=="double"){o=o==="single"?void 0:"single";continue}if(a==='"'&&o!=="single"){o=o==="double"?void 0:"double";continue}if(a===(n==="cmd"?"^":n==="powershell"?"`":"\\")&&o!=="single"&&s+1<e.length){r+=e[s+1]??"",s+=1;continue}if(/\s/.test(a)&&o===void 0){r.length>0&&t.push(r),r="";continue}r+=a}if(o===void 0)return r.length>0&&t.push(r),t.length>0?t:void 0}i(_m,"tokenizeShellCommand");function Om(e){return Object.fromEntries(Object.entries(e).sort(([n],[t])=>n.localeCompare(t)))}i(Om,"normalizeGenericInput");function ut(e){return Em("sha256").update(bo(e)).digest("hex")}i(ut,"stableFingerprint");function bo(e){if(e===null||typeof e!="object")return JSON.stringify(e)??"undefined";if(Array.isArray(e))return`[${e.map(bo).join(",")}]`;let n=e;return`{${Object.keys(n).sort().map(t=>`${JSON.stringify(t)}:${bo(n[t])}`).join(",")}}`}i(bo,"stableSerialize");function ei(e){return typeof e=="string"&&/^[a-f0-9]{64}$/.test(e)}i(ei,"isSha256");function Nm(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}i(Nm,"isRecord");import{createHash as Lm}from"node:crypto";import Dn from"node:fs";import Tn from"node:path";function Ft(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}i(Ft,"isRecord");function pd(e){return Ft(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"&&Ft(e.capabilities)&&Ft(e.effects):!1}i(pd,"isRegistration");function Fm(e){return Ft(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"&&Ft(e.registration)&&typeof e.idempotencyKey=="string"&&typeof e.dispatchAttempt=="number"&&typeof e.createdAt=="string"&&typeof e.updatedAt=="string":!1}i(Fm,"isTask");function jm(e){return Ft(e)?typeof e.taskId=="string"&&Number.isSafeInteger(e.seq)&&typeof e.timestamp=="string"&&typeof e.type=="string":!1}i(jm,"isEvent");function yd(e){try{return JSON.parse(Dn.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}`)}}i(yd,"parseJson");function gd(e,n){if(!Dn.existsSync(e))return[];let t=yd(e);if(!Array.isArray(t)||!t.every(n))throw new Error(`Runtime agent store file has an invalid array shape: ${e}`);return structuredClone(t)}i(gd,"readList");function xo(e,n){Dn.mkdirSync(Tn.dirname(e),{recursive:!0});let t=`${e}.${process.pid}.tmp`;Dn.writeFileSync(t,`${JSON.stringify(n,null,2)}
|
|
5
|
+
`,{encoding:"utf8",mode:384}),Dn.renameSync(t,e)}i(xo,"writeJsonAtomic");function ti(e,n){let t=Lm("sha256").update(n).digest("hex");return Tn.join(e,t)}i(ti,"taskDirectory");function Hm(e,n){if(!Dn.existsSync(e))return[];let t=Dn.readFileSync(e,"utf8").trim();if(!t)return[];let r=0;return t.split(/\r?\n/).map((o,s)=>{let a;try{a=JSON.parse(o)}catch(u){let c=u instanceof Error?u.message:String(u);throw new Error(`Invalid Runtime agent event at ${e}:${s+1}: ${c}`)}if(!jm(a))throw new Error(`Invalid Runtime agent event shape at ${e}:${s+1}`);if(a.taskId!==n)throw new Error(`Runtime agent event taskId does not match its ledger at ${e}:${s+1}`);if(a.seq<=r)throw new Error(`Runtime agent events require a strictly increasing positive sequence at ${e}:${s+1}`);return r=a.seq,a})}i(Hm,"readEvents");function Rd(e){let n=Tn.resolve(e),t=Tn.join(n,"registrations.json"),r=Tn.join(n,"task-registration-snapshots.json"),o=Tn.join(n,"tasks");return{async loadRegistrations(){return gd(t,pd)},async saveRegistrations(s){xo(t,s)},async loadTaskRegistrationSnapshots(){return gd(r,pd)},async saveTaskRegistrationSnapshots(s){xo(r,s)},async loadTasks(){if(!Dn.existsSync(o))return[];let s=[];for(let u of Dn.readdirSync(o,{withFileTypes:!0})){if(!u.isDirectory())continue;let c=Tn.join(o,u.name,"snapshot.json");if(!Dn.existsSync(c))continue;let p=yd(c);if(!Fm(p))throw new Error(`Invalid Runtime agent task shape: ${c}`);s.push({directoryName:u.name,file:c,task:p})}let a=new Set;for(let{task:u}of s){if(a.has(u.taskId))throw new Error(`Duplicate Runtime agent taskId: ${u.taskId}`);a.add(u.taskId)}for(let{directoryName:u,file:c,task:p}of s){let R=Tn.basename(ti(o,p.taskId));if(u!==R)throw new Error(`Runtime agent task directory does not match taskId hash: ${c}`)}return s.map(({task:u})=>u)},async saveTask(s){xo(Tn.join(ti(o,s.taskId),"snapshot.json"),s)},async loadEvents(s){return Hm(Tn.join(ti(o,s),"events.jsonl"),s)},async appendEvent(s){let a=Tn.join(ti(o,s.taskId),"events.jsonl");Dn.mkdirSync(Tn.dirname(a),{recursive:!0}),Dn.appendFileSync(a,`${JSON.stringify(s)}
|
|
6
|
+
`,{encoding:"utf8",mode:384})}}}i(Rd,"createRuntimeAgentExecutorPlaneStore");import{createHash as Ad,randomUUID as wr}from"node:crypto";import Ht from"node:fs";import{mkdir as Td,readFile as Dd}from"node:fs/promises";import ze from"node:path";var Md=["read","grep","glob"],_d=["write","edit","multi_edit","insert_after_anchor"],Od=["mcp_search","mcp_describe","mcp_call","mcp_read_resource","mcp_get_prompt"],$m=["list_dispatchable_agents","spawn_agent","send_message","followup_task","wait_agent","interrupt_agent","list_agents","agent_output"],qm=new Set([...Md,..._d]),Bm=new Set([".ssh",".aws",".azure",".gnupg",".kodax",".agents"]),Km=new Set([".env",".npmrc",".pypirc","credentials","id_rsa","id_ed25519"]);function Ao(e){return Array.isArray(e)?e.map(Ao):e===null||typeof e!="object"?e:Object.fromEntries(Object.entries(e).sort(([n],[t])=>n.localeCompare(t)).map(([n,t])=>[n,Ao(t)]))}i(Ao,"canonicalValue");function ct(e){return Ad("sha256").update(JSON.stringify(Ao(e))).digest("hex")}i(ct,"stableHash");function Nd(e){let n=Ad("sha256");for(let t of e)n.update(t);return n.digest("hex")}i(Nd,"hashParts");function ri(e,n){let t=ze.relative(ze.resolve(e),ze.resolve(n));return t===""||!t.startsWith("..")&&!ze.isAbsolute(t)}i(ri,"isInside");function To(e){if(!Ht.existsSync(e))return 0;let n=0;for(let t of Ht.readdirSync(e,{withFileTypes:!0})){let r=ze.join(e,t.name);t.isSymbolicLink()||(t.isDirectory()?n+=To(r):t.isFile()&&(n+=Ht.statSync(r).size))}return n}i(To,"directoryBytes");function hd(e){if(e!==void 0){if(!Number.isSafeInteger(e)||e<=0)throw new Error("Runtime workspace byte limit must be positive.");return e}}i(hd,"validateWorkspaceByteLimit");function Co(e){if(e.mode==="managed")return{mode:"managed"};if(!ze.isAbsolute(e.root))throw new Error("Fixed Runtime workspace root must be absolute.");return{mode:"fixed",root:ze.resolve(e.root)}}i(Co,"normalizedWorkspace");function Do(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(o=>{if(typeof o!="string"||o.trim().length===0||o.includes("*"))throw new Error(`${n} must contain exact names without wildcards.`);return o.trim()});if(new Set(r).size!==r.length)throw new Error(`${n} contains duplicates.`);return r.sort()}i(Do,"exactList");function wd(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,Do(r,`${n}.${t}`,!1)]}))}i(wd,"exactMap");function vd(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:Do(n.origins,"Runtime toolPolicy.network.origins").map(s=>{let a=new URL(s);if(!["http:","https:"].includes(a.protocol)||a.origin!==s)throw new Error("Runtime network authority must be an exact HTTP(S) origin.");return a.origin})},r=wd(e.skillScripts,"Runtime toolPolicy.skillScripts"),o=Object.values(r).reduce((s,a)=>s+a.length,0);if(e.process==="deny"!=(o===0))throw new Error("Runtime isolated process authority and skillScripts must be enabled together.");return{workspace:e.workspace,process:e.process,network:t,tools:Do(e.tools,"Runtime toolPolicy.tools"),mcp:wd(e.mcp,"Runtime toolPolicy.mcp"),skillScripts:r,subagents:e.subagents}}i(vd,"validatedToolPolicy");function Xm(e){return e==="project"?"workspace":e}i(Xm,"skillSource");function Um(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))}i(Um,"skillFiles");async function Wm(e){let n=[e.name,e.rawContent];for(let t of Um(e))n.push(t.relativePath,await Dd(t.path));return Nd(n)}i(Wm,"skillRevision");var ii=class{static{i(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.")}},Mo=class{constructor(n,t){this.formal=n;this.learned=t}formal;learned;static{i(this,"CompositeSkillRegistry")}get skills(){return new Map(this.list().map(n=>[n.name,n]))}get size(){return this.list().length}async discover(){}get(n){return this.formal.get(n)??this.learned.get(n)}has(n){return this.formal.has(n)||this.learned.has(n)}list(){let n=new Map(this.learned.list().map(t=>[t.name,t]));for(let t of this.formal.list())n.set(t.name,t);return[...n.values()]}listUserInvocable(){return this.list().filter(n=>n.userInvocable)}loadFull(n){return this.formal.has(n)?this.formal.loadFull(n):this.learned.loadFull(n)}invoke(n,t,r){return this.formal.has(n)?this.formal.invoke(n,t,r):this.learned.invoke(n,t,r)}async reload(){throw new Error("A bound Skill registry is immutable; create a new Runtime binding.")}};async function Ld(e){let n=e.workspace.mode==="fixed"?e.workspace.root:void 0,t=pa(n),r=t.userPaths.filter(a=>ze.basename(ze.dirname(a))===".agents"),o=n===void 0?void 0:await Fd({configHome:e.configHome,projectRoot:n,...e.bindingId===void 0?{}:{bindingId:e.bindingId},...e.ownerSessionRef===void 0?{}:{ownerSessionRef:e.ownerSessionRef}}),s=new so(n,{projectPaths:e.workspace.mode==="managed"?[]:t.projectPaths,userPaths:[ze.join(e.configHome,"skills"),...r],pluginPaths:t.pluginPaths,builtinPath:t.builtinPath,...o===void 0?{}:{learnedArea:o.discovery}});try{await s.discover()}catch(a){throw await lt(o,e.bindingId),a}try{let a=s.list(),c=e.selection===void 0||e.selection.includes("*")?a.filter(I=>I.source!=="project"&&!I.disableModelInvocation):e.selection.map(I=>{let y=s.get(I);if(!y)throw new Error(`Markdown Agent requires unknown Skill "${I}".`);if(y.disableModelInvocation)throw new Error(`Skill "${I}" disables model invocation.`);return y}),p=[];for(let I of c.sort((y,x)=>y.name.localeCompare(x.name))){let y=await Wm(await s.loadFull(I.name));p.push({name:I.name,source:Xm(I.source),revision:y})}let R={registry:new ii(s,c),refs:p,revision:ct(p),protectedFormalSkillNames:a.filter(I=>I.source!=="learned").map(I=>I.name),...o===void 0?{}:{learnedSkills:{stores:o.stores,storeByCapabilityId:o.storeByCapabilityId,discovery:o.discovery}}};return await jt(o,e.bindingId),R}catch(a){throw await jt(o,e.bindingId),a}}i(Ld,"resolveSkills");async function Fd(e){try{return await Jm(e)}catch(n){we({source:"runtime:learned-skills",level:"warn",message:`Learned Area disabled for this binding: ${vr(n)}`});return}}i(Fd,"tryPrepareProjectLearnedSkills");async function lt(e,n){e===void 0||n===void 0||await Promise.all(e.stores.flatMap(({store:t,testingCapabilityIds:r})=>r.map(o=>io(t,o,n))))}i(lt,"releaseResolvedLearnedSkills");async function jt(e,n){e!==void 0&&await jd(e.stores,n)}i(jt,"safeReleaseResolvedLearnedSkills");async function jd(e,n){if(n===void 0)return;let t=await Promise.allSettled(e.flatMap(({store:r,testingCapabilityIds:o})=>o.map(s=>io(r,s,n))));for(let r of t)r.status==="rejected"&&we({source:"runtime:learned-skills",level:"warn",message:`Learned Skill binding release requires lease recovery: ${vr(r.reason)}`})}i(jd,"safeReleasePreparedStores");function vr(e){return e instanceof Error?e.message:String(e)}i(vr,"errorMessage");async function Jm(e){let n=`local:${e.configHome}`,t=fa(e.projectRoot)?.trim(),r=t===void 0?void 0:Da(t),o=`local:${ze.resolve(e.projectRoot).toLowerCase()}`,s=r??o,a=[...new Set([s,o])],u=a.map(x=>ha(e.configHome,{tenantId:n,projectId:x})),c=a.map(x=>Ra(e.configHome,{tenantId:n,projectId:x})),p=[u[0],...u.slice(1)],R=c.map((x,f)=>({store:new ya(x),scope:u[f],testingCapabilityIds:[]})),I={},y=new Map;try{await Promise.all(R.map(async({store:x})=>x.initialize())),await Sa(e.configHome,R[0].store,u[0]);for(let x of R)for(let f of await x.store.listCapabilities()){if(f.schemaVersion!==2||!zm(f.scope,x.scope)||y.has(f.capabilityId)||(y.set(f.capabilityId,x.store),f.lifecycle!=="testing"||e.bindingId===void 0||e.ownerSessionRef===void 0))continue;let C=await wa(x.store,f.capabilityId,{bindingId:e.bindingId,ownerSessionRef:e.ownerSessionRef});C!==void 0&&(I[f.capabilityId]=C.bindingId,x.testingCapabilityIds.push(f.capabilityId))}}catch(x){throw await jd(R,e.bindingId),x}return{stores:R,storeByCapabilityId:y,discovery:{rootDir:c[0],additionalRootDirs:c.slice(1),expectedScope:u[0],expectedScopes:p,testingBindings:I}}}i(Jm,"prepareProjectLearnedSkills");function zm(e,n){return e.configHomeHash===n.configHomeHash&&e.tenantHash===n.tenantHash&&e.projectHash===n.projectHash}i(zm,"sameLearnedScope");function Vm(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 o=new Set(t.network.mode==="allowlist"?t.network.origins:[]);if(n.networkOrigins.some(s=>!o.has(new URL(s).origin)))throw new Error(`Remote tool "${e}" requires a network origin outside toolPolicy.`)}i(Vm,"validateRemoteContract");function Sd(e){let n=new Set;e.policy.workspace!=="none"&&Md.forEach(s=>n.add(s)),e.policy.workspace==="write"&&_d.forEach(s=>n.add(s)),e.hasSkills&&n.add("skill"),e.hasSkillScripts&&n.add("run_skill_script"),Object.keys(e.policy.mcp).length>0&&Od.forEach(s=>n.add(s)),e.policy.subagents==="inherit"&&$m.forEach(s=>n.add(s));let t=new Map(fo().map(s=>[s.name,s])),r=new Map;for(let s of e.policy.tools){let a=t.get(s)?.remoteContract;if(!a)throw new Error(`Tool "${s}" has no Runtime remote contract.`);Vm(s,a,e.policy),r.set(s,a),n.add(s)}let o=new Map;for(let s of n){let a=t.get(s);if(!a)throw new Error(`Runtime tool is unavailable: ${s}.`);if(!r.has(s)&&a.source.kind!=="builtin")throw new Error(`Native Runtime tool "${s}" is shadowed by a non-builtin registration.`);o.set(s,a.registrationId)}if(e.declared!==void 0){let s=e.declared.filter(u=>!n.has(u));if(s.length>0)throw new Error(`Markdown Agent tools are denied by remote policy: ${s.join(", ")}.`);let a=[...new Set(e.declared)].sort();return{tools:a,contracts:r,registrations:new Map(a.map(u=>[u,o.get(u)]))}}return{tools:[...n].sort(),contracts:r,registrations:o}}i(Sd,"resolveToolSurface");function Id(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
|
+
`)}i(Id,"skillsPrompt");function bd(e,n){let r=ze.relative(n,e).split(ze.sep).map(o=>o.toLowerCase());return r.some(o=>Bm.has(o))||r.some(o=>Km.has(o)||o.startsWith(".env."))}i(bd,"sensitivePath");function Gm(e){let n=e;for(;!Ht.existsSync(n);){let t=ze.dirname(n);if(t===n)throw new Error("Tool path has no existing parent.");n=t}return n}i(Gm,"nearestExistingPath");function Ym(e,n){let t=Ht.realpathSync(e),r=Gm(n),o=Ht.realpathSync(r);if(!ri(t,o))throw new Error("Tool path escapes the bound workspace through a link.");let s=ze.resolve(o,ze.relative(r,n));if(!ri(t,s))throw new Error("Tool path escapes the bound workspace through a link.");return{root:t,candidate:s}}i(Ym,"resolveRealToolPath");function Sr(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=ze.resolve(e,n);if(!ri(e,t))throw new Error("Tool path escapes the bound workspace.");let r=Ym(e,t);if(bd(t,e)||bd(r.candidate,r.root))throw new Error("Secret-bearing paths are unavailable to remote Agents.");return t}i(Sr,"resolveToolPath");function kd(){return{beforeToolExecute:i(async()=>!0,"beforeToolExecute")}}i(kd,"remoteRunEvents");function Qm(e,n,t){if(!Od.includes(e))return;if(e==="mcp_search"){let p=n.server;if(typeof p!="string"||t.mcp[p]===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 o=/^mcp:([^:]+):(tool|resource|prompt):(.+)$/.exec(r);if(!o)throw new Error("MCP capability id is invalid.");let[,s,a,u]=o,c=t.mcp[s??""]??[];if(a==="tool"&&!c.includes(u??""))throw new Error("MCP tool is not admitted by the remote policy.");if(a!=="tool"&&!c.includes(u??""))throw new Error("MCP capability is not admitted by the remote policy.")}i(Qm,"authorizeMcp");function Zm(e){return{async resolveReadablePath(n){return Sr(e,n)??e},async stageOutput(n){let t=wr(),r=ze.basename(n).replace(/[^A-Za-z0-9._-]/g,"_")||"output",o=ze.join(e,".kodax-a2a-staging",`${t}-${r}`);return await Td(ze.dirname(o),{recursive:!0}),{stagingId:t,path:Sr(e,o)??o}}}}i(Zm,"workspaceBroker");function Ed(e,n){return{kind:"tool",name:`runtime-remote-policy:${e.bindingId}`,async beforeTool(t,r){try{if(e.workspaceByteLimit!==void 0&&To(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(fo().find(a=>a.name===t.name)?.registrationId!==e.toolRegistrations.get(t.name))throw new Error("Tool registration changed after the Runtime binding was prepared.");if(qm.has(t.name)){let a=(t.name==="grep"||t.name==="glob","path");Sr(n,t.input[a])}Qm(t.name,t.input,e.toolPolicy);let s=e.remoteContracts.get(t.name);if(s){let a=await s.authorizeCall(t.input,{workspaceAccess:e.toolPolicy.workspace,allowedNetworkOrigins:e.toolPolicy.network.mode==="allowlist"?e.toolPolicy.network.origins:[],workspace:Zm(n),signal:r.abortSignal??new AbortController().signal});if(!a.allowed)throw new Error(a.reason);return{action:"rewrite",payload:{...t,input:a.input}}}return{action:"allow"}}catch(o){return{action:"block",reason:o instanceof Error?o.message:String(o)}}},async afterTool(){return e.workspaceByteLimit!==void 0&&To(n)>e.workspaceByteLimit?{action:"block",reason:"Remote workspace byte quota exceeded."}:{action:"allow"}}}}i(Ed,"createToolGuardrail");async function Pd(e,n,t){let r=await e.sessions.load(t),o=r.workspaceRoot??r.gitRoot;if(!o)throw new Error("Remote Runtime session has no bound workspace.");if(n.workspace.mode==="fixed"&&ze.resolve(o)!==n.workspace.root)throw new Error("Runtime session workspace does not match the fixed binding.");if(n.workspace.mode==="managed"&&!ri(e.managedWorkspaceRoot,o))throw new Error("Runtime session workspace is outside the managed A2A root.");return ze.resolve(o)}i(Pd,"requiredWorkspaceRoot");async function xd(e,n,t,r){let o=t.mode==="fixed"?t.root:e.managedWorkspaceRoot,s=await Ma({cwd:o,configHome:e.configHome,userOnly:!0}),a=s.loaded.find(p=>p.name===n.name&&p.source==="markdown:user"),u=s.scope.resolve(n.name);if(!a||!u||u.source!=="markdown:user"){await s.dispose();let p=s.failed.find(R=>ze.basename(R.path,".md")===n.name);throw new Error(p?.reason??`User Markdown Agent not found: ${n.name}`)}let c=Nd([await Dd(a.path)]);try{let p=await Ld({configHome:e.configHome,workspace:t,selection:a.requestedSkills,...r===void 0?{}:r});return{scope:s.scope,loaded:a,configurationRevision:c,skills:p}}catch(p){throw await s.dispose(),p}}i(xd,"localAgentResources");function Cd(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}}i(Cd,"resolvedLocal");function Hd(e){let n=new Map,t=new Map,r=i(c=>{let p=n.get(c);if(!p)throw new Error("Runtime Agent owner session is not active.");return p},"requireOwner"),o=i((c,p)=>{let R=t.get(p);if(!R||R.ownerSessionId!==c)throw new Error("Runtime Agent binding not found.");return R},"requireBinding"),s=i(async c=>{t.delete(c.bindingId),n.get(c.ownerSessionId)?.delete(c.bindingId),c.scope?.dispose(),await c.skillScriptRunner?.dispose(),await jt(c.learnedSkills,c.bindingId)},"release"),a=i(async(c,p)=>{let R=c.skillRegistry.list().filter(l=>l.source!=="learned"),I=new ii(c.skillRegistry,R),y={context:{configHome:e.configHome,protectedFormalSkillNames:c.protectedFormalSkillNames},registry:I,skills:c.effectiveSkills.filter(l=>l.source!=="learned"),release:i(async()=>{},"release")};if(c.learnedSkills===void 0||c.workspace.mode!=="fixed")return y;let x=`root_${wr()}`,f=await Fd({configHome:e.configHome,projectRoot:c.workspace.root,bindingId:x,ownerSessionRef:p});if(f===void 0)return y;let C=new so(void 0,{projectPaths:[],userPaths:[],pluginPaths:[],builtinPath:ze.join(f.discovery.rootDir,".no-formal-skills"),learnedArea:f.discovery});try{await Promise.all(f.stores.map(({store:l})=>oo(l,{sessionId:p,bindingId:x}))),await C.discover()}catch(l){return await jt(f,x),we({source:"runtime:learned-skills",level:"warn",message:`Learned Area disabled for this root run: ${vr(l)}`}),y}let m=new Mo(I,C);try{for(let l of m.list()){if(l.source!=="learned"||l.learned===void 0)continue;let v=f.storeByCapabilityId.get(l.learned.capabilityId);v!==void 0&&await Ia(v,{sessionId:p,bindingId:x,capabilityId:l.learned.capabilityId,revision:l.learned.revision,fingerprint:l.learned.fingerprint})}}catch(l){return await jt(f,x),we({source:"runtime:learned-skills",level:"warn",message:`Learned usage receipts disabled for this root run: ${vr(l)}`}),y}let k=m.list().filter(l=>l.source==="learned"&&l.learned!==void 0).map(l=>({name:l.name,source:"learned",revision:l.learned.fingerprint}));return{context:{configHome:e.configHome,protectedFormalSkillNames:c.protectedFormalSkillNames,learnedSkillBindingId:x,admitLearnedSkillInvocation:i(async l=>{let v=f.storeByCapabilityId.get(l.capabilityId);if(v===void 0)throw new Error(`Learned Skill capability is outside this project binding: ${l.capabilityId}`);return{invocationId:(await ba(v,{sessionId:p,ownerSessionRef:p,capabilityId:l.capabilityId,expectedRevision:l.revision,expectedFingerprint:l.fingerprint,bindingId:x})).invocationId}},"admitLearnedSkillInvocation"),completeLearnedSkillOutcomes:i(async l=>{await Promise.all(f.stores.map(({store:v})=>ka(v,{...l,sessionId:p,bindingId:x})))},"completeLearnedSkillOutcomes")},registry:m,skills:[...c.effectiveSkills.filter(l=>l.source!=="learned"),...k],release:i(async()=>{try{await Promise.all(f.stores.map(({store:l})=>oo(l,{sessionId:p,bindingId:x})))}catch(l){we({source:"runtime:learned-skills",level:"warn",message:`Learned Skill outcome reconciliation failed: ${vr(l)}`})}finally{await jt(f,x)}},"release")}},"prepareLearnedSkillRun"),u=i(async(c,p)=>{try{let R=await p();return{...R,result:R.result.finally(c.release)}}catch(R){throw await c.release(),R}},"withLearnedSkillRelease");return{async resolveLocal(c){let p=Co(c.workspace),R=await xd(e,c.ref,p);try{return Cd(c.ref,R)}finally{R.scope.dispose()}},async openOwnerSession(){let c=wr();return n.set(c,new Set),{ownerSessionId:c}},async bindDefault(c){let p=r(c.ownerSessionId),R=Co(c.workspace),I=vd(c.toolPolicy),y=hd(c.workspaceByteLimit),x=wr(),f=await Ld({configHome:e.configHome,workspace:R,bindingId:x,ownerSessionRef:c.ownerSessionId}),C=Object.keys(I.skillScripts).length>0,m=Sd({policy:I,hasSkills:f.refs.length>0,hasSkillScripts:C}),k=C?await e.createSkillScriptRunner?.({registry:f.registry,admissions:I.skillScripts,workspaceAccess:I.workspace,network:I.network,workspaceByteLimit:y}):void 0;if(C&&!k)throw await lt(f.learnedSkills,x),new Error("Runtime isolated Skill script backend is unavailable.");let l=ct(I),v=ct(R),h=ct({kind:"runtime-default",profileId:c.profileId,toolPolicyRevision:l,workspaceBindingRevision:v,skillSetRevision:f.revision,provider:e.defaultProvider,model:e.defaultModel,tools:m.tools,workspaceByteLimit:y});if(c.expectedExecutionPolicyRevision&&c.expectedExecutionPolicyRevision!==h)throw await k?.dispose(),await lt(f.learnedSkills,x),new Error("Runtime default execution policy revision changed.");let P={ownerSessionId:c.ownerSessionId,bindingId:x,kind:"runtime-default",executionPolicyRevision:h,toolPolicyRevision:l,workspaceBindingRevision:v,workspace:R,toolPolicy:I,effectiveTools:m.tools,effectiveSkills:f.refs,skillSetRevision:f.revision,skillRegistry:f.registry,protectedFormalSkillNames:f.protectedFormalSkillNames,skillScriptRunner:k,remoteContracts:m.contracts,toolRegistrations:m.registrations,workspaceByteLimit:y,...f.learnedSkills===void 0?{}:{learnedSkills:f.learnedSkills}};return t.set(x,P),p.add(x),{ownerSessionId:c.ownerSessionId,bindingId:x,executionPolicyRevision:h,toolPolicyRevision:l,workspaceBindingRevision:v,skillSetRevision:f.revision,effectiveSkills:f.refs,effectiveTools:m.tools}},async startDefault(c){let p=o(c.ownerSessionId,c.bindingId);if(p.kind!=="runtime-default")throw new Error("Runtime Agent binding kind mismatch.");if(p.executionPolicyRevision!==c.expectedExecutionPolicyRevision)throw new Error("Runtime default execution policy revision changed.");let R=await Pd(e,p,c.sessionId),I=await a(p,c.sessionId);return u(I,()=>e.runs.start({sessionId:c.sessionId,input:c.input,permissionBroker:c.permissionBroker,agentContext:c.agentContext,options:{context:{executionCwd:R,gitRoot:R,managedTaskWorkspaceDir:R,...I.context,toolVisibilityPolicy:i(y=>p.effectiveTools.includes(y.name),"toolVisibilityPolicy"),skillRegistry:I.registry,skillScriptRunner:p.skillScriptRunner,assertReadablePath:i(y=>{Sr(R,y)},"assertReadablePath"),skillsPrompt:Id(I.skills,I.registry)},skillDynamicContext:{disable:!0},guardrails:[Ed(p,R)],events:kd()}}))},async bindLocal(c){let p=r(c.ownerSessionId),R=Co(c.workspace),I=vd(c.toolPolicy),y=hd(c.workspaceByteLimit),x=wr(),f=await xd(e,c.ref,R,{bindingId:x,ownerSessionRef:c.ownerSessionId}),C=Cd(c.ref,f);if(c.expectedConfigurationRevision&&c.expectedConfigurationRevision!==C.configurationRevision)throw f.scope.dispose(),await lt(f.skills.learnedSkills,x),new Error("User Markdown Agent configuration revision changed.");let m=Sd({declared:f.loaded.effectiveTools,policy:I,hasSkills:f.skills.refs.length>0,hasSkillScripts:Object.keys(I.skillScripts).length>0}),k=Object.keys(I.skillScripts).length>0,l=k?await e.createSkillScriptRunner?.({registry:f.skills.registry,admissions:I.skillScripts,workspaceAccess:I.workspace,network:I.network,workspaceByteLimit:y}):void 0;if(k&&!l)throw f.scope.dispose(),await lt(f.skills.learnedSkills,x),new Error("Runtime isolated Skill script backend is unavailable.");let v=ct(I),h=ct(R),P=ct({kind:"local-agent",profileId:c.profileId,configurationRevision:C.configurationRevision,toolPolicyRevision:v,workspaceBindingRevision:h,skillSetRevision:f.skills.revision,tools:m.tools,workspaceByteLimit:y});if(c.expectedExecutionPolicyRevision&&c.expectedExecutionPolicyRevision!==P)throw await l?.dispose(),f.scope.dispose(),await lt(f.skills.learnedSkills,x),new Error("Local Agent execution policy revision changed.");let T=f.scope.resolve(c.ref.name)?.agent;if(!T)throw await l?.dispose(),f.scope.dispose(),await lt(f.skills.learnedSkills,x),new Error(`User Markdown Agent not found: ${c.ref.name}`);let _={ownerSessionId:c.ownerSessionId,bindingId:x,kind:"local-agent",executionPolicyRevision:P,toolPolicyRevision:v,workspaceBindingRevision:h,workspace:R,toolPolicy:I,effectiveTools:m.tools,effectiveSkills:f.skills.refs,skillSetRevision:f.skills.revision,skillRegistry:f.skills.registry,protectedFormalSkillNames:f.skills.protectedFormalSkillNames,skillScriptRunner:l,remoteContracts:m.contracts,toolRegistrations:m.registrations,...f.skills.learnedSkills===void 0?{}:{learnedSkills:f.skills.learnedSkills},workspaceByteLimit:y,scope:f.scope,loadedAgent:f.loaded,agent:T,configurationRevision:f.configurationRevision};return t.set(x,_),p.add(x),{...C,ownerSessionId:c.ownerSessionId,bindingId:x,executionPolicyRevision:P,toolPolicyRevision:v,workspaceBindingRevision:h,effectiveTools:m.tools}},async startLocal(c){let p=o(c.ownerSessionId,c.bindingId);if(p.kind!=="local-agent"||!p.agent||!p.scope)throw new Error("Runtime Agent binding kind mismatch.");let R=p.agent,I=p.scope;if(p.configurationRevision!==c.expectedConfigurationRevision)throw new Error("User Markdown Agent configuration revision changed.");if(p.executionPolicyRevision!==c.expectedExecutionPolicyRevision)throw new Error("Local Agent execution policy revision changed.");let y=await Pd(e,p,c.sessionId),x=await a(p,c.sessionId),f=typeof R.instructions=="string"?R.instructions:R.instructions({});return u(x,()=>e.runs.start({sessionId:c.sessionId,input:c.input,permissionBroker:c.permissionBroker,agentContext:c.agentContext,options:{...R.provider?{provider:R.provider}:{},...R.model?{modelOverride:R.model}:{},...R.effort?{effort:R.effort}:{},context:{executionCwd:y,gitRoot:y,managedTaskWorkspaceDir:y,...x.context,systemPromptOverride:f,agentScope:I,toolVisibilityPolicy:i(C=>p.effectiveTools.includes(C.name),"toolVisibilityPolicy"),skillRegistry:x.registry,skillScriptRunner:p.skillScriptRunner,assertReadablePath:i(C=>{Sr(y,C)},"assertReadablePath"),skillsPrompt:Id(x.skills,x.registry)},skillDynamicContext:{disable:!0},guardrails:[Ed(p,y)],events:kd()}}))},async prepareWorkspace(c){let p=o(c.ownerSessionId,c.bindingId);if(p.workspace.mode==="fixed")return p.workspace.root;if(!/^[a-f0-9]{32,64}$/.test(c.contextKey))throw new Error("Managed Runtime workspace context key is invalid.");let R=ze.join(e.managedWorkspaceRoot,"contexts",c.contextKey);return await Td(R,{recursive:!0}),R},async releaseBinding(c){r(c.ownerSessionId),await s(o(c.ownerSessionId,c.bindingId))},async closeOwnerSession(c){let p=r(c);for(let R of[...p])await s(o(c,R));n.delete(c)}}}i(Hd,"createRuntimeAgentBindingService");import{randomUUID as ef}from"node:crypto";import*as si from"node:net";var Bd="127.0.0.1",nf=/^[a-f0-9]{32}$/,tf=500,rf=128,of=16;async function Kd(e){let n=ef().replace(/-/g,""),t=new Set,r=si.createServer(a=>{t.add(a),a.on("close",()=>t.delete(a)),a.on("error",()=>a.destroy()),a.end(`${n}
|
|
10
|
+
`)});r.on("error",e.onError),await df(r);let o=r.address();if(o===null||typeof o=="string")throw await qd(r),new Error("Runtime Actor owner liveness did not bind a TCP endpoint.");r.unref();let s;return{id:n,port:o.port,close(){if(s)return s;let a=(async()=>{for(let u of t)u.destroy();t.clear(),await qd(r)})();return s=a,a.catch(()=>{s===a&&(s=void 0)}),a}}}i(Kd,"createRuntimeActorOwnerLiveness");async function _o(e){return await Ir(e)!=="dead"}i(_o,"isRuntimeActorOwnerAlive");async function Ir(e){if(sf(e.pid))return"dead";if(e.livenessId===void 0||e.livenessPort===void 0||!nf.test(e.livenessId)||!Number.isSafeInteger(e.livenessPort)||e.livenessPort<=0||e.livenessPort>65535)return"unknown";try{return await af(e.livenessPort,e.livenessId)?"alive":"dead"}catch(n){return oi(n)==="ECONNREFUSED"?"dead":"unknown"}}i(Ir,"inspectRuntimeActorOwner");function $d(e){return[e.ownerId,e.runtimeId,e.pid,e.startedAt,e.livenessId??"",e.livenessPort??""].join("\0")}i($d,"actorOwnerProbeKey");async function Xd(e){let n=new Map;for(let u of e)n.set($d(u),u);let t=[...n.entries()],r=new Map,o=0,s=i(async()=>{for(;o<t.length;){let u=t[o];if(o+=1,u===void 0)return;r.set(u[0],await Ir(u[1]))}},"worker"),a=Math.min(of,t.length);return await Promise.all(Array.from({length:a},()=>s())),e.map(u=>r.get($d(u))??"unknown")}i(Xd,"inspectRuntimeActorOwners");function sf(e){try{return process.kill(e,0),!1}catch(n){return oi(n)==="ESRCH"}}i(sf,"isPidDefinitelyDead");function af(e,n){return new Promise((t,r)=>{let o=si.createConnection({host:Bd,port:e}),s="",a=!1,u=setTimeout(()=>p(void 0),tf);u.unref?.();let c=i(()=>{clearTimeout(u),o.off("data",R),o.off("end",I),o.off("error",y),o.destroy()},"cleanup"),p=i((x,f)=>{a||(a=!0,c(),f?r(f):x===void 0?r(new Error("Timed out probing Runtime Actor owner liveness.")):t(x))},"settle"),R=i(x=>{s+=x.toString("utf8"),Buffer.byteLength(s)>rf&&p(!1)},"onData"),I=i(()=>p(s.trim()===n),"onEnd"),y=i(x=>p(void 0,x),"onError");o.on("data",R),o.once("end",I),o.once("error",y)})}i(af,"probe");function df(e){return new Promise((n,t)=>{let r=i(()=>{e.off("listening",o),e.off("error",s)},"cleanup"),o=i(()=>{r(),n()},"onListening"),s=i(a=>{r(),t(a)},"onError");e.once("listening",o),e.once("error",s),e.listen({host:Bd,port:0,exclusive:!0})})}i(df,"listen");function qd(e){return new Promise((n,t)=>{try{e.close(r=>{if(r&&oi(r)!=="ERR_SERVER_NOT_RUNNING"){t(r);return}n()})}catch(r){if(oi(r)==="ERR_SERVER_NOT_RUNNING"){n();return}t(r)}})}i(qd,"closeServer");function oi(e){return typeof e=="object"&&e!==null&&"code"in e&&typeof e.code=="string"?e.code:void 0}i(oi,"errorCode");import{createHash as uf}from"node:crypto";function Jd(e){let n=e.userSkillsRoot===void 0?[]:[va({learnedAreaRoot:e.rootDir,learnedAreaKind:"global",userSkillsRoot:e.userSkillsRoot})],t=ro({rootDir:e.rootDir,clientIdentity:Ud(e.defaultClientIdentity),proposalStores:e.proposalStores,actionDrivers:n}),r,o=i(()=>(r??=t.initialize(),r),"ensureReady"),s=i(u=>{let c=Ud(u),p=ro({rootDir:e.rootDir,clientIdentity:c,proposalStores:e.proposalStores,actionDrivers:n});return Wd(p,o)},"forClient"),a=Wd(t,o);return Object.assign(a,{forClient:s})}i(Jd,"createRuntimeLearningOwner");function Wn(e,n){let t=e;return typeof t.forClient=="function"?t.forClient(n):e}i(Wn,"bindRuntimeLearningClient");function Ud(e){return`client_${uf("sha256").update(e).digest("hex").slice(0,32)}`}i(Ud,"learningClientFileKey");function Wd(e,n){let t,r=i(()=>(t??=n?.()??e.initialize(),t),"ensureReady");return{list:i(async o=>(await r(),e.list(o)),"list"),get:i(async o=>(await r(),e.get(o)),"get"),getSnapshot:i(async()=>(await r(),e.getSnapshot()),"getSnapshot"),events:i(async o=>(await r(),e.events(o)),"events"),subscribe:i(o=>cf(r(),e,o),"subscribe"),acknowledge:i(async o=>{await r(),await e.acknowledge(o)},"acknowledge"),snooze:i(async(o,s)=>{await r(),await e.snooze(o,s)},"snooze"),reject:i(async o=>{await r(),await $t(e,o,s=>e.reject(o,s))},"reject"),disable:i(async o=>{await r(),await $t(e,o,s=>e.disable(o,s))},"disable"),rollback:i(async o=>{await r(),await $t(e,o,s=>e.rollback(o,s))},"rollback"),promote:i(async(o,s)=>{await r(),await $t(e,o,a=>e.promote(o,s,a))},"promote"),review:i(async o=>{await r(),await $t(e,o,s=>e.review(o,s))},"review"),trust:i(async o=>{await r(),await $t(e,o,s=>e.trust(o,s))},"trust")}}i(Wd,"createInitializedFacade");async function $t(e,n,t){let r=await e.get(n);await t({authority:"explicit_user",expectedRevision:r.revision,...r.schemaVersion===2?{expectedFingerprint:r.artifact.fingerprint}:{}})}i($t,"withExplicitUserAuthority");function cf(e,n,t){return{[Symbol.asyncIterator](){let r=!1,o,s=e.then(()=>{if(!r)return o=n.subscribe(t)[Symbol.asyncIterator](),o});return{async next(){let a=await s;return r||!a?{done:!0,value:void 0}:a.next()},async return(){return r=!0,o?.return?.()??{done:!0,value:void 0}}}}}}i(cf,"subscribeWhenReady");import{randomUUID as ci}from"node:crypto";var lf=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.sandbox","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","provider.cache.diagnostics","repo_intelligence.trace","todo.updated","todo.warning","sidecar.message","run.completed","run.failed","run.cancelled","run.interrupted","artifact.created","config.effective","runtime.warning"]),mf=new Set(["run.queued","run.started","run.updated","run.completed","run.failed","run.cancelled","run.interrupted"]);function Oo(e){if(!Ae(e))return qt("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"||!lf.has(e.type))return qt("Runtime event envelope is malformed or has an unknown type.");if((e.type==="assistant.delta"||e.type==="thinking.delta")&&(!Ae(e.payload)||typeof e.payload.text!="string"))return qt(`${e.type} requires a string text payload.`);if(mf.has(e.type)&&!hf(e.payload))return qt(`${e.type} requires a RuntimeRunStatus payload.`);let n=pf(e.type,e.payload);if(n!==void 0)return qt(`${e.type} ${n}`);let t=ff(e.cursor);return t===void 0||t.sessionId!==e.sessionId||t.seq!==e.seq?qt("Runtime event cursor does not match its Session envelope."):{ok:!0,event:{id:e.id,seq:e.seq,cursor:t,time:e.time,sessionId:e.sessionId,runId:e.runId,...typeof e.turnId=="string"?{turnId:e.turnId}:{},type:e.type,payload:e.payload}}}i(Oo,"parseRuntimeEvent");function ff(e){if(!(!Ae(e)||typeof e.sessionId!="string"||e.sessionId.length===0||typeof e.journalEpoch!="string"||e.journalEpoch.length===0||!Number.isSafeInteger(e.seq)||typeof e.seq!="number"||e.seq<0))return{sessionId:e.sessionId,journalEpoch:e.journalEpoch,seq:e.seq}}i(ff,"parseRuntimeSessionCursor");function pf(e,n){if(e==="session.created")return $n(n,["id","title"])?void 0:"requires a RuntimeSession payload.";if(e==="session.loaded")return $n(n,["id","title"])||$n(n,["provider","sessionId"])?void 0:"requires a RuntimeSession or provider session payload.";if(e==="session.settings.updated")return Ae(n)&&typeof n.sessionId=="string"&&Number.isSafeInteger(n.revision)&&Ae(n.settings)&&Ae(n.patch)?void 0:"requires a session settings update payload.";if(e==="thinking.finished")return Ae(n)&&typeof n.thinking=="string"?void 0:"requires a string thinking payload.";if(e==="tool.started")return Ae(n)&&$n(n.tool,["id","name"])?void 0:"requires a tool descriptor payload.";if(e==="tool.progress")return Ae(n)&&($n(n.update,["id","message"])||typeof n.toolName=="string"&&typeof n.partialJson=="string")?void 0:"requires a tool progress payload.";if(e==="tool.sandbox"){let t=Ae(n)&&Ae(n.update)?n.update:void 0,r=t&&Ae(t.observation)?t.observation:void 0;return typeof t?.id=="string"&&r?.version===1&&(r.state==="not_selected"||r.state==="fallback"&&(r.reason==="not_ready"||r.reason==="prepare_failed"||r.reason==="backend_failed")&&r.execution==="normal_permission_policy"||r.state==="applied"&&(r.backend==="windows-restricted-user"||r.backend==="macos-seatbelt"||r.backend==="linux-bubblewrap"||r.backend==="unsupported")&&r.policyId==="kodax-workspace-shell-v1")?void 0:"requires a sandbox observation payload."}if(e==="tool.finished")return Ae(n)&&$n(n.result,["id","name","content"])?void 0:"requires a tool result payload.";if(e==="run.progress")return Rf(n);if(e==="run.input.queued")return Ae(n)&&wf(n.input,"queued")?void 0:"requires a queued interrupt input payload.";if(e==="run.input.delivered")return Ae(n)&&Array.isArray(n.inputs)&&n.inputs.length>0&&n.inputs.every(vf)?void 0:"requires an ordered interrupt input batch.";if(e==="context.compaction.finished")return Ae(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==="context.compaction.started")return Ae(n)&&(n.meta===void 0||Ae(n.meta))?void 0:"requires an optional activity meta payload.";if(e==="context.compaction.stats")return Ae(n)&&typeof n.tokensBefore=="number"&&typeof n.tokensAfter=="number"?void 0:"requires numeric token statistics.";if(e==="context.compaction.skipped")return Ae(n)&&Vd(n.reason)&&typeof n.currentTokens=="number"&&typeof n.contextWindow=="number"&&typeof n.triggerPercent=="number"&&typeof n.cooldownTurnsRemaining=="number"&&typeof n.lowSavingsStreak=="number"&&br(n.compactableTokens)&&br(n.effectiveTriggerTokens)&&br(n.consecutiveFailures)&&br(n.circuitBreakerLimit)&&br(n.rearmAtTokens)&&zd(n.circuitBreakerState)?void 0:"requires a structured skip reason.";if(e==="context.compaction.ended")return!Ae(n)||n.meta!==void 0&&!Ae(n.meta)?"requires a compaction lifecycle payload.":n.outcome===void 0?n.reason===void 0&&n.failurePhase===void 0&&n.currentTokens===void 0&&n.compactableTokens===void 0&&n.consecutiveFailures===void 0&&n.circuitBreakerLimit===void 0&&n.circuitBreakerState===void 0&&n.cooldownTurnsRemaining===void 0?void 0:"requires a structured compaction outcome.":typeof n.currentTokens=="number"&&typeof n.compactableTokens=="number"&&typeof n.consecutiveFailures=="number"&&typeof n.circuitBreakerLimit=="number"&&zd(n.circuitBreakerState)&&n.circuitBreakerState!==void 0&&typeof n.cooldownTurnsRemaining=="number"&&yf(n)?void 0:"requires a structured compaction outcome.";if(e==="todo.updated")return Ae(n)&&Array.isArray(n.items)?void 0:"requires an items array payload.";if(e==="user_input.requested"){let t=Ae(n)&&$n(n,["id","sessionId","runId","kind","createdAt","expiresAt"])&&Number.isSafeInteger(n.revision),r=Ae(n)&&$n(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 Ae(n)&&typeof n.requestId=="string"?void 0:"requires a requestId payload.";if(e==="permission.requested")return $n(n,["id","sessionId","runId","toolName","createdAt"])?void 0:"requires a RuntimePermissionRequest payload.";if(e==="permission.grant.changed")return Ae(n)&&(n.action==="created"||n.action==="revoked"||n.action==="expired")&&Ae(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 $n(n,["sessionId","turnId"])?void 0:"requires a turn payload.";if(e==="workflow.started"||e==="workflow.updated"||e==="workflow.finished")return Ae(n)?void 0:"requires a workflow event payload.";if(e==="context.budget.snapshot"||e==="tool.exposure.planned"||e==="provider.cache.diagnostics")return Ae(n)?void 0:"requires an object payload.";if(e==="runtime.warning")return Ae(n)&&typeof n.message=="string"?void 0:"requires a warning message payload."}i(pf,"validateKnownRuntimeEventPayload");function Vd(e){return e==="low_savings_cooldown"||e==="covered_context_unchanged"||e==="compactable_below_threshold"||e==="no_compactable_prefix"||e==="circuit_breaker_cooldown"}i(Vd,"isCompactionSkipReason");function gf(e){return e==="summary_generation_failed"||e==="persistence_failed"||e==="context_capacity_exceeded"||e==="post_processing_failed"}i(gf,"isCompactionFailureReason");function yf(e){return e.outcome==="compacted"?e.reason===void 0&&e.failurePhase===void 0:e.outcome==="skipped"?Vd(e.reason)&&e.failurePhase===void 0:e.outcome!=="failed"||!gf(e.reason)?!1:e.reason==="summary_generation_failed"?e.failurePhase==="summary_generation":e.reason==="persistence_failed"?e.failurePhase==="persistence":e.reason==="post_processing_failed"?e.failurePhase==="post_processing":e.failurePhase===void 0}i(yf,"isCompactionEndOutcome");function br(e){return e===void 0||typeof e=="number"}i(br,"isOptionalNumber");function zd(e){return e===void 0||e==="closed"||e==="open"||e==="half_open"}i(zd,"isOptionalCircuitBreakerState");function Rf(e){return!Ae(e)||typeof e.kind!="string"?"requires a discriminated progress payload.":e.kind==="managed_task_status"?Ae(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"?Ae(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."}i(Rf,"validateRunProgressPayload");function hf(e){return Ae(e)&&typeof e.runId=="string"&&typeof e.sessionId=="string"&&typeof e.startedAt=="string"&&typeof e.provider=="string"&&typeof e.phase=="string"}i(hf,"isRuntimeRunStatusPayload");function wf(e,n){return Ae(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")}i(wf,"isRuntimeInterruptInputStatus");function vf(e){return Ae(e)&&typeof e.inputId=="string"&&typeof e.afterRunId=="string"&&typeof e.queuedAt=="string"&&typeof e.deliveredAt=="string"&&(e.entryId===void 0||typeof e.entryId=="string"&&e.entryId.length>0)&&Gd(e.input)}i(vf,"isDeliveredInterruptInput");function Gd(e){return Array.isArray(e)?e.length>0&&e.every(Gd):!Ae(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"}i(Gd,"isRuntimeInput");function $n(e,n){return Ae(e)&&n.every(t=>typeof e[t]=="string")}i($n,"hasStrings");function qt(e){return{ok:!1,error:e}}i(qt,"invalid");function Ae(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}i(Ae,"isRecord");var tt="kodax-runtime-daemon",No=1,Bt=["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.status","session.transcript","session.transcript.page","session.transcript.entryChunk","session.transcript.search","session.conversation","session.conversation.page","session.conversation.entryChunk","session.observe","session.diagnostics","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","request.cancel","request.ack","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","provider.cache.diagnostics.get"],Sf=["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"],Qd=["agentTasks.list","agentTasks.start","agentTasks.get","agentTasks.events","agentTasks.wait","agentTasks.sendInput","agentTasks.cancel","agentTasks.reconcile"],If=new Set([...Bt,...Qd]),bf=new Set(Sf),kf=new Set(["credential.register","credential.revoke","credential.supply","host_tool.register","host_tool.revoke","host_tool.complete"]),Ef=new Set(["event","observation.invalidated","credential.request","host_tool.invoke","runtime.warning"]),Pf=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","resync_required","read_timeout","read_cancelled","data_changed","observation_invalidated","runtime_changed","data_corrupt","version_incompatible","credential_unavailable","host_tool_unavailable","host_tool_unknown","internal_error"]);function Kt(e,n,t,r){return{protocol:tt,version:1,kind:"request",id:e,method:n,...t!==void 0?{params:t}:{},...r!==void 0?{operation:r}:{}}}i(Kt,"createRuntimeDaemonRequest");function mt(e){return bf.has(e)}i(mt,"isRuntimeDaemonMutationMethod");function ai(e){return mt(e)||kf.has(e)}i(ai,"isRuntimeDaemonDrainingSensitiveMethod");function Zd(e){return Qd.includes(e)}i(Zd,"isRuntimeDaemonRetiredMethod");function di(e,n){return{protocol:tt,version:1,kind:"response",id:e,result:n===void 0?null:n}}i(di,"createRuntimeDaemonSuccessResponse");function rt(e,n){return{protocol:tt,version:1,kind:"error",...n!==void 0?{id:n}:{},error:e}}i(rt,"createRuntimeDaemonErrorResponse");function Xt(e,n){return{protocol:tt,version:1,kind:"notification",method:e,...n!==void 0?{params:n}:{}}}i(Xt,"createRuntimeDaemonNotification");function Lo(e){if(!ui(e))return!1;let n=e;return n.kind==="request"&&typeof n.id=="string"&&n.id.length>0&&typeof n.method=="string"&&If.has(n.method)&&(n.operation===void 0||Af(n.operation))}i(Lo,"isRuntimeDaemonRequest");function ft(e){if(!ui(e))return!1;let n=e;return n.kind==="response"&&typeof n.id=="string"&&n.id.length>0&&Object.prototype.hasOwnProperty.call(n,"result")}i(ft,"isRuntimeDaemonSuccessResponse");function Ut(e){if(!ui(e))return!1;let n=e;return n.kind==="error"&&(n.id===void 0||typeof n.id=="string")&&Cf(n.error)}i(Ut,"isRuntimeDaemonErrorResponse");function kr(e){if(!ui(e))return!1;let n=e;return n.kind==="notification"&&typeof n.method=="string"&&Ef.has(n.method)}i(kr,"isRuntimeDaemonNotification");function xf(e){return Lo(e)||ft(e)||Ut(e)||kr(e)}i(xf,"isRuntimeDaemonFrame");function eu(e){let n;try{n=JSON.parse(e)}catch{return Yd("Frame is not valid JSON.")}return xf(n)?n:Yd("Frame does not match the runtime daemon protocol.")}i(eu,"parseRuntimeDaemonFrame");function Yd(e){return rt({code:"invalid_frame",message:e})}i(Yd,"invalidFrame");function ui(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let n=e;return n.protocol===tt&&n.version===1}i(ui,"isFrameBase");function Cf(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let n=e;return typeof n.code=="string"&&Pf.has(n.code)&&typeof n.message=="string"}i(Cf,"isRuntimeDaemonError");function Af(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}i(Af,"isRuntimeDaemonOperationEnvelope");var uu=256,nu=1e3,gt=class extends Error{constructor(t,r){super(r);this.path=t;this.name="RuntimeTransportBoundaryError"}path;static{i(this,"RuntimeTransportBoundaryError")}code="invalid_transport_value"},Fo=class extends Error{static{i(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"}},li=class extends Error{static{i(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"}},Jt=class extends Error{static{i(this,"RuntimeRunLifecycleUpgradeRequiredError")}code="daemon_upgrade_required";capability="runLifecycleControl";requiredVersion=1;restartRequired=!0;constructor(){super("Runtime daemon does not advertise structured Stop receipts and protocol-level request cancellation. Upgrade KodaX and restart the daemon."),this.name="RuntimeRunLifecycleUpgradeRequiredError"}};function tu(e){let n=e.activeAgentTurns??e.activeAgentTasks??[];return{...e,activeAgentTurns:n,activeAgentTasks:n}}i(tu,"normalizeRuntimeDaemonPreflight");function mi(e){let n=i((m,k,l,v)=>e.transport.request(m,k,mt(m)?_f(e.journalEpoch,l):void 0,v),"request"),t=i((m,k,l,v)=>{try{if(cu(l),(l?.timeoutMs!==void 0||l?.signal!==void 0)&&!du(e.capabilities))throw new Jt}catch(q){return Promise.reject(q)}let h=new AbortController,P=!1,T=!1,_=i(q=>{if(!T){T=!0;try{v?.(q)}catch(te){we({source:"runtime.daemon.client",level:"warn",message:"Runtime daemon late-result cleanup failed.",detail:te})}}},"deliverLateResult"),N=n(m,{...k,...l?.timeoutMs!==void 0?{timeoutMs:l.timeoutMs}:{}},void 0,{signal:h.signal,...v!==void 0?{onLateResult:_}:{}});return v!==void 0&&N.then(q=>{P&&_(q)},()=>{}),Lf(N,l,q=>{P=!0,h.abort(q)})},"readRequest"),r=i(()=>{let m=e.capabilities?.actorControlPlane;if(typeof m!="object"||m===null||!("version"in m)||m.version!==1||!("methodNamespace"in m)||m.methodNamespace!=="agents")return new Fo},"actorControlPlaneError"),o=i(()=>{let m=e.capabilities?.runtimeAutoModeGuardrail;if(typeof m!="object"||m===null||!("version"in m)||typeof m.version!="number"||m.version<3||!("concretePermissionMatchers"in m)||m.concretePermissionMatchers!==!0||!("permissionGrantSuggestions"in m)||m.permissionGrantSuggestions!==!0)return new li},"concretePermissionScopeError"),s=new Map,a=new Map,u=new Map,c=new Set,p={state:"connected",connectionId:`connection_${ci().replace(/-/g,"")}`,runtimeEpoch:e.identity.runtimeId,...e.journalEpoch!==void 0?{journalEpoch:e.journalEpoch}:{},reconnectable:!1},R=e.transport.subscribeLifecycle?.(m=>{p={...m,runtimeEpoch:e.identity.runtimeId,...e.journalEpoch!==void 0?{journalEpoch:e.journalEpoch}:{}};for(let k of c)try{k(p)}catch(l){we({source:"runtime.daemon.client",level:"warn",message:"Runtime connection lifecycle listener failed.",detail:{errorType:l instanceof Error?l.name:typeof l}})}}),I=e.transport.subscribe(m=>{m.method==="credential.request"?Df(m.params,s,n).catch(()=>ru("credential request")):m.method==="host_tool.invoke"&&Mf(m.params,a,u,n).catch(()=>ru("host tool invocation"))}),y=!1,x=!1,f,C=i(()=>{if(x)return Promise.resolve();if(f)return f;let m=(async()=>{y||(R?.close(),I.close(),c.clear(),s.clear(),a.clear(),u.clear(),y=!0),await e.transport.close?.(),x=!0})();return f=m,m.finally(()=>{f===m&&(f=void 0)}).catch(()=>{}),m},"closeClient");return{identity:e.identity,capabilities:e.capabilities,...e.grantedScopes!==void 0?{grantedScopes:e.grantedScopes}:{},sessions:{create(m={}){let{operation:k,...l}=m;return n("session.create",l,k)},load(m,k){return t("session.load",{sessionId:m},k)},list(m){return n("session.list",m)},status(m){return n("session.status",{sessionId:m})},transcript(m,k){return t("session.transcript",{sessionId:m},k)},transcriptPage(m,k){return t("session.transcript.page",m,k)},transcriptEntryChunk(m,k){return t("session.transcript.entryChunk",m,k)},transcriptSearch(m,k){return t("session.transcript.search",m,k)},conversation(m,k){return t("session.conversation",{sessionId:m},k)},conversationPage(m,k){return t("session.conversation.page",m,k)},conversationEntryChunk(m,k){return t("session.conversation.entryChunk",m,k)},observe(m,k,l){return Nf(e.transport,t,m,k,l)},diagnostics(m){return t("session.diagnostics",{sessionId:m.sessionId,...m.runId!==void 0?{runId:m.runId}:{}},m).then(k=>({...k,sdkVersion:Qr,runtimeVersion:e.identity.version,daemonVersion:e.identity.mode==="daemon"?e.identity.version:null,runtimeMode:e.identity.mode}))},fork(m){return n("session.fork",m)},getSettings(m){return n("session.settings.get",{sessionId:m})},getSettingsVersioned(m){return n("session.settings.getVersioned",{sessionId:m})},getAutoModeStats(m){return n("session.autoMode.getStats",{sessionId:m})},async updateSettings(m,k){let l=await this.getSettingsVersioned(m);return(await this.updateSettingsVersioned(m,k,{expectedRevision:l.revision})).value},updateSettingsVersioned(m,k,l){return n("session.settings.updateVersioned",{sessionId:m,patch:k,expectedRevision:l.expectedRevision},l)},appendNotice(m){return n("session.notice.append",m)},rewind(m){return n("session.rewind",m)},setActiveEntry(m){return n("session.active_entry.set",m)},compact(m){return n("session.compact",m)},async archive(m){await n("session.archive",{sessionId:m})},async unarchive(m){await n("session.unarchive",{sessionId:m})},async delete(m){await n("session.delete",{sessionId:m})}},runs:{async start(m){let{operation:k,...l}=m;Wt(l,"run.start");let v=Sn(await n("run.start",l,k)),h=vn(v,"runId"),P=vn(v,"sessionId"),T=Xf(v,"turnId");return{runId:h,sessionId:P,...T!==void 0?{turnId:T}:{},result:su(n,h)}},async submitInput(m){let{operation:k,...l}=m;return Wt(l,"run.input.submit"),n("run.input.submit",l,k)},await(m){return su(n,m)},get(m){return n("run.get",{runId:m})},list(m){return n("run.list",m)},abort(m){return du(e.capabilities)?n("run.abort",{runId:m}).then(k=>Kf(k,m)):Promise.reject(new Jt)},async setModel(m,k){await n("run.model.set",{runId:m,model:k})},async setProvider(m,k){await n("run.provider.set",{runId:m,provider:k})},async setReasoning(m,k){await n("run.reasoning.set",{runId:m,reasoning:k})}},events:{subscribe(m,k){return Of(e.transport,n,m,k)},replay(m){return n("event.replay",m).then(k=>{if(!Array.isArray(k))throw new Error("Expected daemon event replay array.");return k.flatMap(l=>{let v=jo(l);return v===void 0?[]:[v]})})}},permissions:{request(m){if(m.toolInput!==void 0){let k=o();if(k)return Promise.reject(k)}return n("permission.request",m)},listPending(m){return n("permission.list",m)},respond(m,k,l){return n("permission.respond",{requestId:m,decision:k,...l?.runId!==void 0?{runId:l.runId}:{}})},listGrants(){return n("permission.grants.list")},revokeGrant(m,k){return n("permission.grants.revoke",{grantId:m,expectedRevision:k})}},userInputs:{listPending(m){return n("user_input.listPending",m)},respond(m,k,l){return n("user_input.respond",{requestId:m,answer:k,...l?.expectedRevision!==void 0?{expectedRevision:l.expectedRevision}:{},...l?.runId!==void 0?{runId:l.runId}:{}})},dismiss(m,k){return n("user_input.dismiss",{requestId:m,...k?.expectedRevision!==void 0?{expectedRevision:k.expectedRevision}:{},...k?.runId!==void 0?{runId:k.runId}:{}})}},credentials:{async register(m,k){let l=`credlease_${ci().replace(/-/g,"")}`;s.set(l,k);try{return await n("credential.register",{leaseId:l,providers:m.providers,...m.expiresAt!==void 0?{expiresAt:m.expiresAt}:{}})}catch(v){throw s.delete(l),v}},async resume(m,k){s.set(m,k);try{let l=await n("credential.get",{leaseId:m});if(l==null)throw Object.assign(new Error(`Credential lease is unavailable after Runtime reconnect: ${m}`),{code:"credential_unavailable"});return Sn(l)}catch(l){throw s.delete(m),l}},async revoke(m){let k=await n("credential.revoke",{leaseId:m});return k&&s.delete(m),k}},hostTools:{async register(m,k){iu(m,k);let l=`hostlease_${ci().replace(/-/g,"")}`;a.set(l,k);try{return await n("host_tool.register",{leaseId:l,tools:m})}catch(v){throw a.delete(l),v}},async resume(m,k){a.set(m,k);try{let l=await n("host_tool.get",{leaseId:m});if(l==null)throw Object.assign(new Error(`Host tool lease is unavailable after Runtime reconnect: ${m}`),{code:"host_tool_unavailable"});let v=Sn(l);return iu(v.tools,k),v}catch(l){throw a.delete(m),l}},async getInvocation(m){return pt(await n("host_tool.invocation.get",{invocationId:m}))},async revoke(m){let k=await n("host_tool.revoke",{leaseId:m});return k&&a.delete(m),k}},operations:{get(m){return n("operation.get",m)}},workflows:{list(m){return n("workflow.list",m)},get(m){return n("workflow.get",{runId:m}).then(pt)},subscribe(m,k){return $f(e.transport,n,m,k)},pause(m){return n("workflow.pause",{runId:m})},resume(m){return n("workflow.resume",{runId:m})},stop(m){return n("workflow.stop",{runId:m})}},learning:{list(m){return n("learning.list",m??{})},get(m){return n("learning.get",{nameOrSlug:m})},getSnapshot(){return n("learning.snapshot")},events(m){return n("learning.events",{...m!==void 0?{afterRevision:m}:{}})},subscribe(m){return Tf(n,m?.afterRevision??0)},async acknowledge(m){await n("learning.acknowledge",{nameOrSlug:m})},async snooze(m,k){await n("learning.snooze",{nameOrSlug:m,until:k})},async reject(m){await n("learning.reject",{nameOrSlug:m})},async disable(m){await n("learning.disable",{nameOrSlug:m})},async rollback(m){await n("learning.rollback",{nameOrSlug:m})},async promote(m,k){await n("learning.promote",{nameOrSlug:m,scope:k})},async review(m){await n("learning.review",{nameOrSlug:m})},async trust(m){await n("learning.trust",{nameOrSlug:m})}},config:{read(){return n("config.read")},patch(m){return n("config.patch",{patch:m})},reload(){return n("config.reload")}},catalog:{providers(){return n("provider.list")},models(m){return n("model.list",m)},commands(m){return n("command.list",m!==void 0?{projectRoot:m}:void 0)},resolveCommand(m){return n("command.resolve",m)},skills(m){return n("skill.list",m)},describeSkill(m){return n("skill.describe",m)},customProviders(){return n("provider.custom.list")},upsertCustomProvider(m){return n("provider.custom.upsert",{config:m})},deleteCustomProvider(m){return n("provider.custom.remove",{name:m})},extensions(){return n("extension.list")},reloadExtensions(){return n("extension.reload")}},mcp:{listServers(){return n("mcp.server.list")},getServer(m){return n("mcp.server.get",{name:m}).then(pt)},validateServer(m,k){return n("mcp.server.validate",{name:m,config:k})},upsertServer(m,k){return n("mcp.server.upsert",{name:m,config:k})},deleteServer(m){return n("mcp.server.delete",{name:m})},reloadServers(){return n("mcp.server.reload")},listTools(m){return n("mcp.tool.list",m)}},artifacts:{create(m){return n("artifact.create",m)},get(m){return n("artifact.get",{artifactId:m}).then(pt)},delete(m){return n("artifact.delete",{artifactId:m})}},admin:{agentRegistrations:{list(){return n("agentRegistrations.list")},upsert(m,k){return Wt(m,"agentRegistrations.upsert.registration"),n("agentRegistrations.upsert",{registration:m,...k?.expectedConfigurationRevision!==void 0?{expectedConfigurationRevision:k.expectedConfigurationRevision}:{},...k?.expectedManagementOwner!==void 0?{expectedManagementOwner:k.expectedManagementOwner}:{}})},setEnabled(m,k,l){return n("agentRegistrations.setEnabled",{agentId:m,enabled:k,...l?.expectedConfigurationRevision!==void 0?{expectedConfigurationRevision:l.expectedConfigurationRevision}:{},...l?.expectedManagementOwner!==void 0?{expectedManagementOwner:l.expectedManagementOwner}:{},...l?.claimOwner!==void 0?{claimOwner:l.claimOwner}:{}}).then(pt)},remove(m,k){return n("agentRegistrations.remove",{agentId:m,...k?.expectedConfigurationRevision!==void 0?{expectedConfigurationRevision:k.expectedConfigurationRevision}:{},...k?.expectedManagementOwner!==void 0?{expectedManagementOwner:k.expectedManagementOwner}:{}})}}},agents:{enabled:e.capabilities?.externalAgents===!0,listDispatchable(m){return n("agents.listDispatchable",m)},describe(m,k){return n("agents.describe",{agentId:m,query:k}).then(pt)},preflight(m){return n("agents.preflight",m)},tree(m){let k=r();return k?Promise.reject(k):n("agents.tree",{sessionId:m})},detail(m,k){let l=r();return l?Promise.reject(l):n("agents.detail",{sessionId:m,actorPath:k})},spawn(m,k){let l=r();return l?Promise.reject(l):(Wt(k,"agents.spawn"),n("agents.spawn",{sessionId:m,input:k}))},async send(m,k,l,v){let h=r();if(h)throw h;await n("agents.send",{sessionId:m,actorPath:k,content:l,...v!==void 0?{classification:v}:{}})},followup(m,k,l,v){let h=r();return h?Promise.reject(h):n("agents.followup",{sessionId:m,actorPath:k,objective:l,...v?.expectedRevision!==void 0?{expectedRevision:v.expectedRevision}:{}})},async interrupt(m,k,l){let v=r();if(v)throw v;await n("agents.interrupt",{sessionId:m,actorPath:k,...l!==void 0?{reason:l}:{}})},output(m,k,l){let v=r();return v?Promise.reject(v):n("agents.output",{sessionId:m,actorPath:k,...l!==void 0?{turnId:l}:{}})},events(m,k){let l=r();return l?Promise.reject(l):n("agents.events",{sessionId:m,...k!==void 0?{afterSequence:k}:{}})},wait(m,k,l,v){let h=r();return h?Promise.reject(h):t("agents.wait",{sessionId:m,...k!==void 0?{afterSequence:k}:{},...l!==void 0?{timeoutMs:l}:{}},v).then(pt)}},status:{snapshot(){return n("daemon.status")},preflight(){return n("daemon.preflight").then(m=>tu(m))}},daemon:{inspect(){return n("daemon.management.get").then(m=>{let k=m;return{...k,preflight:tu(k.preflight)}})},stopForInline(m){let{operation:k,...l}=m;return n("daemon.rollbackToInline",l,k)}},diagnostics:{latestContextBudget(m){return n("context.budget.get",m)},latestToolExposure(m){return n("tool.exposure.preview",m)},latestProviderCacheDiagnostic(m){return n("provider.cache.diagnostics.get",m)}},connection:{current(){return p},subscribe(m){return c.add(m),m(p),{close(){c.delete(m)}}}},close:C}}i(mi,"createRuntimeDaemonClient");async function*Tf(e,n){let t=n;for(;;){let r=await e("learning.events",{afterRevision:t});if(r.length===0){await new Promise(o=>setTimeout(o,100));continue}for(let o of r)t=o.sequence,yield o}}i(Tf,"pollRuntimeLearningEvents");function ru(e){we({source:"runtime.daemon.client",level:"warn",message:`Failed to deliver ${e} result to the Runtime daemon.`})}i(ru,"reportReverseBridgeFailure");async function Df(e,n,t){let r=Sn(e),o=vn(r,"requestId"),s=vn(r,"leaseId"),a=n.get(s);if(!a){await t("credential.supply",{requestId:o,error:"credential_lease_unavailable"});return}try{let u=await a({leaseId:s,provider:vn(r,"provider"),sessionId:vn(r,"sessionId"),runId:vn(r,"runId")});await t("credential.supply",{requestId:o,...u!==void 0?{credential:u}:{error:"credential_unavailable"}})}catch{await t("credential.supply",{requestId:o,error:"credential_broker_failed"})}}i(Df,"answerCredentialRequest");async function Mf(e,n,t,r){let o=Sn(e),s=vn(o,"invocationId"),a=vn(o,"leaseId"),u=vn(o,"toolName"),c=n.get(a)?.[u];if(!c){await r("host_tool.complete",{invocationId:s,error:"host_tool_unavailable"});return}let p=t.get(s);if(!p){let R=Promise.resolve().then(()=>c({invocationId:s,leaseId:a,toolName:u,sessionId:vn(o,"sessionId"),runId:vn(o,"runId"),input:Sn(o.input)}));p={promise:R,settled:!1},t.set(s,p);let I=p;R.finally(()=>{I.settled=!0,ou(t)}).catch(()=>{}),ou(t)}try{await r("host_tool.complete",{invocationId:s,result:await p.promise})}catch{try{await r("host_tool.complete",{invocationId:s,error:"host_tool_failed"})}catch(R){throw new Error("Failed to report the Host Tool outcome to the Runtime daemon.",{cause:R})}}}i(Mf,"answerHostToolInvocation");function iu(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}`)}i(iu,"validateHostToolHandlers");function ou(e){if(!(e.size<=nu))for(let[n,t]of e){if(e.size<=nu)return;t.settled&&e.delete(n)}}i(ou,"pruneHostToolResults");function _f(e,n){let t=n?.journalEpoch??e;if(t!==void 0)return{operationId:n?.operationId??`op_${ci().replace(/-/g,"")}`,journalEpoch:t}}i(_f,"createOperationEnvelope");function Of(e,n,t,r){return lu(e,n,"event.subscribe",{filter:t},o=>{Hf(o,r)})}i(Of,"subscribeToDaemonEvents");async function Nf(e,n,t,r,o){let s=!1,a=!1,u,c=!1,p,R=!1,I,y,x=new Promise(T=>{y=T}),f=[],C,m,k=i(()=>{f.length=0,C?.close(),C=void 0,m?.close(),m=void 0;let T=u;u=void 0,T!==void 0&&n("event.unsubscribe",{subscriptionId:T}).catch(_=>{we({source:"runtime.daemon.client",level:"warn",message:"Failed to unsubscribe an invalidated Session observation.",detail:_})})},"closeResources"),l=i((T,_,N)=>{s||R||(R=!0,k(),y?.({code:"observation_invalidated",reason:T,runtimeId:N,message:_}))},"invalidate"),v=i((T,_)=>{let N=jo(T.event);if(N===void 0){l("event_order","Runtime delivered an invalid observation event; full resync is required.",_);return}if(p!==void 0&&(N.cursor.sessionId!==p.sessionId||N.cursor.journalEpoch!==p.journalEpoch)){l("runtime_changed","Runtime Session event journal changed; full resync is required.",_);return}if(p!==void 0&&N.seq<p.seq){if(!a)return;l("event_order",`Runtime observation event order regressed from ${p.seq} to ${N.seq}.`,_);return}if(!(p!==void 0&&N.seq===p.seq)){p=N.cursor;try{r(N)}catch(q){we({source:"runtime.daemon.client",level:"error",message:`Session observation listener failed for ${N.type}.`,detail:q}),l("delivery_failed",`Session observation listener failed while delivering ${N.type}; discard local state and resync.`,_)}}},"deliver"),h=i((T,_)=>{let N=jf(T.invalidation);if(N===void 0){l("event_order","Runtime delivered an invalid observation invalidation; full resync is required.",_);return}l(N.reason,N.message,N.runtimeId)},"deliverInvalidation");C=e.subscribe(T=>{if(s||R||T.method!=="event"&&T.method!=="observation.invalidated")return;let _=Sn(T.params);if(u===void 0||!a){if(T.method==="event"&&!Ff(_.event,t)||T.method==="observation.invalidated"&&typeof _.sessionId=="string"&&_.sessionId!==t)return;f.length>=uu?(c=!0,l("event_overflow","Runtime observation handoff overflowed; full resync is required.","daemon")):f.push({method:T.method,payload:_});return}_.subscriptionId===u&&(T.method==="event"?v(_,"daemon"):h(_,"daemon"))}),m=e.subscribeLifecycle?.(T=>{if(T.state==="connected"){I!==void 0&&I!==T.connectionId&&l("runtime_changed","Runtime transport connection changed; discard the observation and resync.","daemon"),I=T.connectionId;return}l("transport_disconnected",T.reason??"Runtime transport disconnected; observation is invalid.","daemon")});let P=i(T=>{try{let _=vn(Sn(T),"subscriptionId");n("event.unsubscribe",{subscriptionId:_}).catch(N=>{we({source:"runtime.daemon.client",level:"warn",message:"Failed to unsubscribe a late Session observation.",detail:N})})}catch(_){we({source:"runtime.daemon.client",level:"warn",message:"Ignored an invalid late Session observation response.",detail:_})}},"unsubscribeLateObservation");try{let T=Sn(await n("session.observe",{sessionId:t},o,P));if(u=vn(T,"subscriptionId"),c)throw Object.assign(new Error("Runtime session observation handshake exceeded its event buffer; full resync is required."),{code:"resync_required"});let _=Sn(T.snapshot);p=_.cursor;let N={snapshot:_,invalidated:x,close(){s||(s=!0,k())}};return queueMicrotask(()=>queueMicrotask(()=>{if(!(s||R)){for(;f.length>0;){let q=f.splice(0);for(let te of q){if(R)break;let{method:de,payload:Ie}=te;Ie.subscriptionId===u&&(de==="event"?v(Ie,_.runtimeId):h(Ie,_.runtimeId))}}a=!0}})),N}catch(T){throw s=!0,k(),T}}i(Nf,"observeDaemonSession");async function Lf(e,n,t){if(cu(n),n?.signal===void 0&&n?.timeoutMs===void 0)return e;let r,o;try{return await Promise.race([e,new Promise((s,a)=>{n?.timeoutMs!==void 0&&(r=setTimeout(()=>{let u=Object.assign(new Error(`Runtime read timed out after ${n.timeoutMs}ms`),{code:"read_timeout"});a(u),t(u)},n.timeoutMs)),n?.signal!==void 0&&(o=i(()=>{let u=Object.assign(new Error("Runtime read cancelled"),{code:"read_cancelled"});a(u),t(u)},"abort"),n.signal.addEventListener("abort",o,{once:!0}))})])}finally{r!==void 0&&clearTimeout(r),o!==void 0&&n?.signal?.removeEventListener("abort",o)}}i(Lf,"raceRuntimeDaemonRead");function cu(e){if(e?.signal?.aborted)throw Object.assign(new Error("Runtime read cancelled"),{code:"read_cancelled"});if(e?.timeoutMs!==void 0&&(!Number.isSafeInteger(e.timeoutMs)||e.timeoutMs<=0))throw new Error("Runtime read timeoutMs must be a positive safe integer")}i(cu,"validateRuntimeDaemonReadOptions");function Ff(e,n){return e!==null&&typeof e=="object"&&!Array.isArray(e)&&e.sessionId===n}i(Ff,"isRuntimeEventForSession");function jf(e){if(e===null||typeof e!="object"||Array.isArray(e))return;let n=e;if(!(n.code!=="observation_invalidated"||n.reason!=="event_overflow"&&n.reason!=="event_order"&&n.reason!=="delivery_failed"&&n.reason!=="runtime_changed"&&n.reason!=="transport_disconnected"||typeof n.runtimeId!="string"||typeof n.message!="string"))return{code:"observation_invalidated",reason:n.reason,runtimeId:n.runtimeId,message:n.message}}i(jf,"parseRuntimeObservationInvalidation");function Hf(e,n){let t=jo(e);t!==void 0&&n(t)}i(Hf,"deliverRuntimeEvent");function jo(e){let n=Oo(e);if(!n.ok){we({source:"runtime.daemon.client",level:"warn",message:`Ignored malformed Runtime event: ${n.error}`});return}return n.event}i(jo,"parseRuntimeEventForClient");function $f(e,n,t,r){return lu(e,n,"workflow.subscribe",{filter:t},o=>{r(o)})}i($f,"subscribeToDaemonWorkflowEvents");function lu(e,n,t,r,o){let s=!1,a,u=[],c=e.subscribe(R=>{if(s||R.method!=="event")return;let I=Sn(R.params);if(a===void 0){u.length>=uu&&u.shift(),u.push(I);return}I.subscriptionId===a&&o(I.event)}),p=n(t,r).then(R=>{if(a=vn(Sn(R),"subscriptionId"),s){au(n,t,a),u.length=0;return}for(let I of u.splice(0))I.subscriptionId===a&&o(I.event)}).catch(R=>{throw u.length=0,c.close(),R});return p.catch(()=>{}),{ready:p,close(){s=!0,c.close(),a!==void 0&&au(n,t,a)}}}i(lu,"subscribeToDaemonNotification");function su(e,n){return e("run.await",{runId:n}).then(qf)}i(su,"requestRuntimeRunResult");function qf(e){let n=Sn(e),t=Object.prototype.hasOwnProperty.call(n,"error")?Bf(n.error):void 0,r={...n};return delete r.error,{...r,...t!==void 0?{error:t}:{}}}i(qf,"deserializeRuntimeRunResult");function Bf(e){if(e==null)return;if(e instanceof Error)return e;if(typeof e=="string")return new Error(e);let n=Sn(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}i(Bf,"deserializeRuntimeError");function au(e,n,t){e(n==="event.subscribe"?"event.unsubscribe":"workflow.unsubscribe",{subscriptionId:t}).catch(()=>{})}i(au,"unsubscribeRemote");function pt(e){return e??void 0}i(pt,"nullToUndefined");function Sn(e){if(!e||typeof e!="object"||Array.isArray(e))throw new Error("Expected daemon response object.");return e}i(Sn,"requireRecord");function du(e){let n=e?.runLifecycleControl;if(!n||typeof n!="object"||Array.isArray(n))return!1;let t=n;return Number.isSafeInteger(t.version)&&Number(t.version)>=1&&t.structuredStopReceipt===!0&&t.protocolCancellation===!0&&t.responseAcknowledgement===!0}i(du,"supportsRunLifecycleControl");function Kf(e,n){let t;try{t=Sn(e)}catch{throw new Jt}let r=t.runId,o=t.sessionId,s=t.accepted,a=t.state,u=t.outcome,c=t.phase,p=t.revision,R=["unknown","confirmed"],I=["unknown","cancelled","interrupted","completed","failed"],y=["queued","running","waiting_agent","recovering","waiting_permission","waiting_user_input","unknown","completed","failed","cancelled","interrupted"];if(typeof s!="boolean"||typeof r!="string"||r.length===0||r!==n||typeof o!="string"||o.length===0||typeof a!="string"||!R.includes(a)||typeof u!="string"||!I.includes(u)||typeof c!="string"||!y.includes(c)||!Number.isSafeInteger(p)||Number(p)<0)throw new Jt;return{runId:r,sessionId:o,accepted:s,state:a,outcome:u,phase:c,revision:Number(p)}}i(Kf,"parseRuntimeRunStopReceipt");function vn(e,n){let t=e[n];if(typeof t!="string"||t.length===0)throw new Error(`Expected daemon response string field: ${n}`);return t}i(vn,"requireStringField");function Xf(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}}i(Xf,"optionalStringField");function Wt(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 gt(n,`${n} is not transport-safe: numbers must be finite.`)}if(typeof e=="function"||typeof e=="symbol"||typeof e=="bigint")throw new gt(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 gt(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 o=r?.constructor?.name??"object";throw new gt(n,`${n} is not transport-safe: ${o} instances cannot cross a Runtime boundary.`)}if(t.add(e),Array.isArray(e))e.forEach((o,s)=>Wt(o,`${n}[${s}]`,t));else for(let[o,s]of Object.entries(e))Wt(s,`${n}.${o}`,t);t.delete(e)}i(Wt,"assertRuntimeTransportSafe");import{randomUUID as ly}from"node:crypto";import my from"node:os";import ms from"node:path";import{randomUUID as $o}from"node:crypto";import*as ce from"node:fs";import fn from"node:path";function Jn(e,n="default"){let t=qo(n),r=fn.resolve(e),o=fn.join(r,"runtime","daemon",t);return{profile:t,configHome:r,rootDir:o,stateFile:fn.join(o,"daemon.json"),lockFile:fn.join(o,"daemon.lock"),tokenFile:fn.join(o,"daemon.token"),logFile:fn.join(o,"daemon.log"),runsDir:fn.join(o,"runs"),eventsDir:fn.join(o,"events"),ownerPolicyFile:fn.join(o,"owner-policy.json"),ownerPolicyLockFile:fn.join(o,"owner-policy.lock")}}i(Jn,"resolveRuntimeDaemonPathsFromConfigHome");function Uf(e,n){let t=i(r=>{let o=fn.resolve(r);return process.platform==="win32"?o.toLowerCase():o},"resolveIdentity");return t(e)===t(n)}i(Uf,"isSameRuntimeDaemonPath");function zt(e,n){let t=fn.resolve(e);return Uf(n,fn.join(t,".kodax"))?t:fn.resolve(n)}i(zt,"resolveRuntimeDaemonEndpointScope");function Mn(e){if(!ce.existsSync(e.ownerPolicyFile))return{mode:"daemon",revision:0,updatedAt:new Date(0).toISOString()};try{let n=JSON.parse(ce.readFileSync(e.ownerPolicyFile,"utf8"));if(Xo(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.")}i(Mn,"readRuntimeOwnerPolicy");function pu(e,n,t){kn(e);let r=it(e);if(!r)throw new Error("Runtime owner policy update is already in progress.");try{if(ce.existsSync(e.lockFile))throw new Error("Cannot change Runtime owner mode while an owner lock exists.");return yi(e,n,t,r.nonce)}finally{yt(e,r)}}i(pu,"updateRuntimeOwnerPolicy");function gu(e,n,t){kn(e);let r=it(e);if(!r)throw pi("Runtime owner rollback is already in progress.");try{let o=Ve(e.lockFile);if(o?.kind!=="daemon"||o.runtimeId!==n)throw pi("Runtime daemon owner changed before rollback commit.");if(Mn(e).mode!=="daemon")throw pi("Runtime owner policy changed before rollback commit.");return yi(e,"inline",t,r.nonce)}finally{yt(e,r)}}i(gu,"commitRuntimeDaemonRollbackPolicy");function gi(e){kn(e);let n=it(e);if(!n)throw new Error("Runtime owner transition is already in progress.");try{if(ce.existsSync(e.lockFile))throw new Error("Cannot enable Runtime daemon ownership while an owner lock exists.");let t=Mn(e);return t.mode==="daemon"?t:yi(e,"daemon",t.revision,n.nonce)}finally{yt(e,n)}}i(gi,"enableRuntimeDaemonOwner");function yu(e,n,t=!1){kn(e);let r=it(e);if(!r)throw new Error("Runtime owner transition is already in progress.");try{let o=Mn(e);if(o.mode!=="inline"){if(!t)throw new Error("Coder inline ownership requires explicit enableRollback: true.");if(ce.existsSync(e.lockFile))throw new Error("Cannot enable inline rollback while a Coder owner lock exists.");yi(e,"inline",o.revision,r.nonce)}if(ce.existsSync(e.lockFile))throw new Error(`Coder profile "${e.profile}" already has an owner.`);let s=Iu(e,n);if(!s)throw new Error(`Coder profile "${e.profile}" already has an owner.`);return s}finally{yt(e,r)}}i(yu,"acquireRuntimeInlineOwner");function yi(e,n,t,r){let o=Mn(e);if(o.revision!==t)throw pi(`Runtime owner policy conflict: expected ${t}, current ${o.revision}.`);let s={mode:n,revision:o.revision+1,updatedAt:new Date().toISOString()},a=`${e.ownerPolicyFile}.${process.pid}.${r}.tmp`;try{let u=ce.openSync(a,"wx",384);try{ce.writeFileSync(u,`${JSON.stringify(s,null,2)}
|
|
11
|
+
`,"utf8"),ce.fsyncSync(u)}finally{ce.closeSync(u)}return ce.renameSync(a,e.ownerPolicyFile),s}finally{ce.rmSync(a,{force:!0})}}i(yi,"writeRuntimeOwnerPolicy");function pi(e){let n=new Error(e);return n.code="conflict",n}i(pi,"runtimeOwnerPolicyConflict");function it(e,n=!0){let t=$o(),r={runtimeId:`owner-transition-${t}`,pid:process.pid,createdAt:new Date().toISOString()},o;try{return o=ce.openSync(e.ownerPolicyLockFile,"wx",384),ce.writeFileSync(o,`${JSON.stringify({...r,nonce:t})}
|
|
12
|
+
`,"utf8"),ce.fsyncSync(o),{nonce:t,owner:r}}catch(s){if(Ko(s)&&s.code==="EEXIST")return n&&Wf(e)?it(e,!1):void 0;throw s}finally{o!==void 0&&ce.closeSync(o)}}i(it,"tryAcquireRuntimeOwnerCoordination");function Wf(e){let n=mu(e);if(!n||Jf(n.owner.pid))return!1;try{let t=mu(e);return!t||t.nonce!==n.nonce?!1:(ce.unlinkSync(e.ownerPolicyLockFile),!0)}catch{return!1}}i(Wf,"removeAbandonedRuntimeOwnerCoordination");function mu(e){try{let n=JSON.parse(ce.readFileSync(e.ownerPolicyLockFile,"utf8"));return!Xo(n)||typeof n.nonce!="string"||!xu(n)||!n.runtimeId.startsWith("owner-transition-")?void 0:{nonce:n.nonce,owner:n}}catch{return}}i(mu,"readRuntimeOwnerCoordinationHandle");function Jf(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch(n){return Ko(n)&&n.code==="EPERM"}}i(Jf,"isRuntimeOwnerProcessAlive");function zf(e){return Ve(e.ownerPolicyLockFile)}i(zf,"readRuntimeOwnerCoordinator");function yt(e,n){try{let t=JSON.parse(ce.readFileSync(e.ownerPolicyLockFile,"utf8"));Xo(t)&&t.nonce===n.nonce&&ce.unlinkSync(e.ownerPolicyLockFile)}catch{}}i(yt,"releaseRuntimeOwnerCoordination");function Ri(e){if(Mn(e).mode!=="daemon")throw new Error(`Runtime daemon auto-start is disabled for profile "${e.profile}" by inline rollback policy.`)}i(Ri,"assertRuntimeDaemonOwnerAllowed");function qo(e){let n=e.trim()||"default";if(!/^[A-Za-z0-9_.-]+$/.test(n))throw new Error(`Invalid runtime daemon profile: ${e}`);return n}i(qo,"normalizeRuntimeDaemonProfile");function kn(e){ce.mkdirSync(e.rootDir,{recursive:!0}),ce.mkdirSync(e.runsDir,{recursive:!0}),ce.mkdirSync(e.eventsDir,{recursive:!0})}i(kn,"ensureRuntimeDaemonDirectories");function Ru(){return`dt_${$o().replace(/-/g,"")}`}i(Ru,"createRuntimeDaemonToken");function hu(e,n){kn(e),ce.writeFileSync(e.tokenFile,`${n}
|
|
13
|
+
`,{encoding:"utf8",mode:384}),process.platform!=="win32"&&ce.chmodSync(e.tokenFile,384)}i(hu,"writeRuntimeDaemonToken");function Er(e){try{let n=ce.readFileSync(e.tokenFile,"utf8").trim();return n.length>0?n:void 0}catch(n){if(n.code==="ENOENT")return;throw n}}i(Er,"readRuntimeDaemonToken");function Vt(e,n){kn(e);let t=`${e.stateFile}.${process.pid}.${$o()}.tmp`;try{let r=ce.openSync(t,"wx",384);try{ce.writeFileSync(r,`${JSON.stringify(n,null,2)}
|
|
14
|
+
`,"utf8"),ce.fsyncSync(r)}finally{ce.closeSync(r)}ce.renameSync(t,e.stateFile)}finally{ce.rmSync(t,{force:!0})}}i(Vt,"writeRuntimeDaemonState");function En(e,n,t,r){kn(e);let o={time:new Date().toISOString(),level:n,message:t,...r!==void 0?{data:r}:{}};ce.appendFileSync(e.logFile,`${JSON.stringify(o)}
|
|
15
|
+
`,"utf8")}i(En,"appendRuntimeDaemonLog");function wu(e,n=200){if(!ce.existsSync(e.logFile))return[];let t=[],r=ce.readFileSync(e.logFile,"utf8").split(/\r?\n/).filter(o=>o.trim().length>0);for(let o of r.slice(-n))try{let s=JSON.parse(o);Zf(s)&&t.push(s)}catch(s){t.push({time:new Date().toISOString(),level:"warn",message:`Skipped malformed daemon log line: ${s instanceof Error?s.message:String(s)}`})}return t}i(wu,"readRuntimeDaemonLog");function vu(e){if(ce.existsSync(e.stateFile))try{let n=JSON.parse(ce.readFileSync(e.stateFile,"utf8"));return Qf(n)?n:void 0}catch{return}}i(vu,"readRuntimeDaemonState");function Vf(e,n){return fn.join(e.rootDir,`shutdown-outcome.${encodeURIComponent(n.runtimeId)}.${n.pid}.json`)}i(Vf,"runtimeDaemonShutdownOutcomePath");function Su(e,n){try{let t=JSON.parse(ce.readFileSync(Vf(e,n),"utf8"));return np(t)?t:void 0}catch{return}}i(Su,"readRuntimeDaemonShutdownOutcome");function Iu(e,n){kn(e);let t;try{return t=ce.openSync(e.lockFile,"wx",384),ce.writeFileSync(t,`${JSON.stringify(n,null,2)}
|
|
16
|
+
`,"utf8"),ce.fsyncSync(t),{file:e.lockFile,owner:n}}catch(r){if(Ko(r)&&r.code==="EEXIST")return;throw r}finally{t!==void 0&&ce.closeSync(t)}}i(Iu,"tryAcquireRuntimeDaemonLock");function hi(e){let n={ownerPolicyLockFile:fn.join(fn.dirname(e.file),"owner-policy.lock")},t=it(n);if(!t)return!1;try{return ku(e)}finally{yt(n,t)}}i(hi,"releaseRuntimeDaemonLock");function bu(e,n){let t=it(e);if(!t)return!1;try{let r=Ve(n.file);return Bo(r,n.owner)?(Yf(e),ku(n)):!1}finally{yt(e,t)}}i(bu,"releaseRuntimeDaemonOwnership");function ku(e){let n=Ve(e.file);return Bo(n,e.owner)?(ce.unlinkSync(e.file),!0):!1}i(ku,"unlinkRuntimeDaemonLockIfOwned");function Ve(e){if(ce.existsSync(e))try{let n=JSON.parse(ce.readFileSync(e,"utf8"));return xu(n)?n:void 0}catch{return}}i(Ve,"readRuntimeDaemonLockOwner");function Eu(e,n,t){kn(e);let r=Gt(t),o=Ve(e.lockFile);if(r==="healthy")return t.state&&o!==void 0&&Ho(o,t.state)?{kind:"attach",state:t.state,health:r}:{kind:"unhealthy",health:"mismatch",...t.state!==void 0?{state:t.state}:{},...o!==void 0?{lockOwner:o}:{}};if(r==="unhealthy"&&t.state!==void 0&&rp(t.state.status)&&t.pidAlive&&o!==void 0)return{kind:"wait",lockOwner:o,state:t.state,health:"missing"};if(r==="unhealthy"||r==="mismatch")return{kind:"unhealthy",health:r,...t.state!==void 0?{state:t.state}:{},...o!==void 0?{lockOwner:o}:{}};let s=r==="stale"?"stale":"missing",a=it(e);if(!a){let u=Ve(e.lockFile)??zf(e);return u?{kind:"wait",lockOwner:u,...t.state!==void 0?{state:t.state}:{},health:s}:{kind:"unhealthy",health:"unhealthy",...t.state!==void 0?{state:t.state}:{}}}try{return Mn(e).mode!=="daemon"?{kind:"unhealthy",health:"unhealthy",...t.state!==void 0?{state:t.state}:{}}:Gf(e,n,t,s)}finally{yt(e,a)}}i(Eu,"claimRuntimeDaemonOwnership");function Gf(e,n,t,r){let o=Ve(e.lockFile);if(r==="stale"){if(o!==void 0&&(t.observedLockOwner!==void 0&&!Bo(o,t.observedLockOwner)||t.state!==void 0&&!Ho(o,t.state)))return fi(o,t,r);fu(e)}else if(o!==void 0){if(t.observedLockOwner!==void 0&&!Ho(o,t.observedLockOwner))return fi(o,t,r);if(t.lockOwnerPidAlive===!1)fu(e);else return fi(o,t,r)}if(r==="missing"){let u=Ve(e.lockFile);if(u!==void 0)return{kind:"wait",lockOwner:u,...t.state!==void 0?{state:t.state}:{},health:r}}let s=Iu(e,n);if(s)return{kind:"claim",lock:s,health:r};let a=Ve(e.lockFile);return a?fi(a,t,r):{kind:"unhealthy",health:"unhealthy",...t.state!==void 0?{state:t.state}:{}}}i(Gf,"claimAvailableRuntimeDaemonOwnership");function fi(e,n,t){return{kind:"wait",lockOwner:e,...n.state!==void 0?{state:n.state}:{},health:t}}i(fi,"waitForRuntimeOwner");function Ho(e,n){return e.runtimeId===n.runtimeId&&e.pid===n.pid}i(Ho,"sameRuntimeOwner");function Bo(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}i(Bo,"sameRuntimeLockOwner");function fu(e){ce.rmSync(e.lockFile,{force:!0}),ce.rmSync(e.stateFile,{force:!0}),ce.rmSync(e.tokenFile,{force:!0})}i(fu,"removeRuntimeDaemonOwnershipFiles");function Yf(e){ce.rmSync(e.stateFile,{force:!0}),ce.rmSync(e.tokenFile,{force:!0})}i(Yf,"removeRuntimeDaemonStateFiles");function Gt(e){return e.state?e.endpointReachable&&!e.identityMatches?"mismatch":e.pidAlive&&e.endpointReachable&&e.identityMatches?"healthy":!e.pidAlive&&!e.endpointReachable?"stale":"unhealthy":"missing"}i(Gt,"classifyRuntimeDaemonHealth");function Qf(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"&&tp(n.status)&&(n.configHome===void 0||typeof n.configHome=="string")&&(n.lastError===void 0||typeof n.lastError=="string")}i(Qf,"isRuntimeDaemonState");function Zf(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let n=e;return typeof n.time=="string"&&ep(n.level)&&typeof n.message=="string"&&(n.data===void 0||Pu(n.data))}i(Zf,"isRuntimeDaemonLogEntry");function ep(e){return e==="info"||e==="warn"||e==="error"}i(ep,"isRuntimeDaemonLogLevel");function np(e){return Pu(e)?e.version===1&&typeof e.runtimeId=="string"&&typeof e.pid=="number"&&(e.status==="succeeded"||e.status==="failed")&&typeof e.completedAt=="string"&&(e.error===void 0||typeof e.error=="string"):!1}i(np,"isRuntimeDaemonShutdownOutcome");function Pu(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}i(Pu,"isPlainRecord");function xu(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"&&(n.processContainment===void 0||n.processContainment==="windows-job")&&(n.processContainment==="windows-job"?Number.isSafeInteger(n.supervisorPid)&&n.supervisorPid>0:n.supervisorPid===void 0)}i(xu,"isRuntimeDaemonLockOwner");function tp(e){return e==="starting"||e==="ready"||e==="draining"||e==="stopping"||e==="unhealthy"||e==="crashed"}i(tp,"isRuntimeDaemonStatus");function rp(e){return e==="starting"||e==="draining"||e==="stopping"}i(rp,"isRuntimeDaemonTransitionStatus");function Ko(e){return e instanceof Error&&"code"in e}i(Ko,"isNodeFileError");function Xo(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}i(Xo,"isRecord");import{createHash as ip,randomUUID as Rt}from"node:crypto";import*as Zt from"node:fs/promises";import*as Pr from"node:net";import op from"node:os";import Cu from"node:path";import{StringDecoder as Uo}from"node:string_decoder";var sp=8*1024*1024,ap=3e4,Qt=class extends Error{constructor(t,r,o){super(t);this.code=r;this.data=o;this.name="RuntimeDaemonTransportError"}code;data;static{i(this,"RuntimeDaemonTransportError")}};function Jo(e){return e instanceof Qt}i(Jo,"isRuntimeDaemonTransportError");function er(e="default",n){let t=qo(e),r=n===void 0?t:`${t}-${dp(Cu.resolve(n))}`;return process.platform==="win32"?{kind:"pipe",path:`\\\\.\\pipe\\kodax-runtime-${r}`}:{kind:"unix",path:Cu.join(op.tmpdir(),`kodax-runtime-${process.getuid?.()??"user"}-${r}.sock`)}}i(er,"defaultRuntimeDaemonEndpoint");function dp(e){return ip("sha256").update(e).digest("hex").slice(0,12)}i(dp,"shortPathHash");function Tu(e,n={}){let t="",r=0,o=new Uo("utf8"),s=n.maxFrameBytes??sp;if(!Number.isSafeInteger(s)||s<=0)throw new Error("Runtime daemon maxFrameBytes must be a positive safe integer.");let a=i(c=>{lp(c,s),c.trim()&&e(eu(c))},"consumeLine"),u=i(c=>{t+=c,r+=Buffer.byteLength(c,"utf8")},"append");return{push(c){for(typeof c=="string"?(u(o.end()),o=new Uo("utf8"),u(c)):u(o.write(c));;){let p=t.indexOf(`
|
|
17
|
+
`);if(p<0)break;let R=t.slice(0,p).replace(/\r$/,""),I=t.slice(0,p+1);t=t.slice(p+1),r-=Buffer.byteLength(I,"utf8"),a(R)}Mu(r,s)},flush(){u(o.end()),o=new Uo("utf8");let c=t.trim();t="",r=0,c.length>0&&a(c)}}}i(Tu,"createRuntimeDaemonFrameParser");async function zn(e,n={}){let t=Pr.createConnection(e.path);t.setEncoding("utf8");let r=new Promise(h=>{t.once("close",()=>h())});await mp(t,n.connectTimeoutMs);let o=!1,s,a=`transport_${Rt().replace(/-/g,"")}`,u=Rt().replace(/-/g,"")+Rt().replace(/-/g,""),c=`connection_${Rt().replace(/-/g,"")}`,p=new Set,R=new Set,I={state:"connected",connectionId:c,reconnectable:!1},y=i((h,P)=>{if(I.state!=="disconnected"){I={state:"disconnected",connectionId:c,reason:h,reconnectable:P};for(let T of R)try{T(I)}catch{we({source:"runtime.daemon.transport",level:"warn",message:"Runtime transport lifecycle listener failed."})}}},"disconnect"),x=new Map,f=new Map,C=i(h=>{let P=f.get(h);if(P!==void 0)return f.delete(h),clearTimeout(P.expiry),P.deliver},"removeLateResult"),m=i(()=>{for(let h of f.values())clearTimeout(h.expiry);f.clear()},"clearLateResults"),k=!1,l=i((h,P)=>{if(!k||o||t.destroyed)return;let _=Kt(`${h==="request.ack"?"ack":"cancel"}_${Rt().replace(/-/g,"").slice(0,12)}`,h,{requestId:P});t.write(`${JSON.stringify(_)}
|
|
18
|
+
`)},"sendRequestLifecycleFrame"),v=Tu(h=>{if(ft(h)){let P=x.get(h.id);if(P){x.delete(h.id),P.cleanup(),cp(h.result)&&(k=!0),l("request.ack",h.id),P.resolve(h.result);return}let T=C(h.id);if(h.id.startsWith("req_")&&l("request.cancel",h.id),T===void 0)return;try{T(h.result)}catch(_){we({source:"runtime.daemon.transport",level:"warn",message:"Runtime daemon late-result handler failed.",detail:_})}return}if(Ut(h)){if(!h.id)return;let P=x.get(h.id);if(P){x.delete(h.id),P.cleanup(),P.reject(new Qt(h.error.message,h.error.code,h.error.data));return}C(h.id);return}if(kr(h))for(let P of p)try{P(h)}catch{we({source:"runtime.daemon.transport",level:"warn",message:"Runtime transport notification listener failed."})}},{maxFrameBytes:n.maxFrameBytes});return t.on("data",h=>{try{v.push(h)}catch(P){o=!0;let T=Yt(P);y(T.message,!0),wi(x,T),m(),t.destroy(T)}}),t.on("close",()=>{o=!0,y("Runtime daemon transport closed.",!0),wi(x,new Error("Runtime daemon transport closed.")),m()}),t.on("error",h=>{o=!0,y(h.message,!0),wi(x,h),m()}),{request(h,P,T,_){if(o)return Promise.reject(new Error("Runtime daemon transport is closed."));let N=`req_${Rt().replace(/-/g,"").slice(0,12)}`,q=h==="initialize"||h==="runtime.initialize"?up(P,a,u):P,te=T??(s!==void 0&&mt(h)?{operationId:`op_${Rt().replace(/-/g,"")}`,journalEpoch:s}:void 0),de=Kt(N,h,q,te),Ie;try{Ie=JSON.stringify(de)}catch(Fe){return Promise.reject(new Qt(`Runtime daemon request params are not JSON-serializable: ${Yt(Fe).message}`,"invalid_params"))}let Te,Pe=!1,be=i(()=>{Te!==void 0&&_?.signal?.removeEventListener("abort",Te)},"cleanup"),ve=new Promise((Fe,Ce)=>{let je={resolve:Fe,reject:Ce,cleanup:be};x.set(N,je),_?.signal!==void 0&&(Te=i(()=>{if(x.get(N)===je){if(x.delete(N),be(),Pe&&!t.destroyed&&l("request.cancel",N),_.onLateResult!==void 0){let Ge=setTimeout(()=>{f.delete(N)},ap);Ge.unref?.(),f.set(N,{deliver:_.onLateResult,expiry:Ge})}Ce(yp(_.signal?.reason))}},"abort"),_.signal.addEventListener("abort",Te,{once:!0}),_.signal.aborted&&Te())});return _?.signal?.aborted?ve:(t.write(`${Ie}
|
|
19
|
+
`),Pe=!0,ve.then(Fe=>{if(h==="initialize"||h==="runtime.initialize"){let Ce=ht(Fe);typeof Ce?.journalEpoch=="string"&&(s=Ce.journalEpoch)}return Fe}))},subscribe(h){return p.add(h),{close(){p.delete(h)}}},subscribeLifecycle(h){return R.add(h),h(I),{close(){R.delete(h)}}},async close(){let h;if(!o){o=!0,y("Runtime daemon transport closed by client.",!1);try{v.flush()}catch(P){h=Yt(P)}t.end(),t.destroy(),wi(x,new Error("Runtime daemon transport closed.")),m()}if(await r,R.clear(),h!==void 0)throw h}}}i(zn,"createRuntimeDaemonSocketClientTransport");function up(e,n,t){let r=ht(e)??{},o=ht(r.capabilities)??{},s=ht(r.clientInfo)??{name:"kodax-transport"};return{...r,capabilities:{...o,operationDeduplication:!0},clientInfo:{...s,instanceId:typeof s.instanceId=="string"?s.instanceId:n,instanceSecret:typeof s.instanceSecret=="string"?s.instanceSecret:t}}}i(up,"withDurableOperationCapability");function ht(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:void 0}i(ht,"asRecord");function cp(e){let n=ht(e),t=ht(n?.capabilities),r=ht(t?.runLifecycleControl);return Number.isSafeInteger(r?.version)&&Number(r?.version)>=1&&r.structuredStopReceipt===!0&&r.protocolCancellation===!0&&r.responseAcknowledgement===!0}i(cp,"runtimeDaemonSupportsRequestLifecycle");async function Du(e){await pp(e.endpoint);let n=Pr.createServer(),t=new Set,r=new Set,o=!1;if(n.on("connection",s=>{if(o){s.destroy();return}t.add(s);let a=!1,u=i(I=>{if(s.destroyed)return;let y;try{y=JSON.stringify(I)}catch(x){let f=rt({code:"internal_error",message:`Runtime daemon response is not JSON-serializable: ${Yt(x).message}`},I.kind==="response"||I.kind==="error"?I.id:void 0);y=JSON.stringify(f)}s.write(`${y}
|
|
20
|
+
`)},"send"),c=e.createDispatcher(I=>u(I));r.add(c);let p=Tu(I=>{if(Lo(I)){c.handle(I).then(u,y=>{u(rt({code:"internal_error",message:Yt(y).message}))});return}if(Ut(I)){u(I);return}u(rt({code:"invalid_request",message:"Runtime daemon server expects request frames from clients."}))},{maxFrameBytes:e.maxFrameBytes}),R=i(I=>{if(a)return;a=!0;let y=Yt(I);u(rt({code:"invalid_frame",message:y.message,...Jo(y)&&y.data!==void 0?{data:y.data}:{}})),s.end()},"rejectInvalidFrame");s.on("data",I=>{if(!a)try{p.push(I)}catch(y){R(y)}}),s.on("end",()=>{try{p.flush()}catch(I){R(I)}}),s.on("close",()=>{t.delete(s),r.delete(c),c.close()}),s.on("error",()=>{s.destroy()})}),await fp(n,e.endpoint.path),e.endpoint.kind==="unix")try{await Zt.chmod(e.endpoint.path,384)}catch(s){throw await Au(n),s}return{endpoint:e.endpoint,connectionCount(){return t.size},unref(){n.unref()},async close(){if(!o){o=!0;for(let s of r)s.close();r.clear();for(let s of t)s.destroy();t.clear(),await Au(n)}}}}i(Du,"createRuntimeDaemonSocketServer");function lp(e,n){Mu(Buffer.byteLength(e,"utf8"),n)}i(lp,"assertFrameSize");function Mu(e,n){if(!(e<=n))throw new Qt(`Runtime daemon frame exceeds the ${n}-byte limit.`,"invalid_frame",{actualBytes:e,maxFrameBytes:n})}i(Mu,"assertFrameByteSize");function mp(e,n=2e3){return new Promise((t,r)=>{let o=setTimeout(()=>{s(),e.destroy(),r(new Error("Timed out connecting to runtime daemon."))},n);o.unref?.();let s=i(()=>{clearTimeout(o),e.off("connect",a),e.off("error",u)},"cleanup"),a=i(()=>{s(),t()},"onConnect"),u=i(c=>{s(),r(c)},"onError");e.once("connect",a),e.once("error",u)})}i(mp,"waitForConnect");function fp(e,n){return new Promise((t,r)=>{let o=i(()=>{e.off("listening",s),e.off("error",a)},"cleanup"),s=i(()=>{o(),t()},"onListening"),a=i(u=>{o(),r(u)},"onError");e.once("listening",s),e.once("error",a),e.listen(n)})}i(fp,"waitForListen");async function pp(e){if(e.kind!=="unix")return;let n;try{n=await Zt.stat(e.path)}catch(t){if(Wo(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 gp(e.path))throw new Error(`Runtime daemon Unix endpoint is already accepting connections: ${e.path}`);try{await Zt.unlink(e.path)}catch(t){if(!Wo(t)||t.code!=="ENOENT")throw t}}i(pp,"prepareUnixSocketEndpoint");function gp(e){return new Promise((n,t)=>{let r=Pr.createConnection(e),o=setTimeout(()=>{s(),r.destroy(),t(new Error(`Timed out probing runtime daemon Unix endpoint: ${e}`))},250);o.unref?.();let s=i(()=>{clearTimeout(o),r.off("connect",a),r.off("error",u)},"cleanup"),a=i(()=>{s(),r.end(),r.destroy(),n(!0)},"onConnect"),u=i(c=>{if(s(),r.destroy(),Wo(c)&&(c.code==="ECONNREFUSED"||c.code==="ENOENT")){n(!1);return}t(c)},"onError");r.once("connect",a),r.once("error",u)})}i(gp,"unixSocketAcceptsConnections");function Au(e){return new Promise((n,t)=>{e.close(r=>{r?t(r):n()})})}i(Au,"closeNetServer");function wi(e,n){for(let t of e.values())t.cleanup(),t.reject(n);e.clear()}i(wi,"rejectPending");function yp(e){return e instanceof Error?e:new Error("Runtime daemon request cancelled.")}i(yp,"normalizeTransportAbortReason");function Yt(e){return e instanceof Error?e:new Error(String(e))}i(Yt,"normalizeTransportError");function Wo(e){return e instanceof Error&&"code"in e}i(Wo,"isNodeFileError");async function xr(e,n={}){let t=vu(e);if(!t)return{pidAlive:!1,endpointReachable:!1,identityMatches:!1};let r=Ve(e.lockFile),o=(n.isPidAlive??nr)(t.pid),s=wt(t),a=Er(e),u;try{u=await(n.createTransport?n.createTransport(s):zn(s,{connectTimeoutMs:n.connectTimeoutMs??1e3}));let c=u.request("initialize",{profile:t.profile,connectionPurpose:"probe",...a!==void 0?{token:a}:{}});c.catch(()=>{});let p=await Rp(c,n.handshakeTimeoutMs??1e3,"Timed out waiting for runtime daemon handshake.");return{state:t,pidAlive:o,endpointReachable:!0,identityMatches:hp(p,t)&&wp(r,t),...r!==void 0?{observedLockOwner:r}:{}}}catch(c){return Jo(c)&&c.code==="unauthorized"?{state:t,pidAlive:o,endpointReachable:!0,identityMatches:!1,...r!==void 0?{observedLockOwner:r}:{}}:{state:t,pidAlive:o,endpointReachable:!1,identityMatches:!1,...r!==void 0?{observedLockOwner:r}:{}}}finally{await u?.close?.()}}i(xr,"observeRuntimeDaemonHealth");async function zo(e,n,t={}){let r=await xr(e,t),o=r.state?void 0:Ve(e.lockFile),s=o?{...r,observedLockOwner:o,lockOwnerPidAlive:(t.isPidAlive??nr)(o.pid)}:r;return Eu(e,n,s)}i(zo,"resolveRuntimeDaemonOwnership");function wt(e){return{kind:process.platform==="win32"||e.endpoint.startsWith("\\\\.\\pipe\\")?"pipe":"unix",path:e.endpoint}}i(wt,"runtimeDaemonEndpointFromState");function nr(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch(n){return vp(n)&&n.code==="EPERM"}}i(nr,"isRuntimeDaemonPidAlive");async function Rp(e,n,t){let r;try{return await Promise.race([e,new Promise((o,s)=>{r=setTimeout(()=>s(new Error(t)),n),r.unref?.()})])}finally{r!==void 0&&clearTimeout(r)}}i(Rp,"withTimeout");function hp(e,n){let t=_u(e),r=_u(t?.identity)??t;return r?.runtimeId===n.runtimeId&&r.profile===n.profile}i(hp,"daemonIdentityMatchesState");function wp(e,n){return e?.runtimeId===n.runtimeId&&e.pid===n.pid}i(wp,"runtimeDaemonLockMatchesState");function _u(e){if(!(e===null||typeof e!="object"||Array.isArray(e)))return e}i(_u,"asRecord");function vp(e){return e instanceof Error&&"code"in e}i(vp,"isNodeProcessError");import Mc from"node:path";import{randomUUID as ir}from"node:crypto";var w={type:"string"},Le={type:"boolean"},pe={type:"integer"},Q={type:"object",additionalProperties:!0},Ou={},_n={type:"array",items:Q},qn={oneOf:[{type:"null"},Q]},We=L({ok:Le},["ok"]),en=L({}),vi={initialize:{params:L({profile:w,token:w,autoStart:Le,endpoint:w,connectionPurpose:{type:"string",enum:["client","probe"]},clientInfo:Q,capabilities:Q},[],!0),result:L({identity:Q,capabilities:Q},["identity","capabilities"],!0)},"runtime.initialize":{params:L({profile:w,token:w,autoStart:Le,endpoint:w,connectionPurpose:{type:"string",enum:["client","probe"]},clientInfo:Q,capabilities:Q},[],!0),result:L({identity:Q,capabilities:Q},["identity","capabilities"],!0)},ping:{params:en,result:L({ok:Le,runtimeId:w},["ok","runtimeId"])},"runtime.identity":{params:en,result:Q},"runtime.status":{params:en,result:Q},"runtime.shutdown":{params:en,result:We},"runtime.capabilities":{params:en,result:Q},"daemon.status":{params:en,result:Q},"daemon.stop":{params:en,result:We},"daemon.logs":{params:en,result:Q},"daemon.preflight":{params:en,result:Q},"daemon.management.get":{params:en,result:L({runtimeId:w,revision:pe,ownerPolicy:Fu(),owner:Hp(),preflight:Q,integrations:kp()},["runtimeId","revision","ownerPolicy","owner","preflight"])},"daemon.rollbackToInline":{params:L({expectedRuntimeId:w,expectedRevision:pe,expectedOwnerPolicyRevision:pe},["expectedRuntimeId","expectedRevision","expectedOwnerPolicyRevision"]),result:L({accepted:{type:"boolean",enum:[!0]},runtimeId:w,revision:pe,ownerPolicy:Fu("inline")},["accepted","runtimeId","revision","ownerPolicy"])},"operation.get":{params:L({operationId:w,journalEpoch:w},["operationId","journalEpoch"]),result:Q},"session.create":{params:Cp(),result:St()},"session.load":{params:L({sessionId:w,timeoutMs:pe},["sessionId"]),result:St()},"session.list":{params:Ap(),result:dn(St())},"session.status":{params:L({sessionId:w},["sessionId"]),result:Q},"session.transcript":{params:L({sessionId:w,timeoutMs:pe},["sessionId"]),result:qn},"session.transcript.page":{params:L({sessionId:w,cursor:w,limit:pe,timeoutMs:pe},["sessionId"]),result:qn},"session.transcript.entryChunk":{params:L({sessionId:w,revision:w,entryIndex:pe,cursor:w,timeoutMs:pe},["sessionId","revision","entryIndex"]),result:qn},"session.transcript.search":{params:Pp(),result:Rn(xp())},"session.observe":{params:L({sessionId:w,timeoutMs:pe},["sessionId"]),result:Q},"session.conversation":{params:L({sessionId:w,timeoutMs:pe},["sessionId"]),result:qn},"session.conversation.page":{params:L({sessionId:w,cursor:w,limit:pe,timeoutMs:pe},["sessionId"]),result:qn},"session.conversation.entryChunk":{params:L({sessionId:w,revision:w,entryIndex:pe,cursor:w,timeoutMs:pe},["sessionId","revision","entryIndex"]),result:qn},"session.diagnostics":{params:L({sessionId:w,runId:w,timeoutMs:pe},["sessionId"]),result:Xp()},"session.fork":{params:$p(),result:Rn(St())},"session.notice.append":{params:L({sessionId:w,content:w,source:w},["sessionId","content"]),result:qn},"session.rewind":{params:L({sessionId:w,selector:w,historyBoundary:zu()},["sessionId"]),result:Rn(St())},"session.active_entry.set":{params:ju(),result:Rn(St())},"session.activeEntry.set":{params:ju(),result:Rn(St())},"session.compact":{params:qp(),result:Q},"session.archive":{params:L({sessionId:w},["sessionId"]),result:We},"session.unarchive":{params:L({sessionId:w},["sessionId"]),result:We},"session.delete":{params:L({sessionId:w},["sessionId"]),result:We},"session.settings.get":{params:L({sessionId:w},["sessionId"]),result:Q},"session.settings.getVersioned":{params:L({sessionId:w},["sessionId"]),result:Q},"session.autoMode.getStats":{params:L({sessionId:w},["sessionId"]),result:Rn(Q)},"session.settings.update":{params:L({sessionId:w,patch:Q},["sessionId","patch"]),result:Q},"session.settings.updateVersioned":{params:L({sessionId:w,patch:Q,expectedRevision:pe},["sessionId","patch","expectedRevision"]),result:Q},"run.start":{params:Bp(),result:Ep()},"run.input.submit":{params:L({sessionId:w,afterRunId:w,delivery:{type:"string",enum:["after_turn","interrupt"]},input:Ou,credential:Q,hostTools:Q},["sessionId","afterRunId","delivery","input"]),result:Q},"run.get":{params:vt(),result:Hu()},"run.list":{params:Kp(),result:dn(Hu())},"run.await":{params:vt(),result:Wp()},"run.abort":{params:vt(),result:Up()},"run.model.set":{params:L({runId:w,model:w},["runId"],!0),result:We},"run.provider.set":{params:L({runId:w,provider:w},["runId","provider"]),result:We},"run.reasoning.set":{params:L({runId:w,reasoning:w},["runId"],!0),result:We},"run.setModel":{params:L({runId:w,model:w},["runId"],!0),result:We},"run.setProvider":{params:L({runId:w,provider:w},["runId","provider"]),result:We},"run.setReasoning":{params:L({runId:w,reasoning:w},["runId"],!0),result:We},"request.cancel":{params:L({requestId:w},["requestId"]),result:We},"request.ack":{params:L({requestId:w},["requestId"]),result:We},"event.subscribe":{params:Nu(Jp(),!0),result:Lu()},"event.unsubscribe":{params:L({subscriptionId:w},["subscriptionId"]),result:We},"event.replay":{params:zp(),result:dn(Vp())},"permission.list":{params:Go(),result:dn($u())},"permission.listPending":{params:Go(),result:dn($u())},"permission.request":{params:Zu(),result:qu()},"permission.respond":{params:L({requestId:w,runId:w,decision:qu()},["requestId","decision"]),result:Le},"permission.grants.list":{params:en,result:Q},"permission.grants.revoke":{params:L({grantId:w,expectedRevision:pe},["grantId","expectedRevision"]),result:Le},"user_input.listPending":{params:Go(),result:dn(Q)},"user_input.respond":{params:L({requestId:w,answer:Ou,runId:w,expectedRevision:pe},["requestId","answer"],!0),result:Q},"user_input.dismiss":{params:L({requestId:w,runId:w,expectedRevision:pe},["requestId"],!0),result:Q},"credential.register":{params:L({leaseId:w,providers:{type:"array",items:w},expiresAt:w},["leaseId","providers"],!0),result:Q},"credential.get":{params:L({leaseId:w},["leaseId"]),result:{oneOf:[Q,{type:"null"}]}},"credential.revoke":{params:L({leaseId:w},["leaseId"]),result:Le},"credential.supply":{params:L({requestId:w,credential:w,error:w},["requestId"],!0),result:We},"host_tool.register":{params:L({leaseId:w,tools:{type:"array",items:Q}},["leaseId","tools"]),result:Q},"host_tool.get":{params:L({leaseId:w},["leaseId"]),result:{oneOf:[Q,{type:"null"}]}},"host_tool.invocation.get":{params:L({invocationId:w},["invocationId"]),result:{oneOf:[Q,{type:"null"}]}},"host_tool.revoke":{params:L({leaseId:w},["leaseId"]),result:Le},"host_tool.complete":{params:L({invocationId:w,result:Q,error:w},["invocationId"],!0),result:We},"workflow.list":{params:Bu(),result:_n},"workflow.get":{params:vt(),result:{oneOf:[Q,{type:"null"}]}},"workflow.subscribe":{params:Nu(Bu()),result:Lu()},"workflow.unsubscribe":{params:L({subscriptionId:w},["subscriptionId"]),result:We},"workflow.pause":{params:vt(),result:Le},"workflow.resume":{params:vt(),result:Le},"workflow.stop":{params:vt(),result:Le},"learning.list":{params:Tp(),result:jp()},"learning.get":{params:L({nameOrSlug:w},["nameOrSlug"]),result:Ju()},"learning.snapshot":{params:en,result:Fp()},"learning.events":{params:L({afterRevision:pe},[],!0),result:dn(Lp())},"learning.acknowledge":{params:L({nameOrSlug:w},["nameOrSlug"]),result:We},"learning.snooze":{params:L({nameOrSlug:w,until:w},["nameOrSlug","until"]),result:We},"learning.reject":{params:L({nameOrSlug:w},["nameOrSlug"]),result:We},"learning.disable":{params:L({nameOrSlug:w},["nameOrSlug"]),result:We},"learning.rollback":{params:L({nameOrSlug:w},["nameOrSlug"]),result:We},"learning.promote":{params:L({nameOrSlug:w,scope:{type:"string",enum:["user"]}},["nameOrSlug","scope"]),result:We},"learning.review":{params:L({nameOrSlug:w},["nameOrSlug"]),result:We},"learning.trust":{params:L({nameOrSlug:w},["nameOrSlug"]),result:We},"config.read":{params:en,result:Q},"config.patch":{params:L({patch:Q},["patch"]),result:Q},"config.reload":{params:en,result:L({ok:Le,config:Q},["ok","config"])},"model.list":{params:L({provider:w},[],!0),result:{oneOf:[Q,_n]}},"provider.list":{params:en,result:_n},"provider.custom.list":{params:en,result:_n},"provider.custom.upsert":{params:L({config:Q},["config"]),result:Q},"provider.custom.remove":{params:L({name:w},["name"]),result:Le},"mcp.server.list":{params:en,result:Q},"mcp.server.get":{params:L({name:w},["name"]),result:{oneOf:[Q,{type:"null"}]}},"mcp.server.validate":{params:L({name:w,config:Q},["name","config"]),result:{oneOf:[L({ok:Le,config:Q},["ok","config"],!0),L({ok:Le,error:w},["ok","error"],!0)]}},"mcp.server.upsert":{params:L({name:w,config:Q},["name","config"]),result:Q},"mcp.server.delete":{params:L({name:w},["name"]),result:Le},"mcp.server.remove":{params:L({name:w},["name"]),result:Le},"mcp.server.reload":{params:en,result:L({ok:Le,servers:_n},["ok","servers"])},"mcp.tool.list":{params:L({server:w,forceRefresh:Le},[],!0),result:_n},"extension.list":{params:en,result:L({active:Le,extensions:_n,diagnostics:Q},["active","extensions"],!0)},"extension.reload":{params:en,result:L({ok:Le,active:Le},["ok","active"],!0)},"command.list":{params:L({projectRoot:w},[],!0),result:_n},"command.resolve":{params:L({name:w,projectRoot:w},["name"],!0),result:qn},"skill.list":{params:L({projectRoot:w,userInvocableOnly:Le},[],!0),result:_n},"skill.describe":{params:L({name:w,projectRoot:w},["name"],!0),result:qn},"skill.read":{params:L({name:w,projectRoot:w},["name"],!0),result:qn},"artifact.create":{params:L({kind:{enum:["image","file","video"]},path:w,mediaType:w,mimeType:w,name:w,source:{enum:["user-inline","clipboard","drag-drop","file-picker"]},description:w},["kind","path"]),result:Ku()},"artifact.get":{params:L({artifactId:w},["artifactId"]),result:Rn(Ku())},"artifact.delete":{params:L({artifactId:w},["artifactId"]),result:Le},"agentRegistrations.list":{params:en,result:_n},"agentRegistrations.upsert":{params:L({registration:Q,expectedConfigurationRevision:Rn(w),expectedManagementOwner:Rn(w)},["registration"]),result:Q},"agentRegistrations.setEnabled":{params:L({agentId:w,enabled:Le,expectedConfigurationRevision:Rn(w),expectedManagementOwner:Rn(w),claimOwner:w},["agentId","enabled"]),result:Rn(Q)},"agentRegistrations.remove":{params:L({agentId:w,expectedConfigurationRevision:Rn(w),expectedManagementOwner:Rn(w)},["agentId"]),result:Le},"agents.listDispatchable":{params:Q,result:_n},"agents.describe":{params:L({agentId:w,query:Q},["agentId","query"]),result:Rn(Q)},"agents.preflight":{params:Q,result:Q},"agents.tree":{params:L({sessionId:w},["sessionId"]),result:Q},"agents.detail":{params:L({sessionId:w,actorPath:w},["sessionId","actorPath"]),result:Q},"agents.spawn":{params:L({sessionId:w,input:Q},["sessionId","input"]),result:Q},"agents.send":{params:L({sessionId:w,actorPath:w,content:w,classification:{enum:["public","internal","sensitive"]}},["sessionId","actorPath","content"],!0),result:We},"agents.followup":{params:L({sessionId:w,actorPath:w,objective:w,expectedRevision:pe},["sessionId","actorPath","objective"],!0),result:Q},"agents.interrupt":{params:L({sessionId:w,actorPath:w,reason:w},["sessionId","actorPath"],!0),result:We},"agents.output":{params:L({sessionId:w,actorPath:w,turnId:w},["sessionId","actorPath"],!0),result:Q},"agents.events":{params:L({sessionId:w,afterSequence:pe},["sessionId"],!0),result:_n},"agents.wait":{params:L({sessionId:w,afterSequence:pe,timeoutMs:pe},["sessionId"],!0),result:Rn(Q)},"context.budget.get":{params:Vo(),result:{oneOf:[Q,{type:"null"}]}},"tool.exposure.preview":{params:Vo(),result:{oneOf:[Q,{type:"null"}]}},"provider.cache.diagnostics.get":{params:Vo(),result:{oneOf:[Q,{type:"null"}]}}},Xu={event:L({subscriptionId:w,event:Q},["subscriptionId","event"]),"observation.invalidated":L({subscriptionId:w,sessionId:w,invalidation:L({code:{type:"string",enum:["observation_invalidated"]},reason:{type:"string",enum:["event_overflow","event_order","delivery_failed","runtime_changed","transport_disconnected"]},runtimeId:w,message:w},["code","reason","runtimeId","message"])},["subscriptionId","invalidation"]),"credential.request":Q,"host_tool.invoke":Q,"runtime.warning":Q},Uu={protocol:tt,version:1,methods:vi,notifications:Xu},Sp=JSON.stringify(Uu,null,2);function Ip(){return Bt}i(Ip,"listRuntimeDaemonSchemaMethods");function tr(e,n,t="$"){if(e.oneOf!==void 0)return e.oneOf.filter(a=>tr(a,n,t).length===0).length===1?[]:[`${t} must match exactly one allowed schema.`];if(e.enum!==void 0&&!e.enum.some(s=>Object.is(s,n)))return[`${t} must be one of: ${e.enum.map(String).join(", ")}.`];let r=e.type===void 0?[]:Array.isArray(e.type)?e.type:[e.type];if(r.length>0&&!r.some(s=>bp(s,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(typeof n=="number"&&e.minimum!==void 0&&n<e.minimum)return[`${t} must be at least ${e.minimum}.`];if(typeof n=="number"&&e.maximum!==void 0&&n>e.maximum)return[`${t} must be at most ${e.maximum}.`];if(Array.isArray(n)){let s=e.items;return s===void 0?[]:n.flatMap((a,u)=>tr(s,a,`${t}[${u}]`))}if(!Wu(n))return[];let o=[];for(let s of e.required??[])(!Object.prototype.hasOwnProperty.call(n,s)||n[s]===void 0)&&o.push(`${t}.${s} is required.`);for(let[s,a]of Object.entries(n)){if(a===void 0)continue;let u=e.properties?.[s];if(u!==void 0){o.push(...tr(u,a,`${t}.${s}`));continue}e.additionalProperties===!1?o.push(`${t}.${s} is not allowed.`):typeof e.additionalProperties=="object"&&o.push(...tr(e.additionalProperties,a,`${t}.${s}`))}return o}i(tr,"validateRuntimeDaemonJsonSchema");function bp(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 Wu(n);case"string":return typeof n=="string"}}i(bp,"matchesJsonSchemaType");function Wu(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}i(Wu,"isJsonObject");function kp(){let e=L({code:{type:"string",enum:["invalid-config","activation-failed","watcher-degraded"]},message:w,time:w},["code","message","time"]),n=L({domain:{type:"string",enum:["mcp","a2a","extensions"]},path:w,revision:w,source:{type:"string",enum:["user","legacy-user","default"]},lastReloadAt:w,diagnostic:e,watching:Le},["domain","path","watching"]);return L({state:{type:"string",enum:["healthy","degraded"]},domains:{type:"array",items:n}},["state","domains"])}i(kp,"integrationHealthSchema");function L(e,n=[],t=!1){return{type:"object",properties:e,required:n,additionalProperties:t}}i(L,"objectSchema");function vt(){return L({runId:w},["runId"])}i(vt,"runIdParamsSchema");function Nu(e,n=!1){return L({filter:e},n?["filter"]:[])}i(Nu,"filterParamsSchema");function Vo(){return L({sessionId:w,runId:w,contextKind:{type:"string",enum:["root","child"]},agentId:w},[],!0)}i(Vo,"diagnosticParamsSchema");function Lu(){return L({subscriptionId:w},["subscriptionId"])}i(Lu,"subscriptionSchema");function Ep(){return L({runId:w,sessionId:w,turnId:w},["runId","sessionId"],!0)}i(Ep,"runStartedSchema");function dn(e){return{type:"array",items:e}}i(dn,"arraySchema");function Rn(e){return{oneOf:[{type:"null"},e]}}i(Rn,"nullableSchema");function Pp(){return L({sessionId:w,query:w,limit:pe,role:{type:"string",enum:["user","assistant"]},scope:{type:"string",enum:["compacted","all"]},timeoutMs:pe},["sessionId","query"])}i(Pp,"transcriptSearchParamsSchema");function xp(){let e=L({entryId:w,logicalId:w,sourceEntryId:w,timestamp:w,role:{type:"string",enum:["user","assistant"]},source:{type:"string",enum:["user","assistant","tool","child_task"]},active:Le,score:{type:"number"},snippet:w,citation:w,entryIndex:pe},["entryId","timestamp","role","source","active","score","snippet","citation","entryIndex"]);return L({revision:w,hits:dn(e)},["revision","hits"])}i(xp,"transcriptSearchResultSchema");function Cp(){return L({sessionId:w,title:w,projectPath:w,gitRoot:w,surface:w,profileId:w,tag:w})}i(Cp,"createSessionParamsSchema");function St(){return L({id:w,cursor:w,title:w,gitRoot:w,workspaceRoot:w,surface:w,profileId:w,createdAt:w,msgCount:pe,tag:w,projectKey:w,archived:Le},["id","title"],!0)}i(St,"sessionSchema");function Ap(){return L({projectRoot:w,scope:{enum:["user","managed-task-worker","all"]},includeArchived:Le,limit:pe,before:w,tag:w,surface:w,cursor:w})}i(Ap,"sessionFilterSchema");function Tp(){return L({search:w,carrier:{enum:["skill","extension","workflow_handoff"]},lifecycle:{enum:["opportunity","drafting","ready","testing","active_learned","promoted_user","quarantined","archived","rejected"]},limit:pe,cursor:w})}i(Tp,"learningQuerySchema");function Dp(){return{capabilityId:w,displayName:w,slug:w,lifecycle:Yo(),revision:pe,createdAt:w,updatedAt:w,source:L({kind:{enum:["learning_controller","f224_proposal","skill_learning_loop","legacy_manual"]},proposalId:w},["kind"]),lastAction:{enum:["review","trust","reject","disable","rollback","archive","restore","promote"]},artifactPath:w,previousGoodRevision:pe,previousLifecycle:Yo(),diagnostics:dn(w)}}i(Dp,"learnedCapabilityCommonProperties");function Mp(){return["schemaVersion","capabilityId","displayName","slug","carrier","lifecycle","revision","createdAt","updatedAt","source"]}i(Mp,"learnedCapabilityRequired");function _p(){return L({kind:{type:"string",enum:["skill_markdown"]},relativePath:w,fingerprint:w,contentRevision:pe},["kind","relativePath","fingerprint","contentRevision"])}i(_p,"learnedCapabilityArtifactSchema");function Op(){return L({maxInvocations:{type:"integer",enum:[3]},invocationCount:pe,verifiedSuccesses:pe,credibleNegatives:pe,binding:L({bindingId:w,ownerSessionRef:w,expiresAt:w},["bindingId","ownerSessionRef","expiresAt"]),invocations:dn(Np())},["maxInvocations","invocationCount","verifiedSuccesses","credibleNegatives","invocations"])}i(Op,"learnedCapabilityCanarySchema");function Np(){return L({invocationId:w,bindingId:w,usageSessionHash:w,artifactRevision:pe,artifactFingerprint:w,status:{type:"string",enum:["pending","verified_success","credible_negative","inconclusive"]},evidenceRefs:dn(w),invokedAt:w,completedAt:w},["invocationId","bindingId","status","evidenceRefs","invokedAt"])}i(Np,"learnedCapabilityInvocationSchema");function Ju(){let e=Dp(),n=_p(),t=Mp(),r=L({...e,schemaVersion:{type:"integer",enum:[1]},carrier:{enum:["skill","extension","workflow_handoff"]}},t),o=L({...e,schemaVersion:{type:"integer",enum:[2]},carrier:{type:"string",enum:["skill"]},scope:L({configHomeHash:w,tenantHash:w,projectHash:w},["configHomeHash","tenantHash","projectHash"]),artifact:n,previousGoodArtifact:n,provenance:L({jobId:w,inputHash:w,decisionId:w,actionId:w},["jobId","inputHash","decisionId","actionId"]),canary:Op()},[...t,"scope","artifact","provenance","canary"]);return{oneOf:[r,o]}}i(Ju,"learnedCapabilitySchema");function Yo(){return{enum:["opportunity","drafting","ready","testing","active_learned","promoted_user","quarantined","archived","rejected"]}}i(Yo,"learningLifecycleSchema");function Lp(){return L({schemaVersion:{type:"integer",enum:[1]},sequence:pe,eventId:w,capabilityId:w,capabilityRevision:pe,kind:{enum:["opportunity","drafting","ready","testing","activated","promoted","attention","archived","rejected"]},lifecycle:Yo(),displayName:w,slug:w,carrier:{enum:["skill","extension","workflow_handoff"]},createdAt:w},["schemaVersion","sequence","eventId","capabilityId","capabilityRevision","kind","lifecycle","displayName","slug","carrier","createdAt"])}i(Lp,"learningEventSchema");function Fp(){return L({ready:pe,newlyActive:pe,attention:pe,active:pe,revision:pe},["ready","newlyActive","attention","active","revision"])}i(Fp,"learningSnapshotSchema");function jp(){return L({items:dn(Ju()),nextCursor:w,revision:pe},["items","revision"])}i(jp,"learningPageSchema");function Fu(e){return L({mode:{type:"string",enum:e===void 0?["daemon","inline"]:[e]},revision:pe,updatedAt:w},["mode","revision","updatedAt"])}i(Fu,"ownerPolicySchema");function Hp(){return L({runtimeId:w,pid:pe,createdAt:w,kind:{type:"string",enum:["daemon","inline"]},processContainment:{type:"string",enum:["windows-job"]},supervisorPid:pe},["runtimeId","pid","createdAt"])}i(Hp,"ownerIdentitySchema");function $p(){return L({sessionId:w,selector:w,newSessionId:w,title:w,historyBoundary:zu()},["sessionId"])}i($p,"forkSessionParamsSchema");function zu(){return L({entryId:w,sourceRevision:w},["entryId","sourceRevision"])}i(zu,"conversationHistoryBoundarySchema");function ju(){return L({sessionId:w,entryId:w},["sessionId","entryId"])}i(ju,"activeEntryParamsSchema");function qp(){return L({sessionId:w,provider:w,model:w,customInstructions:w,contextWindow:pe},["sessionId"])}i(qp,"compactSessionParamsSchema");function Bp(){return L({sessionId:w,prompt:w,input:{oneOf:[Q,dn(Q)]},mode:{enum:["coding","managed_task"]},permissionBroker:{enum:["runtime","client"]},options:Q},["sessionId"],!0)}i(Bp,"startRunParamsSchema");function Kp(){return L({sessionId:w,phase:{oneOf:[rr(),dn(rr())]}})}i(Kp,"runFilterSchema");function Hu(){return L({runId:w,sessionId:w,turnId:w,phase:rr(),stage:Yu(),stageChangedAt:w,activeSubtaskCount:pe,startedAt:w,endedAt:w,provider:w,model:w,reasoning:w,error:w,lifecycleError:L({code:{enum:["actor_settlement_retrying","actor_settlement_not_persisted"]},message:w,retryable:Le},["code","message","retryable"]),terminal:Vu(),stop:Gu()},["runId","sessionId","phase","startedAt","provider"],!0)}i(Hu,"runStatusSchema");function Xp(){let e=L({code:{enum:["run_control_unknown","run_status_unknown","owner_liveness_unconfirmed","owner_recovery_required","stop_outcome_unconfirmed","actor_settlement_retrying","actor_settlement_not_persisted","run_failed","terminal_time_unknown"]},message:w},["code","message"]),n=L({controlRecord:{enum:["present","unknown"]},runId:w,turnId:w,state:{enum:["queued","active","terminal","unknown"]},phase:rr(),stage:Yu(),stageChangedAt:w,terminalAt:w,terminalTimeKnown:Le,terminal:Vu(),activeSubtaskCount:{oneOf:[pe,{type:"null"}]},activeSubtaskCountSource:{enum:["run_status","unknown"]},stop:Gu(),interruptInputs:dn(Q),errors:dn(e)},["controlRecord","state","stage","terminalTimeKnown","activeSubtaskCount","activeSubtaskCountSource","errors"]);return L({schemaVersion:{type:"integer",enum:[1]},captureStartedAt:w,capturedAt:w,sdkVersion:w,runtimeVersion:w,daemonVersion:{oneOf:[w,{type:"null"}]},runtimeId:w,runtimeMode:{enum:["embedded","daemon"]},sessionId:w,observation:L({cursor:Qo(),transcriptRevision:w},["cursor","transcriptRevision"]),run:n},["schemaVersion","captureStartedAt","capturedAt","sdkVersion","runtimeVersion","daemonVersion","runtimeId","runtimeMode","sessionId","observation","run"])}i(Xp,"sessionDiagnosticsSchema");function Vu(){return L({revision:pe,kind:{enum:["completed","failed","cancelled","interrupted"]},code:{enum:["completed","run_failed","blocked","cancelled","interrupted","runtime_restarted","daemon_crashed","credential_unavailable","host_not_dispatched","host_outcome_unknown","actor_settlement_not_persisted","control_history_untrusted"]},effectOutcome:{enum:["none","known","unknown"]},message:w},["revision","kind","code","effectOutcome"])}i(Vu,"runtimeTerminalFactSchema");function Gu(){return L({requestedAt:w,state:{enum:["unknown","confirmed"]},outcome:{enum:["unknown","cancelled","interrupted","completed","failed"]},reason:w,resolvedAt:w},["requestedAt","state","outcome","reason"])}i(Gu,"runStopStatusSchema");function Up(){return L({runId:w,sessionId:w,accepted:Le,state:{type:"string",enum:["unknown","confirmed"]},outcome:{type:"string",enum:["unknown","cancelled","interrupted","completed","failed"]},phase:rr(),revision:pe},["runId","sessionId","accepted","state","outcome","phase","revision"])}i(Up,"runStopReceiptSchema");function Wp(){return L({runId:w,sessionId:w,phase:rr(),result:Q,error:{oneOf:[w,Q]}},["runId","sessionId","phase"],!0)}i(Wp,"runResultSchema");function rr(){return{enum:["queued","running","waiting_agent","recovering","waiting_permission","waiting_user_input","unknown","completed","failed","cancelled","interrupted"]}}i(rr,"runPhaseSchema");function Yu(){return{enum:["queued","executing","waiting_agent","recovering","finalizing","terminal","unknown","starting","routing","preflight","round","worker","upgrade","verifying"]}}i(Yu,"runStageSchema");function Jp(){return Qu()}i(Jp,"eventFilterSchema");function zp(){return Qu({after:Qo(),limit:{type:"integer",minimum:1,maximum:Number.MAX_SAFE_INTEGER}})}i(zp,"eventReplayFilterSchema");function Qu(e={}){let n={type:{oneOf:[w,dn(w)]},...e};return{oneOf:[L({...n,sessionId:w},["sessionId"]),L({...n,runId:w},["runId"]),L({...n,sessionId:w,runId:w},["sessionId","runId"])]}}i(Qu,"scopedEventFilterSchema");function Vp(){return L({id:w,seq:pe,cursor:Qo(),time:w,sessionId:w,runId:w,turnId:w,type:w,payload:{}},["id","seq","cursor","time","sessionId","runId","type","payload"],!0)}i(Vp,"runtimeEventSchema");function Qo(){return L({sessionId:w,journalEpoch:w,seq:pe},["sessionId","journalEpoch","seq"])}i(Qo,"runtimeSessionCursorSchema");function Go(){return L({sessionId:w,runId:w,toolName:w})}i(Go,"permissionFilterSchema");function Zu(){return L({sessionId:w,runId:w,turnId:w,toolCallId:w,toolName:w,reason:w,risk:{enum:["low","medium","high"]},inputPreview:w,toolInput:Q,executionCwd:{type:"string",maxLength:4096},autoModeDiagnostics:Q,expiresAt:w,timeoutMs:pe},["sessionId","runId","toolName"])}i(Zu,"permissionRequestInputSchema");function $u(){let{toolInput:e,...n}=Zu().properties??{};return L({...n,inputPreview:{type:"string",maxLength:8192},grantSuggestions:dn(L({id:w,kind:{enum:["session","persistent"]},label:{type:"string",maxLength:512}},["id","kind","label"])),id:w,createdAt:w},["id","sessionId","runId","toolName","createdAt"],!0)}i($u,"permissionRequestSchema");function qu(){return{oneOf:[L({type:{enum:["allow_once"]}},["type"]),L({type:{enum:["allow_session"]},suggestionId:w},["type","suggestionId"]),L({type:{enum:["allow_always"]},suggestionId:w},["type","suggestionId"]),L({type:{enum:["allow_always"]},scope:L({toolName:w,sessionId:w,matcher:Gp()})},["type","scope"]),L({type:{enum:["reject"]},reason:w,cause:{enum:["approval_timeout"]}},["type"])]}}i(qu,"permissionDecisionSchema");function Gp(){let e={version:{type:"integer",enum:[1]},toolName:w,fingerprint:w};return{oneOf:[L({...e,kind:{enum:["exact-command"]},shell:{enum:["cmd","posix","powershell"]},shellContractFingerprint:w,commandFingerprint:w,cwd:w,executable:w,argvFingerprint:w,background:Le},["version","kind","toolName","fingerprint","shell","commandFingerprint","cwd","background"]),L({...e,kind:{enum:["exact-path"]},path:w},["version","kind","toolName","fingerprint","path"]),L({...e,kind:{enum:["exact-call"]},cwd:w,inputFingerprint:w},["version","kind","toolName","fingerprint","cwd","inputFingerprint"])]}}i(Gp,"runtimePermissionMatcherSchema");function Bu(){return L({runId:w,activeOnly:Le,limit:pe})}i(Bu,"workflowFilterSchema");function Ku(){return L({id:w,kind:{enum:["image","file","video"]},path:w,sizeBytes:pe,mediaType:w,mimeType:w,name:w,source:{enum:["user-inline","clipboard","drag-drop","file-picker"]},description:w,createdAt:w},["id","kind","path","sizeBytes","createdAt"],!0)}i(Ku,"artifactSchema");import{createHash as Yp,randomUUID as Cr}from"node:crypto";import*as sn from"node:fs";import Qp from"node:path";var Zp=6e4,eg=1048576,ng=64,tg=4096,ec=1e3;function es(){return{callTimeoutMs:rc("KODAX_REVERSE_CALL_TIMEOUT_MS",Zp),maxResultBytes:rc("KODAX_HOST_TOOL_MAX_RESULT_BYTES",eg)}}i(es,"runtimeDaemonReverseBridgeLimits");function ns(e,n={}){let t=es(),r=new Map,o=new Map,s=new Map,a=new Map,u=new Map((n.initialInvocations??[]).map(h=>[h.invocationId,h])),c=new Set,p=new Map,R=new Map,I,y=!1,x=i(()=>{if(y)throw qe("host_tool_unavailable","Host bridge connection is closed.")},"requireOpen"),f=i(()=>{let h=Date.now();for(let[P,T]of r)T.expiresAt!==void 0&&Date.parse(T.expiresAt)<=h&&r.delete(P)},"pruneExpiredCredentials"),C=i(h=>{for(let P of s.values())clearTimeout(P.timer),P.reject(qe("credential_unavailable",h));s.clear()},"rejectPendingCredentialRequests"),m=i(()=>{for(let[h,P]of a)P.dispatched&&(a.delete(h),clearTimeout(P.timer),k(h,"unknown"),P.reject(qe("host_tool_unknown","Host tool client disconnected; the side-effect outcome is unknown.")))},"rejectDispatchedHostCalls"),k=i((h,P)=>{let T=u.get(h);if(T===void 0)return;let _={...T,state:P,updatedAt:new Date().toISOString()},N=new Map(u);for(N.delete(h),N.set(h,_);N.size>ec;){let q=N.keys().next().value;if(q===void 0)break;N.delete(q)}n.onInvocationsChanged?.([...N.values()]),u.clear();for(let[q,te]of N)u.set(q,te)},"updateHostToolInvocation"),l=i((h,P)=>{let T=I;if(!(P.dispatched||T===void 0||!c.has(P.leaseId)))try{k(h,"dispatched"),P.dispatched=!0,T.notify(P.notification)}catch{a.delete(h),clearTimeout(P.timer),k(h,"unknown"),P.reject(qe("host_tool_unknown","Host tool transport failed after durable dispatch; the side-effect outcome is unknown."))}},"dispatchPendingHostCall"),v=i(async h=>{if(x(),o.get(h.lease.id)!==h.lease)throw qe("host_tool_unavailable","Host tool lease was revoked.");let P=`hostcall_${Cr().replace(/-/g,"")}`,T=Xt("host_tool.invoke",{invocationId:P,leaseId:h.lease.id,toolName:h.descriptor.name,sessionId:h.sessionId,runId:h.runId,input:h.toolInput,sideEffect:h.descriptor.sideEffect}),_={invocationId:P,leaseId:h.lease.id,toolName:h.descriptor.name,sessionId:h.sessionId,runId:h.runId,state:"prepared",updatedAt:new Date().toISOString()},N=new Map(u);for(N.set(P,_);N.size>ec;){let de=N.keys().next().value;if(de===void 0)break;N.delete(de)}n.onInvocationsChanged?.([...N.values()]),u.clear();for(let[de,Ie]of N)u.set(de,Ie);let q=new Promise((de,Ie)=>{let Te=setTimeout(()=>{let Pe=a.get(P);Pe&&(a.delete(P),k(P,Pe.dispatched?"unknown":"not_dispatched"),Ie(qe(Pe.dispatched?"host_tool_unknown":"host_tool_unavailable",Pe.dispatched?`Host tool ${h.descriptor.name} did not return a certain result before timeout.`:`Host tool ${h.descriptor.name} had no connected host before timeout.`)))},t.callTimeoutMs);Te.unref?.(),a.set(P,{invocationId:P,resolve:de,reject:Ie,timer:Te,notification:T,leaseId:h.lease.id,dispatched:!1})}),te=a.get(P);return te&&l(P,te),q},"invokeHostTool");return e!==void 0&&(I={id:`bridge_${Cr().replace(/-/g,"")}`,notify:e}),{attachTransport(h){x(),I!==void 0&&(C("Credential client connection was replaced."),m());let P=`bridge_${Cr().replace(/-/g,"")}`;return I={id:P,notify:h},c.clear(),{close(){I?.id===P&&(I=void 0,c.clear(),C("Credential client disconnected."),m())}}},registerCredential(h){if(x(),f(),h.providers.length===0||h.providers.some(T=>T.trim().length===0)||new Set(h.providers).size!==h.providers.length)throw qe("invalid_params","Credential lease providers must be non-empty and unique.");if(h.expiresAt!==void 0&&!Number.isFinite(Date.parse(h.expiresAt)))throw qe("invalid_params","Credential lease expiresAt must be an ISO timestamp.");if(r.has(h.leaseId))throw qe("conflict","Credential lease ID is already registered on this connection.");let P={id:h.leaseId,providers:[...h.providers],...h.expiresAt!==void 0?{expiresAt:h.expiresAt}:{},providerSet:new Set(h.providers)};return r.set(h.leaseId,P),tc(P)},getCredential(h){f();let P=r.get(h);return P===void 0?void 0:tc(P)},revokeCredential(h){return r.delete(h)},supplyCredential(h){let P=s.get(h.requestId);return P?(s.delete(h.requestId),clearTimeout(P.timer),h.credential!==void 0&&h.credential.length>0?P.resolve(h.credential):P.reject(qe("credential_unavailable",h.error??"Credential broker returned no credential.")),!0):!1},async acquireCredential(h){x();let P=r.get(h.leaseId);if(!P||!P.providerSet.has(h.provider))throw qe("credential_unavailable","Credential lease is missing or does not allow this provider.");if(P.expiresAt!==void 0&&Date.parse(P.expiresAt)<=Date.now())throw r.delete(P.id),qe("credential_unavailable","Credential lease expired.");let T=I;if(!T)throw qe("credential_unavailable","Credential broker transport is unavailable.");let _=`credreq_${Cr().replace(/-/g,"")}`,N=P.expiresAt===void 0?t.callTimeoutMs:Math.min(t.callTimeoutMs,Math.max(1,Date.parse(P.expiresAt)-Date.now())),q=new Promise((te,de)=>{let Ie=setTimeout(()=>{s.delete(_),de(qe("credential_unavailable","Credential lease expired or broker timed out."))},N);Ie.unref?.(),s.set(_,{resolve:te,reject:de,timer:Ie})});try{T.notify(Xt("credential.request",{requestId:_,leaseId:P.id,provider:h.provider,sessionId:h.sessionId,runId:h.runId}))}catch{let te=s.get(_);te&&(s.delete(_),clearTimeout(te.timer),te.reject(qe("credential_unavailable","Credential request was not dispatched.")))}return q.then(te=>(p.set(h.runId,{leaseId:h.leaseId,provider:h.provider}),te))},registerHostTools(h){x();let P=h.tools.map(_=>_.name);if(P.length===0||P.length>ng||new Set(P).size!==P.length)throw qe("invalid_params","Host tool names must be non-empty and unique.");if(o.has(h.leaseId))throw qe("conflict","Host tool lease ID is already registered on this connection.");for(let _ of h.tools)ag(_);let T={id:h.leaseId,tools:h.tools.map(_=>({..._,inputSchema:{..._.inputSchema}})),byName:new Map(h.tools.map(_=>[_.name,_]))};return o.set(h.leaseId,T),c.add(h.leaseId),{id:T.id,tools:T.tools}},getHostTools(h){let P=o.get(h);if(P!==void 0){c.add(h);for(let[T,_]of a)_.leaseId===h&&l(T,_)}return P===void 0?void 0:{id:P.id,tools:P.tools}},revokeHostTools(h){return o.delete(h)},completeHostTool(h){let P=a.get(h.invocationId);if(!P)return!1;if(h.result!==void 0){if(typeof h.result.content!="string")throw qe("invalid_params","Host tool result content must be a string.");dg(h.result,t.maxResultBytes,"Host tool result")}return a.delete(h.invocationId),clearTimeout(P.timer),h.result!==void 0?(k(h.invocationId,"completed"),P.resolve(h.result)):(k(h.invocationId,"unknown"),P.reject(qe("host_tool_unknown",h.error??"Host tool result is unknown."))),!0},getHostToolInvocation(h){return u.get(h)},createHostToolRuntime(h){x();let P=o.get(h.leaseId);if(!P)throw qe("host_tool_unavailable","Host tool lease is missing.");R.set(h.runId,h.leaseId);let T=i(async(_,N,q)=>{if(_!=="mcp"||q?.kind!==void 0&&q.kind!=="tool")return[];if(q?.server!==void 0&&q.server!=="host")return[];let te=N.toLowerCase();return P.tools.filter(de=>de.name.toLowerCase().includes(te)||de.description.toLowerCase().includes(te)).slice(0,q?.limit??P.tools.length).map(de=>({id:ug(P.id,de.name),name:de.name,description:de.description,kind:"tool",server:"host",inputSchema:de.inputSchema}))},"searchCapabilities");return{hasCapabilityProvider(_){return _==="mcp"},searchCapabilities:T,async searchCapabilitySnapshot(_,N,q){return{items:await T(_,N,q),revision:`host:${P.id}`,complete:!0,freshness:"live"}},async describeCapability(_,N){if(_!=="mcp")return;let q=ic(P,N);return q?{...q,id:N,kind:"tool",server:"host"}:void 0},async executeCapability(_,N,q){if(_!=="mcp")throw qe("host_tool_unavailable","Unsupported host capability provider.");let te=ic(P,N);if(!te)throw qe("host_tool_unavailable","Host tool is not bound to this run.");return await v({lease:P,descriptor:te,sessionId:h.sessionId,runId:h.runId,toolInput:q})},async readCapability(){throw qe("host_tool_unavailable","Host tools do not expose resource reads.")},async getCapabilityPrompt(){},async getCapabilityPromptContext(){}}},getRunRequirements(h){let P=p.get(h),T=R.get(h);if(!(P===void 0&&T===void 0))return{...P!==void 0?{credential:{...P,state:"ready"}}:{},...T!==void 0?{hostTools:{leaseId:T,state:o.has(T)?c.has(T)?"ready":"waiting_host":"expired"}}:{}}},close(){if(!y){y=!0,I=void 0,c.clear(),r.clear(),o.clear(),C("Credential client disconnected.");for(let h of a.values())clearTimeout(h.timer),k(h.invocationId,h.dispatched?"unknown":"not_dispatched"),h.reject(qe(h.dispatched?"host_tool_unknown":"host_tool_unavailable",h.dispatched?"Host tool client disconnected; the side-effect outcome is unknown.":"Host tool client disconnected before dispatch."));a.clear(),u.clear()}}}}i(ns,"createRuntimeDaemonReverseBridge");function oc(e={}){let n=new Map,t=ig(e.invocationStateFile),r=!1;return{attach(o){if(r)throw qe("host_tool_unavailable","Host bridge hub is closed.");if(o.instanceSecret!==void 0&&(o.instanceSecret.length<32||o.instanceSecret.length>512))throw qe("invalid_params","Runtime client instanceSecret must contain between 32 and 512 characters.");let s=o.instanceSecret===void 0?`ephemeral:${o.connectionId}`:`stable:${o.principalId}:${Yp("sha256").update(o.instanceSecret).digest("hex")}`,a=s.startsWith("stable:")?rg(t.get(s)??[]):[],u=n.get(s)??ns(void 0,{initialInvocations:a,...s.startsWith("stable:")?{onInvocationsChanged(p){t.set(s,p),nc(e.invocationStateFile,t)}}:{}});!n.has(s)&&a.length>0&&(t.set(s,a),nc(e.invocationStateFile,t)),n.set(s,u);let c=u.attachTransport(o.notify);return{bridge:u,close(){c.close()}}},getRunRequirements(o){for(let s of n.values()){let a=s.getRunRequirements(o);if(a!==void 0)return a}},close(){if(!r){r=!0;for(let o of n.values())o.close();n.clear()}}}}i(oc,"createRuntimeDaemonReverseBridgeHub");function rg(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)}i(rg,"recoverHostToolInvocationStates");function ig(e){if(e===void 0||!sn.existsSync(e))return new Map;let n;try{n=JSON.parse(sn.readFileSync(e,"utf8"))}catch(r){throw new Error(`Host Tool invocation recovery store is untrusted: ${cg(r).message}`)}if(!Zo(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(!Zo(r)||typeof r.key!="string"||!Array.isArray(r.invocations))throw new Error("Host Tool invocation recovery store is untrusted: invalid client entry.");let o=r.invocations.map(og);t.set(r.key,o)}return t}i(ig,"loadHostToolInvocationStore");function nc(e,n){if(e===void 0)return;sn.mkdirSync(Qp.dirname(e),{recursive:!0});let t=`${e}.${process.pid}.${Cr()}.tmp`,r;try{r=sn.openSync(t,"wx",384),sn.writeFileSync(r,`${JSON.stringify({version:1,clients:[...n].map(([o,s])=>({key:o,invocations:s}))},null,2)}
|
|
21
|
+
`,"utf8"),sn.fsyncSync(r),sn.closeSync(r),r=void 0,sn.renameSync(t,e)}finally{r!==void 0&&sn.closeSync(r),sn.rmSync(t,{force:!0})}}i(nc,"saveHostToolInvocationStore");function og(e){if(!Zo(e)||typeof e.invocationId!="string"||typeof e.leaseId!="string"||typeof e.toolName!="string"||typeof e.sessionId!="string"||typeof e.runId!="string"||!sg(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}}i(og,"parseHostToolInvocationStatus");function sg(e){return e==="prepared"||e==="dispatched"||e==="completed"||e==="unknown"||e==="not_dispatched"}i(sg,"isHostToolInvocationState");function tc(e){return{id:e.id,providers:e.providers,...e.expiresAt!==void 0?{expiresAt:e.expiresAt}:{}}}i(tc,"publicCredentialLease");function ag(e){if(!e.name||!e.description||!e.inputSchema)throw qe("invalid_params","Host tool descriptors require name, description, and inputSchema.");if(!["none","idempotent","non_idempotent"].includes(e.sideEffect))throw qe("invalid_params",`Invalid host tool sideEffect for ${e.name}.`);if(!/^[A-Za-z][A-Za-z0-9_.-]{0,127}$/.test(e.name))throw qe("invalid_params","Host tool name is invalid.");if(e.description.length>tg)throw qe("invalid_params",`Host tool description is too long: ${e.name}.`)}i(ag,"validateHostToolDescriptor");function dg(e,n,t){let r;try{r=JSON.stringify(e)}catch{throw qe("invalid_params",`${t} must be JSON-serializable.`)}if(Buffer.byteLength(r,"utf8")>n)throw qe("invalid_params",`${t} exceeds the ${n}-byte limit.`)}i(dg,"assertJsonByteLimit");function rc(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}i(rc,"positiveIntegerEnvironment");function ug(e,n){return`host:${e}:${n}`}i(ug,"hostToolCapabilityId");function ic(e,n){let t=`host:${e.id}:`;return n.startsWith(t)?e.byName.get(n.slice(t.length)):void 0}i(ic,"descriptorFromCapabilityId");function qe(e,n){return Object.assign(new Error(n),{code:e})}i(qe,"bridgeError");function Zo(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}i(Zo,"isRecord");function cg(e){return e instanceof Error?e:new Error(String(e))}i(cg,"normalizeError");var sc=512*1024,ac=1e3,lg=["code","cli","repl","acp","a2a","sdk","ide","space-desktop"],mg=new Set(["ping","runtime.identity","runtime.status","runtime.capabilities","daemon.status"]),wc=["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"],vc=new Map([...hn("session:observe",["ping","runtime.identity","runtime.status","runtime.capabilities","daemon.status","daemon.logs","operation.get","session.load","session.list","session.status","session.transcript","session.transcript.page","session.transcript.entryChunk","session.observe","session.diagnostics","session.settings.get","session.transcript.search","session.conversation","session.conversation.page","session.conversation.entryChunk","session.settings.getVersioned","session.autoMode.getStats","run.get","run.list","run.await","request.cancel","request.ack","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","provider.cache.diagnostics.get","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"]),...hn("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"]),...hn("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"]),...hn("permission:respond",["permission.respond"]),...hn("permission:grant-admin",["permission.grants.revoke"]),...hn("interaction:respond",["user_input.respond","user_input.dismiss"]),...hn("credential:register",["credential.register","credential.get","credential.revoke","credential.supply"]),...hn("host-tool:register",["host_tool.register","host_tool.get","host_tool.invocation.get","host_tool.revoke","host_tool.complete"]),...hn("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"]),...hn("workflow:control",["workflow.pause","workflow.resume","workflow.stop"]),...hn("learning:read",["learning.list","learning.get","learning.snapshot","learning.events"]),...hn("learning:control",["learning.acknowledge","learning.snooze","learning.reject","learning.disable","learning.rollback","learning.promote","learning.review","learning.trust"]),...hn("artifact:write",["artifact.create","artifact.delete"]),...hn("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"]),...hn("owner:admin",["daemon.rollbackToInline"]),...hn("daemon:admin",["runtime.shutdown","daemon.stop","daemon.preflight","daemon.management.get"])]),dc=Bt.filter(e=>e!=="initialize"&&e!=="runtime.initialize"&&!vc.has(e));if(dc.length>0)throw new Error(`Runtime daemon methods are missing authorization scopes: ${dc.join(", ")}`);function hn(e,n){return n.map(t=>[t,e])}i(hn,"scopeEntries");function us(){let e=new Map,n=i(()=>{if(!(e.size<=ac))for(let[r,o]of e){if(e.size<=ac)break;o.settled&&e.delete(r)}},"pruneSettled"),t=i((r,o)=>{e.get(r)===o&&(o.settled=!0,n())},"markSettled");return{remember(r,o){let s,a=o.finally(()=>{s&&t(r,s)});a.catch(()=>{}),s={promise:a,settled:!1},e.set(r,s),n()},get(r){return e.get(r)?.promise},clear(){e.clear()}}}i(us,"createRuntimeDaemonRunResultStore");function Ar(e){return e==="initialize"||e==="runtime.initialize"}i(Ar,"isInitializeMethod");function Sc(e){let n=new Map,t=new Map,r=i((T,_)=>{t.get(T)===_&&t.delete(T)},"deleteInFlightRequest"),o=new Map,s=e.runResults??us(),a=`connection_${ir().replace(/-/g,"")}`,u=ns(e.notify),c=u,p,R=!1,I=!1,y="client",x={},f=`client_${ir().replace(/-/g,"")}`,C,m,k=new Set(e.grantedScopes??wc),l=i(T=>{let _=n.get(T);if(!_)return!1;n.delete(T);let N=o.get(T);if(o.delete(T),N!==void 0){let q=t.get(N.requestId);q===N.inFlight&&q.subscriptionIds.delete(T),q===N.inFlight&&q.completed&&q.subscriptionIds.size===0&&r(N.requestId,q)}return _.close(),!0},"closeSubscription"),v=i((T,_)=>{n.set(T,_)},"rememberSubscription"),h=i((T,_)=>{bc(_)&&x.contextDiagnostics!==!0||e.notify?.(Xt("event",{subscriptionId:T,event:_}))},"notify");return{handle:i(async T=>{let _;try{if(Zd(T.method))throw ke("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 N=T;hc(N.method,"params",N.params===void 0?{}:N.params,"invalid_params");let q;if(!R&&!Ar(N.method))throw ke("not_initialized","Runtime daemon connection must initialize before runtime methods are accepted.");if(R&&Ar(N.method))throw ke("conflict","Runtime daemon connection is already initialized.");if(R&&y==="probe"&&!mg.has(N.method))throw ke("unauthorized","Runtime daemon probe connections are read-only and method-limited.");if(Ar(N.method)){q=Ke(N.params),y=q?.connectionPurpose==="probe"?"probe":"client";let be=typeof q?.token=="string"?q.token:void 0;if(e.authToken!==void 0&&be!==e.authToken)throw ke("unauthorized","Runtime daemon initialize token is invalid.");let ve=typeof q?.profile=="string"?q.profile:void 0;if(ve!==void 0&&ve!==e.runtime.identity.profile)throw ke("conflict",`Runtime daemon profile mismatch: expected ${e.runtime.identity.profile}, got ${ve}.`);f=hg(q?.clientInfo,f),C=Ng(q?.clientInfo),m=Lg(q?.clientInfo)}if(Ar(N.method)||(yg(N.method,k),Rg(N,k)),t.has(N.id))throw ke("invalid_request",`Runtime daemon request id is already in flight: ${N.id}.`);if(N.method==="request.cancel"){let be=_e(N.params,"requestId"),ve=t.get(be);if(ve?.cancellable===!0){ve.controller.abort(Object.assign(new Error("Runtime daemon request cancelled."),{code:"read_cancelled"}));for(let Fe of ve.subscriptionIds)l(Fe)}return di(N.id,{ok:ve?.cancellable===!0})}if(N.method==="request.ack"){let be=_e(N.params,"requestId"),ve=t.get(be);if(ve?.completed===!0){for(let Fe of ve.subscriptionIds)o.get(Fe)?.inFlight===ve&&o.delete(Fe);r(be,ve)}return di(N.id,{ok:ve?.completed===!0})}let te=new AbortController,de={controller:te,subscriptionIds:new Set,cancellable:!ai(N.method),completed:!1};t.set(N.id,de),_={id:N.id,subscriptionIds:de.subscriptionIds,inFlight:de};let Ie=i(()=>wg(N,e,s,(be,ve)=>{if(te.signal.aborted||t.get(N.id)!==de){ve.close();return}v(be,ve),de.subscriptionIds.add(be),o.set(be,{requestId:N.id,inFlight:de})},l,h,()=>x,f,C,m,c,te.signal),"dispatch"),Te;try{let be=pg(N,e,x,f,Ie);Te=ai(N.method)?await be:await fg(be,te.signal)}catch(be){for(let ve of[...de.subscriptionIds])l(ve);throw r(N.id,de),be}let Pe=Kg(N.method,Te);if(hc(N.method,"result",Pe,"internal_error"),Ar(N.method)){if(x=Sg(q?.capabilities),y==="client"&&e.reverseBridgeHub!==void 0&&e.notify!==void 0&&(p=e.reverseBridgeHub.attach({principalId:f,connectionId:a,...cc(q?.clientInfo)!==void 0?{instanceSecret:cc(q?.clientInfo)}:{},notify:e.notify}),c=p.bridge,u.close()),y==="client"&&e.management!==void 0)try{e.management.attachClient(a),I=!0}catch(be){throw p?.close(),p=void 0,be}R=!0}return de.completed=!0,de.subscriptionIds.size===0&&r(N.id,de),_=void 0,di(N.id,Pe)}catch(N){if(_!==void 0){for(let q of[..._.subscriptionIds])l(q);r(_.id,_.inFlight)}return rt(Xg(N),T.id)}},"handle"),close(){for(let T of t.values())T.controller.abort(Object.assign(new Error("Runtime daemon connection closed."),{code:"read_cancelled"}));t.clear();for(let T of[...n.keys()])l(T);p!==void 0?p.close():c.close(),I&&(e.management?.detachClient(a),I=!1)}}}i(Sc,"createRuntimeDaemonDispatcher");function fg(e,n){return n.aborted?Promise.reject(n.reason??ke("read_cancelled","Runtime daemon request cancelled.")):new Promise((t,r)=>{let o=i(()=>{r(n.reason??ke("read_cancelled","Runtime daemon request cancelled."))},"onAbort");n.addEventListener("abort",o,{once:!0}),e.then(t,r).finally(()=>{n.removeEventListener("abort",o)})})}i(fg,"raceRuntimeDaemonRequestCancellation");async function pg(e,n,t,r,o){let s=i(()=>n.management!==void 0&&gg(e.method)?n.management.runMutation(e.method,o):o(),"execute");if(!mt(e.method)||n.requireOperationEnvelope!==!0)return s();if(t.operationDeduplication!==!0)throw ke("client_upgrade_required","Runtime daemon mutations require durable operation support.");if(!e.operation)throw ke("operation_required","Runtime daemon mutation is missing its operation envelope.");if(!n.controlJournal)throw ke("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,...uc(e.params)!==void 0?{resourceId:uc(e.params)}:{},params:e.params??{}},{externalEffect:!0},s)}i(pg,"dispatchWithOperation");function gg(e){return ai(e)&&e!=="daemon.stop"&&e!=="runtime.shutdown"&&e!=="daemon.rollbackToInline"}i(gg,"isManagedRuntimeMutation");function yg(e,n){let t=vc.get(e);if(t===void 0)throw ke("internal_error",`Runtime daemon method has no authorization scope: ${e}.`);if(!n.has(t))throw ke("unauthorized",`Runtime daemon method requires scope ${t}.`)}i(yg,"requireRuntimeMethodScope");function Rg(e,n){if(e.method!=="permission.respond")return;let t=pn(e.params)?e.params:void 0;if(!((t&&pn(t.decision)?t.decision:void 0)?.type!=="allow_always"||n.has("permission:grant-admin")))throw ke("unauthorized","Persistent permission grants require scope permission:grant-admin.")}i(Rg,"requirePersistentGrantScope");function uc(e){if(pn(e)){for(let n of["sessionId","runId","taskId","artifactId","requestId","name"])if(typeof e[n]=="string"&&e[n].length>0)return e[n]}}i(uc,"operationResourceId");function hg(e,n){if(!pn(e))return n;let t=e.instanceId;return typeof t!="string"||!/^[A-Za-z0-9_.:-]{4,160}$/.test(t)?n:t}i(hg,"parseRuntimeClientPrincipal");function cc(e){if(!pn(e))return;let n=e.instanceSecret;return typeof n=="string"?n:void 0}i(cc,"parseRuntimeClientInstanceSecret");async function wg(e,n,t,r,o,s,a,u,c,p,R,I){let y=n.runtime,x=n.reverseBridgeHub??R;switch(e.method){case"initialize":case"runtime.initialize":return{identity:y.identity,capabilities:mc(n.capabilities,y.agents.enabled,y.agents.enabled&&n.allowAgentRegistrationAdmin===!0,n.ownsA2AConfigReconciler===!0,n.controlJournal,n.reverseBridgeHub!==void 0,n.durableHostToolInvocations===!0,n.management!==void 0,n.orphanExitEnabled===!0,fc(y)),principalId:u,...n.controlJournal!==void 0?{journalEpoch:n.controlJournal.journalEpoch}:{},grantedScopes:[...n.grantedScopes??wc]};case"ping":return{ok:!0,runtimeId:y.identity.runtimeId};case"runtime.identity":return y.identity;case"daemon.status":case"runtime.status":return Eg(await(n.status?n.status():y.status.snapshot()),x);case"daemon.stop":case"runtime.shutdown":return n.management?n.management.stop():n.stop?n.stop():y.close().then(()=>({ok:!0}));case"daemon.logs":return n.logs?n.logs():{entries:[]};case"daemon.preflight":return Pg(await(n.management?n.management.preflight():n.preflight?n.preflight():y.status.preflight()),x);case"daemon.management.get":if(!n.management)throw ke("client_upgrade_required","Runtime daemon management is unavailable.");return n.management.inspect();case"daemon.rollbackToInline":{if(!n.management)throw ke("client_upgrade_required","Runtime daemon rollback management is unavailable.");let f=ue(e.params),C={expectedRuntimeId:Re(f,"expectedRuntimeId"),expectedRevision:bi(f,"expectedRevision"),expectedOwnerPolicyRevision:bi(f,"expectedOwnerPolicyRevision")};return n.management.rollbackToInline(C)}case"runtime.capabilities":return mc(n.capabilities,y.agents.enabled,y.agents.enabled&&n.allowAgentRegistrationAdmin===!0,n.ownsA2AConfigReconciler===!0,n.controlJournal,n.reverseBridgeHub!==void 0,n.durableHostToolInvocations===!0,n.management!==void 0,n.orphanExitEnabled===!0,fc(y));case"operation.get":{let f=ue(e.params),C=Re(f,"operationId"),m=Re(f,"journalEpoch");if(!n.controlJournal)return y.operations.get({operationId:C,journalEpoch:m});if(m!==n.controlJournal.journalEpoch)throw ke("operation_epoch_mismatch","Runtime operation belongs to another journal epoch.");let k=n.controlJournal.get(C);if(!k||k.principalId!==u)throw ke("not_found","Runtime operation was not found.");return Ig(k)}case"config.read":return n.config?ds(await n.config()):y.config.read();case"config.patch":{let f=kc(ue(e.params),"patch");return y.config.patch(f)}case"config.reload":return y.config.reload();case"provider.list":return n.providerList?n.providerList():y.catalog.providers();case"model.list":return n.providerList?Cg(await n.providerList(),Ke(e.params)):y.catalog.models(Tg(e.params));case"provider.custom.list":return y.catalog.customProviders();case"provider.custom.upsert":{let f=ue(e.params);return y.catalog.upsertCustomProvider(ue(f.config))}case"provider.custom.remove":return y.catalog.deleteCustomProvider(_e(e.params,"name"));case"mcp.server.list":return y.mcp.listServers();case"mcp.server.get":return y.mcp.getServer(_e(e.params,"name"));case"mcp.server.validate":{let f=ue(e.params);return y.mcp.validateServer(Re(f,"name"),f.config)}case"mcp.server.upsert":{let f=ue(e.params);return y.mcp.upsertServer(Re(f,"name"),ue(f.config))}case"mcp.server.delete":case"mcp.server.remove":return y.mcp.deleteServer(_e(e.params,"name"));case"mcp.server.reload":return y.mcp.reloadServers();case"mcp.tool.list":return y.mcp.listTools(Dg(e.params));case"extension.list":return y.catalog.extensions();case"extension.reload":return y.catalog.reloadExtensions();case"command.list":{let f=Ke(e.params),C=typeof f?.projectRoot=="string"?f.projectRoot:void 0;return y.catalog.commands(C)}case"command.resolve":{let f=ue(e.params);return y.catalog.resolveCommand({name:Re(f,"name"),...typeof f.projectRoot=="string"?{projectRoot:f.projectRoot}:{}})}case"skill.list":return y.catalog.skills(Mg(e.params));case"skill.describe":case"skill.read":{let f=ue(e.params);return y.catalog.describeSkill({name:Re(f,"name"),...typeof f.projectRoot=="string"?{projectRoot:f.projectRoot}:{}})}case"artifact.create":return y.artifacts.create(_g(e.params));case"artifact.get":return y.artifacts.get(_e(e.params,"artifactId"));case"artifact.delete":return y.artifacts.delete(_e(e.params,"artifactId"));case"agentRegistrations.list":return Ii(n),Si(y),y.admin.agentRegistrations.list();case"agentRegistrations.upsert":{Ii(n),Si(y);let f=ue(e.params);return y.admin.agentRegistrations.upsert(ue(f.registration),{expectedConfigurationRevision:os(f),expectedManagementOwner:ss(f)})}case"agentRegistrations.setEnabled":{Ii(n),Si(y);let f=ue(e.params),C=tn(f,"claimOwner");if(C!==void 0&&C.length===0)throw ke("invalid_request","Expected non-empty optional string param: claimOwner");return y.admin.agentRegistrations.setEnabled(Re(f,"agentId"),Bg(f,"enabled"),{expectedConfigurationRevision:os(f),expectedManagementOwner:ss(f),...C?{claimOwner:C}:{}})}case"agentRegistrations.remove":Ii(n),Si(y);{let f=ue(e.params);return y.admin.agentRegistrations.remove(Re(f,"agentId"),{expectedConfigurationRevision:os(f),expectedManagementOwner:ss(f)})}case"agents.listDispatchable":return y.agents.listDispatchable(ue(e.params));case"agents.describe":{let f=ue(e.params);return y.agents.describe(Re(f,"agentId"),ue(f.query))}case"agents.preflight":return y.agents.preflight(ue(e.params));case"agents.tree":return y.agents.tree(_e(e.params,"sessionId"));case"agents.detail":{let f=ue(e.params);return y.agents.detail(Re(f,"sessionId"),Re(f,"actorPath"))}case"agents.spawn":{let f=ue(e.params);return y.agents.spawn(Re(f,"sessionId"),ue(f.input))}case"agents.send":{let f=ue(e.params),C=tn(f,"classification");if(C!==void 0&&C!=="public"&&C!=="internal"&&C!=="sensitive")throw ke("invalid_params","Invalid Agent message classification.");return await y.agents.send(Re(f,"sessionId"),Re(f,"actorPath"),Re(f,"content"),C),{ok:!0}}case"agents.followup":{let f=ue(e.params),C=Gn(f,"expectedRevision");return y.agents.followup(Re(f,"sessionId"),Re(f,"actorPath"),Re(f,"objective"),C===void 0?void 0:{expectedRevision:C})}case"agents.interrupt":{let f=ue(e.params);return await y.agents.interrupt(Re(f,"sessionId"),Re(f,"actorPath"),tn(f,"reason")),{ok:!0}}case"agents.output":{let f=ue(e.params);return y.agents.output(Re(f,"sessionId"),Re(f,"actorPath"),tn(f,"turnId"))}case"agents.events":{let f=ue(e.params);return y.agents.events(Re(f,"sessionId"),Gn(f,"afterSequence"))}case"agents.wait":{let f=ue(e.params);return y.agents.wait(Re(f,"sessionId"),Gn(f,"afterSequence"),Gn(f,"timeoutMs"),{signal:I})}case"session.create":return y.sessions.create(Ke(e.params));case"session.load":return y.sessions.load(_e(e.params,"sessionId"),Vn(e.params,I));case"session.list":return y.sessions.list(Ke(e.params));case"session.status":return y.sessions.status(_e(e.params,"sessionId"));case"session.transcript":{let f=await y.sessions.transcript(_e(e.params,"sessionId"),Vn(e.params,I));if(f!==null&&Buffer.byteLength(JSON.stringify(f),"utf8")>sc)throw ke("invalid_request","Transcript is too large for the legacy endpoint; use session.transcript.page and session.transcript.entryChunk.");return f}case"session.transcript.page":return y.sessions.transcriptPage(ue(e.params),Vn(e.params,I));case"session.transcript.entryChunk":return y.sessions.transcriptEntryChunk(ue(e.params),Vn(e.params,I));case"session.transcript.search":return y.sessions.transcriptSearch(ue(e.params),Vn(e.params,I));case"session.conversation":{let f=await y.sessions.conversation(_e(e.params,"sessionId"),Vn(e.params,I));if(f!==null&&Buffer.byteLength(JSON.stringify(f),"utf8")>sc)throw ke("invalid_request","Conversation history is too large for the direct endpoint; use session.conversation.page and session.conversation.entryChunk.");return f}case"session.conversation.page":return y.sessions.conversationPage(ue(e.params),Vn(e.params,I));case"session.conversation.entryChunk":return y.sessions.conversationEntryChunk(ue(e.params),Vn(e.params,I));case"session.observe":{let f=as(),C=_e(e.params,"sessionId"),m=await y.sessions.observe(C,k=>s(f,ts(k,x)),Vn(e.params,I));if(I.aborted)throw m.close(),ke("read_cancelled","Runtime Session observation was cancelled.");return r(f,m),m.invalidated.then(k=>{try{n.notify?.(Xt("observation.invalidated",{subscriptionId:f,sessionId:C,invalidation:k}))}finally{o(f)}}).catch(k=>{we({source:"runtime.daemon.server",level:"error",message:`Failed to deliver Session observation invalidation for ${C}.`,detail:k})}),{subscriptionId:f,snapshot:kg(m.snapshot,x)}}case"session.diagnostics":return y.sessions.diagnostics(ue(e.params));case"session.fork":return y.sessions.fork(ue(e.params));case"session.notice.append":return y.sessions.appendNotice(ue(e.params));case"session.rewind":return y.sessions.rewind(ue(e.params));case"session.active_entry.set":case"session.activeEntry.set":return y.sessions.setActiveEntry(ue(e.params));case"session.compact":return y.sessions.compact(ue(e.params));case"session.archive":return await y.sessions.archive(_e(e.params,"sessionId")),{ok:!0};case"session.unarchive":return await y.sessions.unarchive(_e(e.params,"sessionId")),{ok:!0};case"session.delete":return await y.sessions.delete(_e(e.params,"sessionId")),{ok:!0};case"session.settings.get":return y.sessions.getSettings(_e(e.params,"sessionId"));case"session.settings.getVersioned":return y.sessions.getSettingsVersioned(_e(e.params,"sessionId"));case"session.autoMode.getStats":return y.sessions.getAutoModeStats(_e(e.params,"sessionId"));case"session.settings.update":{if(n.requireOperationEnvelope===!0)throw ke("client_upgrade_required","Shared daemon session settings require session.settings.updateVersioned.");let f=ue(e.params);return y.sessions.updateSettings(Re(f,"sessionId"),ue(f.patch))}case"session.settings.updateVersioned":{let f=ue(e.params);return y.sessions.updateSettingsVersioned(Re(f,"sessionId"),ue(f.patch),{expectedRevision:bi(f,"expectedRevision")})}case"run.start":{let f=ue(e.params),C=Re(f,"sessionId"),m=`run_${Date.now().toString(36)}_${ir().replace(/-/g,"").slice(0,8)}`,k=await lc({params:f,sessionId:C,trustedRunId:m,principalId:u,clientName:c,clientVersion:p,operationId:e.operation?.operationId,reverseBridge:R}),l=await y.runs.start(k);return t.remember(l.runId,l.result),{runId:l.runId,sessionId:l.sessionId,...l.turnId!==void 0?{turnId:l.turnId}:{}}}case"run.input.submit":{let f=ue(e.params),C=Re(f,"sessionId"),m=Re(f,"afterRunId"),k=Re(f,"delivery"),l=await y.runs.get(m);if(l.sessionId!==C)throw ke("conflict",`Runtime continuation target ${m} does not belong to session ${C}.`);let v=k==="after_turn"&&l.phase==="unknown"&&l.lifecycleError?.code==="actor_settlement_not_persisted";if(!vg(l.phase)&&!v)return{accepted:!1,delivery:k,sessionId:C,afterRunId:m,reason:"stale_run"};if(k==="interrupt"){if(l.phase==="queued")return{accepted:!1,delivery:k,sessionId:C,afterRunId:m,reason:"stale_run"};if(f.credential!==void 0||f.hostTools!==void 0)throw ke("invalid_params","Interrupt input cannot replace active-run credential or host-tool bindings.");let _=`input_${Date.now().toString(36)}_${ir().replace(/-/g,"").slice(0,8)}`;return y.runs.submitInput({...f,sessionId:C,afterRunId:m,delivery:"interrupt",trustedInputId:_,origin:{principalId:u,...c!==void 0?{clientName:c}:{},...p!==void 0?{clientVersion:p}:{},...e.operation?.operationId!==void 0?{operationId:e.operation.operationId}:{}}})}let h=`run_${Date.now().toString(36)}_${ir().replace(/-/g,"").slice(0,8)}`,P=await lc({params:f,sessionId:C,trustedRunId:h,principalId:u,clientName:c,clientVersion:p,operationId:e.operation?.operationId,reverseBridge:R}),T=await y.runs.submitInput(P);if(T.accepted&&T.delivery==="after_turn"){let _=y.runs.await(T.runId);t.remember(T.runId,_)}return T}case"run.get":return It(await y.runs.get(_e(e.params,"runId")),x);case"run.list":return(await y.runs.list(Ke(e.params))).map(f=>It(f,x));case"run.await":{let f=_e(e.params,"runId"),C=t.get(f);return C||y.runs.await(f)}case"run.abort":return y.runs.abort(_e(e.params,"runId"));case"run.model.set":return gc(y,e.params);case"run.setModel":return gc(y,e.params);case"run.provider.set":{let f=ue(e.params);return await y.runs.setProvider(Re(f,"runId"),Re(f,"provider")),{ok:!0}}case"run.setProvider":{let f=ue(e.params);return await y.runs.setProvider(Re(f,"runId"),Re(f,"provider")),{ok:!0}}case"run.reasoning.set":return yc(y,e.params);case"run.setReasoning":return yc(y,e.params);case"event.subscribe":{let f=Ke(e.params)??{},C=Ke(f.filter);await pc(y,C);let m=as(),k=y.events.subscribe(C,l=>{s(m,ts(l,x))});return r(m,k),{subscriptionId:m}}case"event.unsubscribe":return{ok:o(_e(e.params,"subscriptionId"))};case"event.replay":{let f=Ke(e.params);return await pc(y,f),bg(await y.events.replay(f),a()).map(C=>ts(C,x))}case"permission.list":case"permission.listPending":{let f=Ke(e.params);return await ot(y,f?.sessionId),y.permissions.listPending(f)}case"permission.request":{let f=ue(e.params);return await ot(y,f.sessionId),y.permissions.request(f)}case"permission.respond":{let f=ue(e.params),C=tn(f,"runId");return y.permissions.respond(Re(f,"requestId"),ue(f.decision),C!==void 0?{runId:C}:void 0)}case"permission.grants.list":return y.permissions.listGrants();case"permission.grants.revoke":{let f=ue(e.params);return y.permissions.revokeGrant(Re(f,"grantId"),bi(f,"expectedRevision"))}case"user_input.listPending":{let f=Ke(e.params);return await ot(y,f?.sessionId),y.userInputs.listPending(f)}case"user_input.respond":{let f=ue(e.params),C=Gn(f,"expectedRevision"),m=tn(f,"runId");return y.userInputs.respond(Re(f,"requestId"),f.answer,C!==void 0||m!==void 0?{...C!==void 0?{expectedRevision:C}:{},...m!==void 0?{runId:m}:{}}:void 0)}case"user_input.dismiss":{let f=ue(e.params),C=Gn(f,"expectedRevision"),m=tn(f,"runId");return y.userInputs.dismiss(Re(f,"requestId"),C!==void 0||m!==void 0?{...C!==void 0?{expectedRevision:C}:{},...m!==void 0?{runId:m}:{}}:void 0)}case"credential.register":{let f=ue(e.params);return R.registerCredential({leaseId:Re(f,"leaseId"),providers:Fg(f,"providers"),...tn(f,"expiresAt")!==void 0?{expiresAt:tn(f,"expiresAt")}:{}})}case"credential.get":return R.getCredential(_e(e.params,"leaseId"));case"credential.revoke":return R.revokeCredential(_e(e.params,"leaseId"));case"credential.supply":{let f=ue(e.params);return{ok:R.supplyCredential({requestId:Re(f,"requestId"),...tn(f,"credential")!==void 0?{credential:tn(f,"credential")}:{},...tn(f,"error")!==void 0?{error:tn(f,"error")}:{}})}}case"host_tool.register":{let f=ue(e.params);return R.registerHostTools({leaseId:Re(f,"leaseId"),tools:jg(f.tools)})}case"host_tool.get":return R.getHostTools(_e(e.params,"leaseId"));case"host_tool.invocation.get":return R.getHostToolInvocation(_e(e.params,"invocationId"));case"host_tool.revoke":return R.revokeHostTools(_e(e.params,"leaseId"));case"host_tool.complete":{let f=ue(e.params);return{ok:R.completeHostTool({invocationId:Re(f,"invocationId"),...f.result!==void 0?{result:ue(f.result)}:{},...tn(f,"error")!==void 0?{error:tn(f,"error")}:{}})}}case"workflow.list":return y.workflows.list(Ke(e.params));case"workflow.get":return y.workflows.get(_e(e.params,"runId"));case"workflow.subscribe":{let f=Ke(e.params)??{},C=Ke(f.filter),m=as(),k=y.workflows.subscribe(C??{},l=>{s(m,l)});return r(m,k),{subscriptionId:m}}case"workflow.unsubscribe":return{ok:o(_e(e.params,"subscriptionId"))};case"workflow.pause":return y.workflows.pause(_e(e.params,"runId"));case"workflow.resume":return y.workflows.resume(_e(e.params,"runId"));case"workflow.stop":return y.workflows.stop(_e(e.params,"runId"));case"learning.list":return Wn(y.learning,u).list(Ke(e.params));case"learning.get":return Wn(y.learning,u).get(_e(e.params,"nameOrSlug"));case"learning.snapshot":return Wn(y.learning,u).getSnapshot();case"learning.events":return Wn(y.learning,u).events(Gn(Ke(e.params)??{},"afterRevision"));case"learning.acknowledge":return await Wn(y.learning,u).acknowledge(_e(e.params,"nameOrSlug")),{ok:!0};case"learning.snooze":{let f=ue(e.params);return await Wn(y.learning,u).snooze(Re(f,"nameOrSlug"),Re(f,"until")),{ok:!0}}case"learning.reject":case"learning.disable":case"learning.rollback":case"learning.review":case"learning.trust":{let f=Wn(y.learning,u),C=_e(e.params,"nameOrSlug");return e.method==="learning.reject"?await f.reject(C):e.method==="learning.disable"?await f.disable(C):e.method==="learning.rollback"?await f.rollback(C):e.method==="learning.review"?await f.review(C):await f.trust(C),{ok:!0}}case"learning.promote":{let f=ue(e.params),C=Re(f,"scope");if(C!=="user")throw ke("invalid_params","Learning promotion scope must be user.");return await Wn(y.learning,u).promote(Re(f,"nameOrSlug"),C),{ok:!0}}case"context.budget.get":return rs(a()),await ot(y,tn(Ke(e.params)??{},"sessionId")),is(y,"context.budget.snapshot",Ke(e.params));case"tool.exposure.preview":return rs(a()),await ot(y,tn(Ke(e.params)??{},"sessionId")),is(y,"tool.exposure.planned",Ke(e.params));case"provider.cache.diagnostics.get":return rs(a()),await ot(y,tn(Ke(e.params)??{},"sessionId")),is(y,"provider.cache.diagnostics",Ke(e.params));default:throw ke("method_not_found",`Runtime daemon method is not implemented: ${e.method}`)}}i(wg,"dispatchRuntimeDaemonRequest");async function lc(e){let n=Ke(e.params.credential),t=Ke(e.params.hostTools),r=n===void 0?void 0:await e.reverseBridge.acquireCredential({leaseId:Re(n,"leaseId"),provider:Re(n,"provider"),sessionId:e.sessionId,runId:e.trustedRunId}),o=t===void 0?void 0:e.reverseBridge.createHostToolRuntime({leaseId:Re(t,"leaseId"),sessionId:e.sessionId,runId:e.trustedRunId}),s=Lt(),a=o===void 0?void 0:s===null?o:qg(o,s),u=Ke(e.params.options)??{},c=Ke(u.context),p=c===void 0?u:{...u,context:Object.fromEntries(Object.entries(c).filter(([R])=>R!=="configHome"&&R!=="memoryIdentity"))};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:Re(n,"provider")}:{},...e.params.options!==void 0||a!==void 0?{options:{...p,...a===void 0?{}:{extensionRuntime:a}}}:{}}}i(lc,"bindTrustedRunInput");function vg(e){return e==="queued"||e==="running"||e==="waiting_agent"||e==="recovering"||e==="waiting_permission"||e==="waiting_user_input"}i(vg,"isActiveRuntimeRunPhase");function Sg(e){return pn(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}:{}}:{}}i(Sg,"parseRuntimeClientCapabilities");function mc(e={},n=!1,t=!1,r=!1,o,s=!1,a=!1,u=!1,c=!1,p=!1){let R={...e};delete R.externalAgents,delete R.externalAgentAdmin,delete R.a2aConfigReconciler,delete R.actorControlPlane,delete R.integrationConfigResilience,delete R.managedRunDurability,delete R.actorSettlementConvergence,delete R.sessionEventJournal,delete R.daemonOrphanExit,delete R.daemonShutdownVerification,delete R.runtimeEventCoalescing,delete R.runtimeAutoModeGuardrail,delete R.sandboxRuntime,delete R.runLifecycleControl;let I=es();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"},sandboxRuntime:Zr(),managedRunDurability:{version:1,initialInputBeforeExecution:!0,completedTurnBeforeEvent:!0,deliveredInputBeforeEvent:!0,persistenceFailure:"fail_closed"},actorSettlementConvergence:{version:1,rootFence:"fail_closed",sameOwnerRepair:"automatic",unknownAfterTurnQueue:!0,terminal:"failed"},sessionEventJournal:{version:1,sequenceScope:"session",cursor:"session_epoch_sequence",scopedAccessRequired:!0},...p?{runtimeEventCoalescing:{version:1}}:{},runtimeAutoModeGuardrail:{version:4,owner:"session-runtime",escalationCreatesPermission:!0,fallbackPersistsEngine:!1,defaultClassifierTimeoutMs:Gr,defaultSpeculativeWindowMs:500,boundedClassifierInput:!0,diagnosticsVersion:1,permissionGrantSuggestions:!0,concretePermissionMatchers:!0,clientScopeExpansion:!1},...c?{daemonOrphanExit:{version:1,idleOnly:!0,bootstrapGrace:!0}}:{},...Vr()?{daemonShutdownVerification:{version:1,durableOutcome:!0,processContainment:"windows-job"}}:{},...t?{externalAgentAdmin:{version:1,activation:!0,conditionalMutations:!0,managementOwner:!0}}:{},...r?{a2aConfigReconciler:{version:1}}:{},...o!==void 0?{operationDeduplication:{version:1,retentionMs:Number.MAX_SAFE_INTEGER},journalEpoch:o.journalEpoch,controlHealth:o.health}:{},sessionObservation:{version:1,maxBufferedEvents:256},sessionAdmission:{version:1,surfaces:lg,legacySurface:!0,partnerDenied:!0},completeObservationSnapshot:{version:1,transcriptRevision:!0,managedTasks:!0,queuedInputs:!0},connectionLifecycle:{version:1},runLifecycleControl:{version:1,structuredStopReceipt:!0,protocolCancellation:!0,responseAcknowledgement:!0},typedRuntimeEvents:{version:1},daemonSafeRunInput:{version:1},integrationConfigResilience:{version:1,isolatedFailure:!0,legacySourceWatching:!0,lastKnownGood:!0,healthProjection:!0},...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"]},...o!==void 0?{durableRecoveryQueries:{version:1,operationResult:!0,hostToolInvocation:a,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},conversationHistory:{version:1,immutablePaging:!0,revisionedBoundaries:!0,ambiguityReporting:!0},learningCenter:{version:1},skillLearningLoop:{version:1,activation:"project_scoped_canary",immutableDecisions:!0,recordGatedDiscovery:!0,exactUseAttribution:!0,rollback:!0},askUserTransport:{version:1},permissionCas:{version:1},providerCredentialBroker:{version:1,registrationConnectionBound:!s,stableClientResume:s,runtimeRestartExpiresLease:!0,acquiredCredentialSurvivesDisconnect:!0,requestTimeoutMs:I.callTimeoutMs},runBoundHostTools:{version:1,registrationConnectionBound:!s,stableClientResume:s,invocationStatusQuery:s,invocationReplay:!1,invocationTimeoutMs:I.callTimeoutMs,maxResultBytes:I.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},...R}}i(mc,"runtimeDaemonCapabilities");function fc(e){let n=e.capabilities?.runtimeEventCoalescing;return pn(n)&&typeof n.version=="number"&&n.version>=1}i(fc,"runtimeImplementsEventCoalescing");function Ig(e){return e?{...e}:{}}i(Ig,"publicOperationReceipt");function Si(e){if(!e.agents.enabled)throw ke("method_not_found","Runtime external agent executor plane is not enabled.")}i(Si,"requireExternalAgentsEnabled");function Ii(e){if(e.allowAgentRegistrationAdmin!==!0)throw ke("permission_denied","Runtime daemon host denied Agent registration administration.")}i(Ii,"requireAgentRegistrationAdmin");function bg(e,n){return n.contextDiagnostics===!0?e:e.filter(t=>!bc(t))}i(bg,"filterReplayForClientCapabilities");async function ot(e,n){n!==void 0&&await e.sessions.transcript(n)}i(ot,"assertAdmittedSessionId");async function pc(e,n){if(n?.sessionId!==void 0){await ot(e,n.sessionId),n.runId!==void 0&&await e.events.replay({sessionId:n.sessionId,runId:n.runId,limit:1});return}if(n?.runId!==void 0){let[t]=await e.events.replay({runId:n.runId,limit:1}),r=t?.sessionId??(await e.runs.get(n.runId)).sessionId;await ot(e,r);return}throw ke("invalid_request","Runtime event access must specify a Session or Run scope.")}i(pc,"assertAdmittedEventScope");function kg(e,n){return{...e,runs:e.runs.map(t=>It(t,n))}}i(kg,"augmentObservationRunRequirements");function Eg(e,n){return!pn(e)||!Array.isArray(e.runs)?e:{...e,runs:e.runs.map(t=>Ic(t)?It(t,n):t)}}i(Eg,"augmentStatusRunRequirements");function Pg(e,n){return{...e,activeRuns:e.activeRuns.map(t=>It(t,n)),queuedRuns:e.queuedRuns.map(t=>It(t,n))}}i(Pg,"augmentPreflightRunRequirements");function ts(e,n){return Ic(e.payload)?{...e,payload:It(e.payload,n)}:e}i(ts,"augmentRuntimeEventRequirements");function It(e,n){let t=n?.getRunRequirements(e.runId);return t===void 0?e:xg(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}}i(It,"augmentRunRequirements");function Ic(e){return pn(e)&&typeof e.runId=="string"&&typeof e.sessionId=="string"&&typeof e.phase=="string"&&typeof e.startedAt=="string"&&typeof e.provider=="string"}i(Ic,"isRuntimeRunStatus");function xg(e){return e==="completed"||e==="failed"||e==="cancelled"||e==="interrupted"}i(xg,"isTerminalRuntimeRunPhase");function rs(e){if(e.contextDiagnostics!==!0)throw ke("unauthorized","Runtime daemon client did not negotiate contextDiagnostics capability.")}i(rs,"requireContextDiagnosticsCapability");function bc(e){return pn(e)?e.type==="context.budget.snapshot"||e.type==="provider.cache.diagnostics"||e.type==="tool.exposure.planned"||e.type==="context.compaction.skipped":!1}i(bc,"isContextDiagnosticRuntimeEvent");async function is(e,n,t){let r=t??{};return n==="context.budget.snapshot"?e.diagnostics.latestContextBudget(r):n==="tool.exposure.planned"?e.diagnostics.latestToolExposure(r):n==="provider.cache.diagnostics"?e.diagnostics.latestProviderCacheDiagnostic(r):null}i(is,"latestRuntimeDiagnosticPayload");async function gc(e,n){let t=ue(n);return await e.runs.setModel(Re(t,"runId"),tn(t,"model")),{ok:!0}}i(gc,"setRunModel");async function yc(e,n){let t=ue(n);return await e.runs.setReasoning(Re(t,"runId"),tn(t,"reasoning")),{ok:!0}}i(yc,"setRunReasoning");function Cg(e,n){let t=Array.isArray(e)?e:[],r=typeof n?.provider=="string"?n.provider:void 0;if(r!==void 0){let o=t.find(s=>pn(s)&&s.name===r);return pn(o)?{provider:r,models:Array.isArray(o.models)?o.models:[]}:{provider:r,models:[]}}return t.flatMap(o=>!pn(o)||typeof o.name!="string"?[]:[{provider:o.name,models:Array.isArray(o.models)?o.models:[]}])}i(Cg,"listRuntimeModels");function ds(e){return Array.isArray(e)?e.map(n=>ds(n)):pn(e)?Object.fromEntries(Object.entries(e).map(([n,t])=>[n,Ag(n)?"[redacted]":ds(t)])):e}i(ds,"redactRuntimeConfig");function Ag(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")}i(Ag,"isSensitiveConfigKey");function Ke(e){if(e!==void 0)return ue(e)}i(Ke,"optionalRecord");function kc(e,n){return ue(e[n])}i(kc,"requireRecordField");function Tg(e){let n=Ke(e);if(n)return typeof n.provider=="string"?{provider:n.provider}:void 0}i(Tg,"parseModelListFilter");function Dg(e){let n=Ke(e);if(n)return{...typeof n.server=="string"?{server:n.server}:{},...typeof n.forceRefresh=="boolean"?{forceRefresh:n.forceRefresh}:{}}}i(Dg,"parseMcpToolListFilter");function Mg(e){let n=Ke(e);if(n)return{...typeof n.projectRoot=="string"?{projectRoot:n.projectRoot}:{},...typeof n.userInvocableOnly=="boolean"?{userInvocableOnly:n.userInvocableOnly}:{}}}i(Mg,"parseSkillListFilter");function _g(e){let n=ue(e),t=n.kind;if(t!=="image"&&t!=="file"&&t!=="video")throw ke("invalid_request","Expected artifact kind: image | file | video");let r=Re(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}:{},...Og(n.source)?{source:n.source}:{},...typeof n.description=="string"?{description:n.description}:{}}}i(_g,"parseArtifactCreateInput");function Og(e){return e==="user-inline"||e==="clipboard"||e==="drag-drop"||e==="file-picker"}i(Og,"isRuntimeArtifactSource");function Ng(e){return pn(e)&&typeof e.name=="string"&&e.name.length>0?e.name:void 0}i(Ng,"parseRuntimeClientName");function Lg(e){return pn(e)&&typeof e.version=="string"&&e.version.length>0?e.version:void 0}i(Lg,"parseRuntimeClientVersion");function Fg(e,n){let t=e[n];if(!Array.isArray(t)||t.some(r=>typeof r!="string"||r.length===0))throw ke("invalid_request",`Expected string array param: ${n}`);return t}i(Fg,"requireStringArrayField");function jg(e){if(!Array.isArray(e))throw ke("invalid_request","Expected host tool descriptors array.");return e.map(n=>{let t=ue(n),r=Re(t,"sideEffect");if(r!=="none"&&r!=="idempotent"&&r!=="non_idempotent")throw ke("invalid_request",`Invalid host tool sideEffect: ${r}`);return{name:Re(t,"name"),description:Re(t,"description"),inputSchema:kc(t,"inputSchema"),sideEffect:r}})}i(jg,"parseRuntimeHostToolDescriptors");function Rc(e,n,t,r){if(t!=="mcp")return[n];if(r!==void 0){let o=r==="host"?e:n;return o.hasCapabilityProvider?.(t)===!1?[]:[o]}return[e,n].filter(o=>o.hasCapabilityProvider?.(t)!==!1)}i(Rc,"selectCapabilityRuntimes");async function Hg(e,n,t,r){return e.searchCapabilitySnapshot!==void 0?e.searchCapabilitySnapshot(n,t,r):{items:await e.searchCapabilities(n,t,{...r,limit:Number.MAX_SAFE_INTEGER}),complete:!1,freshness:"unknown"}}i(Hg,"searchCapabilityRuntimeSnapshot");function $g(e){let n=new Set,t=e.flatMap(c=>c.items).filter(c=>{let p=c&&typeof c=="object"&&!Array.isArray(c)?c.id:void 0;return typeof p!="string"?!0:n.has(p)?!1:(n.add(p),!0)}),r=e.map(c=>c.revision),o=e.length===1?r[0]:r.every(c=>typeof c=="string")?JSON.stringify(r):void 0,s=e[0]?.freshness,a=s===void 0?"unknown":e.every(c=>c.freshness===s)?s:"mixed",u=e.flatMap(c=>c.failures??[]);return{items:t,...o!==void 0?{revision:o}:{},complete:e.length>0&&e.every(c=>c.complete),freshness:a,...u.length>0?{failures:u}:{}}}i($g,"mergeCapabilitySearchSnapshots");function qg(e,n){return{hasCapabilityProvider(t){return e.hasCapabilityProvider?.(t)===!0||n.hasCapabilityProvider?.(t)===!0},async searchCapabilities(t,r,o){let s=Rc(e,n,t,o?.server),u=(await Promise.all(s.map(c=>c.searchCapabilities(t,r,o)))).flat();return u.slice(0,o?.limit??u.length)},async searchCapabilitySnapshot(t,r,o){let s=Rc(e,n,t,o?.server),a=await Promise.all(s.map(u=>Hg(u,t,r,o)));return $g(a)},async describeCapability(t,r){return r.startsWith("host:")?e.describeCapability(t,r):n.describeCapability(t,r)},executeCapability(t,r,o){return r.startsWith("host:")?e.executeCapability(t,r,o):n.executeCapability(t,r,o)},readCapability(t,r,o){return n.readCapability(t,r,o)},getCapabilityPrompt(t,r,o){return n.getCapabilityPrompt(t,r,o)},getCapabilityPromptContext(t){return n.getCapabilityPromptContext(t)},...n.getDefaults!==void 0?{getDefaults:i(()=>n.getDefaults(),"getDefaults")}:{},...n.bindController!==void 0?{bindController:i(t=>n.bindController(t),"bindController")}:{},...n.hydrateSession!==void 0?{hydrateSession:i(t=>n.hydrateSession(t),"hydrateSession")}:{}}}i(qg,"mergeExtensionRuntimeContracts");function pn(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}i(pn,"isRecord");function ue(e){if(!e||typeof e!="object"||Array.isArray(e))throw ke("invalid_request","Expected params to be an object.");return e}i(ue,"requireRecord");function _e(e,n){return Re(ue(e),n)}i(_e,"requireStringParam");function Re(e,n){let t=e[n];if(typeof t!="string"||t.length===0)throw ke("invalid_request",`Expected string param: ${n}`);return t}i(Re,"requireStringField");function Bg(e,n){let t=e[n];if(typeof t!="boolean")throw ke("invalid_request",`Expected boolean param: ${n}`);return t}i(Bg,"requireBooleanField");function tn(e,n){let t=e[n];if(t!=null){if(typeof t!="string")throw ke("invalid_request",`Expected optional string param: ${n}`);return t}}i(tn,"optionalStringField");function os(e){let n=e.expectedConfigurationRevision;if(n==null)return n;if(typeof n!="string"||n.length===0)throw ke("invalid_request","Expected optional string or null param: expectedConfigurationRevision");return n}i(os,"optionalExpectedConfigurationRevision");function ss(e){let n=e.expectedManagementOwner;if(n==null)return n;if(typeof n!="string"||n.length===0)throw ke("invalid_request","Expected optional string or null param: expectedManagementOwner");return n}i(ss,"optionalExpectedManagementOwner");function Gn(e,n){let t=e[n];if(t!=null){if(!Number.isSafeInteger(t)||t<0)throw ke("invalid_request",`Expected optional non-negative integer param: ${n}`);return t}}i(Gn,"optionalIntegerField");function Vn(e,n){let t=Gn(ue(e),"timeoutMs");return{signal:n,...t===void 0?{}:{timeoutMs:t}}}i(Vn,"runtimeReadOptions");function bi(e,n){let t=Gn(e,n);if(t===void 0)throw ke("invalid_request",`Expected non-negative integer param: ${n}`);return t}i(bi,"requireIntegerField");function ke(e,n,t){let r=new Error(n);return r.code=e,t!==void 0&&(r.data=t),r}i(ke,"daemonError");function as(){return`sub_${ir().replace(/-/g,"").slice(0,12)}`}i(as,"createSubscriptionId");function hc(e,n,t,r){let o=tr(vi[e][n],t,n);if(o.length!==0)throw ke(r,n==="params"?`Invalid params for ${e}.`:`Runtime daemon produced an invalid result for ${e}.`,{issues:o})}i(hc,"validateDaemonMethodValue");function Kg(e,n){return n===void 0?null:e!=="run.await"||!pn(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}:{}}}}i(Kg,"serializeRuntimeDaemonMethodResult");function Xg(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 Aa)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"&&Ug(n.code)?n.code:"internal_error",message:e.message,...n.data!==void 0?{data:n.data}:{}}}return{code:"internal_error",message:String(e)}}i(Xg,"normalizeRuntimeDaemonError");function Ug(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==="resync_required"||e==="read_timeout"||e==="read_cancelled"||e==="data_changed"||e==="observation_invalidated"||e==="runtime_changed"||e==="data_corrupt"||e==="version_incompatible"||e==="credential_unavailable"||e==="host_tool_unavailable"||e==="host_tool_unknown"||e==="internal_error"}i(Ug,"isRuntimeDaemonErrorCode");import{createHash as Wg,randomUUID as xc}from"node:crypto";import*as Ze from"node:fs";import Ec from"node:path";var On=class extends Error{static{i(this,"RuntimeControlJournalError")}code;constructor(n,t){super(t),this.name="RuntimeControlJournalError",this.code=n}};function Cc(e){Ze.mkdirSync(e.rootDir,{recursive:!0});let n=Ec.join(e.rootDir,"journal-meta.json"),t=Ec.join(e.rootDir,"control.jsonl"),r=ey(n),o=r.meta,s=Zg(t),a=s.records,u=new Map,c=s.trusted&&r.trusted?"healthy":"control_history_untrusted";return c==="healthy"&&Qg(a,t),{journalEpoch:o.journalEpoch,get health(){return c},execute(p,R,I){if(c!=="healthy")return Promise.reject(new On("control_history_untrusted","Runtime control history is untrusted; mutations are quarantined."));try{Yg(p,o.journalEpoch);let y=ty(p.params),x=a.get(p.operationId);if(x){Gg(x,p,y);let C=u.get(p.operationId);return C||Vg(x)}let f=Jg(t,a,p,y,R.externalEffect===!0,I,()=>{c="control_history_untrusted"});return u.set(p.operationId,f),f.finally(()=>u.delete(p.operationId)).catch(()=>{}),f}catch(y){return Promise.reject(y)}},get(p){return a.get(p)}}}i(Cc,"createRuntimeControlJournal");async function Jg(e,n,t,r,o,s,a){let u=zg(t,r,"accepted");Ac(e,u),n.set(t.operationId,u),o&&ki(e,n,u,"dispatched");let c;try{c=await s()}catch(p){let R=ry(p);try{ki(e,n,u,"rejected",{error:R})}catch{a()}throw p}try{return ki(e,n,u,"applied",{result:c}).result}catch{throw a(),n.set(t.operationId,{...u,state:"unknown",updatedAt:new Date().toISOString()}),new On("operation_unknown","Runtime operation completed but its durable outcome could not be recorded.")}}i(Jg,"executeNewOperation");function ki(e,n,t,r,o={}){let s={type:"operation",...t,state:r,...o,updatedAt:new Date().toISOString()};return Ac(e,s),n.set(s.operationId,s),s}i(ki,"updateOperation");function zg(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()}}i(zg,"operationRecord");function Vg(e){if(e.state==="applied")return Promise.resolve(e.result);if(e.state==="rejected")return Promise.reject(new On(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 On(n,`Runtime operation is ${e.state}; it will not be replayed.`))}i(Vg,"replayOperation");function Gg(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 On("operation_id_reuse","Runtime operation ID was already used for a different request or principal.")}i(Gg,"assertMatchingOperation");function Yg(e,n){if(e.journalEpoch!==n)throw new On("operation_epoch_mismatch","Runtime operation belongs to a different control journal epoch.");if(!/^[A-Za-z0-9_.:-]{4,160}$/.test(e.operationId))throw new On("invalid_operation_id","Runtime operation ID is invalid.");if(e.principalId.length===0||e.method.length===0)throw new On("invalid_operation","Runtime operation identity is incomplete.")}i(Yg,"validateOperationInput");function Qg(e,n){for(let t of[...e.values()])t.state!=="accepted"&&t.state!=="dispatched"||ki(n,e,t,t.state==="dispatched"?"unknown":"interrupted")}i(Qg,"recoverUnfinished");function Zg(e){let n=new Map;if(!Ze.existsSync(e))return{trusted:!0,records:n};let t=Ze.readFileSync(e,"utf8").split(/\r?\n/);for(let r of t)if(r.length!==0)try{let o=JSON.parse(r);if(!oy(o))return{trusted:!1,records:n};n.set(o.operationId,o)}catch{return{trusted:!1,records:n}}return{trusted:!0,records:n}}i(Zg,"loadOperationRecords");function ey(e){if(Ze.existsSync(e)){try{let t=JSON.parse(Ze.readFileSync(e,"utf8"));if(iy(t))return{meta:t,trusted:!0}}catch{}return{meta:Pc(),trusted:!1}}let n=Pc();return ny(e,n),{meta:n,trusted:!0}}i(ey,"loadOrCreateMeta");function Pc(){return{version:1,journalEpoch:`je_${xc().replace(/-/g,"")}`,createdAt:new Date().toISOString()}}i(Pc,"createJournalMeta");function Ac(e,n){let t=`${JSON.stringify(n)}
|
|
22
|
+
`,r=Ze.openSync(e,"a",384);try{Ze.writeFileSync(r,t,"utf8"),Ze.fsyncSync(r)}finally{Ze.closeSync(r)}}i(Ac,"appendRecord");function ny(e,n){let t=`${e}.${process.pid}.${xc()}.tmp`,r=Ze.openSync(t,"wx",384);try{Ze.writeFileSync(r,`${JSON.stringify(n,null,2)}
|
|
23
|
+
`,"utf8"),Ze.fsyncSync(r)}finally{Ze.closeSync(r)}Ze.renameSync(t,e)}i(ny,"writeJsonAtomic");function ty(e){return Wg("sha256").update(cs(e)).digest("hex")}i(ty,"digestCanonical");function cs(e){if(e===null||typeof e=="boolean"||typeof e=="string")return JSON.stringify(e);if(typeof e=="number"){if(!Number.isFinite(e))throw new On("invalid_operation","Operation contains a non-finite number.");return JSON.stringify(e)}if(Array.isArray(e))return`[${e.map(cs).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)}:${cs(n[r])}`).join(",")}}`}throw new On("invalid_operation","Operation contains a non-JSON value.")}i(cs,"canonicalJson");function ry(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}}i(ry,"normalizeOperationError");function iy(e){return Tc(e)?e.version===1&&typeof e.journalEpoch=="string"&&typeof e.createdAt=="string":!1}i(iy,"isJournalMeta");function oy(e){return Tc(e)?e.type==="operation"&&typeof e.operationId=="string"&&typeof e.journalEpoch=="string"&&typeof e.principalId=="string"&&typeof e.method=="string"&&typeof e.requestDigest=="string"&&sy(e.state)&&typeof e.updatedAt=="string":!1}i(oy,"isOperationRecord");function sy(e){return e==="accepted"||e==="dispatched"||e==="applied"||e==="rejected"||e==="interrupted"||e==="unknown"}i(sy,"isOperationState");function Tc(e){return!!e&&typeof e=="object"&&!Array.isArray(e)}i(Tc,"isRecord");function Dc(e){return new ls(e)}i(Dc,"createRuntimeDaemonManagementController");var ls=class{constructor(n){this.input=n}input;static{i(this,"DaemonManagementController")}clients=new Set;revision=0;activeMutations=0;activeMutationMethods=new Map;draining=!1;closed=!1;preflightFingerprint;orphanExitArmed=!1;clientGeneration=0;orphanExitTimer;orphanExitCheckRunning=!1;orphanBlockerFingerprint;armOrphanExitAfterReady(){this.input.orphanExitMs===void 0||this.closed||this.draining||(this.orphanExitArmed=!0,this.scheduleOrphanExitCheck(this.input.orphanExitMs))}attachClient(n){if(this.draining||this.closed)throw Pn("conflict","Runtime daemon is draining and cannot attach another client.");this.clients.has(n)||(this.clients.add(n),this.orphanExitArmed=!0,this.clientGeneration+=1,this.cancelOrphanExitCheck(),this.orphanBlockerFingerprint=void 0,this.revision+=1)}detachClient(n){this.clients.delete(n)&&(this.clientGeneration+=1,this.revision+=1,this.clients.size===0&&this.scheduleOrphanExitCheck(this.input.orphanExitMs))}async runMutation(n,t){if(this.draining||this.closed)throw Pn("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 dy(r,this.clients.size)}throw Pn("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 o=Ve(this.input.paths.lockFile);if(o===void 0||o.runtimeId!==this.input.runtime.identity.runtimeId||o.kind!=="daemon")throw Pn("conflict","Runtime daemon owner fence changed during inspection.");return{runtimeId:this.input.runtime.identity.runtimeId,revision:t,ownerPolicy:Mn(this.input.paths),owner:o,preflight:r,...this.input.integrationStatuses?{integrations:ay(this.input.integrationStatuses())}:{}}}throw Pn("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 Pn("conflict","Runtime daemon instance changed before rollback commit.");this.beginDraining(n.expectedRevision);try{await this.assertStoppable(n.expectedRevision);let t=gu(this.input.paths,n.expectedRuntimeId,n.expectedOwnerPolicyRevision);if(t.mode!=="inline")throw Pn("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.cancelOrphanExitCheck(),this.clients.clear())}beginDraining(n){if(this.closed)throw Pn("conflict","Runtime daemon management is closed.");if(this.draining)throw Pn("conflict","Runtime daemon is already draining.");if(n!==void 0&&this.revision!==n)throw Pn("conflict",`Runtime daemon management revision changed: expected ${n}, current ${this.revision}.`);if(this.activeMutations>0)throw Pn("conflict",`Runtime daemon has in-flight mutations: ${[...this.activeMutationMethods].map(([t,r])=>`${t} (${r})`).join(", ")}.`);this.draining=!0,this.cancelOrphanExitCheck()}async assertStoppable(n){let t=await this.preflight();if(n!==void 0&&this.revision!==n)throw Pn("conflict",`Runtime daemon state changed before stop commit: expected ${n}, current ${this.revision}.`);if(!t.canStop)throw Pn("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)}scheduleOrphanExitCheck(n){n===void 0||!this.orphanExitArmed||this.closed||this.draining||this.clients.size>0||this.orphanExitCheckRunning||(this.cancelOrphanExitCheck(),this.orphanExitTimer=setTimeout(()=>{this.orphanExitTimer=void 0,this.tryOrphanExit()},n),this.orphanExitTimer.unref?.())}cancelOrphanExitCheck(){this.orphanExitTimer!==void 0&&(clearTimeout(this.orphanExitTimer),this.orphanExitTimer=void 0)}async tryOrphanExit(){if(this.closed||this.draining||this.clients.size>0||this.input.orphanExitMs===void 0)return;this.orphanExitCheckRunning=!0;let n=this.clientGeneration,t=!1,r=Math.min(this.input.orphanExitMs,5e3);try{let o=await this.preflight();if(this.clients.size>0||this.closed||this.draining)return;if(this.clientGeneration!==n){r=this.input.orphanExitMs;return}if(o.canStop){this.appendOrphanExitLog("info","Runtime daemon orphan exit accepted after the final client disconnected."),await this.stop(),t=!0;return}let s=o.blockers.join(",");s!==this.orphanBlockerFingerprint&&(this.orphanBlockerFingerprint=s,this.appendOrphanExitLog("info","Runtime daemon orphan exit deferred until governed work becomes idle.",{blockers:o.blockers}))}catch(o){this.appendOrphanExitLog("warn","Runtime daemon orphan exit inspection failed; it will retry.",{error:o instanceof Error?o.message:String(o)})}finally{this.orphanExitCheckRunning=!1,t||this.scheduleOrphanExitCheck(r)}}appendOrphanExitLog(n,t,r){try{En(this.input.paths,n,t,r)}catch{}}};function ay(e){let n=structuredClone(e);return{state:n.some(t=>t.diagnostic!==void 0)?"degraded":"healthy",domains:n}}i(ay,"integrationHealth");function dy(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}}i(dy,"withLogicalClients");function Pn(e,n,t){let r=new Error(n);return r.code=e,t!==void 0&&(r.data=t),r}i(Pn,"managementError");async function Oc(e){kn(e.paths);let n=Ru();hu(e.paths,n);let t=Ei(e,"starting");Vt(e.paths,t),En(e.paths,"info","Runtime daemon starting.",{runtimeId:e.runtime.identity.runtimeId,endpoint:e.endpoint.path});let r=ia(T=>{uy(e.paths,T)}),o,s,a=!1,u=i(()=>{if(s===void 0){a=!0;return}s()},"requestStop"),c=us(),p=Cc({rootDir:Mc.join(e.paths.rootDir,"control")}),R=oc({invocationStateFile:Mc.join(e.paths.rootDir,"host-tool-invocations.json")}),I=Dc({runtime:e.runtime,paths:e.paths,requestStop:u,...e.orphanExitMs!==void 0?{orphanExitMs:e.orphanExitMs}:{},...e.integrationStatuses?{integrationStatuses:e.integrationStatuses}:{}}),y;try{o=await Du({endpoint:e.endpoint,createDispatcher:i(_=>Sc({runtime:e.runtime,authToken:n,...e.ownsA2AConfigReconciler===!0?{ownsA2AConfigReconciler:!0}:{},...e.orphanExitMs!==void 0?{orphanExitEnabled:!0}:{},allowAgentRegistrationAdmin:!0,notify:_,runResults:c,controlJournal:p,reverseBridgeHub:R,management:I,durableHostToolInvocations:!0,requireOperationEnvelope:!0,logs:i(()=>({logFile:e.paths.logFile,entries:wu(e.paths)}),"logs")}),"createDispatcher")});let T=process.env.KODAX_INTERNAL_DAEMON_TEST_READY_DELAY_MS;T!==void 0&&await cy(T),y=Ei(e,"ready"),Vt(e.paths,y),I.armOrphanExitAfterReady(),En(e.paths,"info","Runtime daemon ready.",{runtimeId:y.runtimeId,endpoint:y.endpoint})}catch(T){En(e.paths,"error","Runtime daemon failed to start.",{error:Nn(T).message});let _=!0;try{await o?.close()}catch(N){_=!1,En(e.paths,"error","Runtime daemon transport cleanup failed.",{error:Nn(N).message})}throw I.close(),c.clear(),R.close(),r(),_?await _c(e.paths,e.lock):Vt(e.paths,{...t,status:"unhealthy",lastError:"Runtime daemon transport cleanup failed."}),T}let x=!1,f,C=!1,m=!1,k=!1,l=!1,v,h=new Promise(T=>{v=T}),P=i(()=>{if(x)return Promise.resolve();if(f)return f;let T=(async()=>{let _=[];if(!l)try{Vt(e.paths,Ei(e,"stopping")),En(e.paths,"info","Runtime daemon stopping.")}catch(N){_.push(`state transition: ${Nn(N).message}`)}if(!C)try{await o?.close(),C=!0}catch(N){_.push(`transport close: ${Nn(N).message}`)}if(m||(I.close(),R.close(),c.clear(),m=!0),!k)try{await e.runtime.close(),k=!0}catch(N){_.push(`Runtime close: ${Nn(N).message}`)}try{En(e.paths,"info","Runtime daemon host stopped.")}catch(N){_.push(`stop log: ${Nn(N).message}`)}if(r(),C&&k&&!l){let N=await _c(e.paths,e.lock),q=Ve(e.lock.file),te=q?.runtimeId===e.lock.owner.runtimeId&&q.pid===e.lock.owner.pid&&q.createdAt===e.lock.owner.createdAt;!N&&te?_.push("owner release: the daemon still owns its profile lock"):l=!0}else if(!C||!k)try{Vt(e.paths,{...Ei(e,"unhealthy"),lastError:_.join("; ")})}catch(N){_.push(`unhealthy state: ${Nn(N).message}`)}if(_.length>0){try{En(e.paths,"error","Runtime daemon host stopped with cleanup failures.",{failures:_})}catch(N){_.push(`failure log: ${Nn(N).message}`)}throw new Error(`Runtime daemon cleanup failed: ${_.join("; ")}`)}x=!0,v?.()})();return f=T,T.finally(()=>{f===T&&(f=void 0),r()}).catch(()=>{}),T},"closeHost");return s=i(()=>{try{En(e.paths,"info","Runtime daemon stop requested.")}catch(_){we({source:"runtime.daemon.host",level:"warn",message:"Runtime daemon stop request could not be logged.",detail:Nn(_)})}setTimeout(()=>{P().catch(_=>{we({source:"runtime.daemon.host",level:"error",message:"Runtime daemon shutdown failed.",detail:Nn(_)})})},0).unref?.()},"scheduleStop"),a&&s(),{endpoint:e.endpoint,state:y,closed:h,unref(){o?.unref()},close:P}}i(Oc,"startRuntimeDaemonHost");async function _c(e,n){for(let t=0;t<50;t+=1){try{if(bu(e,n))return!0}catch(o){we({source:"runtime.daemon.host",level:"warn",message:"Runtime daemon ownership release attempt failed.",detail:Nn(o)})}let r=Ve(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(o=>{setTimeout(o,10)})}try{En(e,"error","Runtime daemon ownership release timed out.")}catch(t){we({source:"runtime.daemon.host",level:"error",message:"Runtime daemon ownership release timed out and could not be logged.",detail:Nn(t)})}return!1}i(_c,"releaseHostOwnership");function uy(e,n){try{En(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{}}i(uy,"appendRuntimeDiagnostic");function Ei(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}}i(Ei,"createHostState");async function cy(e){if(e===void 0)return;let n=Number(e);!Number.isFinite(n)||n<=0||await new Promise(t=>{setTimeout(t,Math.min(n,3e4))})}i(cy,"delayInternalDaemonReadyForTest");function Nn(e){return e instanceof Error?e:new Error(String(e))}i(Nn,"normalizeHostError");async function Nc(e){if(e.orphanExitMs!==void 0&&(!Number.isSafeInteger(e.orphanExitMs)||e.orphanExitMs<=0))throw new Error("orphanExitMs must be a positive safe integer.");let n=e.profile??"default",t=fy(e.homeDir),r=ms.resolve(e.configHome??ms.join(t,".kodax")),o=Jn(r,n);Ri(o);let s=e.endpoint??er(n,zt(t,r)),a=Number.parseInt(process.env.KODAX_DAEMON_JOB_SUPERVISOR_PID??"",10),u=Vr()&&Number.isSafeInteger(a)&&a>0,c={runtimeId:`rt_${ly().replace(/-/g,"").slice(0,12)}`,pid:process.pid,createdAt:new Date().toISOString(),kind:"daemon",...u?{processContainment:"windows-job",supervisorPid:a}:{}},p=await zo(o,c,e.healthCheck);if(p.kind==="attach"){let R=wt(p.state);return Fc(o,R,e.connectTimeoutMs)}if(p.kind==="wait")return py(o,s,c,{...e,profile:n});if(p.kind==="unhealthy")throw new Error(`Runtime daemon is ${p.health}; refusing to take ownership.`);return Lc(o,s,c,p.lock,e)}i(Nc,"acquireRuntimeDaemonLease");function fy(e){return ms.resolve(e??my.homedir())}i(fy,"resolveRuntimeDaemonHomeDir");async function py(e,n,t,r){let o=Date.now()+(r.startupTimeoutMs??5e3);for(;Date.now()<=o;){let s=await zo(e,t,r.healthCheck);if(s.kind==="attach")return Fc(e,wt(s.state),r.connectTimeoutMs);if(s.kind==="claim")return Lc(e,n,t,s.lock,r);if(s.kind==="unhealthy")throw new Error(`Runtime daemon is ${s.health}; refusing to take ownership.`);await yy(r.pollIntervalMs??100)}throw new Error(`Timed out waiting for runtime daemon profile "${r.profile}" to become ready.`)}i(py,"waitForDaemonLease");async function Lc(e,n,t,r,o){let s,a=!1;try{if(s=await o.createRuntime(t.runtimeId),s.identity.runtimeId!==t.runtimeId)throw new Error("Runtime factory returned an identity that does not match its owner fence.");a=!0;let u=await Oc({runtime:s,paths:e,endpoint:n,lock:r,...o.orphanExitMs!==void 0?{orphanExitMs:o.orphanExitMs}:{},...o.ownsA2AConfigReconciler===!0?{ownsA2AConfigReconciler:!0}:{},...o.integrationStatuses?{integrationStatuses:o.integrationStatuses}:{}});try{let c=await zn(n,{connectTimeoutMs:o.connectTimeoutMs});return gy(e,n,c,u)}catch(c){throw await u.close(),c}}catch(u){throw a||hi(r),await s?.close(),u}}i(Lc,"createClaimedDaemonLease");async function Fc(e,n,t){let r=await zn(n,{connectTimeoutMs:t}),o=!1,s,a=!1,u,c=i(()=>{if(o)return Promise.resolve();if(s)return s;let p=Promise.resolve(r.close?.()).then(()=>{o=!0});return s=p,p.finally(()=>{s===p&&(s=void 0)}).catch(()=>{}),p},"closeTransport");return{transport:r,endpoint:n,paths:e,ownsHost:!1,close:c,shutdown(){if(u)return u;let p=(async()=>{a||(await r.request("runtime.shutdown"),a=!0),await c()})();return u=p,p.finally(()=>{u===p&&(u=void 0)}).catch(()=>{}),p}}}i(Fc,"createAttachedLease");function gy(e,n,t,r){r.unref();let o=!1,s=!1,a,u;return{transport:t,endpoint:n,paths:e,ownsHost:!0,hostClosed:r.closed,close(){if(o)return Promise.resolve();if(a)return a;let c=Promise.resolve(t.close?.()).then(()=>{o=!0});return a=c,c.finally(()=>{a===c&&(a=void 0)}).catch(()=>{}),c},shutdown(){if(s)return Promise.resolve();if(u)return u;let c=r.close().then(()=>{s=!0});return u=c,c.finally(()=>{u===c&&(u=void 0)}).catch(()=>{}),c}}}i(gy,"createOwnedLease");function yy(e){return new Promise(n=>{setTimeout(n,e).unref?.()})}i(yy,"delay");import{spawn as Dy}from"node:child_process";import{appendFileSync as fI,closeSync as Jc,existsSync as Ci,ftruncateSync as My,openSync as zc,readSync as _y,renameSync as Oy,statSync as Vc,unlinkSync as Ny,writeSync as Ly}from"node:fs";import{fileURLToPath as Fy}from"node:url";import jy from"node:os";import xn from"node:path";import{spawn as Ry}from"node:child_process";import{randomUUID as fs}from"node:crypto";import{readFileSync as hy,rmSync as Pi,writeFileSync as wy}from"node:fs";import jc from"node:os";import Hc from"node:path";var vy=15e3,ps="KODAX_INTERNAL_WINDOWS_JOB_LAUNCH",xi="KODAX_INTERNAL_WINDOWS_JOB_READY_FILE",gs="KODAX_INTERNAL_WINDOWS_JOB_SCRIPT_FILE",$c="KODAX_INTERNAL_WINDOWS_JOB_TEST_OWNER_AFTER_READY",Sy=String.raw`
|
|
24
|
+
const { spawn } = require('node:child_process');
|
|
25
|
+
const { existsSync, writeFileSync } = require('node:fs');
|
|
26
|
+
const readyFile = process.env.${xi};
|
|
27
|
+
const childEnv = { ...process.env };
|
|
28
|
+
delete childEnv.${gs};
|
|
29
|
+
delete childEnv.${$c};
|
|
30
|
+
const fail = (message) => {
|
|
31
|
+
if (!existsSync(readyFile)) writeFileSync(readyFile, 'ERROR:' + message);
|
|
32
|
+
};
|
|
33
|
+
let child;
|
|
34
|
+
let childExited = false;
|
|
35
|
+
process.on('message', (message) => {
|
|
36
|
+
if (message?.kind !== 'terminate') return;
|
|
37
|
+
if (child?.pid && !childExited) child.kill();
|
|
38
|
+
else process.exit(1);
|
|
39
|
+
});
|
|
40
|
+
child = spawn('powershell.exe', [
|
|
41
|
+
'-NoProfile',
|
|
42
|
+
'-NonInteractive',
|
|
43
|
+
'-ExecutionPolicy',
|
|
44
|
+
'Bypass',
|
|
45
|
+
'-File',
|
|
46
|
+
process.env.${gs},
|
|
47
|
+
], { detached: false, windowsHide: true, stdio: 'ignore', env: childEnv });
|
|
48
|
+
child.once('error', (error) => fail(error.message));
|
|
49
|
+
child.once('exit', (code) => {
|
|
50
|
+
childExited = true;
|
|
51
|
+
if (code !== 0) fail('PowerShell supervisor exited before readiness.');
|
|
52
|
+
process.exit(code ?? 1);
|
|
53
|
+
});
|
|
54
|
+
const publishOwner = () => {
|
|
55
|
+
if (!Number.isSafeInteger(child.pid) || child.pid <= 0 || !process.send) return;
|
|
56
|
+
process.send({ kind: 'owner', pid: child.pid }, (error) => {
|
|
57
|
+
if (!error) return;
|
|
58
|
+
child.kill();
|
|
59
|
+
fail('Could not publish the PowerShell Job owner: ' + error.message);
|
|
60
|
+
});
|
|
61
|
+
};
|
|
62
|
+
if (process.env.${$c} === '1') {
|
|
63
|
+
const timer = setInterval(() => {
|
|
64
|
+
if (!existsSync(readyFile)) return;
|
|
65
|
+
clearInterval(timer);
|
|
66
|
+
publishOwner();
|
|
67
|
+
}, 10);
|
|
68
|
+
} else {
|
|
69
|
+
publishOwner();
|
|
70
|
+
}
|
|
71
|
+
`,Iy=String.raw`
|
|
72
|
+
using System;
|
|
73
|
+
using System.IO;
|
|
74
|
+
using System.Runtime.InteropServices;
|
|
75
|
+
using System.Text;
|
|
76
|
+
using System.Threading;
|
|
77
|
+
|
|
78
|
+
public static class KodaXWindowsJobSupervisor {
|
|
79
|
+
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
|
|
80
|
+
private struct StartupInfo {
|
|
81
|
+
public uint cb;
|
|
82
|
+
public string lpReserved;
|
|
83
|
+
public string lpDesktop;
|
|
84
|
+
public string lpTitle;
|
|
85
|
+
public uint dwX;
|
|
86
|
+
public uint dwY;
|
|
87
|
+
public uint dwXSize;
|
|
88
|
+
public uint dwYSize;
|
|
89
|
+
public uint dwXCountChars;
|
|
90
|
+
public uint dwYCountChars;
|
|
91
|
+
public uint dwFillAttribute;
|
|
92
|
+
public uint dwFlags;
|
|
93
|
+
public ushort wShowWindow;
|
|
94
|
+
public ushort cbReserved2;
|
|
95
|
+
public IntPtr lpReserved2;
|
|
96
|
+
public IntPtr hStdInput;
|
|
97
|
+
public IntPtr hStdOutput;
|
|
98
|
+
public IntPtr hStdError;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
[StructLayout(LayoutKind.Sequential)]
|
|
102
|
+
private struct ProcessInformation {
|
|
103
|
+
public IntPtr hProcess;
|
|
104
|
+
public IntPtr hThread;
|
|
105
|
+
public uint dwProcessId;
|
|
106
|
+
public uint dwThreadId;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
[StructLayout(LayoutKind.Sequential)]
|
|
110
|
+
private struct SecurityAttributes {
|
|
111
|
+
public int length;
|
|
112
|
+
public IntPtr securityDescriptor;
|
|
113
|
+
public int inheritHandle;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
[StructLayout(LayoutKind.Sequential)]
|
|
117
|
+
private struct BasicLimitInformation {
|
|
118
|
+
public long PerProcessUserTimeLimit;
|
|
119
|
+
public long PerJobUserTimeLimit;
|
|
120
|
+
public uint LimitFlags;
|
|
121
|
+
public UIntPtr MinimumWorkingSetSize;
|
|
122
|
+
public UIntPtr MaximumWorkingSetSize;
|
|
123
|
+
public uint ActiveProcessLimit;
|
|
124
|
+
public UIntPtr Affinity;
|
|
125
|
+
public uint PriorityClass;
|
|
126
|
+
public uint SchedulingClass;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
[StructLayout(LayoutKind.Sequential)]
|
|
130
|
+
private struct IoCounters {
|
|
131
|
+
public ulong ReadOperationCount;
|
|
132
|
+
public ulong WriteOperationCount;
|
|
133
|
+
public ulong OtherOperationCount;
|
|
134
|
+
public ulong ReadTransferCount;
|
|
135
|
+
public ulong WriteTransferCount;
|
|
136
|
+
public ulong OtherTransferCount;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
[StructLayout(LayoutKind.Sequential)]
|
|
140
|
+
private struct ExtendedLimitInformation {
|
|
141
|
+
public BasicLimitInformation BasicLimitInformation;
|
|
142
|
+
public IoCounters IoInfo;
|
|
143
|
+
public UIntPtr ProcessMemoryLimit;
|
|
144
|
+
public UIntPtr JobMemoryLimit;
|
|
145
|
+
public UIntPtr PeakProcessMemoryUsed;
|
|
146
|
+
public UIntPtr PeakJobMemoryUsed;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
[StructLayout(LayoutKind.Sequential)]
|
|
150
|
+
private struct BasicAccountingInformation {
|
|
151
|
+
public long TotalUserTime;
|
|
152
|
+
public long TotalKernelTime;
|
|
153
|
+
public long ThisPeriodTotalUserTime;
|
|
154
|
+
public long ThisPeriodTotalKernelTime;
|
|
155
|
+
public uint TotalPageFaultCount;
|
|
156
|
+
public uint TotalProcesses;
|
|
157
|
+
public uint ActiveProcesses;
|
|
158
|
+
public uint TotalTerminatedProcesses;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
[DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
|
|
162
|
+
private static extern bool CreateProcessW(
|
|
163
|
+
string applicationName,
|
|
164
|
+
StringBuilder commandLine,
|
|
165
|
+
IntPtr processAttributes,
|
|
166
|
+
IntPtr threadAttributes,
|
|
167
|
+
bool inheritHandles,
|
|
168
|
+
uint creationFlags,
|
|
169
|
+
IntPtr environment,
|
|
170
|
+
string currentDirectory,
|
|
171
|
+
ref StartupInfo startupInfo,
|
|
172
|
+
out ProcessInformation processInformation);
|
|
173
|
+
|
|
174
|
+
[DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
|
|
175
|
+
private static extern IntPtr CreateJobObjectW(IntPtr attributes, string name);
|
|
176
|
+
|
|
177
|
+
[DllImport("kernel32.dll", SetLastError = true)]
|
|
178
|
+
private static extern bool SetInformationJobObject(
|
|
179
|
+
IntPtr job,
|
|
180
|
+
int informationClass,
|
|
181
|
+
ref ExtendedLimitInformation information,
|
|
182
|
+
uint informationLength);
|
|
183
|
+
|
|
184
|
+
[DllImport("kernel32.dll", SetLastError = true)]
|
|
185
|
+
private static extern bool QueryInformationJobObject(
|
|
186
|
+
IntPtr job,
|
|
187
|
+
int informationClass,
|
|
188
|
+
out BasicAccountingInformation information,
|
|
189
|
+
uint informationLength,
|
|
190
|
+
IntPtr returnLength);
|
|
191
|
+
|
|
192
|
+
[DllImport("kernel32.dll", SetLastError = true)]
|
|
193
|
+
private static extern bool AssignProcessToJobObject(IntPtr job, IntPtr process);
|
|
194
|
+
|
|
195
|
+
[DllImport("kernel32.dll", SetLastError = true)]
|
|
196
|
+
private static extern bool TerminateProcess(IntPtr process, uint exitCode);
|
|
197
|
+
|
|
198
|
+
[DllImport("kernel32.dll", SetLastError = true)]
|
|
199
|
+
private static extern uint ResumeThread(IntPtr thread);
|
|
200
|
+
|
|
201
|
+
[DllImport("kernel32.dll", SetLastError = true)]
|
|
202
|
+
private static extern uint WaitForSingleObject(IntPtr handle, uint milliseconds);
|
|
203
|
+
|
|
204
|
+
[DllImport("kernel32.dll", SetLastError = true)]
|
|
205
|
+
private static extern bool GetExitCodeProcess(IntPtr process, out uint exitCode);
|
|
206
|
+
|
|
207
|
+
[DllImport("kernel32.dll", SetLastError = true)]
|
|
208
|
+
private static extern bool TerminateJobObject(IntPtr job, uint exitCode);
|
|
209
|
+
|
|
210
|
+
[DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
|
|
211
|
+
private static extern IntPtr CreateFileW(
|
|
212
|
+
string fileName,
|
|
213
|
+
uint desiredAccess,
|
|
214
|
+
uint shareMode,
|
|
215
|
+
ref SecurityAttributes securityAttributes,
|
|
216
|
+
uint creationDisposition,
|
|
217
|
+
uint flagsAndAttributes,
|
|
218
|
+
IntPtr templateFile);
|
|
219
|
+
|
|
220
|
+
[DllImport("kernel32.dll")]
|
|
221
|
+
private static extern bool CloseHandle(IntPtr handle);
|
|
222
|
+
|
|
223
|
+
private const uint CreateSuspended = 0x00000004;
|
|
224
|
+
private const uint CreateNoWindow = 0x08000000;
|
|
225
|
+
private const uint StartfUseStdHandles = 0x00000100;
|
|
226
|
+
private const uint JobObjectLimitKillOnJobClose = 0x00002000;
|
|
227
|
+
private const uint FileAppendData = 0x00000004;
|
|
228
|
+
private const uint Synchronize = 0x00100000;
|
|
229
|
+
private const uint FileShareRead = 0x00000001;
|
|
230
|
+
private const uint FileShareWrite = 0x00000002;
|
|
231
|
+
private const uint FileShareDelete = 0x00000004;
|
|
232
|
+
private const uint OpenAlways = 4;
|
|
233
|
+
private const uint FileAttributeNormal = 0x00000080;
|
|
234
|
+
|
|
235
|
+
private static void Require(bool result, string operation) {
|
|
236
|
+
if (!result) throw new InvalidOperationException(
|
|
237
|
+
operation + " failed with Win32 error " + Marshal.GetLastWin32Error());
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
private static void PublishReady(string readyFile, uint processId) {
|
|
241
|
+
var temporaryFile = readyFile + "." + Guid.NewGuid().ToString("N") + ".tmp";
|
|
242
|
+
try {
|
|
243
|
+
File.WriteAllText(
|
|
244
|
+
temporaryFile,
|
|
245
|
+
"{\"processPid\":" + processId +
|
|
246
|
+
",\"containmentSupervisorPid\":" +
|
|
247
|
+
System.Diagnostics.Process.GetCurrentProcess().Id + "}");
|
|
248
|
+
File.Move(temporaryFile, readyFile);
|
|
249
|
+
} finally {
|
|
250
|
+
if (File.Exists(temporaryFile)) File.Delete(temporaryFile);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
public static int Run(
|
|
255
|
+
string executable,
|
|
256
|
+
string commandLine,
|
|
257
|
+
string cwd,
|
|
258
|
+
string readyFile,
|
|
259
|
+
string logFile,
|
|
260
|
+
string jobName) {
|
|
261
|
+
var job = CreateJobObjectW(IntPtr.Zero, jobName);
|
|
262
|
+
if (job == IntPtr.Zero) throw new InvalidOperationException(
|
|
263
|
+
"CreateJobObject failed with Win32 error " + Marshal.GetLastWin32Error());
|
|
264
|
+
var process = new ProcessInformation();
|
|
265
|
+
var processAssigned = false;
|
|
266
|
+
var security = new SecurityAttributes();
|
|
267
|
+
security.length = Marshal.SizeOf(typeof(SecurityAttributes));
|
|
268
|
+
security.inheritHandle = 1;
|
|
269
|
+
var logHandle = CreateFileW(
|
|
270
|
+
logFile,
|
|
271
|
+
FileAppendData | Synchronize,
|
|
272
|
+
FileShareRead | FileShareWrite | FileShareDelete,
|
|
273
|
+
ref security,
|
|
274
|
+
OpenAlways,
|
|
275
|
+
FileAttributeNormal,
|
|
276
|
+
IntPtr.Zero);
|
|
277
|
+
if (logHandle == new IntPtr(-1)) throw new InvalidOperationException(
|
|
278
|
+
"CreateFile for daemon log failed with Win32 error " + Marshal.GetLastWin32Error());
|
|
279
|
+
try {
|
|
280
|
+
var limits = new ExtendedLimitInformation();
|
|
281
|
+
limits.BasicLimitInformation.LimitFlags = JobObjectLimitKillOnJobClose;
|
|
282
|
+
Require(SetInformationJobObject(
|
|
283
|
+
job,
|
|
284
|
+
9,
|
|
285
|
+
ref limits,
|
|
286
|
+
(uint)Marshal.SizeOf(typeof(ExtendedLimitInformation))),
|
|
287
|
+
"SetInformationJobObject");
|
|
288
|
+
|
|
289
|
+
var startup = new StartupInfo();
|
|
290
|
+
startup.cb = (uint)Marshal.SizeOf(typeof(StartupInfo));
|
|
291
|
+
startup.dwFlags = StartfUseStdHandles;
|
|
292
|
+
startup.hStdInput = IntPtr.Zero;
|
|
293
|
+
startup.hStdOutput = logHandle;
|
|
294
|
+
startup.hStdError = logHandle;
|
|
295
|
+
Require(CreateProcessW(
|
|
296
|
+
executable,
|
|
297
|
+
new StringBuilder(commandLine),
|
|
298
|
+
IntPtr.Zero,
|
|
299
|
+
IntPtr.Zero,
|
|
300
|
+
true,
|
|
301
|
+
CreateSuspended | CreateNoWindow,
|
|
302
|
+
IntPtr.Zero,
|
|
303
|
+
cwd,
|
|
304
|
+
ref startup,
|
|
305
|
+
out process),
|
|
306
|
+
"CreateProcess");
|
|
307
|
+
Require(AssignProcessToJobObject(job, process.hProcess), "AssignProcessToJobObject");
|
|
308
|
+
processAssigned = true;
|
|
309
|
+
PublishReady(readyFile, process.dwProcessId);
|
|
310
|
+
if (ResumeThread(process.hThread) == 0xffffffff) {
|
|
311
|
+
throw new InvalidOperationException(
|
|
312
|
+
"ResumeThread failed with Win32 error " + Marshal.GetLastWin32Error());
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
if (WaitForSingleObject(process.hProcess, 0xffffffff) == 0xffffffff) {
|
|
316
|
+
throw new InvalidOperationException(
|
|
317
|
+
"WaitForSingleObject failed with Win32 error " + Marshal.GetLastWin32Error());
|
|
318
|
+
}
|
|
319
|
+
uint exitCode;
|
|
320
|
+
if (!GetExitCodeProcess(process.hProcess, out exitCode)) exitCode = 1;
|
|
321
|
+
Require(TerminateJobObject(job, exitCode), "TerminateJobObject");
|
|
322
|
+
while (true) {
|
|
323
|
+
BasicAccountingInformation accounting;
|
|
324
|
+
Require(QueryInformationJobObject(
|
|
325
|
+
job,
|
|
326
|
+
1,
|
|
327
|
+
out accounting,
|
|
328
|
+
(uint)Marshal.SizeOf(typeof(BasicAccountingInformation)),
|
|
329
|
+
IntPtr.Zero),
|
|
330
|
+
"QueryInformationJobObject");
|
|
331
|
+
if (accounting.ActiveProcesses == 0) return unchecked((int)exitCode);
|
|
332
|
+
Thread.Sleep(10);
|
|
333
|
+
}
|
|
334
|
+
} finally {
|
|
335
|
+
if (process.hProcess != IntPtr.Zero && !processAssigned) {
|
|
336
|
+
TerminateProcess(process.hProcess, 1);
|
|
337
|
+
WaitForSingleObject(process.hProcess, 2000);
|
|
338
|
+
}
|
|
339
|
+
if (process.hThread != IntPtr.Zero) CloseHandle(process.hThread);
|
|
340
|
+
if (process.hProcess != IntPtr.Zero) CloseHandle(process.hProcess);
|
|
341
|
+
CloseHandle(logHandle);
|
|
342
|
+
CloseHandle(job);
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
}`,by=String.raw`
|
|
346
|
+
$ErrorActionPreference = 'Stop'
|
|
347
|
+
try {
|
|
348
|
+
$readyFile = $env:${xi}
|
|
349
|
+
$payloadBytes = [Convert]::FromBase64String($env:${ps})
|
|
350
|
+
$payload = [Text.Encoding]::UTF8.GetString($payloadBytes) | ConvertFrom-Json
|
|
351
|
+
Remove-Item Env:${ps} -ErrorAction SilentlyContinue
|
|
352
|
+
Remove-Item Env:${xi} -ErrorAction SilentlyContinue
|
|
353
|
+
$env:KODAX_DAEMON_JOB_CONTAINED = '1'
|
|
354
|
+
$env:KODAX_DAEMON_JOB_SUPERVISOR_PID = [string]$PID
|
|
355
|
+
$env:KODAX_DAEMON_JOB_NAME = [string]$payload.jobName
|
|
356
|
+
$source = @'
|
|
357
|
+
${Iy}
|
|
358
|
+
'@
|
|
359
|
+
Add-Type -TypeDefinition $source
|
|
360
|
+
$exitCode = [KodaXWindowsJobSupervisor]::Run(
|
|
361
|
+
[string]$payload.executable,
|
|
362
|
+
[string]$payload.commandLine,
|
|
363
|
+
[string]$payload.cwd,
|
|
364
|
+
[string]$payload.readyFile,
|
|
365
|
+
[string]$payload.logFile,
|
|
366
|
+
[string]$payload.jobName)
|
|
367
|
+
exit $exitCode
|
|
368
|
+
} catch {
|
|
369
|
+
[IO.File]::WriteAllText($readyFile, 'ERROR:' + $_.Exception.Message)
|
|
370
|
+
exit 1
|
|
371
|
+
}
|
|
372
|
+
`;function ky(e){return e.length>0&&!/[\s"]/u.test(e)?e:`"${e.replace(/(\\*)"/gu,'$1$1\\"').replace(/(\\+)$/u,"$1$1")}"`}i(ky,"quoteWindowsCommandLineArg");function Ey(e,n){return[e,...n].map(ky).join(" ")}i(Ey,"buildWindowsCommandLine");async function Bc(e){if(process.platform!=="win32")throw new Error("Windows Job containment is available only on Windows.");let n=Hc.join(jc.tmpdir(),`kodax-daemon-job-${fs()}.ready`),t=Hc.join(jc.tmpdir(),`kodax-daemon-job-${fs()}.ps1`);wy(t,by,{encoding:"utf8",flag:"wx",mode:384});let r=Buffer.from(JSON.stringify({executable:e.executable,commandLine:Ey(e.executable,e.args),cwd:e.cwd,readyFile:n,logFile:e.logFile,jobName:`KodaXDaemonJob-${fs()}`}),"utf8").toString("base64"),o={...e.env};delete o.KODAX_DAEMON_JOB_CONTAINED,delete o.KODAX_DAEMON_JOB_SUPERVISOR_PID,delete o.KODAX_DAEMON_JOB_NAME;let s;try{s=Ry(process.execPath,["-e",Sy],{cwd:e.cwd,detached:!0,windowsHide:!0,stdio:["ignore","ignore","ignore","ipc"],env:{...o,[ps]:r,[xi]:n,[gs]:t}})}catch(u){throw Pi(n,{force:!0}),Pi(t,{force:!0}),u}let a=await Py(s,n,e.startupTimeoutMs??vy).catch(async u=>{try{await qc(s)}catch(c){throw new AggregateError([u,c],"Windows Job supervisor startup failed and its process tree was not reclaimed.")}throw u}).finally(()=>{Pi(n,{force:!0}),Pi(t,{force:!0})});return{...a,supervisor:s,release:i(()=>xy(s),"release"),terminate:i(()=>qc(s,a.processPid),"terminate")}}i(Bc,"spawnWindowsJobContainedProcess");async function Py(e,n,t){let r,o,s=i(c=>{r=c},"captureLaunchError"),a=i(c=>{c!==null&&typeof c=="object"&&"kind"in c&&c.kind==="owner"&&"pid"in c&&Number.isSafeInteger(c.pid)&&Number(c.pid)>0&&(o=Number(c.pid))},"captureOwner");e.once("error",s),e.on("message",a);let u=Date.now()+t;try{for(;;){if(r!==void 0)throw r;try{let c=hy(n,"utf8").trim();if(c.startsWith("ERROR:"))throw new Error(`Windows Job supervisor startup failed: ${c.slice(6)}`);let p=JSON.parse(c);if(!Number.isSafeInteger(p.processPid)||Number(p.processPid)<=0||!Number.isSafeInteger(p.containmentSupervisorPid)||Number(p.containmentSupervisorPid)<=0)throw new Error("Windows Job supervisor wrote invalid readiness identities.");if(o!==void 0){if(Number(p.containmentSupervisorPid)!==o)throw new Error("Windows Job supervisor readiness owner identities do not match.");return{processPid:Number(p.processPid),containmentSupervisorPid:o}}}catch(c){if(c.code!=="ENOENT")throw c}if(e.exitCode!==null||e.signalCode!==null)throw new Error(`Windows Job supervisor exited before daemon readiness (code ${e.exitCode??"unknown"}).`);if(Date.now()>=u)throw new Error("Windows Job supervisor did not report daemon readiness in time.");await new Promise(c=>setTimeout(c,10))}}finally{e.off("error",s),e.off("message",a)}}i(Py,"waitForSupervisorReadiness");function xy(e){e.connected&&e.disconnect(),e.unref()}i(xy,"releaseSupervisor");async function qc(e,n){if(e.pid!==void 0){if(e.exitCode===null&&e.signalCode===null){if(!e.connected)throw new Error("Windows Job supervisor control channel is unavailable during startup.");await new Promise((t,r)=>{e.send({kind:"terminate"},o=>{o?r(o):t()})})}await Cy(e),n!==void 0&&await Ay(n,2e3)}}i(qc,"terminateSupervisor");async function Cy(e){let n=Date.now()+2e3;for(;e.exitCode===null&&e.signalCode===null;){if(Date.now()>=n)throw new Error("Windows Job supervisor did not exit after startup cleanup.");await new Promise(t=>setTimeout(t,10))}}i(Cy,"waitForWrapperExit");async function Ay(e,n){let t=Date.now()+n;for(;Ty(e);){if(Date.now()>=t)throw new Error(`Process ${e} did not exit after termination.`);await new Promise(r=>setTimeout(r,10))}}i(Ay,"waitForPidExit");function Ty(e){try{return process.kill(e,0),!0}catch(n){if(n.code==="ESRCH")return!1;throw n}}i(Ty,"isPidAlive");var Ai=class extends Error{constructor(t){super(`Runtime daemon child ${t??"unknown"} process-tree cleanup could not be verified.`);this.pid=t;this.name="RuntimeDaemonProcessCleanupIncompleteError"}pid;static{i(this,"RuntimeDaemonProcessCleanupIncompleteError")}code="process_tree_cleanup_incomplete"},Kc=1e3,Gc=256*1024;function Tr(e){return xn.join(e.rootDir,"bootstrap.log")}i(Tr,"runtimeDaemonBootstrapLogPath");function Hy(e,n=Gc){kn(e);let t=Tr(e),r=Math.max(1,n),o=`${t}.1`;return ys(o,r),Ci(t)&&Vc(t).size>=r&&(ys(t,r),Ci(o)&&Ny(o),Oy(t,o)),zc(t,"a",384)}i(Hy,"openRuntimeDaemonBootstrapLog");function $y(e,n=Gc){ys(Tr(e),Math.max(1,n))}i($y,"capRuntimeDaemonBootstrapLog");function ys(e,n){if(!Ci(e))return;let t=Vc(e).size;if(t<=n)return;let r=zc(e,"r+");try{let o=Buffer.allocUnsafe(n),s=0;for(;s<o.length;){let a=_y(r,o,s,o.length-s,t-n+s);if(a===0)break;s+=a}My(r,0),s>0&&Ly(r,o,0,s,0)}finally{Jc(r)}}i(ys,"capFileToTail");var Yn=class extends Error{constructor(t,r){super(t);this.reason=r;this.name="RuntimeDaemonStartupError"}reason;static{i(this,"RuntimeDaemonStartupError")}};async function Yc(e){if(e.orphanExitMs!==void 0&&(!Number.isSafeInteger(e.orphanExitMs)||e.orphanExitMs<=0))throw new Error("orphanExitMs must be a positive safe integer.");let n=e.profile??"default",t=xn.resolve(e.homeDir??jy.homedir()),r=xn.resolve(e.configHome??xn.join(t,".kodax")),o=Jn(r,n);Ri(o);let s=er(o.profile,zt(t,r));if(e.endpoint&&e.endpoint.path!==s.path)throw new Error("SDK daemon auto-start only supports the profile default endpoint; use attach-only mode for custom endpoints.");let a=await xr(o,e.healthCheck),u=Gt(a);if(u==="healthy"&&a.state){let I=a.state.status==="ready"?{...a,state:a.state}:await By(o,e,a);return Xc(o,wt(I.state),!1,e)}if(u==="unhealthy"||u==="mismatch")throw new Error(`Runtime daemon is ${u}; refusing to start a competing owner.`);let c=await Wy({profile:o.profile,homeDir:t,configHome:r,defaultProvider:e.defaultProvider,defaultModel:e.defaultModel,sessionsDir:e.sessionsDir,permissionTimeoutMs:e.permissionTimeoutMs,orphanExitMs:e.orphanExitMs,startupTimeoutMs:e.startupTimeoutMs}),p=await qy(o,e,c),R=wt(p.state);return Xc(o,R,p.state.pid===c.pid,e)}i(Yc,"acquireRuntimeDaemonProcessLease");async function Xc(e,n,t,r){let o=await zn(n,{connectTimeoutMs:r.connectTimeoutMs}),s=!1,a,u=!1,c,p=i(()=>{if(s)return Promise.resolve();if(a)return a;let R=(async()=>{await o.close?.(),s=!0})();return a=R,R.finally(()=>{a===R&&(a=void 0)}).catch(()=>{}),R},"closeTransport");return{transport:o,endpoint:n,paths:e,ownsHost:t,close:p,shutdown(){if(c)return c;let R=(async()=>{u||(await o.request("runtime.shutdown"),u=!0),await p()})();return c=R,R.finally(()=>{c===R&&(c=void 0)}).catch(()=>{}),R}}}i(Xc,"connectProcessLease");async function qy(e,n,t,r=xr){let o=Date.now()+(n.startupTimeoutMs??6e4);try{for(;;){let s=await Ky(e,n,t,r),a=Gt(s);if(a==="healthy"&&s.state?.status==="ready")return s.state.pid===t.pid?t.unref():await Jy(t),{...s,state:s.state};if(a==="mismatch")throw new Yn("Runtime daemon endpoint identity does not match its persisted owner state.","identity_mismatch");let u=o-Date.now();if(u<=0)throw Zc(e);await Xy(Math.min(Math.max(1,n.pollIntervalMs??100),u),e,t,n.startupSignal)}}catch(s){try{await t.terminate()}catch(a){throw new AggregateError([s,a],"Runtime daemon startup failed and its child process could not be reclaimed.")}try{$y(e)}catch{}throw s}}i(qy,"waitForHealthyDaemonStartup");async function By(e,n,t,r=xr){let o=Date.now()+(n.startupTimeoutMs??6e4),s=t.state;if(s===void 0)throw new Yn("Runtime daemon owner state disappeared before it reached ready.","identity_mismatch");let a=t;for(;;){let u=Gt(a);if(a.state!==void 0&&(a.state.runtimeId!==s.runtimeId||a.state.pid!==s.pid||a.state.profile!==s.profile||a.state.endpoint!==s.endpoint))throw new Yn("Runtime daemon owner identity changed before it reached ready.","identity_mismatch");if(u==="healthy"&&a.state?.status==="ready")return{...a,state:a.state};if(u==="mismatch")throw new Yn("Runtime daemon endpoint identity does not match its persisted owner state.","identity_mismatch");let c=o-Date.now();if(c<=0)throw Zc(e);await bt(Ti(Math.min(Math.max(1,n.pollIntervalMs??100),c)),n.startupSignal),a=await bt(r(e,n.healthCheck),n.startupSignal)}}i(By,"waitForReadyRuntimeDaemonOwner");async function Ky(e,n,t,r){let o=await bt(Promise.race([r(e,n.healthCheck).then(s=>({kind:"health",observation:s})),t.exit.then(s=>({kind:"exit",exit:s}))]),n.startupSignal);if(o.kind==="exit"){if(Rs(e,t))return r(e,n.healthCheck);if(o.exit.code===0&&o.exit.signal===null){let s=Math.min(Kc,n.startupTimeoutMs??Kc),a=Date.now()+s;for(;Date.now()<=a;){let u=await bt(r(e,n.healthCheck),n.startupSignal);if(Gt(u)!=="missing"||Rs(e,t))return u;await bt(Ti(Math.min(n.pollIntervalMs??100,Math.max(1,a-Date.now()))),n.startupSignal)}}throw Qc(e,o.exit)}return o.observation}i(Ky,"observeStartupHealth");async function Xy(e,n,t,r){let o=await bt(Promise.race([Ti(e).then(()=>{}),t.exit]),r);if(o!==void 0){if(Rs(n,t)){await bt(Ti(e),r);return}throw Qc(n,o)}}i(Xy,"waitForStartupPoll");function Rs(e,n){let t=Ve(e.lockFile);return t!==void 0&&t.pid!==n.pid}i(Rs,"hasCompetingStartupOwner");function Qc(e,n){let t=n.signal!==null?`signal ${n.signal}`:`code ${n.code??"unknown"}`;return new Yn(`Runtime daemon child exited before becoming healthy (${t}). See daemon bootstrap log: ${Tr(e)}`,"child_exit")}i(Qc,"runtimeDaemonExitedEarly");function Zc(e){let n=process.versions.electron===void 0?"":" Packaged Electron auto-start requires the RunAsNode fuse to remain enabled.";return new Yn(`Timed out waiting for runtime daemon profile "${e.profile}" to become ready.${n} See daemon bootstrap log: ${Tr(e)}`,"timeout")}i(Zc,"runtimeDaemonStartupTimeout");function Uy(e,n,t=process.execArgv){let r=[...n!==void 0?Qy(t,n.endsWith(".ts")):[],...n!==void 0?[n]:[],"daemon","serve","--profile",e.profile,"--home",e.homeDir,"--config-home",e.configHome];return e.defaultProvider!==void 0&&r.push("--provider",e.defaultProvider),e.defaultModel!==void 0&&r.push("--model",e.defaultModel),e.sessionsDir!==void 0&&r.push("--sessions-dir",e.sessionsDir),e.permissionTimeoutMs!==void 0&&r.push("--permission-timeout-ms",String(e.permissionTimeoutMs)),e.orphanExitMs!==void 0&&r.push("--orphan-exit-ms",String(e.orphanExitMs)),r}i(Uy,"buildRuntimeDaemonServeArgs");async function Wy(e){let n=Yy();Vy(n);let t=Uy(e,n),r=aa({args:t,env:Gy({homeDir:e.homeDir,configHome:e.configHome,parentEnv:process.env}),isElectron:process.versions.electron!==void 0}),o=Jn(e.configHome,e.profile),s=Hy(o),a,u,c,p;try{if(process.platform==="win32"){let I=await Bc({executable:process.execPath,args:r.args,cwd:process.cwd(),env:r.env,logFile:Tr(o),startupTimeoutMs:e.startupTimeoutMs});a=I.supervisor,u=I.processPid,c=I.terminate,p=I.release}else a=Dy(process.execPath,r.args,{detached:!0,stdio:["ignore",s,s],windowsHide:!0,env:r.env})}finally{Jc(s)}let R=a.exitCode!==null||a.signalCode!==null?Promise.resolve({code:a.exitCode,signal:a.signalCode}):new Promise(I=>{a.once("exit",(y,x)=>I({code:y,signal:x}))});return u===void 0&&await new Promise((I,y)=>{a.once("spawn",I),a.once("error",y)}),da(a),zy(a,R,u,c,p)}i(Wy,"spawnRuntimeDaemonServeProcess");async function Jy(e){if(e.hasExited?.()!==!0)try{await e.terminate()}catch(n){if(!(n instanceof Ai)||!await hs(e.exit,1e3))throw n}}i(Jy,"terminateCompetingStartupChild");function zy(e,n,t=e.pid,r,o){return{pid:t,exit:n,hasExited(){return no(e)},unref(){o!==void 0?o():e.unref()},async terminate(){if(r!==void 0){if(await r(),!await hs(n,1e3))throw new Error(`Runtime daemon Job supervisor ${e.pid??"unknown"} did not exit after termination.`);return}let s=no(e);if((await ua(e)).status==="unknown"&&!s)throw new Ai(t);if(!await hs(n,1e3))throw new Error(`Runtime daemon child ${t??"unknown"} did not exit after termination.`)}}}i(zy,"createRuntimeDaemonStartupProcess");async function hs(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)}}i(hs,"didExitWithin");function Vy(e){if(e!==void 0&&!Ci(e))throw new Error(`Runtime daemon CLI entry is unavailable at "${e}". Keep the published KodaX dist files external to the embedder bundle.`)}i(Vy,"assertRuntimeDaemonCliEntryAvailable");function Gy(e){let n={...e.parentEnv,KODAX_DAEMON_SERVE:"1",KODAX_HOME:e.configHome??xn.join(e.homeDir,".kodax")};return delete n[sa],n}i(Gy,"createRuntimeDaemonServeEnvironment");function Yy(){if(process.env.KODAX_BUNDLED==="true")return;let e=Fy(import.meta.url);if(e.endsWith(".ts"))return xn.resolve(xn.dirname(e),"..","kodax_cli.ts");let n=xn.dirname(e),t=xn.basename(n)==="chunks"?xn.dirname(n):n;return xn.join(t,"kodax_cli.js")}i(Yy,"resolveDaemonCliEntry");function Qy(e,n){let t=[];for(let r=0;r<e.length;r+=1){let o=e[r]??"",s=o.toLowerCase();if(s==="--require"||s==="-r"){let a=e[r+1];a!==void 0&&(Uc(a)&&t.push(o,a),r+=1)}else if(s.startsWith("--require=")){let a=o.slice(10);Uc(a)&&t.push(o)}else(s.startsWith("--max-old-space-size")||s==="--enable-source-maps")&&t.push(o)}return n&&t.push("--import","tsx"),t}i(Qy,"daemonServeExecArgv");function Uc(e){return xn.resolve(e)===xn.resolve("scripts","production-env.cjs")}i(Uc,"isKodaXProductionEnvPreload");function Ti(e){return new Promise(n=>setTimeout(n,e))}i(Ti,"delay");async function bt(e,n){if(!n)return e;if(n.aborted)throw Wc();let t;try{return await Promise.race([e,new Promise((r,o)=>{t=i(()=>o(Wc()),"cancel"),n.addEventListener("abort",t,{once:!0})})])}finally{t&&n.removeEventListener("abort",t)}}i(bt,"raceRuntimeDaemonStartupStep");function Wc(){return new Yn("Runtime daemon startup cancelled.","cancelled")}i(Wc,"runtimeDaemonStartupCancelled");var Zy=15e3,eR=25;async function nR(e){if(!Number.isSafeInteger(e.owner.pid)||e.owner.pid<=0)throw new Error("Runtime daemon shutdown verification requires a positive owner PID.");let n=e.timeoutMs??Zy,t=e.pollIntervalMs??eR;if(!Number.isSafeInteger(n)||n<=0)throw new Error("Runtime daemon shutdown verification timeout must be positive.");if(!Number.isSafeInteger(t)||t<=0)throw new Error("Runtime daemon shutdown verification poll interval must be positive.");if(e.owner.processContainment==="windows-job"&&(!Number.isSafeInteger(e.owner.supervisorPid)||e.owner.supervisorPid<=0))throw new Error("Windows Job containment requires a positive supervisor PID.");let r=Jn(e.configHome,e.profile??"default"),o=Date.now()+n,s="outcome_missing";for(;;){let a=Ve(r.lockFile),u=a?.kind==="daemon"&&nr(a.pid)&&(a.runtimeId!==e.owner.runtimeId||a.pid!==e.owner.pid)?a:void 0,c=Su(r,e.owner),p=nr(e.owner.pid),R=e.owner.processContainment==="windows-job"&&nr(e.owner.supervisorPid);if(c?.status==="failed")return{status:"failed",outcome:c};if(process.platform==="win32"&&e.owner.processContainment!=="windows-job")return{status:"unverified",reason:"containment_unavailable"};if(c?.status==="succeeded"&&!p&&!R)return u!==void 0?{status:"replacement_running",runtimeId:u.runtimeId,pid:u.pid}:{status:"succeeded",outcome:c};if(s=p?"daemon_active":R?"containment_active":"outcome_missing",Date.now()>=o)return{status:"unverified",reason:s};await tR(Math.min(t,Math.max(1,o-Date.now())))}}i(nR,"waitForRuntimeDaemonShutdown");function tR(e){return new Promise(n=>setTimeout(n,e))}i(tR,"delay");import{Worker as rR}from"node:worker_threads";import{existsSync as iR}from"node:fs";import{basename as oR,dirname as ws,join as el}from"node:path";import{fileURLToPath as nl,pathToFileURL as tl}from"node:url";var sR=3e4;function rl(e,n={}){let t=uR(),r=new rR(t,{workerData:e,execArgv:t.href.endsWith(".ts")?["--import","tsx"]:[],...n.resourceLimits!==void 0?{resourceLimits:n.resourceLimits}:{}}),o=new Map,s=new Map,a=new Set,u=0,c=!1,p=i(C=>{for(let m of o.values())m.cleanup(),m.reject(C);o.clear()},"rejectPending"),R=i(()=>{for(let C of s.values())clearTimeout(C.expiry);s.clear()},"clearLateResults"),I=i(C=>{let m=s.get(C);if(m!==void 0)return s.delete(C),clearTimeout(m.expiry),m.deliver},"removeLateResult"),y=i(C=>{c||(c=!0,p(C),R(),a.clear())},"markClosed"),x=i((C,m)=>{if(c)return;let k=C==="request.ack"?"ack":"cancel";try{r.postMessage(Kt(`worker_${k}_${++u}`,C,{requestId:m}))}catch(l){we({source:"runtime.worker.transport",level:"warn",message:`Failed to send Worker ${C} lifecycle frame.`,detail:l})}},"sendRequestLifecycleFrame");return r.on("message",C=>{if(kr(C)){for(let l of a)l(C);return}if(!ft(C)&&!Ut(C)||!C.id)return;let m=o.get(C.id);if(!m){if(ft(C)){let l=I(C.id);if(l!==void 0)try{l(C.result)}catch(v){we({source:"runtime.worker.transport",level:"warn",message:"Runtime Worker late-result handler failed.",detail:v})}}else I(C.id);return}if(o.delete(C.id),m.cleanup(),ft(C)){x("request.ack",C.id),m.resolve(C.result);return}let k=new Error(C.error.message);k.code=C.error.code,C.error.data!==void 0&&(k.data=C.error.data),m.reject(k)}),r.on("error",C=>y(C)),r.on("exit",C=>y(new Error(`Runtime Worker exited with code ${C}.`))),{transport:{request(C,m,k,l){if(c)return Promise.reject(new Error("Runtime Worker transport is closed."));let v=`worker_${++u}`,h,P=!1,T=i(()=>{h!==void 0&&l?.signal?.removeEventListener("abort",h)},"cleanup"),_=new Promise((N,q)=>{let te={resolve:N,reject:q,cleanup:T};o.set(v,te),h=aR(l,()=>{if(o.get(v)===te){if(o.delete(v),T(),P&&x("request.cancel",v),l?.onLateResult!==void 0){let de=setTimeout(()=>{s.delete(v)},sR);de.unref?.(),s.set(v,{deliver:l.onLateResult,expiry:de})}q(dR(l?.signal?.reason))}})});if(l?.signal?.aborted)return _;try{r.postMessage(Kt(v,C,m,k)),P=!0}catch(N){let q=o.get(v);q!==void 0&&(o.delete(v),q.cleanup(),q.reject(N instanceof Error?N:new Error(String(N))))}return _},subscribe(C){return c?{close(){}}:(a.add(C),{close:i(()=>a.delete(C),"close")})},async close(){c||(y(new Error("Runtime Worker transport closed.")),await r.terminate())}},threadId:r.threadId,async terminate(){c||y(new Error("Runtime Worker terminated.")),await r.terminate()}}}i(rl,"createRuntimeWorkerTransport");function aR(e,n){let t=e?.signal;if(t!==void 0)return t.addEventListener("abort",n,{once:!0}),t.aborted&&n(),n}i(aR,"attachWorkerRequestAbort");function dR(e){return e instanceof Error?e:new Error("Runtime Worker request cancelled.")}i(dR,"normalizeWorkerAbortReason");function uR(){if(import.meta.url.endsWith(".ts")){let t=new URL("../../dist/runtime-worker.js",import.meta.url);return iR(nl(t))?t:new URL("./entry.ts",import.meta.url)}if(process.env.KODAX_BUNDLED==="true")return tl(el(ws(process.execPath),"runtime-worker.js"));let e=ws(nl(import.meta.url)),n=oR(e)==="chunks"?ws(e):e;return tl(el(n,"runtime-worker.js"))}i(uR,"resolveRuntimeWorkerUrl");var jn=class extends Error{constructor(t,r,o,s="runtimeAutoModeGuardrail"){super(t,o);this.preflight=r;this.name="RuntimeDaemonCapabilityUpgradeError",this.capability=s}preflight;static{i(this,"RuntimeDaemonCapabilityUpgradeError")}code="daemon_capability_upgrade_required";recoverable=!0;restartRequired=!0;capability},Tt=class extends Error{static{i(this,"RuntimeAutoModeConfigurationError")}code="auto_mode_classifier_model_required";recoverable=!0;constructor(n){super(n),this.name="RuntimeAutoModeConfigurationError"}};function qs(e){let n=Y.resolve(e??$r.homedir());return{homeDir:n,configHome:e===void 0?Y.resolve(yo):Y.join(n,".kodax")}}i(qs,"resolveRuntimeDaemonClientLocation");function fr(e,n="default"){let t=qs(e);return{...t,paths:Jn(t.configHome,n)}}i(fr,"resolveRuntimeDaemonClientPaths");function ib(e={}){let{paths:n}=fr(e.homeDir,e.profile),t=`inline_${Qe().replace(/-/g,"")}`,r=yu(n,{runtimeId:t,pid:process.pid,createdAt:new Date().toISOString(),kind:"inline"},e.enableRollback===!0),o=!1;return{profile:n.profile,ownerId:t,ownerPolicy:Mn(n),close(){o||(o=!0,hi(r))}}}i(ib,"acquireKodaXInlineOwner");function ob(e={}){return Mn(fr(e.homeDir,e.profile).paths)}i(ob,"getKodaXRuntimeOwnerPolicy");function sb(e={}){let{paths:n}=fr(e.homeDir,e.profile),t=Ve(n.lockFile);return{profile:n.profile,policy:Mn(n),ownerStatus:t!==void 0?"owned":$.existsSync(n.lockFile)?"unreadable":"unowned",owner:t??null}}i(sb,"getKodaXRuntimeOwnerState");function ab(e={}){return gi(fr(e.homeDir,e.profile).paths)}i(ab,"enableKodaXDaemonOwner");function db(e){let{paths:n}=fr(e.homeDir,e.profile);if(Ve(n.lockFile)!==void 0)throw new Error("Cannot change Runtime owner mode while an owner lock exists.");return pu(n,e.mode,e.expectedRevision)}i(db,"setKodaXRuntimeOwnerMode");var cR=["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"],lR=new Set(["code","cli","repl","acp","a2a","sdk","ide","space-desktop"]),ub=Object.freeze({actorSettlementConvergence:1,daemonOrphanExit:1,daemonShutdownVerification:1,managedRunDurability:1,sessionEventJournal:1,runtimeEventCoalescing:1});async function cb(e,n){return e.sessions.diagnostics(n)}i(cb,"captureRuntimeSessionDiagnostics");function mR(e,n,t,r){let o=t.runs.flatMap(R=>{let I=Ji(R);return I===void 0?[]:[I]}),s=n.runId===void 0?Sm(o):o.find(R=>R.runId===n.runId),a=s?.activeSubtaskCount??null,u=[],c=i((R,I)=>{u.some(y=>y.code===R)||u.push({code:R,message:I})},"addError");if(s===void 0)c("run_control_unknown",n.runId===void 0?"No Run control record is available at this Session boundary.":`Run control record is unavailable: ${n.runId}`);else if(s.phase==="unknown"){let R=s.error==="owner_liveness_unconfirmed"?"owner_liveness_unconfirmed":s.error==="owner_recovery_required"?"owner_recovery_required":s.error==="stop_outcome_unconfirmed"?"stop_outcome_unconfirmed":"run_status_unknown";c(R,R==="owner_liveness_unconfirmed"?"The prior Runtime owner could not be confirmed alive or dead.":R==="owner_recovery_required"?"The prior Runtime owner is gone; explicit Run recovery is required.":R==="stop_outcome_unconfirmed"?"A Stop was requested, but executor termination is not confirmed.":"The authoritative Run state could not be confirmed.")}(s?.stop?.state==="unknown"||s?.stop?.outcome==="unknown")&&c("stop_outcome_unconfirmed","A Stop was requested, but executor termination is not confirmed."),s?.lifecycleError!==void 0&&c(s.lifecycleError.code,s.lifecycleError.message),s?.phase==="failed"&&c("run_failed",s.error??"The Run failed without a recorded error message."),s!==void 0&&Ne(s.phase)&&s.endedAt===void 0&&c("terminal_time_unknown","The Run is terminal, but its terminal time was not recorded.");let p=s?.activeSubtaskCount===void 0?"unknown":"run_status";return{schemaVersion:1,captureStartedAt:r,capturedAt:new Date().toISOString(),sdkVersion:Qr,runtimeVersion:e.version,daemonVersion:e.mode==="daemon"?e.version:null,runtimeId:t.runtimeId,runtimeMode:e.mode,sessionId:n.sessionId,observation:{cursor:t.cursor,transcriptRevision:t.transcriptRevision},run:s===void 0?{controlRecord:"unknown",...n.runId!==void 0?{runId:n.runId}:{},state:"unknown",stage:"unknown",terminalTimeKnown:!1,activeSubtaskCount:a,activeSubtaskCountSource:p,errors:u}:{controlRecord:"present",runId:s.runId,...s.turnId!==void 0?{turnId:s.turnId}:{},state:s.phase==="queued"?"queued":s.phase==="unknown"?"unknown":Ne(s.phase)?"terminal":"active",phase:s.phase,stage:s.stage??(Ne(s.phase)?"terminal":"unknown"),...s.stageChangedAt!==void 0?{stageChangedAt:s.stageChangedAt}:{},...s.endedAt!==void 0?{terminalAt:s.endedAt}:{},terminalTimeKnown:Ne(s.phase)&&s.endedAt!==void 0,...s.terminal!==void 0?{terminal:s.terminal}:{},activeSubtaskCount:a,activeSubtaskCountSource:p,...s.stop!==void 0?{stop:s.stop}:{},...s.interruptInputs!==void 0?{interruptInputs:s.interruptInputs}:{},errors:u}}}i(mR,"createRuntimeSessionDiagnosticsRecord");var Lr=class extends Error{constructor(t){super(`Runtime continuation target is already terminal: ${t}`);this.afterRunId=t;this.name="RuntimeContinuationStaleError"}afterRunId;static{i(this,"RuntimeContinuationStaleError")}},qr=class extends Error{static{i(this,"RuntimeEventCommitIndeterminateError")}constructor(n,t){super("Runtime event batch commit is indeterminate; automatic retry is disabled",{cause:new AggregateError([n,t],"Runtime event append and rollback both failed")}),this.name="RuntimeEventCommitIndeterminateError"}includeLockCleanupFailure(n){Object.defineProperty(this,"cause",{configurable:!0,value:new AggregateError([this.cause,n],"Runtime event commit and status-lock cleanup both failed")})}},Mt=class extends Error{constructor(t){super("Runtime status lock cleanup failed after the operation completed",{cause:t});this.cleanupError=t;this.name="RuntimeStatusLockCleanupError"}cleanupError;static{i(this,"RuntimeStatusLockCleanupError")}},qi=class extends Error{constructor(t){super(`Runtime status lock timed out: ${t}`);this.lockFile=t;this.name="RuntimeStatusLockTimeoutError"}lockFile;static{i(this,"RuntimeStatusLockTimeoutError")}},ol=5*6e4,Bi=1e4,fR=1024,sl=1024*1024,Bn=1e3,Di=200,vs=1e3,pR=2*1024*1024,Ss=512,al=256*1024*1024,gR=50,_s=8*1024,zl=16*1024*1024,yR=zl/2,dl=128*1024,ul=8,RR=256,_t=512*1024,Ki=128*1024,Fr=256*1024,Vl=50,Gl=200,hR=8,jr=64*1024*1024,Xi=16,Is=4*1024,wR=256,vR=1024*1024,SR=250,bs=5*6e4,cl="kodax-transcript-snapshots-",IR=5e3,bR=3e4,kR=100,ER=3e4,ll=[5,15],PR="1970-01-01T00:00:00.000Z";function xR(e,n,t){let r=null,o=t.map((s,a)=>{let c=`entry_${Dt("sha256").update("kodax-runtime-legacy-lineage-v1\0").update(`${e}\0${n}\0${a}:`).update(JSON.stringify(s)).digest("hex").slice(0,12)}`,p={type:"message",id:c,parentId:r,logicalId:c,timestamp:s.timestamp??PR,message:structuredClone(s)};return r=c,p});return{version:2,activeEntryId:r,entries:o}}i(xR,"createDeterministicRuntimeLegacyLineage");var ml=1024,Yl=new Set(["tool_call","tool_describe"]),CR=new Set(["image","file","video"]);function AR(e,n){let t=Y.relative(eo(),e);return Y.isAbsolute(t)||t.startsWith("..")?e:Y.join(n,t)}i(AR,"rebaseAgentConfigPath");async function TR(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 DR(e);let D=e.autoStartDaemon??(e.daemonTransport===void 0&&e.daemonEndpoint===void 0);return Ql({profile:e.profile,transport:e.daemonTransport,endpoint:e.daemonEndpoint,autoStart:D,homeDir:e.homeDir,sessionsDir:e.sessionsDir,defaultProvider:e.defaultProvider,defaultModel:e.defaultModel,permissionTimeoutMs:e.permissionTimeoutMs,daemonStartupTimeoutMs:e.daemonStartupTimeoutMs,daemonConnectTimeoutMs:e.daemonConnectTimeoutMs,...e.daemonOrphanExitMs!==void 0?{daemonOrphanExitMs:e.daemonOrphanExitMs}:{},daemonToken:e.daemonToken,clientInfo:e.clientInfo,capabilities:e.capabilities,requirements:{...e.requirements,sessionEventJournal:1,...D?{actorSettlementConvergence:1,managedRunDurability:1,runtimeAutoModeGuardrail:4,runtimeEventCoalescing:1,...e.daemonOrphanExitMs!==void 0?{daemonOrphanExit:1}:{}}:{}}})}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 MR(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:_t},transcriptSearch:{version:1,defaultScope:"compacted",citedEntries:!0},conversationHistory:{version:1,immutablePaging:!0,revisionedBoundaries:!0,ambiguityReporting:!0},learningCenter:{version:1},skillLearningLoop:{version:1,activation:"project_scoped_canary",immutableDecisions:!0,recordGatedDiscovery:!0,exactUseAttribution:!0,rollback:!0},actorControlPlane:{version:1,methodNamespace:"agents"},sandboxRuntime:Zr(),managedRunDurability:{version:1,initialInputBeforeExecution:!0,completedTurnBeforeEvent:!0,deliveredInputBeforeEvent:!0,persistenceFailure:"fail_closed"},actorSettlementConvergence:{version:1,rootFence:"fail_closed",sameOwnerRepair:"automatic",unknownAfterTurnQueue:!0,terminal:"failed"},sessionEventJournal:{version:1,sequenceScope:"session",cursor:"session_epoch_sequence",scopedAccessRequired:!0},runtimeEventCoalescing:{version:1},runtimeAutoModeGuardrail:{version:4,owner:"session-runtime",escalationCreatesPermission:!0,fallbackPersistsEngine:!1,defaultClassifierTimeoutMs:Gr,defaultSpeculativeWindowMs:500,boundedClassifierInput:!0,diagnosticsVersion:1,permissionGrantSuggestions:!0,concretePermissionMatchers:!0,clientScopeExpansion:!1},...e.externalAgents!==void 0?{externalAgentAdmin:{version:1}}:{}};Bs(n,e.requirements);let t={runtimeId:e.daemonHostRuntimeId??`rt_${Qe().replace(/-/g,"").slice(0,12)}`,mode:"embedded",profile:e.profile??"default",startedAt:new Date().toISOString(),version:"0.7.85",isolation:"inline"},r=e.homeDir?Y.join(Y.resolve(e.homeDir),".kodax"):yo,o=wh(e),s=dd(o?{sessionsDir:o,configHome:r}:{configHome:r}),a=Wh(t.profile,s,e.sharedDaemonHost===!0),u=HR(),c=pw(e);Rm(c);let p=await Kd({onError(D){we({source:"runtime.owner",level:"error",message:`Runtime owner liveness endpoint failed for ${t.runtimeId}.`,detail:$e(D)})}}),R={ownerId:`runtime_${Qe().replace(/-/g,"")}`,runtimeId:t.runtimeId,pid:process.pid,startedAt:t.startedAt,livenessId:p.id,livenessPort:p.port},I=dh(e,R),y;try{y=e.externalAgents?await Ta({factories:e.externalAgents.factories,policy:e.externalAgents.policy,credentialBroker:e.externalAgents.credentialBroker,artifactPolicy:e.externalAgents.artifactPolicy,store:Rd(Y.join(I.runtimeDir,"agents"))}):void 0}catch(D){throw await p.close(),D}let x=rh(I),f=jR(I,x),C=Oh(x,e.permissionTimeoutMs??ol,I),m=Dh(x,e.permissionTimeoutMs??ol),k=WR(),l=BR(),v=new Map,h=new Map,P=new Map,T=new Map,_=i((D,U)=>{let le=h.get(D)??U;return le.state!=="recovering"?Promise.resolve(le):new Promise(G=>{let he=P.get(D)??new Set;he.add(G),P.set(D,he)})},"waitForActorHealthResolution"),N=i(D=>{let U,le=new Promise(he=>{U=he}),G=T.get(D)??new Set;return G.add(U),T.set(D,G),{promise:le,close(){U!==void 0&&(G.delete(U),G.size===0&&T.delete(D),U=void 0)}}},"waitForActorHealthChange"),q=i(()=>{},"fenceRunAfterActorSettlementUnknown"),te=i((D,U)=>{h.set(D,U);let le=T.get(D);T.delete(D);for(let G of le??[])G(U);for(let G of v.values()){if(G.sessionId!==D||!G.ownedByRuntime||Ne(G.phase))continue;if(U.state==="unknown"&&q(G,U),G.stop?.state==="unknown"){if(delete G.actorHealthBaseState,U.state==="unknown"){G.lifecycleError={code:U.code??"actor_settlement_not_persisted",message:U.message??"Actor executor settlement persistence is not confirmed.",retryable:!1},G.stageChangedAt=new Date().toISOString();let M=un(G),O=nt(x,I,G,M);O===M?x.emit("run.updated",M,{sessionId:G.sessionId,runId:G.runId,...G.turnId!==void 0?{turnId:G.turnId}:{}}):O!==void 0&&At(G,O)}continue}if(U.state==="healthy"){if(G.actorDurabilityFailure!==void 0){delete G.actorHealthBaseState;continue}let M=G.actorHealthBaseState;if(M===void 0)continue;G.phase=M.phase,G.stage=M.stage,G.error=M.error,G.lifecycleError=M.lifecycleError,delete G.actorHealthBaseState}else G.actorHealthBaseState===void 0&&(G.actorHealthBaseState={phase:G.phase,stage:G.stage,error:G.error,lifecycleError:G.lifecycleError}),G.phase!=="queued"&&(G.phase=U.state),G.stage=U.state,G.error=U.message,G.lifecycleError={code:U.code??"actor_settlement_retrying",message:U.message??"Actor executor settlement persistence is not confirmed.",retryable:U.state==="recovering"};G.stageChangedAt=new Date().toISOString();let he=un(G),S=nt(x,I,G,he);S===he?x.emit("run.updated",he,{sessionId:G.sessionId,runId:G.runId,...G.turnId!==void 0?{turnId:G.turnId}:{}}):S!==void 0&&At(G,S)}if(U.state!=="recovering"){let G=P.get(D);P.delete(D);for(let he of G??[])he(U)}},"onActorHealthChanged"),de=VR(s,t,p,y,e.externalAgents?.defaultContext,te),Ie=new Map,Te=[...Fw(I.loadRunStatuses())].sort((D,U)=>et(D.status,U.status)),Pe=[];for(let D of Te){let U=D.status,le=U.sessionOrder??(Ie.get(U.sessionId)??0)+1;Ie.set(U.sessionId,Math.max(Ie.get(U.sessionId)??0,le));let G={...U,acceptedAt:U.acceptedAt??U.startedAt,sessionOrder:le};if(Ne(U.phase)&&!U.interruptInputs?.some(he=>he.state==="queued")){v.set(U.runId,Nr(G,!1,D.owner));continue}if(!Ne(U.phase)){let he=sm(G,x,I);if(he!==void 0){v.set(he.runId,Nr(he,!1,D.owner));continue}G=Js(G,I.replay({runId:U.runId}))}Pe.push({persisted:D,normalizedStatus:G})}let be=Pe.flatMap(({persisted:D})=>!Ne(D.status.phase)&&D.owner!==void 0?[D.owner]:[]),ve=await Xd(be),Fe=0;for(let{persisted:D,normalizedStatus:U}of Pe){let le=D.status,G=Ne(le.phase)?"dead":D.owner===void 0?"unknown":ve[Fe++]??"unknown";if(!Ne(le.phase)&&G!=="dead"){v.set(le.runId,Nr(U,!1,D.owner));continue}let he=om(U,x,I);v.set(he.runId,Nr(he,!1,D.owner))}let Ce=!1,je,Ge=!1,cn=!1,an=y===void 0,In=!1,rn=!1,nn=i(()=>{if(Ce)throw new Error("KodaX runtime is closed")},"ensureOpen"),d=qR({bus:x,defaultModel:e.defaultModel,defaultProvider:e.defaultProvider,defaultConfigHome:r,ensureOpen:nn,isClosed:i(()=>Ce,"isClosed"),artifacts:k,permissions:C,userInputs:m,enableSharedInteractions:e.sharedDaemonHost===!0,persistence:I,runOwner:R,runs:v,sessionManager:s,sessionAdmission:a,sessionOperations:u,agentPlane:y,defaultAgentContext:e.externalAgents?.defaultContext,actorRegistry:de,setActorSettlementFenceHandler(D){q=D},waitForActorHealthResolution:_,waitForActorHealthChange:N,settingsOwner:f}),b,B,E=$R(t,r,s,x,I,nn,D=>Hw(D,v,I),f,D=>d.list({sessionId:D}),D=>d.inspect({sessionId:D}),D=>d.inspectOne(D),D=>C.service.listPending({sessionId:D}),D=>d.getAutoModeStats(D),u,(D,U,le)=>de.mutateSessionFile(D,U,le),D=>{d.releaseSession(D),C.releaseSession(D)},a,(D,U)=>{b=D,B=U}),A=Y.join(e.homeDir?Y.resolve(e.homeDir):$r.homedir(),"kodax_a2a_server_workspace",encodeURIComponent(t.profile)),H=Hd({configHome:r,managedWorkspaceRoot:A,defaultProvider:e.defaultProvider,defaultModel:e.defaultModel,runs:d,sessions:E,createSkillScriptRunner:i(D=>ld({...D,snapshotRoot:Y.join(A,"bindings")}),"createSkillScriptRunner")}),X=Jd({rootDir:Y.join(r,"learned"),userSkillsRoot:Y.join(r,"skills"),defaultClientIdentity:e.clientInfo?.instanceId??`inline_${t.runtimeId}`,proposalStores:[AR(ga(process.cwd()),r)]}),ee=i(()=>{if(je)return je;Ce=!0;let D=(async()=>{Ge||(d.closeAll("runtime closed"),C.rejectAll("runtime closed"),C.releaseAllSessionGrants(),m.rejectAll("runtime closed"),Ge=!0),b?.(),await u.close(),await B?.(),b=void 0,B=void 0,cn||(await de.close("runtime closed"),cn=!0),an||(await y.close(),an=!0),In||(await p.close(),In=!0),rn||(x.close(),rn=!0)})();return je=D,D.then(()=>{je===D&&(je=void 0)},()=>{je===D&&(je=void 0)}),D},"closeRuntime");return{identity:t,capabilities:n,sessions:E,runs:d,events:x.scopedService,permissions:C.service,userInputs:m.service,credentials:mv(),hostTools:fv(),operations:{async get(){throw new Error("Embedded Runtime does not persist daemon operation receipts.")}},workflows:l,learning:X,config:KR(nn,c),catalog:XR(nn,c),mcp:UR(nn,c),artifacts:k.service,status:QR({identity:t,permissions:C,userInputs:m,listRuns:i(()=>d.list(),"listRuns"),sessionManager:s,sessionAdmission:a,workflows:l,actors:de}),diagnostics:ZR(x.service),admin:YR(y),agents:GR(y,H,de,a,u,nn),close:ee}}i(TR,"createKodaXRuntime");async function DR(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?nm(e.daemonEndpoint):void 0,r=qs(e.homeDir),o=await Nc({homeDir:r.homeDir,configHome:r.configHome,profile:e.profile,endpoint:t,connectTimeoutMs:e.daemonConnectTimeoutMs,startupTimeoutMs:e.daemonStartupTimeoutMs,createRuntime:i(s=>TR({mode:"embedded",homeDir:e.homeDir,profile:e.profile,sessionsDir:e.sessionsDir,defaultProvider:e.defaultProvider,defaultModel:e.defaultModel,permissionTimeoutMs:e.permissionTimeoutMs,sharedDaemonHost:!0,daemonHostRuntimeId:s,clientInfo:e.clientInfo,capabilities:e.capabilities,requirements:e.requirements,externalAgents:n}),"createRuntime")});if(!o.ownsHost)throw await o.close(),new Error("External agent factories cannot be installed into an already-running daemon profile; configure its owner or use a unique profile.");try{let s=await Ql({profile:e.profile,transport:o.transport,daemonToken:e.daemonToken??Er(o.paths),clientInfo:e.clientInfo,capabilities:e.capabilities,requirements:{...e.requirements,externalAgents:!0,externalAgentAdmin:1}}),a=!1,u=!1,c,p=i(()=>{if(c)return c;let R=(async()=>{u||(o.ownsHost?await o.shutdown():await o.close(),u=!0),a||(await s.close(),a=!0)})();return c=R,R.then(()=>{c===R&&(c=void 0)},()=>{c===R&&(c=void 0)}),R},"closeHostedRuntime");return{...s,identity:{...s.identity,isolation:"inline"},close:p}}catch(s){let u=(await Promise.allSettled([o.ownsHost?o.shutdown():o.close()])).filter(c=>c.status==="rejected").map(c=>c.reason);throw u.length>0?new AggregateError([s,...u],"Hosted daemon initialization failed and cleanup was incomplete."):s}}i(DR,"createInProcessExternalAgentDaemon");async function MR(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=rl({homeDir:e.homeDir,profile:e.profile,sessionsDir:e.sessionsDir,defaultProvider:e.defaultProvider,defaultModel:e.defaultModel,permissionTimeoutMs:e.permissionTimeoutMs,configuredA2A:e.worker?.configuredA2A},e.worker);try{let r=mr(await t.transport.request("initialize",{profile:e.profile??"default",...e.clientInfo!==void 0?{clientInfo:e.clientInfo}:{},...e.capabilities!==void 0?{capabilities:e.capabilities}:{}})),o=hm(r.identity);Bs(r.capabilities,{...e.requirements,hardDispose:!0});let s=mi({identity:{...o,mode:"embedded",isolation:"worker",workerThreadId:t.threadId},transport:t.transport,capabilities:mr(r.capabilities)}),a=!1,u;return{...s,close:i(()=>{if(a)return Promise.resolve();if(u)return u;let p=(async()=>{let R;try{await _R(t.transport.request("runtime.shutdown"),n)}catch(I){R=I}try{await t.terminate(),a=!0}catch(I){throw R!==void 0?new AggregateError([R,I],"Runtime Worker shutdown and forced termination both failed."):I}if(R!==void 0)throw R})();return u=p,p.finally(()=>{u===p&&(u=void 0)}).catch(()=>{}),p},"closeWorkerRuntime")}}catch(r){throw await t.terminate(),r}}i(MR,"createWorkerHostedKodaXRuntime");function Bs(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?.skillLearningLoop===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?.conversationHistory===void 0&&n?.connectionLifecycle===void 0&&n?.typedRuntimeEvents===void 0&&n?.daemonSafeRunInput===void 0&&n?.sharedSessionSettings===void 0&&n?.durableRecoveryQueries===void 0&&n?.managedRunDurability===void 0&&n?.actorSettlementConvergence===void 0&&n?.sessionEventJournal===void 0&&n?.daemonManagement===void 0&&n?.daemonOrphanExit===void 0&&n?.daemonShutdownVerification===void 0&&n?.runtimeEventCoalescing===void 0&&n?.integrationConfigResilience===void 0&&n?.actorControlPlane===void 0&&n?.runtimeAutoModeGuardrail===void 0)return;let t=mr(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&&fl(t,"operationDeduplication",n.operationDeduplication);let r=[["externalAgentAdmin",n.externalAgentAdmin],["a2aConfigReconciler",n.a2aConfigReconciler],["sessionObservation",n.sessionObservation],["afterTurnInput",n.afterTurnInput],["learningCenter",n.learningCenter],["skillLearningLoop",n.skillLearningLoop],["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],["conversationHistory",n.conversationHistory],["connectionLifecycle",n.connectionLifecycle],["typedRuntimeEvents",n.typedRuntimeEvents],["daemonSafeRunInput",n.daemonSafeRunInput],["sharedSessionSettings",n.sharedSessionSettings],["durableRecoveryQueries",n.durableRecoveryQueries],["managedRunDurability",n.managedRunDurability],["actorSettlementConvergence",n.actorSettlementConvergence],["sessionEventJournal",n.sessionEventJournal],["daemonManagement",n.daemonManagement],["daemonOrphanExit",n.daemonOrphanExit],["daemonShutdownVerification",n.daemonShutdownVerification],["runtimeEventCoalescing",n.runtimeEventCoalescing],["integrationConfigResilience",n.integrationConfigResilience],["actorControlPlane",n.actorControlPlane],["runtimeAutoModeGuardrail",n.runtimeAutoModeGuardrail]];for(let[o,s]of r)s!==void 0&&fl(t,o,s)}i(Bs,"assertRuntimeCapabilities");function fl(e,n,t){let r=e[n];if(!oe(r)||!Number.isSafeInteger(r.version)||Number(r.version)<t)throw new Error(`Runtime does not support the required ${n} capability.`)}i(fl,"assertVersionedRuntimeCapability");async function _R(e,n){let t;try{await Promise.race([e,new Promise((r,o)=>{t=setTimeout(()=>o(new Error(`Runtime Worker shutdown timed out after ${n}ms.`)),n),t.unref?.()})])}finally{t!==void 0&&clearTimeout(t)}}i(_R,"settleWithin");async function Ql(e={}){return em(e,!0)}i(Ql,"connectKodaXRuntime");function Zl(e,n,t){let r=e[n];return oe(r)&&Number.isSafeInteger(r.version)&&Number(r.version)>=t}i(Zl,"hasVersionedRuntimeCapability");async function OR(e){if(!Zl(e.capabilities,"daemonManagement",1))throw new jn("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.",void 0,void 0,e.requiredCapability);let n=mi({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 jn(`The running daemon needs ${e.requiredCapability} v${e.requiredVersion} but cannot be replaced safely yet: ${t.preflight.blockers.join(", ")}. Finish or cancel that work and retry.`,t.preflight,void 0,e.requiredCapability);await n.daemon.stopForInline({expectedRuntimeId:t.runtimeId,expectedRevision:t.revision,expectedOwnerPolicyRevision:t.ownerPolicy.revision})}catch(o){throw o instanceof jn?o:new jn("The running daemon changed while preparing its safe capability upgrade. Retry after active and queued work has settled.",t?.preflight,{cause:o},e.requiredCapability)}finally{let o=!1;await n.close().then(()=>{o=!0}).catch(s=>{we({source:"runtime.daemon.upgrade",level:"warn",message:"Failed to close the legacy daemon client after upgrade attempt.",detail:$e(s)})}),o||await e.lease.close().catch(s=>{we({source:"runtime.daemon.upgrade",level:"warn",message:"Failed to close the legacy daemon process lease after client cleanup failed.",detail:$e(s)})})}let r=Date.now()+e.startupTimeoutMs;try{for(;Ve(e.lease.paths.lockFile)!==void 0;){if(Date.now()>=r)throw new jn("The legacy daemon accepted the upgrade stop but did not release its owner fence before timeout. Retry after the daemon exits.",void 0,void 0,e.requiredCapability);await new Promise(o=>setTimeout(o,50))}}catch(o){try{gi(e.lease.paths)}catch(s){throw new jn("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([o,s])},e.requiredCapability)}throw o}try{gi(e.lease.paths)}catch(o){throw new jn("The legacy daemon stopped, but daemon ownership could not be re-enabled automatically. Call `enableKodaXDaemonOwner(...)` from the SDK and retry.",void 0,{cause:o},e.requiredCapability)}}i(OR,"replaceRuntimeDaemonForCapabilityUpgrade");async function em(e,n){ks("daemonStartupTimeoutMs",e.daemonStartupTimeoutMs),ks("daemonConnectTimeoutMs",e.daemonConnectTimeoutMs),ks("daemonOrphanExitMs",e.daemonOrphanExitMs);let t=e.endpoint!==void 0?nm(e.endpoint):void 0,r=qs(e.homeDir),o=e.transport===void 0&&e.autoStart===!0?await Yc({homeDir:r.homeDir,configHome:r.configHome,profile:e.profile,endpoint:t,defaultProvider:e.defaultProvider,defaultModel:e.defaultModel,sessionsDir:e.sessionsDir,permissionTimeoutMs:e.permissionTimeoutMs,orphanExitMs:e.daemonOrphanExitMs,startupTimeoutMs:e.daemonStartupTimeoutMs,connectTimeoutMs:e.daemonConnectTimeoutMs}):void 0,s=t??o?.endpoint??(e.transport===void 0?er(e.profile??"default",zt(r.homeDir,r.configHome)):void 0),a=e.transport??o?.transport??(s!==void 0?await zn(s,{connectTimeoutMs:e.daemonConnectTimeoutMs}):void 0);if(!a)throw new Error("connectKodaXRuntime requires a daemon transport, endpoint, or autoStart: true.");let u=FR(e),c,p={},R,I,y=!1;try{let f={name:e.clientInfo?.name??"kodax-sdk",instanceId:e.clientInfo?.instanceId??`sdk_${Qe().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}:{}},C=mr(await a.request("initialize",{profile:e.profile??"default",connectionPurpose:"client",autoStart:e.autoStart===!0,...u!==void 0?{token:u}:{},clientInfo:f,capabilities:{...e.capabilities,operationDeduplication:!0},...s!==void 0?{endpoint:s.path}:{}}));c=hm(C.identity),p=C.capabilities===void 0?{}:mr(C.capabilities),R=typeof C.journalEpoch=="string"?C.journalEpoch:void 0,I=NR(C.grantedScopes);let m={...e.requirements,sessionEventJournal:1,...e.autoStart===!0?{actorSettlementConvergence:1,managedRunDurability:1,runtimeAutoModeGuardrail:4,runtimeEventCoalescing:1,...e.daemonOrphanExitMs!==void 0?{daemonOrphanExit:1}:{}}:{}},k=[{name:"actorSettlementConvergence",version:m?.actorSettlementConvergence},{name:"managedRunDurability",version:m?.managedRunDurability},{name:"sessionEventJournal",version:m?.sessionEventJournal},{name:"runtimeAutoModeGuardrail",version:m?.runtimeAutoModeGuardrail},{name:"runtimeEventCoalescing",version:m?.runtimeEventCoalescing},{name:"daemonOrphanExit",version:m?.daemonOrphanExit},{name:"daemonShutdownVerification",version:m?.daemonShutdownVerification}].find(v=>v.version!==void 0&&!Zl(p,v.name,v.version));if(k!==void 0){if(!n||e.autoStart!==!0||o===void 0)throw new jn(`Runtime daemon does not support ${k.name} v${k.version}. Stop all daemon work and restart it with a compatible KodaX installation.`,void 0,void 0,k.name);if(k.name==="daemonShutdownVerification")throw new jn("The running Windows daemon predates authoritative process containment. Stop it explicitly before requiring daemonShutdownVerification v1; it cannot be migrated safely in place.",void 0,void 0,k.name);try{await OR({identity:c,capabilities:p,transport:a,lease:o,...R!==void 0?{journalEpoch:R}:{},...I!==void 0?{grantedScopes:I}:{},startupTimeoutMs:e.daemonStartupTimeoutMs??6e4,requiredCapability:k.name,requiredVersion:k.version})}finally{y=!0}return em(e,!1)}Bs(p,m);let l=e.profile??"default";if(c.profile!==l)throw new Error(`Runtime daemon profile mismatch: expected ${l}, got ${c.profile}`)}catch(f){throw y||(o!==void 0?await o.close():await a.close?.()),f}let x=mi({identity:{...c,mode:"daemon",isolation:"process"},transport:a,capabilities:p,...R!==void 0?{journalEpoch:R}:{},...I!==void 0?{grantedScopes:I}:{}});return o?{...x,async close(){await x.close()}}:x}i(em,"connectKodaXRuntimeInternal");function ks(e,n){if(!(n===void 0||Number.isFinite(n)&&n>0))throw new Error(`${e} must be a positive finite number.`)}i(ks,"assertPositiveRuntimeTimeout");function NR(e){if(!Array.isArray(e))return;let n=e.filter(t=>typeof t=="string"&&LR(t));return n.length===e.length?n:void 0}i(NR,"parseRuntimeGrantedScopes");function LR(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"}i(LR,"isRuntimeGrantedScope");function FR(e){if(e.daemonToken!==void 0)return e.daemonToken;if(!(e.transport!==void 0&&e.autoStart!==!0))return Er(fr(e.homeDir,e.profile).paths)}i(FR,"resolveConnectDaemonToken");function nm(e){return typeof e!="string"?e:{kind:process.platform==="win32"||e.startsWith("\\\\.\\pipe\\")?"pipe":"unix",path:e}}i(nm,"normalizeRuntimeDaemonEndpoint");function jR(e,n){let t=new Map,r=new Map,o=new Set,s=i((u,c)=>{let R=(r.get(u)??Promise.resolve()).then(c),I=R.then(()=>{},()=>{});return r.set(u,I),I.then(()=>{r.get(u)===I&&r.delete(u)}),R},"enqueue"),a=i((u,c,p)=>{t.set(u,c);for(let R of o)R(u,c,p);n.emit("session.settings.updated",{sessionId:u,revision:c.revision,settings:c.value,patch:p},{sessionId:u,runId:u})},"publish");return{async read(u){await(r.get(u)??Promise.resolve());let c=e.loadSessionSettingsVersioned(u);return t.set(u,c),c},peek(u){return t.get(u)},update(u,c,p,R){return s(u,()=>{let I=e.loadSessionSettingsVersioned(u);if(p!==void 0&&I.revision!==p)throw Zn(`Session settings revision ${p} is stale; current revision is ${I.revision}`,I.revision);let y=ow(I.value,c);R(y);let x={revision:I.revision+1,value:y};return e.saveSessionSettingsVersioned(u,x),a(u,x,c),x})},async persistAutoModeEngine(u,c){let p=t.get(u)??e.loadSessionSettingsVersioned(u);t.set(u,{revision:p.revision,value:{...p.value,autoModeEngine:c}}),await s(u,()=>{let R=e.loadSessionSettingsVersioned(u);if(R.value.autoModeEngine===c){t.set(u,R);return}let I={revision:R.revision+1,value:{...R.value,autoModeEngine:c}};e.saveSessionSettingsVersioned(u,I),a(u,I,{autoModeEngine:c})})},subscribe(u){return o.add(u),{close:i(()=>{o.delete(u)},"close")}},release(u){t.delete(u),r.delete(u)}}}i(jR,"createRuntimeSessionSettingsOwner");function HR(){let e=new Map,n=!1;return{run(t,r){if(n)return Promise.reject(new Error("KodaX runtime is closed"));let s=(e.get(t)??Promise.resolve()).then(r),a=s.then(()=>{},()=>{});return e.set(t,a),a.then(()=>{e.get(t)===a&&e.delete(t)}),s},async close(){n=!0,await Promise.all([...e.values()])}}}i(HR,"createRuntimeSessionOperationGate");function $R(e,n,t,r,o,s,a,u,c,p,R,I,y,x,f,C,m,k){let l=new Set,v=i((g,F,j)=>({id:g,title:F.title,...F.gitRoot?{gitRoot:F.gitRoot}:{},...F.runtimeInfo?.workspaceRoot?{workspaceRoot:F.runtimeInfo.workspaceRoot}:{},...F.runtimeInfo?.surface?{surface:F.runtimeInfo.surface}:{},...F.runtimeInfo?.profileId?{profileId:F.runtimeInfo.profileId}:{},...j?{createdAt:j}:{}}),"toRuntimeSession"),h=i(g=>({revision:g.revision,sourceRevision:g.sourceRevision,status:g.status,issues:g.issues,entries:g.entries,hasMore:g.hasMore,...g.nextEnd!==void 0?{nextCursor:zi({kind:"conversation_cache_page",view:"conversation",revision:g.revision,end:g.nextEnd})}:{}}),"toRuntimeConversationPage"),P=new Map,T=new Map,_=new Map,N=new Map,q=new Map,te=new Map,de=0,Ie=new Map,Te=new Set,Pe=new Set,be=0,ve,Fe=0,Ce=!1,je=!1,Ge=new Set,cn=new Map,an,In=i(()=>{an!==void 0&&(clearInterval(an),an=void 0)},"clearTranscriptSnapshotLease"),rn=i(()=>{if(ve!==void 0)try{le(),U();let g=new Date;$.utimesSync(ve,g,g)}catch(g){process.emitWarning(`Unable to refresh transcript snapshot lease: ${$e(g).message}`,{code:"KODAX_TRANSCRIPT_SNAPSHOT_LEASE_FAILED"})}},"refreshTranscriptSnapshotLease"),nn=i(()=>{let g=$r.tmpdir(),F=Date.now()-bs;try{for(let j of $.readdirSync(g,{withFileTypes:!0})){if(!j.isDirectory()||!j.name.startsWith(cl))continue;let J=Y.join(g,j.name);$.statSync(J).mtimeMs>F||$.rmSync(J,{recursive:!0,force:!0})}}catch(j){process.emitWarning(`Unable to prune expired transcript snapshots: ${$e(j).message}`,{code:"KODAX_TRANSCRIPT_SNAPSHOT_CLEANUP_FAILED"})}},"pruneStaleTranscriptSnapshotDirs"),d=i(g=>{let F=Ie.get(g);F!==void 0&&(Ie.delete(g),de-=F)},"releaseTranscriptSnapshotBytes"),b=i(g=>(Pe.add(g),g.then(()=>Pe.delete(g),()=>Pe.delete(g)),g),"trackTranscriptSnapshotOperation"),B=i(()=>{if(Ce)throw new mn("read_cancelled","Runtime history read cancelled because the Runtime is closing");if(be>=Xi)throw uv();be+=1;let g=!1;return()=>{g||(g=!0,be-=1)}},"acquireTranscriptSnapshotIo"),E=i(()=>{if(Ce)throw new mn("read_cancelled","Runtime history read cancelled because the Runtime is closing");let g=ve===void 0;if(ve!==void 0)try{g=$.statSync(ve).isDirectory()}catch(F){(!oe(F)||F.code!=="ENOENT"&&F.code!=="ENOTDIR")&&process.emitWarning(`Unable to inspect transcript snapshot directory: ${$e(F).message}`,{code:"KODAX_TRANSCRIPT_SNAPSHOT_DIRECTORY_FAILED"}),g=!1}if(!g){In(),P.clear(),T.clear();for(let F of[...Ie.keys()])if(!Te.has(F)){if((cn.get(F)??0)>0){Ge.add(F);continue}d(F),Ge.delete(F)}ve=void 0}return ve===void 0&&(nn(),ve=$.mkdtempSync(Y.join($r.tmpdir(),cl)),Fe+=1,an=setInterval(rn,Math.floor(bs/2)),an.unref?.()),ve},"ensureTranscriptSnapshotDir"),A=i((g,F,j)=>`${j}\0${g}\0${F}`,"transcriptSnapshotKey"),H=i((g,F,j)=>`${j}\0${g}\0${F}`,"transcriptSourceKey"),X=i(g=>{if((cn.get(g)??0)>0){Ge.add(g);return}try{$.rmSync(g,{force:!0}),Ge.delete(g),d(g)}catch(F){Ge.add(g),process.emitWarning(`Unable to remove transcript snapshot: ${$e(F).message}`,{code:"KODAX_TRANSCRIPT_SNAPSHOT_CLEANUP_FAILED"})}},"removeTranscriptSnapshotFile"),ee=i((g,F)=>{if(Ce)throw new mn("read_cancelled","Runtime history read cancelled because the Runtime is closing");let j=Ie.get(g)??0;if(j+F>jr)throw ji();for(;de+F>jr;){let J=P.keys().next().value;if(J===void 0)throw ji();D(J)}Ie.set(g,j+F),de+=F},"reserveTranscriptSnapshotBytes"),ge=i(g=>{for(;Ie.size>=Xi;){let F=P.keys().next().value;if(F===void 0)throw ji();D(F)}Ie.set(g,0);try{ee(g,Is)}catch(F){throw d(g),F}},"reserveTranscriptSnapshotFile"),D=i(g=>{let F=P.get(g);if(F===void 0)return;P.delete(g);let j=H(F.sessionId,F.sourceRevision,F.view);T.get(j)===F.revision&&T.delete(j),X(F.filePath)},"removeTranscriptSnapshot"),U=i(()=>{let g=Date.now();for(let[F,j]of P)j.expiresAt<=g&&D(F)},"pruneExpiredTranscriptSnapshots"),le=i(()=>{for(let g of Ge)X(g)},"retryDeferredTranscriptSnapshotCleanup"),G=i(g=>{cn.set(g,(cn.get(g)??0)+1);let F=!1;return()=>{if(F)return;F=!0;let j=(cn.get(g)??1)-1;if(j>0){cn.set(g,j);return}cn.delete(g),Ge.has(g)&&X(g)}},"acquireTranscriptSnapshotReader"),he=i(async(g,F,j)=>{let J=G(g.filePath),V;try{V=B()}catch(Ee){throw J(),Ee}let ie=b(Promise.resolve().then(j)),ye=i(()=>{J(),V?.()},"releaseResources");ie.then(ye,ye);try{return await Fn(()=>ie,F)}catch(Ee){if(dv(Ee)){let De=[...P.entries()].find(([,He])=>He.filePath===g.filePath);De!==void 0&&D(De[0])}throw Ee}},"readTranscriptSnapshot"),S=i(async(g,F,j)=>{if(F.conversation===void 0)throw xe("Conversation snapshot metadata is unavailable");let J;try{J=await t.storage.readConversationPageBoundary(g,Oe(j))}catch(V){throw V instanceof mn&&V.code==="data_changed"?xe(V.message):V}if(J===null)throw xe("Session moved or was removed; request a fresh boundary");if(m.assertCachedIdentity(g,J.admission),J.boundaryRevision!==F.conversation.boundaryRevision)throw D(A(g,F.revision,"conversation")),xe("Conversation history changed; request a fresh boundary")},"assertConversationSnapshotCurrent"),M=i(async(g,F)=>{Oe(F);let j=_.get(g);if(j===void 0){let J=new AbortController,V=b(m.captureRequired(g,{signal:J.signal}));j={controller:J,promise:V,waiters:0,settled:!1},_.set(g,j);let ie=j,ye=i(()=>{ie.settled=!0,_.get(g)===ie&&_.delete(g)},"settle");V.then(ye,ye)}j.waiters+=1;try{return await Fn(()=>j.promise,F)}finally{j.waiters-=1,j.waiters===0&&!j.settled&&(_.get(g)===j&&_.delete(g),j.controller.abort())}},"readSessionCaptureOnce"),O=i(async(g,F)=>{for(let j=0;j<=ll.length;j+=1)try{return await M(g,F)}catch(J){if(!(J instanceof mn)||J.code!=="data_changed")throw J;let V=ll[j];if(V===void 0)throw xe(J.message);await Fn(()=>new Promise(ie=>setTimeout(ie,V)),F)}throw new Error("unreachable session capture retry state")},"readSessionCapture"),K=i(async(g,F,j,J,V,ie="",ye)=>{if(Ce)throw new mn("read_cancelled","Runtime history read cancelled because the Runtime is closing");U();let Ee=ye===void 0?0:Buffer.byteLength(JSON.stringify(ye),"utf8"),De=E(),He=Fe,Me=Y.join(De,`${Qe()}.entries`),Ue=B(),Se=Is+Ee;try{for(let Je=0;Je<F.length;Je+=1)if(Je>0&&Je%256===0&&await or(J),Oe(J),Se+=Buffer.byteLength(JSON.stringify(F[Je]),"utf8"),Se>jr)throw ji()}catch(Je){throw Ue(),Je}try{ge(Me);let Je=Se-Is;Je>0&&ee(Me,Je)}catch(Je){throw d(Me),Ue(),Je}Te.add(Me);let ln=b((async()=>{let Je=[],An=Dt("sha256");An.update(V==="transcript"?"kodax-transcript-entries-v1\0":"kodax-conversation-history-v1\0"),ie.length>0&&(An.update(`${Buffer.byteLength(ie,"utf8")}:`),An.update(ie));let Gs=await $.promises.open(Me,"wx"),Ys=0,Nt=[],pr=0,Qs=i(async()=>{if(pr===0)return;let dt=Nt.length===1?Nt[0]:Buffer.concat(Nt,pr);Nt=[],pr=0,await iw(Gs,dt),Oe(J)},"flushPendingWrites");try{for(let dt=0;dt<F.length;dt+=1){dt>0&&dt%256===0&&await or(J),Oe(J);let Zs=F[dt],Un=Buffer.from(JSON.stringify(Zs),"utf8");An.update(`${Un.length}:`),An.update(Un);let ea=[];for(let Jr=0;Jr<Un.length;Jr+=Fr)ea.push(Dt("sha256").update(Un.subarray(Jr,Math.min(Un.length,Jr+Fr))).digest("hex"));Je.push({offset:Ys,byteLength:Un.length,chunkDigests:ea,...ew(Zs)}),Ys+=Un.length,Nt.push(Un),pr+=Un.length,(Nt.length>=wR||pr>=vR)&&await Qs()}await Qs()}finally{await Gs.close()}Oe(J);let km=V==="conversation"&&ye!==void 0?wo({sourceRevision:ye.sourceRevision,status:ye.status,issues:ye.issues,entries:F}):`sha256:${An.digest("hex")}`;return{entries:Je,revision:km}})());ln.then(()=>{Te.delete(Me),Ue()},()=>{Te.delete(Me),Ue()});let on;try{on=await Fn(()=>ln,J),Oe(J)}catch(Je){throw ln.then(()=>X(Me),An=>{An!==Je&&!Vi(Je)&&!Vi(An)&&process.emitWarning(`Transcript snapshot materialization failed after its caller stopped waiting: ${$e(An).message}`,{code:"KODAX_TRANSCRIPT_SNAPSHOT_BACKGROUND_FAILED"}),X(Me)}),cv(Je,Ce)}let{entries:Ye,revision:Hn}=on;if(Ce)throw X(Me),new mn("read_cancelled","Runtime history read cancelled because the Runtime is closing");if(He!==Fe||!$.existsSync(Me))throw X(Me),xe("Transcript snapshot directory changed; request a fresh boundary");let Wr=A(g,Hn,V);for(D(Wr),P.set(Wr,{sessionId:g,view:V,revision:Hn,sourceRevision:j,filePath:Me,entries:Ye,...ye!==void 0?{conversation:ye}:{},expiresAt:Date.now()+bs}),T.set(H(g,j,V),Hn),rn();P.size>hR;){let Je=P.keys().next().value;if(Je===void 0)break;D(Je)}return Hn},"materializeTranscriptSnapshot"),W=i((g,F,j="transcript")=>{let J=A(g,F,j),V=P.get(J);if(V!==void 0){if(V.expiresAt<=Date.now()){D(J);return}if(!$.existsSync(V.filePath)){D(J);return}return P.delete(J),P.set(J,V),{revision:V.revision,view:V.view,sourceRevision:V.sourceRevision,filePath:V.filePath,entries:V.entries,...V.conversation!==void 0?{conversation:V.conversation}:{}}}},"getTranscriptSnapshot"),Z=i(async(g,F,j,J,V="transcript",ie="",ye)=>{Oe(J),U();let Ee=H(g,j,V),De=T.get(Ee);if(De!==void 0&&W(g,De,V)!==void 0)return De;let He=N.get(Ee);if(He===void 0){let Me=new AbortController,Ue=Ln({signal:Me.signal}),Se=K(g,F,j,Ue,V,ie,ye);He={controller:Me,promise:Se,waiters:0,settled:!1},N.set(Ee,He);let ln=He,on=i(()=>{ln.settled=!0,N.get(Ee)===ln&&N.delete(Ee)},"settle");Se.then(on,on)}He.waiters+=1;try{return await Fn(()=>He.promise,J)}finally{He.waiters-=1,He.waiters===0&&!He.settled&&(N.get(Ee)===He&&N.delete(Ee),He.controller.abort())}},"rememberTranscriptSnapshot"),re=i(async(g,F)=>{Oe(F);let j=r.currentSessionCursor(g),J=te.get(g)??0,V=q.get(g);if(V!==void 0&&(!As(V.sessionCursor,j)||V.sourceGeneration!==J)&&(q.delete(g),V=void 0),V===void 0){let ie=new AbortController,ye=Ln({signal:ie.signal}),Ee=b((async()=>{let Me=await O(g,ye),Ue=Me.transcript.lineage??xR(g,Me.sourceRevision,Me.transcript.messages),Se=Me.transcript.lineage===void 0?Ue.entries.flatMap(on=>on.type==="message"?[{entryId:on.id,parentId:on.parentId,logicalId:on.logicalId??on.id,...on.sourceEntryId===void 0?{}:{sourceEntryId:on.sourceEntryId},timestamp:on.timestamp,type:"message",message:on.message,active:!0}]:[]):Me.transcript.transcriptEntries,ln=await Z(g,Se,Me.sourceRevision,ye);return{capture:Me,revision:ln,lineage:Ue,transcriptEntries:Se}})());V={controller:ie,sessionCursor:j,sourceGeneration:J,promise:Ee,waiters:0,settled:!1},q.set(g,V);let De=V,He=i(()=>{De.settled=!0,q.get(g)===De&&q.delete(g)},"settle");Ee.then(He,He)}V.waiters+=1;try{return await Fn(()=>V.promise,F)}finally{V.waiters-=1,V.waiters===0&&!V.settled&&(q.get(g)===V&&q.delete(g),V.controller.abort())}},"readMaterializedSessionCapture"),ne=i(g=>{te.set(g,(te.get(g)??0)+1),q.delete(g)},"invalidateMaterializedSessionCapture"),z=i(()=>{if(!je){for(let g of[...P.keys()])D(g);ve!==void 0&&($.rmSync(ve,{recursive:!0,force:!0}),ve=void 0),de=0,Ie.clear(),T.clear(),Te.clear(),be=0,cn.clear(),Ge.clear(),je=!0}},"finalizeTranscriptSnapshots"),se=i((g=1)=>{try{z()}catch(F){if(process.emitWarning(`Deferred transcript snapshot cleanup failed: ${$e(F).message}`,{code:"KODAX_TRANSCRIPT_SNAPSHOT_CLEANUP_FAILED"}),g>=3)return;setTimeout(()=>se(g+1),g*100).unref?.()}},"retryDeferredTranscriptSnapshotFinalization"),ae=i(()=>{Ce=!0,In();for(let g of _.values())g.controller.abort();_.clear();for(let g of N.values())g.controller.abort();N.clear();for(let g of q.values())g.controller.abort();q.clear(),te.clear()},"beginCloseTranscriptSnapshots");k(ae,i(async()=>{ae();let g=Promise.allSettled([...Pe]),F=!1;if(await Promise.race([g.then(()=>{F=!0}),new Promise(j=>{setTimeout(j,SR).unref?.()})]),F){z();return}process.emitWarning("Runtime closed while transcript snapshot I/O was still pending; temporary files will be cleaned after the I/O settles.",{code:"KODAX_TRANSCRIPT_SNAPSHOT_CLOSE_DEFERRED"}),g.then(()=>se())},"disposeTranscriptSnapshots"));let fe=i(async(g,F)=>{let j=Ln(F);for(let J=0;J<ul;J+=1){let V=r.currentSessionCursor(g),[ie,ye,Ee]=await Promise.all([re(g,j),Fn(()=>c(g),j),Fn(()=>I(g),j)]),De=await Fn(()=>u.read(g),j),{capture:He,revision:Me}=ie;Oe(j);let Ue=r.currentSessionCursor(g);if(!As(V,Ue))continue;let Se=W(g,Me);if(Se===void 0)throw xe("Transcript snapshot is no longer retained; request a fresh boundary");let ln=await he(Se,j,()=>Ds(Se,j));return{runtimeId:e.runtimeId,cursor:Ue,transcriptRevision:Me,session:v(g,He.data),transcript:ln,settings:De,runs:ye,pendingPermissions:Ee,live:r.projectSession(g)}}throw xe(`Session ${g} changed continuously while taking a snapshot`)},"captureObservationSnapshot"),Be=i(async g=>{let F=Ln(g);for(let j=0;j<ul;j+=1){let J=r.currentSessionCursor(g.sessionId),[V,ie]=await Promise.all([O(g.sessionId,F),Fn(()=>g.runId===void 0?p(g.sessionId):R(g.runId).then(Ee=>Ee===void 0?[]:[Ee]),F)]);Oe(F);let ye=r.currentSessionCursor(g.sessionId);if(As(J,ye))return{runtimeId:e.runtimeId,cursor:ye,transcriptRevision:zh(V.transcript),runs:ie.filter(Ee=>Ee.sessionId===g.sessionId)}}throw xe(`Session ${g.sessionId} changed continuously while taking a diagnostic snapshot`)},"captureDiagnosticBoundary"),yn=i((g,F)=>x.run(g,async()=>{s();let j=await m.loadExecutable(g);try{return await f(g,"mutate",()=>F(j))}finally{ne(g)}}),"mutateActiveSession");return{async create(g={}){s(),m.assertCreate(g);let F=g.sessionId??await co();if(l.has(F))throw Object.assign(new Error(`Session already exists: ${F}`),{code:"conflict"});l.add(F);try{if(g.sessionId!==void 0&&await t.loadSession(F)!==null)throw Object.assign(new Error(`Session already exists: ${F}`),{code:"conflict"});let j=g.projectPath?Y.resolve(g.projectPath):void 0,J=g.gitRoot?Y.resolve(g.gitRoot):j,V=$h(g,j,J),ie={messages:[],title:g.title??"",gitRoot:J??"",...g.tag!==void 0?{tag:g.tag}:{},...V!==void 0?{runtimeInfo:V}:{},scope:"user"};r.prepareSessionJournal(F),g.sessionId===void 0?await t.storage.createGenerated(F,ie):await t.storage.save(F,ie);let ye=v(F,ie,new Date().toISOString());return r.emit("session.created",ye,{sessionId:F,runId:F}),ye}finally{l.delete(F)}},async load(g,F){s();let j=Ln(F),J=await m.loadRequired(g,Oe(j));return v(g,J)},async list(g){return s(),m.assertFilter(g),(await t.listSessions(g)).filter(m.admitsSummary).map(dm)},async status(g){s(),await m.loadRequired(g);let F=await c(g),j=Sm(F);return{sessionId:g,runtimeId:e.runtimeId,observedAt:new Date().toISOString(),phase:j?.phase??"idle",...j!==void 0?{runId:j.runId}:{}}},async transcript(g,F){s();let j=Ln(F);return structuredClone((await O(g,j)).transcript)},async transcriptPage(g,F){s();let j=Ln(F);Oe(j);let J=g.cursor===void 0?void 0:Hr(g.cursor).revision;if(J!==void 0){let He=W(g.sessionId,J);if(He===void 0)throw xe("Transcript snapshot is no longer retained; request a fresh boundary");return he(He,j,()=>Ds(He,j,g.cursor,g.limit))}let V=await re(g.sessionId,j),ye=V.capture.transcript,Ee=V.revision,De=W(g.sessionId,Ee);if(De===void 0)throw xe("Transcript snapshot is no longer retained; request a fresh boundary");return he(De,j,()=>Ds(De,j,void 0,g.limit))},async transcriptEntryChunk(g,F){s();let j=Ln(F);Oe(j);let J=W(g.sessionId,g.revision);if(J===void 0)throw xe("Transcript snapshot is no longer retained; request a fresh boundary");return he(J,j,()=>nw(g,J,j))},async transcriptSearch(g,F){s(),Pa(g.query);let j=Ln(F),J=await re(g.sessionId,j),ie=J.capture.transcript,ye=J.revision;await or(j);let Ee=J.lineage,De=await xa(Ee,{query:g.query,limit:g.limit,role:g.role,scope:g.scope},{revision:ye,checkpoint(){Oe(j)},yieldControl(){return or(j)}});Oe(j);let He=new Map;for(let Ue=0;Ue<J.transcriptEntries.length;Ue+=1){Ue%256===0&&await or(j);let Se=J.transcriptEntries[Ue]?.entryId;Se!==void 0&&He.set(Se,Ue)}Oe(j);let Me=De.hits.flatMap(Ue=>{let Se=He.get(Ue.entryId);return Se===void 0?[]:[{...Ue,entryIndex:Se}]});return Oe(j),{revision:ye,hits:Me}},async conversation(g,F){s();let j=Ln(F),J=await O(g,j);Oe(j);let V=So(J,()=>Oe(j));await or(j);let ie=Qh(V);Oe(j);let ye=structuredClone({...V,revision:ie});return Oe(j),ye},async conversationPage(g,F){s();let j=Ln(F);Oe(j);let J=g.limit??Vl;if(!Number.isSafeInteger(J)||J<=0)throw new Error("transcript page limit must be a positive safe integer");let V=Math.min(J,Gl),ie=g.cursor===void 0?void 0:Hr(g.cursor);if(ie===void 0||ie.kind==="conversation_cache_page")try{let Se=await t.storage.readConversationPageCache(g.sessionId,{...ie?.kind==="conversation_cache_page"?{expectedRevision:ie.revision,end:ie.end}:{},limit:V,maxPageBytes:_t,maxInlineEntryBytes:Ki,reservedBytes:0,authorize:i(ln=>m.assertCachedIdentity(g.sessionId,ln),"authorize")},Oe(j));if(Se!==null)return h(Se)}catch(Se){throw Se instanceof vo?Gi():Se instanceof mn&&Se.code==="data_changed"?xe(Se.message):Se}let ye=ie===void 0?void 0:ie.revision;if(ye!==void 0){let Se=W(g.sessionId,ye,"conversation");if(Se===void 0)throw xe("Conversation snapshot is no longer retained; request a fresh boundary");return await S(g.sessionId,Se,j),he(Se,j,()=>Ol(Se,j,g.cursor,g.limit))}let Ee=await O(g.sessionId,j);Oe(j);let De=So(Ee,()=>Oe(j));if(Ee.transcript.lineage!==void 0)try{await t.storage.prepareConversationPageCache(g.sessionId,De,Ee.transcript.lineage,Ee.data.runtimeInfo,Ee.boundaryRevision,Ee.sourceRevisionState,Oe(j));let Se=await t.storage.readConversationPageCache(g.sessionId,{limit:V,maxPageBytes:_t,maxInlineEntryBytes:Ki,reservedBytes:0,authorize:i(ln=>m.assertCachedIdentity(g.sessionId,ln),"authorize")},Oe(j));if(Se!==null)return h(Se)}catch(Se){if(Se instanceof vo)throw Gi();if(Se instanceof mn&&Se.code==="data_changed")throw xe(Se.message);process.emitWarning(`Unable to prepare bounded Conversation pages: ${$e(Se).message}`,{code:"KODAX_CONVERSATION_PAGE_CACHE_FAILED"})}let He={sourceRevision:De.sourceRevision,status:De.status,issues:De.issues,boundaryRevision:Ee.boundaryRevision},Me=await Z(g.sessionId,De.entries,De.sourceRevision,j,"conversation",Yh(De),He),Ue=W(g.sessionId,Me,"conversation");if(Ue===void 0)throw xe("Conversation snapshot is no longer retained; request a fresh boundary");return he(Ue,j,()=>Ol(Ue,j,void 0,g.limit))},async conversationEntryChunk(g,F){s();let j=Ln(F);if(Oe(j),!Number.isSafeInteger(g.entryIndex)||g.entryIndex<0)throw new Error(`Transcript entry index is out of range: ${g.entryIndex}`);let J=W(g.sessionId,g.revision,"conversation");if(J!==void 0)return await S(g.sessionId,J,j),he(J,j,()=>tw(g,J,j));let V=0;if(g.cursor!==void 0){let ie=Hr(g.cursor);if(ie.kind!=="entry"||ie.view!=="conversation"||ie.revision!==g.revision||ie.entryIndex!==g.entryIndex)throw xe("Conversation entry cursor is stale");V=ie.offset}try{let ie=await t.storage.readConversationPageCacheChunk(g.sessionId,{revision:g.revision,entryIndex:g.entryIndex,offset:V,authorize:i(ye=>m.assertCachedIdentity(g.sessionId,ye),"authorize")},Oe(j));if(ie!==null){let ye=ie.nextOffset!==void 0;return{revision:ie.revision,entryIndex:ie.entryIndex,...ie.boundaryId!==void 0?{boundaryId:ie.boundaryId}:{},encoding:"base64-json",data:ie.data.toString("base64"),hasMore:ye,...ie.nextOffset!==void 0?{nextCursor:zi({kind:"entry",view:"conversation",revision:ie.revision,entryIndex:ie.entryIndex,offset:ie.nextOffset})}:{}}}}catch(ie){throw ie instanceof mn&&ie.code==="data_changed"?xe(ie.message):ie}throw xe("Conversation snapshot is no longer retained; request a fresh boundary")},async observe(g,F,j){s();let J=[],V,ie=!1,ye=!1,Ee=!1,De=!1,He,Me,Ue=new Promise(Ye=>{He=Ye}),Se=i((Ye,Hn)=>{ie||De||(De=!0,on.close(),Me?.close(),He?.({code:"observation_invalidated",reason:Ye,runtimeId:e.runtimeId,message:Hn}))},"invalidate"),ln=i(Ye=>{if(!(ie||De)){if(V!==void 0&&(Ye.cursor.sessionId!==V.sessionId||Ye.cursor.journalEpoch!==V.journalEpoch)){Se("runtime_changed","Session event journal changed; discard local state and resync.");return}if(V!==void 0&&Ye.seq<V.seq){if(!ye)return;Se("event_order",`Session observation event order regressed from ${V.seq} to ${Ye.seq}.`);return}if(!(V!==void 0&&Ye.seq===V.seq)){V=Ye.cursor;try{F(Ye)}catch(Hn){we({source:"runtime.sessions.observe",level:"error",message:`Session observation listener failed for ${Ye.type}`,detail:$e(Hn)}),Se("delivery_failed",`Session observation listener failed while delivering ${Ye.type}; discard local state and resync.`)}}}},"deliver"),on=r.service.subscribe({sessionId:g},Ye=>{if(ye)ln(Ye);else{if(J.length>=RR){Ee=!0,Se("event_overflow","Session observation handoff overflowed; acquire a fresh snapshot.");return}J.push(Ye)}});Me=r.subscribeClose(()=>{Se("runtime_changed","Runtime closed; discard the observation and resync after reconnecting.")});try{let Ye=await fe(g,j);if(Ee)throw xe("Session observation handoff overflowed; acquire a fresh snapshot");V=Ye.cursor;let Hn={snapshot:Ye,invalidated:Ue,close(){ie||(ie=!0,J.length=0,on.close(),Me?.close())}};return queueMicrotask(()=>queueMicrotask(()=>{if(!(ie||De)){for(;J.length>0;){let Wr=J.splice(0).sort((Je,An)=>Je.seq-An.seq);for(let Je of Wr)ln(Je)}ye=!0}})),Hn}catch(Ye){throw ie=!0,on.close(),Me?.close(),Ye}},async diagnostics(g){s();let F=new Date().toISOString(),j=await Be(g);return mR(e,g,j,F)},async fork(g){if(s(),g.selector!==void 0&&g.historyBoundary!==void 0)throw new Error("fork accepts either selector or historyBoundary, not both");let F=await m.loadRequired(g.sessionId),j;try{j=g.historyBoundary===void 0?await t.forkSession(g.sessionId,{...g.selector!==void 0?{selector:g.selector}:{},...g.newSessionId!==void 0?{sessionId:g.newSessionId}:{},...g.title!==void 0?{title:g.title}:{}}):await t.storage.fork(g.sessionId,g.historyBoundary.entryId,{...g.newSessionId!==void 0?{sessionId:g.newSessionId}:{},...g.title!==void 0?{title:g.title}:{},historyBoundary:{sourceRevision:g.historyBoundary.sourceRevision}})}catch(V){throw Wl(V)}if(!j&&g.historyBoundary!==void 0)return null;if(!j){let V=g.newSessionId??await co(),ie={...F,title:g.title??F.title,messages:F.messages.map(pv),actorSnapshot:void 0};await t.storage.save(V,ie);let ye=v(V,ie);return r.emit("session.created",ye,{sessionId:V,runId:V}),ye}let J=v(j.sessionId,j.data);return r.emit("session.created",J,{sessionId:j.sessionId,runId:j.sessionId}),J},async getSettingsVersioned(g){return s(),await m.loadRequired(g),u.read(g)},async getSettings(g){return(await this.getSettingsVersioned(g)).value},async getAutoModeStats(g){s(),await m.loadRequired(g);let F=(await u.read(g)).value;if(wn(F.permissionMode)!=="auto")return;let j=y(g);return{engine:F.autoModeEngine??j?.engine??"llm",...F.autoModeClassifierModel!==void 0?{classifierModel:F.autoModeClassifierModel}:{},classifierHealth:j?.classifierHealth??"healthy",denials:j?.denials??go(),breaker:j?.breaker??po()}},async updateSettings(g,F){return yn(g,async j=>(await u.update(g,F,void 0,J=>Fs(j,J))).value)},async updateSettingsVersioned(g,F,j){return yn(g,J=>u.update(g,F,j.expectedRevision,V=>Fs(J,V)))},async appendNotice(g){return yn(g.sessionId,async()=>{let F=await t.appendClientNotice(g.sessionId,{content:g.content,...g.source!==void 0?{source:g.source}:{}});return F&&r.emit("session.notice.appended",{sessionId:g.sessionId,entry:F},{sessionId:g.sessionId,runId:g.sessionId}),F})},async rewind(g){return yn(g.sessionId,async()=>{if(sr(g.sessionId,a),g.selector!==void 0&&g.historyBoundary!==void 0)throw new Error("rewind accepts either selector or historyBoundary, not both");let F;try{F=g.historyBoundary===void 0?await t.rewindSession(g.sessionId,{...g.selector!==void 0?{selector:g.selector}:{}}):await t.storage.rewind(g.sessionId,g.historyBoundary.entryId,{historyBoundary:{sourceRevision:g.historyBoundary.sourceRevision}})}catch(J){throw Wl(J)}if(!F)return null;let j=v(g.sessionId,F);return r.emit("session.rewound",{sessionId:g.sessionId,selector:g.selector,session:j},{sessionId:g.sessionId,runId:g.sessionId}),j})},async setActiveEntry(g){return yn(g.sessionId,async()=>{sr(g.sessionId,a);let F=await t.setActiveEntry(g.sessionId,g.entryId);if(!F)return null;let j=v(g.sessionId,F);return r.emit("session.active_entry.updated",{sessionId:g.sessionId,entryId:g.entryId,session:j},{sessionId:g.sessionId,runId:g.sessionId}),j})},async compact(g){return yn(g.sessionId,async F=>{sr(g.sessionId,a);let j=Date.now(),J=F.lineage?.entries.filter(ie=>ie.type==="compaction").length??0;r.emit("context.compaction.started",{meta:{contextId:g.sessionId,contextKind:"root",contextRevision:J}},{sessionId:g.sessionId,runId:g.sessionId});let V=J;try{let ie=(await u.read(g.sessionId)).value,ye=await t.compactSession(g.sessionId,{...g.provider!==void 0?{provider:g.provider}:{},...g.model!==void 0?{model:g.model}:{},...g.customInstructions!==void 0?{customInstructions:g.customInstructions}:{},...g.contextWindow!==void 0?{contextWindow:g.contextWindow}:{},...(g.triggerPercent??ie.compactionTriggerPercent)!==void 0?{triggerPercent:g.triggerPercent??ie.compactionTriggerPercent}:{},...(g.triggerTokens??ie.compactionTriggerTokens)!==void 0?{triggerTokens:g.triggerTokens??ie.compactionTriggerTokens}:{}}),Ee=await t.loadSession(g.sessionId),De=Ee?v(g.sessionId,Ee):void 0;return V=Ee?.lineage?.entries.filter(He=>He.type==="compaction").length??J,r.emit("context.compaction.finished",{contextId:g.sessionId,contextKind:"root",contextRevision:V,source:"manual",tokensBefore:ye.tokensBefore,tokensAfter:ye.tokensAfter,committed:ye.compacted,elapsedMs:Date.now()-j,beforeRevision:J,afterRevision:V,...ye.report??{},...ye.reason!==void 0?{reason:ye.reason}:{}},{sessionId:g.sessionId,runId:g.sessionId}),ye.compacted&&r.emit("session.compacted",{sessionId:g.sessionId,result:{compacted:ye.compacted,tokensBefore:ye.tokensBefore,tokensAfter:ye.tokensAfter},...De!==void 0?{session:De}:{}},{sessionId:g.sessionId,runId:g.sessionId}),{...ye,...De!==void 0?{session:De}:{}}}finally{r.emit("context.compaction.ended",{meta:{contextId:g.sessionId,contextKind:"root",contextRevision:V}},{sessionId:g.sessionId,runId:g.sessionId})}})},async archive(g){await x.run(g,async()=>{s(),await m.loadRequired(g),sr(g,a),await f(g,"archive",async F=>{if(!F)throw new Error(`Actor owner is unavailable for Session archive: ${g}`);if(!await t.storage.archiveOwned(g,F))throw new Error(`Session not found or not archived: ${g}`)}),ne(g)})},async unarchive(g){await x.run(g,async()=>{s(),await m.loadRequired(g),sr(g,a),await f(g,"unarchive",async F=>{if(!F)throw new Error(`Actor owner is unavailable for Session unarchive: ${g}`);if(!await t.storage.unarchiveOwned(g,F))throw new Error(`Session not found or not unarchived: ${g}`)}),ne(g)})},async delete(g){await x.run(g,async()=>{s(),await m.loadRequired(g),sr(g,a),await f(g,"delete",async F=>{if(!F)throw new Error(`Actor owner is unavailable for Session deletion: ${g}`);let j=(await t.listRunningSessions()).find(J=>J.sessionId===g);j&&Jl(g,{error:{code:"session_running",runningProcess:{pid:j.pid,startedAt:j.startedAt}}}),r.retireSessionJournal(g);try{await t.storage.deleteOwned(g,F)}catch(J){try{r.restoreSessionJournal(g)}catch(V){throw new AggregateError([J,V],`Session deletion failed and its event journal could not be restored: ${g}`)}if(oe(J)&&(J.code==="actor_owner_conflict"||J.code==="actor_owner_unknown"))throw J;we({source:"runtime.sessions",level:"error",message:"Owned Session deletion failed.",detail:{sessionId:g,error:J}}),Jl(g,{error:{code:"delete_failed"}})}}),ne(g),u.release(g),C(g)})}}}i($R,"createRuntimeSessionService");function qR(e){let n=new Map,t=new Map,r=new Map,o=new Map,s=new Map,a=i(d=>{let b=e.runs.get(d);if(!b)throw new Error(`Runtime run not found: ${d}`);return b},"getRecord"),u=i(async(d,b)=>{if(Ne(d.status.phase)||b?.ownedByRuntime===!0)return d.status;let B=d.owner??b?.observedOwner,E=b===void 0?d.status:un(b);if(B===void 0)return{...E,phase:"unknown",stage:"unknown",error:"owner_liveness_unconfirmed"};let A=await Ir(B);if(A==="alive")return d.status;if(A==="unknown")return{...E,phase:"unknown",stage:"unknown",error:"owner_liveness_unconfirmed"};let H=om(d.status,e.bus,e.persistence);return e.runs.set(H.runId,Nr(H,!1,B)),H},"observePersistedRun"),c=i(async(d,b)=>{if(b?.ownedByRuntime===!0)return un(b);if(Ne(d.status.phase))return d.status;let B=d.owner??b?.observedOwner,E=b===void 0?d.status:un(b);if(B===void 0)return{...E,phase:"unknown",stage:"unknown",error:"owner_liveness_unconfirmed"};let A=await Ir(B);return A==="alive"?d.status:{...E,phase:"unknown",stage:"unknown",error:A==="dead"?"owner_recovery_required":"owner_liveness_unconfirmed"}},"inspectPersistedRun"),p=i(d=>{n.get(d.sessionId)===d.runId&&n.delete(d.sessionId)},"releaseActiveRun"),R=i(d=>{t.get(d.runId)?.(),t.delete(d.runId)},"releaseActiveQueueRoute"),I=i(d=>{d.releaseAbortSignalSubscription?.(),d.releaseAbortSignalSubscription=void 0},"releaseAbortSignalSubscription"),y=i(d=>{d.actorSession===void 0||t.has(d.runId)||t.set(d.runId,la(to(d.sessionId,"/root")))},"registerActiveQueueRoute"),x=i((d,b)=>{d.start?.resolve(b),d.start=void 0,delete d.providerCredential},"resolveRunStart"),f=i((d,b)=>(d.settlementFinished===!0&&d.unconfirmedResult===void 0||(d.settlementFinished=!0,delete d.unconfirmedResult,delete d.unconfirmedFailure,I(d),e.permissions.rejectForRun(d.runId,"runtime run ended"),e.userInputs.rejectForRun(d.runId,"runtime run ended"),d.start?.options.guardrails?.find(Ct)?.clearAllowedCalls(),x(d,b),R(d),p(d),jw(e.runs),Fe(d.sessionId)),b),"finishRun"),C=i((d,b)=>d.settlementFinished===!0?(b.phase==="unknown"&&b.result!==void 0&&(d.unconfirmedResult=b),b):(d.settlementFinished=!0,d.unconfirmedResult=b,b.phase==="unknown"&&d.phase!=="unknown"&&(d.phase="unknown",d.stage="unknown",d.stageChangedAt=new Date().toISOString(),d.error=b.error?.message??"Actor settlement persistence is unknown.",je(d)),I(d),e.permissions.rejectForRun(d.runId,"runtime run state is unknown"),e.userInputs.rejectForRun(d.runId,"runtime run state is unknown"),d.start?.options.guardrails?.find(Ct)?.clearAllowedCalls(),x(d,b),R(d),b),"finishUnconfirmedRun"),m=i(d=>{let b=d.actorSession,B=d.actorTurnBaseline;return b===void 0||B===void 0?[]:b.rootControl().list().actors.flatMap(E=>E.path!=="/root"&&E.currentTurnId!==void 0&&!B.has(E.currentTurnId)?[E.currentTurnId]:[])},"activeManagedActorTurnIds"),k=i((d,b)=>{let B=d.actorSession,E=d.actorTurnBaseline;if(B===void 0||E===void 0)return Promise.resolve({});let H=(d.actorCancellation??Promise.resolve()).then(()=>B.quiesce(b,E)).then(()=>({})).catch(X=>{let ee=$e(X);return we({source:"runtime.run.actor-cancellation",level:"error",message:`Failed to cooperatively cancel Actor descendants for Runtime run ${d.runId}.`,detail:ee}),{error:ee}});return d.actorCancellation=H.then(()=>{}),H},"requestManagedActorCancellation"),l=i(d=>d.actorDurabilityFailure!==void 0&&d.actorDurabilityPreservesExecutorFact!==!0,"actorDurabilityFailureApplies"),v=i(d=>d.capturedExecutorResult!==void 0||d.capturedExecutorFailure!==void 0,"executorPromiseSettled"),h=i(async(d,b)=>{let B=kR;for(;;){let E=await k(d,b);if(e.isClosed()||d.terminalEmitted||d.actorDurabilityFailure===void 0||d.actorSession?.health().state==="healthy"||E.error?.name==="AgentOwnerConflictError"||E.error?.name==="AgentSettlementPersistenceError")return;await new Promise(A=>{setTimeout(A,B).unref?.()}),B=Math.min(B*2,ER)}},"recoverActorDurability");e.setActorSettlementFenceHandler((d,b)=>{if(d.phase==="queued"||d.actorDurabilityFailure!==void 0||d.terminalEmitted)return;let B=b.message??"Actor settlement persistence is unknown; Runtime stopped the owning Run.",E=new Error(B);E.name="AgentSettlementPersistenceError",d.actorDurabilityFailure={phase:"failed",error:E,terminal:{code:"actor_settlement_not_persisted",effectOutcome:"unknown",message:B}},d.actorDurabilityPreservesExecutorFact=d.capturedExecutorResult!==void 0||d.capturedExecutorFailure!==void 0,d.interruptInputOpen=!1,$i(d),I(d),d.running?.abort(E),d.abortController?.abort(E),e.permissions.rejectForRun(d.runId,B),e.userInputs.rejectForRun(d.runId,B),d.start?.options.guardrails?.find(Ct)?.clearAllowedCalls();let A=h(d,B);d.actorDurabilityRecovery=A,A.then(()=>{d.actorDurabilityRecovery===A&&(d.actorDurabilityRecovery=void 0),d.actorSession?.health().state==="healthy"&&Pe(d)})});let P=i(async d=>{let b=d.actorFinalizationAbortController??=new AbortController,B=i(()=>({state:"unknown",code:"actor_settlement_not_persisted",message:"Actor finalization could not be confirmed within the bounded grace period."}),"finalizationTimedOut"),E=new AbortController,A,H=Number.POSITIVE_INFINITY,X,ee=new Promise(le=>{X=le}),ge=i(le=>{let G=Date.now()+le;G>=H||(A!==void 0&&clearTimeout(A),H=G,A=setTimeout(()=>{E.abort(new Error("Actor finalization grace expired")),X?.(B())},le),A.unref?.())},"scheduleFinalizationTimer"),D=i(()=>{ge(IR)},"startCancellationTimer");ge(bR),b.signal.addEventListener("abort",D,{once:!0}),(b.signal.aborted||d.stop!==void 0||e.isClosed()||d.running?.aborted===!0||d.abortController?.signal.aborted===!0||d.start?.options.abortSignal?.aborted===!0)&&D();let U=i(async()=>{for(;;){if(E.signal.aborted)return B();let le=d.actorSession;if(le===void 0)return{state:"healthy"};if(d.stop!==void 0&&d.actorTurnBaseline!==void 0&&(await k(d,d.stop.reason),E.signal.aborted))return B();let G=le.health();if(G.state==="recovering"){let re=e.waitForActorHealthChange(d.sessionId),ne,z=new Promise(ae=>{ne=ae}),se=i(()=>ne?.(),"handleFinalizationAbort");E.signal.addEventListener("abort",se,{once:!0});try{await Promise.race([re.promise,z])}finally{E.signal.removeEventListener("abort",se),ne=void 0,re.close()}continue}if(G.state==="unknown"&&d.actorDurabilityRecovery!==void 0){await d.actorDurabilityRecovery;continue}if(G.state==="unknown")return G;let he=le.rootControl(),S=he.list(),M=d.stop!==void 0&&d.actorTurnBaseline!==void 0?m(d).length:S.activeNonRootTurns;if(M>0){if(d.stop?.state!=="unknown"){let me=d.phase!=="waiting_agent",fe=d.activeSubtaskCount!==M;me&&(d.phase="waiting_agent",d.stage="waiting_agent",d.stageChangedAt=new Date().toISOString()),d.activeSubtaskCount=M,(me||fe)&&je(d)}let re=he.eventSnapshot().at(-1)?.sequence??0;if(d.stop!==void 0&&d.actorTurnBaseline!==void 0?m(d).length===0:he.list().activeNonRootTurns===0)continue;let ne=e.waitForActorHealthChange(d.sessionId),z,se=new Promise(me=>{z=me}),ae=i(()=>z?.(),"handleCancellation");b.signal.aborted?ae():b.signal.addEventListener("abort",ae,{once:!0});try{await Promise.race([he.wait(re,void 0,E.signal),ne.promise,se])}finally{b.signal.removeEventListener("abort",ae),z=void 0,ne.close()}continue}let O=S.admissionRevision;await Promise.resolve();let K=le.health();if(K.state==="recovering")continue;let W=he.list();if(!((d.stop!==void 0&&d.actorTurnBaseline!==void 0?m(d).length:W.activeNonRootTurns)>0)&&!(O!==void 0&&W.admissionRevision!==O))return K}},"finalize");try{return await Promise.race([U(),ee])}finally{b.signal.removeEventListener("abort",D),A!==void 0&&clearTimeout(A),E.abort()}},"awaitActorFinalization"),T=i((d,b)=>({runId:d.runId,sessionId:d.sessionId,phase:"unknown",...b!==void 0?{result:b}:{},error:new Error(d.lifecycleError?.message??d.error??"Actor settlement persistence is unknown."),...d.stop!==void 0?{stop:d.stop}:{}}),"unknownActorSettlementResult"),_=i((d,b)=>d.terminalEmitted?f(d,b):C(d,b),"finishAccordingToTerminalFact"),N=i((d,b,B)=>{d.terminalEmitted||d.executorTerminalSignal!==void 0||(d.interruptInputOpen=!1,d.executorTerminalSignal={signal:b,...B!==void 0?{error:B}:{},...b==="failed"?{failure:q(d,B??new Error("Runtime executor reported failure"))}:{},interruptedAtSignal:d.running?.aborted===!0||d.start?.options.abortSignal?.aborted===!0||d.abortController?.signal.aborted===!0},setImmediate(()=>{(async()=>{if(d.settlementFinished===!0)return;let E=d.executorTerminalSignal;if(E===void 0)return;if((await P(d)).state==="unknown"){C(d,T(d));return}if(l(d)){if(!v(d))return;f(d,te(d,d.actorDurabilityFailure));return}if(E.signal==="failed"){f(d,te(d,E.failure??q(d,E.error??new Error("Runtime executor reported failure"))));return}d.terminalEmitted||xt(e.bus,e.persistence,d,E.interruptedAtSignal?"interrupted":"completed"),f(d,{runId:d.runId,sessionId:d.sessionId,phase:d.phase,...d.terminal!==void 0?{terminal:d.terminal}:{},...d.stop!==void 0?{stop:d.stop}:{}})})().catch(E=>{we({source:"runtime.run.finalization",level:"error",message:`Failed to settle Runtime run ${d.runId} after its executor terminal signal.`,detail:E})})}))},"settleFromExecutorSignal"),q=i((d,b)=>{if(l(d))return d.actorDurabilityFailure;if(d.mode==="managed_task"&&d.stop!==void 0&&d.abortController?.signal.aborted===!0&&b instanceof Error&&b.name==="AbortError")return{phase:"interrupted",terminal:{code:"interrupted",effectOutcome:"unknown",message:d.stop.reason}};let E=Im(b,d),A=Kw(b),H=new Error(E.message);return H.name=E.name,{phase:A.phase,error:H,terminal:A.terminal}},"captureRunFailureFact"),te=i((d,b)=>{let B=d.terminalEmitted?d.phase:b.phase;return d.terminalEmitted||(b.error===void 0?delete d.error:d.error=b.error.message),xt(e.bus,e.persistence,d,B,b.terminal),{runId:d.runId,sessionId:d.sessionId,phase:d.phase,...b.error!==void 0?{error:b.error}:{},...d.terminal!==void 0?{terminal:d.terminal}:{},...d.stop!==void 0?{stop:d.stop}:{}}},"applyRunFailureFact"),de=i((d,b)=>te(d,q(d,b)),"failedRunResult"),Ie=i(d=>{let b=d.actorSession;return b===void 0||b.health().state==="healthy"&&(d.stop!==void 0&&d.actorTurnBaseline!==void 0?m(d).length===0:b.rootControl().list().activeNonRootTurns===0)},"canApplyExecutorTerminalSignal"),Te=i((d,b,B)=>{if(l(d)&&v(d)&&Ie(d))return te(d,d.actorDurabilityFailure);let E=d.executorTerminalSignal;if(E!==void 0&&(d.actorDurabilityFailure===void 0||v(d))&&!d.terminalEmitted&&Ie(d))return E.signal==="failed"?te(d,E.failure??q(d,E.error??new Error("Runtime executor reported failure"))):(xt(e.bus,e.persistence,d,E.interruptedAtSignal?"interrupted":"completed"),{runId:d.runId,sessionId:d.sessionId,phase:d.phase,...d.terminal!==void 0?{terminal:d.terminal}:{},...d.stop!==void 0?{stop:d.stop}:{}});if(E!==void 0&&d.terminalEmitted)return{runId:d.runId,sessionId:d.sessionId,phase:d.phase,...d.terminal!==void 0?{terminal:d.terminal}:{},...d.stop!==void 0?{stop:d.stop}:{}};let A=d.phase==="queued";A&&pl(s,d),delete d.actorHealthBaseState;let H=new Date().toISOString();if(d.stop??={requestedAt:H,state:A?"confirmed":"unknown",outcome:A?"cancelled":"unknown",reason:b,...A?{resolvedAt:H}:{}},I(d),d.running?.abort(new Error(b)),d.abortController?.abort(new Error(b)),k(d,b),d.actorFinalizationAbortController?.abort(new Error(b)),e.permissions.rejectForRun(d.runId,b),e.userInputs.rejectForRun(d.runId,b),d.start?.options.guardrails?.find(Ct)?.clearAllowedCalls(),!A){d.interruptInputOpen=!1,$i(d),d.phase="unknown",d.stage="unknown",d.stageChangedAt=H,d.error="stop_outcome_unconfirmed",d.lifecycleError?.retryable!==!1&&delete d.lifecycleError,je(d);let ee={runId:d.runId,sessionId:d.sessionId,phase:d.phase,...d.stop!==void 0?{stop:d.stop}:{}},ge=l(d)&&!v(d);return!B&&!ge&&(x(d,ee),R(d),p(d)),ee}xt(e.bus,e.persistence,d,"cancelled",{code:"cancelled",effectOutcome:"none",message:b});let X={runId:d.runId,sessionId:d.sessionId,phase:d.phase,...d.stop!==void 0?{stop:d.stop}:{}};return x(d,X),R(d),p(d),B&&!e.isClosed()&&Fe(d.sessionId),X},"cancelRun"),Pe=i(d=>{let b=d.unconfirmedResult;if(d.terminalEmitted||!Ie(d))return;if(l(d)){if((d.activeEffectCount??0)>0){d.finishAfterEffectDrain=()=>Pe(d);return}d.finishAfterEffectDrain=void 0,f(d,te(d,d.actorDurabilityFailure));return}let B=d.capturedExecutorResult??b?.result;if(B!==void 0){let A=B.interrupted?"interrupted":B.success?"completed":"failed",H=!B.success&&!B.interrupted&&B.signal==="BLOCKED"?{code:"blocked",effectOutcome:"known",...B.signalReason!==void 0?{message:B.signalReason}:{}}:void 0;xt(e.bus,e.persistence,d,A,H),f(d,{runId:d.runId,sessionId:d.sessionId,phase:d.phase,result:B,...d.terminal!==void 0?{terminal:d.terminal}:{},...d.stop!==void 0?{stop:d.stop}:{}});return}let E=d.capturedExecutorFailure??d.unconfirmedFailure;if(E!==void 0){f(d,te(d,E));return}d.executorTerminalSignal!==void 0&&f(d,Te(d,d.stop?.reason??"runtime run recovered",!1))},"finishRecoveredUnconfirmedRun"),be=i(d=>{if(!d.start||e.isClosed()){Te(d,"runtime closed",!1);return}d.phase="running",d.stage="executing",d.stageChangedAt=new Date().toISOString(),delete d.activeSubtaskCount,d.interruptInputOpen=d.actorSession!==void 0,d.queuedAt=void 0,d.runningAt=new Date().toISOString(),d.actorSession!==void 0&&(d.actorTurnBaseline=new Set(d.actorSession.rootControl().list().actors.flatMap(D=>D.currentTurnId===void 0?[]:[D.currentTurnId]))),n.set(d.sessionId,d.runId);let b=un(d),B=nt(e.bus,e.persistence,d,b);if(B===void 0)throw p(d),new Error(`Failed to persist running Runtime run: ${d.runId}`);if(B!==b)throw At(d,B),p(d),Zn(`Runtime run already exists: ${d.runId}`,d.sessionOrder);e.bus.emit("run.started",b,{sessionId:d.sessionId,runId:d.runId});let E=Hh({bus:e.bus,original:d.start.options.events,permissions:e.permissions,userInputs:e.userInputs,enableSharedInteractions:e.enableSharedInteractions,record:d,onExecutorTerminal:i((D,U)=>N(d,D,U),"onExecutorTerminal"),onPhase:i(D=>{if(d.terminalEmitted||d.executorTerminalSignal!==void 0||d.phase==="unknown"||d.stop?.state==="unknown")return;let U=D==="running"?"executing":D==="waiting_agent"?"waiting_agent":D==="recovering"?"recovering":void 0,le=d.actorHealthBaseState;if(le!==void 0){le.phase=D,U!==void 0&&(le.stage=U);return}d.phase===D&&(U===void 0||d.stage===U)||(d.phase=D,U!==void 0&&d.stage!==U&&(d.stage=U,d.stageChangedAt=new Date().toISOString()),je(d))},"onPhase"),onStage:i((D,U)=>{if(d.terminalEmitted||d.executorTerminalSignal!==void 0||d.phase==="unknown"||d.stop?.state==="unknown")return;let le=d.actorHealthBaseState;if(le!==void 0){le.stage=D,U===void 0?delete d.activeSubtaskCount:d.activeSubtaskCount=U;return}let G=d.activeSubtaskCount!==U;d.stage===D&&!G||(d.stage!==D&&(d.stage=D,d.stageChangedAt=new Date().toISOString()),U===void 0?delete d.activeSubtaskCount:d.activeSubtaskCount=U,je(d))},"onStage"),onMidTurnUserMessages:i((D,U)=>Ge(d,D,U),"onMidTurnUserMessages")}),A=JR({agentPlane:e.agentPlane,defaultConfigHome:e.defaultConfigHome,events:E,model:d.model,options:d.start.options,provider:d.provider,record:d,sessionManager:e.sessionManager});if(e.bus.emit("config.effective",{sessionId:d.sessionId,runId:d.runId,provider:d.provider,...d.model!==void 0?{model:d.model}:{},...A.effort!==void 0?{effort:A.effort}:{},...A.thinking!==void 0?{thinking:A.thinking}:{},...A.reasoningMode!==void 0?{reasoningMode:A.reasoningMode}:{},...A.agentMode!==void 0?{agentMode:A.agentMode}:{},...d.permissionMode!==void 0?{permissionMode:d.permissionMode}:{},...d.autoModeEngine!==void 0?{autoModeEngine:d.autoModeEngine}:{},...d.autoModeClassifierModel!==void 0?{autoModeClassifierModel:d.autoModeClassifierModel}:{},...d.autoModeTimeoutMs!==void 0?{autoModeTimeoutMs:d.autoModeTimeoutMs}:{},...d.autoModeSpeculativeWindowMs!==void 0?{autoModeSpeculativeWindowMs:d.autoModeSpeculativeWindowMs}:{},...A.compaction?.triggerPercent!==void 0?{compactionTriggerPercent:A.compaction.triggerPercent}:{},...A.compaction?.triggerTokens!==void 0?{compactionTriggerTokens:A.compaction.triggerTokens}:{},...A.context?.executionCwd!==void 0?{executionCwd:A.context.executionCwd}:{},...A.context?.shellExecution!==void 0?{shellKind:A.context.shellExecution.shell.kind,shellExecutionFingerprint:lo(A.context.shellExecution)}:{}},{sessionId:d.sessionId,runId:d.runId,...d.turnId!==void 0?{turnId:d.turnId}:{}}),d.mode==="managed_task"){let D=new AbortController;d.abortController=D;let U=A.abortSignal,le=i(()=>{d.releaseAbortSignalSubscription=void 0,d.interruptInputOpen=!1;let S=U?.reason;Te(d,S instanceof Error?S.message:typeof S=="string"&&S.trim().length>0?S:"external abort requested",!0)},"handleUpstreamAbort");U?.aborted&&le();let G=i(()=>Wa({...A,abortSignal:D.signal},d.start.prompt),"managedOperation"),he=d.providerCredential!==void 0?Zi(d.provider,d.providerCredential,G):G();U!==void 0&&!U.aborted?(U.addEventListener("abort",le,{once:!0}),d.releaseAbortSignalSubscription=()=>{U.removeEventListener("abort",le)}):U?.aborted&&!D.signal.aborted&&le(),y(d),he.then(async S=>{d.capturedExecutorResult=S;let M=d.terminalEmitted?d.phase:S.interrupted?"interrupted":S.success?"completed":"failed",O=!S.success&&!S.interrupted&&S.signal==="BLOCKED"?{code:"blocked",effectOutcome:"known",...S.signalReason!==void 0?{message:S.signalReason}:{}}:void 0;return(await P(d)).state==="unknown"?T(d,S):l(d)?te(d,d.actorDurabilityFailure):(xt(e.bus,e.persistence,d,M,O),{runId:d.runId,sessionId:d.sessionId,phase:d.phase,result:S,...d.terminal!==void 0?{terminal:d.terminal}:{},...d.stop!==void 0?{stop:d.stop}:{}})}).catch(async S=>{let M=q(d,S);return d.capturedExecutorFailure=M,(await P(d)).state==="unknown"?(d.unconfirmedFailure=M,T(d)):te(d,M)}).then(S=>_(d,S));return}let H=i(()=>Ua(A,d.start.prompt),"codingOperation"),X=d.providerCredential!==void 0?Zi(d.provider,d.providerCredential,H):H();d.running=X;let ee=A.abortSignal,ge=i(()=>{d.releaseAbortSignalSubscription=void 0,d.interruptInputOpen=!1;let D=ee?.reason;Te(d,D instanceof Error?D.message:typeof D=="string"&&D.trim().length>0?D:"external abort requested",!0)},"handleUpstreamAbort");ee?.aborted?ge():ee!==void 0&&(ee.addEventListener("abort",ge,{once:!0}),d.releaseAbortSignalSubscription=()=>{ee.removeEventListener("abort",ge)}),y(d),X.result.then(async D=>{d.capturedExecutorResult=D;let U=d.terminalEmitted?d.phase:D.interrupted?"interrupted":D.success?"completed":"failed";return(await P(d)).state==="unknown"?T(d,D):l(d)?te(d,d.actorDurabilityFailure):(xt(e.bus,e.persistence,d,U),{runId:d.runId,sessionId:d.sessionId,phase:d.phase,result:D,...d.stop!==void 0?{stop:d.stop}:{}})}).catch(async D=>{let U=q(d,D);return d.capturedExecutorFailure=U,(await P(d)).state==="unknown"?(d.unconfirmedFailure=U,T(d)):te(d,U)}).then(D=>_(d,D))},"launchRecord"),ve=i(d=>{try{be(d);return}catch(b){let B=q(d,b);return d.capturedExecutorFailure=B,P(d).then(E=>{if(E.state==="unknown"){d.unconfirmedFailure=B,C(d,T(d));return}f(d,te(d,B))}),{error:b}}},"startRecord"),Fe=i(d=>{let b=s.get(d);if(!b||b.length===0||n.has(d))return;let B=b.shift();if(b.length===0&&s.delete(d),!B)return;let E=e.runs.get(B);if(!E||E.phase!=="queued"){Fe(d);return}if(E.inheritModeAfterDurabilityRepair===!0){let A=E.continuation===void 0?void 0:e.runs.get(E.continuation.afterRunId);A?.actorDurabilityFailure!==void 0&&(E.mode=A.mode,je(E))}ve(E)},"drainNext"),Ce=i(d=>{let b=un(d),B=nt(e.bus,e.persistence,d,b);if(B===void 0)throw new Error(`Failed to persist queued Runtime run: ${d.runId}`);if(B!==b)throw At(d,B),Zn(`Runtime run already exists: ${d.runId}`,d.sessionOrder);let E=s.get(d.sessionId)??[];E.push(d.runId),s.set(d.sessionId,E),e.bus.emit("run.queued",b,{sessionId:d.sessionId,runId:d.runId})},"enqueue"),je=i(d=>{let b=un(d),B=nt(e.bus,e.persistence,d,b);if(B!==void 0){if(B!==b){At(d,B);return}e.bus.emit("run.updated",b,{sessionId:d.sessionId,runId:d.runId,...d.turnId!==void 0?{turnId:d.turnId}:{}})}},"publishRunUpdate"),Ge=i((d,b,B)=>{let E=new Map;for(let D of d.interruptInputs)D.state==="queued"&&D.queueMessageId!==void 0&&E.set(D.queueMessageId,D);let A=[],H=new Set;for(let D of b){if(H.has(D))continue;H.add(D);let U=E.get(D);U!==void 0&&A.push(U)}if(A.length===0)return;let X=new Date().toISOString(),ee=A.map(D=>{if(D.input===void 0)throw new Error(`Runtime interrupt input is unavailable: ${D.inputId}`);let U=D.queueMessageId===void 0?void 0:B?.[D.queueMessageId];if(typeof U!="string"||U.length===0)throw new Error(`Runtime interrupt input is missing its canonical entry reference: ${D.inputId}`);let le={inputId:D.inputId,afterRunId:D.afterRunId,input:D.input,queuedAt:D.queuedAt,deliveredAt:X,entryId:U,...D.origin!==void 0?{origin:D.origin}:{}};return{record:D,entryId:U,eventInput:le}}),ge={sessionId:d.sessionId,runId:d.runId,...d.turnId!==void 0?{turnId:d.turnId}:{}};try{e.bus.emitDurable("run.input.delivered",{inputs:ee.map(D=>D.eventInput)},ge,()=>{for(let D of ee)D.record.state="delivered",D.record.deliveredAt=X,D.record.entryId=D.entryId,delete D.record.queueMessageId})}catch(D){throw e.bus.emit("runtime.warning",{source:"run.input.delivered",message:`Failed to persist interrupt input delivery: ${$e(D).message}`,inputIds:A.map(U=>U.inputId)},ge),D}je(d)},"deliverInterruptInputs"),cn=e.settingsOwner.subscribe((d,b)=>{for(let B of e.runs.values())B.sessionId!==d||B.phase!=="queued"&&!Cn(B.phase)||(B.permissionMode=b.value.permissionMode,B.autoModeEngine=wn(b.value.permissionMode)==="auto"?b.value.autoModeEngine??"llm":b.value.autoModeEngine,B.autoModeClassifierModel=b.value.autoModeClassifierModel,B.autoModeTimeoutMs=b.value.autoModeTimeoutMs,B.autoModeSpeculativeWindowMs=b.value.autoModeSpeculativeWindowMs,je(B))}),an=i(async(d,b=!1)=>{let B=d.admittedSessionContext;if(d.ownedByRuntime&&B!==void 0&&(b||!Ne(d.phase))){e.sessionAdmission.assertCachedIdentity(d.sessionId,{surface:B.runtimeInfo?.surface,profileId:B.runtimeInfo?.profileId});return}await e.sessionAdmission.assertRunAccess(d.sessionId)},"assertRunRecordAccess"),In=i((d,b)=>{if(d.sessionId!==b)throw new Error(`Runtime continuation target ${d.runId} does not belong to session ${b}`);let B=d.phase==="unknown"&&d.actorDurabilityFailure!==void 0&&!d.terminalEmitted;if(!Cn(d.phase)&&d.phase!=="queued"&&!B)throw new Lr(d.runId)},"assertContinuationTarget"),rn=i(async(d,b)=>{e.ensureOpen();let B=d,E=B.requiredAfterRunId,A=E===void 0?void 0:a(E);A!==void 0&&(In(A,d.sessionId),await an(A));let H=Ml(d,e.artifacts,b),X=A?.admittedSessionContext;if(A!==void 0&&X===void 0)throw new Lr(A.runId);if(X===void 0){let ae=await e.sessionAdmission.loadExecutable(d.sessionId);X={gitRoot:ae.gitRoot,...ae.runtimeInfo!==void 0?{runtimeInfo:structuredClone(ae.runtimeInfo)}:{}}}let ee=(await e.settingsOwner.read(d.sessionId)).value;Fs(X,ee);let ge=Xh(d.options??{},ee,H.inputArtifacts,X),D=await e.actorRegistry.forSession(d.sessionId,ge.maxConcurrentThreadsPerSession),U=ge.agentMode==="sa"?void 0:D,le=A?.phase==="unknown"&&A.actorDurabilityFailure!==void 0&&!A.terminalEmitted;if(U!==void 0){let ae=U.health(),me=ae.state==="recovering"?await e.waitForActorHealthResolution(d.sessionId,ae):ae;if(me.state==="unknown"&&!le)throw Object.assign(new Error(me.message??"Actor settlement persistence is unknown; the Session cannot start another Run."),{code:me.code??"actor_settlement_not_persisted",retryable:!1})}let G=ge.provider??e.defaultProvider;if(!G)throw new Error("runtime.runs.start requires input.options.provider or runtime defaultProvider");if(B.providerCredential!==void 0&&B.providerCredentialProvider!==void 0&&B.providerCredentialProvider!==G)throw lv(`Credential lease is bound to ${B.providerCredentialProvider}, not ${G}.`);let he=ge.modelOverride??ge.model??e.defaultModel??ra(G)[0]?.id,S=d.trustedRunId??Ow();if(e.runs.has(S))throw Zn(`Runtime run already exists: ${S}`,0);let M=e.enableSharedInteractions||wn(ee.permissionMode)==="auto";if(cw(ee,he),M&&ge.guardrails?.some(ae=>ae.kind==="tool"&&ae.name==="auto-mode"))throw new Error("Runtime owns the auto-mode guardrail for shared Session permission state.");let O=M?ev({sessionId:d.sessionId,provider:G,model:he,options:ge,permissions:e.permissions,cache:r,states:o,settingsOwner:e.settingsOwner,getRecord:i(()=>{let ae=n.get(d.sessionId);return ae===void 0?void 0:e.runs.get(ae)},"getRecord"),onPhase:i((ae,me)=>{ae.terminalEmitted||ae.executorTerminalSignal!==void 0||ae.phase==="unknown"||ae.stop?.state==="unknown"||ae.phase===me||(ae.phase=me,je(ae))},"onPhase"),onEngineChange:i(ae=>{for(let me of e.runs.values())me.sessionId===d.sessionId&&(me.phase==="queued"||Cn(me.phase))&&me.autoModeEngine!==ae&&(me.autoModeEngine=ae,je(me));e.settingsOwner.persistAutoModeEngine(d.sessionId,ae).catch(me=>{e.bus.emit("runtime.warning",{source:"runtime.auto-mode",severity:"error",message:`Failed to persist Session auto-mode engine: ${$e(me).message}`},{sessionId:d.sessionId,runId:d.sessionId})})},"onEngineChange")}):void 0;await O?.prepare?.();let K=O===void 0?ge:{...ge,guardrails:[...ge.guardrails??[],O]},W=new Date().toISOString(),Z=i(()=>{},"resolveResult"),re=new Promise(ae=>{Z=ae});A!==void 0&&In(A,d.sessionId);let ne=e.persistence.nextSessionOrder(d.sessionId),z=A!==void 0||n.has(d.sessionId),se={runId:S,sessionId:d.sessionId,phase:z?"queued":"running",stage:z?"queued":"executing",stageChangedAt:W,startedAt:W,sessionOrder:ne,...z?{queuedAt:W}:{},provider:G,...he!==void 0?{model:he}:{},...d.permissionBroker!==void 0?{permissionBroker:d.permissionBroker}:{},...ee.permissionMode!==void 0?{permissionMode:ee.permissionMode}:{},...ee.autoModeClassifierModel!==void 0?{autoModeClassifierModel:ee.autoModeClassifierModel}:{},...ee.autoModeTimeoutMs!==void 0?{autoModeTimeoutMs:ee.autoModeTimeoutMs}:{},...ee.autoModeSpeculativeWindowMs!==void 0?{autoModeSpeculativeWindowMs:ee.autoModeSpeculativeWindowMs}:{},...wn(ee.permissionMode)==="auto"?{autoModeEngine:ee.autoModeEngine??"llm"}:ee.autoModeEngine!==void 0?{autoModeEngine:ee.autoModeEngine}:{},...ge.reasoningMode!==void 0?{reasoning:ge.reasoningMode}:{},mode:d.mode??(le?A?.mode:void 0)??"coding",...A!==void 0&&d.mode===void 0?{inheritModeAfterDurabilityRepair:!0}:{},...d.providerCredential!==void 0?{providerCredential:d.providerCredential}:{},hadProviderCredential:d.providerCredential!==void 0,...d.origin!==void 0?{origin:d.origin}:{},...E!==void 0?{continuation:{inputId:S,afterRunId:E,delivery:"after_turn",contentPreview:Nl(H.prompt)}}:{},interruptInputs:[],...d.agentContext??e.defaultAgentContext?{agentContext:d.agentContext??e.defaultAgentContext}:{},...U?{actorSession:U}:{},admittedSessionContext:X,interruptInputOpen:!1,result:re,start:{prompt:H.prompt,inputArtifacts:H.inputArtifacts,options:K,resolve:Z},terminalEmitted:!1,ownedByRuntime:!0};if(e.runs.set(S,se),z)Ce(se);else{let ae=ve(se);if(ae!==void 0)throw ae.error}return{runId:S,sessionId:d.sessionId,get turnId(){return se.turnId},result:re}},"startRun"),nn=i((d,b="runtime.runs.start")=>e.sessionOperations.run(d.sessionId,()=>rn(d,b)),"start");return{start:nn,async submitInput(d){e.ensureOpen();let b=a(d.afterRunId);if(b.sessionId!==d.sessionId)throw new Error(`Runtime continuation target ${d.afterRunId} does not belong to session ${d.sessionId}`);if(await an(b,!0),d.delivery==="interrupt"){if(b.actorSession===void 0&&Cn(b.phase)&&n.get(d.sessionId)===b.runId)return{accepted:!1,delivery:d.delivery,sessionId:d.sessionId,afterRunId:d.afterRunId,reason:"unsupported_capability"};if(!b.interruptInputOpen)return{accepted:!1,delivery:d.delivery,sessionId:d.sessionId,afterRunId:d.afterRunId,reason:"interrupt_window_closed"};if(!Cn(b.phase)||n.get(d.sessionId)!==b.runId)return{accepted:!1,delivery:d.delivery,sessionId:d.sessionId,afterRunId:d.afterRunId,reason:"stale_run"};if(d.credential!==void 0||d.hostTools!==void 0)throw new Error("runtime.runs.submitInput interrupt delivery cannot replace active-run credential or host-tool bindings");let X=Ml({sessionId:d.sessionId,input:d.input},e.artifacts,"runtime.runs.submitInput"),ee=structuredClone(d.input),ge=d,D=ge.trustedInputId??Nw();if(b.interruptInputs.some(he=>he.inputId===D))throw Zn(`Runtime interrupt input already exists: ${D}`,0);let U=ma({sessionId:d.sessionId,content:X.prompt,inputArtifacts:X.inputArtifacts,provider:b.provider,...b.model!==void 0?{model:b.model}:{}}),le=new Date().toISOString(),G={inputId:D,afterRunId:d.afterRunId,delivery:"interrupt",state:"queued",contentPreview:Nl(X.prompt),queuedAt:le,...ge.origin!==void 0?{origin:ge.origin}:{},input:ee,queueMessageId:U};return b.interruptInputs.push(G),je(b),e.bus.emit("run.input.queued",{input:wm(G)},{sessionId:b.sessionId,runId:b.runId,...b.turnId!==void 0?{turnId:b.turnId}:{}}),{accepted:!0,delivery:"interrupt",inputId:D,runId:b.runId,sessionId:d.sessionId,afterRunId:d.afterRunId,sessionOrder:b.sessionOrder}}let B=b.phase==="unknown"&&b.actorDurabilityFailure!==void 0&&!b.terminalEmitted;if(!Cn(b.phase)&&b.phase!=="queued"&&!B)return{accepted:!1,delivery:d.delivery,sessionId:d.sessionId,afterRunId:d.afterRunId,reason:"stale_run"};let E=d,A;try{A=await nn({sessionId:d.sessionId,input:d.input,...E.options!==void 0?{options:E.options}:{},...E.providerCredential!==void 0?{providerCredential:E.providerCredential}:{},...E.providerCredentialProvider!==void 0?{providerCredentialProvider:E.providerCredentialProvider}:{},...E.origin!==void 0?{origin:E.origin}:{},...E.trustedRunId!==void 0?{trustedRunId:E.trustedRunId}:{},requiredAfterRunId:d.afterRunId},"runtime.runs.submitInput")}catch(X){if(!(X instanceof Lr))throw X;return{accepted:!1,delivery:d.delivery,sessionId:d.sessionId,afterRunId:d.afterRunId,reason:"stale_run"}}let H=a(A.runId).sessionOrder;return{accepted:!0,delivery:d.delivery,runId:A.runId,sessionId:d.sessionId,afterRunId:d.afterRunId,sessionOrder:H}},async await(d){e.ensureOpen();let b=e.runs.get(d);if(b?.ownedByRuntime===!0)return await an(b),b.result;let B=e.persistence.loadRunStatus(d);if(B)return await e.sessionAdmission.assertRunAccess(B.status.sessionId),vm(await u(B,e.runs.get(d)));if(b)return await e.sessionAdmission.assertRunAccess(b.sessionId),b.result;throw new Error(`Runtime run not found: ${d}`)},async get(d){e.ensureOpen();let b=e.runs.get(d),B=e.persistence.loadRunStatus(d);if(B&&(b!==void 0?await an(b):await e.sessionAdmission.assertRunAccess(B.status.sessionId),b===void 0||!b.ownedByRuntime||Ne(B.status.phase)))return u(B,b);if(b)return await an(b),un(b);throw new Error(`Runtime run not found: ${d}`)},async list(d){e.ensureOpen(),d?.sessionId!==void 0&&await e.sessionAdmission.assertRunAccess(d.sessionId);let b=e.persistence.loadRunStatuses(),B=await Promise.all(b.map(H=>u(H,e.runs.get(H.status.runId)))),E=new Map(B.map(H=>[H.runId,H]));for(let H of e.runs.values()){let X=E.get(H.runId);!H.ownedByRuntime||X!==void 0&&Ne(X.phase)||E.set(H.runId,un(H))}let A=[...E.values()].filter(H=>$l(H,d));return _l(Hl(jl(A)),e.sessionAdmission)},async inspect(d){e.ensureOpen(),d?.sessionId!==void 0&&await e.sessionAdmission.assertRunAccess(d.sessionId);let b=e.persistence.loadRunStatuses(),B=await Promise.all(b.map(H=>c(H,e.runs.get(H.status.runId)))),E=new Map(B.map(H=>[H.runId,H]));for(let H of e.runs.values())!H.ownedByRuntime||Ne(H.phase)||E.set(H.runId,un(H));let A=[...E.values()].filter(H=>$l(H,d));return _l(Hl(jl(A)),e.sessionAdmission)},async inspectOne(d){e.ensureOpen();let b=e.runs.get(d),B=e.persistence.loadRunStatus(d);if(B!==void 0)return await e.sessionAdmission.assertRunAccess(B.status.sessionId),c(B,b);if(b!==void 0)return await e.sessionAdmission.assertRunAccess(b.sessionId),un(b)},async abort(d){e.ensureOpen();let b=e.runs.get(d),B=e.persistence.loadRunStatus(d),E=b?.sessionId??B?.status.sessionId;if(E===void 0)throw new Error(`Runtime run not found: ${d}`);if(await e.sessionAdmission.assertRunAccess(E),b!==void 0&&Fi(b,e.runOwner),b?.terminalEmitted===!0&&B?.owner?.ownerId===e.runOwner.ownerId)return Li({accepted:!1,effectDeliveryAllowed:!1,status:un(b),revision:B.revision});if(b?.executorTerminalSignal!==void 0&&!b.terminalEmitted&&Ie(b)){Te(b,"runtime run aborted",!1);let X=e.persistence.loadRunStatus(d);return Li({accepted:!1,effectDeliveryAllowed:!1,status:X?.status??un(b),revision:X?.revision??0})}let A=e.persistence.requestRunStop(d,"runtime run aborted",b?.ownedByRuntime===!0?e.runOwner.ownerId:void 0);if(b===void 0)return Li(A);if(At(b,A.status),A.status.stop!==void 0&&b.actorFinalizationAbortController?.abort(new Error("runtime run aborted")),A.status.stop?.state==="unknown"&&delete b.actorHealthBaseState,A.accepted||A.effectDeliveryAllowed){let X=A.status.phase==="cancelled";if(X&&pl(s,b),I(b),b.running?.abort(new Error("runtime run aborted")),b.abortController?.abort(new Error("runtime run aborted")),k(b,"runtime run aborted").then(ge=>{ge.error===void 0&&Pe(b)}),e.permissions.rejectForRun(b.runId,"runtime run aborted"),e.userInputs.rejectForRun(b.runId,"runtime run aborted"),b.start?.options.guardrails?.find(Ct)?.clearAllowedCalls(),b.interruptInputOpen=!1,$i(b),A.accepted&&X){e.bus.emit("run.cancelled",A.status,{sessionId:b.sessionId,runId:b.runId,...b.turnId!==void 0?{turnId:b.turnId}:{}});let ge={runId:b.runId,sessionId:b.sessionId,phase:b.phase,...b.terminal!==void 0?{terminal:b.terminal}:{},...b.stop!==void 0?{stop:b.stop}:{}};x(b,ge),R(b),p(b),e.isClosed()||Fe(b.sessionId)}else A.accepted&&e.bus.emit("run.updated",A.status,{sessionId:b.sessionId,runId:b.runId,...b.turnId!==void 0?{turnId:b.turnId}:{}})}return Li(A)},async setModel(d,b){e.ensureOpen();let B=a(d);await e.sessionAdmission.assertRunAccess(B.sessionId),Fi(B,e.runOwner),B.model=b,B.running?.setModel(b),je(B)},async setProvider(d,b){e.ensureOpen();let B=a(d);await e.sessionAdmission.assertRunAccess(B.sessionId),Fi(B,e.runOwner),B.provider=b,B.running?.setProvider(b),je(B)},async setReasoning(d,b){e.ensureOpen();let B=a(d);await e.sessionAdmission.assertRunAccess(B.sessionId),Fi(B,e.runOwner),B.reasoning=b,B.running?.setReasoning(b),je(B)},closeAll(d){cn.close();for(let b of e.runs.values())b.ownedByRuntime&&(b.phase==="queued"||Cn(b.phase)||b.phase==="unknown")&&Te(b,d,!1);n.clear(),r.clear(),o.clear(),s.clear()},releaseSession(d){for(let b of r.get(d)?.values()??[])b.guardrail.clearAllowedCalls();r.delete(d),o.delete(d)},getAutoModeStats(d){let b=o.get(d);return b===void 0?void 0:{engine:b.engine,classifierHealth:Ka(b.breaker,Date.now())?"degraded":"healthy",denials:b.denials,breaker:b.breaker}}}}i(qR,"createRuntimeRunService");function BR(){let e=Ca();return{async list(n){let t=e.list(),r=n?.runId?t.filter(o=>o.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(o=>{n.runId&&o.snapshot.runId!==n.runId||n.activeOnly===!0&&qw(o.snapshot.status)||t(o)})}},async pause(n){return e.pause(n)},async resume(n){return e.resume(n)},async stop(n){return e.stop(n)}}}i(BR,"createRuntimeWorkflowService");function KR(e,n){return{async read(){return e(),ar(at(n))},async patch(t){return e(),mw(t,"runtime.config.patch"),gw(n,fw(t)),ar(at(n))},async reload(){return e(),n!==void 0?(Rm(n),{ok:!0,config:ar(at(n))}):{ok:!0,config:ar(Ga())}}}}i(KR,"createRuntimeConfigService");function XR(e,n){return{async providers(){return e(),Ro()},async models(t){return e(),Pw(Ro(),t)},async commands(t){return e(),Fl(t)},async resolveCommand(t){e();let r=t.name.trim().toLowerCase();return Fl(t.projectRoot).find(o=>o.name.trim().toLowerCase()===r||(o.aliases??[]).some(s=>s.trim().toLowerCase()===r))??null},async skills(t){e();let r=await ao(t?.projectRoot);return(t?.userInvocableOnly===!0?r.listUserInvocable():r.list()).map(Dw)},async describeSkill(t){e();let r=await ao(t.projectRoot);return r.has(t.name)?Mw(await r.loadFull(t.name)):null},async customProviders(){return e(),Rw(n)},async upsertCustomProvider(t){return e(),hw(n,t)},async deleteCustomProvider(t){return e(),ww(n,t)},async extensions(){e();let t=Lt();if(!t)return{active:!1,extensions:[]};let r=t.getDiagnostics();return{active:!0,extensions:r.loadedExtensions,diagnostics:r}},async reloadExtensions(){e();let t=Lt();return t?(await t.reloadExtensions({continueOnError:!0}),{ok:!0,active:!0,diagnostics:t.getDiagnostics()}):{ok:!0,active:!1}}}}i(XR,"createRuntimeCatalogService");function UR(e,n){return{async listServers(){return e(),Ms(n)},async getServer(t){return e(),Sw(n,t)},async validateServer(t,r){e();try{return ho(t,r),{ok:!0,config:structuredClone(r)}}catch(o){return{ok:!1,error:o instanceof Error?o.message:String(o)}}},async upsertServer(t,r){return e(),Iw(n,t,r)},async deleteServer(t){return e(),bw(n,t)},async reloadServers(){e();let t=uo(Ms(n));try{return{ok:!0,servers:t.listServers()}}finally{await t.dispose()}},async listTools(t){e();let r=Ms(n),o=t?.server!==void 0?[t.server]:Object.keys(r),s=uo(r);try{let a=[];for(let u of o)a.push(await s.listTools(u,{forceRefresh:t?.forceRefresh===!0}));return a}finally{await s.dispose()}}}}i(UR,"createRuntimeMcpService");function WR(){let e=new Map;return{service:{async create(r){if(!Kh(r.kind))throw new Error(`Unsupported runtime artifact kind: ${String(r.kind)}`);let o=Y.resolve(r.path),s;try{s=await $.promises.stat(o)}catch(c){throw new Error(`Runtime artifact path is not readable: ${o}`,{cause:c})}if(!s.isFile())throw new Error(`Runtime artifact path must be a regular file: ${o}`);if(s.size>al)throw new Error(`Runtime artifact exceeds the ${al}-byte limit: ${o}`);let a=`art_${Qe().replace(/-/g,"").slice(0,12)}`,u={id:a,kind:r.kind,path:o,sizeBytes:s.size,...r.mediaType!==void 0?{mediaType:r.mediaType}:{},...r.mimeType!==void 0?{mimeType:r.mimeType}:{},...r.name!==void 0?{name:r.name}:{},...r.source!==void 0?{source:r.source}:{},...r.description!==void 0?{description:r.description}:{},createdAt:new Date().toISOString()};return e.set(a,u),u},async get(r){return e.get(r)},async delete(r){return e.delete(r)}},resolve:i(r=>{let o=e.get(r);if(!o)throw new Error(`Runtime artifact not found: ${r}`);return o},"resolve")}}i(WR,"createRuntimeArtifactStore");function JR(e){let{agentPlane:n,events:t,model:r,options:o,provider:s,record:a,sessionManager:u}=e,c=o.events?.exitPlanMode===void 0,{configHome:p,memoryIdentity:R,shellSandbox:I,...y}=o.context??{},x=o.guardrails?.find(Ct),f=o.context?.gitRoot??o.context?.executionCwd??process.cwd(),C=o.context?.executionCwd??f,m=cd({workspaceRoot:f,failClosed:!0,shouldSandbox:i(async h=>{let P=wn(a.permissionMode)==="auto",T;if(P&&x!==void 0){if(T=x.consumeWorkspaceSandboxCall(h),T===void 0)return!1}else try{T=await $a(h,{projectRoot:f,executionCwd:C,signals:[]})}catch{}return{agentHomeAccess:T===void 0?void 0:Yw(T,C)}},"shouldSandbox")}),k=m!==void 0&&I!==void 0?{failClosed:!0,processTreeContainment:m.processTreeContainment,async prepare(h){let P,T=await m.prepare({...h,reportObservation:i(te=>{P=te},"reportObservation")});if(T!==void 0)return T;if(m.failClosed===!0&&P?.state!=="not_selected"){P!==void 0&&h.reportObservation?.(P);return}let _,N=await I.prepare({...h,reportObservation:i(te=>{_=te},"reportObservation")});if(N!==void 0)return N;let q=[_,P].find(te=>te?.state==="fallback")??_??P;q!==void 0&&h.reportObservation?.(q)}}:m??I,l=o.skillDynamicContext?.execute,v=o.skillDynamicContext?.disable===!0||l===void 0?{disable:!0}:{async execute(h,P){if(wn(a.permissionMode)==="plan")throw new Error("Dynamic context disabled by host. Skill `!`cmd`` blocks are not allowed in Plan mode.");return l(h,P)}};return{...o,provider:s,skillDynamicContext:v,...r!==void 0?{modelOverride:r}:{},session:{...o.session??{},id:a.sessionId,storage:u.storage,persistedByHost:!1},events:t,context:{...y,configHome:e.defaultConfigHome,...k!==void 0?{shellSandbox:k}:{},...c?{excludeTools:[...new Set([...o.context?.excludeTools??[],"exit_plan_mode"])]}:{},...a.actorSession?{actorSession:a.actorSession,interruptInput:{closeInputWindow(){a.interruptInputOpen=!1},reopenInputWindow(){!a.terminalEmitted&&Cn(a.phase)&&o.abortSignal?.aborted!==!0&&(a.interruptInputOpen=!0)}}}:{},...n&&a.agentContext?{agentExecutorPlane:{plane:n,context:a.agentContext}}:{}}}}i(JR,"buildRunOptions");function Hi(e){if(e.actorId.trim().length===0)throw new Error("Runtime agent context actorId must not be empty.")}i(Hi,"assertRuntimeAgentContext");function zR(e,n){let t=[],r=new Set(e.skills);for(let s of n.requiredSkills??[])r.has(s)||t.push(`required skill is unavailable: ${s}`);let o=n.requiredCapabilities;if(o)for(let s of["streaming","durableTasks","inputRequired","cancellation","artifacts"])o[s]===!0&&e.capabilities[s]!=="supported"&&t.push(`required capability ${s} is ${e.capabilities[s]}`);return t}i(zR,"localAgentReasons");function Es(e){return Hi(e),Rr(e).map(n=>{let t=zR(n,e);return{descriptor:n,dispatchability:{status:t.length===0?"dispatchable":"unavailable",checkedAt:new Date().toISOString(),reasons:t}}}).filter(n=>n.dispatchability.status==="dispatchable")}i(Es,"runtimeLocalListings");function VR(e,n,t,r,o,s){let a=new Map,u=!1,c=i((R,I)=>{if(u)return Promise.reject(new Error("KodaX runtime is closed"));let y=a.get(R);if(y)return y.then(f=>{let C=f.rootControl().list().maxConcurrentThreads;if(I!==void 0&&I!==C)throw new Error(`Actor concurrency for ${R} is already ${C}; cannot change it to ${I}.`);return f});let x=(async()=>{let f=await e.storage.peek(R);if(!f)throw new Error(`Session not found: ${R}`);let C=f.actorSnapshot?.maxConcurrentThreads;if(C!==void 0&&I!==void 0&&C!==I)throw new Error(`Persisted Actor concurrency for ${R} is ${C}; requested ${I}.`);let m={async load(){return(await e.storage.peek(R))?.actorSnapshot},save(l,v){return e.storage.saveActorSnapshot(R,l,v)}},k=new _a({sessionId:R,store:m,maxConcurrentThreadsPerSession:I??C,owner:{ownerId:`actor_${Qe().replace(/-/g,"")}`,runtimeId:n.runtimeId,pid:process.pid,startedAt:n.startedAt,livenessId:t.id,livenessPort:t.port},isOwnerAlive:_o,onHealthChanged:i(l=>s?.(R,l),"onHealthChanged"),...r?{executor:Oa({plane:r,context:o??{actorId:`runtime:${R}`}})}:{}});try{return await k.initialize(),s?.(R,k.health()),k}catch(l){if(!k.ownsDurableFence())throw l;try{await k.close("Actor initialization cleanup")}catch(v){throw new AggregateError([l,v],`Actor session ${R} initialization and owner cleanup both failed.`)}throw l}})();return a.set(R,x),x.catch(()=>a.delete(R)),x},"claimSession"),p=i(async(R,I)=>{let y=c(R,I),x=a.get(R),f=await y;if(!await e.storage.isArchived(R))return f;throw await f.close("archived Session execution rejected"),a.get(R)===x&&a.delete(R),$s(R)},"forSession");return{forSession:p,async root(R){return(await p(R)).rootControl()},async activeTurns(R){return(await Promise.all(R.map(async y=>{if(await e.storage.isArchived(y))return;let x=a.get(y);if(x)return{sessionId:y,snapshot:(await x).rootControl().list()};let f=await e.storage.peek(y);if(f?.actorSnapshot&&!(f.actorSnapshot.schemaVersion===2&&f.actorSnapshot.owner!==void 0&&!await _o(f.actorSnapshot.owner)))return{sessionId:y,snapshot:f.actorSnapshot}}))).flatMap(y=>{if(!y)return[];let{sessionId:x,snapshot:f}=y;return f.actors.flatMap(C=>C.currentTurnId&&C.path!=="/root"?[{sessionId:x,actorPath:C.path,turnId:C.currentTurnId,kind:C.kind}]:[])})},async mutateSessionFile(R,I,y){if(u)throw new Error("KodaX runtime is closed");let x=a.get(R)??c(R),f=await x,m=f.rootControl().list();if(I==="mutate"&&await e.storage.isArchived(R))throw await f.close("archived Session mutation rejected"),a.get(R)===x&&a.delete(R),$s(R);let k=m.actors.some(v=>v.currentTurnId!==void 0);if((I==="archive"||I==="unarchive")&&k)throw Zn(`Session has active Agent turns and cannot be moved: ${R}`,m.revision);I==="delete"&&k&&await f.quiesce("session deleted");let l=await y(f.ownerId());return I==="delete"?f.disposeAfterStoreRemoval("session deleted"):I!=="mutate"&&await f.close(`session ${I}d`),I!=="mutate"&&a.get(R)===x&&a.delete(R),l},async close(R){u=!0;let I=await Promise.allSettled([...a.values()]),x=(await Promise.allSettled(I.flatMap(f=>f.status==="fulfilled"?[f.value.close(R)]:[]))).flatMap(f=>f.status==="rejected"?[f.reason]:[]);if(x.length===1)throw x[0];if(x.length>1)throw new AggregateError(x,"Actor registry cleanup failed.");a.clear()}}}i(VR,"createRuntimeAgentActorRegistry");function GR(e,n,t,r,o,s){let a=i((u,c)=>o.run(u,async()=>(s(),await r.loadExecutable(u),c(await t.root(u)))),"withRoot");return{execution:n,enabled:e!==void 0,async listDispatchable(u){s(),Hi(u);let c=Rr(u);return e?e.listDispatchable(u,c):Es(u)},async describe(u,c){Hi(c);let p=Rr(c);return e?e.describe(u,c,p):Es(c).find(R=>R.descriptor.agentId===u)},async preflight(u){Hi(u.query);let c=Rr(u.query);if(e)return e.preflight(u,c);let p=Es(u.query).find(I=>I.descriptor.agentId===u.agentId),R=p?[]:["agent is not dispatchable"];return p&&u.expectedConfigurationRevision!==void 0&&p.descriptor.configurationRevision!==u.expectedConfigurationRevision&&R.push("configuration revision changed"),{ok:p!==void 0&&R.length===0,...p?{descriptor:p.descriptor}:{},dispatchability:p?.dispatchability??{status:"unavailable",checkedAt:new Date().toISOString(),reasons:R},reasons:R}},async tree(u){return a(u,c=>c.list())},async detail(u,c){return a(u,p=>p.get(c))},async spawn(u,c){return a(u,p=>p.spawn(c))},async send(u,c,p,R){await a(u,I=>I.send(c,p,R))},async followup(u,c,p,R){return a(u,I=>I.followup(c,p,void 0,R))},async interrupt(u,c,p){await a(u,R=>R.interrupt(c,p))},async output(u,c,p){return a(u,R=>R.output(c,p))},async events(u,c){return a(u,p=>p.eventSnapshot(c))},async wait(u,c,p,R){return(await a(u,y=>y)).wait(c,p,R?.signal)}}}i(GR,"createRuntimeAgentService");function Ps(){return new Error("Runtime external agent executor plane is not enabled.")}i(Ps,"externalAgentsDisabled");function YR(e){return{agentRegistrations:e?.registrations??{async list(){return[]},async upsert(){throw Ps()},async setEnabled(){throw Ps()},async remove(){throw Ps()}}}}i(YR,"createRuntimeAdminService");function QR(e){return{async snapshot(){let n=await e.listRuns();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(dm),runs:n,pendingPermissions:await e.permissions.service.listPending(),workflows:await e.workflows.list({})}},async preflight(){let n=await e.listRuns(),t=n.filter(R=>Cn(R.phase)||R.phase==="unknown"),r=n.filter(R=>R.phase==="queued"),o=(await e.workflows.list({})).filter(R=>R.status!=="completed"&&R.status!=="failed"&&R.status!=="denied"&&R.status!=="stopped"),s=(await e.sessionManager.listSessions({includeArchived:!0})).filter(e.sessionAdmission.admitsSummary).map(R=>R.id),a=await e.actors.activeTurns(s),u=await e.permissions.service.listPending(),c=await e.userInputs.service.listPending(),p=[];return t.length>0&&p.push("active_runs"),r.length>0&&p.push("queued_runs"),o.length>0&&p.push("active_workflows"),a.length>0&&p.push("active_agent_turns"),a.length>0&&p.push("active_agent_tasks"),(u.length>0||c.length>0)&&p.push("pending_interactions"),{runtimeId:e.identity.runtimeId,clientCount:0,activeRuns:t,queuedRuns:r,activeWorkflows:o,activeAgentTurns:a,activeAgentTasks:a,pendingPermissions:u,pendingUserInputs:c,blockers:p,canStop:p.length===0}}}}i(QR,"createRuntimeStatusService");function ZR(e){return{latestContextBudget(n){return xs(e,"context.budget.snapshot",n)},latestToolExposure(n){return xs(e,"tool.exposure.planned",n)},latestProviderCacheDiagnostic(n){return xs(e,"provider.cache.diagnostics",n)}}}i(ZR,"createRuntimeDiagnosticsService");async function xs(e,n,t){let r=t?.contextKind??(t?.agentId===void 0?"root":void 0),o=r==="child"||t?.agentId!==void 0,s={type:n,...o?{aggregateSessions:!0}:{},...o&&t?.sessionId!==void 0?{aggregateRootSessionId:t.sessionId}:{},...!o&&t?.sessionId!==void 0?{sessionId:t.sessionId}:{},...t?.runId!==void 0?{runId:t.runId}:{}};return[...await e.replay(s)].reverse().find(c=>{let p=c.payload;if(p===null||typeof p!="object"||Array.isArray(p))return t?.contextKind===void 0&&t?.agentId===void 0;let R=p,I=R.contextKind==="child"?"child":"root";if(r!==void 0&&I!==r||t?.agentId!==void 0&&R.agentId!==t.agentId)return!1;if(!o||t?.sessionId===void 0)return!0;let y=`${t.sessionId}/agent/`;return typeof R.contextId!="string"?!1:t.agentId===void 0?R.contextId.startsWith(y):R.contextId===`${y}${encodeURIComponent(t.agentId)}`})?.payload??null}i(xs,"latestRuntimeDiagnosticPayload");function Cn(e){return e==="running"||e==="waiting_agent"||e==="recovering"||e==="waiting_permission"||e==="waiting_user_input"}i(Cn,"isActiveRunPhase");function pl(e,n){let t=e.get(n.sessionId);if(!t)return;let r=t.filter(o=>o!==n.runId);r.length===0?e.delete(n.sessionId):e.set(n.sessionId,r)}i(pl,"removeQueuedRun");function eh(e,n,t){let r=oe(n)?n:void 0;if((e==="assistant.delta"||e==="thinking.delta")&&typeof r?.text=="string")return{key:Dr(e,n,t),mode:"append_text",bytes:Buffer.byteLength(r.text,"utf-8")};if(e==="tool.progress"&&typeof r?.partialJson=="string"){let o=oe(r.meta)?r.meta:void 0,s=typeof o?.toolId=="string"?o.toolId:"";return s.length===0?void 0:{key:Dr(e,n,t,`tool:${s}`),mode:"append_tool_input",bytes:Buffer.byteLength(r.partialJson,"utf-8")}}if(e==="tool.progress"&&oe(r?.update)){let o=typeof r.update.id=="string"?r.update.id:"";return o.length===0?void 0:{key:Dr(e,n,t,`progress:${o}`),mode:"latest",bytes:Cs(n),preserveFirst:!0}}if(e==="run.progress"&&r?.kind==="managed_task_status")return{key:Dr(e,n,t),mode:"latest",bytes:Cs(n)};if(e==="workflow.updated"){let o=oe(r?.snapshot)?r.snapshot:void 0,s=typeof o?.runId=="string"?o.runId:"";return s.length===0?void 0:{key:Dr(e,n,t,`workflow:${s}`),mode:"latest",bytes:Cs(n)}}}i(eh,"runtimeEventMergePlan");function Cs(e){try{return Buffer.byteLength(JSON.stringify(e)??"","utf-8")}catch{return _s}}i(Cs,"runtimeEventPayloadBytes");function kt(e){let n=JSON.stringify(e);if(n===void 0)throw new Error("Runtime event emission is not serializable");return Buffer.byteLength(n,"utf-8")}i(kt,"runtimePendingEmissionBytes");function nh(e){let n;try{n=JSON.stringify(e)}catch(t){throw new Error("Runtime event payload is not serializable",{cause:t})}if(n===void 0)throw new Error("Runtime event payload is not serializable");return JSON.parse(n)}i(nh,"snapshotRuntimeEventPayload");function Dr(e,n,t,r=""){let o=oe(n)?n:void 0,s=oe(o?.meta)?o.meta:void 0,a=oe(s?.workflowCorrelation)?s.workflowCorrelation:void 0,u=[s?.contextKind,s?.contextId,s?.parentContextId,s?.agentId,s?.childAgentId,s?.parentToolId,a?.workflowRunId,a?.childAgentId,s?.liveOnly===!0?"live":""].map(c=>typeof c=="string"?c:"").join("");return[t.sessionId,t.runId,t.turnId??"",e,u,r].join("\0")}i(Dr,"runtimeEventMergeKey");function th(e,n){let t=e.merge;if(t===void 0)return n;let r=t.mode,o=oe(e.payload)?e.payload:{},s=oe(n.payload)?n.payload:{};return r==="append_text"?{...e,payload:{...o,...s,text:`${o.text??""}${s.text??""}`},merge:{...t,bytes:t.bytes+(n.merge?.bytes??0)}}:r==="append_tool_input"?{...e,payload:{...o,...s,partialJson:`${o.partialJson??""}${s.partialJson??""}`},merge:{...t,bytes:t.bytes+(n.merge?.bytes??0)}}:n}i(th,"mergeRuntimeEventEmissions");function rh(e){let n=!1,t=[],r=new Map,o=new Map,s=[],a=[],u=new Map,c=new Set,p=new Set,R=0,I,y=new Map,x=new Map,f,C=!1,m=!1,k=0,l=0,v=i((E,A)=>`${E}\0${A}`,"runtimeRunProjectionKey"),h=i((E,A)=>A?!(A.sessionId!==void 0&&E.sessionId!==A.sessionId||A.runId!==void 0&&E.runId!==A.runId||A.type!==void 0&&!(Array.isArray(A.type)?A.type:[A.type]).includes(E.type)):!0,"matches"),P=i(E=>{t.push(E),t.length>Bi&&t.splice(0,t.length-Bi)},"remember"),T=i(E=>{for(let A of[...p])if(h(E,A.filter))try{A.listener(E)}catch(H){we({source:"runtime.events",level:"error",message:`Runtime event listener failed for ${E.type}`,detail:{eventId:E.id,error:$e(H)}})}},"notifyOne"),_=i(E=>{if(a.push(...E),!m){m=!0;try{for(;k<a.length;){let A=a[k];k+=1,A!==void 0&&T(A)}}finally{a.splice(0,k),k=0,m=!1}}},"notify"),N=i((E,A,H)=>E.length===0?[]:E.map((X,ee)=>{let ge=A+ee;return{id:`evt_${ge}_${Qe().replace(/-/g,"").slice(0,8)}`,seq:ge,cursor:{sessionId:X.scope.sessionId,journalEpoch:H,seq:ge},time:X.time,sessionId:X.scope.sessionId,runId:X.scope.runId,...X.scope.turnId!==void 0?{turnId:X.scope.turnId}:{},type:X.type,payload:X.payload}}),"createEvents"),q=i((E,A,H)=>{let X=y.get(E);if(X!==void 0)throw X;try{return e.commitEvents(E,A,H)}catch(ee){throw ee instanceof qr&&(y.set(E,ee),x.delete(E),de(),Te(E),Pe(E),s.some(ge=>!y.has(ge.scope.sessionId)&&!x.has(ge.scope.sessionId))&&je()),ee}},"commitEvents"),te=i(E=>{for(let A of E){o.set(A.sessionId,A.cursor);let H=r.get(A.sessionId)??gl();r.set(A.sessionId,H),ih(H,A),P(A),Ks(A.type)&&u.delete(v(A.sessionId,A.runId))}},"applyAndRemember"),de=i(()=>{I!==void 0&&(clearTimeout(I),I=void 0)},"clearScheduledFlush"),Ie=i(E=>{let A=E.map(H=>s[H]).filter(H=>H!==void 0);for(let H of[...E].sort((X,ee)=>ee-X))s.splice(H,1);return R=Math.max(0,R-A.reduce((H,X)=>H+(X.merge?.bytes??0),0)),l=Math.max(0,l-A.reduce((H,X)=>H+kt(X),0)),A},"removePendingIndices"),Te=i(E=>{Ie(s.flatMap((A,H)=>A.scope.sessionId===E?[H]:[]))},"removePendingSession"),Pe=i(E=>{let A=`${E}\0`;for(let H of u.keys())H.startsWith(A)&&u.delete(H)},"clearPreservedLatestKeys"),be=i(()=>[...new Set(s.map(E=>E.scope.sessionId))],"pendingSessionIds"),ve=i(E=>{let A=[],H;for(let X=0;X<s.length;X+=1){let ee=s[X];if(ee?.scope.sessionId===E){if(H??=ee.scope.runId,ee.scope.runId!==H)break;A.push(X)}}return{indices:A,emissions:A.map(X=>s[X])}},"nextSessionRunBatch"),Fe=i(E=>{let A=y.get(E);if(A!==void 0)throw A;for(;;){let H=ve(E);if(H.emissions.length===0)return;let X;try{X=q(E,H.emissions.length,(ee,ge)=>N(H.emissions,ee,ge))}catch(ee){throw y.has(E)||(x.set(E,$e(ee)),de()),ee}x.delete(E),Ie(H.indices),C=!1,te(X),_(X)}},"flushSession"),Ce=i((E,A=!0)=>{de();let H=E===void 0?be():[E],X;for(let ee of H)if(!(!A&&(y.has(ee)||x.has(ee))))try{Fe(ee)}catch(ge){X??=ge}if(s.some(ee=>!y.has(ee.scope.sessionId)&&!x.has(ee.scope.sessionId))&&je(),X!==void 0)throw X},"flushPending"),je=i(()=>{n||I===void 0&&(I=setTimeout(()=>{if(I=void 0,!n)try{Ce(void 0,!1)}catch(E){C||(C=!0,we({source:"runtime.persistence",level:"error",message:"Failed to persist coalesced runtime events",detail:E}))}},gR),I.unref?.())},"scheduleFlush"),Ge=i(E=>{try{Ce(E)}catch(A){C||(C=!0,we({source:"runtime.persistence",level:"error",message:"Failed to persist coalesced runtime events",detail:A}))}},"flushPendingSafely"),cn=i(E=>{let A=q(E.scope.sessionId,1,(H,X)=>N([E],H,X));te(A),_(A)},"commitEmissionDirectly"),an=i(E=>{let A=E.merge;if(A?.mode==="latest"){for(let H=s.length-1;H>=0;H-=1){let X=s[H];if(X?.merge===void 0||X.scope.sessionId!==E.scope.sessionId||X.scope.runId!==E.scope.runId)break;if(X.merge.mode==="latest"&&X.merge.key===A.key){s.splice(H,1),R=Math.max(0,R-X.merge.bytes),l=Math.max(0,l-kt(X));break}}s.push(E),R+=A.bytes,l+=kt(E)}},"replacePendingLatest"),In=i(E=>{let A=E.merge;if(A?.mode!=="latest"||A.preserveFirst!==!0)return!1;let H=v(E.scope.sessionId,E.scope.runId),X=u.get(H)??new Set;return X.has(A.key)?!1:(X.add(A.key),u.set(H,X),!0)},"shouldPreserveFirstLatest"),rn=i(E=>{let A=0,H=0,X=0;for(let ee of s)ee.scope.sessionId===E&&(A+=1,H+=kt(ee),X+=ee.merge?.bytes??0);return{count:A,bytes:H,mergeBytes:X}},"pendingSessionMetrics"),nn=i((E,A,H)=>{if(n)throw new Error("KodaX runtime event bus is closed");let X=y.get(H.sessionId);if(X!==void 0)throw X;let ee=x.get(H.sessionId);if(ee!==void 0)throw ee;let ge=nh(A),D=eh(E,ge,H),U={type:E,payload:ge,scope:H,time:new Date().toISOString(),...D!==void 0?{merge:D}:{}},le=kt(U);if(le>sl){Ce(H.sessionId),cn(U);return}let G=rn(H.sessionId);if((G.count>=fR||G.bytes+le>sl)&&Ce(H.sessionId),D===void 0){s.push(U),l+=le,Ge(H.sessionId);return}if(D.mode==="latest"){if(In(U)){s.push(U),R+=D.bytes,l+=le,Ge(H.sessionId);return}an(U)}else{let he=s.at(-1),S=he?.merge?.key===D.key&&he.merge.mode===D.mode&&he.scope.sessionId===H.sessionId&&he.scope.runId===H.runId;if(S&&he.merge.bytes+D.bytes>_s){Ge(H.sessionId);let M=y.get(H.sessionId);if(M!==void 0)throw M;let O=x.get(H.sessionId);if(O!==void 0)throw O;s.push(U),R+=D.bytes,l+=le}else if(S){let M=th(he,U);R+=(M.merge?.bytes??0)-he.merge.bytes,l+=kt(M)-kt(he),s[s.length-1]=M}else s.push(U),R+=D.bytes,l+=le}G.mergeBytes+D.bytes>=_s?Ge(H.sessionId):je()},"enqueue"),d=i(E=>{if(E===void 0){Ce();return}let A=new Set;for(let X of s)E.sessionId!==void 0?X.scope.sessionId===E.sessionId&&A.add(X.scope.sessionId):E.runId!==void 0&&X.scope.runId===E.runId&&A.add(X.scope.sessionId);if(E.sessionId!==void 0)A.add(E.sessionId);else if(E.runId!==void 0&&E.aggregateSessions!==!0&&(y.size>0||x.size>0)){let X=e.eventRunSessionId(E.runId);X!==void 0&&A.add(X)}let H;for(let X of A)try{Ce(X)}catch(ee){H??=ee}if(H!==void 0)throw H},"flushEventFilter"),b={subscribe(E,A){if(n)throw new Error("KodaX runtime event bus is closed");d(E);let H={filter:E,listener:A};return p.add(H),{close(){p.delete(H),queueMicrotask(()=>{if(!n)try{d(E)}catch(X){C||(C=!0,we({source:"runtime.persistence",level:"error",message:"Failed to persist coalesced runtime events",detail:X}))}})}}},async replay(E){d(E);let A=e.replay(E),H=E?.aggregateSessions===!0?void 0:E?.sessionId??E?.after?.sessionId??(E?.runId!==void 0?A.find(D=>h(D,E))?.sessionId??t.find(D=>h(D,E))?.sessionId:void 0),X=H===void 0?void 0:e.currentSessionCursor(H),ee=new Map;for(let D of A)ee.set(D.id,D);if(E?.aggregateSessions!==!0)for(let D of t)ee.set(D.id,D);let ge=[...ee.values()].filter(D=>h(D,E)&&(X===void 0||D.cursor.sessionId===X.sessionId&&D.cursor.journalEpoch===X.journalEpoch)&&(E?.after===void 0||D.seq>E.after.seq)).sort((D,U)=>rm(D,U,E));return E?.limit===void 0?ge:E.after===void 0?ge.slice(-E.limit):ge.slice(0,E.limit)}};return{service:b,scopedService:{subscribe(E,A){let H=Il(E,e);return b.subscribe({...E,sessionId:H},A)},async replay(E){bh(E?.limit);let A=Il(E,e);return Ih(E?.after),b.replay({...E,sessionId:A})}},subscribeClose(E){return n?(E(),{close(){}}):(c.add(E),{close(){c.delete(E)}})},emit(E,A,H){nn(E,A,H)},emitDurable(E,A,H,X){Ce(H.sessionId);let ee={type:E,payload:A,scope:H,time:new Date().toISOString()},ge=q(H.sessionId,1,(D,U)=>N([ee],D,U))[0];return X?.(),te([ge]),_([ge]),ge},projectSession(E){Ce(E);let A=r.get(E);return yl(A===void 0?gl():A)},currentSessionCursor(E){Ce(E);let A=o.get(E);if(A!==void 0)return A;let H=e.currentSessionCursor(E);return o.set(E,H),H},close(){if(n){if(f!==void 0)throw f;return}let E;try{Ce()}catch(A){E=$e(A)}finally{n=!0,de(),s.splice(0,s.length),R=0,l=0;for(let A of[...c])try{A()}catch(H){we({source:"runtime.events",level:"error",message:"Runtime event close listener failed.",detail:$e(H)})}c.clear();try{e.close()}catch(A){let H=$e(A);E??=H,we({source:"runtime.persistence",level:"error",message:"Failed to flush runtime events while closing",detail:H})}p.clear(),r.clear(),o.clear()}if(f=E,E!==void 0)throw E},retireSessionJournal(E){y.has(E)||Ce(E),e.retireSessionEventJournal(E),o.delete(E),r.delete(E)},restoreSessionJournal(E){e.restoreSessionEventJournal(E)},prepareSessionJournal(E){if(e.prepareSessionEventJournal(E)){y.delete(E),x.delete(E),o.delete(E),r.delete(E),Pe(E);for(let A=t.length-1;A>=0;A-=1)t[A]?.sessionId===E&&t.splice(A,1)}}}}i(rh,"createRuntimeEventBus");function gl(){return{assistantTextByRun:{},thinkingTextByRun:{},activeTools:new Map,pendingUserInputs:new Map,managedTasks:new Map,todo:void 0}}i(gl,"createRuntimeSessionLiveProjectionState");function ih(e,n){let t=oe(n.payload)?n.payload:void 0;if(!sh(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=Mi(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=Mi(n),o=e.activeTools.get(r)??Rl(e.activeTools,n.runId);o&&e.activeTools.set(o.key,{...o,progress:n.payload})}else if(n.type==="tool.sandbox"){let r=Mi(n),o=e.activeTools.get(r)??Rl(e.activeTools,n.runId);o&&e.activeTools.set(o.key,{...o,sandbox:n.payload})}else if(n.type==="tool.finished"){let r=Mi(n);if(!e.activeTools.delete(r))for(let[o,s]of e.activeTools)s.runId===n.runId&&e.activeTools.delete(o)}else if(n.type==="todo.updated")e.todo=n.payload;else if(n.type==="run.progress"&&t?.kind==="managed_task_status"){let r=ah(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(Ks(n.type)){delete e.assistantTextByRun[n.runId],delete e.thinkingTextByRun[n.runId];for(let[r,o]of e.activeTools)o.runId===n.runId&&e.activeTools.delete(r);for(let[r,o]of e.pendingUserInputs)o.runId===n.runId&&e.pendingUserInputs.delete(r);e.managedTasks.delete(n.runId)}}}i(ih,"applyRuntimeSessionEvent");var oh=new Set(["assistant.delta","thinking.delta","thinking.finished","tool.started","tool.progress","tool.sandbox","tool.finished","todo.updated"]);function sh(e,n){if(!oh.has(e))return!1;let t=oe(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=oe(t.workflowCorrelation)?t.workflowCorrelation:void 0;return typeof r?.workflowRunId=="string"&&r.workflowRunId.length>0||typeof r?.childAgentId=="string"&&r.childAgentId.length>0}i(sh,"isChildOwnedPrimaryLiveEvent");function yl(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()]}}i(yl,"snapshotRuntimeSessionLiveProjection");function ah(e){if(!(!oe(e)||typeof e.agentMode!="string"||typeof e.harnessProfile!="string"))return e}i(ah,"parseRuntimeManagedTaskStatus");function As(e,n){return e.sessionId===n.sessionId&&e.journalEpoch===n.journalEpoch&&e.seq===n.seq}i(As,"sameRuntimeSessionCursor");function Mi(e){let n=oe(e.payload)?e.payload:void 0,t=oe(n?.meta)?n.meta:void 0,r=oe(n?.tool)?n.tool:void 0,o=oe(n?.update)?n.update:void 0,s=oe(n?.result)?n.result:void 0,a=t?.toolId??t?.toolCallId??t?.toolUseId??r?.id??o?.id??s?.id??s?.toolCallId;return typeof a=="string"&&a.length>0?`${e.runId}:${a}`:`${e.runId}:${e.turnId??"turn"}:${e.id}`}i(Mi,"runtimeToolProjectionKey");function Rl(e,n){return[...e.values()].reverse().find(t=>t.runId===n)}i(Rl,"latestActiveToolForRun");function Ks(e){return e==="run.completed"||e==="run.failed"||e==="run.cancelled"||e==="run.interrupted"}i(Ks,"isTerminalRuntimeEvent");function dh(e,n){let t=e.homeDir?Y.resolve(e.homeDir):e.sessionsDir?Y.resolve(e.sessionsDir,".."):process.cwd(),r=e.sharedDaemonHost===!0?Y.join(t,".kodax","runtime","profiles",encodeURIComponent(e.profile??"default")):Y.join(t,".kodax","runtime"),o=Y.join(r,"runs"),s=Y.join(r,"session-events"),a=Y.join(r,"session-settings"),u=Y.join(r,"session-orders"),c=Y.join(r,"permission-grants.json"),p=Y.join(r,"run-status-index.json"),R=new Map,I=i(S=>Y.join(o,encodeURIComponent(S)),"runDir"),y=i(S=>Y.join(I(S),"events.jsonl"),"eventFile"),x=i(S=>Y.join(I(S),"events.watermark"),"eventWatermarkFile"),f=i(S=>Y.join(I(S),"event-journals.json"),"eventJournalsFile"),C=i(S=>Y.join(I(S),"status.json"),"statusFile"),m=i(S=>Y.join(a,`${encodeURIComponent(S)}.json`),"sessionSettingsFile"),k=i(S=>Y.join(u,`${encodeURIComponent(S)}.json`),"sessionOrderFile"),l=i(S=>Y.join(s,vh(S)),"sessionEventDir"),v=i(S=>Y.join(l(S),"sequence"),"sessionEventSequenceFile"),h=i(S=>Y.join(l(S),"journal.json"),"sessionEventJournalFile"),P=[],T=new Set,_=i(S=>{let M=v(S);if($.existsSync(M))try{let O=JSON.parse($.readFileSync(M,"utf-8"));if(Number.isSafeInteger(O)&&O>=0)return O}catch(O){we({source:"runtime.persistence",level:"warn",message:"Failed to read runtime event sequence cursor; recovering from event logs",detail:O})}},"readEventSequenceCursor"),N=i((S,M)=>{let O=0;if(!$.existsSync(o))return O;for(let K of $.readdirSync(o,{withFileTypes:!0})){if(!K.isDirectory())continue;let W=Y.join(o,K.name,"events.jsonl");if(!$.existsSync(W))continue;let Z=$.statSync(W).size,re=Math.min(Z,dl);for(;re>0;){let ne=Buffer.allocUnsafe(re),z=$.openSync(W,"r");try{$.readSync(z,ne,0,re,Z-re)}finally{$.closeSync(z)}let se=ne.toString("utf-8").split(/\r?\n/);re<Z&&se.shift();let ae=!1;for(let me of se)if(me.trim())try{let fe=JSON.parse(me);Oi(fe)&&fe.sessionId===S&&Pt(fe)&&fe.cursor.journalEpoch===M&&Number.isSafeInteger(fe.seq)&&(O=Math.max(O,fe.seq),ae=!0)}catch{}if(ae||re===Z)break;re=Math.min(Z,re*2)}}return O},"findMaxPersistedEventSeq"),q=i(S=>{let M=h(S);if($.existsSync(M)){let K;try{K=JSON.parse($.readFileSync(M,"utf-8"))}catch(W){we({source:"runtime.persistence",level:"warn",message:`Failed to read Session event journal metadata for ${S}; creating a new cursor epoch`,detail:W})}if(oe(K)&&K.version===1&&K.sessionId===S&&typeof K.journalEpoch=="string"&&K.journalEpoch.length>0)return K.journalEpoch}let O=Qe();return gn(M,{version:1,sessionId:S,journalEpoch:O}),O},"readSessionJournalEpochLocked"),te=i((S,M)=>{if(!Number.isSafeInteger(M)||M<=0)throw new Error("Runtime event sequence batch size must be positive");let O=q(S),K=_(S),W=R.get(S)??K??N(S,O),Z=Math.max(K??0,W),re=Z+1,ne=Z+M;return gn(v(S),ne),R.set(S,ne),{firstSeq:re,journalEpoch:O}},"reserveEventSeqsLocked"),de=i((S,M)=>($.mkdirSync(l(S),{recursive:!0}),bn(v(S),()=>te(S,M))),"reserveEventSeqs"),Ie=i(S=>($.mkdirSync(l(S),{recursive:!0}),bn(v(S),()=>{let M=q(S),O=_(S),K=Math.max(O??0,R.get(S)??O??N(S,M));return R.set(S,K),{sessionId:S,journalEpoch:M,seq:K}})),"readCurrentSessionCursor"),Te=i(S=>{let M=h(S);if($.existsSync(M))try{let O=JSON.parse($.readFileSync(M,"utf-8"));if(oe(O)&&O.version===1&&O.sessionId===S&&typeof O.journalEpoch=="string"&&O.journalEpoch.length>0&&(O.retired===void 0||O.retired===!0))return O.retired===!0?void 0:O.journalEpoch;we({source:"runtime.persistence",level:"warn",message:`Invalid active Session event journal metadata for ${S}; excluding it from aggregate event replay`,detail:{file:M}});return}catch(O){we({source:"runtime.persistence",level:"warn",message:`Failed to read active Session event journal metadata for ${S}; excluding it from aggregate event replay`,detail:{file:M,error:$e(O)}});return}},"readActiveSessionJournalEpoch"),Pe=i(S=>{if(!$.existsSync(o))return 0;let M=0;for(let O of $.readdirSync(o,{withFileTypes:!0}))if(O.isDirectory())try{let K=Et(Y.join(o,O.name,"status.json"));if(K?.status.sessionId!==S)continue;M=Math.max(M,K.status.sessionOrder??0)}catch{}return M},"findMaxPersistedSessionOrder"),be=i((S,M,O)=>{if(T.has(S))return;T.add(S);let K=O.sessionId??"runtime",W=de(K,1),Z=W.firstSeq,re={id:`evt_persist_warn_${Z}_${Qe().replace(/-/g,"").slice(0,8)}`,seq:Z,cursor:{sessionId:K,journalEpoch:W.journalEpoch,seq:Z},time:new Date().toISOString(),sessionId:K,runId:O.runId??O.sessionId??"runtime",type:"runtime.warning",payload:{source:"runtime.persistence",message:M,...O.file!==void 0?{file:O.file}:{}}};P.push(re),P.length>Bi&&P.splice(0,P.length-Bi)},"pushPersistenceWarning"),ve=i((S,M,O)=>[...S,...P].filter(K=>O===void 0||Pt(K)&&K.cursor.sessionId===O.sessionId&&K.cursor.journalEpoch===O.journalEpoch).filter(K=>Sh(K,M)).sort((K,W)=>rm(K,W,M)),"withPersistenceWarnings"),Fe=i((S,M,O)=>{if(!$.existsSync(S))return[];let K=$.readFileSync(S,"utf-8"),W=[],Z=K.split(/\r?\n/);for(let re=0;re<Z.length;re+=1){let ne=Z[re]??"";if(ne.trim())try{let z=JSON.parse(ne);if(Oi(z)){if(!("cursor"in z))continue;if(!Pt(z)){be(`${S}:${re+1}:cursor`,`Skipped runtime event with an invalid Session cursor at ${Y.basename(S)}:${re+1}`,{runId:M,sessionId:z.sessionId,file:S});continue}if(O!==void 0&&(z.cursor.sessionId!==O.sessionId||z.cursor.journalEpoch!==O.journalEpoch))continue;W.push(z)}else be(`${S}:${re+1}:shape`,`Skipped malformed runtime event record at ${Y.basename(S)}:${re+1}`,{runId:M,file:S})}catch(z){be(`${S}:${re+1}:parse`,`Skipped malformed runtime event record at ${Y.basename(S)}:${re+1}: ${$e(z).message}`,{runId:M,file:S})}}return W},"readEventsFromFile"),Ce=i((S,M)=>{if($.statSync(S).size<=zl)return;let O=$.readFileSync(S,"utf-8").trimEnd().split(/\r?\n/),K=[],W=0,Z=O.length;for(let z=O.length-1;z>=0;z-=1){let se=O[z]??"";if(!se)continue;let ae=Buffer.byteLength(se,"utf-8")+1;if(K.length>0&&W+ae>yR)break;K.push(se),W+=ae,Z=z}K.reverse();let re=_i(x(M));if(re.invalid)throw new Error("Runtime event retention watermark is malformed");let ne=new Map(re.journals.map(z=>[JSON.stringify([z.sessionId,z.journalEpoch]),z]));for(let z of O.slice(0,Z))try{let se=JSON.parse(z);if(Oi(se)&&Pt(se)){let ae=JSON.stringify([se.cursor.sessionId,se.cursor.journalEpoch]),me=ne.get(ae);ne.set(ae,{sessionId:se.cursor.sessionId,journalEpoch:se.cursor.journalEpoch,droppedThrough:Math.max(me?.droppedThrough??0,se.seq)})}}catch{}gn(x(M),{version:2,journals:[...ne.values()].sort((z,se)=>z.sessionId.localeCompare(se.sessionId)||z.journalEpoch.localeCompare(se.journalEpoch))}),Ui(S,K.length>0?`${K.join(`
|
|
373
|
+
`)}
|
|
374
|
+
`:"")},"trimEventFile"),je=i(S=>{if(!$.existsSync(S))return 0;let M=$.openSync(S,"r"),O=0,K;try{if(O=$.fstatSync(M).size,O===0)return 0;let Z=Buffer.allocUnsafe(1);if($.readSync(M,Z,0,1,O-1),Z[0]===10)return O;let re=Math.min(O,dl);for(;K=Buffer.allocUnsafe(re),$.readSync(M,K,0,re,O-re),!(K.lastIndexOf(10)>=0||re===O);)re=Math.min(O,re*2)}finally{$.closeSync(M)}let W=O-K.length+K.lastIndexOf(10)+1;try{let Z=JSON.parse(K.subarray(K.lastIndexOf(10)+1).toString("utf-8"));if(Oi(Z))return $.appendFileSync(S,`
|
|
375
|
+
`,"utf-8"),O+1}catch{}return $.truncateSync(S,W),W},"repairIncompleteEventTail"),Ge=i(S=>{let M=S[0];if(M===void 0)return;if(S.some(Z=>Z.runId!==M.runId))throw new Error("Runtime event persistence batches must contain one Run");let O=I(M.runId),K=y(M.runId);$.mkdirSync(O,{recursive:!0});let W;try{bn(K,()=>{let Z=je(K),re=f(M.runId),ne=Sl(re);if(ne.invalid)throw new Error("Runtime Run event journal index is malformed");let z=new Map,se=!ne.exists;if(ne.exists)for(let me of ne.journals)z.set(JSON.stringify([me.sessionId,me.journalEpoch]),me);else{let me=_i(x(M.runId));if(me.invalid)throw new Error("Runtime Run event journal index cannot be recovered from a malformed watermark");for(let fe of me.journals)z.set(JSON.stringify([fe.sessionId,fe.journalEpoch]),fe);for(let fe of Fe(K,M.runId))Pt(fe)&&z.set(JSON.stringify([fe.cursor.sessionId,fe.cursor.journalEpoch]),{sessionId:fe.cursor.sessionId,journalEpoch:fe.cursor.journalEpoch})}for(let me of S){let fe=JSON.stringify([me.cursor.sessionId,me.cursor.journalEpoch]);z.has(fe)||(z.set(fe,{sessionId:me.cursor.sessionId,journalEpoch:me.cursor.journalEpoch}),se=!0)}se&&gn(re,{version:1,journals:[...z.values()].sort((me,fe)=>me.sessionId.localeCompare(fe.sessionId)||me.journalEpoch.localeCompare(fe.journalEpoch))});let ae=S.map(me=>`${JSON.stringify(me)}
|
|
376
|
+
`).join("");try{$.appendFileSync(K,ae,"utf-8")}catch(me){if(Kn(me)==="EISDIR")throw me;try{$.truncateSync(K,Z)}catch(fe){throw new qr(me,fe)}throw me}try{Ce(K,M.runId)}catch(me){W=me}})}catch(Z){if(!(Z instanceof Mt))throw Z;W=W===void 0?Z.cleanupError:new AggregateError([W,Z.cleanupError],"Runtime event trim and status-lock cleanup both failed")}return W},"appendEventBatch"),cn=i((S,M,O)=>{$.mkdirSync(l(S),{recursive:!0});let K,W,Z;try{Z=bn(v(S),()=>{let{firstSeq:ne,journalEpoch:z}=te(S,M),se=O(ne,z);if(se.length!==M||se.some((ae,me)=>ae.seq!==ne+me)||se.some(ae=>ae.sessionId!==S||ae.cursor.sessionId!==S||ae.cursor.journalEpoch!==z||ae.cursor.seq!==ae.seq))throw new Error("Runtime event batch must match its reserved sequence range");return W=se,K=Ge(se),se})}catch(ne){if(!(ne instanceof Mt)||W===void 0)throw ne;Z=W,K=K===void 0?ne.cleanupError:new AggregateError([K,ne.cleanupError],"Runtime event append and sequence-lock cleanup both failed")}let re=Z[0];if(K!==void 0&&re!==void 0){let ne=y(re.runId);try{be(`${ne}:trim`,`Failed to trim runtime event file: ${$e(K).message}`,{runId:re.runId,sessionId:re.sessionId,file:ne})}catch(z){we({source:"runtime.persistence",level:"warn",message:"Runtime events committed, but their trim warning could not be recorded",detail:z})}}return Z},"commitEventBatch"),an=i(S=>{let M=S?.after;if(M===void 0)return;let O=i(K=>{if(K.invalid)throw xe("Runtime event retention watermark is unreadable; request a fresh snapshot");let W=K.journals.find(Z=>Z.sessionId===M.sessionId&&Z.journalEpoch===M.journalEpoch);if(W!==void 0&&M.seq<W.droppedThrough)throw xe(`Runtime event history before sequence ${W.droppedThrough} is no longer retained`)},"assertWatermark");if(S.runId!==void 0){O(_i(x(S.runId)));return}if($.existsSync(o))for(let K of $.readdirSync(o,{withFileTypes:!0})){if(!K.isDirectory())continue;let W=Y.join(o,K.name),Z=_i(Y.join(W,"events.watermark"));if(Z.invalid){let re;try{re=Et(Y.join(W,"status.json"))?.status.sessionId}catch{re=void 0}let ne=Fe(Y.join(W,"events.jsonl")).some(ae=>ae.sessionId===M.sessionId),z=Sl(Y.join(W,"event-journals.json")),se=z.journals.some(ae=>ae.sessionId===M.sessionId&&ae.journalEpoch===M.journalEpoch);if(z.exists&&!z.invalid&&re!==M.sessionId&&!ne&&!se)continue}O(Z)}},"assertReplayCursorRetained"),In=i(S=>{let M=C(S);if($.existsSync(M))try{let O=im(JSON.parse($.readFileSync(M,"utf-8")));if(O)return O;be(`${M}:shape`,`Skipped malformed runtime status record at ${Y.basename(M)}`,{runId:S,file:M})}catch(O){be(`${M}:parse`,`Skipped malformed runtime status record at ${Y.basename(M)}: ${$e(O).message}`,{runId:S,file:M})}},"readIndexedRunStatus"),rn=i(S=>{try{let M=$.statSync(S,{bigint:!0});return{dev:M.dev.toString(),ino:M.ino.toString(),size:M.size.toString(),mtimeNs:M.mtimeNs.toString(),ctimeNs:M.ctimeNs.toString()}}catch(M){if(Kn(M)==="ENOENT")return null;throw M}},"readRuntimePathIdentity"),nn=i((S,M)=>S===null||M===null?S===M:S.dev===M.dev&&S.ino===M.ino&&S.size===M.size&&S.mtimeNs===M.mtimeNs&&S.ctimeNs===M.ctimeNs,"sameRuntimePathIdentity"),d=i(()=>{if(!$.existsSync(o))return{statuses:[],pendingRunStatuses:[],pendingOverflow:!1};let S=[],M=[],O=!1;for(let K of $.readdirSync(o,{withFileTypes:!0})){if(!K.isDirectory())continue;let W;try{W=decodeURIComponent(K.name)}catch{continue}let Z=In(W);if(Z!==void 0){S.push(Z);continue}if(M.length>=vs){O=!0;continue}M.push({runId:W,identity:rn(C(W))})}return{statuses:S,pendingRunStatuses:M,pendingOverflow:O}},"scanAllRunStatuses"),b=i((S,M)=>[...new Set(S)].filter(O=>Buffer.byteLength(O,"utf-8")<=Ss).slice(-M),"boundedRunIds"),B=i((S,M,O=S.pendingOverflow)=>{let K=[...S.statuses].sort((W,Z)=>et(W.status,Z.status));return{version:2,activeRunIds:b(K.filter(W=>!Ne(W.status.phase)).map(W=>W.status.runId),Bn),recentRunIds:b(K.map(W=>W.status.runId),Di),runsDirectory:M,pendingRunStatuses:S.pendingRunStatuses,requiresRescan:O}},"createRunStatusIndex"),E=i(S=>{if(!oe(S)||S.version!==2||!Array.isArray(S.activeRunIds)||!Array.isArray(S.recentRunIds)||!Array.isArray(S.pendingRunStatuses)||typeof S.requiresRescan!="boolean")return;let M=i((ne,z)=>{if(ne.length>z||!ne.every(ae=>typeof ae=="string"&&Buffer.byteLength(ae,"utf-8")<=Ss))return;let se=ne;return new Set(se).size===se.length?se:void 0},"parseIds"),O=M(S.activeRunIds,Bn),K=M(S.recentRunIds,Di),W=i(ne=>{if(ne===null)return null;if(!(!oe(ne)||![ne.dev,ne.ino,ne.size,ne.mtimeNs,ne.ctimeNs].every(se=>typeof se=="string"&&/^\d{1,32}$/.test(se))))return{dev:ne.dev,ino:ne.ino,size:ne.size,mtimeNs:ne.mtimeNs,ctimeNs:ne.ctimeNs}},"parseIdentity"),Z=W(S.runsDirectory);if(Z===void 0||S.pendingRunStatuses.length>vs)return;let re=[];for(let ne of S.pendingRunStatuses){if(!oe(ne)||typeof ne.runId!="string"||Buffer.byteLength(ne.runId,"utf-8")>Ss)return;let z=W(ne.identity);if(z===void 0)return;re.push({runId:ne.runId,identity:z})}if(new Set(re.map(ne=>ne.runId)).size===re.length)return O===void 0||K===void 0?void 0:{version:2,activeRunIds:O,recentRunIds:K,runsDirectory:Z,pendingRunStatuses:re,requiresRescan:S.requiresRescan}},"parseRunStatusIndex"),A=i(()=>{if(!$.existsSync(p))return;let S;try{S=$.openSync(p,"r");let M=$.fstatSync(S).size;if(M>pR)return;let O=Buffer.allocUnsafe(M),K=0;for(;K<M;){let W=$.readSync(S,O,K,M-K,K);if(W===0)return;K+=W}return E(JSON.parse(O.toString("utf-8")))}catch(M){Kn(M)!=="ENOENT"&&we({source:"runtime.persistence",level:"warn",message:"Runtime run-status index is invalid; rebuilding it once",detail:M});return}finally{S!==void 0&&$.closeSync(S)}},"readRunStatusIndex"),H=i(S=>S.every(M=>nn(M.identity,rn(C(M.runId)))),"pendingRunStatusesUnchanged"),X=i(S=>!S.requiresRescan&&nn(S.runsDirectory,rn(o))&&H(S.pendingRunStatuses),"runStatusIndexIsCurrent"),ee=i(()=>{let S,M=!1;for(let O=0;O<3;O+=1){let K=rn(o),W=d();M||=W.pendingOverflow;let Z=rn(o),re=nn(K,Z)&&H(W.pendingRunStatuses);if(S=B(W,Z,!re||W.pendingOverflow),re)break}return S===void 0&&(S=B({statuses:[],pendingRunStatuses:[],pendingOverflow:!0},rn(o),!0)),M&&we({source:"runtime.persistence",level:"warn",message:"Runtime run-status recovery found more than 1000 missing or malformed status files; startup performed one fail-closed compatibility scan",detail:{runsDir:o,trackedPendingLimit:vs}}),gn(p,S),S},"rebuildRunStatusIndexLocked"),ge=i(()=>{let S=A();return S!==void 0&&X(S)?S:ee()},"ensureRunStatusIndexLocked"),D=new Map,U,le=i(S=>{U=S.requiresRescan?rn(p)??void 0:void 0},"rememberRunStatusIndexState"),G=i((S,M)=>{$.mkdirSync(r,{recursive:!0}),bn(p,()=>{let O=A()??ee();le(O);let K=[...D.values()].filter(fe=>fe.runId!==S.runId).sort(et),W=new Set(K.map(fe=>fe.runId)),Z=b([...O.recentRunIds.filter(fe=>fe!==S.runId&&!W.has(fe)),...K.map(fe=>fe.runId),S.runId],Di),re=M?O.activeRunIds.filter(fe=>fe!==S.runId&&!W.has(fe)):b([...O.activeRunIds.filter(fe=>fe!==S.runId&&!W.has(fe)),S.runId],Bn),ne=O.pendingRunStatuses.filter(fe=>fe.runId!==S.runId&&!W.has(fe.runId)),z=rn(o),se=O.requiresRescan||!nn(z,O.runsDirectory);if(re.length===O.activeRunIds.length&&Z.length===O.recentRunIds.length&&ne.length===O.pendingRunStatuses.length&&nn(z,O.runsDirectory)&&re.every((fe,Be)=>fe===O.activeRunIds[Be])&&Z.every((fe,Be)=>fe===O.recentRunIds[Be])){for(let fe of K)D.delete(fe.runId);return}let me={version:2,activeRunIds:re,recentRunIds:Z,runsDirectory:z,pendingRunStatuses:ne,requiresRescan:se};gn(p,me),le(me);for(let fe of K)D.delete(fe.runId)})},"updateRunStatusIndex"),he=i(S=>{if(Ne(S.phase)){D.delete(S.runId),D.set(S.runId,S),$.mkdirSync(r,{recursive:!0});try{bn(p,()=>{if(U!==void 0&&nn(U,rn(p)))return;let M=A()??ee();if(M.requiresRescan)le(M);else{let O={...M,requiresRescan:!0};gn(p,O),le(O)}})}catch(M){we({source:"runtime.persistence",level:"warn",message:"Runtime terminal status committed, but its derived run-status index could not be marked dirty",detail:{runId:S.runId,error:M}})}}},"finalizeRunStatusIndex");return{runtimeDir:r,commitEvents(S,M,O){return cn(S,M,O)},close(){$.mkdirSync(r,{recursive:!0}),bn(p,()=>{le(ee())}),D.clear()},nextSessionOrder(S){$.mkdirSync(u,{recursive:!0});let M=k(S);return bn(M,()=>{let O;if($.existsSync(M))try{let W=JSON.parse($.readFileSync(M,"utf-8"));typeof W=="number"&&Number.isSafeInteger(W)&&W>=0&&(O=W)}catch{O=void 0}let K=(O??Pe(S))+1;return gn(M,K),K})},currentSessionCursor(S){return Ie(S)},retireSessionEventJournal(S){$.mkdirSync(l(S),{recursive:!0}),bn(v(S),()=>{let M=q(S);gn(h(S),{version:1,sessionId:S,journalEpoch:M,retired:!0})})},restoreSessionEventJournal(S){$.mkdirSync(l(S),{recursive:!0}),bn(v(S),()=>{let M=h(S),O=JSON.parse($.readFileSync(M,"utf8"));if(!oe(O)||O.version!==1||O.sessionId!==S||typeof O.journalEpoch!="string"||O.journalEpoch.length===0||O.retired!==!0)throw new Error(`Retired Session event journal is invalid: ${S}`);gn(M,{version:1,sessionId:S,journalEpoch:O.journalEpoch})})},prepareSessionEventJournal(S){let M=h(S);return $.existsSync(M)?($.mkdirSync(l(S),{recursive:!0}),bn(v(S),()=>{let O=JSON.parse($.readFileSync(M,"utf8"));return!oe(O)||O.version!==1||O.sessionId!==S||O.retired!==!0?!1:(gn(M,{version:1,sessionId:S,journalEpoch:Qe()}),gn(v(S),0),R.set(S,0),!0)})):!1},eventRunSessionId(S){let M=Et(C(S));return M!==void 0?M.status.sessionId:Fe(y(S),S).find(Pt)?.sessionId},replay(S){let M=S?.runId===void 0?void 0:Fe(y(S.runId),S.runId);if(S?.aggregateSessions===!0){let re=M??(()=>{if(!$.existsSync(o))return[];let Be=[];for(let yn of $.readdirSync(o,{withFileTypes:!0}))yn.isDirectory()&&Be.push(...Fe(Y.join(o,yn.name,"events.jsonl"),yn.name));return Be})(),ne=new Map,z=re.filter(Be=>(ne.has(Be.sessionId)||ne.set(Be.sessionId,Te(Be.sessionId)),ne.get(Be.sessionId)===Be.cursor.journalEpoch)),se=S.aggregateRootSessionId,ae=se===void 0?void 0:Te(se),me=se===void 0?void 0:ae===void 0?new Set:new Set([...new Set(z.map(Be=>Be.runId))].filter(Be=>{let yn;try{yn=Et(C(Be))}catch(F){return we({source:"runtime.persistence",level:"warn",message:`Failed to read Runtime status for aggregate event replay: ${Be}`,detail:$e(F)}),!1}let g=z.some(F=>F.runId===Be&&F.sessionId===se&&F.cursor.journalEpoch===ae);return yn===void 0?g:yn.status.sessionId===se&&(yn.sessionJournalEpoch===ae||yn.sessionJournalEpoch===void 0&&g)})),fe=z.filter(Be=>me===void 0||me.has(Be.runId));for(let Be of fe)R.set(Be.sessionId,Math.max(R.get(Be.sessionId)??0,Be.seq));return ve(fe,S)}let O=S?.sessionId??(S?.runId===void 0?void 0:Et(C(S.runId))?.status.sessionId??M?.find(Pt)?.sessionId);if(S?.sessionId!==void 0&&O!==void 0&&S.sessionId!==O)throw Object.assign(new Error("Runtime event Run belongs to a different Session"),{code:"invalid_argument"});let K=S?.sessionId??O,W=K===void 0?void 0:Ie(K);if(S?.after!==void 0){if(K===void 0||K!==S.after.sessionId)throw xe("Runtime event cursor belongs to a different Session");if(W?.journalEpoch!==S.after.journalEpoch)throw xe("Runtime Session event journal changed; request a fresh snapshot");if(S.after.seq>W.seq)throw xe("Runtime event cursor is ahead of the current Session journal; request a fresh snapshot")}if(an(S),S?.runId)return ve(M??[],S,W);if(!$.existsSync(o))return ve([],S,W);let Z=[];for(let re of $.readdirSync(o,{withFileTypes:!0}))re.isDirectory()&&Z.push(...Fe(Y.join(o,re.name,"events.jsonl"),re.name,W));return ve(Z,S,W)},saveRunStatus(S){let M=I(S.runId);$.mkdirSync(M,{recursive:!0});let O=C(S.runId);return bn(O,()=>{let K=Et(O);if(K&&Ne(K.status.phase)||K?.owner!==void 0&&K.owner.ownerId!==n.ownerId&&!Ne(S.phase))return K.status;let W=K?.sessionJournalEpoch??Ie(S.sessionId).journalEpoch;return gn(O,{...S,_runtime:{revision:(K?.revision??0)+1,owner:n,sessionJournalEpoch:W}}),Ne(S.phase)?he(S):K===void 0&&G(S,!1),S})},requestRunStop(S,M,O){let K=C(S);return bn(K,()=>{let W=Et(K);if(W===void 0)throw new Error(`Runtime run not found: ${S}`);if(W.owner!==void 0&&W.owner.ownerId!==n.ownerId&&!Ne(W.status.phase))throw Zn(`Runtime ${n.runtimeId} does not own run ${S}`,W.revision);let Z=W.status,re=O===n.ownerId&&W.owner?.ownerId===n.ownerId,ne=re&&Z.phase==="unknown"&&Z.stop===void 0;if(Z.stop!==void 0||Z.phase==="unknown"&&!ne||Ne(Z.phase)||!ne&&Z.phase!=="queued"&&!Cn(Z.phase))return{accepted:!1,effectDeliveryAllowed:re&&Z.phase==="unknown"&&Z.stop?.state==="unknown"&&Z.terminal===void 0,status:Z,revision:W.revision};let z=new Date().toISOString(),{lifecycleError:se,...ae}=Z,me=ne?Z:ae,fe=Z.phase==="queued"?{...me,phase:"cancelled",stage:"terminal",stageChangedAt:z,activeSubtaskCount:0,endedAt:z,stop:{requestedAt:z,state:"confirmed",outcome:"cancelled",reason:M,resolvedAt:z},terminal:{revision:1,kind:"cancelled",code:"cancelled",effectOutcome:"none",message:M}}:{...me,phase:"unknown",stage:"unknown",stageChangedAt:z,error:"stop_outcome_unconfirmed",stop:{requestedAt:z,state:"unknown",outcome:"unknown",reason:M}},Be=W.revision+1;return gn(K,{...fe,_runtime:{revision:Be,owner:n}}),he(fe),{accepted:!0,effectDeliveryAllowed:re,status:fe,revision:Be}})},loadRunStatus(S){return In(S)},loadRunStatuses(){return $.mkdirSync(r,{recursive:!0}),bn(p,()=>{let S=ge(),O=[...new Set([...S.activeRunIds,...S.recentRunIds])].flatMap(z=>{let se=In(z);return se===void 0?[]:[se]}),K=new Map(O.map(z=>[z.status.runId,z])),W=S.activeRunIds.filter(z=>{let se=K.get(z);return se!==void 0&&!Ne(se.status.phase)}),Z=S.activeRunIds.flatMap(z=>{let se=K.get(z);return se!==void 0&&Ne(se.status.phase)?[se]:[]}).sort((z,se)=>et(z.status,se.status)),re=new Set(Z.map(z=>z.status.runId)),ne=b([...S.recentRunIds.filter(z=>K.has(z)&&!re.has(z)),...Z.map(z=>z.status.runId)],Di);if(W.length!==S.activeRunIds.length||ne.length!==S.recentRunIds.length||W.some((z,se)=>z!==S.activeRunIds[se])||ne.some((z,se)=>z!==S.recentRunIds[se])){let z={...S,activeRunIds:W,recentRunIds:ne};gn(p,z),le(z)}else le(S);return O})},loadSessionSettingsVersioned(S){let M=m(S);if(!$.existsSync(M))return{revision:0,value:{}};try{let O=JSON.parse($.readFileSync(M,"utf-8"));return oe(O)&&Number.isSafeInteger(O.revision)&&typeof O.revision=="number"&&O.revision>=0&&oe(O.value)?{revision:O.revision,value:Ll(O.value)}:{revision:0,value:Ll(O)}}catch(O){return be(`${M}:parse`,`Skipped malformed runtime session settings at ${Y.basename(M)}: ${$e(O).message}`,{sessionId:S,file:M}),{revision:0,value:{}}}},loadSessionSettings(S){return this.loadSessionSettingsVersioned(S).value},saveSessionSettingsVersioned(S,M){$.mkdirSync(a,{recursive:!0});let O=m(S);gn(O,{revision:M.revision,value:_w(M.value)})},saveSessionSettings(S,M){let O=this.loadSessionSettingsVersioned(S);this.saveSessionSettingsVersioned(S,{revision:O.revision+1,value:M})},loadPermissionGrants(){if(!$.existsSync(c))return{revision:0,value:[]};try{let S=JSON.parse($.readFileSync(c,"utf-8"));if(!oe(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(lw)}}catch(S){throw new Error(`Permission grant store is untrusted: ${$e(S).message}`)}},savePermissionGrants(S){$.mkdirSync(r,{recursive:!0}),gn(c,S)}}}i(dh,"createRuntimePersistence");function gn(e,n){Ui(e,`${JSON.stringify(n,null,2)}
|
|
377
|
+
`)}i(gn,"writeRuntimeJsonAtomic");function Ui(e,n){let t=`${e}.${process.pid}.${Qe()}.tmp`,r,o=!1,s;try{r=$.openSync(t,"wx",384),$.writeFileSync(r,n,"utf-8"),$.fsyncSync(r),$.closeSync(r),r=void 0,$.renameSync(t,e),o=!0}catch(u){s=u}let a=[];if(r!==void 0)try{$.closeSync(r)}catch(u){a.push(u)}try{$.rmSync(t,{force:!0})}catch(u){a.push(u)}if(!o)throw a.length>0?new AggregateError([s,...a],`Runtime atomic write and cleanup both failed: ${e}`):s;if(a.length===1)throw a[0];if(a.length>1)throw new AggregateError(a,`Runtime atomic-write cleanup failed: ${e}`)}i(Ui,"writeRuntimeTextAtomic");function bn(e,n){let t=`${e}.lock`,r=performance.now()+2e3,o=new Int32Array(new SharedArrayBuffer(4)),s=Qe();ph(t),gh(t,r);let a=`${t}.reclaim`,u=!$.existsSync(a)&&!$.existsSync(`${a}.cleanup`)&&!mh(t)&&hl(t,s);for(;!u;){try{u=ch(t,r,()=>{if(!fh(t,r))return!1;if($.existsSync(t)){if(Xs(t,Us(r))!=="gone")return!1;let y=Xn(t);if(y===void 0||(Ws(t,y.token),$.existsSync(t)))return!1}return hl(t,s)})}catch(y){if(Xn(t)?.token===s)try{Kr(t,s)}catch(x){throw lr(t,t,s,"blocking"),new AggregateError([y,x],"Runtime status lock acquisition and cleanup both failed")}throw y}if(u)break;if(performance.now()>=r)throw new qi(t);Atomics.wait(o,0,0,10)}let c=!1,p,R;try{p=n(),c=!0}catch(y){R=y}let I;try{Kr(t,s)}catch(y){lr(t,t,s,"blocking"),I=y}if(!c)throw I!==void 0&&(R instanceof qr?R.includeLockCleanupFailure(I):R=new AggregateError([R,I],"Runtime status operation and lock cleanup both failed")),R;if(I!==void 0)throw new Mt(I);return p}i(bn,"withRuntimeStatusFileLock");var Os=tm(process.pid),Qn=new Map,Br=new Set,dr=new Set;function lr(e,n,t,r,o){Qn.set(e,{family:n,token:t,kind:r,...o===void 0?{}:{fileIdentity:o}}),r==="candidate"&&Br.add(n)}i(lr,"rememberAbandonedRuntimeLockFile");function Wi(e,n){return{pid:process.pid,createdAt:Date.now(),token:e,...Os===void 0?{}:{processStartIdentity:Os},...n===void 0?{}:{ticket:n}}}i(Wi,"runtimeStatusLockRecord");function Xn(e){try{let n=JSON.parse($.readFileSync(e,"utf-8"));return!oe(n)||!Number.isSafeInteger(n.pid)||typeof n.pid!="number"||n.pid<=0||!Number.isFinite(n.createdAt)||typeof n.createdAt!="number"||typeof n.token!="string"||n.processStartIdentity!==void 0&&typeof n.processStartIdentity!="string"||n.ticket!==void 0&&(typeof n.ticket!="number"||!Number.isSafeInteger(n.ticket)||n.ticket<=0)?void 0:{pid:n.pid,createdAt:n.createdAt,token:n.token,...n.processStartIdentity===void 0?{}:{processStartIdentity:n.processStartIdentity},...n.ticket===void 0?{}:{ticket:n.ticket}}}catch{return}}i(Xn,"readRuntimeStatusLockRecord");function Xs(e,n=1e3){let t=Xn(e);if(t===void 0)return"unknown";try{try{process.kill(t.pid,0)}catch(o){return Kn(o)==="ESRCH"?"gone":"unknown"}if(typeof t.processStartIdentity!="string")return"alive";let r=t.pid===process.pid?Os:tm(t.pid,n);return r===void 0?"unknown":r===t.processStartIdentity?"alive":"gone"}catch{return"unknown"}}i(Xs,"runtimeStatusLockOwnerState");function hl(e,n,t){if(Br.has(e))return wl(e,n,t);let r=`${e}.candidate.${process.pid}.${Qe()}`,o,s=!1,a,u=!1,c=!1;try{o=$.openSync(r,"wx",384),$.writeFileSync(o,JSON.stringify(Wi(n,t)),"utf-8"),$.fsyncSync(o),$.closeSync(o),o=void 0;try{$.linkSync(r,e),u=!0,s=!0}catch(R){let I=Kn(R);if(I==="EEXIST")s=!0;else if(uh(I))s=!0,c=!0;else throw R}}catch(R){a=R}let p=[];if(o!==void 0)try{$.closeSync(o)}catch(R){p.push(R)}try{$.rmSync(r,{force:!0})}catch(R){lr(r,e,n,"candidate"),p.push(R)}if(!s)throw p.length>0?new AggregateError([a,...p],`Runtime status lock publication and cleanup both failed: ${e}`):a;return p.length>0&&(dr.has(e)||(dr.add(e),we({source:"runtime.status.lock",level:"warn",message:"Runtime status lock candidate cleanup was deferred; using exclusive creation for this lock family.",detail:{lockFile:e,cleanupErrors:p}}))),c?wl(e,n,t):u}i(hl,"createRuntimeStatusLockFile");function uh(e){return e==="EACCES"||e==="EPERM"||e==="ENOTSUP"||e==="EOPNOTSUPP"||e==="ENOSYS"||e==="EXDEV"}i(uh,"runtimeStatusHardLinkUnavailable");function wl(e,n,t){let r,o=!1,s,a;try{return r=$.openSync(e,"wx",384),o=!0,s=yh(r),$.writeFileSync(r,JSON.stringify(Wi(n,t)),"utf-8"),$.fsyncSync(r),$.closeSync(r),r=void 0,!0}catch(c){if(!o&&Kn(c)==="EEXIST")return!1;a=c}let u=[];if(r!==void 0)try{$.closeSync(r)}catch(c){u.push(c)}if(o)try{$.rmSync(e,{force:!0})}catch(c){lr(e,e,n,"unpublished",s),u.push(c)}throw u.length>0?new AggregateError([a,...u],`Runtime fallback status lock creation and cleanup both failed: ${e}`):a}i(wl,"createRuntimeStatusLockFileByExclusiveWrite");function ch(e,n,t){let r=Qe(),o=`${e}.choosing.${r}`,s=`${e}.claim.${r}`,a=!1,u,c;try{Ui(o,JSON.stringify(Wi(r)));let R=Ns(e,"claim").map(y=>Xn(y)?.ticket).filter(y=>y!==void 0),I=Math.max(0,...R)+1;if(!Number.isSafeInteger(I))throw new Error(`Runtime status lock ticket overflow: ${e}`);Ui(s,JSON.stringify(Wi(r,I))),Kr(o,r),lh(e,s,I,r,n),u=t(),a=!0}catch(R){c=R}let p=[];for(let R of[s,o])if($.existsSync(R))try{Kr(R,r)}catch(I){lr(R,e,r,"blocking"),p.push(I)}if(!a)throw p.length>0?new AggregateError([c,...p],"Runtime status acquisition and gate cleanup both failed"):c;if(p.length===1)throw p[0];if(p.length>1)throw new AggregateError(p,"Runtime status acquisition gate cleanup failed");return u}i(ch,"withRuntimeStatusAcquisitionGate");function lh(e,n,t,r,o){let s=new Int32Array(new SharedArrayBuffer(4));for(;;){let a=!1;for(let u of Ns(e,"choosing"))u!==`${e}.choosing.${r}`&&(Ls(u,o)||(a=!0));for(let u of Ns(e,"claim")){if(u===n)continue;let c=Xn(u);if(c?.ticket===void 0){a=!0;continue}c.ticket>t||c.ticket===t&&c.token.localeCompare(r)>0||Ls(u,o)||(a=!0)}if(!a)return;if(performance.now()>=o)throw new qi(e);Atomics.wait(s,0,0,10)}}i(lh,"waitForRuntimeStatusGateTurn");function Ns(e,n){let t=Y.dirname(e),r=`${Y.basename(e)}.${n}.`;try{return $.readdirSync(t).filter(o=>o.startsWith(r)&&/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(o.slice(r.length))).map(o=>Y.join(t,o))}catch(o){if(Kn(o)==="ENOENT")return[];throw o}}i(Ns,"runtimeStatusGateFiles");function mh(e){let n=Y.dirname(e),t=Y.basename(e),r=[`${t}.choosing.`,`${t}.claim.`];try{return $.readdirSync(n).some(o=>r.some(s=>o.startsWith(s)&&/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(o.slice(s.length))))}catch(o){if(Kn(o)==="ENOENT")return!1;throw o}}i(mh,"hasRuntimeStatusAcquisitionGateFiles");function Ls(e,n){if(!$.existsSync(e))return!0;if(Xs(e,Us(n))!=="gone")return!1;let t=Xn(e);return t===void 0?!1:(Ws(e,t.token),!$.existsSync(e))}i(Ls,"removeGoneRuntimeStatusGateFile");function fh(e,n){let t=`${e}.reclaim`;for(let r of[`${t}.cleanup`,t])if($.existsSync(r)&&!Ls(r,n))return!1;return!0}i(fh,"clearLegacyRuntimeReclaimGates");function ph(e){for(let[t,r]of[...Qn]){if(r.family!==e)continue;if(!$.existsSync(t)){Qn.delete(t);continue}if(r.kind==="unpublished"){if(r.fileIdentity===void 0)throw new Mt(new Error(`Runtime unpublished lock identity is unavailable: ${t}`));let s=Rh(t);if(!hh(s,r.fileIdentity)){Qn.delete(t);continue}try{$.rmSync(t,{force:!0}),Qn.delete(t)}catch(a){throw new Mt(a)}continue}if(Xn(t)?.token!==r.token){Qn.delete(t);continue}try{Kr(t,r.token),Qn.delete(t)}catch(s){if(r.kind==="blocking")throw s}}[...Qn.values()].some(t=>t.family===e&&t.kind==="candidate")||(Br.delete(e),dr.delete(e))}i(ph,"retryAbandonedRuntimeLockCleanup");function gh(e,n){let t=vl(e);for(let o of t){let s=Xn(o);if(!(s===void 0||Xs(o,Us(n))!=="gone"))try{Ws(o,s.token)}catch(a){lr(o,e,s.token,"candidate"),dr.has(e)||(dr.add(e),we({source:"runtime.status.lock",level:"warn",message:"A prior Runtime lock candidate could not be removed; using exclusive creation for this lock family.",detail:{lockFile:e,candidate:o,error:a}}))}}vl(e).length>0?Br.add(e):[...Qn.values()].some(o=>o.family===e&&o.kind==="candidate")||(Br.delete(e),dr.delete(e))}i(gh,"reconcileRuntimeStatusLockCandidates");function vl(e){let n=Y.dirname(e),t=`${Y.basename(e)}.candidate.`;try{return $.readdirSync(n).filter(r=>r.startsWith(t)&&/^\d+\.[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(r.slice(t.length))).map(r=>Y.join(n,r))}catch(r){if(Kn(r)==="ENOENT")return[];throw r}}i(vl,"runtimeStatusLockCandidateFiles");function yh(e){let n=$.fstatSync(e,{bigint:!0});return{device:n.dev,inode:n.ino}}i(yh,"runtimeStatusLockDescriptorIdentity");function Rh(e){try{let n=$.statSync(e,{bigint:!0});return{device:n.dev,inode:n.ino}}catch(n){if(Kn(n)==="ENOENT")return;throw n}}i(Rh,"runtimeStatusLockPathIdentity");function hh(e,n){return e!==void 0&&e.device===n.device&&e.inode===n.inode}i(hh,"runtimeStatusLockFileIdentityEquals");function Us(e){return Math.max(0,Math.min(1e3,Math.floor(e-performance.now())))}i(Us,"runtimeLockProbeBudget");function Ws(e,n){return!$.existsSync(e)||Xn(e)?.token!==n?!1:($.rmSync(e,{force:!0}),!0)}i(Ws,"tryRemoveRuntimeStatusLockOwnedBy");function Kr(e,n){if(!$.existsSync(e))throw new Error(`Runtime status lock ownership disappeared: ${e}`);if(Xn(e)?.token!==n)throw new Error(`Runtime status lock ownership changed: ${e}`);$.rmSync(e,{force:!0})}i(Kr,"removeRuntimeStatusLockOwnedBy");function tm(e,n=1e3){if(n<=0)return;if(process.platform==="linux")try{let o=$.readFileSync(`/proc/${e}/stat`,"utf-8"),s=o.slice(o.lastIndexOf(")")+2).trim().split(/\s+/);return s[19]===void 0?void 0:`linux:${s[19]}`}catch{return}if(process.platform==="win32"){let o=il("powershell.exe",["-NoProfile","-NonInteractive","-Command",`([DateTimeOffset](Get-Process -Id ${e} -ErrorAction Stop).StartTime).ToUnixTimeMilliseconds()`],{encoding:"utf-8",timeout:n,windowsHide:!0}),s=o.status===0?o.stdout.trim():"";return/^\d+$/.test(s)?`windows:${s}`:void 0}let t=il("ps",["-o","lstart=","-p",String(e)],{encoding:"utf-8",timeout:n,windowsHide:!0}),r=t.status===0?t.stdout.trim():"";return r===""?void 0:`${process.platform}:${r}`}i(tm,"readRuntimeProcessStartIdentity");function Kn(e){return oe(e)&&typeof e.code=="string"?e.code:void 0}i(Kn,"runtimeErrorCode");function Et(e){if(!$.existsSync(e))return;let n=JSON.parse($.readFileSync(e,"utf-8")),t=im(n);if(!t)throw new Error(`Runtime status record is malformed: ${e}`);return t}i(Et,"readPersistedRuntimeRunStatus");function Sl(e){if(!$.existsSync(e))return{journals:[],exists:!1,invalid:!1};try{let n=JSON.parse($.readFileSync(e,"utf8"));if(!oe(n)||n.version!==1||!Array.isArray(n.journals))return{journals:[],exists:!0,invalid:!0};let t=n.journals.filter(o=>oe(o)&&typeof o.sessionId=="string"&&o.sessionId.length>0&&typeof o.journalEpoch=="string"&&o.journalEpoch.length>0),r=new Set(t.map(o=>JSON.stringify([o.sessionId,o.journalEpoch])));return{journals:t,exists:!0,invalid:t.length!==n.journals.length||r.size!==t.length}}catch{return{journals:[],exists:!0,invalid:!0}}}i(Sl,"readRuntimeRunEventJournals");function _i(e){if(!$.existsSync(e))return{journals:[],invalid:!1};try{let n=$.readFileSync(e,"utf-8").trim(),t=JSON.parse(n);if(oe(t)&&t.version===2&&Array.isArray(t.journals)){let r=t.journals.filter(s=>oe(s)&&typeof s.sessionId=="string"&&s.sessionId.length>0&&typeof s.journalEpoch=="string"&&s.journalEpoch.length>0&&typeof s.droppedThrough=="number"&&Number.isSafeInteger(s.droppedThrough)&&s.droppedThrough>=0),o=new Set(r.map(s=>JSON.stringify([s.sessionId,s.journalEpoch])));return r.length===t.journals.length&&o.size===r.length?{journals:r,invalid:!1}:{journals:r,invalid:!0}}return oe(t)&&t.version===2?{journals:[],invalid:!0}:typeof t=="number"&&Number.isSafeInteger(t)&&t>=0||oe(t)&&typeof t.droppedThrough=="number"&&Number.isSafeInteger(t.droppedThrough)&&t.droppedThrough>=0&&(t.sessionId===void 0||typeof t.sessionId=="string")?{journals:[],invalid:!1}:{journals:[],invalid:!0}}catch{return{journals:[],invalid:!0}}}i(_i,"readRuntimeEventWatermark");function wh(e){if(e.sessionsDir!==void 0)return Y.resolve(e.sessionsDir);if(e.homeDir!==void 0)return Y.join(Y.resolve(e.homeDir),".kodax","sessions")}i(wh,"resolveRuntimeSessionsDir");function vh(e){return Buffer.from(e,"utf-8").toString("base64url")||"_"}i(vh,"encodeRuntimePathComponent");function Sh(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.after!==void 0&&e.seq<=n.after.seq):!0}i(Sh,"eventMatchesReplayFilter");function rm(e,n,t){return t?.aggregateSessions!==!0&&(t?.sessionId!==void 0||t?.runId!==void 0)?e.seq-n.seq||e.time.localeCompare(n.time)||e.id.localeCompare(n.id):e.time.localeCompare(n.time)||e.sessionId.localeCompare(n.sessionId)||e.seq-n.seq||e.id.localeCompare(n.id)}i(rm,"compareRuntimeReplayEvents");function Il(e,n){if(e?.sessionId!==void 0&&(typeof e.sessionId!="string"||e.sessionId.length===0))throw Object.assign(new Error("Runtime event Session scope is invalid"),{code:"invalid_argument"});if(e?.runId!==void 0&&(typeof e.runId!="string"||e.runId.length===0))throw Object.assign(new Error("Runtime event Run scope is invalid"),{code:"invalid_argument"});let t=typeof e?.sessionId=="string"&&e.sessionId.length>0,r=typeof e?.runId=="string"&&e.runId.length>0;if(!t&&!r)throw Object.assign(new Error("Runtime event access must specify a Session or Run scope"),{code:"invalid_argument"});if(r){let o=n.eventRunSessionId(e.runId);if(o===void 0)throw Object.assign(new Error(`Runtime event Run was not found: ${e.runId}`),{code:"invalid_argument"});if(t&&o!==e.sessionId)throw Object.assign(new Error("Runtime event Run belongs to a different Session"),{code:"invalid_argument"});return o}return e.sessionId}i(Il,"resolveRuntimeEventScope");function Ih(e){if(e!==void 0&&!(oe(e)&&typeof e.sessionId=="string"&&e.sessionId.length>0&&typeof e.journalEpoch=="string"&&e.journalEpoch.length>0&&typeof e.seq=="number"&&Number.isSafeInteger(e.seq)&&e.seq>=0))throw Object.assign(new Error("Runtime event cursor is invalid"),{code:"invalid_argument"})}i(Ih,"assertRuntimeEventCursorArgument");function bh(e){if(!(e===void 0||typeof e=="number"&&Number.isSafeInteger(e)&&e>0))throw Object.assign(new Error("Runtime event replay limit must be a positive safe integer"),{code:"invalid_argument"})}i(bh,"assertRuntimeEventReplayLimit");function Oi(e){return oe(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}i(Oi,"isRuntimeEvent");function Pt(e){let n=e.cursor;return oe(n)&&n.sessionId===e.sessionId&&typeof n.journalEpoch=="string"&&n.journalEpoch.length>0&&typeof n.seq=="number"&&Number.isSafeInteger(n.seq)&&n.seq>=0&&n.seq===e.seq}i(Pt,"runtimeEventHasValidCursor");function Ji(e){if(oe(e)&&!(typeof e.runId!="string"||typeof e.sessionId!="string"||!Ph(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,...xh(e.stage)?{stage:e.stage}:{},...typeof e.stageChangedAt=="string"?{stageChangedAt:e.stageChangedAt}:{},...Number.isSafeInteger(e.activeSubtaskCount)&&typeof e.activeSubtaskCount=="number"&&e.activeSubtaskCount>=0?{activeSubtaskCount:e.activeSubtaskCount}:{},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}:{},...oe(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}:{},...Pl(e.lifecycleError)!==void 0?{lifecycleError:Pl(e.lifecycleError)}:{},...xl(e.terminal)!==void 0?{terminal:xl(e.terminal)}:{},...bl(e.continuation)!==void 0?{continuation:bl(e.continuation)}:{},...kl(e.interruptInputs)!==void 0?{interruptInputs:kl(e.interruptInputs)}:{},...El(e.stop)!==void 0?{stop:El(e.stop)}:{}}}i(Ji,"parseRuntimeRunStatus");function im(e){let n=Ji(e);if(!n)return;let t=oe(e)&&oe(e._runtime)?e._runtime:void 0,r=kh(t?.owner),o=typeof t?.sessionJournalEpoch=="string"&&t.sessionJournalEpoch.length>0?t.sessionJournalEpoch:void 0,s=t!==void 0&&Number.isSafeInteger(t.revision)&&typeof t.revision=="number"&&t.revision>=0?t.revision:0;return{status:n,revision:s,...r!==void 0?{owner:r}:{},...o!==void 0?{sessionJournalEpoch:o}:{}}}i(im,"parsePersistedRuntimeRunStatus");function kh(e){if(!(!oe(e)||typeof e.ownerId!="string"||typeof e.runtimeId!="string"||!Number.isSafeInteger(e.pid)||typeof e.pid!="number"||e.pid<=0||typeof e.startedAt!="string"||e.livenessId!==void 0&&typeof e.livenessId!="string"||e.livenessPort!==void 0&&(!Number.isSafeInteger(e.livenessPort)||typeof e.livenessPort!="number")))return{ownerId:e.ownerId,runtimeId:e.runtimeId,pid:e.pid,startedAt:e.startedAt,...typeof e.livenessId=="string"?{livenessId:e.livenessId}:{},...typeof e.livenessPort=="number"?{livenessPort:e.livenessPort}:{}}}i(kh,"parseRuntimeRunOwner");function bl(e){if(!(!oe(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}}i(bl,"parseRuntimeContinuationStatus");function kl(e){if(e===void 0||!Array.isArray(e))return;let n=e.map(Eh);return n.every(t=>t!==void 0)?n:void 0}i(kl,"parseRuntimeInterruptInputStatuses");function El(e){if(!(!oe(e)||typeof e.requestedAt!="string"||e.state!=="unknown"&&e.state!=="confirmed"||e.outcome!=="unknown"&&e.outcome!=="cancelled"&&e.outcome!=="interrupted"&&e.outcome!=="completed"&&e.outcome!=="failed"||typeof e.reason!="string"))return{requestedAt:e.requestedAt,state:e.state,outcome:e.outcome,reason:e.reason,...typeof e.resolvedAt=="string"?{resolvedAt:e.resolvedAt}:{}}}i(El,"parseRuntimeRunStopStatus");function Pl(e){if(!(!oe(e)||e.code!=="actor_settlement_retrying"&&e.code!=="actor_settlement_not_persisted"||typeof e.message!="string"||typeof e.retryable!="boolean"))return{code:e.code,message:e.message,retryable:e.retryable}}i(Pl,"parseRuntimeRunLifecycleError");function Eh(e){if(!oe(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"||e.entryId!==void 0&&(typeof e.entryId!="string"||e.entryId.length===0))return;let n=oe(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}:{},...typeof e.entryId=="string"&&e.entryId.length>0?{entryId:e.entryId}:{},...n!==void 0?{origin:n}:{}}}i(Eh,"parseRuntimeInterruptInputStatus");function Ph(e){return e==="queued"||e==="running"||e==="waiting_agent"||e==="recovering"||e==="waiting_permission"||e==="waiting_user_input"||e==="unknown"||e==="completed"||e==="failed"||e==="cancelled"||e==="interrupted"}i(Ph,"isRuntimeRunPhase");function xh(e){return e==="queued"||e==="executing"||e==="waiting_agent"||e==="recovering"||e==="finalizing"||e==="terminal"||e==="unknown"||e==="starting"||e==="routing"||e==="preflight"||e==="round"||e==="worker"||e==="upgrade"||e==="verifying"}i(xh,"isRuntimeRunStage");function xl(e){if(oe(e)&&!(!Number.isSafeInteger(e.revision)||typeof e.revision!="number"||!Ch(e.kind)||!Ah(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}:{}}}i(xl,"parseRuntimeTerminalFact");function Ch(e){return e==="completed"||e==="failed"||e==="cancelled"||e==="interrupted"}i(Ch,"isRuntimeTerminalKind");function Ah(e){return e==="completed"||e==="run_failed"||e==="blocked"||e==="cancelled"||e==="interrupted"||e==="runtime_restarted"||e==="daemon_crashed"||e==="credential_unavailable"||e==="host_not_dispatched"||e==="host_outcome_unknown"||e==="actor_settlement_not_persisted"||e==="control_history_untrusted"}i(Ah,"isRuntimeTerminalCode");function Nr(e,n,t){return{runId:e.runId,sessionId:e.sessionId,...e.turnId!==void 0?{turnId:e.turnId}:{},phase:e.phase,...e.stage!==void 0?{stage:e.stage}:{},...e.stageChangedAt!==void 0?{stageChangedAt:e.stageChangedAt}:{},...e.activeSubtaskCount!==void 0?{activeSubtaskCount:e.activeSubtaskCount}:{},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.lifecycleError!==void 0?{lifecycleError:e.lifecycleError}:{},...e.terminal!==void 0?{terminal:e.terminal}:{},...e.stop!==void 0?{stop:e.stop}:{},...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(r=>({...r})),interruptInputOpen:!1,mode:e.mode??"coding",hadProviderCredential:!1,result:Promise.resolve(vm(e)),terminalEmitted:Ne(e.phase),ownedByRuntime:n,...t!==void 0?{observedOwner:t}:{}}}i(Nr,"recordFromPersistedStatus");function om(e,n,t){let r=sm(e,n,t);if(r!==void 0)return r;let o=[...t.replay({sessionId:e.sessionId,runId:e.runId})],s=Js(e,o);if(Ne(s.phase))return s!==e&&nt(n,t,void 0,s),s;let a=s.phase==="queued"?"runtime_restarted":"daemon_crashed",u=new Date().toISOString(),c={...s,phase:"interrupted",stage:"terminal",stageChangedAt:u,activeSubtaskCount:0,endedAt:u,error:a,...s.stop!==void 0?{stop:{...s.stop,state:"confirmed",outcome:"interrupted",resolvedAt:u}}:{},...s.interruptInputs!==void 0?{interruptInputs:s.interruptInputs.map(R=>R.state==="queued"?{...R,state:"terminal"}:R)}:{},terminal:{revision:1,kind:"interrupted",code:a,effectOutcome:s.phase==="queued"?"none":"unknown",message:"Runtime process restarted before this run reached a durable terminal state."}},p=nt(n,t,void 0,c);return p===void 0?{...s,phase:"unknown",stage:"unknown",error:"terminal_recovery_not_persisted"}:(p!==c||n.emit("run.interrupted",p,{sessionId:p.sessionId,runId:p.runId,...p.turnId!==void 0?{turnId:p.turnId}:{}}),p)}i(om,"interruptPersistedNonTerminalRun");function sm(e,n,t){let r=[...t.replay({sessionId:e.sessionId,runId:e.runId})],o=[...r].reverse().find(u=>{if(!Ks(u.type))return!1;let c=Ji(u.payload);return c?.runId===e.runId&&c.sessionId===e.sessionId&&c.phase===Th(u.type)});if(o===void 0)return;let s=Ji(o.payload);if(s===void 0)return;let a=Js(s,r);return nt(n,t,void 0,a),a}i(sm,"recoverPersistedDurableTerminal");function Js(e,n){if(e.interruptInputs===void 0)return e;let t=new Map;for(let s of n){if(s.type!=="run.input.delivered"||s.runId!==e.runId||s.sessionId!==e.sessionId||!oe(s.payload))continue;let a=s.payload.inputs;if(Array.isArray(a))for(let u of a)oe(u)&&(typeof u.inputId!="string"||u.afterRunId!==e.runId||typeof u.deliveredAt!="string"||u.entryId!==void 0&&(typeof u.entryId!="string"||u.entryId.length===0)||t.set(u.inputId,{deliveredAt:u.deliveredAt,...typeof u.entryId=="string"?{entryId:u.entryId}:{}}))}let r=!1,o=e.interruptInputs.map(s=>{let a=t.get(s.inputId);return a===void 0?s:s.state==="queued"?(r=!0,{...s,state:"delivered",deliveredAt:a.deliveredAt,...a.entryId!==void 0?{entryId:a.entryId}:{}}):s.state==="delivered"&&a.entryId!==void 0&&s.entryId!==a.entryId?(r=!0,{...s,entryId:a.entryId}):s});return r?{...e,interruptInputs:o}:e}i(Js,"reconcilePersistedInterruptDeliveries");function Th(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"}i(Th,"terminalPhaseFromEvent");function Cl(e,n){if(e===void 0)return n;let t=Date.parse(e);return Number.isFinite(t)?Math.max(1,t-Date.now()):1}i(Cl,"resolvePermissionTimeoutMs");function Dh(e,n){let t=new Map,r=i((u,c,p,R)=>{let I=t.get(u);return!I||p?.runId!==void 0&&I.request.runId!==p.runId||p?.expectedRevision!==void 0&&I.request.revision!==p.expectedRevision?{requestId:u,accepted:!1,status:"already_resolved"}:(c.status==="answered"&&Mh(I.request.kind,c.answer),t.delete(u),clearTimeout(I.timer),I.resolve(c),e.emit("user_input.resolved",{requestId:u,kind:I.request.kind,status:c.status,...R!==void 0?{reason:R}:{}},{sessionId:I.request.sessionId,runId:I.request.runId,...I.request.turnId!==void 0?{turnId:I.request.turnId}:{}}),{requestId:u,accepted:!0,status:c.status})},"resolvePending"),o=i((u,c=n)=>{let p=`input_${Qe().replace(/-/g,"").slice(0,12)}`,R=new Date,I={id:p,revision:0,sessionId:u.sessionId,runId:u.runId,...u.turnId!==void 0?{turnId:u.turnId}:{},kind:u.kind,options:u.options,createdAt:R.toISOString(),expiresAt:new Date(R.getTime()+c).toISOString()},y=i(()=>{},"resolveResponse"),x=new Promise(C=>{y=C}),f=setTimeout(()=>{r(p,{status:"dismissed"},void 0,"timeout")},Math.max(1,c));return f.unref?.(),t.set(p,{request:I,resolve:y,timer:f}),e.emit("user_input.requested",I,{sessionId:I.sessionId,runId:I.runId,...I.turnId!==void 0?{turnId:I.turnId}:{}}),{request:I,response:x}},"trackAndWait"),s=i((u,c)=>{for(let p of[...t.values()])u(p.request)&&r(p.request.id,{status:"dismissed"},void 0,c)},"dismissMatching");return{service:{async listPending(u){return[...t.values()].map(c=>c.request).filter(c=>(u?.sessionId===void 0||c.sessionId===u.sessionId)&&(u?.runId===void 0||c.runId===u.runId))},async respond(u,c,p){return r(u,{status:"answered",answer:c},p)},async dismiss(u,c){return r(u,{status:"dismissed"},c,"client_dismissed")}},trackAndWait:o,resolve:r,rejectForRun(u,c){s(p=>p.runId===u,c)},rejectAll(u){s(()=>!0,u)}}}i(Dh,"createRuntimeUserInputRegistry");function Mh(e,n){if(!(e==="askUser"?am(n):e==="askUserMulti"?_h(n):typeof n=="string"))throw bm(`Invalid answer for ${e}`)}i(Mh,"assertRuntimeUserInputAnswer");function am(e){return Array.isArray(e)?e.every(Al):Al(e)}i(am,"isAskUserAnswer");function Al(e){return typeof e=="string"||oe(e)&&e.kind==="customInput"&&typeof e.value=="string"}i(Al,"isAskUserSelectionAnswer");function _h(e){return oe(e)&&Object.values(e).every(am)}i(_h,"isAskUserMultiAnswer");function Oh(e,n,t){let r=new Map,o=new Map,s=0,a=i((l,v=n,h)=>{let P=i(()=>{},"resolveResponse"),T=new Promise(N=>{P=N});return{request:k(l,[P],Cl(l.expiresAt,v),h),response:T}},"trackAndWait"),u=i((l,v,h)=>{let P=r.get(l);if(!P||h!==void 0&&P.request.runId!==h)return!1;if(v.type==="allow_session"||v.type==="allow_always"){let T=f(P,v);C(T,P.request)}r.delete(l),P.timer&&clearTimeout(P.timer);for(let T of P.waiters)T(v);return e.emit("permission.resolved",{requestId:l,decision:v},{sessionId:P.request.sessionId,runId:P.request.runId,...P.request.turnId!==void 0?{turnId:P.request.turnId}:{}}),!0},"resolvePending"),c=i((l,v)=>{let h=[...r.values()].filter(P=>l(P.request)).map(P=>P.request.id);for(let P of h)u(P,v)},"resolveMatching"),p={request(l){return R(l)},async listPending(l){return[...r.values()].map(v=>v.request).filter(v=>Xw(v,l))},async respond(l,v,h){return u(l,v,h?.runId)},async listGrants(){let l=I();return{revision:s,value:[...l.value,...o.values()]}},async revokeGrant(l,v){let h=I();if(s!==v)throw Zn(`Permission grant revision ${v} is stale; current revision is ${s}`,s);let P=o.get(l);if(P!==void 0)return o.delete(l),s+=1,t.savePermissionGrants({revision:s,value:h.value}),m("revoked",P,s),!0;let T=h.value.find(N=>N.id===l),_=h.value.filter(N=>N.id!==l);return _.length===h.value.length?!1:(s+=1,t.savePermissionGrants({revision:s,value:_}),T!==void 0&&m("revoked",T,s),!0)}};function R(l,v){let h=v??(l.toolInput!==void 0?{toolInput:l.toolInput}:void 0),P=y(l.sessionId,l.toolName,h?.toolInput,l.executionCwd,h?.shell,h?.shellContractFingerprint);if(P!==void 0)return P.persistence==="session"?Promise.resolve({type:"allow_session",suggestionId:P.id}):Promise.resolve({type:"allow_always",suggestionId:P.id});let{toolInput:T,..._}=l,N=h===void 0?_.inputPreview:cr(h.toolInput),q={sessionId:_.sessionId,runId:_.runId,..._.turnId!==void 0?{turnId:_.turnId}:{},..._.toolCallId!==void 0?{toolCallId:_.toolCallId}:{},toolName:_.toolName,..._.reason!==void 0?{reason:_.reason}:{},..._.risk!==void 0?{risk:_.risk}:{},...N!==void 0?{inputPreview:N}:{},..._.executionCwd!==void 0?{executionCwd:_.executionCwd}:{},..._.autoModeDiagnostics!==void 0?{autoModeDiagnostics:_.autoModeDiagnostics}:{},..._.expiresAt!==void 0?{expiresAt:_.expiresAt}:{}},te=h===void 0?void 0:x(q,h);return te!==void 0?te:a(q,_.timeoutMs??n,h).response}i(R,"requestPermission");function I(){let l=t.loadPermissionGrants();return s=Math.max(s,l.revision),l}i(I,"loadPersistentPermissionGrants");function y(l,v,h,P,T,_){let N=I().value;return[...o.values(),...N].find(q=>q.scope.sessionId!==void 0&&q.scope.sessionId!==l||q.scope.toolName!==void 0&&q.scope.toolName!==v||q.scope.matcher===void 0||h===void 0||q.persistence!=="session"&&q.scope.matcher.kind==="exact-command"&&typeof h.command=="string"&&Eo(h.command,T??(ni()==="win32"?"cmd":"posix"))?!1:md(q.scope.matcher,{toolName:v,toolInput:h,executionCwd:P??process.cwd(),...T!==void 0?{shell:T}:{},..._!==void 0?{shellContractFingerprint:_}:{}}))}i(y,"findPermissionGrant");function x(l,v){let h=Tl(l,v);if(h.length===0)return;let P=[...r.values()].find(T=>T.request.sessionId===l.sessionId&&T.request.runId===l.runId&&T.grantCandidates.length===h.length&&h.every(_=>T.grantCandidates.some(N=>N.persistence===_.persistence&&Ts(N.scope,_.scope))));if(P)return new Promise(T=>{P.waiters.push(T)})}i(x,"joinMatchingPendingPermission");function f(l,v){let h=v.type==="allow_session"?"session":"persistent",P="suggestionId"in v?l.grantCandidates.find(T=>T.suggestion.id===v.suggestionId&&T.persistence===h):Nh(l,v.scope,h);if(!P)throw bm("Permission decision does not select a Runtime-issued grant suggestion.");return P}i(f,"resolveRuntimePermissionGrantCandidate");function C(l,v){let h={id:`grant_${Qe().replace(/-/g,"").slice(0,12)}`,scope:l.scope,createdAt:new Date().toISOString(),persistence:l.persistence,label:l.suggestion.label,sourcePermissionId:v.id};if(l.persistence==="session"){if([...o.values()].some(_=>Ts(_.scope,h.scope)))return;let T=I();s+=1,o.set(h.id,h),t.savePermissionGrants({revision:s,value:T.value}),m("created",h,s,v);return}let P=I();P.value.some(T=>Ts(T.scope,h.scope))||(s+=1,t.savePermissionGrants({revision:s,value:[...P.value,h]}),m("created",h,s,v))}i(C,"saveRuntimePermissionCandidate");function m(l,v,h,P){e.emit("permission.grant.changed",{action:l,grant:v,revision:h},{sessionId:P?.sessionId??v.scope.sessionId??"runtime",runId:P?.runId??"permission-grants",...P?.turnId!==void 0?{turnId:P.turnId}:{}})}return i(m,"emitPermissionGrantChanged"),{service:p,requestOwned(l,v){return R(l,v)},track(l){return k(l,[],Cl(l.expiresAt,n))},trackAndWait(l,v=n,h){return a(l,v,h)},resolve(l,v){u(l,v)},isGranted(l,v,h,P,T,_){return y(l,v,h,P,T,_)!==void 0},rejectForRun(l,v){c(h=>h.runId===l,{type:"reject",reason:v})},rejectAll(l){c(()=>!0,{type:"reject",reason:l})},releaseSession(l){let v=I(),h=[...o.values()].filter(P=>P.scope.sessionId===l);if(h.length!==0){for(let P of h)o.delete(P.id);s+=1,t.savePermissionGrants({revision:s,value:v.value});for(let P of h)m("expired",P,s)}},releaseAllSessionGrants(){if(o.size===0)return;let l=I(),v=[...o.values()];o.clear(),s+=1,t.savePermissionGrants({revision:s,value:l.value});for(let h of v)m("expired",h,s)}};function k(l,v,h=n,P){let T=l.inputPreview===void 0?void 0:av(l.inputPreview),_=P===void 0?[]:Tl(l,P),N=new Date,q={...l,...T!==void 0?{inputPreview:T}:{},executionCwd:Y.resolve(l.executionCwd??process.cwd()),id:`perm_${Qe().replace(/-/g,"").slice(0,12)}`,createdAt:N.toISOString(),...l.expiresAt===void 0&&h>0?{expiresAt:new Date(N.getTime()+h).toISOString()}:{},..._.length>0?{grantSuggestions:_.map(de=>de.suggestion)}:{}},te=h>0?setTimeout(()=>{let de=r.get(q.id);if(!de)return;r.delete(q.id);let Ie={type:"reject",reason:"permission request timed out",cause:"approval_timeout"};for(let Te of de.waiters)Te(Ie);e.emit("permission.resolved",{requestId:q.id,decision:Ie},{sessionId:q.sessionId,runId:q.runId,...q.turnId!==void 0?{turnId:q.turnId}:{}})},h):void 0;return te?.unref?.(),r.set(q.id,{request:q,waiters:v,grantCandidates:_,...te!==void 0?{timer:te}:{}}),e.emit("permission.requested",q,{sessionId:q.sessionId,runId:q.runId,...q.turnId!==void 0?{turnId:q.turnId}:{}}),q}i(k,"createPendingPermission")}i(Oh,"createRuntimePermissionRegistry");function Nh(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(o=>o.persistence!==t?!1:n.matcher!==void 0?o.scope.matcher?.kind===n.matcher.kind&&o.scope.matcher.fingerprint===n.matcher.fingerprint:!0);return!r||n.sessionId===void 0?r:{...r,scope:{...r.scope,sessionId:n.sessionId}}}i(Nh,"resolveLegacyRuntimePermissionGrantCandidate");function Tl(e,n){let t=Y.resolve(e.executionCwd??process.cwd()),r=ko({toolName:e.toolName,toolInput:n.toolInput,executionCwd:t,...n.shell!==void 0?{shell:n.shell}:{},...n.shellContractFingerprint!==void 0?{shellContractFingerprint:n.shellContractFingerprint}:{}});if(r.kind==="exact-command"&&(typeof n.toolInput.command!="string"||n.toolInput.command.trim().length===0))return[];let o=Fh(r,n.toolInput),s=[{suggestion:{id:`scope_${Qe().replace(/-/g,"").slice(0,16)}`,kind:"session",label:Dl(r,o,e.toolName,"session")},scope:{toolName:e.toolName,sessionId:e.sessionId,matcher:r},persistence:"session"}];return r.kind!=="exact-call"&&Lh(e,n,t)&&s.push({suggestion:{id:`scope_${Qe().replace(/-/g,"").slice(0,16)}`,kind:"persistent",label:Dl(r,o,e.toolName,"persistent")},scope:{toolName:e.toolName,matcher:r},persistence:"persistent"}),s}i(Tl,"createRuntimePermissionGrantCandidates");function Lh(e,n,t){if(e.risk==="high")return!1;let r={id:e.toolCallId??"permission-scope",name:e.toolName,input:n.toolInput},o=Y.resolve(n.projectRoot??t);if(qa(r,o,t).denied||[...n.signals??[],...Ba.collect(r,o,t)].some(a=>a.kind==="dangerous_pattern"))return!1;if(e.toolName==="bash"){let a=typeof n.toolInput.command=="string"?n.toolInput.command:"";if(Eo(a,n.shell??(ni()==="win32"?"cmd":"posix")))return!1}return!0}i(Lh,"isPersistentRuntimePermissionSafe");function Fh(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=Hs(t.slice(0,Xr)).replace(/\s+/g," ").trim();return r.length<=120?r:`${r.slice(0,117)}...`}i(Fh,"runtimePermissionGrantLabel");function Dl(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`}i(Dl,"runtimePermissionGrantSuggestionLabel");function jh(e,n){let t=n.lastIndexOf("/");if(t<=0)return e;let r=n.slice(0,t);return r==="/root"?e:`${e}/agent/${encodeURIComponent(r)}`}i(jh,"childParentContextId");function Ni(e,n){let t=e.contextKind??(e.agentId===void 0?"root":"child"),r=e.contextId??(t==="child"&&e.agentId!==void 0?`${n}/agent/${encodeURIComponent(e.agentId)}`:n),o=e.parentContextId??(t==="child"&&e.agentId!==void 0?jh(n,e.agentId):void 0);return{...e,contextId:r,contextKind:t,...o!==void 0?{parentContextId:o}:{}}}i(Ni,"withRuntimeDiagnosticIdentity");function Ts(e,n){return e.toolName===n.toolName&&e.sessionId===n.sessionId&&e.matcher?.kind===n.matcher?.kind&&e.matcher?.fingerprint===n.matcher?.fingerprint}i(Ts,"permissionScopesEqual");function Hh(e){let{bus:n,original:t,permissions:r,userInputs:o,enableSharedInteractions:s,record:a,onExecutorTerminal:u,onPhase:c,onStage:p,onMidTurnUserMessages:R}=e,I=i(l=>({sessionId:l?.sessionId??a.sessionId,runId:a.runId,turnId:l?.turnId??a.turnId}),"scopeFromMeta"),y=i(()=>a.actorDurabilityFailure===void 0?t:void 0,"externalCallbacks"),x=i(()=>a.actorDurabilityFailure!==void 0,"actorDurabilityFenced"),f=i((l,v,h)=>{a.actorDurabilityFailure===void 0&&n.emit(l,na(v),I(h))},"emit"),C=i(()=>{(a.phase==="waiting_agent"||a.phase==="recovering")&&c("running")},"resumeFromTransientPhase"),m=i(()=>a.actorDurabilityFailure?.terminal.message??(a.mode==="managed_task"&&a.stop!==void 0&&a.abortController?.signal.aborted===!0?a.stop.reason:void 0),"managedStopDecision"),k=i(async(l,v,h,P,T)=>{if(m()!==void 0)return T;let _=a.phase;if(a.phase==="running"&&c("waiting_user_input"),s){let q=o.trackAndWait({sessionId:h?.sessionId??a.sessionId,runId:a.runId,...h?.turnId??a.turnId?{turnId:h?.turnId??a.turnId}:{},kind:l,options:v});try{let te=P===void 0?await q.response:await Promise.race([q.response,P().then(de=>({status:de===void 0?"dismissed":"answered",...de!==void 0?{answer:de}:{}})).then(de=>(o.resolve(q.request.id,de),de))]);return te.status==="answered"?te.answer:T}finally{a.phase==="waiting_user_input"&&c(_)}}let N=`input_${Qe().replace(/-/g,"").slice(0,12)}`;f("user_input.requested",{requestId:N,kind:l,options:v},h);try{if(P===void 0)return T;let q=await P();return f("user_input.resolved",{requestId:N,kind:l,status:q===void 0?"dismissed":"answered"},h),q}catch(q){throw f("user_input.resolved",{requestId:N,kind:l,status:"failed",error:$e(q).message},h),q}finally{a.phase==="waiting_user_input"&&c(_)}},"runWithUserInputPhase");return{...t,onTextDelta(l,v){x()||(C(),f("assistant.delta",{text:l,meta:v},v),y()?.onTextDelta?.(l,v))},onThinkingDelta(l,v){x()||(C(),f("thinking.delta",{text:l,meta:v},v),y()?.onThinkingDelta?.(l,v))},onThinkingEnd(l,v){f("thinking.finished",{thinking:l,meta:v},v),y()?.onThinkingEnd?.(l,v)},onToolUseStart(l,v){x()||(c(l.name==="wait_agent"?"waiting_agent":"running"),f("tool.started",{tool:l,meta:v},v),y()?.onToolUseStart?.(l,v))},onToolProgress(l,v){f("tool.progress",{update:l,meta:v},v),y()?.onToolProgress?.(l,v)},onToolSandboxObservation(l,v){f("tool.sandbox",{update:l,meta:v},v),y()?.onToolSandboxObservation?.(l,v)},onToolInputDelta(l,v,h){f("tool.progress",{toolName:l,partialJson:v,meta:h},h),y()?.onToolInputDelta?.(l,v,h)},onToolResult(l,v){x()||(l.name==="wait_agent"&&c("running"),f("tool.finished",{result:l,meta:v},v),y()?.onToolResult?.(l,v))},onToolExecutionStart(l,v){if(x()){let h=new Error("Tool execution was fenced by Actor durability failure.");throw h.name="AbortError",h}a.activeEffectCount=(a.activeEffectCount??0)+1},onToolExecutionEnd(l,v){if(a.activeEffectCount=Math.max(0,(a.activeEffectCount??0)-1),(a.activeEffectCount??0)===0){let h=a.finishAfterEffectDrain;a.finishAfterEffectDrain=void 0,h?.()}},onStreamEnd(l){f("run.progress",{kind:"stream_end",meta:l},l),y()?.onStreamEnd?.(l)},onChildActivityEnd(l){f("child_activity.finished",{meta:l},l),y()?.onChildActivityEnd?.(l)},onSessionStart(l){a.actorDurabilityFailure===void 0&&(a.provider=l.provider,f("session.loaded",l,l),y()?.onSessionStart?.(l))},onTurnStarted(l){a.actorDurabilityFailure===void 0&&(a.turnId=l.turnId,f("turn.started",l,l),y()?.onTurnStarted?.(l))},onTurnCompleted(l){f("turn.completed",l,l),y()?.onTurnCompleted?.(l)},onTurnFailed(l){f("turn.failed",l,l),y()?.onTurnFailed?.(l)},onIterationStart(l,v,h){f("run.progress",{kind:"iteration_start",iter:l,maxIter:v,meta:h},h),y()?.onIterationStart?.(l,v,h)},onIterationEnd(l){f("run.progress",{kind:"iteration_end",info:l},l),y()?.onIterationEnd?.(l)},onCompactStart(l){f("context.compaction.started",{meta:l},l),y()?.onCompactStart?.(l)},onCompact(l,v){y()?.onCompact?.(l,v)},onCompactStats(l){f("context.compaction.stats",l,l),y()?.onCompactStats?.(l)},async onCompactedMessages(l,v,h){let P=v===void 0?void 0:{hasAnchor:v.anchor!==void 0,...v.anchor?.tokensBefore!==void 0?{tokensBefore:v.anchor.tokensBefore}:{},...v.anchor?.tokensAfter!==void 0?{tokensAfter:v.anchor.tokensAfter}:{},...v.anchor?.entriesRemoved!==void 0?{entriesRemoved:v.anchor.entriesRemoved}:{},...v.anchor?.reason!==void 0?{reason:v.anchor.reason}:{},artifactLedgerEntryCount:v.artifactLedger?.length??0,postCompactAttachmentCount:v.postCompactAttachments?.length??0,exactSnapshotAvailable:v.preCompactionMessages!==void 0};f("context.compaction.messages",{messageCount:l.length,update:P,meta:h},h),await y()?.onCompactedMessages?.(l,v,h)},onContextCompactionFinished(l){let v=l.contextRevision??0;f("context.compaction.finished",{...l,contextId:l.contextId??a.sessionId,contextKind:l.contextKind??"root",contextRevision:v,beforeRevision:Math.max(0,v-1),afterRevision:v},l),y()?.onContextCompactionFinished?.(l)},onCompactEnd(l,v){f("context.compaction.ended",{meta:l,...v??{}},l),y()?.onCompactEnd?.(l,v)},onMidTurnUserMessages(l,v){x()||(R(v?.queuedMessageIds??[],v?.queuedMessageEntryIds),f("run.progress",{kind:"mid_turn_user_messages",contents:l,meta:v},v),y()?.onMidTurnUserMessages?.(l,v))},onRetry(l,v,h,P){f("provider.retry",{reason:l,attempt:v,maxAttempts:h,meta:P},P),y()?.onRetry?.(l,v,h,P)},onProviderRateLimit(l,v,h,P){f("provider.retry",{reason:"rate_limit",attempt:l,maxAttempts:v,delayMs:h,meta:P},P),y()?.onProviderRateLimit?.(l,v,h,P)},onRetryAfter(l,v){f("provider.retry",{retryAfter:l,meta:v},v),y()?.onRetryAfter?.(l,v)},onReasoningEffortRejected(l){f("provider.recovery",{kind:"reasoning_effort_rejected",event:l},l),y()?.onReasoningEffortRejected?.(l)},onRepoIntelligenceTrace(l){f("repo_intelligence.trace",l,l),y()?.onRepoIntelligenceTrace?.(l)},onContextBudgetSnapshot(l){let v=Ni(l,a.sessionId);f("context.budget.snapshot",v,v),y()?.onContextBudgetSnapshot?.(v)},onPromptCacheDiagnostics(l){let v=Ni(l,a.sessionId);f("provider.cache.diagnostics",v,v),y()?.onPromptCacheDiagnostics?.(v)},onToolExposurePlanned(l){let v=Ni(l,a.sessionId);f("tool.exposure.planned",v,v),y()?.onToolExposurePlanned?.(v)},onContextCompactionSkipped(l){let v=Ni(l,a.sessionId);f("context.compaction.skipped",v,v),y()?.onContextCompactionSkipped?.(v)},onSidecarMessage(l){f("sidecar.message",l,l),y()?.onSidecarMessage?.(l)},onTodoUpdate(l,v){f("todo.updated",{items:l,meta:v},v),y()?.onTodoUpdate?.(l,v)},onTodoDriftWarning(l){f("todo.warning",l,l),y()?.onTodoDriftWarning?.(l)},onProviderRecovery(l,v){x()||(c("recovering"),f("provider.recovery",{event:l,meta:v},v),y()?.onProviderRecovery?.(l,v))},onEffectiveConfig(l){f("config.effective",l,l),y()?.onEffectiveConfig?.(l)},onWorkflowProcessEvent(l){let v=$w(l);f(v,l,{sessionId:l.snapshot.hostMetadata?.sessionId??a.sessionId}),y()?.onWorkflowProcessEvent?.(l)},onWorkflowAgentDigest(l){y()?.onWorkflowAgentDigest?.(l)},onScoutSuspiciousCompletion(l){y()?.onScoutSuspiciousCompletion?.(l)},hasPendingInputs(){return y()?.hasPendingInputs?.()??!1},...t?.exitPlanMode===void 0?{}:{exitPlanMode:i(l=>x()?Promise.resolve(!1):t.exitPlanMode(l),"exitPlanMode")},...t?.onMemoryReview===void 0?{}:{onMemoryReview:i((...l)=>{y()?.onMemoryReview?.(...l)},"onMemoryReview")},...t?.onMemoryNotice===void 0?{}:{onMemoryNotice:i((...l)=>{y()?.onMemoryNotice?.(...l)},"onMemoryNotice")},...t?.onMemoryOutcomeDigest===void 0?{}:{onMemoryOutcomeDigest:i((...l)=>{y()?.onMemoryOutcomeDigest?.(...l)},"onMemoryOutcomeDigest")},...t?.onMemoryReviewReceipt===void 0?{}:{onMemoryReviewReceipt:i((...l)=>{y()?.onMemoryReviewReceipt?.(...l)},"onMemoryReviewReceipt")},onComplete(l){x()||(a.interruptInputOpen=!1,u("completed"),f("run.progress",{kind:"complete",meta:l},l),y()?.onComplete?.(l))},onError(l,v){if(x())return;a.interruptInputOpen=!1,u("failed",l);let h=a.mode==="managed_task"&&a.stop!==void 0&&a.abortController?.signal.aborted===!0&&l.name==="AbortError";f("runtime.warning",{source:"coding",severity:"error",message:h?"Managed provider observed Runtime Stop.":Im(l,a).message},v),y()?.onError?.(l,v)},onManagedTaskStatus(l){if(!x()){if(a.mode==="managed_task"&&l.phase==="completed")a.interruptInputOpen=!1,c("running"),p("finalizing",0);else if(a.mode==="managed_task"){c(l.idleWaiting===!0?"waiting_agent":"running");let v=l.idleWaitingPendingCount??(l.phase==="verifying"?0:void 0);p(l.phase??(l.idleWaiting===!0?"waiting_agent":"executing"),v)}f("run.progress",{kind:"managed_task_status",status:l},l),y()?.onManagedTaskStatus?.(l)}},beforeToolExecute:i(async(l,v,h)=>{let P=m();if(P!==void 0)return P;let T=Vw(a),_=a.autoModeEngine;if(T!==void 0&&wn(a.permissionMode)==="auto"&&(_==="llm"||_==="rules")){if(Yl.has(l))return!0;let Pe=await t?.beforeToolExecute?.(l,v,h),be=m();return be!==void 0?be:Pe!==void 0&&Pe!==!0?Pe:h?.toolId!==void 0&&T.consumeAllowedCall({id:h.toolId,name:l,input:v})?!0:"[Blocked] Runtime auto mode did not classify this concrete tool call."}if(wn(a.permissionMode)==="plan"){let Pe=Kl(a,l,v);if(Pe!==!0&&Pe!==void 0)return Pe}let q=zw(a);if(r.isGranted(h?.sessionId??a.sessionId,l,v,js(a),q?.shell,q?.shellContractFingerprint))return!0;let te=t?.beforeToolExecute===void 0?Kl(a,l,v):void 0;if(te!==void 0)return te;let de=m();if(de!==void 0)return de;let Ie=a.phase;a.phase==="running"&&c("waiting_permission");let Te=r.trackAndWait({sessionId:h?.sessionId??a.sessionId,runId:a.runId,...h?.turnId??a.turnId?{turnId:h?.turnId??a.turnId}:{},...h?.toolId?{toolCallId:h.toolId}:{},toolName:l,inputPreview:cr(v),executionCwd:js(a)},void 0,{toolInput:v,...q??{},...typeof a.start?.options.context?.gitRoot=="string"?{projectRoot:a.start.options.context.gitRoot}:{}});try{if(!t?.beforeToolExecute){let Ce=await Te.response;return Xl(Ce)}let Pe=Promise.resolve(t.beforeToolExecute(l,v,h)).then(Ce=>({source:"hook",decision:Ce})),be=Te.response.then(Ce=>({source:"runtime",decision:Xl(Ce)})),ve=await Promise.race([Pe,be]),Fe=m();return Fe!==void 0?Fe:(ve.source==="hook"&&r.resolve(Te.request.id,Uw(ve.decision)),ve.decision)}catch(Pe){r.resolve(Te.request.id,{type:"reject",reason:$e(Pe).message});let be=m();if(be!==void 0)return be;throw Pe}finally{a.phase==="waiting_permission"&&c(Ie==="queued"?"running":Ie)}},"beforeToolExecute"),...t?.askUser||s?{askUser:i((l,v)=>k("askUser",l,v,t?.askUser?()=>t.askUser(l,v):void 0,""),"askUser")}:{},...t?.askUserMulti||s?{askUserMulti:i((l,v)=>k("askUserMulti",l,v,t?.askUserMulti?()=>t.askUserMulti(l,v):void 0,void 0),"askUserMulti")}:{},...t?.askUserInput||s?{askUserInput:i((l,v)=>k("askUserInput",l,v,t?.askUserInput?()=>t.askUserInput(l,v):void 0,void 0),"askUserInput")}:{}}}i(Hh,"wrapKodaXEvents");function $h(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}i($h,"buildSessionRuntimeInfo");function dm(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}:{}}}i(dm,"toRuntimeSessionSummary");function Ml(e,n,t){let r=e.input===void 0?[]:Array.isArray(e.input)?[...e.input]:[e.input],o=r.filter(a=>a.type==="text");if(e.prompt!==void 0&&o.length>0)throw new Error(`${t} accepts either prompt or text input, not both`);if(o.length>1)throw new Error(`${t} accepts at most one text input item`);let s=e.prompt??o[0]?.text;if(s===void 0)throw new Error(`${t} requires prompt or text input`);return{prompt:s,inputArtifacts:r.flatMap(a=>qh(a,n))}}i(Ml,"normalizeRuntimeRunInput");function qh(e,n){if(e.type==="text")return[];if(e.type==="artifact_ref")return Bh(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)}`)}i(qh,"runtimeInputToArtifacts");function Bh(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)}`)}i(Bh,"runtimeArtifactToInputArtifacts");function Kh(e){return typeof e=="string"&&CR.has(e)}i(Kh,"isRuntimeArtifactKind");function Xh(e,n,t,r){let o=r.runtimeInfo?.canonicalRepoRoot??(r.gitRoot?r.gitRoot:void 0),s=o===void 0?void 0:Y.resolve(o),a=r.runtimeInfo?.executionCwd??r.runtimeInfo?.workspaceRoot??s,u={...s!==void 0?{gitRoot:s}:{},...n.executionCwd!==void 0?{executionCwd:Y.resolve(n.executionCwd)}:a!==void 0?{executionCwd:Y.resolve(a)}:{},...n.shellExecution!==void 0?{shellExecution:n.shellExecution}:{}},c=e.context,p={...c??{}};delete p.shellExecution;let R=c?.shellExecution===void 0?void 0:yr(c.shellExecution),I=typeof c?.gitRoot=="string"?Y.resolve(c.gitRoot):void 0;if(s!==void 0&&I!==void 0&&!(gr(s,I)&&gr(I,s)))throw new Error("gitRoot must match the session repository safety boundary");let y=c?.executionCwd===void 0?void 0:Y.resolve(c.executionCwd),x=y??u.executionCwd,f=r.runtimeInfo?.workspaceRoot??s;y!==void 0&&f!==void 0&&fm(y,f,"executionCwd");let C=[...c?.inputArtifacts??[],...t],m={...u,...p,...s!==void 0?{gitRoot:s}:I!==void 0?{gitRoot:I}:{},...x!==void 0?{executionCwd:x}:{},...R!==void 0?{shellExecution:R}:{},...C.length>0?{inputArtifacts:C}:{}},k=e.provider??n.provider,l=e.model??n.model,v=e.effort??n.effort,h=e.thinking??n.thinking,P=e.reasoningMode??n.reasoningMode,T=e.agentMode??n.agentMode,_=T==="amaw"?"ama":T,N=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,...k!==void 0?{provider:k}:{},...l!==void 0?{model:l}:{},...v!==void 0?{effort:v}:{},...h!==void 0?{thinking:h}:{},...P!==void 0?{reasoningMode:P}:{},..._!==void 0?{agentMode:_}:{},...N!==void 0?{compaction:N}:{},...Object.keys(m).length>0?{context:m}:{}}}i(Xh,"buildEffectiveRuntimeOptions");async function Uh(e,n,t){let r=await e.storage.read(n,t);if(!r)throw new Error(`Session not found: ${n}`);return r}i(Uh,"loadRequiredSession");function Ln(e){if(e?.timeoutMs!==void 0&&(!Number.isFinite(e.timeoutMs)||e.timeoutMs<=0))throw new Error("Runtime read timeoutMs must be a positive finite number");return{...e?.timeoutMs!==void 0?{deadline:Date.now()+e.timeoutMs}:{},...e?.signal!==void 0?{signal:e.signal}:{}}}i(Ln,"createRuntimeReadBudget");function Oe(e){if(e.signal?.aborted)throw new mn("read_cancelled","Runtime history read cancelled");if(e.deadline===void 0)return e.signal===void 0?{}:{signal:e.signal};let n=e.deadline-Date.now();if(n<=0)throw new mn("read_timeout","Runtime history read timed out");return{timeoutMs:n,...e.signal!==void 0?{signal:e.signal}:{}}}i(Oe,"sessionReadOptionsFromBudget");function Fn(e,n){let t=Oe(n),r=Promise.resolve().then(e);if(t.timeoutMs===void 0&&t.signal===void 0)return r;let o,s,a=[];return t.timeoutMs!==void 0&&a.push(new Promise((u,c)=>{o=setTimeout(()=>c(new mn("read_timeout","Runtime history read timed out")),t.timeoutMs),o.unref?.()})),t.signal!==void 0&&a.push(new Promise((u,c)=>{s=i(()=>c(new mn("read_cancelled","Runtime history read cancelled")),"onAbort"),t.signal?.addEventListener("abort",s,{once:!0}),t.signal?.aborted&&s()})),Promise.race([r,...a]).finally(()=>{o!==void 0&&clearTimeout(o),s!==void 0&&t.signal?.removeEventListener("abort",s)})}i(Fn,"awaitRuntimeReadOperation");async function or(e){await Fn(()=>new Promise(n=>setImmediate(n)),e),Oe(e)}i(or,"yieldToRuntimeReadBudget");function Wh(e,n,t){let r=i((a,u)=>t?Jh(a,u)?!1:a===void 0||lR.has(a.toLowerCase()):!0,"admitted"),o=i(a=>{throw Object.assign(new Error(`Session is not admitted by shared Runtime profile ${e}: ${a}`),{code:"session_not_admitted"})},"reject"),s=i(async(a,u,c=!1)=>{let p=c?await n.loadSession(a):await Uh(n,a,u);if(p===null)throw new Error(`Session not found: ${a}`);return r(p.runtimeInfo?.surface,p.runtimeInfo?.profileId)||o(a),p},"loadAdmitted");return{assertCreate(a){r(a.surface,a.profileId)||o(a.sessionId??"<new>")},assertFilter(a){a?.surface!==void 0&&!r(a.surface,void 0)&&o("<list>")},admitsData(a){return r(a.runtimeInfo?.surface,a.runtimeInfo?.profileId)},admitsSummary(a){return r(a.runtimeInfo?.surface,a.runtimeInfo?.profileId)},assertCachedIdentity(a,u){r(u.surface,u.profileId)||o(a)},async admitsSession(a){if(!t)return!0;let u=await n.storage.peek(a);return u!==null&&r(u.runtimeInfo?.surface,u.runtimeInfo?.profileId)},async assertRunAccess(a){t&&await s(a)},async loadRequired(a,u){return s(a,u)},async captureRequired(a,u){let c=await n.readSessionCapture(a,u);if(c===null)throw new Error(`Session not found: ${a}`);return r(c.data.runtimeInfo?.surface,c.data.runtimeInfo?.profileId)||o(a),c},async loadExecutable(a){let u=await s(a,void 0,!0);if(await n.storage.isArchived(a))throw $s(a);return u}}}i(Wh,"createRuntimeSessionAdmission");async function _l(e,n){let t=new Map,r=[];for(let o of e){let s=t.get(o.sessionId);s===void 0&&(s=await n.admitsSession(o.sessionId),t.set(o.sessionId,s)),s&&r.push(o)}return r}i(_l,"filterAdmittedRunStatuses");function Jh(e,n){let t=i(r=>r?.toLowerCase().split(/[^a-z0-9]+/).includes("partner")===!0,"hasPartnerToken");return t(e)||t(n)}i(Jh,"isPartnerSessionIdentity");function zh(e){return e===null?Zh("null"):Vh(e.transcriptEntries)}i(zh,"createRuntimeTranscriptRevision");function Vh(e,n){return Gh(e,"kodax-transcript-entries-v1\0","",n)}i(Vh,"createRuntimeTranscriptEntriesRevision");function Gh(e,n,t,r){let o=Dt("sha256");o.update(n),t.length>0&&(o.update(`${Buffer.byteLength(t,"utf8")}:`),o.update(t));for(let s of e){let a=Buffer.from(JSON.stringify(s),"utf8");o.update(`${a.length}:`),o.update(a),r?.(s,a)}return`sha256:${o.digest("hex")}`}i(Gh,"createRuntimeHistoryEntriesRevision");function Yh(e){return JSON.stringify({sourceRevision:e.sourceRevision,status:e.status,issues:e.issues})}i(Yh,"runtimeConversationRevisionContext");function Qh(e){return wo(e)}i(Qh,"createRuntimeConversationHistoryRevision");function Zh(e){return`sha256:${Dt("sha256").update(e).digest("hex")}`}i(Zh,"createRuntimeTranscriptRevisionFromSerialized");function ew(e){return"entryId"in e&&typeof e.entryId=="string"?{entryId:e.entryId}:"boundaryId"in e&&typeof e.boundaryId=="string"?{boundaryId:e.boundaryId}:{}}i(ew,"runtimeHistoryEntryDescriptorIdentity");function zi(e){return Buffer.from(JSON.stringify(e),"utf8").toString("base64url")}i(zi,"encodeRuntimeTranscriptCursor");function Hr(e){let n;try{n=JSON.parse(Buffer.from(e,"base64url").toString("utf8"))}catch(r){throw xe(`Invalid transcript cursor: ${$e(r).message}`)}if(!oe(n)||typeof n.revision!="string")throw xe("Invalid transcript cursor payload");let t=n.view===void 0||n.view==="transcript"?"transcript":n.view==="conversation"?"conversation":void 0;if(t===void 0)throw xe("Invalid transcript cursor view");if(n.kind==="conversation_cache_page"&&t==="conversation"&&Number.isSafeInteger(n.end)&&Number(n.end)>=0)return{kind:"conversation_cache_page",view:t,revision:n.revision,end:Number(n.end)};if(n.kind==="page"&&Number.isSafeInteger(n.end)&&Number(n.end)>=0)return{kind:"page",view:t,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",view:t,revision:n.revision,entryIndex:Number(n.entryIndex),offset:Number(n.offset)};throw xe("Invalid transcript cursor payload")}i(Hr,"decodeRuntimeTranscriptCursor");async function Ds(e,n,t,r){if(e.view!=="transcript")throw xe("Transcript snapshot view does not match the request");let o=await um(e,n,t,r);return{revision:e.revision,entries:o.entries.map(s=>({index:s.index,...s.entryId!==void 0?{entryId:s.entryId}:{},byteLength:s.byteLength,oversized:s.oversized,...s.entry!==void 0?{entry:s.entry}:{}})),hasMore:o.hasMore,...o.nextCursor!==void 0?{nextCursor:o.nextCursor}:{}}}i(Ds,"createRuntimeTranscriptSlice");async function um(e,n,t,r,o=0){let s=r??Vl;if(!Number.isSafeInteger(s)||s<=0)throw new Error("transcript page limit must be a positive safe integer");let a=Math.min(s,Gl);if(o>_t)throw Gi();let u=e.entries.length;if(t!==void 0){let y=Hr(t);if(y.kind!=="page"||y.revision!==e.revision||y.view!==e.view)throw xe("Transcript cursor is stale; request a fresh observation snapshot");u=Math.min(y.end,e.entries.length)}let c=[],p=o,R=u;for(let y=u-1;y>=0&&(Oe(n),!(c.length>=a));y-=1){let x=e.entries[y],f=x.byteLength,C=f<=Ki?await rw(e,x,n):void 0,m={index:y,...x.entryId!==void 0?{entryId:x.entryId}:{},...x.boundaryId!==void 0?{boundaryId:x.boundaryId}:{},byteLength:f,oversized:f>Ki,...C!==void 0?{entry:C}:{}},k=Buffer.byteLength(JSON.stringify(m),"utf8");if(p+k>_t){if(c.length===0)throw Gi();break}c.unshift(m),p+=k,R=y}Oe(n);let I=R>0;return{entries:c,hasMore:I,...I?{nextCursor:zi({kind:"page",view:e.view,revision:e.revision,end:R})}:{}}}i(um,"createRuntimeHistorySlice");async function Ol(e,n,t,r){if(e.view!=="conversation"||e.conversation===void 0)throw xe("Conversation snapshot view does not match the request");let o=await um(e,n,t,r,Buffer.byteLength(JSON.stringify({revision:e.revision,sourceRevision:e.conversation.sourceRevision,status:e.conversation.status,issues:e.conversation.issues}),"utf8"));return{revision:e.revision,sourceRevision:e.conversation.sourceRevision,status:e.conversation.status,issues:structuredClone(e.conversation.issues),entries:o.entries.map(s=>({index:s.index,...s.boundaryId!==void 0?{boundaryId:s.boundaryId}:{},byteLength:s.byteLength,oversized:s.oversized,...s.entry!==void 0?{entry:s.entry}:{}})),hasMore:o.hasMore,...o.nextCursor!==void 0?{nextCursor:o.nextCursor}:{}}}i(Ol,"createRuntimeConversationHistorySlice");async function nw(e,n,t){if(n.view!=="transcript")throw xe("Transcript snapshot view does not match the request");let r=await cm(e,n,t);return{revision:r.revision,entryIndex:r.entryIndex,...r.entryId!==void 0?{entryId:r.entryId}:{},encoding:"base64-json",data:r.data,hasMore:r.hasMore,...r.nextCursor!==void 0?{nextCursor:r.nextCursor}:{}}}i(nw,"createRuntimeTranscriptEntryChunkFromSnapshot");async function cm(e,n,t){if(e.revision!==n.revision)throw xe("Transcript revision changed; request a fresh observation snapshot");let r=n.entries[e.entryIndex];if(r===void 0)throw new Error(`Transcript entry index is out of range: ${e.entryIndex}`);let o=0;if(e.cursor!==void 0){let c=Hr(e.cursor);if(c.kind!=="entry"||c.revision!==n.revision||c.view!==n.view||c.entryIndex!==e.entryIndex)throw xe("Transcript entry cursor is stale; restart entry retrieval");o=c.offset}if(o>r.byteLength||o%Fr!==0)throw xe("Transcript entry cursor offset is invalid");let s=Math.min(r.byteLength,o+Fr),a=await lm(n.filePath,r.offset+o,s-o,t);mm(a,r.chunkDigests[o/Fr]),Oe(t);let u=s<r.byteLength;return{revision:n.revision,entryIndex:e.entryIndex,...r.entryId!==void 0?{entryId:r.entryId}:{},...r.boundaryId!==void 0?{boundaryId:r.boundaryId}:{},data:a.toString("base64"),hasMore:u,...u?{nextCursor:zi({kind:"entry",view:n.view,revision:n.revision,entryIndex:e.entryIndex,offset:s})}:{}}}i(cm,"createRuntimeHistoryEntryChunkFromSnapshot");async function tw(e,n,t){if(n.view!=="conversation")throw xe("Conversation snapshot view does not match the request");let r=await cm(e,n,t);return{revision:r.revision,entryIndex:r.entryIndex,...r.boundaryId!==void 0?{boundaryId:r.boundaryId}:{},encoding:"base64-json",data:r.data,hasMore:r.hasMore,...r.nextCursor!==void 0?{nextCursor:r.nextCursor}:{}}}i(tw,"createRuntimeConversationEntryChunkFromSnapshot");async function rw(e,n,t){let r=await lm(e.filePath,n.offset,n.byteLength,t);mm(r,n.chunkDigests[0]);try{return JSON.parse(r.toString("utf8"))}catch(o){throw Vs(`Transcript snapshot entry is corrupt: ${$e(o).message}`)}}i(rw,"parseRuntimeTranscriptSnapshotEntry");async function lm(e,n,t,r){let o=Buffer.allocUnsafe(t),s;try{s=await $.promises.open(e,"r");let a=0;for(;a<t;){let u=await s.read(o,a,t-a,n+a);if(u.bytesRead===0)throw new Error("Transcript snapshot ended unexpectedly.");a+=u.bytesRead,Oe(r)}return o}catch(a){throw Vi(a)?a:Vs(`Transcript snapshot is unavailable: ${$e(a).message}`)}finally{s!==void 0&&await s.close()}}i(lm,"readRuntimeTranscriptSnapshotBytes");async function iw(e,n){let t=0;for(;t<n.length;){let r=await e.write(n,t,n.length-t,null);if(r.bytesWritten===0)throw new Error("Transcript snapshot write made no progress.");t+=r.bytesWritten}}i(iw,"writeFileHandleFully");function Vi(e){return oe(e)?e.code==="read_timeout"||e.code==="read_cancelled":!1}i(Vi,"isExpectedRuntimeReadTermination");function mm(e,n){let t=Dt("sha256").update(e).digest("hex");if(n===void 0||t!==n)throw Vs("Transcript snapshot integrity check failed; request a fresh boundary")}i(mm,"assertRuntimeTranscriptSnapshotDigest");function Nl(e){return e.length<=ml?e:`${e.slice(0,ml-1)}\u2026`}i(Nl,"previewQueuedInput");function Fs(e,n){if(n.executionCwd===void 0)return;let t=e.runtimeInfo?.workspaceRoot??e.gitRoot;t&&fm(n.executionCwd,t,"executionCwd")}i(Fs,"assertSessionSettingsAllowed");function fm(e,n,t){if(!gr(e,n))throw new Error(`${t} must stay within the session workspace root`)}i(fm,"assertPathWithinRoot");function ow(e,n){let t={...e};return Mr(t,"provider",n.provider),Mr(t,"model",n.model),Mr(t,"permissionMode",n.permissionMode),Mr(t,"executionCwd",n.executionCwd,!0),sw(t,n.shellExecution),Mr(t,"autoModeClassifierModel",n.autoModeClassifierModel),_r(t,"effort",n.effort),_r(t,"thinking",n.thinking),_r(t,"reasoningMode",n.reasoningMode),_r(t,"agentMode",n.agentMode),_r(t,"autoModeEngine",n.autoModeEngine),dw(t,"autoModeTimeoutMs",n.autoModeTimeoutMs),uw(t,"autoModeSpeculativeWindowMs",n.autoModeSpeculativeWindowMs),pm(t,n.compactionTriggerPercent),aw(t,n.compactionTriggerTokens),t}i(ow,"applySessionSettingsPatch");function pm(e,n){if(n!==void 0){if(n===null){Ot(e,"compactionTriggerPercent");return}if(!Number.isFinite(n))throw new Error("compactionTriggerPercent must be a finite number");Xe(e,"compactionTriggerPercent",Ea({triggerPercent:n}).triggerPercent)}}i(pm,"applyNullableCompactionPercentPatch");function sw(e,n){if(n!==void 0){if(n===null){Ot(e,"shellExecution");return}Xe(e,"shellExecution",yr(n))}}i(sw,"applyNullableShellExecutionPatch");function aw(e,n){if(n!==void 0){if(n===null||n===0){Ot(e,"compactionTriggerTokens");return}if(!Number.isSafeInteger(n)||n<0)throw new Error("compactionTriggerTokens must be a positive safe integer or zero");Xe(e,"compactionTriggerTokens",n)}}i(aw,"applyNullableCompactionTokensPatch");function dw(e,n,t){if(t!==void 0){if(t===null){Ot(e,n);return}if(!Number.isSafeInteger(t)||t<=0)throw new Error(`${n} must be a positive safe integer`);Xe(e,n,t)}}i(dw,"applyNullablePositiveIntegerPatch");function uw(e,n,t){if(t!==void 0){if(t===null){Ot(e,n);return}if(!Number.isSafeInteger(t)||t<0)throw new Error(`${n} must be a non-negative safe integer`);Xe(e,n,t)}}i(uw,"applyNullableNonNegativeIntegerPatch");function Mr(e,n,t,r=!1){if(t===void 0)return;if(t===null){Ot(e,n);return}if(r&&!Y.isAbsolute(t))throw new Error(`${String(n)} must be an absolute path`);let o=n==="autoModeClassifierModel"?gm(t):t;Xe(e,n,o)}i(Mr,"applyNullableStringPatch");function gm(e){let n=e.trim();if(n.length===0)throw new Tt("autoModeClassifierModel must be a non-empty classifier model spec.");try{Xa(n)}catch(t){let r=t instanceof Error?t.message:String(t);throw new Tt(`autoModeClassifierModel must be a valid classifier model spec: ${r}`)}return n}i(gm,"validateRuntimeAutoModeClassifierModel");function ym(e,n){if(!(wn(e.permissionMode)!=="auto"||(e.autoModeEngine??"llm")!=="llm")){if(e.autoModeClassifierModel!==void 0){try{gm(e.autoModeClassifierModel)}catch(t){return t instanceof Tt?t:new Tt("Auto LLM classifier model configuration is invalid.")}return}if(!n?.trim().length)return new Tt("Auto LLM requires a classifier model. Set autoModeClassifierModel, the Session/run model, or runtime defaultModel.")}}i(ym,"runtimeAutoModeClassifierModelError");function cw(e,n){let t=ym(e,n);if(t)throw t}i(cw,"assertRuntimeAutoModeClassifierModelConfigured");function _r(e,n,t){if(t!==void 0){if(t===null){Ot(e,n);return}Xe(e,n,t)}}i(_r,"applyNullablePatch");function Xe(e,n,t){e[n]=t}i(Xe,"setMutableSetting");function Ot(e,n){delete e[n]}i(Ot,"deleteMutableSetting");function Ll(e){if(!oe(e))return{};let n={};return st(n,"provider",e.provider),st(n,"model",e.model),st(n,"permissionMode",e.permissionMode),st(n,"executionCwd",e.executionCwd),e.shellExecution!==void 0&&Xe(n,"shellExecution",yr(e.shellExecution)),st(n,"autoModeClassifierModel",e.autoModeClassifierModel),st(n,"effort",e.effort),typeof e.thinking=="boolean"&&Xe(n,"thinking",e.thinking),st(n,"reasoningMode",e.reasoningMode),st(n,"agentMode",e.agentMode),(e.autoModeEngine==="llm"||e.autoModeEngine==="rules")&&Xe(n,"autoModeEngine",e.autoModeEngine),Number.isSafeInteger(e.autoModeTimeoutMs)&&Number(e.autoModeTimeoutMs)>0&&Xe(n,"autoModeTimeoutMs",Number(e.autoModeTimeoutMs)),Number.isSafeInteger(e.autoModeSpeculativeWindowMs)&&Number(e.autoModeSpeculativeWindowMs)>=0&&Xe(n,"autoModeSpeculativeWindowMs",Number(e.autoModeSpeculativeWindowMs)),typeof e.compactionTriggerPercent=="number"&&pm(n,e.compactionTriggerPercent),Number.isSafeInteger(e.compactionTriggerTokens)&&Number(e.compactionTriggerTokens)>0&&Xe(n,"compactionTriggerTokens",Number(e.compactionTriggerTokens)),n}i(Ll,"parseRuntimeSessionSettings");function lw(e){if(!oe(e)||!oe(e.scope))throw new Error("invalid permission grant");let n=e.scope.toolName,t=e.scope.sessionId,r=e.scope.matcher,o=e.persistence,s=e.label,a=e.sourcePermissionId;if(typeof e.id!="string"||typeof e.createdAt!="string"||n!==void 0&&typeof n!="string"||t!==void 0&&typeof t!="string"||o!==void 0&&o!=="session"&&o!=="persistent"||s!==void 0&&typeof s!="string"||a!==void 0&&typeof a!="string")throw new Error("invalid permission grant");return{id:e.id,createdAt:e.createdAt,persistence:o??"persistent",...s!==void 0?{label:s}:{},...a!==void 0?{sourcePermissionId:a}:{},scope:{...n!==void 0?{toolName:n}:{},...t!==void 0?{sessionId:t}:{},...r!==void 0?{matcher:fd(r)}:{}}}}i(lw,"parseRuntimePermissionGrant");function st(e,n,t){typeof t=="string"&&t.length>0&&Xe(e,n,t)}i(st,"setStringIfPresent");function oe(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}i(oe,"isRecord");function mw(e,n){if(!oe(e))throw new Error(`${n} requires a plain object`)}i(mw,"assertPlainObject");function fw(e){let n=new Set(cR);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}i(fw,"sanitizeRuntimeConfigPatch");function pw(e){if(e.homeDir!==void 0)return Y.join(Y.resolve(e.homeDir),".kodax","config.json")}i(pw,"resolveRuntimeConfigFile");function at(e){if(e===void 0)return Va();if(!$.existsSync(e))return{};try{let n=JSON.parse($.readFileSync(e,"utf8"));return oe(n)?n:{}}catch{return{}}}i(at,"readRuntimeConfig");function gw(e,n){if(e===void 0){Ya(n);return}Ur(e,t=>{let r={...t,...n};for(let o of Object.keys(n))n[o]===void 0&&delete r[o];return{config:r,result:void 0}})}i(gw,"patchRuntimeConfig");function yw(e,n){$.mkdirSync(Y.dirname(e),{recursive:!0}),$.writeFileSync(e,`${JSON.stringify(n,null,2)}
|
|
378
|
+
`,"utf8")}i(yw,"writeRuntimeConfigUnlocked");function Ur(e,n){return za(e,()=>{let t=n(at(e));return t.config&&yw(e,t.config),t.result})}i(Ur,"mutateRuntimeConfig");function Rw(e){return e===void 0?nd():vw(Yi(at(e)))}i(Rw,"listRuntimeCustomProviders");function hw(e,n){if(e===void 0)return td(n);ta(n);let t=Ur(e,r=>{let o=Ew(Yi(r),n,s=>s.name===n.name);return{config:{...r,customProviders:o},result:o}});return zr(t),structuredClone(n)}i(hw,"upsertRuntimeCustomProvider");function ww(e,n){if(e===void 0)return rd(n);if(typeof n!="string"||n.length===0)return!1;let t=Ur(e,r=>{let o=Yi(r),s=o.filter(a=>a.name!==n);return s.length===o.length?{result:void 0}:{config:{...r,customProviders:s},result:s}});return t?(zr(t),!0):!1}i(ww,"removeRuntimeCustomProvider");function Rm(e){e!==void 0&&zr(Yi(at(e)))}i(Rm,"registerRuntimeConfiguredCustomProviders");function Yi(e){return Array.isArray(e.customProviders)?structuredClone(e.customProviders):[]}i(Yi,"extractRuntimeCustomProviders");function vw(e){return structuredClone(e)}i(vw,"cloneCustomProviders");function Ms(e){return e===void 0?id():kw(Qi(at(e)))}i(Ms,"listRuntimeMcpServers");function Sw(e,n){if(e===void 0)return od(n);let t=Qi(at(e))[n];return t===void 0?void 0:structuredClone(t)}i(Sw,"getRuntimeMcpServer");function Iw(e,n,t){return e===void 0?sd(n,t):(ho(n,t),Ur(e,r=>{let o={...Qi(r),[n]:structuredClone(t)};return{config:{...r,mcpServers:o},result:void 0}}),structuredClone(t))}i(Iw,"upsertRuntimeMcpServer");function bw(e,n){return e===void 0?ad(n):Ur(e,t=>{let r=Qi(t);if(!(n in r))return{result:!1};let o={...r};return delete o[n],{config:{...t,mcpServers:o},result:!0}})}i(bw,"removeRuntimeMcpServer");function Qi(e){return oe(e.mcpServers)?structuredClone(e.mcpServers):{}}i(Qi,"extractRuntimeMcpServers");function kw(e){return structuredClone(e)}i(kw,"cloneMcpServers");function Ew(e,n,t){let r=e.findIndex(t);return r<0?[...e,structuredClone(n)]:e.map((o,s)=>s===r?structuredClone(n):structuredClone(o))}i(Ew,"upsertConfigEntry");function Pw(e,n){let t=Array.isArray(e)?e:[];if(n?.provider!==void 0){let r=t.find(o=>oe(o)&&o.name===n.provider);return oe(r)?{provider:n.provider,models:Array.isArray(r.models)?r.models:[]}:{provider:n.provider,models:[]}}return t.flatMap(r=>!oe(r)||typeof r.name!="string"?[]:[{provider:r.name,models:Array.isArray(r.models)?r.models:[]}])}i(Pw,"listRuntimeModels");function Fl(e){let n=xw(e).map(Cw),t=Lt()?.listCommands().filter(r=>r.metadata?.userInvocable!==!1).map(Aw)??[];return[...n,...t].sort((r,o)=>r.name.localeCompare(o.name))}i(Fl,"listRuntimeCommands");function xw(e){let n=ud;return typeof n.listRegisteredCommands=="function"?n.listRegisteredCommands(e):Za().getAll()}i(xw,"listReplCommands");function Cw(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}:{}}}i(Cw,"replCommandToRuntimeCommandInfo");function Aw(e){return{name:e.name,...e.aliases!==void 0?{aliases:e.aliases}:{},description:e.description,source:"extension",...e.usage!==void 0?{usage:e.usage}:{}}}i(Aw,"extensionCommandToRuntimeCommandInfo");function ar(e){return Array.isArray(e)?e.map(n=>ar(n)):oe(e)?Object.fromEntries(Object.entries(e).map(([n,t])=>[n,Tw(n)?"[redacted]":ar(t)])):e}i(ar,"redactRuntimeConfig");function Tw(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")}i(Tw,"isSensitiveConfigKey");function Dw(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}}i(Dw,"toRuntimeSkillSummary");function Mw(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(Or)}:{},...e.references!==void 0?{references:e.references.map(Or)}:{},...e.assets!==void 0?{assets:e.assets.map(Or)}:{},...e.templates!==void 0?{templates:e.templates.map(Or)}:{},...e.resources!==void 0?{resources:e.resources.map(Or)}:{}}}i(Mw,"toRuntimeSkillDescription");function Or(e){return{name:e.name,path:e.path,relativePath:e.relativePath}}i(Or,"toRuntimeSkillFileSummary");function mr(e){if(!oe(e))throw new Error("Invalid runtime daemon response: expected object");return e}i(mr,"requireRuntimeRecord");function hm(e){let n=mr(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}:{}}}i(hm,"parseRuntimeIdentity");function _w(e){let n={};return e.provider!==void 0&&Xe(n,"provider",e.provider),e.model!==void 0&&Xe(n,"model",e.model),e.effort!==void 0&&Xe(n,"effort",e.effort),e.thinking!==void 0&&Xe(n,"thinking",e.thinking),e.reasoningMode!==void 0&&Xe(n,"reasoningMode",e.reasoningMode),e.permissionMode!==void 0&&Xe(n,"permissionMode",e.permissionMode),e.executionCwd!==void 0&&Xe(n,"executionCwd",e.executionCwd),e.shellExecution!==void 0&&Xe(n,"shellExecution",yr(e.shellExecution)),e.agentMode!==void 0&&Xe(n,"agentMode",e.agentMode),e.autoModeEngine!==void 0&&Xe(n,"autoModeEngine",e.autoModeEngine),e.autoModeClassifierModel!==void 0&&Xe(n,"autoModeClassifierModel",e.autoModeClassifierModel),e.autoModeTimeoutMs!==void 0&&Xe(n,"autoModeTimeoutMs",e.autoModeTimeoutMs),e.autoModeSpeculativeWindowMs!==void 0&&Xe(n,"autoModeSpeculativeWindowMs",e.autoModeSpeculativeWindowMs),e.compactionTriggerPercent!==void 0&&Xe(n,"compactionTriggerPercent",e.compactionTriggerPercent),e.compactionTriggerTokens!==void 0&&Xe(n,"compactionTriggerTokens",e.compactionTriggerTokens),n}i(_w,"serializeSessionSettings");function Ow(){return`run_${Date.now().toString(36)}_${Qe().replace(/-/g,"").slice(0,8)}`}i(Ow,"createRunId");function Nw(){return`input_${Date.now().toString(36)}_${Qe().replace(/-/g,"").slice(0,8)}`}i(Nw,"createInputId");function wm(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.entryId!==void 0?{entryId:e.entryId}:{},...e.origin!==void 0?{origin:e.origin}:{}}}i(wm,"runtimeInterruptInputStatus");function un(e){return{runId:e.runId,sessionId:e.sessionId,...e.turnId!==void 0?{turnId:e.turnId}:{},phase:e.phase,...e.stage!==void 0?{stage:e.stage}:{},...e.stageChangedAt!==void 0?{stageChangedAt:e.stageChangedAt}:{},...e.activeSubtaskCount!==void 0?{activeSubtaskCount:e.activeSubtaskCount}:{},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.lifecycleError!==void 0?{lifecycleError:e.lifecycleError}:{},...e.terminal!==void 0?{terminal:e.terminal}:{},...e.stop!==void 0?{stop:e.stop}:{},...e.continuation!==void 0?{continuation:{...e.continuation,state:Lw(e.phase)}}:{},...e.interruptInputs.length>0?{interruptInputs:e.interruptInputs.map(wm)}:{}}}i(un,"statusFromRecord");function Lw(e){return e==="queued"?"queued":Ne(e)?"terminal":"delivered"}i(Lw,"runtimeContinuationState");function vm(e){return{runId:e.runId,sessionId:e.sessionId,phase:e.phase,...e.error!==void 0?{error:new Error(e.error)}:{},...e.terminal!==void 0?{terminal:e.terminal}:{},...e.stop!==void 0?{stop:e.stop}:{}}}i(vm,"resultFromStatus");function Li(e){let n=e.status.stop,t=n?.outcome??(e.status.phase==="completed"?"completed":e.status.phase==="failed"?"failed":e.status.phase==="cancelled"?"cancelled":e.status.phase==="interrupted"?"interrupted":"unknown");return{runId:e.status.runId,sessionId:e.status.sessionId,accepted:e.accepted,state:n?.state??(Ne(e.status.phase)?"confirmed":"unknown"),outcome:t,phase:e.status.phase,revision:e.revision}}i(Li,"runtimeRunStopReceipt");function Fw(e){if(e.length<=Bn)return e;let n=e.filter(o=>!Ne(o.status.phase)).sort((o,s)=>et(o.status,s.status)).slice(-Bn),t=Bn-n.length,r=t===0?[]:e.filter(o=>Ne(o.status.phase)).sort((o,s)=>et(o.status,s.status)).slice(-t);return[...n,...r]}i(Fw,"recentRunStatuses");function jl(e){if(e.length<=Bn)return e;let n=e.filter(o=>!Ne(o.phase)),t=Math.max(0,Bn-n.length),r=t===0?[]:e.filter(o=>Ne(o.phase)).sort(et).slice(-t);return[...n,...r]}i(jl,"boundedRuntimeRunStatuses");function Hl(e){return[...e].sort((n,t)=>{let r=(n.acceptedAt??n.startedAt).localeCompare(t.acceptedAt??t.startedAt);if(r!==0)return r;let o=n.sessionId.localeCompare(t.sessionId);if(o!==0)return o;let s=(n.sessionOrder??0)-(t.sessionOrder??0);return s!==0?s:n.runId.localeCompare(t.runId)})}i(Hl,"canonicalRuntimeRunStatuses");function jw(e){if(e.size<=Bn)return;let n=[...e.values()].filter(t=>Ne(t.phase)).sort((t,r)=>et(un(t),un(r)));for(let t of n){if(e.size<=Bn)return;e.delete(t.runId)}}i(jw,"pruneTerminalRuns");function et(e,n){let t=e.endedAt??e.startedAt,r=n.endedAt??n.startedAt,o=t.localeCompare(r);return o!==0?o:e.runId.localeCompare(n.runId)}i(et,"compareRunStatusRecency");function $l(e,n){return n?n.sessionId!==void 0&&e.sessionId!==n.sessionId?!1:n.phase===void 0?!0:(Array.isArray(n.phase)?n.phase:[n.phase]).includes(e.phase):!0}i($l,"runStatusMatchesFilter");function Sm(e){return[...e].sort((n,t)=>{let r=ql(n.phase),o=ql(t.phase);if(r!==o)return o-r;let s=n.sessionOrder??0,a=t.sessionOrder??0;return s!==a?a-s:et(t,n)})[0]}i(Sm,"authoritativeSessionRun");function ql(e){return e==="unknown"?4:Cn(e)?3:e==="queued"?2:1}i(ql,"runtimeSessionRunPriority");function Fi(e,n){if(!(e.ownedByRuntime||Ne(e.phase)))throw Zn(`Run ${e.runId} is owned by another live Runtime; ${n.runtimeId} may observe but not mutate it.`,e.sessionOrder)}i(Fi,"assertRuntimeOwnsRun");function Hw(e,n,t){return[...n.values()].some(s=>s.sessionId===e&&s.ownedByRuntime&&(s.phase==="queued"||Cn(s.phase)||s.phase==="unknown"||s.start!==void 0&&s.settlementFinished!==!0))?"local":t.loadRunStatuses().some(({status:s})=>s.sessionId===e&&(s.phase==="queued"||Cn(s.phase)||s.phase==="unknown"))?"foreign":void 0}i(Hw,"runtimeSessionActiveRunOwner");function xt(e,n,t,r,o){if(t.terminalEmitted)return;delete t.actorHealthBaseState,delete t.lifecycleError,t.error==="stop_outcome_unconfirmed"&&delete t.error,t.interruptInputOpen=!1,$i(t),t.phase=r;let s=new Date().toISOString();t.stage="terminal",t.stageChangedAt=s,t.activeSubtaskCount=0,t.endedAt=s,t.stop!==void 0&&(t.stop={...t.stop,state:"confirmed",outcome:r==="completed"?"completed":r==="failed"?"failed":r==="interrupted"?"interrupted":"cancelled",resolvedAt:s}),t.terminalEmitted=!0;let a=r==="completed"?"completed":r==="cancelled"?"cancelled":r==="interrupted"?"interrupted":"failed";t.terminal={revision:1,kind:a,code:o?.code??Bw(a),effectOutcome:o?.effectOutcome??(a==="interrupted"?"unknown":"known"),...o?.message!==void 0?{message:o.message}:{}};let u=r==="completed"?"run.completed":r==="cancelled"?"run.cancelled":r==="interrupted"?"run.interrupted":"run.failed",c=un(t),p=nt(e,n,t,c);if(p!==void 0&&p!==c){At(t,p);return}e.emit(u,un(t),{sessionId:t.sessionId,runId:t.runId,...t.turnId!==void 0?{turnId:t.turnId}:{}})}i(xt,"markRunTerminal");function $i(e){for(let n of e.interruptInputs)n.state==="queued"&&(n.queueMessageId!==void 0&&(ca().dequeue({agentId:to(e.sessionId,"/root"),maxPriority:"user",mode:"prompt",id:n.queueMessageId}),delete n.queueMessageId),n.state="terminal")}i($i,"terminalizeQueuedInterruptInputs");function nt(e,n,t,r){try{return n.saveRunStatus(r)}catch(o){let s=t?.turnId??r.turnId;e.emit("runtime.warning",{message:`Failed to save runtime run status for ${r.runId}: ${$e(o).message}`,runId:r.runId,phase:r.phase},{sessionId:r.sessionId,runId:r.runId,...s!==void 0?{turnId:s}:{}});return}}i(nt,"saveRunStatusSafely");function At(e,n){e.phase=n.phase,e.stage=n.stage,e.stageChangedAt=n.stageChangedAt,e.activeSubtaskCount=n.activeSubtaskCount,e.provider=n.provider,e.queuedAt=n.queuedAt,e.runningAt=n.runningAt,e.endedAt=n.endedAt,e.model=n.model,e.reasoning=n.reasoning,e.error=n.error,e.lifecycleError=n.lifecycleError,e.terminal=n.terminal,e.stop=n.stop,e.terminalEmitted=Ne(n.phase),e.interruptInputOpen=!1}i(At,"applyAuthoritativeRunStatus");function Ne(e){return e==="completed"||e==="failed"||e==="cancelled"||e==="interrupted"}i(Ne,"isTerminalRunPhase");function $w(e){return e.type==="workflow_started"?"workflow.started":e.type==="workflow_finished"?"workflow.finished":"workflow.updated"}i($w,"workflowEventType");function qw(e){return e==="completed"||e==="failed"||e==="cancelled"}i(qw,"isFinalWorkflowStatus");function Bw(e){return e==="completed"?"completed":e==="failed"?"run_failed":e==="cancelled"?"cancelled":"interrupted"}i(Bw,"defaultRuntimeTerminalCode");function Kw(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"}}}i(Kw,"classifyRuntimeRunFailure");function Im(e,n){if(!n.hadProviderCredential)return $e(e);let t=new Error("Provider run failed while using a run-scoped credential.");return t.name="KodaXProviderRunError",t}i(Im,"normalizeRuntimeRunError");function Xw(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}i(Xw,"permissionMatchesFilter");function Uw(e){return e===!0?{type:"allow_once"}:{type:"reject",reason:e===!1?"tool execution rejected":e}}i(Uw,"decisionToPermissionDecision");function Ww(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"}i(Ww,"autoModeEscalationRisk");var Jw=8;function js(e){return Y.resolve(e.start?.options.context?.executionCwd??e.start?.options.context?.gitRoot??process.cwd())}i(js,"resolveRuntimeExecutionCwd");function zw(e){let n=e.start?.options.context?.shellExecution;if(n===void 0)return;let t=n.shell.kind;return{shell:t==="bash"||t==="zsh"?"posix":t==="cmd"?"cmd":"powershell",shellContractFingerprint:lo(n)}}i(zw,"runtimeShellPermissionIdentity");function Ct(e){return e.kind==="tool"&&e.name==="auto-mode"&&"getEngine"in e&&typeof e.getEngine=="function"&&"consumeAllowedCall"in e&&typeof e.consumeAllowedCall=="function"&&"consumeWorkspaceSandboxCall"in e&&typeof e.consumeWorkspaceSandboxCall=="function"}i(Ct,"isRuntimeAutoModeGuardrail");function Vw(e){if(wn(e.permissionMode)==="auto")return e.start?.options.guardrails?.find(Ct)}i(Vw,"getRuntimeAutoModeGuardrail");function zs(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(s=>typeof s=="symbol"))throw new Error("Tool input must not contain symbol properties.");if(Array.isArray(e)){let s=r.filter(a=>a!=="length"&&typeof a=="string").map(a=>{let u=Number(a);if(!Number.isInteger(u)||u<0||u>=e.length||String(u)!==a)throw new Error("Tool input arrays must not contain named properties.");return{index:u,key:a}}).sort((a,u)=>a.index-u.index);return`array:${e.length}:[${s.map(({key:a})=>`${a}:${Bl(e,a,n)}`).join("")}]`}return`object:{${r.filter(s=>typeof s=="string").sort().map(s=>`${zs(s,n)}${Bl(e,s,n)}`).join("")}}`}finally{n.delete(e)}}i(zs,"serializeRuntimeToolInput");function Bl(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 zs(r.value,t)}i(Bl,"serializeRuntimeDataProperty");function ur(e){try{let n=zs(e.input);return Dt("sha256").update(`${e.id}\0${e.name}\0${n}`).digest("hex")}catch{return}}i(ur,"runtimeAutoModeDecisionKey");function Gw(e,n){let t=$r.homedir(),r=e.path,o=(r==="~"?t:/^~[\\/]/.test(r)?Y.join(t,r.slice(2)):r).replace(/^(?:\$\{HOME\}|\$HOME|\$env:(?:home|userprofile)|%userprofile%)(?=$|[\\/])/i,t),s=Y.resolve(n,o);if(gr(s,Y.resolve(eo())))return e.boundary==="agent-home"||e.boundary==="agent-home-readonly"||e.boundary==="protected"?s:void 0}i(Gw,"runtimePermissionAgentHomePath");function Yw(e,n){let t=new Set,r=new Set,o=!1,s=i((a,u,c)=>{let p=Gw(a,n);if(p===void 0)return;u.add(p),a.boundary==="agent-home"||!c&&a.boundary==="agent-home-readonly"||(o=!0)},"add");for(let a of e.operations){if("target"in a){let u=a.kind==="read"||a.options?.whatIf===!0;s(a.target,u?t:r,!u);continue}if("source"in a){let u=a.kind==="copy";s(a.source,u?t:r,!u),s(a.destination,r,!0)}}return t.size===0&&r.size===0?void 0:{read:[...t],write:[...r],...o?{ephemeral:!0}:{}}}i(Yw,"runtimePermissionReviewAgentHomeAccess");function Qw(e){if(process.platform!=="win32")return!1;let n=Y.resolve(process.env.SystemRoot??"C:\\Windows","Temp"),t=i(r=>{if(!Y.isAbsolute(r))return!1;let o=Y.relative(n,Y.resolve(r));return o===""||!o.startsWith("..")&&!Y.isAbsolute(o)},"isSystemTemp");return e.operations.some(r=>"target"in r?t(r.target.path):"source"in r?t(r.source.path)||t(r.destination.path):!1)}i(Qw,"reviewTouchesProtectedWindowsSystemTemp");function Zw(e,n){let t=new Set;return{...e,beforeTool:i(async(r,o)=>{if(!e.beforeTool)return{action:"block",reason:"Runtime auto-mode guardrail has no beforeTool hook."};let s=await e.beforeTool(r,o);if(s.action==="allow"){let a=mo(r),u=a?.ok?a.call:r,c=ur(u);c!==void 0&&t.add(c)}return s},"beforeTool"),consumeAllowedCall(r){let o=ur(r);return o===void 0||!t.has(o)?!1:(t.delete(o),!0)},consumeWorkspaceSandboxCall(r){let o=ur(r);if(o===void 0)return;let s=n.get(o);if(s!==void 0)return n.delete(o),s},clearAllowedCalls(){t.clear(),n.clear()}}}i(Zw,"createRuntimeOwnedAutoModeGuardrail");function ev(e){let n=new Set,t,r,o=i(async()=>{let s=(await e.settingsOwner.read(e.sessionId)).value,a=e.getRecord();if(a&&(a.permissionMode=s.permissionMode,a.autoModeEngine=wn(s.permissionMode)==="auto"?s.autoModeEngine??"llm":s.autoModeEngine,a.autoModeClassifierModel=s.autoModeClassifierModel,a.autoModeTimeoutMs=s.autoModeTimeoutMs,a.autoModeSpeculativeWindowMs=s.autoModeSpeculativeWindowMs),r=ym(s,a?.model??e.model),r){t=void 0;return}let u=await tv({...e,settings:s});return t=u,u},"resolveGuardrail");return{kind:"tool",name:"auto-mode",async prepare(){if(await o(),r)throw r},async beforeTool(s,a){let u=await o();if(!u?.beforeTool)return r?{action:"block",reason:r.message}:{action:"allow"};t=u;let c=await u.beforeTool(s,a);if(c.action==="allow"){let p=mo(s),R=p?.ok?p.call:s;u.consumeAllowedCall(R);let I=ur(R);I!==void 0&&n.add(I)}return c},getEngine(){if(t)return t.getEngine();let s=e.settingsOwner.peek(e.sessionId)?.value;return wn(s?.permissionMode)==="auto"?s?.autoModeEngine??"llm":"rules"},consumeAllowedCall(s){let a=ur(s);return a===void 0||!n.has(a)?!1:(n.delete(a),!0)},consumeWorkspaceSandboxCall(s){return t?.consumeWorkspaceSandboxCall(s)},clearAllowedCalls(){n.clear(),t?.clearAllowedCalls()}}}i(ev,"createRuntimeSessionAutoModeGuardrail");function nv(e){if(e===void 0)return!0;if((e.shell.profile??"default")!=="none")return!1;let n=e.environment;return n?.setup!==void 0||(n?.denyPatterns?.length??0)>0?!1:!Object.keys(n?.set??{}).some(t=>["TEMP","TMP","TMPDIR"].includes(t.toUpperCase()))}i(nv,"runtimeShellUsesProcessEnvironmentPathAliases");async function tv(e){if(wn(e.settings.permissionMode)!=="auto")return;let n=e.settings.autoModeEngine??"llm",t=e.states.get(e.sessionId);t===void 0?(t={engine:n,denials:go(),breaker:po()},e.states.set(e.sessionId,t)):t.engine=n;let r=Y.resolve(e.options.context?.executionCwd??e.settings.executionCwd??e.options.context?.gitRoot??process.cwd()),o=Y.resolve(e.options.context?.gitRoot??r),s=nv(e.options.context?.shellExecution),a=JSON.stringify([process.platform==="win32"?o.toLowerCase():o,process.platform==="win32"?r.toLowerCase():r,n,e.settings.autoModeClassifierModel??null,e.settings.autoModeTimeoutMs??null,e.settings.autoModeSpeculativeWindowMs??null,s]),u=e.cache.get(e.sessionId)??new Map;e.cache.set(e.sessionId,u);let c=u.get(a);if(c?.engine===n)return c.guardrail;c&&u.delete(a);let p,R=new Map,I=await ed({askUser:i(async(x,f,C,m)=>{let k=e.getRecord();if(!k)return"block";let l=k.phase;k.phase==="running"&&e.onPhase(k,"waiting_permission");try{let v=await e.permissions.requestOwned({sessionId:e.sessionId,runId:k.runId,...k.turnId!==void 0?{turnId:k.turnId}:{},toolCallId:x.id,toolName:x.name,reason:f.slice(0,512),risk:Ww(C),inputPreview:cr(x.input),executionCwd:r,...m!==void 0?{autoModeDiagnostics:m}:{}},{toolInput:x.input,projectRoot:o,...C!==void 0?{signals:C}:{}});return v.type==="reject"&&v.cause==="approval_timeout"?"timeout":v.type==="allow_once"||v.type==="allow_session"||v.type==="allow_always"?"allow":"block"}finally{k.phase==="waiting_permission"&&e.onPhase(k,l==="queued"?"running":l)}},"askUser"),projectRoot:o,executionCwd:r,trustProcessEnvironmentPathExpansion:s,requireWorkspaceShellSandbox:!0,admitWorkspaceSandboxCall:i((x,f)=>{if(Qw(f))return;let C=ur(x);C!==void 0&&R.set(C,f)},"admitWorkspaceSandboxCall"),getCurrentProviderName:i(()=>e.getRecord()?.provider??e.provider,"getCurrentProviderName"),getCurrentModel:i(()=>e.getRecord()?.model??e.model,"getCurrentModel"),getCurrentPermissionMode:i(()=>"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:[Qa],onEngineChange:i(x=>{p&&(p.engine=x),e.onEngineChange(x)},"onEngineChange")}),y=Zw(I.getGuardrail(),R);for(p={projectRoot:o,executionCwd:r,engine:y.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:y},u.set(a,p);u.size>Jw;){let x=u.keys().next().value;if(x===void 0||x===a)break;u.get(x)?.guardrail.clearAllowedCalls(),u.delete(x)}return y}i(tv,"createRuntimeAutoModeGuardrail");function Kl(e,n,t){if(Yl.has(n))return!0;let r=wn(e.permissionMode);if(r===void 0)return;let o=e.start?.options.context?.gitRoot??e.start?.options.context?.executionCwd,s=o===void 0?void 0:Y.resolve(o),a=js(e);if(r==="plan"){let u=Ha(n,t,s,a);return u===null?!0:`${u} Finish the plan before switching to a writable permission mode.`}if(n==="bash"){let u=typeof t.command=="string"?t.command:"";if(ja(u,s??a,a))return!0;if(Fa(u,s??a,a))return}if(s&&Na.has(n)){let u=typeof t.path=="string"?t.path:void 0;if(u&&La(oa(u,a),s))return}return Ja(r).has(n)?void 0:!0}i(Kl,"resolveRuntimePermissionPolicy");function Xl(e){return e?e.type==="allow_once"||e.type==="allow_session"||e.type==="allow_always"?!0:e.reason??!1:!1}i(Xl,"decisionToToolDecision");var rv=8192,Xr=16384,Ul=16,iv={command:2048,description:1024,file_path:1024,path:1024,paths:1024,cwd:1024,url:1024,preview:2048},ov=/(?:api[_-]?key|authorization|cookie|credential|password|secret|token)/i;function Hs(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]
|
|
379
|
+
`).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]@")}i(Hs,"redactPermissionPreviewString");function cr(e){try{return sv(e)}catch{return'{"__truncated":true}'}}i(cr,"previewInput");function sv(e){let n={},t=!0;for(let[o,s]of Object.entries(iv)){let a=Object.getOwnPropertyDescriptor(e,o);if(!a||!a.enumerable||!("value"in a))continue;if(ov.test(o)){n[o]="[REDACTED]";continue}let u=a.value;if(typeof u=="string"){let c=u.slice(0,Xr),p=Hs(c);n[o]=p.length<=s?p:`${p.slice(0,Math.max(0,s-1))}\u2026`,t||=u.length>c.length||p.length>s;continue}if(o==="paths"&&Array.isArray(u)){let c=[];for(let p of u.slice(0,Ul)){if(typeof p!="string"){t=!0;continue}let R=p.slice(0,Xr),I=Hs(R);c.push(I.slice(0,s)),t||=p.length>R.length||I.length>s}t||=u.length>Ul,n[o]=c;continue}if(typeof u=="boolean"||typeof u=="number"||typeof u=="bigint"){n[o]=typeof u=="bigint"?u.toString():u;continue}t=!0}t&&(n.__truncated=!0);let r=JSON.stringify(n);return r.length<=rv?r:'{"__truncated":true}'}i(sv,"buildPermissionInputPreview");function av(e){if(e.length>Xr)return cr({preview:e.slice(0,Xr)});try{let n=JSON.parse(e);return cr(oe(n)?n:{value:n})}catch{return cr({preview:e})}}i(av,"normalizePermissionInputPreview");function $e(e){return e instanceof Error?e:new Error(String(e))}i($e,"normalizeError");function Zn(e,n){return Object.assign(new Error(e),{code:"conflict",currentRevision:n})}i(Zn,"createRuntimeConflictError");function $s(e){return Object.assign(new Error(`Session is archived and cannot execute until it is unarchived: ${e}`),{code:"session_archived"})}i($s,"createSessionArchivedError");function xe(e){return Object.assign(new Error(e),{code:"resync_required"})}i(xe,"createRuntimeResyncError");function Wl(e){return e instanceof mn&&e.code==="data_changed"?xe("Conversation history changed; acquire a fresh history boundary"):$e(e)}i(Wl,"normalizeConversationBoundaryMutationError");function Vs(e){return Object.assign(xe(e),{snapshotInvalid:!0})}i(Vs,"createRuntimeTranscriptSnapshotInvalidError");function dv(e){return oe(e)&&e.snapshotInvalid===!0}i(dv,"isRuntimeTranscriptSnapshotInvalidError");function ji(){return Object.assign(new Error(`Transcript snapshot storage limit exceeded (${jr} bytes)`),{code:"overloaded",data:{limitBytes:jr}})}i(ji,"createRuntimeSnapshotCapacityError");function Gi(){return Object.assign(new Error(`Runtime history page limit exceeded (${_t} bytes)`),{code:"overloaded",data:{limitBytes:_t}})}i(Gi,"createRuntimeHistoryPageCapacityError");function uv(){return Object.assign(new Error(`Transcript snapshot I/O limit exceeded (${Xi} operations)`),{code:"overloaded",data:{resource:"transcript_snapshot_io",limit:Xi}})}i(uv,"createRuntimeSnapshotIoCapacityError");function cv(e,n){return Vi(e)?e:oe(e)&&(e.code==="overloaded"||e.code==="resync_required")?e instanceof Error?e:Object.assign(new Error("Transcript snapshot operation failed"),e):n?new mn("read_cancelled","Runtime history read cancelled because the Runtime is closing"):oe(e)&&(e.code==="ENOENT"||e.code==="ENOTDIR")?xe("Transcript snapshot storage changed; request a fresh boundary"):Object.assign(new Error("Unable to materialize the transcript snapshot",{cause:e}),{code:"internal_error"})}i(cv,"normalizeRuntimeSnapshotMaterializationError");function bm(e){return Object.assign(new Error(e),{code:"invalid_input"})}i(bm,"createRuntimeInvalidInputError");function lv(e){return Object.assign(new Error(e),{code:"credential_unavailable"})}i(lv,"createRuntimeCredentialUnavailableError");function mv(){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}}}i(mv,"createUnsupportedCredentialService");function fv(){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}}}i(fv,"createUnsupportedHostToolService");function sr(e,n){let t=n(e);if(t===void 0)return;let r=new Error(`Session has an active run and cannot be mutated: ${e}`);throw Object.defineProperty(r,"code",{configurable:!0,enumerable:!0,value:t==="foreign"?"actor_owner_conflict":"conflict"}),r}i(sr,"assertSessionMutationAllowed");function Jl(e,n){if(!("ok"in n))throw n.error.code==="session_running"?new Error(`Session is running and cannot be deleted: ${e}`):Object.assign(new Error(`Session could not be deleted: ${e}`),{code:"session_delete_failed"})}i(Jl,"assertDeleteSucceeded");function pv(e){return structuredClone(e)}i(pv,"cloneMessage");export{Oo as a,tt as b,No as c,Bt as d,gt as e,li as f,vi as g,Xu as h,Uu as i,Sp as j,Ip as k,nR as l,jn as m,Tt as n,ib as o,ob as p,sb as q,ab as r,db as s,ub as t,cb as u,TR as v,Ql as w};
|