@kodax-ai/kodax 0.7.97-beta.2 → 0.7.97-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/CHANGELOG.md +96 -0
  2. package/README.md +55 -2
  3. package/README_CN.md +37 -1
  4. package/dist/artifacts/dist/contract.js +1 -1
  5. package/dist/artifacts/dist/contract.js.map +1 -1
  6. package/dist/artifacts/dist/document-render.d.ts +1 -1
  7. package/dist/artifacts/dist/document-render.js +41 -10
  8. package/dist/artifacts/dist/document-render.js.map +1 -1
  9. package/dist/artifacts/dist/kodax.js +1 -1
  10. package/dist/artifacts/dist/kodax.js.map +1 -1
  11. package/dist/artifacts/dist/libreoffice.d.ts +6 -1
  12. package/dist/artifacts/dist/libreoffice.js +37 -13
  13. package/dist/artifacts/dist/libreoffice.js.map +1 -1
  14. package/dist/artifacts/dist/runtime.js +13 -6
  15. package/dist/artifacts/dist/runtime.js.map +1 -1
  16. package/dist/artifacts/skills/artifact-review/SKILL.md +5 -1
  17. package/dist/chunks/agent-NWQPMZ7B.js +2 -0
  18. package/dist/chunks/agent-adapter-V3IPADCX.js +2 -0
  19. package/dist/chunks/argument-completer-VNKHT4X4.js +2 -0
  20. package/dist/chunks/{bedrock-native-Z5VNWF5U.js → bedrock-native-OEPOBW6W.js} +1 -1
  21. package/dist/chunks/{chunk-NSR4RW2F.js → chunk-3I2MIS4D.js} +1 -1
  22. package/dist/chunks/{chunk-RYBUYHDL.js → chunk-3Y5PBEOD.js} +1 -1
  23. package/dist/chunks/chunk-4FVCMKG2.js +20 -0
  24. package/dist/chunks/{chunk-F6GJXQNA.js → chunk-4GYXZTOD.js} +7 -7
  25. package/dist/chunks/{chunk-EISRVOBJ.js → chunk-4Z7ZHL6V.js} +2 -2
  26. package/dist/chunks/{chunk-W2CWO4PQ.js → chunk-576AAIQM.js} +1 -1
  27. package/dist/chunks/chunk-5E2P4RYS.js +4 -0
  28. package/dist/chunks/{chunk-X5M7TLJV.js → chunk-5LFQ5FVY.js} +1 -1
  29. package/dist/chunks/{chunk-WMMESRP3.js → chunk-6RDMSU4B.js} +1 -1
  30. package/dist/chunks/{chunk-3CP7AUWY.js → chunk-7BA4TSKC.js} +1 -1
  31. package/dist/chunks/{chunk-I325ER7D.js → chunk-AUU3N4V4.js} +1 -1
  32. package/dist/chunks/{chunk-DCE7XQUG.js → chunk-AYDLX2UK.js} +1 -1
  33. package/dist/chunks/{chunk-D36OIMV7.js → chunk-BP3NAYKY.js} +64 -64
  34. package/dist/chunks/{chunk-6TITQQAI.js → chunk-BSCSKJNC.js} +230 -229
  35. package/dist/chunks/{chunk-2HH5AS7E.js → chunk-DAQGOWKD.js} +88 -462
  36. package/dist/chunks/{chunk-UF3GZ5PO.js → chunk-EZF6ZRCO.js} +1 -1
  37. package/dist/chunks/chunk-F2TFWNVZ.js +2 -0
  38. package/dist/chunks/{chunk-53CJDQS2.js → chunk-FVXZ5L33.js} +1 -1
  39. package/dist/chunks/{chunk-MCDZNQWD.js → chunk-G32BMSHH.js} +75 -71
  40. package/dist/chunks/chunk-HJLYZ5AX.js +361 -0
  41. package/dist/chunks/{chunk-P55RJIOG.js → chunk-IOIFCU46.js} +1 -1
  42. package/dist/chunks/{chunk-DV5YPYLW.js → chunk-IR46ZHXU.js} +1 -1
  43. package/dist/chunks/chunk-NJDR5EEF.js +6 -0
  44. package/dist/chunks/{chunk-KDSO7V4O.js → chunk-OC3DQXN6.js} +1 -1
  45. package/dist/chunks/{chunk-J2L2NK6E.js → chunk-OMVAPRQI.js} +90 -57
  46. package/dist/chunks/chunk-OXCB2TRF.js +42 -0
  47. package/dist/chunks/{chunk-C6JGLEYD.js → chunk-P6R6V7EW.js} +1 -1
  48. package/dist/chunks/{chunk-SK3RRGHJ.js → chunk-PFBZ4ZXO.js} +28 -28
  49. package/dist/chunks/{chunk-V2XJSFFE.js → chunk-QDE6THC5.js} +1 -1
  50. package/dist/chunks/{chunk-EPK6EWRI.js → chunk-QRYEP34M.js} +1 -1
  51. package/dist/chunks/chunk-ROWYE472.js +460 -0
  52. package/dist/chunks/{chunk-R42S4BLA.js → chunk-SQGESMNC.js} +1 -1
  53. package/dist/chunks/{chunk-XZSFUGPN.js → chunk-U73VEVMP.js} +1 -1
  54. package/dist/chunks/{chunk-D425EZGC.js → chunk-V2TG7GNW.js} +1 -1
  55. package/dist/chunks/{chunk-QSZCR5GC.js → chunk-VRO2CDBY.js} +97 -97
  56. package/dist/chunks/{chunk-BBZWF2EA.js → chunk-WMQQQY3D.js} +1 -1
  57. package/dist/chunks/{chunk-JAF2YLZO.js → chunk-X3YYJJTF.js} +2 -2
  58. package/dist/chunks/{chunk-UL6YIT4M.js → chunk-XYRI6ER5.js} +1 -1
  59. package/dist/chunks/chunk-YRPB3LID.js +3 -0
  60. package/dist/chunks/{chunk-5MUVRFMU.js → chunk-ZDAU3LZ2.js} +1 -1
  61. package/dist/chunks/{chunk-WWPVEK6B.js → chunk-ZP3YSYWM.js} +10 -10
  62. package/dist/chunks/{client-LTIFNED5.js → client-NJ32JBC3.js} +1 -1
  63. package/dist/chunks/compaction-config-JBQGU3NO.js +2 -0
  64. package/dist/chunks/{construction-bootstrap-OAZKGI5Y.js → construction-bootstrap-CM47ZXG7.js} +1 -1
  65. package/dist/chunks/dist-O6BHIQEP.js +2 -0
  66. package/dist/chunks/{google-native-WLL27OV7.js → google-native-BV5GKT5B.js} +1 -1
  67. package/dist/chunks/host-PI5NL4W4.js +2 -0
  68. package/dist/chunks/{mistral-native-JXPIDDYZ.js → mistral-native-X42JCFZH.js} +1 -1
  69. package/dist/chunks/{model-DZF6URW3.js → model-MT3WJX76.js} +1 -1
  70. package/dist/chunks/{permission-YVVMLQ5I.js → permission-YVDVSE6H.js} +1 -1
  71. package/dist/chunks/{pi-messages-5LLOZH57.js → pi-messages-DVJANXV5.js} +1 -1
  72. package/dist/chunks/readline-helpers-5JS7UGTE.js +2 -0
  73. package/dist/chunks/run-manager-Y6VYEWSJ.js +2 -0
  74. package/dist/chunks/running-session-ANMBA5XV.js +2 -0
  75. package/dist/chunks/skills-XL2XIBWV.js +2 -0
  76. package/dist/chunks/{tool-dispatch-MLM3QTSU.js → tool-dispatch-2FOG65FC.js} +1 -1
  77. package/dist/chunks/{utils-2QNMYRGA.js → utils-XZ22R6VB.js} +1 -1
  78. package/dist/client-history.js +2 -0
  79. package/dist/history-turn.js +3 -0
  80. package/dist/index.d.ts +19 -19
  81. package/dist/index.js +2 -2
  82. package/dist/kodax_bootstrap.js +1 -1
  83. package/dist/kodax_cli.js +1472 -1810
  84. package/dist/kodax_doctor.js +1 -1
  85. package/dist/maintenance-scheduler.js +2 -0
  86. package/dist/manual-topics.json +32 -3
  87. package/dist/native/win32-x64/kodax-windows-sandbox.exe +0 -0
  88. package/dist/native/win32-x64/kodax-windows-text-transaction.node +0 -0
  89. package/dist/native/win32-x64/manifest.json +2 -2
  90. package/dist/one-shot-task.js +1 -1
  91. package/dist/provider-auth-cli.js +1 -1
  92. package/dist/runtime-daemon-schema.json +1 -1
  93. package/dist/sandbox-network-broker.js +93 -441
  94. package/dist/sdk-a2a.d.ts +13 -13
  95. package/dist/sdk-a2a.js +1 -1
  96. package/dist/sdk-agent.d.ts +17 -12
  97. package/dist/sdk-agent.js +1 -1
  98. package/dist/sdk-client.d.ts +6 -6
  99. package/dist/sdk-client.js +1 -1
  100. package/dist/sdk-coding.d.ts +17 -17
  101. package/dist/sdk-coding.js +1 -1
  102. package/dist/sdk-experimental-memory.d.ts +2 -2
  103. package/dist/sdk-experimental-memory.js +1 -1
  104. package/dist/sdk-llm.d.ts +4 -2
  105. package/dist/sdk-llm.js +1 -1
  106. package/dist/sdk-mcp.js +1 -1
  107. package/dist/sdk-media.d.ts +13 -13
  108. package/dist/sdk-media.js +1 -1
  109. package/dist/sdk-repl.d.ts +16 -16
  110. package/dist/sdk-repl.js +1 -1
  111. package/dist/sdk-runtime.d.ts +46 -46
  112. package/dist/sdk-runtime.js +1 -1
  113. package/dist/sdk-sandbox.js +1 -1
  114. package/dist/sdk-session.d.ts +7 -7
  115. package/dist/sdk-session.js +1 -1
  116. package/dist/sdk-skills.js +1 -1
  117. package/dist/semantic-worker.js +87 -435
  118. package/dist/storage-repair-cli.js +1 -1
  119. package/dist/types-chunks/{bash-prefix-extractor.d-CJliu5-D.d.ts → bash-prefix-extractor.d-BghXa_md.d.ts} +9 -3
  120. package/dist/types-chunks/{capsule.d-EMwSALqK.d.ts → capsule.d-BTlvC5qq.d.ts} +4 -4
  121. package/dist/types-chunks/{client-contract-B7q69yMA.d.ts → client-contract-B7ZSFKTv.d.ts} +52 -4
  122. package/dist/types-chunks/{controller.d-C0SAuNKu.d.ts → controller.d-Btu5FDdw.d.ts} +1 -1
  123. package/dist/types-chunks/{controller.d-D-hPLKaA.d.ts → controller.d-D6rEz5LS.d.ts} +3 -3
  124. package/dist/types-chunks/{history-retrieval.d-BwEUR9cb.d.ts → history-retrieval.d-B_AriUJp.d.ts} +1 -1
  125. package/dist/types-chunks/{manifest.d-YE3-AIeO.d.ts → manifest.d-Yyce-hHj.d.ts} +1 -1
  126. package/dist/types-chunks/{public-api.d-BhDU643p.d.ts → public-api.d-BLv3lFmw.d.ts} +9 -4
  127. package/dist/types-chunks/{review-inbox.d-Bgt46S7L.d.ts → review-inbox.d-yREk25Vf.d.ts} +2 -0
  128. package/dist/types-chunks/{review-packet.d-ChOfJaNI.d.ts → review-packet.d-xwXxHmML.d.ts} +1 -1
  129. package/dist/types-chunks/{run-manager.d-ChzguipG.d.ts → run-manager.d-D4sa9JYz.d.ts} +26 -12
  130. package/dist/types-chunks/{runtime-client-info-P_mRDG7j.d.ts → runtime-client-info-oRMrkHmb.d.ts} +2 -2
  131. package/dist/types-chunks/{runtime-event-BW5Pla7a.d.ts → runtime-event-BOyaILWg.d.ts} +3 -1
  132. package/dist/types-chunks/{sdk-runtime-cDe7qmN3.d.ts → sdk-runtime-CYyXmQok.d.ts} +27 -13
  133. package/dist/types-chunks/{sdk-session-D3pcSbnA.d.ts → sdk-session-D6mS5qgO.d.ts} +6 -3
  134. package/dist/types-chunks/{skill-invocation-error.d-gsNNDnnt.d.ts → skill-invocation-error.d-Be3qg4JQ.d.ts} +3 -3
  135. package/dist/types-chunks/{trusted-repl-entry-Bbkd2HlO.d.ts → trusted-repl-entry-YWNc4m-Z.d.ts} +7 -7
  136. package/dist/types-chunks/{types.d-BlXTogOo.d.ts → types.d-BQ-hbni4.d.ts} +1 -1
  137. package/dist/types-chunks/{utils.d-CxHyBvO6.d.ts → utils.d-C0F3Uf2X.d.ts} +6 -6
  138. package/dist/windows-effect-job-programs.json +4 -0
  139. package/docs/ARTIFACT_SDK.md +3 -3
  140. package/docs/CLIENT_CONTRACT.md +4 -2
  141. package/docs/SDK_MIGRATION.md +9 -5
  142. package/docs/SPACE_SDK_SEAMS.md +12 -1
  143. package/package.json +4 -3
  144. package/public_docs/README.md +10 -3
  145. package/public_docs/sdk/embedder-guide.md +1 -1
  146. package/dist/chunks/agent-DS7M57WD.js +0 -2
  147. package/dist/chunks/agent-adapter-TLWGGK3V.js +0 -2
  148. package/dist/chunks/argument-completer-OGCXKTRQ.js +0 -2
  149. package/dist/chunks/chunk-GJXOTOZB.js +0 -465
  150. package/dist/chunks/chunk-KE2NBMAP.js +0 -20
  151. package/dist/chunks/chunk-OGTRDK4Q.js +0 -359
  152. package/dist/chunks/chunk-R2HTPDI7.js +0 -2
  153. package/dist/chunks/chunk-SDPZFH6M.js +0 -4
  154. package/dist/chunks/chunk-XDMNJW6J.js +0 -42
  155. package/dist/chunks/compaction-config-ECMOFP5H.js +0 -2
  156. package/dist/chunks/dist-5J53DGAO.js +0 -2
  157. package/dist/chunks/host-65E5NM5P.js +0 -2
  158. package/dist/chunks/readline-helpers-UZXWBRXQ.js +0 -2
  159. package/dist/chunks/run-manager-ZFACIZM2.js +0 -2
  160. package/dist/chunks/running-session-Q5Y6A2QV.js +0 -2
  161. package/dist/chunks/skills-TJP6BLZJ.js +0 -2
@@ -0,0 +1,460 @@
1
+ // @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
2
+ import{a as tn}from"./chunk-W33QJA3M.js";import{a as Z,b as Ee,c as Vn,d as Ae,e as Gn,f as Ye,g as Te,h as Ze,i as Me,j as Jn,l as Qn,m as en,o as H,p as de}from"./chunk-5E2P4RYS.js";import{D as z,v as nn}from"./chunk-4Z7ZHL6V.js";import{ba as Wn,ca as Un,ma as zn}from"./chunk-VRO2CDBY.js";import{Za as Bn,_a as Hn,bb as Kn,ob as Qe}from"./chunk-DAQGOWKD.js";import{E as Xn,h as E,l as Je,x as $n}from"./chunk-OMVAPRQI.js";import{a as o}from"./chunk-V4WSBIXB.js";function Yn(e){return{name:e.name,sideEffect:e.sideEffect==="none"?"readonly":"mutates-state",planModeAllowed:e.sideEffect==="none"}}o(Yn,"hostToolMetadata");function Zn(e,n){if(e.requiredWorkMode!==void 0&&e.requiredWorkMode!=="agent")throw new Error("Unsupported required work mode.");let i=e.toolVisibilityPolicy!==void 0||(e.excludeTools?.length??0)>0;if(i&&n===void 0)throw new Error("A tool policy requires the Host catalog. Use authorizeExecution services.createExecutionProfile.");let t=n?.map(s=>({name:s.name,sideEffect:s.sideEffect,planModeAllowed:s.planModeAllowed===!0})).filter(s=>!e.excludeTools?.includes(s.name)&&(e.toolVisibilityPolicy?.(s)??!0));return structuredClone({...e.requiredWorkMode===void 0?{}:{requiredWorkMode:e.requiredWorkMode},...e.defaultSkill===void 0?{}:{defaultSkill:e.defaultSkill},...e.agentProfile===void 0?{}:{agentProfile:e.agentProfile},...e.taskVerification===void 0?{}:{taskVerification:e.taskVerification},...i?{tools:t.map(s=>s.name),toolMetadata:t}:{}})}o(Zn,"createExecutionProfile");import{randomUUID as Re}from"node:crypto";import{randomUUID as cr}from"node:crypto";function et(e,n,i){let t=new Map,s=new Map,a=o(()=>{if(n.productExecutionBinding?.version!==1)throw Object.assign(new Error("Execution bindings require an upgraded Host."),{code:"daemon_upgrade_required"})},"requireCapability");return{service:{async register(c){if(a(),typeof c!="function")throw new TypeError("Execution binding resolver must be a function.");let l=`binding_${cr().replace(/-/g,"")}`;t.set(l,c);try{await e("execution.register",{leaseId:l})}catch(m){throw t.set(l,void 0),m}return{id:l}},async revoke(c){if(a(),!t.has(c))return!1;t.set(c,void 0);let l=await e("execution.revoke",{leaseId:c});return t.delete(c),l.revoked}},async handle(c){if(c===null||typeof c!="object")throw new Error("Invalid execution binding notification.");let l=c;if(typeof l.requestId!="string"||typeof l.leaseId!="string"||!l.request||typeof l.request.sessionId!="string"||!["admission","recovery"].includes(l.request.phase))throw new Error("Invalid execution binding request identity.");let m=t.get(l.leaseId),p=new AbortController;s.set(l.requestId,p);let g;try{if(!m)throw new Error("Execution binding was revoked.");let R=await m(structuredClone(l.request),i(l.request.sessionId),p.signal);g={requestId:l.requestId,resolution:structuredClone(R)}}catch{g={requestId:l.requestId,error:"execution_binding_rejected"}}finally{s.delete(l.requestId)}p.signal.aborted||await e("execution.complete",g)},close(){for(let c of s.values())c.abort();s.clear(),t.clear()}}}o(et,"createExecutionBindingClient");function nt(e,n){return{get identity(){return e.identity},credentials:e.credentials,hostTools:e.hostTools,executionBindings:e.executionBindings,async createExecutionProfile(i,t=[]){if(i.requiredWorkMode!==void 0&&e.capabilities?.productExecutionModeConstraint?.version!==1)throw Object.assign(new Error("Execution mode constraints require an upgraded Host."),{code:"daemon_upgrade_required"});if(e.capabilities?.productExecutionProfile?.version!==2)throw Object.assign(new Error("Execution profiles require an upgraded Host."),{code:"daemon_upgrade_required"});if(i.defaultSkill!==void 0&&e.capabilities?.productExecutionBinding?.version!==1)throw Object.assign(new Error("Default Skills require an upgraded Host."),{code:"daemon_upgrade_required"});if(n===void 0)throw new Error("An execution profile requires a Session identity.");if(!e.catalog.executionTools)throw new Error("Host tool catalog is unavailable.");let s=await e.catalog.executionTools(n),a=new Set(s.map(u=>u.name));for(let u of t){if(a.has(u.name))throw new Error(`Host tool collides with a registered tool: ${u.name}`);a.add(u.name)}return Zn(i,[...s,...t.map(Yn)])}}}o(nt,"createExecutionServices");import{isDeepStrictEqual as lr}from"node:util";function tt(e){if(e.kind==="permission")return null;let n={id:e.requestId,revision:0,sessionId:e.sessionId,runId:e.runId,createdAt:e.createdAt,...e.expiresAt!==void 0?{expiresAt:e.expiresAt}:{}};return e.kind==="question"?{...n,kind:"askUser",options:e.options}:e.kind==="question_multi"?{...n,kind:"askUserMulti",options:e.options}:{...n,kind:"askUserInput",options:e.options}}o(tt,"toRuntimeUserInputRequest");function rt(e){return e.kind!=="permission"?null:{id:e.requestId,sessionId:e.sessionId,runId:e.runId,...e.options.toolCallId!==void 0?{toolCallId:e.options.toolCallId}:{},toolName:e.options.toolName,...e.options.reason!==void 0?{reason:e.options.reason}:{},...e.options.risk!==void 0?{risk:e.options.risk}:{},...e.options.inputPreview!==void 0?{inputPreview:e.options.inputPreview}:{},...e.options.plan!==void 0?{plan:e.options.plan}:{},...e.options.executionCwd!==void 0?{executionCwd:e.options.executionCwd}:{},...e.options.grantSuggestions!==void 0?{grantSuggestions:e.options.grantSuggestions}:{},createdAt:e.createdAt,...e.expiresAt!==void 0?{expiresAt:e.expiresAt}:{}}}o(rt,"toRuntimePermissionRequest");var un=256,it=1e3,oe=class extends Error{constructor(i,t){super(t);this.path=i;this.name="RuntimeTransportBoundaryError"}path;static{o(this,"RuntimeTransportBoundaryError")}code="invalid_transport_value"},sn=class extends Error{static{o(this,"RuntimeDaemonUpgradeRequiredError")}code="daemon_upgrade_required";capability="actorControlPlane";restartRequired=!0;constructor(){super("Runtime daemon does not advertise actorControlPlane v1. Upgrade KodaX and restart the daemon before using Runtime Actor control."),this.name="RuntimeDaemonUpgradeRequiredError"}},an=class extends Error{static{o(this,"RuntimeInvocationPreparationUpgradeRequiredError")}code="daemon_upgrade_required";capability="invocationPreparation";restartRequired=!0;constructor(){super("Runtime daemon does not advertise invocationPreparation v1. Upgrade KodaX and restart the daemon before preparing invocations."),this.name="RuntimeInvocationPreparationUpgradeRequiredError"}},_e=class extends Error{static{o(this,"RuntimePermissionScopeUpgradeRequiredError")}code="daemon_upgrade_required";capability="runtimeAutoModeGuardrail";requiredVersion=3;restartRequired=!0;constructor(){super("Runtime daemon does not advertise concrete permission scopes. Upgrade KodaX and restart the daemon before requesting grants for a concrete tool call."),this.name="RuntimePermissionScopeUpgradeRequiredError"}},Oe=class extends Error{static{o(this,"RuntimeCredentialBrokerUpgradeRequiredError")}code="daemon_upgrade_required";capability="providerCredentialBroker";restartRequired=!0;constructor(){super("Runtime daemon does not advertise providerCredentialBroker v2. Upgrade KodaX and restart the daemon before using scoped credential leases."),this.name="RuntimeCredentialBrokerUpgradeRequiredError"}},ue=class extends Error{static{o(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"}},dn=class extends Error{static{o(this,"RuntimeSubscriptionUpgradeRequiredError")}code="daemon_upgrade_required";capability="subscriptionLifecycle";requiredVersion=1;constructor(){super("Runtime daemon lacks subscriptionLifecycle v1. Upgrade and restart the Host before observing Learning or Workflow."),this.name="RuntimeSubscriptionUpgradeRequiredError"}};function ot(e){let n=e.activeAgentTurns??e.activeAgentTasks??[];return{...e,activeAgentTurns:n,activeAgentTasks:n}}o(ot,"normalizeRuntimeDaemonPreflight");function cn(e){let n=e.capabilities??{},i=o(()=>{if(n.sessionPromotion?.version!==1)throw Object.assign(new Error("Session promotion requires an upgraded Host."),{code:"daemon_upgrade_required",capability:"sessionPromotion",requiredVersion:1})},"requirePromotionContract"),t=o((r,d,f)=>{if((r==="repo.intelligence.inspect"||r==="repo.intelligence.prewarm")&&n.repoIntelligenceDiagnostics?.version!==1)return Promise.reject(Object.assign(new Error("Repository intelligence diagnostics require an upgraded Host."),{code:"daemon_upgrade_required"}));let y=d!==null&&typeof d=="object"&&"authorization"in d?d.authorization:void 0;return y?.profile?.requiredWorkMode!==void 0&&n.productExecutionModeConstraint?.version!==1?Promise.reject(Object.assign(new Error("Execution mode constraints require an upgraded Host."),{code:"daemon_upgrade_required"})):(y?.binding!==void 0||y?.businessBinding!==void 0||y?.profile?.defaultSkill!==void 0)&&n.productExecutionBinding?.version!==1?Promise.reject(Object.assign(new Error("Execution bindings require an upgraded Host."),{code:"daemon_upgrade_required"})):e.transport.request(r,d,f)},"request"),s=et(t,n,r=>nt(U,r)),a=o((r,d)=>{let f=e.capabilities?.subscriptionLifecycle;return typeof f!="object"||f===null||!("version"in f)||f.version!==1||!("errorNotifications"in f)||f.errorNotifications!==!0?Promise.reject(new dn):t(r,r.endsWith(".subscribe")?{..._(d),reportErrors:!0}:d)},"subscriptionRequest"),u=o((r,d,f)=>{try{if(gt(f),(f?.timeoutMs!==void 0||f?.signal!==void 0)&&!lt(e.capabilities))throw new ue}catch(D){return Promise.reject(D)}let y=new AbortController,b=t(r,{...d,...f?.timeoutMs!==void 0?{timeoutMs:f.timeoutMs}:{}},{signal:y.signal});return Sr(b,f,D=>{y.abort(D)})},"readRequest"),c=o(()=>{let r=e.capabilities?.actorControlPlane;if(typeof r!="object"||r===null||!("version"in r)||r.version!==1||!("methodNamespace"in r)||r.methodNamespace!=="agents")return new sn},"actorControlPlaneError"),l=o(()=>{let r=e.capabilities?.invocationPreparation;if(typeof r!="object"||r===null||!("version"in r)||r.version!==1)return new an},"invocationPreparationError"),m=o(()=>{let r=e.capabilities?.runtimeAutoModeGuardrail;if(typeof r!="object"||r===null||!("version"in r)||typeof r.version!="number"||r.version<3||!("concretePermissionMatchers"in r)||r.concretePermissionMatchers!==!0||!("permissionGrantSuggestions"in r)||r.permissionGrantSuggestions!==!0)return new _e},"concretePermissionScopeError"),p=new Map,g=new Map,R=new Map,S=new Set,k={state:"connected",connectionId:`connection_${Re().replace(/-/g,"")}`,runtimeEpoch:e.identity.runtimeId,reconnectable:!1},O=e.transport.subscribeLifecycle?.(r=>{k={...r,runtimeEpoch:e.identity.runtimeId};for(let d of S)try{d(k)}catch(f){E({source:"runtime.daemon.client",level:"warn",message:"Runtime connection lifecycle listener failed.",detail:{errorType:f instanceof Error?f.name:typeof f}})}}),x=e.transport.subscribe(r=>{r.method==="execution.resolve"?s.handle(r.params).catch(()=>rn("execution binding")):r.method==="credential.request"?fr(r.params,p,t).catch(()=>rn("credential request")):r.method==="host_tool.invoke"&&pr(r.params,g,R,t).catch(()=>rn("host tool invocation"))}),A=!1,h=!1,v,C=o(()=>{if(h)return Promise.resolve();if(v)return v;let r=(async()=>{A||(s.close(),O?.close(),x.close(),S.clear(),p.clear(),g.clear(),R.clear(),A=!0),await e.transport.close?.(),h=!0})();return v=r,r.finally(()=>{v===r&&(v=void 0)}).catch(()=>{}),r},"closeClient"),w=o(r=>t("interaction.list",r),"listInteractions"),P=o(async r=>(await w()).find(d=>d.requestId===r),"findInteraction"),I=o(async r=>(await w(r?.sessionId!==void 0?{sessionId:r.sessionId}:void 0)).map(f=>rt(f)).filter(f=>f!==null),"permissionInteractions"),M=o((r,d)=>{if(r.kind!=="permission"&&Qe(d)){if(d.reason==="timeout")throw Object.assign(new Error("A client cannot submit a timeout as an answer; the Host owns the question deadline."),{code:"invalid_input"});return d.reason==="non_interactive"?{kind:"skip",reason:"non_interactive"}:{kind:"skip"}}if(r.kind==="question_input")return{kind:"question_input",text:d};if(r.kind==="question_multi")return{kind:"question_multi",answers:d};if(r.kind==="question")return{kind:"question",answer:d}},"questionResponseFor"),B=o((r,d)=>(d?.runId===void 0||r.runId===d.runId)&&(d?.expectedRevision===void 0||d.expectedRevision===0),"matchesUserInputBindings"),U={identity:e.identity,statistics:{read:o(r=>t("session.facts.read",{sessionId:r}),"read"),readRequests:o((r,d)=>t("session.facts.requests",{sessionId:r,...d}),"readRequests"),readTools:o((r,d)=>t("session.facts.tools",{sessionId:r,...d}),"readTools")},lifecycle:{requestExit:o(r=>t("client.exit.request",r),"requestExit"),readExit:o(r=>t("client.exit.read",{requestId:r}),"readExit"),listPendingExits:o(()=>t("client.exit.pending"),"listPendingExits")},capabilities:e.capabilities,executionBindings:s.service,...e.grantedScopes!==void 0?{grantedScopes:e.grantedScopes}:{},sessions:{promote:o(async r=>(i(),t("session.promote",r)),"promote"),readPromotion:o(async(r,d)=>(i(),t("session.promotion.read",{sessionId:r,requestId:d})),"readPromotion"),create(r={}){return t("session.create",r)},load(r,d){return u("session.load",{sessionId:r},d)},list(r){return t("session.list",r)},status(r){return t("session.status",{sessionId:r})},transcript(r,d){return u("session.transcript",{sessionId:r},d)},transcriptPage(r,d){return u("session.transcript.page",{...r},d)},transcriptEntryChunk(r,d){return u("session.transcript.entryChunk",{...r},d)},transcriptSearch(r,d){return u("session.transcript.search",{...r},d)},conversation(r,d){return u("session.conversation",{sessionId:r},d)},conversationPage(r,d){return u("session.conversation.page",r,d)},conversationEntryChunk(r,d){return u("session.conversation.entryChunk",r,d)},observe(r,d,f){return Rr(e.transport,u,r,d,f)},observeView(r,d,f){return yr(e.transport,r,d,f)},readViewItem(r,d,f){return t("session.view.item",{sessionId:r,itemId:d,...f})},resolveHistoryTurn(r,d){return u("session.history.resolveTurn",{sessionId:r,selector:d})},async readHistory(r,d){let{projectConversationHistoryPage:f,readHistoryPageWithBoundaryRetry:y}=await import("../client-history.js"),b=await y(()=>u("session.conversation.page",{sessionId:r,...d?.around?{around:d.around}:{},...d?.cursor!==void 0?{cursor:d.cursor}:{},...d?.limit!==void 0?{limit:d.limit}:{}}),{...d?.cursor!==void 0?{cursor:d.cursor}:{},...d?.around?{around:d.around}:{}});if(b===null)throw new Error("Runtime daemon returned no conversation history page.");return f(r,b,D=>u("session.conversation.entryChunk",{...D}),E)},async readHistoryEntry(r,d,f){if(f?.part==="original")return t("session.view.item",{sessionId:r,itemId:d,...f});let y=d.startsWith(`${r}:transcript:`),{readConversationHistoryEntry:b}=await import("../client-history.js");return b(r,d,async D=>u(y?"session.transcript.entryChunk":"session.conversation.entryChunk",D),f,y?"transcript":"history",E)},async searchHistory(r,d){let f=await u("session.transcript.search",{sessionId:r,query:d.query,scope:d.scope??"all",...d.limit!==void 0?{limit:d.limit}:{},...d.role!==void 0?{role:d.role}:{}});if(f===null)throw new Error("Runtime daemon returned no transcript search result.");return{revision:f.revision,hits:f.hits.map(y=>({itemId:`${r}:transcript:${f.revision}:${y.entryIndex}`,entryIndex:y.entryIndex,role:y.role==="user"?"user":"assistant",...y.timestamp!==void 0?{timestamp:y.timestamp}:{},snippet:y.snippet}))}},diagnostics(r){return u("session.diagnostics",{sessionId:r.sessionId,...r.runId!==void 0?{runId:r.runId}:{}},r).then(d=>({...d,sdkVersion:z,runtimeVersion:e.identity.version,daemonVersion:e.identity.mode==="daemon"?e.identity.version:null,runtimeMode:e.identity.mode}))},fork(r){return t("session.fork",r)},recover(r){return t("session.recover",r)},getSettings(r){return t("session.settings.get",{sessionId:r})},getSettingsVersioned(r){return t("session.settings.getVersioned",{sessionId:r})},getAutoModeStats(r){return t("session.autoMode.getStats",{sessionId:r})},async updateSettings(r,d){return ct(e.capabilities,d),t("session.settings.update",{sessionId:r,patch:d})},async updateSettingsVersioned(r,d,f){return ct(e.capabilities,d),t("session.settings.updateVersioned",{sessionId:r,patch:d,expectedRevision:f.expectedRevision})},appendNotice(r){return t("session.notice.append",r)},readGoal(r){return t("session.goal.get",{sessionId:r})},createGoal(r){return t("session.goal.create",r)},pauseGoal(r){return t("session.goal.pause",{sessionId:r})},resumeGoal(r){return t("session.goal.resume",{sessionId:r})},clearGoal(r){return t("session.goal.clear",{sessionId:r}).then(()=>{})},readLineage(r){return t("session.lineage.get",{sessionId:r})},labelEntry(r){return t("session.lineage.label",r)},rewind(r){return t("session.rewind",r)},confirmIdentityAlias(r){return t("session.identityAlias.confirm",r)},setActiveEntry(r){return t("session.active_entry.set",r)},compact(r){return t("session.compact",r)},async archive(r){await t("session.archive",{sessionId:r})},async unarchive(r){await t("session.unarchive",{sessionId:r})},async delete(r){await t("session.delete",{sessionId:r})},async cancel(r){let d=e.capabilities?.sessionCancellation;if(typeof d!="object"||d===null||!("version"in d)||d.version!==1||!("durableFrontier"in d)||d.durableFrontier!==!0)throw Object.assign(new Error("Session Stop requires a Runtime with sessionCancellation v1; upgrade the owner."),{code:"client_upgrade_required"});let f=_(await t("session.cancel",r));if(f.sessionId!==r.sessionId||f.expectedRunId!==r.expectedRunId||f.requestId!==r.requestId||typeof f.frontier!="number"||!Number.isSafeInteger(f.frontier)||!Array.isArray(f.receipts))throw new Error("Runtime returned an invalid Session Stop receipt");let y=f.receipts.map(b=>{let D=ft(b,T(_(b),"runId"));if(D.sessionId!==r.sessionId)throw new Error("Session Stop receipt belongs to another Session");return D});return{...r,frontier:f.frontier,receipts:y}}},runs:{acceptInput(r){return t("input.submit",r)},getInput(r,d){return t("input.read",{sessionId:r,inputId:d})},withdrawInput(r,d){return e.transport.request("input.withdraw",{sessionId:r,inputId:d})},async start(r){let d=e.capabilities?.toolInvocation;if(r.options?.toolInvocation&&(typeof d!="object"||d===null||!("version"in d)||d.version!==1))throw Object.assign(new Error("Explicit tool invocation requires Runtime toolInvocation v1; upgrade the owner."),{code:"client_upgrade_required"});let f=r;V(f,"run.start");let y=_(await t("run.start",f)),b=T(y,"runId"),D=T(y,"sessionId"),N=ne(y,"turnId"),Y;return{runId:b,sessionId:D,...N!==void 0?{turnId:N}:{},get result(){return Y??=on(t,b)}}},async recover(r){V(r,"run.recover");let d=_(await t("run.recover",r)),f=T(d,"runId"),y=T(d,"sessionId"),b=ne(d,"turnId"),D;return{runId:f,sessionId:y,...b?{turnId:b}:{},get result(){return D??=on(t,f)}}},async submitInput(r){let d=r;return V(d,"run.input.submit"),t("run.input.submit",d)},await(r){return on(t,r)},get(r){return t("run.get",{runId:r})},list(r){return t("run.list",r)},abort(r){return lt(e.capabilities)?t("run.abort",{runId:r}).then(d=>ft(d,r)):Promise.reject(new ue)},async setModel(r,d){await t("run.model.set",{runId:r,model:d})},async setProvider(r,d){await t("run.provider.set",{runId:r,provider:d})},async setReasoning(r,d){await t("run.reasoning.set",{runId:r,reasoning:d})}},events:{subscribe(r,d){return gr(e.transport,t,r,d)}},interactions:{list(r){return w(r)},respond(r,d){return t("interaction.respond",{requestId:r,response:d})}},permissions:{request(r){return Promise.reject(Object.assign(new Error("Clients can no longer mint permission requests; only Host execution creates them."),{code:"client_upgrade_required"}))},async listPending(r){return(await I(r)).filter(f=>(r?.runId===void 0||f.runId===r.runId)&&(r?.toolName===void 0||f.toolName===r.toolName))},async respond(r,d,f){let y=await P(r);return y!==void 0&&(y.kind!=="permission"||f?.runId!==void 0&&y.runId!==f.runId)?!1:(await t("interaction.respond",{requestId:r,response:{kind:"permission",decision:d}})).accepted},listGrants(){return t("permission.grants.list")},revokeGrant(r,d){return t("permission.grants.revoke",{grantId:r,expectedRevision:d})}},userInputs:{async listPending(r){return(await w(r?.sessionId!==void 0?{sessionId:r.sessionId}:void 0)).map(f=>tt(f)).filter(f=>f!==null).filter(f=>r?.runId===void 0||f.runId===r.runId)},async respond(r,d,f){let y=await P(r);if(y===void 0||!B(y,f))return{requestId:r,accepted:!1,status:"already_resolved"};let b=M(y,d);return b===void 0?{requestId:r,accepted:!1,status:"already_resolved"}:t("interaction.respond",{requestId:r,response:b})},async dismiss(r,d){let f=await P(r);return f===void 0||f.kind==="permission"||!B(f,d)?{requestId:r,accepted:!1,status:"already_resolved"}:t("interaction.respond",{requestId:r,response:{kind:"cancel"}})}},credentials:{async register(r,d){let f=`credlease_${Re().replace(/-/g,"")}`;p.set(f,{version:1,broker:d});try{return await t("credential.register",{leaseId:f,providers:r.providers,...r.expiresAt!==void 0?{expiresAt:r.expiresAt}:{}})}catch(y){throw p.delete(f),y}},async resume(r,d){p.set(r,{version:1,broker:d});try{let f=await t("credential.get",{leaseId:r});if(f==null)throw Object.assign(new Error(`Credential lease is unavailable after Runtime reconnect: ${r}`),{code:"credential_unavailable"});let y=_(f);if(y.brokerVersion===2)throw Object.assign(new Error(`Credential lease is scoped v2 and cannot use the v1 broker: ${r}`),{code:"credential_unavailable"});return y}catch(f){throw p.delete(r),f}},async registerScoped(r,d){if(!mt(e.capabilities))throw new Oe;let f=`credlease_${Re().replace(/-/g,"")}`;p.set(f,{version:2,broker:d});try{return await t("credential.register",{leaseId:f,providers:r.providers,brokerVersion:2,...r.expiresAt!==void 0?{expiresAt:r.expiresAt}:{}})}catch(y){throw p.delete(f),y}},async resumeScoped(r,d){if(!mt(e.capabilities))throw new Oe;p.set(r,{version:2,broker:d});try{let f=await t("credential.get",{leaseId:r});if(f==null)throw Object.assign(new Error(`Credential lease is unavailable after Runtime reconnect: ${r}`),{code:"credential_unavailable"});let y=_(f);if(y.brokerVersion!==2)throw Object.assign(new Error(`Credential lease is not a scoped v2 lease: ${r}`),{code:"credential_unavailable"});return y}catch(f){throw p.delete(r),f}},async revoke(r){let d=await t("credential.revoke",{leaseId:r});return p.delete(r),d}},hostTools:{async register(r,d){st(r,d);let f=`hostlease_${Re().replace(/-/g,"")}`;g.set(f,d);try{return await t("host_tool.register",{leaseId:f,tools:r})}catch(y){throw g.delete(f),y}},async resume(r,d){g.set(r,d);try{let f=await t("host_tool.get",{leaseId:r});if(f==null)throw Object.assign(new Error(`Host tool lease is unavailable after Runtime reconnect: ${r}`),{code:"host_tool_unavailable"});let y=_(f);return st(y.tools,d),y}catch(f){throw g.delete(r),f}},async getInvocation(r){return ee(await t("host_tool.invocation.get",{invocationId:r}))},async revoke(r){let d=await t("host_tool.revoke",{leaseId:r});return d&&g.delete(r),d}},memory:{async forProject(r){let d=e.capabilities?.memoryManagement;if(typeof d!="object"||d===null||!("version"in d)||d.version!==1)throw Object.assign(new Error("Upgrade KodaX and restart the daemon to manage Memory."),{code:"daemon_upgrade_required"});let f=await t("memory.describe",{projectRoot:r});return{controller:{listInbox:o(()=>t("memory.listInbox",{projectRoot:r}),"listInbox"),showProposal:o(b=>t("memory.showProposal",{projectRoot:r,id:b}).then(ee),"showProposal"),listRefs:o(b=>t("memory.listRefs",{projectRoot:r,filter:b}),"listRefs"),readRef:o(b=>t("memory.readRef",{projectRoot:r,id:b.id}),"readRef"),remember:o(b=>t("memory.remember",{projectRoot:r,input:b}),"remember"),forgetRef:o((b,D)=>t("memory.forgetRef",{projectRoot:r,id:b,expectedBodyFingerprint:D}),"forgetRef"),approveProposal:o((b,D,N)=>t("memory.approveProposal",{projectRoot:r,id:b,expectedFingerprints:D,expectedRevision:N}),"approveProposal"),rejectProposal:o((b,D,N)=>t("memory.rejectProposal",{projectRoot:r,id:b,reason:D,expectedRevision:N}),"rejectProposal")},memoryRoot:f.memoryRoot,entrypointPath:f.entrypointPath,reviewerProviderConfigured:o(()=>f.reviewerProviderConfigured,"reviewerProviderConfigured"),listReviews:o(()=>t("memory.listReviews",{projectRoot:r}),"listReviews"),rebuild:o(()=>t("memory.rebuild",{projectRoot:r}),"rebuild"),ensureOpenTarget:o(b=>t("memory.ensureOpenTarget",{projectRoot:r,targetPath:b}),"ensureOpenTarget")}}},invocations:{readCommandPrompt(r){return t("invocations.readCommandPrompt",r)},startReview(r){return t("invocations.startReview",r)},startAgentsLean(r){return t("invocations.startAgentsLean",r)},executeCommand(r){return t("invocations.executeCommand",r)},prepareSkill(r,d){let f=l();return f?Promise.reject(f):u("invocations.prepareSkill",r,d)},prepareCommand(r){let d=l();return d?Promise.reject(d):t("invocations.prepareCommand",r)},prepareReview(r){let d=l();return d?Promise.reject(d):t("invocations.prepareReview",r)},prepareAgentsLean(r){let d=l();return d?Promise.reject(d):t("invocations.prepareAgentsLean",r)}},workflows:{list(r){return t("workflow.list",r)},get(r){return t("workflow.get",{runId:r}).then(ee)},subscribe(r,d,f){return br(e.transport,a,r,d,f)},pause(r){return t("workflow.pause",{runId:r})},resume(r){return t("workflow.resume",{runId:r})},stop(r,d){return t("workflow.stop",{runId:r,...d})},async start(r){let d=e.capabilities?.workflowSettingsDefaults;if(r.settingsDefaults==="product"&&(!d||typeof d!="object"||!("version"in d)||d.version!==1))throw Object.assign(new Error("Host does not support product Workflow defaults. Upgrade and restart the Host."),{code:"daemon_upgrade_required",capability:"workflowSettingsDefaults",restartRequired:!0});return t("workflow.start",r)}},learning:{list(r){return t("learning.list",r??{})},get(r){return t("learning.get",{nameOrSlug:r})},getSnapshot(){return t("learning.snapshot")},events(r){return t("learning.events",{...r!==void 0?{afterRevision:r}:{}})},subscribe(r){return mr(e.transport,a,r)},async acknowledge(r){await t("learning.acknowledge",{nameOrSlug:r})},async snooze(r,d){await t("learning.snooze",{nameOrSlug:r,until:d})},async reject(r){await t("learning.reject",{nameOrSlug:r})},async disable(r){await t("learning.disable",{nameOrSlug:r})},async rollback(r){await t("learning.rollback",{nameOrSlug:r})},async promote(r,d){await t("learning.promote",{nameOrSlug:r,scope:d})},async review(r){await t("learning.review",{nameOrSlug:r})},async trust(r){await t("learning.trust",{nameOrSlug:r})}},config:{read(){return t("config.read")},readEffective(){return t("config.effective")},patch(r){return t("config.patch",{patch:r})},reload(){return t("config.reload")}},catalog:{inspectRepoIntelligence(r){return t("repo.intelligence.inspect",{sessionId:r})},prewarmRepoIntelligence(r){return t("repo.intelligence.prewarm",{sessionId:r})},executionTools(r){return t("tool.catalog",{sessionId:r})},reasoningEfforts(r){return t("provider.reasoning.efforts",r)},probeReasoningEfforts(r){return t("provider.reasoning.probe",r)},async forgetCapabilities(r){await t("provider.capabilities.forget",r??{})},providers(){return t("provider.list")},models(r){return t("model.list",r)},commands(r){return t("command.list",r!==void 0?{projectRoot:r}:void 0)},resolveCommand(r){return t("command.resolve",r)},skills(r){return t("skill.list",r)},describeSkill(r){return t("skill.describe",r)},customProviders(){return t("provider.custom.list")},upsertCustomProvider(r){return t("provider.custom.upsert",{config:r})},deleteCustomProvider(r){return t("provider.custom.remove",{name:r})},extensions(){return t("extension.list")},reloadExtensions(){return t("extension.reload")}},mcp:{status(){return t("mcp.server.status")},listServers(){return t("mcp.server.list")},getServer(r){return t("mcp.server.get",{name:r}).then(ee)},validateServer(r,d){return t("mcp.server.validate",{name:r,config:d})},upsertServer(r,d){return t("mcp.server.upsert",{name:r,config:d})},deleteServer(r){return t("mcp.server.delete",{name:r})},reloadServers(){return t("mcp.server.reload")},listTools(r){return t("mcp.tool.list",r)}},artifacts:{create(r){return t("artifact.create",r)},get(r){return t("artifact.get",{artifactId:r}).then(ee)},delete(r){return t("artifact.delete",{artifactId:r})}},admin:{agentRegistrations:{list(){return t("agentRegistrations.list")},upsert(r,d){return V(r,"agentRegistrations.upsert.registration"),t("agentRegistrations.upsert",{registration:r,...d?.expectedConfigurationRevision!==void 0?{expectedConfigurationRevision:d.expectedConfigurationRevision}:{},...d?.expectedManagementOwner!==void 0?{expectedManagementOwner:d.expectedManagementOwner}:{}})},setEnabled(r,d,f){return t("agentRegistrations.setEnabled",{agentId:r,enabled:d,...f?.expectedConfigurationRevision!==void 0?{expectedConfigurationRevision:f.expectedConfigurationRevision}:{},...f?.expectedManagementOwner!==void 0?{expectedManagementOwner:f.expectedManagementOwner}:{},...f?.claimOwner!==void 0?{claimOwner:f.claimOwner}:{}}).then(ee)},remove(r,d){return t("agentRegistrations.remove",{agentId:r,...d?.expectedConfigurationRevision!==void 0?{expectedConfigurationRevision:d.expectedConfigurationRevision}:{},...d?.expectedManagementOwner!==void 0?{expectedManagementOwner:d.expectedManagementOwner}:{}})}}},agents:{enabled:e.capabilities?.externalAgents===!0,listDispatchable(r){return t("agents.listDispatchable",r)},describe(r,d){return t("agents.describe",{agentId:r,query:d}).then(ee)},preflight(r){return t("agents.preflight",r)},tree(r){let d=c();return d?Promise.reject(d):t("agents.tree",{sessionId:r})},detail(r,d){let f=c();return f?Promise.reject(f):t("agents.detail",{sessionId:r,actorPath:d})},spawn(r,d,f){let y=c();return y?Promise.reject(y):(V(d,"agents.spawn"),V(f?.credential,"agents.spawn.credential"),t("agents.spawn",{sessionId:r,input:d,...f?.authorization===void 0?{}:{authorization:f.authorization},...f?.credential!==void 0?{credential:f.credential}:{}}))},async send(r,d,f,y){let b=c();if(b)throw b;await t("agents.send",{sessionId:r,actorPath:d,content:f,...y!==void 0?{classification:y}:{}})},followup(r,d,f,y){let b=c();return b?Promise.reject(b):y?.resumeCheckpoint===!0&&n.actorCheckpointRecovery?.version!==1?Promise.reject(Object.assign(new Error("Actor checkpoint recovery requires an upgraded Host."),{code:"daemon_upgrade_required"})):(V(y?.credential,"agents.followup.credential"),t("agents.followup",{sessionId:r,actorPath:d,objective:f,...y?.resumeCheckpoint===void 0?{}:{resumeCheckpoint:y.resumeCheckpoint},...y?.authorization===void 0?{}:{authorization:y.authorization},...y?.expectedRevision!==void 0?{expectedRevision:y.expectedRevision}:{},...y?.credential!==void 0?{credential:y.credential}:{}}))},async interrupt(r,d,f){let y=c();if(y)throw y;await t("agents.interrupt",{sessionId:r,actorPath:d,...f!==void 0?{reason:f}:{}})},output(r,d,f){let y=c();return y?Promise.reject(y):t("agents.output",{sessionId:r,actorPath:d,...f!==void 0?{turnId:f}:{}})},events(r,d){let f=c();return f?Promise.reject(f):t("agents.events",{sessionId:r,...d!==void 0?{afterSequence:d}:{}})},wait(r,d,f,y){let b=c();return b?Promise.reject(b):u("agents.wait",{sessionId:r,...d!==void 0?{afterSequence:d}:{},...f!==void 0?{timeoutMs:f}:{}},y).then(ee)}},status:{snapshot(){return t("daemon.status")},preflight(r){return t("daemon.preflight",void 0,r).then(d=>ot(d))}},daemon:{async shutdown(){try{await t("runtime.shutdown")}catch(r){throw r instanceof Error&&"code"in r&&r.code==="conflict"?Object.assign(new Error(r.message,{cause:r}),{code:"busy"}):r}return{accepted:!0}},inspect(){return t("daemon.management.get").then(r=>{let d=r;return{...d,preflight:ot(d.preflight)}})}},connection:{current(){return k},subscribe(r){return S.add(r),r(k),{close(){S.delete(r)}}}},close:C};return U}o(cn,"createRuntimeDaemonClient");function mr(e,n,i){let t=[],s=[],a=!1,u=!1,c,l=o(g=>{if(!(a||u)){u=!0,c=g,t.length=0;for(let R of s.splice(0))R.reject(g)}},"fail"),m=Rt(e,n,"learning.subscribe",{...i?.afterRevision!==void 0?{afterRevision:i.afterRevision}:{}},g=>{if(a||u)return;let R=g,S=s.shift();S?S.resolve({value:R,done:!1}):t.push(R)},l);return m.ready?.catch(l),{ready:m.ready,[Symbol.asyncIterator](){return this},async next(){if(a)return{done:!0,value:void 0};if(u)throw c;return t.length>0?{value:t.shift(),done:!1}:new Promise((g,R)=>{s.push({resolve:g,reject:R})})},async return(){a=!0,t.length=0,m.close();for(let g of s.splice(0))g.resolve({done:!0,value:void 0});return{done:!0,value:void 0}}}}o(mr,"learningEventPushIterable");function rn(e){E({source:"runtime.daemon.client",level:"warn",message:`Failed to deliver ${e} result to the Runtime daemon.`})}o(rn,"reportReverseBridgeFailure");async function fr(e,n,i){let t=_(e),s=T(t,"requestId"),a=T(t,"leaseId"),u=n.get(a);if(!u){await i("credential.supply",{requestId:s,error:"credential_lease_unavailable"});return}try{let c=u.version===1?await u.broker({leaseId:a,provider:T(t,"provider"),sessionId:T(t,"sessionId"),runId:T(t,"runId")}):await u.broker({requestId:s,leaseId:a,provider:T(t,"provider"),sessionId:T(t,"sessionId"),...t.connectionFingerprint!==void 0?{connectionFingerprint:pt(t.connectionFingerprint)}:{},...t.credentialContextVersion!==void 0?{credentialContextVersion:Pr(t.credentialContextVersion)}:{},...t.rejectedCredentialFingerprint!==void 0?{rejectedCredentialFingerprint:pt(t.rejectedCredentialFingerprint)}:{},target:wr(t.target),purpose:hr(t.purpose)});await i("credential.supply",{requestId:s,...c!==void 0?{credential:c}:{error:"credential_unavailable"}})}catch{await i("credential.supply",{requestId:s,error:"credential_broker_failed"})}}o(fr,"answerCredentialRequest");async function pr(e,n,i,t){let s=_(e),a=T(s,"invocationId"),u=T(s,"leaseId"),c=T(s,"toolName"),l=n.get(u)?.[c];if(!l){await t("host_tool.complete",{invocationId:a,error:"host_tool_unavailable"});return}let m=i.get(a);if(!m){let p=Promise.resolve().then(()=>l({invocationId:a,leaseId:u,toolName:c,sessionId:T(s,"sessionId"),runId:T(s,"runId"),input:_(s.input)}));m={promise:p,settled:!1},i.set(a,m);let g=m;p.finally(()=>{g.settled=!0,at(i)}).catch(()=>{}),at(i)}try{await t("host_tool.complete",{invocationId:a,result:await m.promise})}catch{try{await t("host_tool.complete",{invocationId:a,error:"host_tool_failed"})}catch(p){throw new Error("Failed to report the Host Tool outcome to the Runtime daemon.",{cause:p})}}}o(pr,"answerHostToolInvocation");function st(e,n){let i=new Set(e.map(t=>t.name));if(i.size!==e.length||e.length===0)throw new Error("Host tool descriptors must have unique, non-empty names.");for(let t of i)if(typeof n[t]!="function")throw new Error(`Missing host tool handler: ${t}`)}o(st,"validateHostToolHandlers");function at(e){if(!(e.size<=it))for(let[n,i]of e){if(e.size<=it)return;i.settled&&e.delete(n)}}o(at,"pruneHostToolResults");function gr(e,n,i,t){let s=!1,a,u=[],c=o(g=>!(i.runId!==void 0&&g.runId!==i.runId||i.type!==void 0&&!(Array.isArray(i.type)?i.type:[i.type]).includes(g.type)),"matches"),l=e.subscribe(g=>{if(s||g.method!=="event"&&g.method!=="observation.invalidated")return;let R=_(g.params);if(a===void 0){u.length>=un&&u.shift(),u.push({method:g.method,payload:R});return}if(R.subscriptionId===a){if(g.method==="observation.invalidated"){m();return}dt(R.event,S=>{c(S)&&t(S)})}}),m=o(()=>{if(s)return;s=!0,l.close();let g=a;a=void 0,g!==void 0&&n("subscription.close",{subscriptionId:g}).catch(R=>{E({source:"runtime.daemon.client",level:"warn",message:"Failed to close a remote Session observation subscription.",detail:R})})},"close"),p=n("session.observe",{sessionId:i.sessionId}).then(g=>{let R=_(g);if(a=T(R,"subscriptionId"),s){n("subscription.close",{subscriptionId:a}).catch(S=>{E({source:"runtime.daemon.client",level:"warn",message:"Failed to close a remote Session observation subscription.",detail:S})}),u.length=0;return}for(let{method:S,payload:k}of u.splice(0))if(k.subscriptionId===a){if(S==="observation.invalidated"){m();break}dt(k.event,O=>{c(O)&&t(O)})}}).catch(g=>{throw u.length=0,l.close(),g});return p.catch(()=>{}),{ready:p,close:m}}o(gr,"subscribeToDaemonEvents");async function yr(e,n,i,t={}){let s=`view_${Re()}`,a=!1,u=!1,c,l=o(v=>{if(c?.state!==v.state){c=v;try{t.onStatus?.(v)}catch(C){E({source:"session.view",level:"warn",message:"Session observation status listener failed.",detail:C})}}},"report"),m,p,g,R,S,k=0,O=o(v=>{let C=new Map(p?.items.map(I=>[I.id,I])),w=v.items.map(I=>{let M=C.get(I.id);return M&&lr(M,I)?M:I}),P=p?.items.length===w.length&&w.every((I,M)=>I===p?.items[M]);p={...v,items:P?p.items:w},i(p),l({state:"live"})},"deliver"),x=e.subscribe(v=>{if(a||v.method!=="session.view")return;let C=_(v.params);if(C.subscriptionId!==s)return;if(C.status!==void 0){let P=_(C.status);P.state==="closed"?h("unavailable"):P.state==="interrupted"&&l({state:"interrupted"});return}let w=_(C.view);if(w.session.id!==n)throw new Error("Session view identity did not match its subscription.");if(u)try{O(w)}catch(P){h("unavailable"),E({source:"session.view",level:"warn",message:"Session observer failed and was detached.",detail:P})}else m=w}),A=o(async v=>{let C=_(await e.request("session.view.observe",{sessionId:n,subscriptionId:s}));if(a)throw e.request("session.view.close",{subscriptionId:s}).catch(w=>{E({source:"session.view",level:"warn",message:"Unable to release the remote Session observation.",detail:w})}),new Error("Connection closed while opening the Session view.");if(v!==void 0&&!v())throw new Error("Session view reopen was superseded by a newer connection generation.");O(m??_(C.view)),m=void 0,u=!0},"openRemoteView");R=e.subscribeLifecycle?.(v=>{if(!a){if(v.state==="connected"){if(g===void 0||g===v.connectionId){g=v.connectionId;return}if(g=v.connectionId,a||u)return;m=void 0,k+=1;let C=k,w=0;S=(async()=>{for(;!a&&!u;){w+=1;let P=g;try{await A(()=>C===k&&g===P);return}catch(I){if(a||C!==k)return;if(g!==P){w=0;continue}if(w>=3){E({source:"session.view",level:"warn",message:"Session view could not reopen after a Runtime reconnect; the observation was detached.",detail:I}),h("unavailable");return}await new Promise(M=>{setTimeout(M,250).unref?.()})}}})().finally(()=>{C===k&&(S=void 0)});return}u=!1,m=void 0,k+=1,v.reconnectable===!1?h("unavailable"):l({state:"interrupted"})}});function h(v="client"){if(a){R?.close();return}a=!0,x.close(),R?.close(),m=void 0,p=void 0,l({state:"closed",reason:v}),e.request("session.view.close",{subscriptionId:s}).catch(C=>{E({source:"session.view",level:"warn",message:"Unable to release the remote Session observation.",detail:C})})}o(h,"close");try{let v=k;return await A(()=>v===k),{close:h}}catch(v){throw h("unavailable"),v}}o(yr,"observeDaemonSessionView");async function Rr(e,n,i,t,s){let a=!1,u=!1,c,l=!1,m,p=!1,g,R,S=new Promise(w=>{R=w}),k=[],O,x,A=o(()=>{k.length=0,O?.close(),O=void 0,x?.close(),x=void 0;let w=c;c=void 0,w!==void 0&&n("subscription.close",{subscriptionId:w}).catch(P=>{E({source:"runtime.daemon.client",level:"warn",message:"Failed to unsubscribe an invalidated Session observation.",detail:P})})},"closeResources"),h=o((w,P,I)=>{a||p||(p=!0,A(),R?.({code:"observation_invalidated",reason:w,runtimeId:I,message:P}))},"invalidate"),v=o((w,P)=>{let I=yt(w.event);if(I===void 0){h("event_order","Runtime delivered an invalid observation event; full resync is required.",P);return}if(m!==void 0){if(I.seq<m){if(!u)return;h("event_order",`Runtime observation event order regressed from ${m} to ${I.seq}.`,P);return}if(I.seq===m)return}m=I.seq;try{t(I)}catch(M){E({source:"runtime.daemon.client",level:"error",message:`Session observation listener failed for ${I.type}.`,detail:M}),h("delivery_failed",`Session observation listener failed while delivering ${I.type}; discard local state and resync.`,P)}},"deliver"),C=o((w,P)=>{let I=Ir(w.invalidation);if(I===void 0){h("event_order","Runtime delivered an invalid observation invalidation; full resync is required.",P);return}h(I.reason,I.message,I.runtimeId)},"deliverInvalidation");O=e.subscribe(w=>{if(a||p||w.method!=="event"&&w.method!=="observation.invalidated")return;let P=_(w.params);if(c===void 0||!u){if(w.method==="event"&&!vr(P.event,i)||w.method==="observation.invalidated"&&typeof P.sessionId=="string"&&P.sessionId!==i)return;k.length>=un?(l=!0,h("event_overflow","Runtime observation handoff overflowed; full resync is required.","daemon")):k.push({method:w.method,payload:P});return}P.subscriptionId===c&&(w.method==="event"?v(P,"daemon"):C(P,"daemon"))}),x=e.subscribeLifecycle?.(w=>{if(w.state==="connected"){g!==void 0&&g!==w.connectionId&&h("runtime_changed","Runtime transport connection changed; discard the observation and resync.","daemon"),g=w.connectionId;return}h("transport_disconnected",w.reason??"Runtime transport disconnected; observation is invalid.","daemon")});try{let w=_(await n("session.observe",{sessionId:i},s));if(c=T(w,"subscriptionId"),l)throw Object.assign(new Error("Runtime session observation handshake exceeded its event buffer; full resync is required."),{code:"resync_required"});let P=_(w.snapshot);m=typeof P.seq=="number"?P.seq:void 0;let I={snapshot:P,invalidated:S,close(){a||(a=!0,A())}};return queueMicrotask(()=>queueMicrotask(()=>{if(!(a||p)){for(;k.length>0;){let M=k.splice(0);for(let B of M){if(p)break;let{method:U,payload:r}=B;r.subscriptionId===c&&(U==="event"?v(r,P.runtimeId):C(r,P.runtimeId))}}u=!0}})),I}catch(w){throw a=!0,A(),w}}o(Rr,"observeDaemonSession");function hr(e){if(e==="primary"||e==="fallback"||e==="classifier"||e==="sidecar"||e==="compaction"||e==="workflow"||e==="utility")return e;throw new Error("Invalid scoped credential purpose.")}o(hr,"parseScopedCredentialPurpose");function wr(e){let n=_(e),i=T(n,"kind");if(i==="run")return{kind:i,runId:T(n,"runId"),...ne(n,"operationId")!==void 0?{operationId:ne(n,"operationId")}:{}};if(i==="operation"){let t=T(n,"operation");if(t!=="session.compact"&&t!=="provider.reasoning.probe")throw new Error("Invalid credential operation target.");return{kind:i,operation:t,operationId:T(n,"operationId")}}if(i==="actor_turn")return{kind:i,actorPath:T(n,"actorPath"),turnId:T(n,"turnId"),...ne(n,"parentRunId")!==void 0?{parentRunId:ne(n,"parentRunId")}:{}};if(i==="workflow")return{kind:i,workflowRunId:T(n,"workflowRunId"),...ne(n,"parentRunId")!==void 0?{parentRunId:ne(n,"parentRunId")}:{}};throw new Error("Invalid scoped credential target.")}o(wr,"parseScopedCredentialTarget");async function Sr(e,n,i){if(gt(n),n?.signal===void 0&&n?.timeoutMs===void 0)return e;let t,s;try{return await Promise.race([e,new Promise((a,u)=>{n?.timeoutMs!==void 0&&(t=setTimeout(()=>{let c=Object.assign(new Error(`Runtime read timed out after ${n.timeoutMs}ms`),{code:"read_timeout"});u(c),i(c)},n.timeoutMs)),n?.signal!==void 0&&(s=o(()=>{let c=Object.assign(new Error("Runtime read cancelled"),{code:"read_cancelled"});u(c),i(c)},"abort"),n.signal.addEventListener("abort",s,{once:!0}))})])}finally{t!==void 0&&clearTimeout(t),s!==void 0&&n?.signal?.removeEventListener("abort",s)}}o(Sr,"raceRuntimeDaemonRead");function gt(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")}o(gt,"validateRuntimeDaemonReadOptions");function vr(e,n){return e!==null&&typeof e=="object"&&!Array.isArray(e)&&e.sessionId===n}o(vr,"isRuntimeEventForSession");function Ir(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}}o(Ir,"parseRuntimeObservationInvalidation");function dt(e,n){let i=yt(e);i!==void 0&&n(i)}o(dt,"deliverRuntimeEvent");function yt(e){let n=tn(e);if(!n.ok){E({source:"runtime.daemon.client",level:"warn",message:`Ignored malformed Runtime event: ${n.error}`});return}return n.event}o(yt,"parseRuntimeEventForClient");function br(e,n,i,t,s){return Rt(e,n,"workflow.subscribe",{filter:i},a=>{t(a)},s)}o(br,"subscribeToDaemonWorkflowEvents");function Rt(e,n,i,t,s,a){let u=!1,c,l,m,p,g=new Promise((x,A)=>{m=x,p=A});g.catch(()=>{});let R=[],S,k=o(()=>{u||(u=!0,R.length=0,S?.close(),l?.close(),c!==void 0&&ut(n,i,c))},"close"),O=o(x=>{if(!u)if(k(),p(x),a)try{a(x)}catch(A){E({source:"runtime.daemon.client",level:"warn",message:"Subscription error listener failed.",detail:String(A)})}else E({source:"runtime.daemon.client",level:"warn",message:`${i} observation stopped.`,detail:x instanceof Error?x.message:String(x)})},"fail");return S=e.subscribe(x=>{if(u||x.method!=="event"&&x.method!=="subscription.error")return;let A=_(x.params);if(c===void 0){if(R.length>=un){O(new Error("Subscription handshake notification buffer overflowed; rebuild from a snapshot."));return}R.push({payload:A,failed:x.method==="subscription.error"});return}A.subscriptionId===c&&(x.method==="subscription.error"?O(new Error(T(A,"message"))):s(A.event))}),u&&S.close(),l=e.subscribeLifecycle?.(x=>{x.state==="disconnected"&&O(new Error(x.reason??"Runtime transport disconnected; rebuild the subscription and read a snapshot."))}),u&&l?.close(),n(i,t).then(x=>{if(c=T(_(x),"subscriptionId"),u){ut(n,i,c);return}for(let{payload:A,failed:h}of R.splice(0)){if(u)break;A.subscriptionId===c&&(h?O(new Error(T(A,"message"))):s(A.event))}u||m()}).catch(O),{ready:g,close(){k(),p(new Error("Subscription closed before registration completed."))}}}o(Rt,"subscribeToDaemonNotification");function on(e,n){return e("run.await",{runId:n}).then(kr)}o(on,"requestRuntimeRunResult");function kr(e){let n=_(e),i=Object.prototype.hasOwnProperty.call(n,"error")?xr(n.error):void 0,t={...n};return delete t.error,{...t,...i!==void 0?{error:i}:{}}}o(kr,"deserializeRuntimeRunResult");function xr(e){if(e==null)return;if(e instanceof Error)return e;if(typeof e=="string")return new Error(e);let n=_(e),i=new Error(typeof n.message=="string"&&n.message.length>0?n.message:"Runtime run failed.");return typeof n.name=="string"&&n.name.length>0&&(i.name=n.name),typeof n.stack=="string"&&n.stack.length>0&&(i.stack=n.stack),i}o(xr,"deserializeRuntimeError");function ut(e,n,i){e(n==="workflow.subscribe"?"workflow.unsubscribe":"learning.unsubscribe",{subscriptionId:i}).catch(s=>{E({source:"runtime.daemon.client",level:"warn",message:"Failed to release a remote subscription.",detail:s instanceof Error?s.message:String(s)})})}o(ut,"unsubscribeRemote");function ee(e){return e??void 0}o(ee,"nullToUndefined");function _(e){if(!e||typeof e!="object"||Array.isArray(e))throw new Error("Expected daemon response object.");return e}o(_,"requireRecord");function ct(e,n){let i=e?.sharedSessionSettings;for(let t of["planModeEffort","workMode"])if(n[t]!==void 0&&!(i&&typeof i=="object"&&"keys"in i&&Array.isArray(i.keys)&&i.keys.includes(t)))throw Object.assign(new Error(`Host does not support Session ${t}. Upgrade and restart the Host.`),{code:"daemon_upgrade_required",capability:"sharedSessionSettings",restartRequired:!0})}o(ct,"assertNewSessionSettingsSupported");function lt(e){let n=e?.runLifecycleControl;if(!n||typeof n!="object"||Array.isArray(n))return!1;let i=n;return Number.isSafeInteger(i.version)&&Number(i.version)>=1&&i.structuredStopReceipt===!0&&i.protocolCancellation===!0&&i.responseAcknowledgement===!0}o(lt,"supportsRunLifecycleControl");function mt(e){let n=e?.providerCredentialBroker;return n!==null&&typeof n=="object"&&!Array.isArray(n)&&"version"in n&&Number.isSafeInteger(n.version)&&Number(n.version)>=2}o(mt,"supportsScopedCredentialBroker");function ft(e,n){let i;try{i=_(e)}catch{throw new ue}let t=i.runId,s=i.sessionId,a=i.accepted,u=i.state,c=i.outcome,l=i.phase,m=i.revision,p=["unknown","confirmed"],g=["unknown","cancelled","interrupted","completed","failed"],R=["queued","running","waiting_agent","recovering","waiting_permission","waiting_user_input","unknown","completed","failed","cancelled","interrupted"];if(typeof a!="boolean"||typeof t!="string"||t.length===0||t!==n||typeof s!="string"||s.length===0||typeof u!="string"||!p.includes(u)||typeof c!="string"||!g.includes(c)||typeof l!="string"||!R.includes(l)||!Number.isSafeInteger(m)||Number(m)<0)throw new ue;return{runId:t,sessionId:s,accepted:a,state:u,outcome:c,phase:l,revision:Number(m)}}o(ft,"parseRuntimeRunStopReceipt");function T(e,n){let i=e[n];if(typeof i!="string"||i.length===0)throw new Error(`Expected daemon response string field: ${n}`);return i}o(T,"requireStringField");function ne(e,n){let i=e[n];if(i!=null){if(typeof i!="string")throw new Error(`Expected daemon response optional string field: ${n}`);return i}}o(ne,"optionalStringField");function V(e,n,i=new WeakSet){if(e==null||typeof e=="string"||typeof e=="boolean")return;if(typeof e=="number"){if(Number.isFinite(e))return;throw new oe(n,`${n} is not transport-safe: numbers must be finite.`)}if(typeof e=="function"||typeof e=="symbol"||typeof e=="bigint")throw new oe(n,`${n} is not transport-safe: ${typeof e} values cannot cross a Runtime boundary.`);if(typeof e!="object")return;if(i.has(e))throw new oe(n,`${n} is not transport-safe: cyclic values cannot cross a Runtime boundary.`);let t=Object.getPrototypeOf(e);if(!Array.isArray(e)&&t!==Object.prototype&&t!==null){let s=t?.constructor?.name??"object";throw new oe(n,`${n} is not transport-safe: ${s} instances cannot cross a Runtime boundary.`)}if(i.add(e),Array.isArray(e))e.forEach((s,a)=>V(s,`${n}[${a}]`,i));else for(let[s,a]of Object.entries(e))V(a,`${n}.${s}`,i);i.delete(e)}o(V,"assertRuntimeTransportSafe");function pt(e){if(typeof e!="string"||!/^[a-f0-9]{64}$/.test(e))throw new Error("Invalid credential connection fingerprint.");return e}o(pt,"parseCredentialConnectionFingerprint");function Pr(e){if(e!==1)throw new Error("Unsupported credential context version.");return 1}o(Pr,"parseCredentialContextVersion");var se="kodax-runtime-daemon",De=1,je=["session.facts.read","session.facts.requests","session.facts.tools","client.exit.request","client.exit.read","client.exit.pending","initialize","runtime.initialize","ping","runtime.identity","runtime.status","runtime.shutdown","runtime.capabilities","daemon.status","daemon.stop","daemon.logs","daemon.preflight","daemon.management.get","session.create","session.promote","session.load","session.promotion.read","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.view.observe","session.view.close","session.view.item","session.history.resolveTurn","session.diagnostics","session.fork","session.recover","session.notice.append","session.goal.get","session.lineage.get","session.lineage.label","session.goal.create","session.goal.pause","session.goal.resume","session.goal.clear","session.rewind","session.identityAlias.confirm","session.active_entry.set","session.activeEntry.set","session.compact","session.archive","session.unarchive","session.cancel","session.delete","session.settings.get","session.settings.getVersioned","session.autoMode.getStats","session.settings.update","session.settings.updateVersioned","input.submit","input.withdraw","run.start","run.recover","run.input.submit","input.read","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","subscription.close","permission.grants.list","permission.grants.revoke","interaction.list","interaction.respond","execution.register","execution.revoke","execution.complete","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","workflow.start","learning.list","learning.get","learning.snapshot","learning.events","learning.subscribe","learning.unsubscribe","learning.acknowledge","learning.snooze","learning.reject","learning.disable","learning.rollback","learning.promote","learning.review","learning.trust","config.read","config.effective","config.patch","config.reload","model.list","provider.list","provider.reasoning.efforts","provider.reasoning.probe","provider.capabilities.forget","provider.custom.list","provider.custom.upsert","provider.custom.remove","mcp.server.list","mcp.server.status","mcp.server.get","mcp.server.validate","mcp.server.upsert","mcp.server.delete","mcp.server.remove","mcp.server.reload","mcp.tool.list","extension.list","tool.catalog","repo.intelligence.inspect","repo.intelligence.prewarm","extension.reload","command.list","command.resolve","skill.list","skill.describe","skill.read","memory.describe","memory.listReviews","memory.listInbox","memory.showProposal","memory.listRefs","memory.readRef","memory.remember","memory.forgetRef","memory.approveProposal","memory.rejectProposal","memory.rebuild","memory.ensureOpenTarget","invocations.prepareSkill","invocations.prepareCommand","invocations.readCommandPrompt","invocations.executeCommand","invocations.startReview","invocations.startAgentsLean","invocations.prepareReview","invocations.prepareAgentsLean","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"],Cr=["invocations.executeCommand","invocations.startReview","invocations.startAgentsLean","invocations.prepareSkill","runtime.shutdown","daemon.stop","memory.remember","memory.forgetRef","memory.approveProposal","memory.rejectProposal","memory.rebuild","memory.ensureOpenTarget","invocations.prepareReview","session.goal.create","session.goal.pause","session.goal.resume","session.goal.clear","session.create","session.promote","session.fork","session.recover","session.notice.append","session.rewind","session.identityAlias.confirm","session.active_entry.set","session.activeEntry.set","session.lineage.label","session.compact","session.archive","session.unarchive","session.cancel","session.delete","session.settings.update","session.settings.updateVersioned","input.submit","input.withdraw","run.start","run.recover","run.input.submit","run.abort","run.model.set","run.provider.set","run.reasoning.set","run.setModel","run.setProvider","run.setReasoning","permission.grants.revoke","interaction.respond","workflow.pause","workflow.resume","workflow.stop","workflow.start","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"],Er=["permission.request","permission.list","permission.listPending","permission.respond","user_input.listPending","user_input.respond","user_input.dismiss","agentTasks.list","agentTasks.start","agentTasks.get","agentTasks.events","agentTasks.wait","agentTasks.sendInput","agentTasks.cancel","agentTasks.reconcile"],Ar=new Set([...je,...Er]),Cs=new Set(Cr);var Tr=new Set(["subscription.error","session.view","event","observation.invalidated","execution.resolve","credential.request","host_tool.invoke","runtime.warning"]),Mr=new Set(["execution_mode_mismatch","execution_binding_unavailable","execution_binding_rejected","execution_binding_changed","default_skill_unavailable","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","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 ln(e,n,i){return{protocol:se,version:1,kind:"request",id:e,method:n,...i!==void 0?{params:i}:{}}}o(ln,"createRuntimeDaemonRequest");function wt(e,n){return{protocol:se,version:1,kind:"error",...n!==void 0?{id:n}:{},error:e}}o(wt,"createRuntimeDaemonErrorResponse");function St(e){if(!Ne(e))return!1;let n=e;return n.kind==="request"&&typeof n.id=="string"&&n.id.length>0&&typeof n.method=="string"&&Ar.has(n.method)}o(St,"isRuntimeDaemonRequest");function mn(e){if(!Ne(e))return!1;let n=e;return n.kind==="response"&&typeof n.id=="string"&&n.id.length>0&&Object.prototype.hasOwnProperty.call(n,"result")}o(mn,"isRuntimeDaemonSuccessResponse");function fn(e){if(!Ne(e))return!1;let n=e;return n.kind==="error"&&(n.id===void 0||typeof n.id=="string")&&Or(n.error)}o(fn,"isRuntimeDaemonErrorResponse");function pn(e){if(!Ne(e))return!1;let n=e;return n.kind==="notification"&&typeof n.method=="string"&&Tr.has(n.method)}o(pn,"isRuntimeDaemonNotification");function _r(e){return St(e)||mn(e)||fn(e)||pn(e)}o(_r,"isRuntimeDaemonFrame");function vt(e){let n;try{n=JSON.parse(e)}catch{return ht("Frame is not valid JSON.")}return _r(n)?n:ht("Frame does not match the runtime daemon protocol.")}o(vt,"parseRuntimeDaemonFrame");function ht(e){return wt({code:"invalid_frame",message:e})}o(ht,"invalidFrame");function Ne(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let n=e;return n.protocol===se&&n.version===1}o(Ne,"isFrameBase");function Or(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let n=e;return typeof n.code=="string"&&Mr.has(n.code)&&typeof n.message=="string"}o(Or,"isRuntimeDaemonError");import{createHash as Dr,randomUUID as ce}from"node:crypto";import*as Rn from"node:net";import jr from"node:os";import It from"node:path";import{StringDecoder as gn}from"node:string_decoder";var bt=8*1024*1024,le=class extends Error{constructor(i,t,s){super(i);this.code=t;this.data=s;this.name="RuntimeDaemonTransportError"}code;data;static{o(this,"RuntimeDaemonTransportError")}};function hn(e){return e instanceof le}o(hn,"isRuntimeDaemonTransportError");var me=class extends Error{constructor(i,t,s,a,u){super(i,u);this.code=t;this.connectionId=s;this.reconnectable=a;this.name="RuntimeDaemonDisconnectError"}code;connectionId;reconnectable;static{o(this,"RuntimeDaemonDisconnectError")}};function wn(e){return e instanceof me}o(wn,"isRuntimeDaemonDisconnectError");function Fe(e="default",n){let i=Gn(e),t=n===void 0?i:`${i}-${Nr(It.resolve(n))}`;return process.platform==="win32"?{kind:"pipe",path:`\\\\.\\pipe\\kodax-runtime-${t}`}:{kind:"unix",path:It.join(jr.tmpdir(),`kodax-runtime-${process.getuid?.()??"user"}-${t}.sock`)}}o(Fe,"defaultRuntimeDaemonEndpoint");function Nr(e){return Dr("sha256").update(e).digest("hex").slice(0,12)}o(Nr,"shortPathHash");function qr(e,n={}){let i="",t=0,s=new gn("utf8"),a=n.maxFrameBytes??bt;if(!Number.isSafeInteger(a)||a<=0)throw new Error("Runtime daemon maxFrameBytes must be a positive safe integer.");let u=o(l=>{kt(l,a),l.trim()&&e(vt(l))},"consumeLine"),c=o(l=>{i+=l,t+=Buffer.byteLength(l,"utf8")},"append");return{push(l){for(typeof l=="string"?(c(s.end()),s=new gn("utf8"),c(l)):c(s.write(l));;){let m=i.indexOf(`
3
+ `);if(m<0)break;let p=i.slice(0,m).replace(/\r$/,""),g=i.slice(0,m+1);i=i.slice(m+1),t-=Buffer.byteLength(g,"utf8"),u(p)}xt(t,a)},flush(){c(s.end()),s=new gn("utf8");let l=i.trim();i="",t=0,l.length>0&&u(l)}}}o(qr,"createRuntimeDaemonFrameParser");async function fe(e,n={}){n.signal?.throwIfAborted();let i=Rn.createConnection(e.path);i.setEncoding("utf8");let t=new Promise(h=>{i.once("close",()=>h())});await Br(i,n.connectTimeoutMs,n.signal);let s=n.maxFrameBytes??bt,a=!1,u=`transport_${ce().replace(/-/g,"")}`,c=ce().replace(/-/g,"")+ce().replace(/-/g,""),l=`connection_${ce().replace(/-/g,"")}`,m=new Set,p=new Set,g={state:"connected",connectionId:l,reconnectable:!1},R,S=o((h,v,C,w)=>{if(R!==void 0)return R;R=new me(v,h,l,C,w===void 0?void 0:{cause:w}),g={state:"disconnected",connectionId:l,code:h,reason:v,reconnectable:C};for(let P of p)try{P(g)}catch{E({source:"runtime.daemon.transport",level:"warn",message:"Runtime transport lifecycle listener failed."})}return R},"disconnect"),k=new Map,O=!1,x=o((h,v)=>{if(!O||a||i.destroyed)return;let w=ln(`${h==="request.ack"?"ack":"cancel"}_${ce().replace(/-/g,"").slice(0,12)}`,h,{requestId:v});i.write(`${JSON.stringify(w)}
4
+ `)},"sendRequestLifecycleFrame"),A=qr(h=>{if(mn(h)){let v=k.get(h.id);if(v){k.delete(h.id),v.cleanup(),Lr(h.result)&&(O=!0),x("request.ack",h.id),v.resolve(h.result);return}h.id.startsWith("req_")&&x("request.cancel",h.id);return}if(fn(h)){if(!h.id)return;let v=k.get(h.id);v&&(k.delete(h.id),v.cleanup(),v.reject(new le(h.error.message,h.error.code,h.error.data)));return}if(pn(h))for(let v of m)try{v(h)}catch{E({source:"runtime.daemon.transport",level:"warn",message:"Runtime transport notification listener failed."})}},{maxFrameBytes:n.maxFrameBytes});return i.on("data",h=>{try{A.push(h)}catch(v){a=!0;let C=yn(v),w=S("invalid_frame",C.message,!0,C);qe(k,w),i.destroy(C)}}),i.on("close",()=>{a=!0;let h=S("protocol_closed","Runtime daemon transport closed.",!0);qe(k,h)}),i.on("error",h=>{a=!0;let v=S("transport_error",h.message,!0,h);qe(k,v)}),{request(h,v,C){if(a)return Promise.reject(R??new me("Runtime daemon transport is closed.","protocol_closed",l,!0));let w=`req_${ce().replace(/-/g,"").slice(0,12)}`,P=h==="initialize"||h==="runtime.initialize"?Fr(v,u,c):v,I=ln(w,h,P),M;try{M=JSON.stringify(I),kt(M,s)}catch(f){return hn(f)?Promise.reject(f):Promise.reject(new le(`Runtime daemon request params are not JSON-serializable: ${yn(f).message}`,"invalid_params"))}let B,U=!1,r=o(()=>{B!==void 0&&C?.signal?.removeEventListener("abort",B)},"cleanup"),d=new Promise((f,y)=>{let b={resolve:f,reject:y,cleanup:r};k.set(w,b),C?.signal!==void 0&&(B=o(()=>{k.get(w)===b&&(k.delete(w),r(),U&&!i.destroyed&&x("request.cancel",w),y(Hr(C.signal?.reason)))},"abort"),C.signal.addEventListener("abort",B,{once:!0}),C.signal.aborted&&B())});return C?.signal?.aborted||(i.write(`${M}
5
+ `),U=!0),d},subscribe(h){return m.add(h),{close(){m.delete(h)}}},subscribeLifecycle(h){return p.add(h),h(g),{close(){p.delete(h)}}},async close(){let h;if(!a){a=!0;let v=S("client_closed","Runtime daemon transport closed by client.",!1);try{A.flush()}catch(C){h=yn(C)}i.end(),i.destroy(),qe(k,v)}if(await t,p.clear(),h!==void 0)throw h}}}o(fe,"createRuntimeDaemonSocketClientTransport");function Fr(e,n,i){let t=he(e)??{},s=he(t.clientInfo)??{name:"kodax-transport"};return{...t,clientInfo:{...s,instanceId:typeof s.instanceId=="string"?s.instanceId:n,instanceSecret:typeof s.instanceSecret=="string"?s.instanceSecret:i}}}o(Fr,"withClientInstanceIdentity");function he(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:void 0}o(he,"asRecord");function Lr(e){let n=he(e),i=he(n?.capabilities),t=he(i?.runLifecycleControl);return t!==void 0&&Number.isSafeInteger(t.version)&&Number(t?.version)>=1&&t.structuredStopReceipt===!0&&t.protocolCancellation===!0&&t.responseAcknowledgement===!0}o(Lr,"runtimeDaemonSupportsRequestLifecycle");function kt(e,n){xt(Buffer.byteLength(e,"utf8"),n)}o(kt,"assertFrameSize");function xt(e,n){if(!(e<=n))throw new le(`Runtime daemon frame exceeds the ${n}-byte limit.`,"invalid_frame",{actualBytes:e,maxFrameBytes:n})}o(xt,"assertFrameByteSize");function Br(e,n=2e3,i){return new Promise((t,s)=>{let a=setTimeout(()=>{u(),e.destroy(),s(Object.assign(new Error("Timed out connecting to runtime daemon."),{code:"ETIMEDOUT"}))},n);a.unref?.();let u=o(()=>{clearTimeout(a),e.off("connect",c),e.off("error",l),i?.removeEventListener("abort",m)},"cleanup"),c=o(()=>{u(),t()},"onConnect"),l=o(p=>{u(),s(p)},"onError"),m=o(()=>{u(),e.destroy(),s(i?.reason)},"onAbort");e.once("connect",c),e.once("error",l),i?.addEventListener("abort",m,{once:!0}),i?.aborted&&m()})}o(Br,"waitForConnect");function qe(e,n){for(let i of e.values())i.cleanup(),i.reject(n);e.clear()}o(qe,"rejectPending");function Hr(e){return e instanceof Error?e:new Error("Runtime daemon request cancelled.")}o(Hr,"normalizeTransportAbortReason");function yn(e){return e instanceof Error?e:new Error(String(e))}o(yn,"normalizeTransportError");async function we(e,n={}){let i=Ze(e);if(!i)return{pidAlive:!1,endpointReachable:!1,identityMatches:!1};let t=H(e.lockFile),s=o(()=>n.isPidAlive?n.isPidAlive(i.pid):Se(i.pid,Sn(t,i)?t?.processStartIdentity:void 0),"readPidAlive"),a=Le(i),u=Te(e),c;try{c=await(n.createTransport?n.createTransport(a):fe(a,{connectTimeoutMs:n.connectTimeoutMs??1e3}));let l=c.request("initialize",{profile:i.profile,connectionPurpose:n.connectionPurpose??"probe",...u!==void 0?{token:u}:{}});l.catch(()=>{});let m=await Kr(l,n.handshakeTimeoutMs??1e3,"Timed out waiting for runtime daemon handshake."),p=s(),g=i;if(i.status==="starting"){let R=Ze(e),S=H(e.lockFile);R?.status==="ready"&&R.runtimeId===i.runtimeId&&R.pid===i.pid&&R.profile===i.profile&&R.endpoint===i.endpoint&&Sn(S,R)&&S?.createdAt===t?.createdAt&&S?.processStartIdentity===t?.processStartIdentity&&(g=R)}return{state:g,initialization:m,pidAlive:p,endpointReachable:!0,identityMatches:$r(m,i)&&Sn(t,i),...t!==void 0?{observedLockOwner:t}:{}}}catch(l){return hn(l)&&l.code==="unauthorized"?{state:i,pidAlive:s(),endpointReachable:!0,identityMatches:!1,...t!==void 0?{observedLockOwner:t}:{}}:{state:i,pidAlive:s(),endpointReachable:!1,identityMatches:!1,...t!==void 0?{observedLockOwner:t}:{}}}finally{await c?.close?.()}}o(we,"observeRuntimeDaemonHealth");function Le(e){return{kind:process.platform==="win32"||e.endpoint.startsWith("\\\\.\\pipe\\")?"pipe":"unix",path:e.endpoint}}o(Le,"runtimeDaemonEndpointFromState");function Se(e,n){return Me({pid:e,processStartIdentity:n})!=="gone"}o(Se,"isRuntimeDaemonOwnerPidAlive");async function Kr(e,n,i){let t;try{return await Promise.race([e,new Promise((s,a)=>{t=setTimeout(()=>a(new Error(i)),n),t.unref?.()})])}finally{t!==void 0&&clearTimeout(t)}}o(Kr,"withTimeout");function $r(e,n){let i=Pt(e),t=Pt(i?.identity)??i;return t?.runtimeId===n.runtimeId&&t.profile===n.profile}o($r,"daemonIdentityMatchesState");function Sn(e,n){return e?.runtimeId===n.runtimeId&&e.pid===n.pid}o(Sn,"runtimeDaemonLockMatchesState");function Pt(e){if(!(e===null||typeof e!="object"||Array.isArray(e)))return e}o(Pt,"asRecord");var Xr=15e3,Wr=25;async function Ur(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??Xr,i=e.pollIntervalMs??Wr;if(!Number.isSafeInteger(n)||n<=0)throw new Error("Runtime daemon shutdown verification timeout must be positive.");if(!Number.isSafeInteger(i)||i<=0)throw new Error("Runtime daemon shutdown verification poll interval must be positive.");if(e.owner.processStartIdentity!==void 0&&(typeof e.owner.processStartIdentity!="string"||e.owner.processStartIdentity.length===0))throw new Error("Runtime daemon process identity must be non-empty when provided.");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.");if(e.owner.supervisorProcessStartIdentity!==void 0&&(e.owner.processContainment!=="windows-job"||typeof e.owner.supervisorProcessStartIdentity!="string"||e.owner.supervisorProcessStartIdentity.length===0))throw new Error("A supervisor process identity requires Windows Job containment and must be non-empty.");let t=Z(e.configHome,e.profile??"default"),s=Date.now()+n,a="outcome_missing";for(;;){let u=H(t.lockFile),c=u?.kind==="daemon"&&Se(u.pid,u.processStartIdentity)&&(u.runtimeId!==e.owner.runtimeId||u.pid!==e.owner.pid)?u:void 0,l=Jn(t,e.owner),m=Se(e.owner.pid,e.owner.processStartIdentity),p=e.owner.processContainment==="windows-job"&&Se(e.owner.supervisorPid,e.owner.supervisorProcessStartIdentity);if(l?.status==="failed")return{status:"failed",outcome:l};if(process.platform==="win32"&&e.owner.processContainment!=="windows-job")return{status:"unverified",reason:"containment_unavailable"};if(l?.status==="succeeded"&&!m&&!p)return c!==void 0?{status:"replacement_running",runtimeId:c.runtimeId,pid:c.pid}:{status:"succeeded",outcome:l};if(a=m?"daemon_active":p?"containment_active":"outcome_missing",Date.now()>=s)return{status:"unverified",reason:a};await zr(Math.min(i,Math.max(1,s-Date.now())))}}o(Ur,"waitForRuntimeDaemonShutdown");function zr(e){return new Promise(n=>setTimeout(n,e))}o(zr,"delay");import{existsSync as Vr,readFileSync as Gr}from"node:fs";import ve from"node:path";import{fileURLToPath as Jr}from"node:url";var Ie;function Ct(){if(!Ie){let e=ve.dirname(Jr(import.meta.url)),n=process.env.KODAX_BUNDLED==="true"?[ve.join(ve.dirname(process.execPath),"runtime-daemon-schema.json")]:[ve.join(e,"runtime-daemon-schema.json"),ve.join(e,"..","runtime-daemon-schema.json")];if(Ie=JSON.parse(Gr(n.find(Vr)??n[0],"utf8")),Ie.protocol!==se||Ie.version!==1)throw new Error("Runtime daemon schema resource version mismatch.")}return Ie}o(Ct,"loadSchemaResource");var Qr={type:"boolean"};var Ys=Tt({ok:Qr},["ok"]),Zs=Tt({}),vn=Ct().methods,Et=Ct().notifications,At={protocol:se,version:1,methods:vn,notifications:Et},Yr=JSON.stringify(At,null,2);function Zr(){return je}o(Zr,"listRuntimeDaemonSchemaMethods");function Tt(e,n=[],i=!1){return{type:"object",properties:e,required:n,additionalProperties:i}}o(Tt,"objectSchema");function G(e){let n;return i=>{if(e===void 0)return;let t=i.stage==="waiting"?`${i.stage}:${i.reason}`:i.stage==="initializing"?`${i.stage}:${i.phase}`:i.stage;if(n===t)return;n=t;let s=o(a=>{E({source:"client.startup-progress",level:"warn",message:"Startup progress observer failed.",detail:a})},"reportFailure");try{let a=e(i);a!==void 0&&Promise.resolve(a).catch(s)}catch(a){s(a)}}}o(G,"createClientStartupProgressReporter");import{createHash as ei}from"node:crypto";import{closeSync as ni,fstatSync as ti,openSync as ri,readFileSync as ii,readSync as oi,readdirSync as si,realpathSync as Mt,statSync as _t}from"node:fs";import F from"node:path";import{fileURLToPath as ai}from"node:url";function bn(e=import.meta.url,n=process.env.KODAX_BUNDLED==="true"){if(n)return;let i=ai(e),t=F.dirname(i);return i.endsWith(".ts")?F.join(t,"kodax_cli.ts"):F.join(F.basename(t)==="chunks"?F.dirname(t):t,"kodax_cli.js")}o(bn,"resolveDaemonCliEntry");var di=new Set([".git","node_modules","docs","tests","__tests__","types-chunks","binary"]);function ui(e){return!(/\.(?:test|spec)\.[^.]+$|\.d\.[cm]?ts$|\.map$|\.tsbuildinfo$/u.test(e)||/^(?:bundle-meta|bun-build-metadata)\.json$/u.test(e)||/^(?:README|CHANGELOG|LICENSE|NOTICE)(?:[.-]|$)/iu.test(e))}o(ui,"isRuntimeFile");function Be(e,n,i=new Set){let t=Mt(e);if(i.has(t))throw new Error(`Runtime build contains a directory cycle: ${e}`);let s=new Set(i).add(t);for(let a of si(e,{withFileTypes:!0})){let u=F.join(e,a.name),c=a.isSymbolicLink()?_t(u):a;c.isDirectory()?di.has(a.name)||Be(u,n,s):c.isFile()&&ui(a.name)&&n.add(u)}}o(Be,"collectRuntimeFiles");function In(e,n){let i=_t(e,{throwIfNoEntry:!1});i?.isDirectory()?Be(e,n):i?.isFile()&&n.add(e)}o(In,"addOptionalFileOrDirectory");function ci(e,n,i,t){let s=ri(n,"r");try{e.update(`${i}\0${ti(s).size}\0`);let a;for(;(a=oi(s,t,0,t.length,null))>0;)e.update(t.subarray(0,a))}finally{ni(s)}}o(ci,"hashRuntimeFile");function kn(e=bn()??process.execPath){let n=Mt(e),i=n.endsWith(".ts"),t=n.endsWith(".js"),s=F.dirname(n),a=i||t?F.dirname(s):s,u=new Set([n]);if(i||t){Be(s,u),u.add(F.join(a,"package.json"));for(let p of["package-lock.json","config-templates","scripts/production-env.cjs","scripts/kodax-bin.cjs"])In(F.join(a,p),u);if(i){let p=`${process.platform}-${process.arch}`;for(let g of["native","dist/native"])In(F.join(a,g,p),u);for(let g of["llm","agent","coding","repl"]){let R=F.join(a,"packages",g);u.add(F.join(R,"package.json")),Be(F.join(R,"dist"),u)}}}else for(let p of["builtin","vendor","native","provider-capabilities.json","manual-topics.json","semantic-worker.js","constructed-handler-worker.js","sandbox-network-broker.js"])In(F.join(a,p),u);let c=ei("sha256"),l=[...u].map(p=>({file:p,relative:F.relative(a,p).replaceAll("\\","/")})).sort((p,g)=>p.relative<g.relative?-1:p.relative>g.relative?1:0),m=Buffer.allocUnsafe(64*1024);for(let{file:p,relative:g}of l)if(t&&g==="package.json"){let R=JSON.parse(ii(p,"utf8"));delete R.scripts,delete R.keywords,delete R.bundleDependencies;let S=Buffer.from(JSON.stringify(R));c.update(`${g}\0${S.length}\0`).update(S)}else ci(c,p,g,m);return{origin:process.platform==="win32"?n.toLowerCase():n,fingerprint:c.digest("hex")}}o(kn,"readRuntimeBuildIdentity");var ae=Object.freeze(kn());import{AsyncLocalStorage as li}from"node:async_hooks";var Ra=new li;import{createHash as hp,randomUUID as tr}from"node:crypto";function Pi(e){let{provider:n,model:i,effort:t,planModeEffort:s,thinking:a,reasoningMode:u,permissionMode:c,agentMode:l,autoModeClassifierModel:m,compactionTriggerPercent:p,compactionTriggerTokens:g,maxIter:R,compactionReasoning:S,repoIntelligenceMode:k,repoIntelligenceTrace:O,workMode:x}=e;return{provider:n,model:i,effort:t,thinking:a,reasoningMode:u,permissionMode:c,agentMode:l,...s!==void 0?{planModeEffort:s}:{},autoModeClassifierModel:m,compactionTriggerPercent:p,compactionTriggerTokens:g,maxIter:R,...S!==void 0?{compactionReasoning:S}:{},...k!==void 0?{repoIntelligenceMode:k}:{},...O!==void 0?{repoIntelligenceTrace:O}:{},...x!==void 0?{workMode:x}:{}}}o(Pi,"toClientSessionSettings");var Ot=["provider","model","effort","planModeEffort","thinking","reasoningMode","permissionMode","agentMode","locale","providerModels","extensions","fallbackProviders","repoIntelligenceMode","repoIntelligenceTrace","stallLog","fastProvider","fastModel","deepProvider","deepModel","maxOutputTokens","disablePromptCache","lsp","lspAutoDownload","acpLogLevel","sessionRetentionDays","repoIntelligence","workflow"],Ci=Object.fromEntries(Ot.map(e=>[e,["fallbackProviders","stallLog"].includes(e)?"immediate":e==="extensions"?"extension_reload":["locale","providerModels","lspAutoDownload","acpLogLevel","sessionRetentionDays","repoIntelligence"].includes(e)?"restart":"next_run"]));function Ei(e){if(!e||typeof e!="object")return{};let n=e;return Object.fromEntries(Ot.filter(i=>n[i]!==void 0).map(i=>[i,structuredClone(n[i])]))}o(Ei,"toClientConfig");var jt=Object.freeze({version:6,owner:"session-runtime",sandboxFirst:!0,sandboxCompletionAuthority:!0,hostBoundaryReviewOnly:!0,escalationCreatesPermission:!1,automaticUserPromptOnDeny:!1,defaultClassifierTimeoutMs:Wn,retryClassifierTimeoutMs:Un,maxClassifierAttempts:2,boundedClassifierInput:!0,diagnosticsVersion:1,permissionGrantSuggestions:!0,concretePermissionMatchers:!0,clientScopeExpansion:!1,exactTextMutationApproval:!0,livePermissionContext:!0});import*as j from"node:fs";import jo from"node:os";import Q from"node:path";var qi=["read","grep","glob"],Fi=["write","edit","multi_edit","insert_after_anchor"];var gu=new Set([...qi,...Fi]);import{execFile as Hi}from"node:child_process";import{promisify as Ki}from"node:util";var ec=Ki(Hi);import{spawn as uo}from"node:child_process";import{randomUUID as Wt}from"node:crypto";import{appendFileSync as Sc,closeSync as Ut,existsSync as ke,ftruncateSync as co,openSync as zt,readFileSync as vc,readSync as lo,renameSync as mo,statSync as Vt,unlinkSync as Gt,writeFileSync as fo,writeSync as po}from"node:fs";import go from"node:os";import J from"node:path";import{spawn as $i}from"node:child_process";import{randomUUID as be}from"node:crypto";import{readFileSync as Xi,rmSync as He,writeFileSync as Wi}from"node:fs";import xn from"node:os";import Pn from"node:path";var Ui=15e3,$e="KODAX_INTERNAL_WINDOWS_JOB_LAUNCH",Xe="KODAX_INTERNAL_WINDOWS_JOB_READY_FILE",Ke="KODAX_INTERNAL_WINDOWS_JOB_SCRIPT_FILE",Nt="KODAX_INTERNAL_WINDOWS_JOB_TEST_OWNER_AFTER_READY",Cn="KODAX_INTERNAL_WINDOWS_JOB_HANDOFF",zi=String.raw`
6
+ const { spawn } = require('node:child_process');
7
+ const { appendFileSync, closeSync, existsSync, openSync, readFileSync, rmSync, writeFileSync } = require('node:fs');
8
+ const readyFile = process.env.${Xe};
9
+ const scriptFile = process.env.${Ke};
10
+ const handoffFile = process.env.${Cn};
11
+ const logFile = JSON.parse(Buffer.from(process.env.${$e}, 'base64').toString('utf8')).logFile;
12
+ const childEnv = { ...process.env };
13
+ delete childEnv.${Ke};
14
+ delete childEnv.${Nt};
15
+ // The supervisor needed Bun runtime mode for its own -e entrypoint; the
16
+ // contained daemon must run as the ordinary KodaX CLI instead.
17
+ delete childEnv.BUN_BE_BUN;
18
+ const fail = (message) => {
19
+ if (!existsSync(readyFile)) writeFileSync(readyFile, 'ERROR:' + message);
20
+ };
21
+ let child;
22
+ let childExited = false;
23
+ let phase = 'candidate';
24
+ const reportError = (error) => {
25
+ try { appendFileSync(logFile, 'Windows Job startup control failed: ' + error.message + '\n'); }
26
+ catch (logError) { process.stderr.write(String(logError) + '\n'); }
27
+ };
28
+ const cleanHandoff = () => {
29
+ if (!handoffFile) return;
30
+ try { rmSync(handoffFile, { force: true }); }
31
+ catch (error) { reportError(error); }
32
+ };
33
+ const cleanReady = () => {
34
+ try { rmSync(readyFile, { force: true }); }
35
+ catch (error) { reportError(error); }
36
+ };
37
+ const cleanScript = () => {
38
+ try { rmSync(scriptFile, { force: true }); }
39
+ catch (error) { reportError(error); }
40
+ };
41
+ const cleanAfterExit = async () => {
42
+ if (!handoffFile) return;
43
+ cleanScript();
44
+ if (phase === 'aborting') {
45
+ // The wrapper owns this ready file until teardown. Missing publication
46
+ // proves the suspended target was never resumed; malformed data does not.
47
+ let targetPid;
48
+ try {
49
+ const ready = JSON.parse(readFileSync(readyFile, 'utf8'));
50
+ if (!Number.isSafeInteger(ready.processPid) || ready.processPid <= 0
51
+ || ready.containmentSupervisorPid !== child.pid) throw new Error('Cannot verify startup target identity after Job owner exit.');
52
+ targetPid = ready.processPid;
53
+ } catch (error) {
54
+ if (error.code !== 'ENOENT') { reportError(error); return; }
55
+ }
56
+ const deadline = Date.now() + 2000;
57
+ while (targetPid !== undefined) {
58
+ try { process.kill(targetPid, 0); }
59
+ catch (error) {
60
+ if (error.code === 'ESRCH') break;
61
+ reportError(error); return;
62
+ }
63
+ if (Date.now() >= deadline) {
64
+ reportError(new Error('Startup target did not exit; preserving abort marker.'));
65
+ return;
66
+ }
67
+ await new Promise((resolve) => setTimeout(resolve, 10));
68
+ }
69
+ }
70
+ cleanHandoff();
71
+ cleanReady();
72
+ };
73
+ const stopCandidate = () => {
74
+ if (childExited || phase === 'aborting') return 'terminating';
75
+ if (phase === 'persistent') return 'retained';
76
+ if (handoffFile) {
77
+ // Only this wrapper and the trusted target create the one-shot marker.
78
+ // After observing commit, remember it before removing the marker.
79
+ let descriptor;
80
+ try { descriptor = openSync(handoffFile, 'wx', 0o600); }
81
+ catch (error) {
82
+ if (error.code !== 'EEXIST') throw error;
83
+ phase = 'persistent';
84
+ cleanHandoff();
85
+ cleanReady();
86
+ cleanScript();
87
+ return 'retained';
88
+ }
89
+ phase = 'aborting';
90
+ try { closeSync(descriptor); } catch (error) { reportError(error); }
91
+ } else phase = 'aborting';
92
+ if (child?.pid) child.kill();
93
+ else process.exit(1);
94
+ return 'terminating';
95
+ };
96
+ const reply = (message) => {
97
+ if (!process.connected) return;
98
+ try { process.send(message, (error) => { if (error) reportError(error); }); }
99
+ catch (error) { reportError(error); }
100
+ };
101
+ process.on('message', (message) => {
102
+ if (message?.kind !== 'terminate') return;
103
+ try {
104
+ const outcome = stopCandidate();
105
+ if (handoffFile) reply({ kind: 'termination', requestId: message.requestId, outcome });
106
+ } catch (error) {
107
+ reportError(error);
108
+ reply({ kind: 'termination', requestId: message.requestId, error: error.message });
109
+ }
110
+ });
111
+ if (handoffFile) process.on('disconnect', () => {
112
+ try { stopCandidate(); }
113
+ catch (error) { reportError(error); }
114
+ });
115
+ child = spawn('powershell.exe', [
116
+ '-NoProfile',
117
+ '-NonInteractive',
118
+ '-ExecutionPolicy',
119
+ 'Bypass',
120
+ '-File',
121
+ process.env.${Ke},
122
+ ], { detached: false, windowsHide: true, stdio: 'ignore', env: childEnv });
123
+ child.once('error', (error) => {
124
+ if (!handoffFile) { fail(error.message); return; }
125
+ reportError(error);
126
+ if (child.pid !== undefined) return;
127
+ // A failed spawn emits error without exit; there is no Job or target to wait for.
128
+ childExited = true;
129
+ cleanScript();
130
+ cleanHandoff();
131
+ cleanReady();
132
+ process.exit(1);
133
+ });
134
+ child.once('exit', async (code) => {
135
+ childExited = true;
136
+ if (code !== 0 && !handoffFile) fail('PowerShell supervisor exited before readiness.');
137
+ await cleanAfterExit();
138
+ process.exit(code ?? 1);
139
+ });
140
+ const publishOwner = () => {
141
+ if (!Number.isSafeInteger(child.pid) || child.pid <= 0 || !process.send) return;
142
+ process.send({ kind: 'owner', pid: child.pid }, (error) => {
143
+ if (!error) return;
144
+ try { stopCandidate(); } catch (cleanupError) { reportError(cleanupError); }
145
+ if (handoffFile) reportError(new Error('Could not publish the PowerShell Job owner: ' + error.message));
146
+ else fail('Could not publish the PowerShell Job owner: ' + error.message);
147
+ });
148
+ };
149
+ if (process.env.${Nt} === '1') {
150
+ const timer = setInterval(() => {
151
+ if (!existsSync(readyFile)) return;
152
+ clearInterval(timer);
153
+ publishOwner();
154
+ }, 10);
155
+ } else {
156
+ publishOwner();
157
+ }
158
+ `,Vi=String.raw`
159
+ using System;
160
+ using System.IO;
161
+ using System.Runtime.InteropServices;
162
+ using System.Text;
163
+ using System.Threading;
164
+
165
+ public static class KodaXWindowsJobSupervisor {
166
+ [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
167
+ private struct StartupInfo {
168
+ public uint cb;
169
+ public string lpReserved;
170
+ public string lpDesktop;
171
+ public string lpTitle;
172
+ public uint dwX;
173
+ public uint dwY;
174
+ public uint dwXSize;
175
+ public uint dwYSize;
176
+ public uint dwXCountChars;
177
+ public uint dwYCountChars;
178
+ public uint dwFillAttribute;
179
+ public uint dwFlags;
180
+ public ushort wShowWindow;
181
+ public ushort cbReserved2;
182
+ public IntPtr lpReserved2;
183
+ public IntPtr hStdInput;
184
+ public IntPtr hStdOutput;
185
+ public IntPtr hStdError;
186
+ }
187
+
188
+ [StructLayout(LayoutKind.Sequential)]
189
+ private struct ProcessInformation {
190
+ public IntPtr hProcess;
191
+ public IntPtr hThread;
192
+ public uint dwProcessId;
193
+ public uint dwThreadId;
194
+ }
195
+
196
+ [StructLayout(LayoutKind.Sequential)]
197
+ private struct SecurityAttributes {
198
+ public int length;
199
+ public IntPtr securityDescriptor;
200
+ public int inheritHandle;
201
+ }
202
+
203
+ [StructLayout(LayoutKind.Sequential)]
204
+ private struct BasicLimitInformation {
205
+ public long PerProcessUserTimeLimit;
206
+ public long PerJobUserTimeLimit;
207
+ public uint LimitFlags;
208
+ public UIntPtr MinimumWorkingSetSize;
209
+ public UIntPtr MaximumWorkingSetSize;
210
+ public uint ActiveProcessLimit;
211
+ public UIntPtr Affinity;
212
+ public uint PriorityClass;
213
+ public uint SchedulingClass;
214
+ }
215
+
216
+ [StructLayout(LayoutKind.Sequential)]
217
+ private struct IoCounters {
218
+ public ulong ReadOperationCount;
219
+ public ulong WriteOperationCount;
220
+ public ulong OtherOperationCount;
221
+ public ulong ReadTransferCount;
222
+ public ulong WriteTransferCount;
223
+ public ulong OtherTransferCount;
224
+ }
225
+
226
+ [StructLayout(LayoutKind.Sequential)]
227
+ private struct ExtendedLimitInformation {
228
+ public BasicLimitInformation BasicLimitInformation;
229
+ public IoCounters IoInfo;
230
+ public UIntPtr ProcessMemoryLimit;
231
+ public UIntPtr JobMemoryLimit;
232
+ public UIntPtr PeakProcessMemoryUsed;
233
+ public UIntPtr PeakJobMemoryUsed;
234
+ }
235
+
236
+ [StructLayout(LayoutKind.Sequential)]
237
+ private struct BasicAccountingInformation {
238
+ public long TotalUserTime;
239
+ public long TotalKernelTime;
240
+ public long ThisPeriodTotalUserTime;
241
+ public long ThisPeriodTotalKernelTime;
242
+ public uint TotalPageFaultCount;
243
+ public uint TotalProcesses;
244
+ public uint ActiveProcesses;
245
+ public uint TotalTerminatedProcesses;
246
+ }
247
+
248
+ [DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
249
+ private static extern bool CreateProcessW(
250
+ string applicationName,
251
+ StringBuilder commandLine,
252
+ IntPtr processAttributes,
253
+ IntPtr threadAttributes,
254
+ bool inheritHandles,
255
+ uint creationFlags,
256
+ IntPtr environment,
257
+ string currentDirectory,
258
+ ref StartupInfo startupInfo,
259
+ out ProcessInformation processInformation);
260
+
261
+ [DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
262
+ private static extern IntPtr CreateJobObjectW(IntPtr attributes, string name);
263
+
264
+ [DllImport("kernel32.dll", SetLastError = true)]
265
+ private static extern bool SetInformationJobObject(
266
+ IntPtr job,
267
+ int informationClass,
268
+ ref ExtendedLimitInformation information,
269
+ uint informationLength);
270
+
271
+ [DllImport("kernel32.dll", SetLastError = true)]
272
+ private static extern bool QueryInformationJobObject(
273
+ IntPtr job,
274
+ int informationClass,
275
+ out BasicAccountingInformation information,
276
+ uint informationLength,
277
+ IntPtr returnLength);
278
+
279
+ [DllImport("kernel32.dll", SetLastError = true)]
280
+ private static extern bool AssignProcessToJobObject(IntPtr job, IntPtr process);
281
+
282
+ [DllImport("kernel32.dll", SetLastError = true)]
283
+ private static extern bool TerminateProcess(IntPtr process, uint exitCode);
284
+
285
+ [DllImport("kernel32.dll", SetLastError = true)]
286
+ private static extern uint ResumeThread(IntPtr thread);
287
+
288
+ [DllImport("kernel32.dll", SetLastError = true)]
289
+ private static extern uint WaitForSingleObject(IntPtr handle, uint milliseconds);
290
+
291
+ [DllImport("kernel32.dll", SetLastError = true)]
292
+ private static extern bool GetExitCodeProcess(IntPtr process, out uint exitCode);
293
+
294
+ [DllImport("kernel32.dll", SetLastError = true)]
295
+ private static extern bool TerminateJobObject(IntPtr job, uint exitCode);
296
+
297
+ [DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
298
+ private static extern IntPtr CreateFileW(
299
+ string fileName,
300
+ uint desiredAccess,
301
+ uint shareMode,
302
+ ref SecurityAttributes securityAttributes,
303
+ uint creationDisposition,
304
+ uint flagsAndAttributes,
305
+ IntPtr templateFile);
306
+
307
+ [DllImport("kernel32.dll")]
308
+ private static extern bool CloseHandle(IntPtr handle);
309
+
310
+ private const uint CreateSuspended = 0x00000004;
311
+ private const uint CreateNoWindow = 0x08000000;
312
+ private const uint StartfUseStdHandles = 0x00000100;
313
+ private const uint JobObjectLimitKillOnJobClose = 0x00002000;
314
+ private const uint FileAppendData = 0x00000004;
315
+ private const uint Synchronize = 0x00100000;
316
+ private const uint FileShareRead = 0x00000001;
317
+ private const uint FileShareWrite = 0x00000002;
318
+ private const uint FileShareDelete = 0x00000004;
319
+ private const uint OpenAlways = 4;
320
+ private const uint FileAttributeNormal = 0x00000080;
321
+
322
+ private static void Require(bool result, string operation) {
323
+ if (!result) throw new InvalidOperationException(
324
+ operation + " failed with Win32 error " + Marshal.GetLastWin32Error());
325
+ }
326
+
327
+ private static void PublishReady(string readyFile, uint processId) {
328
+ var temporaryFile = readyFile + "." + Guid.NewGuid().ToString("N") + ".tmp";
329
+ try {
330
+ File.WriteAllText(
331
+ temporaryFile,
332
+ "{\"processPid\":" + processId +
333
+ ",\"containmentSupervisorPid\":" +
334
+ System.Diagnostics.Process.GetCurrentProcess().Id + "}");
335
+ File.Move(temporaryFile, readyFile);
336
+ } finally {
337
+ if (File.Exists(temporaryFile)) File.Delete(temporaryFile);
338
+ }
339
+ }
340
+
341
+ public static int Run(
342
+ string executable,
343
+ string commandLine,
344
+ string cwd,
345
+ string readyFile,
346
+ string logFile,
347
+ string jobName) {
348
+ var job = CreateJobObjectW(IntPtr.Zero, jobName);
349
+ if (job == IntPtr.Zero) throw new InvalidOperationException(
350
+ "CreateJobObject failed with Win32 error " + Marshal.GetLastWin32Error());
351
+ var process = new ProcessInformation();
352
+ var processAssigned = false;
353
+ var security = new SecurityAttributes();
354
+ security.length = Marshal.SizeOf(typeof(SecurityAttributes));
355
+ security.inheritHandle = 1;
356
+ var logHandle = CreateFileW(
357
+ logFile,
358
+ FileAppendData | Synchronize,
359
+ FileShareRead | FileShareWrite | FileShareDelete,
360
+ ref security,
361
+ OpenAlways,
362
+ FileAttributeNormal,
363
+ IntPtr.Zero);
364
+ if (logHandle == new IntPtr(-1)) throw new InvalidOperationException(
365
+ "CreateFile for daemon log failed with Win32 error " + Marshal.GetLastWin32Error());
366
+ try {
367
+ var limits = new ExtendedLimitInformation();
368
+ limits.BasicLimitInformation.LimitFlags = JobObjectLimitKillOnJobClose;
369
+ Require(SetInformationJobObject(
370
+ job,
371
+ 9,
372
+ ref limits,
373
+ (uint)Marshal.SizeOf(typeof(ExtendedLimitInformation))),
374
+ "SetInformationJobObject");
375
+
376
+ var startup = new StartupInfo();
377
+ startup.cb = (uint)Marshal.SizeOf(typeof(StartupInfo));
378
+ startup.dwFlags = StartfUseStdHandles;
379
+ startup.hStdInput = IntPtr.Zero;
380
+ startup.hStdOutput = logHandle;
381
+ startup.hStdError = logHandle;
382
+ Require(CreateProcessW(
383
+ executable,
384
+ new StringBuilder(commandLine),
385
+ IntPtr.Zero,
386
+ IntPtr.Zero,
387
+ true,
388
+ CreateSuspended | CreateNoWindow,
389
+ IntPtr.Zero,
390
+ cwd,
391
+ ref startup,
392
+ out process),
393
+ "CreateProcess");
394
+ Require(AssignProcessToJobObject(job, process.hProcess), "AssignProcessToJobObject");
395
+ processAssigned = true;
396
+ PublishReady(readyFile, process.dwProcessId);
397
+ if (ResumeThread(process.hThread) == 0xffffffff) {
398
+ throw new InvalidOperationException(
399
+ "ResumeThread failed with Win32 error " + Marshal.GetLastWin32Error());
400
+ }
401
+
402
+ if (WaitForSingleObject(process.hProcess, 0xffffffff) == 0xffffffff) {
403
+ throw new InvalidOperationException(
404
+ "WaitForSingleObject failed with Win32 error " + Marshal.GetLastWin32Error());
405
+ }
406
+ uint exitCode;
407
+ if (!GetExitCodeProcess(process.hProcess, out exitCode)) exitCode = 1;
408
+ Require(TerminateJobObject(job, exitCode), "TerminateJobObject");
409
+ while (true) {
410
+ BasicAccountingInformation accounting;
411
+ Require(QueryInformationJobObject(
412
+ job,
413
+ 1,
414
+ out accounting,
415
+ (uint)Marshal.SizeOf(typeof(BasicAccountingInformation)),
416
+ IntPtr.Zero),
417
+ "QueryInformationJobObject");
418
+ if (accounting.ActiveProcesses == 0) return unchecked((int)exitCode);
419
+ Thread.Sleep(10);
420
+ }
421
+ } finally {
422
+ if (process.hProcess != IntPtr.Zero && !processAssigned) {
423
+ TerminateProcess(process.hProcess, 1);
424
+ WaitForSingleObject(process.hProcess, 2000);
425
+ }
426
+ if (process.hThread != IntPtr.Zero) CloseHandle(process.hThread);
427
+ if (process.hProcess != IntPtr.Zero) CloseHandle(process.hProcess);
428
+ CloseHandle(logHandle);
429
+ CloseHandle(job);
430
+ }
431
+ }
432
+ }`,Gi=String.raw`
433
+ $ErrorActionPreference = 'Stop'
434
+ try {
435
+ $readyFile = $env:${Xe}
436
+ $payloadBytes = [Convert]::FromBase64String($env:${$e})
437
+ $payload = [Text.Encoding]::UTF8.GetString($payloadBytes) | ConvertFrom-Json
438
+ Remove-Item Env:${$e} -ErrorAction SilentlyContinue
439
+ Remove-Item Env:${Xe} -ErrorAction SilentlyContinue
440
+ $env:KODAX_DAEMON_JOB_CONTAINED = '1'
441
+ $env:KODAX_DAEMON_JOB_SUPERVISOR_PID = [string]$PID
442
+ $env:KODAX_DAEMON_JOB_NAME = [string]$payload.jobName
443
+ $source = @'
444
+ ${Vi}
445
+ '@
446
+ Add-Type -TypeDefinition $source
447
+ $exitCode = [KodaXWindowsJobSupervisor]::Run(
448
+ [string]$payload.executable,
449
+ [string]$payload.commandLine,
450
+ [string]$payload.cwd,
451
+ [string]$payload.readyFile,
452
+ [string]$payload.logFile,
453
+ [string]$payload.jobName)
454
+ exit $exitCode
455
+ } catch {
456
+ [IO.File]::WriteAllText($readyFile, 'ERROR:' + $_.Exception.Message)
457
+ exit 1
458
+ }
459
+ `;function Ji(e){return e.length>0&&!/[\s"]/u.test(e)?e:`"${e.replace(/(\\*)"/gu,'$1$1\\"').replace(/(\\+)$/u,"$1$1")}"`}o(Ji,"quoteWindowsCommandLineArg");function Qi(e,n){return[e,...n].map(Ji).join(" ")}o(Qi,"buildWindowsCommandLine");async function Lt(e){if(e.startupSignal?.throwIfAborted(),process.platform!=="win32")throw new Error("Windows Job containment is available only on Windows.");let n=Pn.join(xn.tmpdir(),`kodax-daemon-job-${be()}.ready`),i=Pn.join(xn.tmpdir(),`kodax-daemon-job-${be()}.ps1`),t=e.startupHandoff?Pn.join(xn.tmpdir(),`kodax-daemon-handoff-${be()}`):void 0;Wi(i,Gi,{encoding:"utf8",flag:"wx",mode:384});let s=Buffer.from(JSON.stringify({executable:e.executable,commandLine:Qi(e.executable,e.args),cwd:e.cwd,readyFile:n,logFile:e.logFile,jobName:`Global\\KodaXDaemonJob-${be()}`}),"utf8").toString("base64"),a={...e.env};delete a.KODAX_DAEMON_JOB_CONTAINED,delete a.KODAX_DAEMON_JOB_SUPERVISOR_PID,delete a.KODAX_DAEMON_JOB_NAME,delete a[Cn];let u;try{u=$i(process.execPath,["-e",zi],{cwd:e.cwd,detached:!0,windowsHide:!0,stdio:["ignore","ignore","ignore","ipc"],env:{...a,[Hn]:process.env.KODAX_BUNDLED==="true"?"1":void 0,[$e]:s,[Xe]:n,[Ke]:i,...t===void 0?{}:{[Cn]:t}}})}catch(m){throw He(n,{force:!0}),He(i,{force:!0}),m}let c=await Yi(u,n,e.startupTimeoutMs??Ui,e.startupSignal).catch(async m=>{try{await Ft(u,void 0,e.startupHandoff)==="retained"&&qt(u)}catch(p){throw new AggregateError([m,p],"Windows Job supervisor startup failed and its process tree was not reclaimed.")}throw m}).finally(()=>{t===void 0&&He(n,{force:!0}),He(i,{force:!0})}),l=!1;return{...c,supervisor:u,release:o(()=>{l=!0,qt(u)},"release"),terminate:o(()=>l&&e.startupHandoff&&u.exitCode===null&&u.signalCode===null?Promise.resolve("retained"):Ft(u,c.processPid,e.startupHandoff),"terminate")}}o(Lt,"spawnWindowsJobContainedProcess");async function Yi(e,n,i,t){let s,a,u=o(m=>{s=m},"captureLaunchError"),c=o(m=>{m!==null&&typeof m=="object"&&"kind"in m&&m.kind==="owner"&&"pid"in m&&Number.isSafeInteger(m.pid)&&Number(m.pid)>0&&(a=Number(m.pid))},"captureOwner");e.once("error",u),e.on("message",c);let l=Date.now()+i;try{for(;;){if(t?.throwIfAborted(),s!==void 0)throw s;try{let m=Xi(n,"utf8").trim();if(m.startsWith("ERROR:"))throw new Error(`Windows Job supervisor startup failed: ${m.slice(6)}`);let p=JSON.parse(m);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(a!==void 0){if(Number(p.containmentSupervisorPid)!==a)throw new Error("Windows Job supervisor readiness owner identities do not match.");return{processPid:Number(p.processPid),containmentSupervisorPid:a}}}catch(m){if(m.code!=="ENOENT")throw m}if(e.exitCode!==null||e.signalCode!==null)throw new Error(`Windows Job supervisor exited before daemon readiness (code ${e.exitCode??"unknown"}).`);if(Date.now()>=l)throw new Error("Windows Job supervisor did not report daemon readiness in time.");await new Promise(m=>setTimeout(m,10))}}finally{e.off("error",u),e.off("message",c)}}o(Yi,"waitForSupervisorReadiness");function qt(e){e.connected&&e.disconnect(),e.unref()}o(qt,"releaseSupervisor");async function Ft(e,n,i=!1){if(e.pid===void 0)return;let t=Date.now()+2e3,s;if(e.exitCode===null&&e.signalCode===null&&e.connected)try{if(await Zi(e,i,t)==="retained")return"retained"}catch(a){s=a}try{await eo(e,t),n!==void 0&&await no(n,2e3)}catch(a){throw s!==void 0?new AggregateError([s,a],"Windows Job supervisor control failed and process cleanup could not be confirmed."):a}}o(Ft,"terminateSupervisor");async function Zi(e,n,i){let t=be(),s,a,u;try{return await new Promise((c,l)=>{n&&(s=o(m=>{m===null||typeof m!="object"||!("kind"in m)||m.kind!=="termination"||!("requestId"in m)||m.requestId!==t||("error"in m&&typeof m.error=="string"?l(new Error(m.error)):"outcome"in m&&m.outcome==="retained"?c("retained"):c())},"onMessage"),a=o(()=>c(),"onExit"),e.on("message",s),e.once("exit",a),u=setTimeout(()=>l(new Error("Windows Job startup control did not acknowledge termination.")),Math.max(0,i-Date.now()))),e.send({kind:"terminate",requestId:t},m=>{m?l(m):n||c()})})}finally{s&&e.off("message",s),a&&e.off("exit",a),u&&clearTimeout(u)}}o(Zi,"requestSupervisorTermination");async function eo(e,n){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(i=>setTimeout(i,10))}}o(eo,"waitForWrapperExit");async function no(e,n){let i=Date.now()+n;for(;to(e);){if(Date.now()>=i)throw new Error(`Process ${e} did not exit after termination.`);await new Promise(t=>setTimeout(t,10))}}o(no,"waitForPidExit");function to(e){try{return process.kill(e,0),!0}catch(n){if(n.code==="ESRCH")return!1;throw n}}o(to,"isPidAlive");import{closeSync as ro,fstatSync as io,openSync as oo,readSync as so}from"node:fs";var En="KODAX_INTERNAL_DAEMON_STARTUP_PROGRESS_ID",Bt="[kodax-startup] ",ao=["modules","extensions","runtime","recovery","mcp","sessions","a2a","listener"];function Ht(e,n,i){let t;try{t=oo(e,"r")}catch(s){if(typeof s=="object"&&s!==null&&"code"in s&&s.code==="ENOENT")return;throw s}try{let s=io(t).size,a=Buffer.alloc(Math.min(s,4096)),u=so(t,a,0,a.length,s-a.length);for(let c of a.subarray(0,u).toString("utf8").split(`
460
+ `).reverse()){if(!c.startsWith(Bt))continue;let l;try{l=JSON.parse(c.slice(Bt.length))}catch{continue}if(!(typeof l!="object"||l===null||!("startupId"in l)||!("pid"in l)||!("phase"in l))&&l.startupId===n&&l.pid===i&&ao.includes(l.phase))return l.phase}}finally{ro(t)}}o(Ht,"readDaemonStartupPhase");var We=class extends Error{constructor(i){super(`Runtime daemon child ${i??"unknown"} process-tree cleanup could not be verified.`);this.pid=i;this.name="RuntimeDaemonProcessCleanupIncompleteError"}pid;static{o(this,"RuntimeDaemonProcessCleanupIncompleteError")}code="process_tree_cleanup_incomplete"},yo=1e3,Jt=256*1024,Kt="KODAX_INTERNAL_DAEMON_OWNER_BOOTSTRAP",Oc=1024*1024;function Ro(e,n){Ye(e);let i=To(JSON.parse(JSON.stringify(n))),t=J.join(e.rootDir,`owner-bootstrap-${Wt()}.json`);return fo(t,JSON.stringify(i),{encoding:"utf8",flag:"wx",mode:384}),t}o(Ro,"createRuntimeDaemonOwnerBootstrapFile");function ge(e){return J.join(e.rootDir,"bootstrap.log")}o(ge,"runtimeDaemonBootstrapLogPath");function ho(e,n=Jt){Ye(e);let i=ge(e),t=Math.max(1,n),s=`${i}.1`;return An(s,t),ke(i)&&Vt(i).size>=t&&(An(i,t),ke(s)&&Gt(s),mo(i,s)),zt(i,"a",384)}o(ho,"openRuntimeDaemonBootstrapLog");function wo(e,n=Jt){An(ge(e),Math.max(1,n))}o(wo,"capRuntimeDaemonBootstrapLog");function An(e,n){if(!ke(e))return;let i=Vt(e).size;if(i<=n)return;let t=zt(e,"r+");try{let s=Buffer.allocUnsafe(n),a=0;for(;a<s.length;){let u=lo(t,s,a,s.length-a,i-n+a);if(u===0)break;a+=u}co(t,0),a>0&&po(t,s,0,a,0)}finally{Ut(t)}}o(An,"capFileToTail");var L=class extends Error{constructor(i,t){super(i);this.reason=t;this.name="RuntimeDaemonStartupError",this.retryable=t==="timeout"||t==="unhealthy"}reason;static{o(this,"RuntimeDaemonStartupError")}code="daemon_startup_failed";retryable};async function _n(e,n,i){if(!Number.isSafeInteger(e.pid)||e.pid<=0||!e.processStartIdentity)throw new Error("Cannot confirm Host exit without its exact process identity.");if(!Number.isSafeInteger(n)||n<=0)throw new Error("Host exit timeout must be a positive integer.");let t=Date.now()+n;for(;;){if(i?.aborted)throw X();let s=Me(e);if(s==="gone")return;if(Date.now()>=t)throw new Error(s==="unknown"?"Cannot verify the original Host process identity; retry startup after it exits.":"The original Host is still running; retry startup after it exits.");await $(pe(Math.min(50,t-Date.now())),i)}}o(_n,"waitForRuntimeDaemonOwnerExit");async function On(e){let n=Date.now()+(e.startupTimeoutMs??6e4);if(e.orphanExitMs!==void 0&&(!Number.isSafeInteger(e.orphanExitMs)||e.orphanExitMs<=0))throw new Error("orphanExitMs must be a positive safe integer.");let i=e.profile??"default",t=J.resolve(e.homeDir??go.homedir()),s=J.resolve(e.configHome??J.join(t,".kodax")),a=Z(s,i),u=Fe(a.profile,Ee(t,s));if(e.endpoint&&e.endpoint.path!==u.path)throw new Error("SDK daemon auto-start only supports the profile default endpoint; use attach-only mode for custom endpoints.");if(e.startupSignal?.aborted)throw X();Ae(a,e.sessionsDir??J.join(s,"sessions"));let c=G(e.onStartupProgress);c({stage:"checking"});let l=await $(we(a,e.healthCheck),e.startupSignal),m=de(l);if(m==="unhealthy"){let g=Date.now()+Math.min(1e4,Math.max(0,n-Date.now()));for(;m==="unhealthy"&&Date.now()<g&&!e.startupSignal?.aborted;)await $(pe(Math.max(0,Math.min(250,g-Date.now()))),e.startupSignal),l=await $(we(a,e.healthCheck),e.startupSignal),m=de(l)}if(e.startupSignal?.aborted)throw X();if(l.pidAlive&&(l.state?.status==="stopping"||l.state?.status==="draining")){let g=l.observedLockOwner;if(m==="mismatch"||g?.runtimeId!==l.state.runtimeId||g.pid!==l.state.pid||g.kind!=="daemon")throw new L("Cannot confirm the stopping Runtime daemon owner identity.","identity_mismatch");let R=n-Date.now();if(R<=0)throw K(a);c({stage:"waiting",reason:"host_stopping"}),await _n(g,R,e.startupSignal);let S=n-Date.now();if(S<=0)throw K(a);return On({...e,startupTimeoutMs:S})}if(m==="healthy"&&l.state){if(Date.now()>=n)throw K(a);if(e.ownerBootstrap!==void 0)throw new Error("Trusted daemon owner policy cannot be applied to an existing daemon. Stop that owner and retry the bootstrap.");let g=l.state.status==="ready"?{...l,state:l.state}:await vo(a,e,l,void 0,n);return $t(a,Le(g.state),!1,e,n,g.initialization)}if(m==="unhealthy"||m==="mismatch"){let g=l.state?.pid;throw new L(`Runtime daemon is ${m}; refusing to start a competing owner. [state pid=${g} status=${l.state?.status} endpoint=${l.state?.endpoint} pidAlive=${l.pidAlive} reachable=${l.endpointReachable} identityMatches=${l.identityMatches}]`,m==="unhealthy"?"unhealthy":"identity_mismatch")}if(Date.now()>=n)throw K(a);let p=e.ownerBootstrap===void 0?void 0:Ro(a,e.ownerBootstrap);try{if(c({stage:"starting"}),e.startupSignal?.aborted)throw X();let g=await xo({profile:a.profile,homeDir:t,configHome:s,defaultProvider:e.defaultProvider,defaultModel:e.defaultModel,sessionsDir:e.sessionsDir,permissionTimeoutMs:e.permissionTimeoutMs,userInputTimeoutMs:e.userInputTimeoutMs,orphanExitMs:e.orphanExitMs,startupTimeoutMs:Math.max(1,n-Date.now()),startupSignal:e.startupSignal,ownerBootstrapFile:p,startupProgressId:e.onStartupProgress===void 0?void 0:Wt()}),R=await So(a,e,g,void 0,n),S=R.state.pid===g.pid;if(e.ownerBootstrap!==void 0&&!S)throw new Error("Trusted daemon owner policy lost a concurrent startup race and was not applied. Retry after the current owner stops.");let k=Le(R.state);return $t(a,k,S,e,n,R.initialization)}finally{p!==void 0&&ke(p)&&Gt(p)}}o(On,"acquireRuntimeDaemonProcessLease");async function $t(e,n,i,t,s,a){if(t.startupSignal?.aborted)throw X();let u=s-Date.now();if(u<=0)throw K(e);G(t.onStartupProgress)({stage:"connecting"});let c=await fe(n,{connectTimeoutMs:Math.min(t.connectTimeoutMs??2e3,u),signal:t.startupSignal});if(t.startupSignal?.aborted||Date.now()>=s)throw await c.close?.(),t.startupSignal?.aborted?X():K(e);let l=!1,m,p=!1,g,R=o(()=>{if(l)return Promise.resolve();if(m)return m;let S=(async()=>{await c.close?.(),l=!0})();return m=S,S.finally(()=>{m===S&&(m=void 0)}).catch(()=>{}),S},"closeTransport");return{transport:c,endpoint:n,paths:e,ownsHost:i,...a===void 0?{}:{probeInitialization:a},close:R,shutdown(){if(g)return g;let S=(async()=>{p||(await c.request("runtime.shutdown"),p=!0),await R()})();return g=S,S.finally(()=>{g===S&&(g=void 0)}).catch(()=>{}),S}}}o($t,"connectProcessLease");async function So(e,n,i,t=we,s=Date.now()+(n.startupTimeoutMs??6e4)){let a=G(n.onStartupProgress);try{a({stage:"waiting",reason:"host_starting"});let u=n.onStartupProgress!==void 0&&i.startupProgressId!==void 0;for(;;){if(n.startupSignal?.aborted)throw X();if(Date.now()>=s)throw K(e);let c=await Io(e,n,i,t,s);if(n.startupSignal?.aborted)throw X();if(Date.now()>=s)throw K(e);if(u&&i.pid!==void 0&&i.startupProgressId!==void 0)try{let p=Ht(ge(e),i.startupProgressId,i.pid);p&&a({stage:"initializing",phase:p})}catch(p){u=!1,E({source:"client.startup-progress",level:"warn",message:"Host startup progress could not be read.",detail:p})}let l=de(c);if(l==="healthy"&&c.state?.status==="ready")return c.state.pid===i.pid?i.unref():await Po(i),{...c,state:c.state};if(l==="mismatch")throw new L("Runtime daemon endpoint identity does not match its persisted owner state.","identity_mismatch");let m=s-Date.now();if(m<=0)throw K(e);await bo(Math.min(Math.max(1,n.pollIntervalMs??100),m),e,i,n.startupSignal)}}catch(u){try{await i.terminate()}catch(c){throw new AggregateError([u,c],"Runtime daemon startup failed and its child process could not be reclaimed.")}try{wo(e)}catch{}throw u}}o(So,"waitForHealthyDaemonStartup");async function vo(e,n,i,t=we,s=Date.now()+(n.startupTimeoutMs??6e4)){let a=i.state;if(a===void 0)throw new L("Runtime daemon owner state disappeared before it reached ready.","identity_mismatch");G(n.onStartupProgress)({stage:"waiting",reason:"host_starting"});let u=i;for(;;){if(n.startupSignal?.aborted)throw X();if(Date.now()>=s)throw K(e);let c=de(u);if(u.state!==void 0&&(u.state.runtimeId!==a.runtimeId||u.state.pid!==a.pid||u.state.profile!==a.profile||u.state.endpoint!==a.endpoint))throw new L("Runtime daemon owner identity changed before it reached ready.","identity_mismatch");if(c==="healthy"&&u.state?.status==="ready")return{...u,state:u.state};if(c==="mismatch")throw new L("Runtime daemon endpoint identity does not match its persisted owner state.","identity_mismatch");let l=s-Date.now();if(l<=0)throw K(e);await $(pe(Math.min(Math.max(1,n.pollIntervalMs??100),l)),n.startupSignal),u=await $(t(e,n.healthCheck),n.startupSignal)}}o(vo,"waitForReadyRuntimeDaemonOwner");async function Io(e,n,i,t,s){let a={...n.healthCheck,connectionPurpose:"startup"},u=await $(Promise.race([t(e,a).then(c=>({kind:"health",observation:c})),i.exit.then(c=>({kind:"exit",exit:c}))]),n.startupSignal);if(u.kind==="exit"){if(Tn(e,i))return t(e,n.healthCheck);if(u.exit.code===0&&u.exit.signal===null){let c=Math.min(yo,Math.max(0,s-Date.now())),l=Date.now()+c;for(;Date.now()<=l;){let m=await $(t(e,n.healthCheck),n.startupSignal);if(de(m)!=="missing"||Tn(e,i))return m;await $(pe(Math.min(n.pollIntervalMs??100,Math.max(1,l-Date.now()))),n.startupSignal)}}throw Qt(e,u.exit)}return u.observation}o(Io,"observeStartupHealth");async function bo(e,n,i,t){let s=await $(Promise.race([pe(e).then(()=>{}),i.exit]),t);if(s!==void 0&&!(s.code===0&&s.signal===null)){if(Tn(n,i)){await $(pe(e),t);return}throw Qt(n,s)}}o(bo,"waitForStartupPoll");function Tn(e,n){let i=H(e.lockFile);return i!==void 0&&i.pid!==n.pid}o(Tn,"hasCompetingStartupOwner");function Qt(e,n){let i=n.signal!==null?`signal ${n.signal}`:`code ${n.code??"unknown"}`;return new L(`Runtime daemon child exited before becoming healthy (${i}). See daemon bootstrap log: ${ge(e)}`,"child_exit")}o(Qt,"runtimeDaemonExitedEarly");function K(e){let n=process.versions.electron===void 0?"":" Packaged Electron auto-start requires the RunAsNode fuse to remain enabled.";return new L(`Timed out waiting for runtime daemon profile "${e.profile}" to become ready.${n} See daemon bootstrap log: ${ge(e)}`,"timeout")}o(K,"runtimeDaemonStartupTimeout");function ko(e,n,i=process.execArgv){let t=[...n!==void 0?Do(i,n.endsWith(".ts")):[],...n!==void 0?[n]:[],"daemon","serve","--profile",e.profile,"--home",e.homeDir,"--config-home",e.configHome];return e.defaultProvider!==void 0&&t.push("--provider",e.defaultProvider),e.defaultModel!==void 0&&t.push("--model",e.defaultModel),e.sessionsDir!==void 0&&t.push("--sessions-dir",e.sessionsDir),e.permissionTimeoutMs!==void 0&&t.push("--permission-timeout-ms",String(e.permissionTimeoutMs)),e.userInputTimeoutMs!==void 0&&t.push("--user-input-timeout-ms",String(e.userInputTimeoutMs)),e.orphanExitMs!==void 0&&t.push("--orphan-exit-ms",String(e.orphanExitMs)),t}o(ko,"buildRuntimeDaemonServeArgs");async function xo(e){let n=bn();Eo(n);let i=ko(e,n),t=Kn({args:i,env:Ao({homeDir:e.homeDir,configHome:e.configHome,parentEnv:process.env,ownerBootstrapFile:e.ownerBootstrapFile,startupProgressId:e.startupProgressId}),isElectron:process.versions.electron!==void 0}),s=Z(e.configHome,e.profile),a=ho(s),u,c,l,m;try{if(process.platform==="win32"){let g=await Lt({executable:process.execPath,args:t.args,cwd:process.cwd(),env:t.env,logFile:ge(s),startupTimeoutMs:e.startupTimeoutMs,startupSignal:e.startupSignal,startupHandoff:!0});u=g.supervisor,c=g.processPid,l=g.terminate,m=g.release}else u=uo(process.execPath,t.args,{detached:!0,stdio:["ignore",a,a],windowsHide:!0,env:t.env})}finally{Ut(a)}let p=u.exitCode!==null||u.signalCode!==null?Promise.resolve({code:u.exitCode,signal:u.signalCode}):new Promise(g=>{u.once("exit",(R,S)=>g({code:R,signal:S}))});return c===void 0&&await new Promise((g,R)=>{u.once("spawn",g),u.once("error",R)}),l===void 0&&$n(u),{...Co(u,p,c,l,m),startupProgressId:e.startupProgressId}}o(xo,"spawnRuntimeDaemonServeProcess");async function Po(e){if(e.hasExited?.()!==!0)try{if(await e.terminate()==="retained")throw new L("Startup candidate already published a service while observing a competing owner.","identity_mismatch")}catch(n){if(!(n instanceof We)||!await Mn(e.exit,1e3))throw n}}o(Po,"terminateCompetingStartupChild");function Co(e,n,i=e.pid,t,s){return{pid:i,exit:n,hasExited(){return Je(e)},unref(){s!==void 0?s():e.unref()},async terminate(){if(t!==void 0){if(await t()==="retained")return s?.(),"retained";if(!await Mn(n,1e3))throw new Error(`Runtime daemon Job supervisor ${e.pid??"unknown"} did not exit after termination.`);return}let a=Je(e);if((await Xn(e)).status==="unknown"&&!a)throw new We(i);if(!await Mn(n,1e3))throw new Error(`Runtime daemon child ${i??"unknown"} did not exit after termination.`)}}}o(Co,"createRuntimeDaemonStartupProcess");async function Mn(e,n){let i;try{return await Promise.race([e.then(()=>!0),new Promise(t=>{i=setTimeout(()=>t(!1),n)})])}finally{i!==void 0&&clearTimeout(i)}}o(Mn,"didExitWithin");function Eo(e){if(e!==void 0&&!ke(e))throw new Error(`Runtime daemon CLI entry is unavailable at "${e}". Keep the published KodaX dist files external to the embedder bundle.`)}o(Eo,"assertRuntimeDaemonCliEntryAvailable");function Ao(e){let n={...e.parentEnv,KODAX_DAEMON_SERVE:"1",KODAX_HOME:e.configHome??J.join(e.homeDir,".kodax")};return delete n[Bn],delete n[Kt],delete n[En],e.startupProgressId!==void 0&&(n[En]=e.startupProgressId),e.ownerBootstrapFile!==void 0&&(n[Kt]=e.ownerBootstrapFile),n}o(Ao,"createRuntimeDaemonServeEnvironment");function To(e){if(!ze(e))throw new Error("Runtime daemon owner bootstrap must be an object.");return Ue(e,["execPolicy","autoReview"],"owner bootstrap"),{...e.execPolicy===void 0?{}:{execPolicy:Mo(e.execPolicy)},...e.autoReview===void 0?{}:{autoReview:Oo(e.autoReview)}}}o(To,"parseRuntimeDaemonOwnerBootstrap");function Mo(e){if(!ze(e))throw new Error("Runtime daemon owner execPolicy must be an object.");Ue(e,["adminRules","trustedProjectRoots"],"owner execPolicy");let n=e.trustedProjectRoots;if(n!==void 0&&(!Array.isArray(n)||!n.every(i=>typeof i=="string")))throw new Error("Runtime daemon owner trustedProjectRoots must be strings.");return{...e.adminRules===void 0?{}:{adminRules:_o(e.adminRules)},...n===void 0?{}:{trustedProjectRoots:n}}}o(Mo,"parseRuntimeDaemonExecPolicy");function _o(e){if(!Array.isArray(e))throw new Error("Runtime daemon owner adminRules must be an array.");return e.map((n,i)=>{if(!ze(n))throw new Error(`Runtime daemon owner adminRules[${i}] must be an object.`);Ue(n,["prefix","decision","justification","match","notMatch","hostExecutable","network","compound"],`owner adminRules[${i}]`);let t=zn(JSON.stringify({rules:[{prefix:n.prefix,decision:n.decision,justification:n.justification,match:n.match,notMatch:n.notMatch,hostExecutable:n.hostExecutable,network:n.network,compound:n.compound}]}),"host:admin","admin");if(!t.ok||t.rules[0]===void 0)throw new Error(`Invalid Runtime daemon owner adminRules[${i}]: ${t.ok?"missing rule":t.error}`);let{source:s,sourcePath:a,...u}=t.rules[0];return u})}o(_o,"parseRuntimeDaemonAdminRules");function Oo(e){if(!ze(e))throw new Error("Runtime daemon owner autoReview must be an object.");if(Ue(e,["administratorPolicy","modelGuidance"],"owner autoReview"),e.administratorPolicy!==void 0&&typeof e.administratorPolicy!="string")throw new Error("Runtime daemon owner administratorPolicy must be a string.");if(e.modelGuidance!==void 0&&typeof e.modelGuidance!="string")throw new Error("Runtime daemon owner modelGuidance must be a string.");return{...typeof e.administratorPolicy=="string"?{administratorPolicy:e.administratorPolicy}:{},...typeof e.modelGuidance=="string"?{modelGuidance:e.modelGuidance}:{}}}o(Oo,"parseRuntimeDaemonAutoReview");function Ue(e,n,i){let t=new Set(n),s=Object.keys(e).find(a=>!t.has(a));if(s!==void 0)throw new Error(`Runtime daemon ${i}.${s} is not supported.`)}o(Ue,"assertOnlyFields");function ze(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}o(ze,"isRecord");function Do(e,n){let i=[];for(let t=0;t<e.length;t+=1){let s=e[t]??"",a=s.toLowerCase();if(a==="--require"||a==="-r"){let u=e[t+1];u!==void 0&&(Xt(u)&&i.push(s,u),t+=1)}else if(a.startsWith("--require=")){let u=s.slice(10);Xt(u)&&i.push(s)}else(a.startsWith("--max-old-space-size")||a==="--enable-source-maps")&&i.push(s)}return n&&i.push("--import","tsx"),i}o(Do,"daemonServeExecArgv");function Xt(e){return J.resolve(e)===J.resolve("scripts","production-env.cjs")}o(Xt,"isKodaXProductionEnvPreload");function pe(e){return new Promise(n=>setTimeout(n,e))}o(pe,"delay");async function $(e,n){if(!n)return e;if(n.aborted)throw X();let i;try{return await Promise.race([e,new Promise((t,s)=>{i=o(()=>s(X()),"cancel"),n.addEventListener("abort",i,{once:!0})})])}finally{i&&n.removeEventListener("abort",i)}}o($,"raceRuntimeDaemonStartupStep");function X(){return new L("Runtime daemon startup cancelled.","cancelled")}o(X,"runtimeDaemonStartupCancelled");var q=class extends Error{constructor(i,t,s,a="runtimeAutoModeGuardrail",u){super(i,s);this.preflight=t;this.ownerProfile=u;this.name="RuntimeDaemonCapabilityUpgradeError",this.capability=a,this.retryable=t?.canStop===!1}preflight;ownerProfile;static{o(this,"RuntimeDaemonCapabilityUpgradeError")}code="daemon_capability_upgrade_required";recoverable=!0;restartRequired=!0;capability;retryable},Ve=class extends Error{static{o(this,"RuntimeHostMigrationRequiredError")}code="runtime_host_migration_required";constructor(n){super(n),this.name="RuntimeHostMigrationRequiredError"}},Yt=class extends Error{static{o(this,"RuntimeAutoModeConfigurationError")}code="auto_mode_classifier_model_required";recoverable=!0;constructor(n){super(n),this.name="RuntimeAutoModeConfigurationError"}};function Fn(e){let n=Q.resolve(e??jo.homedir());return{homeDir:n,configHome:e===void 0?Q.resolve(nn):Q.join(n,".kodax")}}o(Fn,"resolveRuntimeDaemonClientLocation");function rr(e,n="default"){let i=Fn(e);return{...i,paths:Z(i.configHome,n)}}o(rr,"resolveRuntimeDaemonClientPaths");function tg(e={}){let{paths:n}=rr(e.homeDir,e.profile),i=H(n.lockFile),t=Vn(n);return{profile:n.profile,policy:{mode:t.mode,revision:t.revision,updatedAt:t.updatedAt},ownerStatus:i!==void 0?"owned":j.existsSync(n.lockFile)?"unreadable":"unowned",owner:i===void 0?null:{runtimeId:i.runtimeId,pid:i.pid,createdAt:i.createdAt,...i.kind===void 0?{}:{kind:i.kind},...i.processStartIdentity===void 0?{}:{processStartIdentity:i.processStartIdentity},...i.processContainment===void 0?{}:{processContainment:i.processContainment},...i.supervisorPid===void 0?{}:{supervisorPid:i.supervisorPid},...i.supervisorProcessStartIdentity===void 0?{}:{supervisorProcessStartIdentity:i.supervisorProcessStartIdentity},...i.windowsJobName===void 0?{}:{windowsJobName:i.windowsJobName},...i.windowsBootIdentity===void 0?{}:{windowsBootIdentity:i.windowsBootIdentity}}}}o(tg,"getKodaXRuntimeOwnerState");function No(e){let n=(e.execPolicy?.adminRules?.length??0)>0||(e.execPolicy?.trustedProjectRoots?.length??0)>0?e.execPolicy:void 0,i=(e.autoReview?.administratorPolicy?.trim().length??0)>0||(e.autoReview?.modelGuidance?.trim().length??0)>0?e.autoReview:void 0;if(!(n===void 0&&i===void 0))return{...n===void 0?{}:{execPolicy:n},...i===void 0?{}:{autoReview:i}}}o(No,"runtimeDaemonOwnerBootstrap");var rg=Object.freeze({productHistoryTurnResolution:1,productHistoryLocation:1,productClient:1,sessionDrafts:1,sessionPromotion:1,productExecutionBinding:1,productInputRecovery:1,productExecutionModeConstraint:1,actorSettlementConvergence:2,conversationHistory:2,crashOutcomeModel:2,daemonOrphanExit:1,daemonShutdownVerification:1,effectiveConfig:1,managedRunDurability:1,runtimeAutoModeGuardrail:jt.version,sandboxRuntime:11,sharedSessionSettings:2,runtimeEventCoalescing:1,liveOutputSegments:1});function qo(){return{type:"reject",reason:"permission request timed out; choose a safer approach that does not require this approval",cause:"approval_timeout"}}o(qo,"runtimePermissionTimeoutDecision");async function ig(e,n,i){let t=new AbortController,s=qo(),a=Lo(e,n,s);try{let u=await Ho(e,n,i,t.signal,a.ready,a.outcome,s);return await Ko(e,n,u,s,t,a.observedDecision)}finally{a.close()}}o(ig,"handleRuntimePermissionRequest");async function Fo(e,n,i){if(typeof e.permissions.listPending!="function")return{source:"pending"};let t=Promise.resolve().then(()=>e.permissions.listPending({runId:n.runId})).then(s=>s.some(a=>a.id===n.id)?{source:"pending"}:{source:"runtime"},s=>({source:"prompt",decision:{type:"reject",reason:`Unable to verify the pending approval safely: ${s instanceof Error?s.message:String(s)}`}}));return Promise.race([t,i])}o(Fo,"runtimePermissionPromptGate");function Lo(e,n,i){let t=o(()=>{},"resolveRuntime"),s,a=new Promise(m=>{t=m}),u=e.events.subscribe({sessionId:n.sessionId,runId:n.runId,type:"permission.resolved"},m=>{let p=W(m.payload)?m.payload:void 0;p?.requestId===n.id&&(s=$o(p.decision),t({source:"runtime",decision:s}))}),c=n.expiresAt===void 0?void 0:Date.parse(n.expiresAt),l=c!==void 0&&Number.isFinite(c)?setTimeout(()=>t({source:"deadline",decision:i}),ss(n.expiresAt,1)):void 0;return l?.unref?.(),{...u.ready!==void 0?{ready:u.ready}:{},outcome:a,observedDecision:o(()=>s,"observedDecision"),close:o(()=>{l!==void 0&&clearTimeout(l),u.close()},"close")}}o(Lo,"createRuntimePermissionPromptObserver");function Bo(e,n,i){return Promise.resolve().then(()=>n(e,{signal:i})).then(t=>({source:"prompt",decision:t}),t=>({source:"prompt",decision:{type:"reject",reason:t instanceof Error?t.message:String(t)}}))}o(Bo,"runRuntimePermissionPrompt");async function Ho(e,n,i,t,s,a,u){let c=await Promise.race([Promise.resolve(s).then(()=>({source:"ready"}),m=>({source:"prompt",decision:{type:"reject",reason:m instanceof Error?m.message:String(m)}})),a]);if(c.source!=="ready")return c;if(qn(n.expiresAt))return{source:"deadline",decision:u};let l=await Fo(e,n,a);return l.source!=="pending"?l:qn(n.expiresAt)?{source:"deadline",decision:u}:Promise.race([Bo(n,i,t),a])}o(Ho,"waitForRuntimePermissionPromptOutcome");async function Ko(e,n,i,t,s,a){if(i.source==="runtime")return s.abort(),{requestId:n.id,status:"already_resolved",...i.decision!==void 0?{decision:i.decision}:{}};let u=qn(n.expiresAt),c=u?t:i.decision;if((i.source==="deadline"||u)&&s.abort(),await e.permissions.respond(n.id,c,{runId:n.runId}))return{requestId:n.id,status:"responded",decision:c};s.abort();let m=a();return{requestId:n.id,status:"already_resolved",...m!==void 0?{decision:m}:{}}}o(Ko,"commitRuntimePermissionPromptOutcome");function $o(e){if(!(!W(e)||typeof e.type!="string")&&!(e.type!=="allow_once"&&e.type!=="allow_session"&&e.type!=="allow_always"&&e.type!=="reject"))return e}o($o,"runtimePermissionDecisionFromPayload");async function og(e,n){return e.sessions.diagnostics(n)}o(og,"captureRuntimeSessionDiagnostics");var sg=5*6e4;var jn=2147483647;var ag=1024*1024;var dg=2*1024*1024;var ug=256*1024*1024;var cg=8*1024;var lg=512*1024,mg=128*1024,fg=256*1024;var pg=64*1024*1024;var gg=4*1024;var yg=1024*1024;var Rg=5*6e4;var hg="runtime run redirected by user";async function wg(e){if(!W(e)||e.mode!=="daemon")throw new Ve("Private Runtime construction has been removed. Use ensureKodaXClient() for product execution or createKodaXRuntime({ mode: 'daemon' }) to connect to the shared Host.");for(let t of["sharedDaemonHost","daemonHostRuntimeId","externalAgents"])if(t in e)throw new Ve(`Public Runtime construction no longer accepts ${t}. Owner construction and executor factories belong to the Host; clients must connect to the shared Host.`);re("permissionTimeoutMs",e.permissionTimeoutMs,0),re("userInputTimeoutMs",e.userInputTimeoutMs,0);let n=e.autoStartDaemon??(e.daemonTransport===void 0&&e.daemonEndpoint===void 0),i=No(e);if(i!==void 0&&(!n||e.daemonTransport!==void 0))throw new Error("Trusted daemon execPolicy/autoReview options require owner auto-start; attach clients cannot change daemon administrator policy.");return ir({onStartupProgress:e.onStartupProgress,profile:e.profile,transport:e.daemonTransport,endpoint:e.daemonEndpoint,autoStart:n,homeDir:e.homeDir,sessionsDir:e.sessionsDir,defaultProvider:e.defaultProvider,defaultModel:e.defaultModel,permissionTimeoutMs:e.permissionTimeoutMs,userInputTimeoutMs:e.userInputTimeoutMs,daemonStartupTimeoutMs:e.daemonStartupTimeoutMs,daemonConnectTimeoutMs:e.daemonConnectTimeoutMs,...e.daemonOrphanExitMs!==void 0?{daemonOrphanExitMs:e.daemonOrphanExitMs}:{},daemonLifecycle:e.daemonLifecycle,daemonToken:e.daemonToken,clientInfo:e.clientInfo,capabilities:e.capabilities,requirements:{...e.requirements,liveOutputSegments:1,runtimeAutoModeGuardrail:6,sharedSessionSettings:2,...n?{actorSettlementConvergence:2,crashOutcomeModel:2,managedRunDurability:1,...process.platform==="win32"?{daemonShutdownVerification:1,sandboxRuntime:11}:{},runtimeEventCoalescing:1,...e.daemonOrphanExitMs!==void 0?{daemonOrphanExit:1}:{}}:{}}},!0,i)}o(wg,"createKodaXRuntime");function Xo(e,n){if(!n?.externalAgents&&n?.externalAgentAdmin===void 0&&n?.a2aConfigReconciler===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?.providerCredentialConnectionBinding===void 0&&n?.providerProbeAuthorization===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?.daemonManagement===void 0&&n?.daemonClientInventory===void 0&&n?.daemonOrphanExit===void 0&&n?.daemonShutdownVerification===void 0&&n?.runtimeEventCoalescing===void 0&&n?.liveOutputSegments===void 0&&n?.integrationConfigResilience===void 0&&n?.effectiveConfig===void 0&&n?.actorControlPlane===void 0&&n?.sandboxRuntime===void 0&&n?.runtimeAutoModeGuardrail===void 0&&n?.sessionDrafts===void 0&&n?.sessionPromotion===void 0&&n?.productExecutionBinding===void 0&&n?.productInputRecovery===void 0&&n?.productExecutionModeConstraint===void 0&&n?.productClient===void 0&&n?.productHistoryBoundaries===void 0&&n?.productHistoryTurnResolution===void 0&&n?.productHistoryLocation===void 0&&n?.productExecutionAuthorization===void 0&&n?.productExitControl===void 0&&n?.productExecutionFacts===void 0&&n?.productActorAuthorization===void 0)return;let i=ye(e);if(n.externalAgents&&i.externalAgents!==!0)throw new Error("Runtime does not support the required externalAgents capability.");let t=[["productExitControl",n.productExitControl],["productExecutionFacts",n.productExecutionFacts],["productActorAuthorization",n.productActorAuthorization],["productClient",n.productClient],["sessionDrafts",n.sessionDrafts],["sessionPromotion",n.sessionPromotion],["productExecutionBinding",n.productExecutionBinding],["productInputRecovery",n.productInputRecovery],["productExecutionModeConstraint",n.productExecutionModeConstraint],["productHistoryBoundaries",n.productHistoryBoundaries],["productHistoryTurnResolution",n.productHistoryTurnResolution],["productHistoryLocation",n.productHistoryLocation],["productExecutionAuthorization",n.productExecutionAuthorization],["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],["providerCredentialConnectionBinding",n.providerCredentialConnectionBinding],["providerProbeAuthorization",n.providerProbeAuthorization],["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],["daemonManagement",n.daemonManagement],["daemonClientInventory",n.daemonClientInventory],["daemonOrphanExit",n.daemonOrphanExit],["daemonShutdownVerification",n.daemonShutdownVerification],["runtimeEventCoalescing",n.runtimeEventCoalescing],["liveOutputSegments",n.liveOutputSegments],["integrationConfigResilience",n.integrationConfigResilience],["effectiveConfig",n.effectiveConfig],["actorControlPlane",n.actorControlPlane],["sandboxRuntime",n.sandboxRuntime],["runtimeAutoModeGuardrail",n.runtimeAutoModeGuardrail]];for(let[s,a]of t)a!==void 0&&Wo(i,s,a)}o(Xo,"assertRuntimeCapabilities");function Wo(e,n,i){let t=e[n];if(!W(t)||!Number.isSafeInteger(t.version)||Number(t.version)<i)throw new Error(`Runtime does not support the required ${n} capability.`)}o(Wo,"assertVersionedRuntimeCapability");async function Sg(e={}){if(e.autoStart===!0)throw new Error("connectKodaXRuntime is passive; use ensureKodaXRuntime to start or update a Host.");if(e.daemonLifecycle!==void 0)throw new Error("Daemon lifecycle changes require ensureKodaXRuntime; connectKodaXRuntime is passive.");return te(e,!1)}o(Sg,"connectKodaXRuntime");async function vg(e={}){return ir({...e,autoStart:!0},!0)}o(vg,"ensureKodaXRuntime");async function ir(e,n,i){if(e.autoStart!==!0||e.transport!==void 0)return te(e,n,i);re("daemonStartupTimeoutMs",e.daemonStartupTimeoutMs,1);let t=Date.now()+(e.daemonStartupTimeoutMs??6e4),s=Fn(e.homeDir),a=e.sessionsDir??Q.join(s.configHome,"sessions"),u=G(e.onStartupProgress),c;for(;c===void 0;){if(e.daemonStartupSignal?.throwIfAborted(),Date.now()>=t)throw new q("Host startup timed out while another launcher was initializing.");c=Qn(a),c===void 0&&(u({stage:"waiting",reason:"host_starting"}),await Ce(Math.min(50,t-Date.now()),e.daemonStartupSignal))}try{return await te(e,n,i,2,t,0,u)}finally{c()}}o(ir,"connectKodaXRuntimeWithStartupCoordination");function Ln(e,n,i){let t=e[n];return W(t)&&Number.isSafeInteger(t.version)&&Number(t.version)>=i}o(Ln,"hasVersionedRuntimeCapability");var Zt=!1;function Uo(e){if(Zt)return;let n=e.sandboxRuntime;W(n)&&n.gitSafeDirectory!=="authorized-repo-roots"&&(Zt=!0,E({source:"runtime.daemon.capabilities",level:"warn",message:"Connected daemon predates sandbox git safe-directory authorization; sandboxed git may keep hitting dubious ownership on authorized roots until the daemon restarts."}))}o(Uo,"diagnoseStaleGitSafeDirectory");async function zo(e,n,i){let t=!1,s;if(await e.close().then(()=>{t=!0},a=>{s=a,E({source:"runtime.daemon.upgrade",level:"warn",message:"Failed to close the incompatible daemon client.",detail:nr(a)})}),!t)try{await n.close()}catch(a){throw E({source:"runtime.daemon.upgrade",level:"error",message:"Failed to release the incompatible daemon process lease.",detail:nr(a)}),new q("The temporary incompatible-daemon client could not be closed. Relaunch before retrying the capability upgrade so a retained client lease cannot block settlement.",void 0,{cause:new AggregateError([s,a],"Both temporary daemon client close attempts failed.")},i)}}o(zo,"closeRejectedCapabilityUpgrade");function Vo(e){return cn({identity:{...e.identity,mode:"daemon",isolation:"process"},transport:e.transport,capabilities:e.capabilities,...e.grantedScopes!==void 0?{grantedScopes:e.grantedScopes}:{}})}o(Vo,"createCapabilityUpgradeRuntime");function Go(e){return{...e.requirements,liveOutputSegments:1,runtimeAutoModeGuardrail:6,sharedSessionSettings:2,...process.platform==="win32"?{sandboxRuntime:11}:{},...e.autoStart===!0?{actorSettlementConvergence:2,crashOutcomeModel:2,managedRunDurability:1,...process.platform==="win32"?{daemonShutdownVerification:1}:{},runtimeEventCoalescing:1,...e.daemonOrphanExitMs!==void 0?{daemonOrphanExit:1}:{}}:{}}}o(Go,"daemonCapabilityRequirements");function Jo(e,n){let i=["productClient","sessionDrafts","sessionPromotion","productExecutionBinding","productInputRecovery","productExecutionModeConstraint","productHistoryBoundaries","productHistoryTurnResolution","productHistoryLocation","productExecutionAuthorization","productExitControl","productExecutionFacts","productActorAuthorization","actorSettlementConvergence","crashOutcomeModel","managedRunDurability","conversationHistory","sharedSessionSettings","runtimeAutoModeGuardrail","runtimeEventCoalescing","liveOutputSegments","daemonShutdownVerification","sandboxRuntime","daemonClientInventory","daemonOrphanExit"];for(let t of i){let s=n[t];if(typeof s=="number"&&!Ln(e,t,s))return E({source:"runtime.daemon.capabilities",level:"warn",message:"Runtime daemon does not satisfy a required capability.",detail:{stage:"capability-check",capability:t,requiredVersion:s}}),{name:t,version:s}}}o(Jo,"firstUpgradeableCapability");function er(e,n,i,t){let s=z,a=!t||s==="0.0.0"||e.version==="0.0.0"?0:xe(e.version,s);if(a===void 0)throw new q(`Runtime daemon version ${JSON.stringify(e.version)} is not a comparable Semantic Version. The client will not replace an owner whose version ordering is unknown.`,void 0,void 0,"runtimeVersion");let u=Jo(n,i);if(u!==void 0)return u;if(t&&a!==1)return a===0&&Qo(e)?{name:"runtimeBuild",version:1}:s!=="0.0.0"&&a===-1?{name:"runtimeVersion",version:1}:void 0}o(er,"firstRequiredDaemonUpgrade");function Qo(e){if(!e.build)throw new q("This Host predates build identification. Finish its work and perform one normal daemon restart; its loaded code cannot be verified.",void 0,void 0,"runtimeBuild");if(e.build.fingerprint===ae.fingerprint)return!1;if(e.build.origin!==ae.origin)throw new q("A different KodaX installation owns this profile. Connect passively to use that Host, or stop it explicitly before starting this installation.",void 0,void 0,"runtimeBuild");return!0}o(Qo,"requiresRuntimeBuildRefresh");function Nn(){if(kn().fingerprint!==ae.fingerprint)throw new q("This launcher loaded an earlier build. Restart the calling process before starting or updating a Host.",void 0,void 0,"launcherBuild")}o(Nn,"assertCurrentLauncherBuild");function xe(e,n){let i=o(a=>{let u=/^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-([0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*))?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/.exec(a);if(u===null)return;let c=[];for(let l of(u[4]??"").split(".").filter(Boolean))if(/^\d+$/.test(l)){if(!/^(0|[1-9]\d*)$/.test(l))return;c.push(BigInt(l))}else c.push(l);return{core:[BigInt(u[1]),BigInt(u[2]),BigInt(u[3])],prerelease:c}},"parse"),t=i(e),s=i(n);if(!(t===void 0||s===void 0)){for(let a=0;a<3;a+=1)if(t.core[a]!==s.core[a])return t.core[a]<s.core[a]?-1:1;if(t.prerelease.length===0||s.prerelease.length===0)return t.prerelease.length===s.prerelease.length?0:t.prerelease.length===0?1:-1;for(let a=0;a<Math.max(t.prerelease.length,s.prerelease.length);a+=1){let u=t.prerelease[a],c=s.prerelease[a];if(u!==c)return u===void 0?-1:c===void 0?1:typeof u=="bigint"&&typeof c=="string"?-1:typeof u=="string"&&typeof c=="bigint"?1:u<c?-1:1}return 0}}o(xe,"compareSemanticVersions");function Yo(e){if(e?.probeInitialization===void 0)return;let n=ye(e.probeInitialization);return{identity:sr(n.identity),capabilities:n.capabilities===void 0?{}:ye(n.capabilities)}}o(Yo,"parseProbedDaemon");function Zo(){return{name:"kodax-host-launcher",instanceId:`sdk_launcher_${tr().replace(/-/g,"")}`,clientType:"automation"}}o(Zo,"capabilityUpgradeClientInfo");function or(e){return W(e)&&e.code==="conflict"||wn(e)&&e.reconnectable&&(e.code==="protocol_closed"||e.code==="transport_error")}o(or,"isDaemonStartupReadInterruption");var Pe=class extends q{static{o(this,"RuntimeDaemonInspectionInterruptedError")}retryable=!0};async function es(e){let n=Vo(e),i,t=!1;try{if(!Ln(e.capabilities,"daemonManagement",1))throw new Error("The older Host does not support normal managed shutdown; stop it and retry startup.");let s=e.identity.build?.origin===ae.origin&&e.identity.build.fingerprint!==ae.fingerprint&&xe(e.identity.version,z)===0,a=e.requiredCapability==="daemonOrphanExit"&&e.orphanExitMs!==void 0&&e.identity.build?.fingerprint===ae.fingerprint&&xe(e.identity.version,z)===0;if(!s&&!a&&xe(e.identity.version,z)!==-1)throw new Error("Only a provably older Host can be refreshed automatically; use a compatible installation.");t=!0;let u=await n.daemon.inspect();if(t=!1,i=u.preflight,!i.canStop)throw new Error(`The older Host is busy: ${i.blockers.join(", ")}. Finish or stop that work and retry.`);let c=u.owner,l=H(e.lease.paths.lockFile),m=e.sharedOwnerFile===void 0?void 0:H(e.sharedOwnerFile);if(u.runtimeId!==e.identity.runtimeId||c.runtimeId!==e.identity.runtimeId||l?.runtimeId!==c.runtimeId||l.pid!==c.pid||l.createdAt!==c.createdAt||c.kind!=="daemon"||l.kind!==c.kind||!c.processStartIdentity||l.processStartIdentity!==c.processStartIdentity||e.sharedOwnerFile!==void 0&&(m?.runtimeId!==c.runtimeId||m.pid!==c.pid||m.processStartIdentity!==c.processStartIdentity))throw new Error("The original Host process identity cannot be confirmed; retry against the current owner.");if(Nn(),e.startupSignal?.throwIfAborted(),Date.now()>=e.startupDeadline)throw new Error("Host startup timed out before managed shutdown.");e.reportProgress({stage:"upgrading"}),await e.transport.request("runtime.shutdown"),e.reportProgress({stage:"waiting",reason:"host_stopping"}),await n.close();let p=e.startupDeadline-Date.now();if(p<=0)throw new Error("Host startup timed out before owner exit could be confirmed. Wait for the old Host to exit before retrying startup.");await _n(c,p,e.startupSignal)}catch(s){let a=t&&or(s)?Pe:q;throw E({source:"runtime.daemon.upgrade-blocked",level:"warn",message:s instanceof Error?s.message:"Host refresh failed.",detail:{ownerProfile:e.identity.profile,runtimeId:e.identity.runtimeId,capability:e.requiredCapability,blockers:i?.blockers}}),new a(s instanceof Error?s.message:"The older Host could not be refreshed.",i,{cause:s},e.requiredCapability,e.identity.profile)}finally{await zo(n,e.lease,e.requiredCapability)}}o(es,"replaceRuntimeDaemonForCapabilityUpgrade");function Ce(e,n){return n?.throwIfAborted(),new Promise((i,t)=>{let s=setTimeout(()=>{n?.removeEventListener("abort",a),i()},e),a=o(()=>{clearTimeout(s),n?.removeEventListener("abort",a),t(n?.reason)},"cancel");n?.addEventListener("abort",a,{once:!0})})}o(Ce,"waitForDaemonStartupRetry");async function ns(e,n,i,t){let s=new AbortController,a=t?AbortSignal.any([s.signal,t]):s.signal;a.throwIfAborted();let u=i-Date.now(),c=new L("Host startup timed out during authenticated attachment.","timeout");if(u<=0)throw c;try{return await Promise.race([e.request("initialize",n,{signal:a}),Ce(u,a).then(()=>{throw s.abort(c),c})])}finally{s.abort()}}o(ns,"initializeRuntimeDaemonForStartup");function Ge(e,n){if(n?.throwIfAborted(),Date.now()>=e)throw new L("Host startup timed out before the Client became ready.","timeout")}o(Ge,"assertRuntimeDaemonStartupActive");async function Dn(e,n,i,t,s){for(;;){Ge(i,t);try{let a=en(e,n);return Ge(i,t),a}catch(a){if(!W(a)||a.code!=="session_storage_owned"||a.retryable!==!0||Date.now()>=i||(s({stage:"waiting",reason:"host_starting"}),await Ce(Math.min(250,i-Date.now()),t),Date.now()>=i))throw a}}}o(Dn,"waitForRuntimeSessionStorageHost");async function te(e,n,i,t=2,s=Date.now()+(e.daemonStartupTimeoutMs??6e4),a=0,u=G(e.onStartupProgress)){n&&e.autoStart===!0&&Nn(),re("permissionTimeoutMs",e.permissionTimeoutMs,0),re("userInputTimeoutMs",e.userInputTimeoutMs,0),re("daemonStartupTimeoutMs",e.daemonStartupTimeoutMs,1),re("daemonConnectTimeoutMs",e.daemonConnectTimeoutMs,1),re("daemonOrphanExitMs",e.daemonOrphanExitMs,1);let c=e.daemonOrphanExitMs??(e.daemonLifecycle==="interactive"?3e4:void 0);if(e.daemonLifecycle==="persistent"&&e.daemonOrphanExitMs!==void 0)throw new Error("A persistent daemon cannot also request daemonOrphanExitMs.");if(e.daemonLifecycle!==void 0&&e.autoStart!==!0)throw new Error("Daemon lifecycle changes require owner auto-start.");if(e.daemonStartupSignal?.throwIfAborted(),n&&e.autoStart===!0&&Date.now()>=s)throw new q("Host startup timed out before another connection attempt.",void 0,void 0,"runtimeBuild");let l=e.endpoint!==void 0?os(e.endpoint):void 0,m=Fn(e.homeDir),p=n&&e.autoStart===!0&&e.transport===void 0&&l===void 0?await Dn(m.configHome,e.sessionsDir??Q.join(m.configHome,"sessions"),s,e.daemonStartupSignal,u):void 0,g=p?.profile??e.profile??"default";if(p){let I=Z(m.configHome,e.profile??"default");g!==I.profile&&Ae(I,e.sessionsDir??Q.join(m.configHome,"sessions"),p)}p&&a===0&&E({source:"runtime.daemon.storage-owner",level:"info",message:`Session storage is owned by Host profile ${p.profile}.`,detail:{requestedProfile:e.profile??"default",ownerProfile:p.profile,runtimeId:p.owner.runtimeId,pid:p.owner.pid}});let R;try{R=e.transport===void 0&&e.autoStart===!0?await On({homeDir:m.homeDir,configHome:m.configHome,profile:g,endpoint:l,defaultProvider:e.defaultProvider,defaultModel:e.defaultModel,sessionsDir:e.sessionsDir,permissionTimeoutMs:e.permissionTimeoutMs,userInputTimeoutMs:e.userInputTimeoutMs,orphanExitMs:c,startupTimeoutMs:Math.max(1,s-Date.now()),startupSignal:e.daemonStartupSignal,onStartupProgress:e.onStartupProgress===void 0?void 0:u,connectTimeoutMs:e.daemonConnectTimeoutMs,ownerBootstrap:i}):void 0}catch(I){if(e.daemonStartupSignal?.throwIfAborted(),Date.now()>=s)throw I;let M=n&&e.autoStart===!0&&e.transport===void 0&&l===void 0?await Dn(m.configHome,e.sessionsDir??Q.join(m.configHome,"sessions"),s,e.daemonStartupSignal,u):void 0;if(!M||M.owner.runtimeId===p?.owner.runtimeId)throw I;if(t>0&&Date.now()<s)return te(e,!0,i,t-1,s,a,u);throw Object.assign(new Error(`Shared Host profile ${M.profile} won Session storage startup; retry against its current owner.`,{cause:I}),{code:"session_storage_owned",retryable:!0,ownerProfile:M.profile})}let S=l??R?.endpoint??(e.transport===void 0?Fe(g,Ee(m.homeDir,m.configHome)):void 0);u({stage:"connecting"});let k=e.transport??R?.transport??(S!==void 0?await fe(S,{connectTimeoutMs:e.daemonConnectTimeoutMs}):void 0);if(!k)throw new Error("connectKodaXRuntime requires a daemon transport, endpoint, or autoStart: true.");let O=is({...e,profile:g}),x,A={},h,v=!1,C=!0,w=!1;try{let I=Go(e),M=Yo(R),B=M===void 0?void 0:er(M.identity,M.capabilities,I,n&&e.autoStart===!0),U={name:e.clientInfo?.name??"kodax-sdk",instanceId:e.clientInfo?.instanceId??`sdk_${tr().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}:{},...e.clientInfo?.clientType!==void 0?{clientType:e.clientInfo.clientType}:{}},r=B===void 0?void 0:Zo(),d=r??U,f={profile:g,connectionPurpose:"client",autoStart:e.autoStart===!0,...e.daemonLifecycle==="persistent"&&r===void 0?{daemonLifecycle:"persistent"}:{},...O!==void 0?{token:O}:{},clientInfo:d,capabilities:{...e.capabilities},...S!==void 0?{endpoint:S.path}:{}},y=ye(await(n&&e.autoStart===!0?ns(k,f,s,e.daemonStartupSignal):k.request("initialize",f)));C=!1,x=sr(y.identity);let b=g;if(x.profile!==b)throw new Error(`Runtime daemon profile mismatch: expected ${b}, got ${x.profile}`);let D=p;if(p&&x.runtimeId===p.owner.runtimeId)try{D=en(m.configHome,e.sessionsDir??Q.join(m.configHome,"sessions"))}catch(Y){throw w=W(Y)&&Y.code==="session_storage_owned"&&Y.retryable===!0,Y}if(n&&e.autoStart===!0&&Ge(s,e.daemonStartupSignal),p&&(x.runtimeId!==p.owner.runtimeId||D?.owner.runtimeId!==x.runtimeId||D.profile!==x.profile))throw w=!0,Object.assign(new Error("The shared Session Host changed during attachment; retry against its current owner."),{code:"session_storage_owned",retryable:!0});A=y.capabilities===void 0?{}:ye(y.capabilities),process.platform==="win32"&&Uo(A),h=ts(y.grantedScopes);let N=er(x,A,I,n&&e.autoStart===!0);if(M!==void 0&&M.identity.runtimeId!==x.runtimeId)throw w=!0,new q("Runtime daemon owner changed between capability probe and authenticated attach. Retry against the current owner.",void 0,void 0,N?.name??B?.name??"runtimeIdentity");if(N!==void 0){if((y.daemonRetention==="explicit"||y.daemonRetention==="service")&&I.daemonOrphanExit!==void 0)throw new q("This Host is explicitly retained or serves A2A. Connect without an idle-exit requirement, or stop it explicitly before changing its lifetime.",void 0,void 0,"daemonOrphanExit");if(t<0)throw new q("Host startup did not converge on the requested build. Retry after the installation has finished updating.",void 0,void 0,N.name);if(z!=="0.0.0"&&xe(x.version,z)===1)throw new q(`A newer Runtime daemon does not satisfy ${N.name} v${N.version}. The older client will not replace it; use a compatible KodaX client.`,void 0,void 0,N.name);if(!n||e.autoStart!==!0||R===void 0)throw new q(`Runtime daemon does not support ${N.name} v${N.version}. Stop all daemon work and restart it with a compatible KodaX installation.`,void 0,void 0,N.name);let Y=Date.now();try{await es({identity:x,capabilities:A,transport:k,lease:R,...h!==void 0?{grantedScopes:h}:{},requiredCapability:N.name,...p?{sharedOwnerFile:p.ownerFile}:{},orphanExitMs:c,startupDeadline:s,startupSignal:e.daemonStartupSignal,reportProgress:u})}catch(ie){if(ie instanceof q&&(ie instanceof Pe||ie.preflight?.blockers.length===1&&ie.preflight.blockers[0]==="connected_clients")&&Date.now()<s){let dr=Math.max(Math.min(950,100*2**Math.min(a,4)),2*(Date.now()-Y)),ur=50+Math.floor(Math.random()*dr);if(u(ie instanceof Pe?{stage:"checking"}:{stage:"waiting",reason:"connected_clients"}),await Ce(Math.min(ur,s-Date.now()),e.daemonStartupSignal),Date.now()>=s)throw ie;return te(e,!0,i,t,s,a+1,u)}throw ie}finally{v=!0}let ar=y.daemonLifecycle==="persistent"||y.daemonLifecycle!=="interactive"&&!Ln(A,"daemonOrphanExit",1);return te(e.daemonOrphanExitMs===void 0&&I.daemonOrphanExit===void 0&&(y.daemonRetention==="explicit"||e.daemonLifecycle==="interactive"&&ar&&y.daemonRetention!=="service")?{...e,daemonLifecycle:y.daemonRetention==="explicit"?"persistent":void 0}:e,n,i,t-1,s,a,u)}Xo(A,I),n&&e.autoStart===!0&&Nn(),n&&e.autoStart===!0&&Ge(s,e.daemonStartupSignal)}catch(I){if(v||(R!==void 0?await R.close():await k.close?.()),w&&n&&e.autoStart===!0&&e.transport===void 0&&l===void 0&&t>0&&Date.now()<s)return e.daemonStartupSignal?.throwIfAborted(),await Dn(m.configHome,e.sessionsDir??Q.join(m.configHome,"sessions"),s,e.daemonStartupSignal,u),te(e,!0,i,t-1,s,a,u);if(n&&R&&C&&t>0&&or(I)){if(Date.now()>=s||(await Ce(Math.min(50+Math.floor(Math.random()*100),s-Date.now()),e.daemonStartupSignal),Date.now()>=s))throw I;return te(e,!0,i,t-1,s,a,u)}throw I}let P=cn({identity:{...x,mode:"daemon",isolation:"process"},transport:k,capabilities:A,...h!==void 0?{grantedScopes:h}:{}});return u({stage:"ready"}),R?{...P,async close(){await P.close()}}:P}o(te,"connectKodaXRuntimeInternal");function re(e,n,i){if(n===void 0||Number.isSafeInteger(n)&&n>=i&&n<=jn)return;let t=i===0?"non-negative":"positive";throw new Error(`${e} must be a ${t} integer no greater than ${jn}.`)}o(re,"assertRuntimeTimeout");function ts(e){if(!Array.isArray(e))return;let n=e.filter(i=>typeof i=="string"&&rs(i));return n.length===e.length?n:void 0}o(ts,"parseRuntimeGrantedScopes");function rs(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==="execution:register"||e==="owner:admin"||e==="daemon:admin"}o(rs,"isRuntimeGrantedScope");function is(e){if(e.daemonToken!==void 0)return e.daemonToken;if(!(e.transport!==void 0&&e.autoStart!==!0))return Te(rr(e.homeDir,e.profile).paths)}o(is,"resolveConnectDaemonToken");function os(e){return typeof e!="string"?e:{kind:process.platform==="win32"||e.startsWith("\\\\.\\pipe\\")?"pipe":"unix",path:e}}o(os,"normalizeRuntimeDaemonEndpoint");function ss(e,n){if(e===void 0)return n;let i=Date.parse(e);return Number.isFinite(i)?Math.min(jn,Math.max(1,i-Date.now())):1}o(ss,"resolvePermissionTimeoutMs");function qn(e){if(e===void 0)return!1;let n=Date.parse(e);return Number.isFinite(n)&&n<=Date.now()}o(qn,"runtimeDeadlineReached");function W(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}o(W,"isRecord");function ye(e){if(!W(e))throw new Error("Invalid runtime daemon response: expected object");return e}o(ye,"requireRuntimeRecord");function sr(e){let n=ye(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");let i=n.build,t;if(i!==void 0){if(!W(i)||typeof i.origin!="string"||i.origin.length===0||i.origin.length>4096||typeof i.fingerprint!="string"||!/^[a-f0-9]{64}$/.test(i.fingerprint))throw new Error("Invalid runtime daemon response: invalid build identity");t={origin:i.origin,fingerprint:i.fingerprint}}return{runtimeId:n.runtimeId,mode:n.mode==="daemon"?"daemon":"embedded",profile:n.profile,startedAt:n.startedAt,version:n.version,...t===void 0?{}:{build:t},...n.isolation==="inline"||n.isolation==="process"?{isolation:n.isolation}:{}}}o(sr,"parseRuntimeIdentity");function nr(e){return e instanceof Error?e:new Error(String(e))}o(nr,"normalizeError");export{Zn as a,Pi as b,Ei as c,nt as d,oe as e,_e as f,se as g,De as h,je as i,me as j,wn as k,Se as l,Ur as m,vn as n,Et as o,At as p,Yr as q,Zr as r,q as s,Ve as t,Yt as u,tg as v,rg as w,ig as x,og as y,hg as z,wg as A,Sg as B,vg as C};