@kodax-ai/kodax 0.7.62 → 0.7.66

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 (81) hide show
  1. package/CHANGELOG.md +2300 -2145
  2. package/README.md +81 -9
  3. package/README_CN.md +54 -5
  4. package/dist/chunks/{agent-4ZMCIEGD.js → agent-KER4WDNO.js} +1 -1
  5. package/dist/chunks/argument-completer-HK3MHA3K.js +2 -0
  6. package/dist/chunks/{chunk-ARUWXX25.js → chunk-35P7QL2Q.js} +1 -1
  7. package/dist/chunks/chunk-3HKBBY74.js +339 -0
  8. package/dist/chunks/chunk-AKBH2EEE.js +8 -0
  9. package/dist/chunks/{chunk-OGRJQGKO.js → chunk-ALS32RNZ.js} +1 -1
  10. package/dist/chunks/chunk-MHRN2LQV.js +328 -0
  11. package/dist/chunks/{chunk-JILSZHCQ.js → chunk-NBQW7PNZ.js} +2 -2
  12. package/dist/chunks/{chunk-S4GVQO3W.js → chunk-O7N22GJ3.js} +1 -1
  13. package/dist/chunks/chunk-ONUPGMER.js +2 -0
  14. package/dist/chunks/{chunk-ZL5CEANW.js → chunk-PZTG2C33.js} +1 -1
  15. package/dist/chunks/{chunk-AY3BLB4Q.js → chunk-QAQ2HNXD.js} +112 -112
  16. package/dist/chunks/{chunk-6OZ5KWG3.js → chunk-QJJKMNZF.js} +1 -1
  17. package/dist/chunks/chunk-QJVZZSEO.js +56 -0
  18. package/dist/chunks/chunk-TLJGOKBT.js +729 -0
  19. package/dist/chunks/{chunk-6HTR3GHZ.js → chunk-VS4CDDEF.js} +245 -245
  20. package/dist/chunks/chunk-WBBEJIAY.js +306 -0
  21. package/dist/chunks/{chunk-HO6P6CPU.js → chunk-WMIZCY2J.js} +1 -1
  22. package/dist/chunks/{chunk-UA744TZM.js → chunk-YRBNXFHY.js} +1 -1
  23. package/dist/chunks/compaction-config-7GMUFNPB.js +2 -0
  24. package/dist/chunks/{construction-bootstrap-4ZNFZFX2.js → construction-bootstrap-3XDS2D5K.js} +1 -1
  25. package/dist/chunks/{devtools-4CRULTR2.js → devtools-CD6KSIHE.js} +1 -1
  26. package/dist/chunks/{devtools-YINBSZC7.js → devtools-XR5F2C6T.js} +1 -1
  27. package/dist/chunks/{dist-73L4OYPD.js → dist-4PXB7U22.js} +1 -1
  28. package/dist/chunks/dist-4YAYT2TO.js +2 -0
  29. package/dist/chunks/host-KG3456QP.js +2 -0
  30. package/dist/chunks/{paste-FDYM7SZX.js → paste-C33GZQV5.js} +1 -1
  31. package/dist/chunks/run-manager-6CAH3KTA.js +2 -0
  32. package/dist/chunks/utils-OT5ENFUL.js +2 -0
  33. package/dist/constructed-handler-worker.js +2 -0
  34. package/dist/index.d.ts +22 -11
  35. package/dist/index.js +6 -6
  36. package/dist/kodax_cli.js +1117 -1090
  37. package/dist/runtime-worker.js +2843 -0
  38. package/dist/sdk-agent.d.ts +29 -10
  39. package/dist/sdk-agent.js +1 -1
  40. package/dist/sdk-coding.d.ts +108 -1091
  41. package/dist/sdk-coding.js +1 -1
  42. package/dist/sdk-llm.js +1 -1
  43. package/dist/sdk-mcp.d.ts +2 -1
  44. package/dist/sdk-mcp.js +1 -1
  45. package/dist/sdk-media.js +1 -1
  46. package/dist/sdk-repl.d.ts +198 -184
  47. package/dist/sdk-repl.js +2 -2
  48. package/dist/sdk-runtime.d.ts +982 -0
  49. package/dist/sdk-runtime.js +2 -0
  50. package/dist/sdk-session.d.ts +4 -4
  51. package/dist/sdk-session.js +1 -1
  52. package/dist/sdk-skills.js +1 -1
  53. package/dist/semantic-worker.js +191 -10
  54. package/dist/types-chunks/{bash-prefix-extractor.d-Do_TCAmA.d.ts → bash-prefix-extractor.d-BjkITAva.d.ts} +266 -4
  55. package/dist/types-chunks/{run-manager.d-CYY3pZeJ.d.ts → capsule.d-hVhPNkHd.d.ts} +9 -107
  56. package/dist/types-chunks/commands.d-C3B1TdGM.d.ts +213 -0
  57. package/dist/types-chunks/{types.d-DFf4Sfys.d.ts → guardrail.d-C_Siraua.d.ts} +3 -128
  58. package/dist/types-chunks/{guardrail.d-DRp0Lqvx.d.ts → guardrail.d-wk-s0psS.d.ts} +3 -3
  59. package/dist/types-chunks/{manager.d-DBD7SOTT.d.ts → manager.d-Zum9cGHU.d.ts} +3 -173
  60. package/dist/types-chunks/oauth-login.d-Bgb4rdLN.d.ts +174 -0
  61. package/dist/types-chunks/{process.d-DXkRD7hj.d.ts → process.d-CY2g03Mb.d.ts} +11 -4
  62. package/dist/types-chunks/public-api.d-jtREVfEq.d.ts +596 -0
  63. package/dist/types-chunks/run-manager.d-CFknOfo1.d.ts +91 -0
  64. package/dist/types-chunks/{sdk-session-BGGOC0cT.d.ts → sdk-session-CLqyfAmf.d.ts} +8 -304
  65. package/dist/types-chunks/types.d-BMLxKV69.d.ts +128 -0
  66. package/dist/types-chunks/types.d-CUN_bZU7.d.ts +975 -0
  67. package/dist/types-chunks/{utils.d-ChOEH3NF.d.ts → utils.d-C1rpoeDh.d.ts} +84 -72
  68. package/package.json +7 -1
  69. package/dist/chunks/argument-completer-5PWSKFKI.js +0 -2
  70. package/dist/chunks/chunk-2F4R7WM7.js +0 -52
  71. package/dist/chunks/chunk-3KD26NCI.js +0 -310
  72. package/dist/chunks/chunk-E2Q4RIOD.js +0 -731
  73. package/dist/chunks/chunk-S4ISEA6F.js +0 -341
  74. package/dist/chunks/chunk-V4WSBIXB.js +0 -2
  75. package/dist/chunks/chunk-WFE6FBQ2.js +0 -326
  76. package/dist/chunks/compaction-config-SP3REMFR.js +0 -2
  77. package/dist/chunks/dist-IKWRJW6J.js +0 -2
  78. package/dist/chunks/host-XL5CH7QP.js +0 -2
  79. package/dist/chunks/run-manager-UXIPDVVF.js +0 -2
  80. package/dist/chunks/utils-XKWEVPE3.js +0 -2
  81. package/dist/types-chunks/storage.d-C3umBC4g.d.ts +0 -280
@@ -0,0 +1,8 @@
1
+ // @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
2
+ import{Ab as kn,Bb as Dn,Cb as Pn,Db as En,Eb as bn,Fb as xn,Gb as Le,Wb as Tn,Xb as Mn,yb as vn}from"./chunk-WBBEJIAY.js";import{j as cn,k as ln,m as fn,n as gn,s as Sn,t as hn,x as wn,xa as In}from"./chunk-VS4CDDEF.js";import{B as pn,G as Rn,H as yn,z as je}from"./chunk-QJVZZSEO.js";import{e as dn,v as mn}from"./chunk-QAQ2HNXD.js";import{Gc as Se}from"./chunk-3HKBBY74.js";import{ta as an,va as ge}from"./chunk-O7N22GJ3.js";import{De as un,bd as qe,ec as Ke,gd as Xe,n as ue}from"./chunk-TLJGOKBT.js";import{a as s}from"./chunk-ONUPGMER.js";import{randomUUID as G}from"node:crypto";import*as h from"node:fs";import It from"node:os";import D from"node:path";function Be(e){let n=e.transport.request.bind(e.transport);return{identity:e.identity,sessions:{create(t){return n("session.create",t)},load(t){return n("session.load",{sessionId:t})},list(t){return n("session.list",t)},transcript(t){return n("session.transcript",{sessionId:t})},fork(t){return n("session.fork",t)},getSettings(t){return n("session.settings.get",{sessionId:t})},updateSettings(t,i){return n("session.settings.update",{sessionId:t,patch:i})},appendNotice(t){return n("session.notice.append",t)},rewind(t){return n("session.rewind",t)},setActiveEntry(t){return n("session.active_entry.set",t)},compact(t){return n("session.compact",t)},async archive(t){await n("session.archive",{sessionId:t})},async unarchive(t){await n("session.unarchive",{sessionId:t})},async delete(t){await n("session.delete",{sessionId:t})}},runs:{async start(t){Ue(t.options,"run.start.options");let i=de(await n("run.start",t)),a=We(i,"runId"),c=We(i,"sessionId"),l=_t(i,"turnId");return{runId:a,sessionId:c,...l!==void 0?{turnId:l}:{},result:Cn(n,a)}},await(t){return Cn(n,t)},get(t){return n("run.get",{runId:t})},list(t){return n("run.list",t)},async abort(t){await n("run.abort",{runId:t})},async setModel(t,i){await n("run.model.set",{runId:t,model:i})},async setProvider(t,i){await n("run.provider.set",{runId:t,provider:i})},async setReasoning(t,i){await n("run.reasoning.set",{runId:t,reasoning:i})}},events:{subscribe(t,i){return Mt(e.transport,n,t,i)},replay(t){return n("event.replay",t)}},permissions:{request(t){return n("permission.request",t)},listPending(t){return n("permission.list",t)},respond(t,i,a){return n("permission.respond",{requestId:t,decision:i,...a?.runId!==void 0?{runId:a.runId}:{}})}},workflows:{list(t){return n("workflow.list",t)},get(t){return n("workflow.get",{runId:t}).then($e)},subscribe(t,i){return Ct(e.transport,n,t,i)},pause(t){return n("workflow.pause",{runId:t})},resume(t){return n("workflow.resume",{runId:t})},stop(t){return n("workflow.stop",{runId:t})}},config:{read(){return n("config.read")},patch(t){return n("config.patch",{patch:t})},reload(){return n("config.reload")}},catalog:{providers(){return n("provider.list")},models(t){return n("model.list",t)},commands(t){return n("command.list",t!==void 0?{projectRoot:t}:void 0)},resolveCommand(t){return n("command.resolve",t)},skills(t){return n("skill.list",t)},describeSkill(t){return n("skill.describe",t)},customProviders(){return n("provider.custom.list")},upsertCustomProvider(t){return n("provider.custom.upsert",{config:t})},deleteCustomProvider(t){return n("provider.custom.remove",{name:t})},extensions(){return n("extension.list")},reloadExtensions(){return n("extension.reload")}},mcp:{listServers(){return n("mcp.server.list")},getServer(t){return n("mcp.server.get",{name:t}).then($e)},validateServer(t,i){return n("mcp.server.validate",{name:t,config:i})},upsertServer(t,i){return n("mcp.server.upsert",{name:t,config:i})},deleteServer(t){return n("mcp.server.delete",{name:t})},reloadServers(){return n("mcp.server.reload")},listTools(t){return n("mcp.tool.list",t)}},artifacts:{create(t){return n("artifact.create",t)},get(t){return n("artifact.get",{artifactId:t}).then($e)},delete(t){return n("artifact.delete",{artifactId:t})}},status:{snapshot(){return n("daemon.status")}},diagnostics:{latestContextBudget(t){return n("context.budget.get",t)},latestToolExposure(t){return n("tool.exposure.preview",t)}},async close(){await e.transport.close?.()}}}s(Be,"createRuntimeDaemonClient");function Mt(e,n,t,i){return On(e,n,"event.subscribe",{filter:t},a=>{i(a)})}s(Mt,"subscribeToDaemonEvents");function Ct(e,n,t,i){return On(e,n,"workflow.subscribe",{filter:t},a=>{i(a)})}s(Ct,"subscribeToDaemonWorkflowEvents");function On(e,n,t,i,a){let c=!1,l,d=[],r=e.subscribe(u=>{if(c||u.method!=="event")return;let f=de(u.params);if(l===void 0){d.length>=256&&d.shift(),d.push(f);return}f.subscriptionId===l&&a(f.event)});return n(t,i).then(u=>{if(l=We(de(u),"subscriptionId"),c){An(n,t,l),d.length=0;return}for(let f of d.splice(0))f.subscriptionId===l&&a(f.event)}).catch(()=>{d.length=0,r.close()}),{close(){c=!0,r.close(),l!==void 0&&An(n,t,l)}}}s(On,"subscribeToDaemonNotification");function Cn(e,n){return e("run.await",{runId:n}).then(At)}s(Cn,"requestRuntimeRunResult");function At(e){let n=de(e),t=Object.prototype.hasOwnProperty.call(n,"error")?Ot(n.error):void 0,i={...n};return delete i.error,{...i,...t!==void 0?{error:t}:{}}}s(At,"deserializeRuntimeRunResult");function Ot(e){if(e==null)return;if(e instanceof Error)return e;if(typeof e=="string")return new Error(e);let n=de(e),t=new Error(typeof n.message=="string"&&n.message.length>0?n.message:"Runtime run failed.");return typeof n.name=="string"&&n.name.length>0&&(t.name=n.name),typeof n.stack=="string"&&n.stack.length>0&&(t.stack=n.stack),t}s(Ot,"deserializeRuntimeError");function An(e,n,t){e(n==="event.subscribe"?"event.unsubscribe":"workflow.unsubscribe",{subscriptionId:t}).catch(()=>{})}s(An,"unsubscribeRemote");function $e(e){return e??void 0}s($e,"nullToUndefined");function de(e){if(!e||typeof e!="object"||Array.isArray(e))throw new Error("Expected daemon response object.");return e}s(de,"requireRecord");function We(e,n){let t=e[n];if(typeof t!="string"||t.length===0)throw new Error(`Expected daemon response string field: ${n}`);return t}s(We,"requireStringField");function _t(e,n){let t=e[n];if(t!=null){if(typeof t!="string")throw new Error(`Expected daemon response optional string field: ${n}`);return t}}s(_t,"optionalStringField");function Ue(e,n,t=new WeakSet){if(e==null||typeof e=="string"||typeof e=="boolean")return;if(typeof e=="number"){if(Number.isFinite(e))return;throw new Error(`${n} is not transport-safe: numbers must be finite.`)}if(typeof e=="function"||typeof e=="symbol"||typeof e=="bigint")throw new Error(`${n} is not transport-safe: ${typeof e} values cannot cross a Runtime boundary.`);if(typeof e!="object")return;if(t.has(e))throw new Error(`${n} is not transport-safe: cyclic values cannot cross a Runtime boundary.`);let i=Object.getPrototypeOf(e);if(!Array.isArray(e)&&i!==Object.prototype&&i!==null){let a=i?.constructor?.name??"object";throw new Error(`${n} is not transport-safe: ${a} instances cannot cross a Runtime boundary.`)}if(t.add(e),Array.isArray(e))e.forEach((a,c)=>Ue(a,`${n}[${c}]`,t));else for(let[a,c]of Object.entries(e))Ue(c,`${n}.${a}`,t);t.delete(e)}s(Ue,"assertRuntimeTransportSafe");import{spawn as er}from"node:child_process";import{fileURLToPath as nr}from"node:url";import tr from"node:os";import B from"node:path";import*as A from"node:fs";import z from"node:path";function he(e,n="default"){let t=Je(n),i=z.join(e,".kodax","runtime","daemon",t);return{profile:t,rootDir:i,stateFile:z.join(i,"daemon.json"),lockFile:z.join(i,"daemon.lock"),tokenFile:z.join(i,"daemon.token"),logFile:z.join(i,"daemon.log"),runsDir:z.join(i,"runs"),eventsDir:z.join(i,"events")}}s(he,"resolveRuntimeDaemonPaths");function Je(e){let n=e.trim()||"default";if(!/^[A-Za-z0-9_.-]+$/.test(n))throw new Error(`Invalid runtime daemon profile: ${e}`);return n}s(Je,"normalizeRuntimeDaemonProfile");function we(e){if(!A.existsSync(e.tokenFile))return;let n=A.readFileSync(e.tokenFile,"utf8").trim();return n.length>0?n:void 0}s(we,"readRuntimeDaemonToken");function _n(e){if(A.existsSync(e.stateFile))try{let n=JSON.parse(A.readFileSync(e.stateFile,"utf8"));return Ft(n)?n:void 0}catch{return}}s(_n,"readRuntimeDaemonState");function He(e){return e.state?e.endpointReachable&&!e.identityMatches?"mismatch":e.pidAlive&&e.endpointReachable&&e.identityMatches?"healthy":!e.pidAlive&&!e.endpointReachable?"stale":"unhealthy":"missing"}s(He,"classifyRuntimeDaemonHealth");function Ft(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let n=e;return typeof n.runtimeId=="string"&&typeof n.profile=="string"&&typeof n.pid=="number"&&typeof n.startedAt=="string"&&typeof n.endpoint=="string"&&typeof n.version=="string"&&Nt(n.status)&&(n.lastError===void 0||typeof n.lastError=="string")}s(Ft,"isRuntimeDaemonState");function Nt(e){return e==="starting"||e==="ready"||e==="draining"||e==="stopping"||e==="unhealthy"||e==="crashed"}s(Nt,"isRuntimeDaemonStatus");import{createHash as $t,randomUUID as Wt}from"node:crypto";import*as Ye from"node:net";import Ut from"node:os";import Xn from"node:path";import{StringDecoder as Ve}from"node:string_decoder";var te="kodax-runtime-daemon",ze=1,Ie=["initialize","runtime.initialize","ping","runtime.identity","runtime.status","runtime.shutdown","runtime.capabilities","daemon.status","daemon.stop","daemon.logs","session.create","session.load","session.list","session.transcript","session.fork","session.notice.append","session.rewind","session.active_entry.set","session.activeEntry.set","session.compact","session.archive","session.unarchive","session.delete","session.settings.get","session.settings.update","run.start","run.get","run.list","run.await","run.abort","run.model.set","run.provider.set","run.reasoning.set","run.setModel","run.setProvider","run.setReasoning","event.subscribe","event.unsubscribe","event.replay","permission.list","permission.listPending","permission.request","permission.respond","workflow.list","workflow.get","workflow.subscribe","workflow.unsubscribe","workflow.pause","workflow.resume","workflow.stop","config.read","config.patch","config.reload","model.list","provider.list","provider.custom.list","provider.custom.upsert","provider.custom.remove","mcp.server.list","mcp.server.get","mcp.server.validate","mcp.server.upsert","mcp.server.delete","mcp.server.remove","mcp.server.reload","mcp.tool.list","extension.list","extension.reload","command.list","command.resolve","skill.list","skill.describe","skill.read","artifact.create","artifact.get","artifact.delete","context.budget.get","tool.exposure.preview"],Kt=new Set(Ie),qt=new Set(["event","runtime.warning"]),Xt=new Set(["invalid_frame","invalid_request","invalid_params","not_initialized","method_not_found","unauthorized","permission_denied","conflict","not_found","cancelled","overloaded","internal_error"]);function ve(e,n,t){return{protocol:te,version:1,kind:"request",id:e,method:n,...t!==void 0?{params:t}:{}}}s(ve,"createRuntimeDaemonRequest");function Nn(e,n){return{protocol:te,version:1,kind:"error",...n!==void 0?{id:n}:{},error:e}}s(Nn,"createRuntimeDaemonErrorResponse");function Kn(e){if(!ke(e))return!1;let n=e;return n.kind==="request"&&typeof n.id=="string"&&n.id.length>0&&typeof n.method=="string"&&Kt.has(n.method)}s(Kn,"isRuntimeDaemonRequest");function re(e){if(!ke(e))return!1;let n=e;return n.kind==="response"&&typeof n.id=="string"&&n.id.length>0&&Object.prototype.hasOwnProperty.call(n,"result")}s(re,"isRuntimeDaemonSuccessResponse");function me(e){if(!ke(e))return!1;let n=e;return n.kind==="error"&&(n.id===void 0||typeof n.id=="string")&&Lt(n.error)}s(me,"isRuntimeDaemonErrorResponse");function ce(e){if(!ke(e))return!1;let n=e;return n.kind==="notification"&&typeof n.method=="string"&&qt.has(n.method)}s(ce,"isRuntimeDaemonNotification");function jt(e){return Kn(e)||re(e)||me(e)||ce(e)}s(jt,"isRuntimeDaemonFrame");function qn(e){let n;try{n=JSON.parse(e)}catch{return Fn("Frame is not valid JSON.")}return jt(n)?n:Fn("Frame does not match the runtime daemon protocol.")}s(qn,"parseRuntimeDaemonFrame");function Fn(e){return Nn({code:"invalid_frame",message:e})}s(Fn,"invalidFrame");function ke(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let n=e;return n.protocol===te&&n.version===1}s(ke,"isFrameBase");function Lt(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let n=e;return typeof n.code=="string"&&Xt.has(n.code)&&typeof n.message=="string"}s(Lt,"isRuntimeDaemonError");var Bt=8*1024*1024,ie=class extends Error{constructor(t,i,a){super(t);this.code=i;this.data=a;this.name="RuntimeDaemonTransportError"}code;data;static{s(this,"RuntimeDaemonTransportError")}};function Ln(e){return e instanceof ie}s(Ln,"isRuntimeDaemonTransportError");function Pe(e="default",n){let t=Je(e),i=n===void 0?t:`${t}-${Jt(Xn.resolve(n))}`;return process.platform==="win32"?{kind:"pipe",path:`\\\\.\\pipe\\kodax-runtime-${i}`}:{kind:"unix",path:Xn.join(Ut.tmpdir(),`kodax-runtime-${process.getuid?.()??"user"}-${i}.sock`)}}s(Pe,"defaultRuntimeDaemonEndpoint");function Jt(e){return $t("sha256").update(e).digest("hex").slice(0,12)}s(Jt,"shortPathHash");function Ht(e,n={}){let t="",i=0,a=new Ve("utf8"),c=n.maxFrameBytes??Bt;if(!Number.isSafeInteger(c)||c<=0)throw new Error("Runtime daemon maxFrameBytes must be a positive safe integer.");let l=s(r=>{zt(r,c),r.trim()&&e(qn(r))},"consumeLine"),d=s(r=>{t+=r,i+=Buffer.byteLength(r,"utf8")},"append");return{push(r){for(typeof r=="string"?(d(a.end()),a=new Ve("utf8"),d(r)):d(a.write(r));;){let u=t.indexOf(`
3
+ `);if(u<0)break;let f=t.slice(0,u).replace(/\r$/,""),o=t.slice(0,u+1);t=t.slice(u+1),i-=Buffer.byteLength(o,"utf8"),l(f)}$n(i,c)},flush(){d(a.end()),a=new Ve("utf8");let r=t.trim();t="",i=0,r.length>0&&l(r)}}}s(Ht,"createRuntimeDaemonFrameParser");async function oe(e,n={}){let t=Ye.createConnection(e.path);t.setEncoding("utf8"),await Vt(t,n.connectTimeoutMs);let i=!1,a=new Set,c=new Map,l=Ht(d=>{if(re(d)){let r=c.get(d.id);if(!r)return;c.delete(d.id),r.resolve(d.result);return}if(me(d)){if(!d.id)return;let r=c.get(d.id);if(!r)return;c.delete(d.id),r.reject(new ie(d.error.message,d.error.code,d.error.data));return}if(ce(d))for(let r of a)try{r(d)}catch{}},{maxFrameBytes:n.maxFrameBytes});return t.on("data",d=>{try{l.push(d)}catch(r){i=!0;let u=jn(r);De(c,u),t.destroy(u)}}),t.on("close",()=>{i=!0,De(c,new Error("Runtime daemon transport closed."))}),t.on("error",d=>{i=!0,De(c,d)}),{request(d,r){if(i)return Promise.reject(new Error("Runtime daemon transport is closed."));let u=`req_${Wt().replace(/-/g,"").slice(0,12)}`,f=ve(u,d,r),o;try{o=JSON.stringify(f)}catch(R){return Promise.reject(new ie(`Runtime daemon request params are not JSON-serializable: ${jn(R).message}`,"invalid_params"))}let p=new Promise((R,I)=>{c.set(u,{resolve:R,reject:I})});return t.write(`${o}
4
+ `),p},subscribe(d){return a.add(d),{close(){a.delete(d)}}},async close(){i||(i=!0,l.flush(),t.end(),t.destroy(),De(c,new Error("Runtime daemon transport closed.")))}}}s(oe,"createRuntimeDaemonSocketClientTransport");function zt(e,n){$n(Buffer.byteLength(e,"utf8"),n)}s(zt,"assertFrameSize");function $n(e,n){if(!(e<=n))throw new ie(`Runtime daemon frame exceeds the ${n}-byte limit.`,"invalid_frame",{actualBytes:e,maxFrameBytes:n})}s($n,"assertFrameByteSize");function Vt(e,n=2e3){return new Promise((t,i)=>{let a=setTimeout(()=>{c(),e.destroy(),i(new Error("Timed out connecting to runtime daemon."))},n);a.unref?.();let c=s(()=>{clearTimeout(a),e.off("connect",l),e.off("error",d)},"cleanup"),l=s(()=>{c(),t()},"onConnect"),d=s(r=>{c(),i(r)},"onError");e.once("connect",l),e.once("error",d)})}s(Vt,"waitForConnect");function De(e,n){for(let t of e.values())t.reject(n);e.clear()}s(De,"rejectPending");function jn(e){return e instanceof Error?e:new Error(String(e))}s(jn,"normalizeTransportError");async function Ge(e,n={}){let t=_n(e);if(!t)return{pidAlive:!1,endpointReachable:!1,identityMatches:!1};let i=(n.isPidAlive??Yt)(t.pid),a=Ee(t),c=we(e),l;try{l=await(n.createTransport?n.createTransport(a):oe(a,{connectTimeoutMs:n.connectTimeoutMs??1e3}));let d=l.request("initialize",{profile:t.profile,...c!==void 0?{token:c}:{}});d.catch(()=>{});let r=await Gt(d,n.handshakeTimeoutMs??1e3,"Timed out waiting for runtime daemon handshake.");return{state:t,pidAlive:i,endpointReachable:!0,identityMatches:Qt(r,t)}}catch(d){return Ln(d)&&d.code==="unauthorized"?{state:t,pidAlive:i,endpointReachable:!0,identityMatches:!1}:{state:t,pidAlive:i,endpointReachable:!1,identityMatches:!1}}finally{await l?.close?.()}}s(Ge,"observeRuntimeDaemonHealth");function Ee(e){return{kind:process.platform==="win32"||e.endpoint.startsWith("\\\\.\\pipe\\")?"pipe":"unix",path:e.endpoint}}s(Ee,"runtimeDaemonEndpointFromState");function Yt(e){if(!Number.isInteger(e)||e<=0)return!1;try{return process.kill(e,0),!0}catch(n){return Zt(n)&&n.code==="EPERM"}}s(Yt,"isRuntimeDaemonPidAlive");async function Gt(e,n,t){let i;try{return await Promise.race([e,new Promise((a,c)=>{i=setTimeout(()=>c(new Error(t)),n),i.unref?.()})])}finally{i!==void 0&&clearTimeout(i)}}s(Gt,"withTimeout");function Qt(e,n){let t=Wn(e),i=Wn(t?.identity)??t;return i?.runtimeId===n.runtimeId&&i.profile===n.profile}s(Qt,"daemonIdentityMatchesState");function Wn(e){if(!(e===null||typeof e!="object"||Array.isArray(e)))return e}s(Wn,"asRecord");function Zt(e){return e instanceof Error&&"code"in e}s(Zt,"isNodeProcessError");async function Bn(e){let n=e.profile??"default",t=B.resolve(e.homeDir??tr.homedir()),i=he(t,n),a=Pe(i.profile,t);if(e.endpoint&&e.endpoint.path!==a.path)throw new Error("SDK daemon auto-start only supports the profile default endpoint; use attach-only mode for custom endpoints.");let c=await Ge(i,e.healthCheck),l=He(c);if(l==="healthy"&&c.state)return Un(i,Ee(c.state),!1,e);if(l==="unhealthy"||l==="mismatch")throw new Error(`Runtime daemon is ${l}; refusing to start a competing owner.`);let d=await ir({profile:i.profile,homeDir:t,defaultProvider:e.defaultProvider,defaultModel:e.defaultModel,sessionsDir:e.sessionsDir,permissionTimeoutMs:e.permissionTimeoutMs}),r=await rr(i,e),u=Ee(r.state);return Un(i,u,r.state.pid===d.pid,e)}s(Bn,"acquireRuntimeDaemonProcessLease");async function Un(e,n,t,i){let a=await oe(n,{connectTimeoutMs:i.connectTimeoutMs});return{transport:a,endpoint:n,paths:e,ownsHost:t,async close(){await a.close?.()},async shutdown(){try{await a.request("runtime.shutdown")}finally{await a.close?.()}}}}s(Un,"connectProcessLease");async function rr(e,n){let t=Date.now()+(n.startupTimeoutMs??6e4);for(;Date.now()<=t;){let i=await Ge(e,n.healthCheck),a=He(i);if(a==="healthy"&&i.state)return{...i,state:i.state};if(a==="mismatch")throw new Error("Runtime daemon endpoint identity does not match its persisted owner state.");await ar(n.pollIntervalMs??100)}throw new Error(`Timed out waiting for runtime daemon profile "${e.profile}" to become ready.`)}s(rr,"waitForHealthyDaemon");async function ir(e){let n=or(),t=[...n!==void 0?sr(process.execArgv,n.endsWith(".ts")):[],...n!==void 0?[n]:[],"daemon","serve","--profile",e.profile,"--home",e.homeDir];e.defaultProvider!==void 0&&t.push("--provider",e.defaultProvider),e.defaultModel!==void 0&&t.push("--model",e.defaultModel),e.sessionsDir!==void 0&&t.push("--sessions-dir",e.sessionsDir),e.permissionTimeoutMs!==void 0&&t.push("--permission-timeout-ms",String(e.permissionTimeoutMs));let i=er(process.execPath,t,{detached:!0,stdio:"ignore",windowsHide:!0,env:{...process.env,KODAX_DAEMON_SERVE:"1",KODAX_HOME:B.join(e.homeDir,".kodax")}});return await new Promise((a,c)=>{i.once("spawn",a),i.once("error",c)}),i.unref(),{pid:i.pid}}s(ir,"spawnRuntimeDaemonServeProcess");function or(){if(process.env.KODAX_BUNDLED==="true")return;let e=nr(import.meta.url);if(e.endsWith(".ts"))return B.resolve(B.dirname(e),"..","kodax_cli.ts");let n=B.dirname(e),t=B.basename(n)==="chunks"?B.dirname(n):n;return B.join(t,"kodax_cli.js")}s(or,"resolveDaemonCliEntry");function sr(e,n){let t=[];for(let i=0;i<e.length;i+=1){let a=e[i]??"",c=a.toLowerCase();if(["--import","--loader","--experimental-loader","--require","-r"].includes(c)){t.push(a);let l=e[i+1];l!==void 0&&(t.push(l),i+=1)}else(c.startsWith("--import=")||c.startsWith("--loader=")||c.startsWith("--experimental-loader=")||c.startsWith("--require=")||c.startsWith("--max-old-space-size")||c==="--enable-source-maps")&&t.push(a)}return n&&!t.some(i=>i==="tsx"||i.endsWith("/tsx")||i.endsWith("\\tsx"))&&t.unshift("--import","tsx"),t}s(sr,"daemonServeExecArgv");function ar(e){return new Promise(n=>setTimeout(n,e))}s(ar,"delay");import{Worker as ur}from"node:worker_threads";import{existsSync as dr}from"node:fs";import{basename as mr,dirname as Qe,join as Jn}from"node:path";import{fileURLToPath as Hn,pathToFileURL as zn}from"node:url";function Vn(e,n={}){let t=cr(),i=new ur(t,{workerData:e,execArgv:t.href.endsWith(".ts")?["--import","tsx"]:[],...n.resourceLimits!==void 0?{resourceLimits:n.resourceLimits}:{}}),a=new Map,c=new Set,l=0,d=!1,r=s(o=>{for(let p of a.values())p.reject(o);a.clear()},"rejectPending"),u=s(o=>{d||(d=!0,r(o),c.clear())},"markClosed");return i.on("message",o=>{if(ce(o)){for(let I of c)I(o);return}if(!re(o)&&!me(o)||!o.id)return;let p=a.get(o.id);if(!p)return;if(a.delete(o.id),re(o)){p.resolve(o.result);return}let R=new Error(o.error.message);R.code=o.error.code,o.error.data!==void 0&&(R.data=o.error.data),p.reject(R)}),i.on("error",o=>u(o)),i.on("exit",o=>u(new Error(`Runtime Worker exited with code ${o}.`))),{transport:{request(o,p){if(d)return Promise.reject(new Error("Runtime Worker transport is closed."));let R=`worker_${++l}`;return new Promise((I,k)=>{a.set(R,{resolve:I,reject:k});try{i.postMessage(ve(R,o,p))}catch(P){a.delete(R),k(P instanceof Error?P:new Error(String(P)))}})},subscribe(o){return d?{close(){}}:(c.add(o),{close:s(()=>c.delete(o),"close")})},async close(){d||(u(new Error("Runtime Worker transport closed.")),await i.terminate())}},threadId:i.threadId,async terminate(){d||u(new Error("Runtime Worker terminated.")),await i.terminate()}}}s(Vn,"createRuntimeWorkerTransport");function cr(){if(import.meta.url.endsWith(".ts")){let t=new URL("../../dist/runtime-worker.js",import.meta.url);return dr(Hn(t))?t:new URL("./entry.ts",import.meta.url)}if(process.env.KODAX_BUNDLED==="true")return zn(Jn(Qe(process.execPath),"runtime-worker.js"));let e=Qe(Hn(import.meta.url)),n=mr(e)==="chunks"?Qe(e):e;return zn(Jn(n,"runtime-worker.js"))}s(cr,"resolveRuntimeWorkerUrl");var m={type:"string"},x={type:"boolean"},$={type:"integer"},v={type:"object",additionalProperties:!0},L={type:"array",items:v},le={oneOf:[{type:"null"},v]},O=y({ok:x},["ok"]),C=y({}),st={initialize:{params:y({profile:m,token:m,autoStart:x,endpoint:m,clientInfo:v,capabilities:v},[],!0),result:y({identity:v,capabilities:v},["identity","capabilities"],!0)},"runtime.initialize":{params:y({profile:m,token:m,autoStart:x,endpoint:m,clientInfo:v,capabilities:v},[],!0),result:y({identity:v,capabilities:v},["identity","capabilities"],!0)},ping:{params:C,result:y({ok:x,runtimeId:m},["ok","runtimeId"])},"runtime.identity":{params:C,result:v},"runtime.status":{params:C,result:v},"runtime.shutdown":{params:C,result:O},"runtime.capabilities":{params:C,result:v},"daemon.status":{params:C,result:v},"daemon.stop":{params:C,result:O},"daemon.logs":{params:C,result:v},"session.create":{params:Rr(),result:Y()},"session.load":{params:y({sessionId:m},["sessionId"]),result:Y()},"session.list":{params:yr(),result:J(Y())},"session.transcript":{params:y({sessionId:m},["sessionId"]),result:le},"session.fork":{params:gr(),result:fe(Y())},"session.notice.append":{params:y({sessionId:m,content:m,source:m},["sessionId","content"]),result:le},"session.rewind":{params:y({sessionId:m,selector:m},["sessionId"]),result:fe(Y())},"session.active_entry.set":{params:Zn(),result:fe(Y())},"session.activeEntry.set":{params:Zn(),result:fe(Y())},"session.compact":{params:Sr(),result:v},"session.archive":{params:y({sessionId:m},["sessionId"]),result:O},"session.unarchive":{params:y({sessionId:m},["sessionId"]),result:O},"session.delete":{params:y({sessionId:m},["sessionId"]),result:O},"session.settings.get":{params:y({sessionId:m},["sessionId"]),result:v},"session.settings.update":{params:y({sessionId:m,patch:v},["sessionId","patch"]),result:v},"run.start":{params:hr(),result:pr()},"run.get":{params:V(),result:et()},"run.list":{params:wr(),result:J(et())},"run.await":{params:V(),result:Ir()},"run.abort":{params:V(),result:O},"run.model.set":{params:y({runId:m,model:m},["runId"],!0),result:O},"run.provider.set":{params:y({runId:m,provider:m},["runId","provider"]),result:O},"run.reasoning.set":{params:y({runId:m,reasoning:m},["runId"],!0),result:O},"run.setModel":{params:y({runId:m,model:m},["runId"],!0),result:O},"run.setProvider":{params:y({runId:m,provider:m},["runId","provider"]),result:O},"run.setReasoning":{params:y({runId:m,reasoning:m},["runId"],!0),result:O},"event.subscribe":{params:Yn(dt()),result:Qn()},"event.unsubscribe":{params:y({subscriptionId:m},["subscriptionId"]),result:O},"event.replay":{params:vr(),result:J(kr())},"permission.list":{params:nt(),result:J(tt())},"permission.listPending":{params:nt(),result:J(tt())},"permission.request":{params:mt(),result:rt()},"permission.respond":{params:y({requestId:m,runId:m,decision:rt()},["requestId","decision"]),result:x},"workflow.list":{params:it(),result:L},"workflow.get":{params:V(),result:{oneOf:[v,{type:"null"}]}},"workflow.subscribe":{params:Yn(it()),result:Qn()},"workflow.unsubscribe":{params:y({subscriptionId:m},["subscriptionId"]),result:O},"workflow.pause":{params:V(),result:x},"workflow.resume":{params:V(),result:x},"workflow.stop":{params:V(),result:x},"config.read":{params:C,result:v},"config.patch":{params:y({patch:v},["patch"]),result:v},"config.reload":{params:C,result:y({ok:x,config:v},["ok","config"])},"model.list":{params:y({provider:m},[],!0),result:{oneOf:[v,L]}},"provider.list":{params:C,result:L},"provider.custom.list":{params:C,result:L},"provider.custom.upsert":{params:y({config:v},["config"]),result:v},"provider.custom.remove":{params:y({name:m},["name"]),result:x},"mcp.server.list":{params:C,result:v},"mcp.server.get":{params:y({name:m},["name"]),result:{oneOf:[v,{type:"null"}]}},"mcp.server.validate":{params:y({name:m,config:v},["name","config"]),result:{oneOf:[y({ok:x,config:v},["ok","config"],!0),y({ok:x,error:m},["ok","error"],!0)]}},"mcp.server.upsert":{params:y({name:m,config:v},["name","config"]),result:v},"mcp.server.delete":{params:y({name:m},["name"]),result:x},"mcp.server.remove":{params:y({name:m},["name"]),result:x},"mcp.server.reload":{params:C,result:y({ok:x,servers:L},["ok","servers"])},"mcp.tool.list":{params:y({server:m,forceRefresh:x},[],!0),result:L},"extension.list":{params:C,result:y({active:x,extensions:L,diagnostics:v},["active","extensions"],!0)},"extension.reload":{params:C,result:y({ok:x,active:x},["ok","active"],!0)},"command.list":{params:y({projectRoot:m},[],!0),result:L},"command.resolve":{params:y({name:m,projectRoot:m},["name"],!0),result:le},"skill.list":{params:y({projectRoot:m,userInvocableOnly:x},[],!0),result:L},"skill.describe":{params:y({name:m,projectRoot:m},["name"],!0),result:le},"skill.read":{params:y({name:m,projectRoot:m},["name"],!0),result:le},"artifact.create":{params:y({kind:{enum:["image","file","video"]},path:m,mediaType:m,mimeType:m,name:m,source:{enum:["user-inline","clipboard","drag-drop","file-picker"]},description:m},["kind","path"]),result:ot()},"artifact.get":{params:y({artifactId:m},["artifactId"]),result:fe(ot())},"artifact.delete":{params:y({artifactId:m},["artifactId"]),result:x},"context.budget.get":{params:Gn(),result:{oneOf:[v,{type:"null"}]}},"tool.exposure.preview":{params:Gn(),result:{oneOf:[v,{type:"null"}]}}},at={event:y({subscriptionId:m,event:v},["subscriptionId","event"]),"runtime.warning":v},ut={protocol:te,version:1,methods:st,notifications:at},lr=JSON.stringify(ut,null,2);function fr(){return Ie}s(fr,"listRuntimeDaemonSchemaMethods");function y(e,n=[],t=!1){return{type:"object",properties:e,required:n,additionalProperties:t}}s(y,"objectSchema");function V(){return y({runId:m},["runId"])}s(V,"runIdParamsSchema");function Yn(e){return y({filter:e})}s(Yn,"filterParamsSchema");function Gn(){return y({sessionId:m,runId:m},[],!0)}s(Gn,"diagnosticParamsSchema");function Qn(){return y({subscriptionId:m},["subscriptionId"])}s(Qn,"subscriptionSchema");function pr(){return y({runId:m,sessionId:m,turnId:m},["runId","sessionId"],!0)}s(pr,"runStartedSchema");function J(e){return{type:"array",items:e}}s(J,"arraySchema");function fe(e){return{oneOf:[{type:"null"},e]}}s(fe,"nullableSchema");function Rr(){return y({sessionId:m,title:m,projectPath:m,gitRoot:m,surface:m,profileId:m,tag:m})}s(Rr,"createSessionParamsSchema");function Y(){return y({id:m,title:m,gitRoot:m,workspaceRoot:m,surface:m,profileId:m,createdAt:m,msgCount:$,tag:m,projectKey:m,archived:x},["id","title"],!0)}s(Y,"sessionSchema");function yr(){return y({projectRoot:m,scope:{enum:["user","managed-task-worker","all"]},includeArchived:x,limit:$,before:m,tag:m})}s(yr,"sessionFilterSchema");function gr(){return y({sessionId:m,selector:m,newSessionId:m,title:m},["sessionId"])}s(gr,"forkSessionParamsSchema");function Zn(){return y({sessionId:m,entryId:m},["sessionId","entryId"])}s(Zn,"activeEntryParamsSchema");function Sr(){return y({sessionId:m,provider:m,model:m,customInstructions:m,contextWindow:$},["sessionId"])}s(Sr,"compactSessionParamsSchema");function hr(){return y({sessionId:m,prompt:m,input:{oneOf:[v,J(v)]},mode:{enum:["coding","managed_task"]},permissionBroker:{enum:["runtime","client"]},options:v},["sessionId"],!0)}s(hr,"startRunParamsSchema");function wr(){return y({sessionId:m,phase:{oneOf:[be(),J(be())]}})}s(wr,"runFilterSchema");function et(){return y({runId:m,sessionId:m,turnId:m,phase:be(),startedAt:m,endedAt:m,provider:m,model:m,reasoning:m,error:m},["runId","sessionId","phase","startedAt","provider"],!0)}s(et,"runStatusSchema");function Ir(){return y({runId:m,sessionId:m,phase:be(),result:v,error:{oneOf:[m,v]}},["runId","sessionId","phase"],!0)}s(Ir,"runResultSchema");function be(){return{enum:["queued","running","waiting_permission","waiting_user_input","completed","failed","cancelled","interrupted"]}}s(be,"runPhaseSchema");function dt(){return y({sessionId:m,runId:m,type:{oneOf:[m,J(m)]}})}s(dt,"eventFilterSchema");function vr(){return y({...dt().properties??{},sinceSeq:$,limit:$})}s(vr,"eventReplayFilterSchema");function kr(){return y({id:m,seq:$,time:m,sessionId:m,runId:m,turnId:m,type:m,payload:{}},["id","seq","time","sessionId","runId","type","payload"],!0)}s(kr,"runtimeEventSchema");function nt(){return y({sessionId:m,runId:m,toolName:m})}s(nt,"permissionFilterSchema");function mt(){return y({sessionId:m,runId:m,turnId:m,toolCallId:m,toolName:m,reason:m,risk:{enum:["low","medium","high"]},inputPreview:m,expiresAt:m,timeoutMs:$},["sessionId","runId","toolName"])}s(mt,"permissionRequestInputSchema");function tt(){return y({...mt().properties??{},id:m,createdAt:m},["id","sessionId","runId","toolName","createdAt"],!0)}s(tt,"permissionRequestSchema");function rt(){return{oneOf:[y({type:{enum:["allow_once"]}},["type"]),y({type:{enum:["allow_always"]},scope:y({toolName:m,sessionId:m})},["type","scope"]),y({type:{enum:["reject"]},reason:m},["type"])]}}s(rt,"permissionDecisionSchema");function it(){return y({runId:m,activeOnly:x,limit:$})}s(it,"workflowFilterSchema");function ot(){return y({id:m,kind:{enum:["image","file","video"]},path:m,sizeBytes:$,mediaType:m,mimeType:m,name:m,source:{enum:["user-inline","clipboard","drag-drop","file-picker"]},description:m,createdAt:m},["id","kind","path","sizeBytes","createdAt"],!0)}s(ot,"artifactSchema");var Dr=["provider","model","effort","planModeEffort","thinking","reasoningMode","agentMode","permissionMode","locale","providerModels","extensions","repoIntelligenceMode","repoIntelligenceTrace","verifierLog","stallLog","fallbackProviders","fastProvider","fastModel","deepProvider","deepModel","maxOutputTokens","disablePromptCache","lsp","lspAutoDownload","acpLogLevel","sessionRetentionDays","repoIntelligence","workflow"],Pr=5*6e4,Te=1e4,Me=1e3,ct=256*1024*1024,Er=64*1024,br=10,vt=16*1024*1024,xr=vt/2,Tr=128*1024,Mr=new Set(["assistant.delta","thinking.delta","tool.progress","run.progress"]),Cr=new Set(["tool_call","tool_describe"]),Ar=new Set(["image","file","video"]);async function Uo(e={}){if(e.isolation!==void 0&&e.isolation!=="inline"&&e.isolation!=="worker")throw new Error(`Unsupported KodaX Runtime isolation: ${String(e.isolation)}`);if(e.mode==="daemon"){if(e.isolation!==void 0)throw new Error("Daemon mode already uses process isolation and does not accept an isolation option.");if(e.worker!==void 0)throw new Error("Runtime Worker options require isolation: 'worker'.");return Fr({profile:e.profile,transport:e.daemonTransport,endpoint:e.daemonEndpoint,autoStart:e.autoStartDaemon??(e.daemonTransport===void 0&&e.daemonEndpoint===void 0),homeDir:e.homeDir,sessionsDir:e.sessionsDir,defaultProvider:e.defaultProvider,defaultModel:e.defaultModel,permissionTimeoutMs:e.permissionTimeoutMs,daemonStartupTimeoutMs:e.daemonStartupTimeoutMs,daemonConnectTimeoutMs:e.daemonConnectTimeoutMs,daemonToken:e.daemonToken,clientInfo:e.clientInfo,capabilities:e.capabilities,requirements:e.requirements})}if(e.mode!==void 0&&e.mode!=="embedded")throw new Error(`Unsupported KodaX runtime mode: ${String(e.mode)}`);if(e.worker!==void 0&&e.isolation!=="worker")throw new Error("Runtime Worker options require isolation: 'worker'.");if(e.isolation==="worker")return Or(e);tn({hardDispose:!1},e.requirements);let n={runtimeId:`rt_${G().replace(/-/g,"").slice(0,12)}`,mode:"embedded",profile:e.profile??"default",startedAt:new Date().toISOString(),version:"0.7.66",isolation:"inline"},t=Gr(e),i=Tn(t?{sessionsDir:t}:void 0),a=Ri(e);Et(a);let c=Yr(e),l=Vr(c),d=ti(l,e.permissionTimeoutMs??Pr),r=Ur(),u=jr(),f=new Map;for(let k of Fi(c.loadRunStatuses())){let P=ni(k,l,c);f.set(P.runId,ei(P))}let o=!1,p=s(()=>{if(o)throw new Error("KodaX runtime is closed")},"ensureOpen"),R=Xr({bus:l,defaultModel:e.defaultModel,defaultProvider:e.defaultProvider,ensureOpen:p,isClosed:s(()=>o,"isClosed"),artifacts:r,permissions:d,persistence:c,runs:f,sessionManager:i});return{identity:n,sessions:qr(i,l,c,p,k=>[...f.values()].some(P=>P.sessionId===k&&Ce(P.phase)),(k,P)=>{for(let b of f.values())b.sessionId===k&&Ce(b.phase)&&(b.permissionMode=P)}),runs:R,events:l.service,permissions:d.service,workflows:u,config:Lr(p,a),catalog:$r(p,a),mcp:Wr(p,a),artifacts:r.service,status:Jr({identity:n,permissions:d,runs:f,sessionManager:i,workflows:u}),diagnostics:Hr(l.service),async close(){o||(o=!0,R.closeAll("runtime closed"),d.rejectAll("runtime closed"),l.close())}}}s(Uo,"createKodaXRuntime");async function Or(e){let n=e.worker?.shutdownTimeoutMs??2e3;if(!Number.isFinite(n)||n<=0)throw new Error("Runtime Worker shutdownTimeoutMs must be a positive finite number.");let t=Vn({homeDir:e.homeDir,profile:e.profile,sessionsDir:e.sessionsDir,defaultProvider:e.defaultProvider,defaultModel:e.defaultModel,permissionTimeoutMs:e.permissionTimeoutMs},e.worker);try{let i=Fe(await t.transport.request("initialize",{profile:e.profile??"default",...e.clientInfo!==void 0?{clientInfo:e.clientInfo}:{},...e.capabilities!==void 0?{capabilities:e.capabilities}:{}})),a=bt(i.identity);tn(i.capabilities,{...e.requirements,hardDispose:!0});let c=Be({identity:{...a,mode:"embedded",isolation:"worker",workerThreadId:t.threadId},transport:t.transport}),l=!1;return{...c,async close(){if(!l){l=!0;try{await _r(t.transport.request("runtime.shutdown"),n)}finally{await t.terminate()}}}}}catch(i){throw await t.terminate(),i}}s(Or,"createWorkerHostedKodaXRuntime");function tn(e,n){if(!(!n?.hardDispose||Fe(e).hardDispose===!0))throw new Error("Runtime does not support the required hardDispose capability.")}s(tn,"assertRuntimeCapabilities");async function _r(e,n){let t;try{await Promise.race([e,new Promise((i,a)=>{t=setTimeout(()=>a(new Error(`Runtime Worker shutdown timed out after ${n}ms.`)),n),t.unref?.()})])}finally{t!==void 0&&clearTimeout(t)}}s(_r,"settleWithin");async function Fr(e={}){lt("daemonStartupTimeoutMs",e.daemonStartupTimeoutMs),lt("daemonConnectTimeoutMs",e.daemonConnectTimeoutMs);let n=e.endpoint!==void 0?Kr(e.endpoint):void 0,t=e.transport===void 0&&e.autoStart===!0?await Bn({homeDir:e.homeDir,profile:e.profile,endpoint:n,defaultProvider:e.defaultProvider,defaultModel:e.defaultModel,sessionsDir:e.sessionsDir,permissionTimeoutMs:e.permissionTimeoutMs,startupTimeoutMs:e.daemonStartupTimeoutMs,connectTimeoutMs:e.daemonConnectTimeoutMs}):void 0,i=n??t?.endpoint??(e.transport===void 0?Pe(e.profile??"default",D.resolve(e.homeDir??It.homedir())):void 0),a=e.transport??t?.transport??(i!==void 0?await oe(i,{connectTimeoutMs:e.daemonConnectTimeoutMs}):void 0);if(!a)throw new Error("connectKodaXRuntime requires a daemon transport, endpoint, or autoStart: true.");let c=Nr(e),l;try{let r=Fe(await a.request("initialize",{profile:e.profile??"default",autoStart:e.autoStart===!0,...c!==void 0?{token:c}:{},...e.clientInfo!==void 0?{clientInfo:e.clientInfo}:{},...e.capabilities!==void 0?{capabilities:e.capabilities}:{},...i!==void 0?{endpoint:i.path}:{}}));l=bt(r.identity),tn(r.capabilities,e.requirements);let u=e.profile??"default";if(l.profile!==u)throw new Error(`Runtime daemon profile mismatch: expected ${u}, got ${l.profile}`)}catch(r){throw await a.close?.(),await t?.close(),r}let d=Be({identity:{...l,mode:"daemon",isolation:"process"},transport:a});return t?{...d,async close(){await d.close(),await t.close()}}:d}s(Fr,"connectKodaXRuntime");function lt(e,n){if(!(n===void 0||Number.isFinite(n)&&n>0))throw new Error(`${e} must be a positive finite number.`)}s(lt,"assertPositiveRuntimeTimeout");function Nr(e){if(e.daemonToken!==void 0)return e.daemonToken;if(e.transport!==void 0&&e.autoStart!==!0)return;let n=D.resolve(e.homeDir??It.homedir());return we(he(n,e.profile??"default"))}s(Nr,"resolveConnectDaemonToken");function Kr(e){return typeof e!="string"?e:{kind:process.platform==="win32"||e.startsWith("\\\\.\\pipe\\")?"pipe":"unix",path:e}}s(Kr,"normalizeRuntimeDaemonEndpoint");function qr(e,n,t,i,a,c){let l=s((d,r,u)=>({id:d,title:r.title,...r.gitRoot?{gitRoot:r.gitRoot}:{},...r.runtimeInfo?.workspaceRoot?{workspaceRoot:r.runtimeInfo.workspaceRoot}:{},...r.runtimeInfo?.surface?{surface:r.runtimeInfo.surface}:{},...r.runtimeInfo?.profileId?{profileId:r.runtimeInfo.profileId}:{},...u?{createdAt:u}:{}}),"toRuntimeSession");return{async create(d={}){i();let r=d.sessionId??await Xe(),u=d.projectPath?D.resolve(d.projectPath):void 0,f=d.gitRoot?D.resolve(d.gitRoot):u,o=ii(d,u,f),p={messages:[],title:d.title??"",gitRoot:f??"",...d.tag!==void 0?{tag:d.tag}:{},...o!==void 0?{runtimeInfo:o}:{},scope:"user"};await e.storage.save(r,p);let R=l(r,p,new Date().toISOString());return n.emit("session.created",R,{sessionId:r,runId:r}),R},async load(d){i();let r=await e.loadSession(d);if(!r)throw new Error(`Session not found: ${d}`);let u=l(d,r);return n.emit("session.loaded",u,{sessionId:d,runId:d}),u},async list(d){return i(),(await e.listSessions(d)).map(kt)},async transcript(d){return i(),e.loadFullTranscript(d)},async fork(d){i();let r=await e.forkSession(d.sessionId,{...d.selector!==void 0?{selector:d.selector}:{},...d.newSessionId!==void 0?{sessionId:d.newSessionId}:{},...d.title!==void 0?{title:d.title}:{}});if(!r){let f=await e.loadSession(d.sessionId);if(!f)return null;let o=d.newSessionId??await Xe(),p={...f,title:d.title??f.title,messages:f.messages.map(Bi)};await e.storage.save(o,p);let R=l(o,p);return n.emit("session.created",R,{sessionId:o,runId:o}),R}let u=l(r.sessionId,r.data);return n.emit("session.created",u,{sessionId:r.sessionId,runId:r.sessionId}),u},async getSettings(d){return i(),await gt(e,d),t.loadSessionSettings(d)},async updateSettings(d,r){i();let u=await gt(e,d),f=t.loadSessionSettings(d),o=ci(f,r);return Dt(u,o),t.saveSessionSettings(d,o),r.permissionMode!==void 0&&c(d,o.permissionMode),n.emit("session.settings.updated",{sessionId:d,settings:o,patch:r},{sessionId:d,runId:d}),o},async appendNotice(d){i();let r=await e.appendClientNotice(d.sessionId,{content:d.content,...d.source!==void 0?{source:d.source}:{}});return r&&n.emit("session.notice.appended",{sessionId:d.sessionId,entry:r},{sessionId:d.sessionId,runId:d.sessionId}),r},async rewind(d){i(),nn(d.sessionId,a);let r=await e.rewindSession(d.sessionId,{...d.selector!==void 0?{selector:d.selector}:{}});if(!r)return null;let u=l(d.sessionId,r);return n.emit("session.rewound",{sessionId:d.sessionId,selector:d.selector,session:u},{sessionId:d.sessionId,runId:d.sessionId}),u},async setActiveEntry(d){i(),nn(d.sessionId,a);let r=await e.setActiveEntry(d.sessionId,d.entryId);if(!r)return null;let u=l(d.sessionId,r);return n.emit("session.active_entry.updated",{sessionId:d.sessionId,entryId:d.entryId,session:u},{sessionId:d.sessionId,runId:d.sessionId}),u},async compact(d){i(),nn(d.sessionId,a);let r=await e.compactSession(d.sessionId,{...d.provider!==void 0?{provider:d.provider}:{},...d.model!==void 0?{model:d.model}:{},...d.customInstructions!==void 0?{customInstructions:d.customInstructions}:{},...d.contextWindow!==void 0?{contextWindow:d.contextWindow}:{}}),u=await e.loadSession(d.sessionId),f=u?l(d.sessionId,u):void 0;return n.emit("context.compaction.finished",{sessionId:d.sessionId,compacted:r.compacted,tokensBefore:r.tokensBefore,tokensAfter:r.tokensAfter,...r.reason!==void 0?{reason:r.reason}:{}},{sessionId:d.sessionId,runId:d.sessionId}),r.compacted&&n.emit("session.compacted",{sessionId:d.sessionId,result:{compacted:r.compacted,tokensBefore:r.tokensBefore,tokensAfter:r.tokensAfter},...f!==void 0?{session:f}:{}},{sessionId:d.sessionId,runId:d.sessionId}),{...r,...f!==void 0?{session:f}:{}}},async archive(d){if(i(),!await e.archiveSession(d))throw new Error(`Session not found or not archived: ${d}`)},async unarchive(d){if(i(),!await e.unarchiveSession(d))throw new Error(`Session not found or not unarchived: ${d}`)},async delete(d){i();let r=await e.deleteSession(d);Ui(d,r)}}}s(qr,"createRuntimeSessionService");function Xr(e){let n=new Map,t=new Map,i=s(o=>{let p=e.runs.get(o);if(!p)throw new Error(`Runtime run not found: ${o}`);return p},"getRecord"),a=s(o=>{n.get(o.sessionId)===o.runId&&n.delete(o.sessionId)},"releaseActiveRun"),c=s((o,p)=>{o.start?.resolve(p),o.start=void 0},"resolveRunStart"),l=s((o,p)=>(e.permissions.rejectForRun(o.runId,"runtime run ended"),c(o,p),a(o),Ni(e.runs),u(o.sessionId),p),"finishRun"),d=s((o,p,R)=>{o.phase==="queued"&&zr(t,o),o.running?.abort(new Error(p)),o.abortController?.abort(new Error(p)),e.permissions.rejectForRun(o.runId,p),Re(e.bus,e.persistence,o,"cancelled");let I={runId:o.runId,sessionId:o.sessionId,phase:o.phase};return c(o,I),a(o),R&&!e.isClosed()&&u(o.sessionId),I},"cancelRun"),r=s(o=>{if(!o.start||e.isClosed()){d(o,"runtime closed",!1);return}o.phase="running",o.queuedAt=void 0,n.set(o.sessionId,o.runId),e.bus.emit("run.started",q(o),{sessionId:o.sessionId,runId:o.runId}),Ae(e.bus,e.persistence,o,q(o));let p=ri({bus:e.bus,original:o.start.options.events,permissions:e.permissions,record:o}),R=Br({events:p,model:o.model,options:o.start.options,provider:o.provider,record:o,sessionManager:e.sessionManager});if(e.bus.emit("config.effective",{sessionId:o.sessionId,runId:o.runId,provider:o.provider,...o.model!==void 0?{model:o.model}:{},...R.effort!==void 0?{effort:R.effort}:{},...R.thinking!==void 0?{thinking:R.thinking}:{},...R.reasoningMode!==void 0?{reasoningMode:R.reasoningMode}:{},...o.permissionMode!==void 0?{permissionMode:o.permissionMode}:{},...R.context?.executionCwd!==void 0?{executionCwd:R.context.executionCwd}:{}},{sessionId:o.sessionId,runId:o.runId,...o.turnId!==void 0?{turnId:o.turnId}:{}}),o.mode==="managed_task"){let k=new AbortController;o.abortController=k;let P=R.abortSignal;P?.aborted?k.abort(P.reason):P?.addEventListener("abort",()=>{k.abort(P.reason)},{once:!0}),mn({...R,abortSignal:k.signal},o.start.prompt).then(b=>{let j=o.terminalEmitted?o.phase:b.interrupted?"interrupted":b.success?"completed":"failed";return Re(e.bus,e.persistence,o,j),{runId:o.runId,sessionId:o.sessionId,phase:o.phase,result:b}}).catch(b=>{let j=_(b),W=o.terminalEmitted?o.phase:"failed";return W==="failed"&&(o.error=j.message),Re(e.bus,e.persistence,o,W),{runId:o.runId,sessionId:o.sessionId,phase:o.phase,error:j}}).then(b=>l(o,b));return}let I=dn(R,o.start.prompt);o.running=I,I.result.then(k=>{let P=o.terminalEmitted?o.phase:k.interrupted?"interrupted":k.success?"completed":"failed";return Re(e.bus,e.persistence,o,P),{runId:o.runId,sessionId:o.sessionId,phase:o.phase,result:k}}).catch(k=>{let P=_(k),b=o.terminalEmitted?o.phase:"failed";return b==="failed"&&(o.error=P.message),Re(e.bus,e.persistence,o,b),{runId:o.runId,sessionId:o.sessionId,phase:o.phase,error:P}}).then(k=>l(o,k))},"startRecord"),u=s(o=>{let p=t.get(o);if(!p||p.length===0||n.has(o))return;let R=p.shift();if(p.length===0&&t.delete(o),!R)return;let I=e.runs.get(R);if(!I||I.phase!=="queued"){u(o);return}r(I)},"drainNext"),f=s(o=>{let p=t.get(o.sessionId)??[];p.push(o.runId),t.set(o.sessionId,p),e.bus.emit("run.queued",q(o),{sessionId:o.sessionId,runId:o.runId}),Ae(e.bus,e.persistence,o,q(o))},"enqueue");return{async start(o){e.ensureOpen();let p=oi(o,e.artifacts),R=await e.sessionManager.loadSession(o.sessionId);if(!R)throw new Error(`Session not found: ${o.sessionId}`);let I=e.persistence.loadSessionSettings(o.sessionId);Dt(R,I);let k=di(o.options??{},I,p.inputArtifacts),P=k.provider??e.defaultProvider;if(!P)throw new Error("runtime.runs.start requires input.options.provider or runtime defaultProvider");let b=k.modelOverride??k.model??e.defaultModel,j=_i(),W=new Date().toISOString(),N=s(()=>{},"resolveResult"),Q=new Promise(ne=>{N=ne}),Z=n.has(o.sessionId),ee={runId:j,sessionId:o.sessionId,phase:Z?"queued":"running",startedAt:W,...Z?{queuedAt:W}:{},provider:P,...b!==void 0?{model:b}:{},...o.permissionBroker!==void 0?{permissionBroker:o.permissionBroker}:{},...I.permissionMode!==void 0?{permissionMode:I.permissionMode}:{},...k.reasoningMode!==void 0?{reasoning:k.reasoningMode}:{},mode:o.mode??"coding",result:Q,start:{prompt:p.prompt,inputArtifacts:p.inputArtifacts,options:k,resolve:N},terminalEmitted:!1};return e.runs.set(j,ee),Z?f(ee):r(ee),{runId:j,sessionId:o.sessionId,get turnId(){return ee.turnId},result:Q}},async await(o){e.ensureOpen();let p=e.runs.get(o);if(p)return p.result;let R=e.persistence.loadRunStatus(o);if(R)return xt(R);throw new Error(`Runtime run not found: ${o}`)},async get(o){e.ensureOpen();let p=e.runs.get(o);if(p)return q(p);let R=e.persistence.loadRunStatus(o);if(R)return R;throw new Error(`Runtime run not found: ${o}`)},async list(o){return e.ensureOpen(),[...e.runs.values()].filter(p=>Ki(p,o)).map(q)},async abort(o){e.ensureOpen();let p=i(o);(p.phase==="queued"||Ce(p.phase))&&d(p,"runtime run aborted",!0)},async setModel(o,p){e.ensureOpen();let R=i(o);R.model=p,R.running?.setModel(p)},async setProvider(o,p){e.ensureOpen();let R=i(o);R.provider=p,R.running?.setProvider(p)},async setReasoning(o,p){e.ensureOpen();let R=i(o);R.reasoning=p,R.running?.setReasoning(p)},closeAll(o){for(let p of e.runs.values())(p.phase==="queued"||Ce(p.phase))&&d(p,o,!1);n.clear(),t.clear()}}}s(Xr,"createRuntimeRunService");function jr(){let e=un();return{async list(n){let t=e.list(),i=n?.runId?t.filter(a=>a.runId===n.runId):t;return n?.limit===void 0?i:i.slice(0,n.limit)},async get(n){return e.getWorkflowProcessSnapshot(n)},subscribe(n,t){return{close:e.subscribeWorkflowProcess(a=>{n.runId&&a.snapshot.runId!==n.runId||n.activeOnly===!0&&Xi(a.snapshot.status)||t(a)})}},async pause(n){return e.pause(n)},async resume(n){return e.resume(n)},async stop(n){return e.stop(n)}}}s(jr,"createRuntimeWorkflowService");function Lr(e,n){return{async read(){return e(),ae(F(n))},async patch(t){return e(),fi(t,"runtime.config.patch"),yi(n,pi(t)),ae(F(n))},async reload(){return e(),n!==void 0?(Et(n),{ok:!0,config:ae(F(n))}):{ok:!0,config:ae(Rn())}}}}s(Lr,"createRuntimeConfigService");function $r(e,n){return{async providers(){return e(),je()},async models(t){return e(),Ei(je(),t)},async commands(t){return e(),ht(t)},async resolveCommand(t){e();let i=t.name.trim().toLowerCase();return ht(t.projectRoot).find(a=>a.name.trim().toLowerCase()===i||(a.aliases??[]).some(c=>c.trim().toLowerCase()===i))??null},async skills(t){e();let i=await Ke(t?.projectRoot);return(t?.userInvocableOnly===!0?i.listUserInvocable():i.list()).map(Ci)},async describeSkill(t){e();let i=await Ke(t.projectRoot);return i.has(t.name)?Ai(await i.loadFull(t.name)):null},async customProviders(){return e(),gi(n)},async upsertCustomProvider(t){return e(),Si(n,t)},async deleteCustomProvider(t){return e(),hi(n,t)},async extensions(){e();let t=Se();if(!t)return{active:!1,extensions:[]};let i=t.getDiagnostics();return{active:!0,extensions:i.loadedExtensions,diagnostics:i}},async reloadExtensions(){e();let t=Se();return t?(await t.reloadExtensions({continueOnError:!0}),{ok:!0,active:!0,diagnostics:t.getDiagnostics()}):{ok:!0,active:!1}}}}s($r,"createRuntimeCatalogService");function Wr(e,n){return{async listServers(){return e(),en(n)},async getServer(t){return e(),Ii(n,t)},async validateServer(t,i){e();try{return Le(t,i),{ok:!0,config:structuredClone(i)}}catch(a){return{ok:!1,error:a instanceof Error?a.message:String(a)}}},async upsertServer(t,i){return e(),vi(n,t,i)},async deleteServer(t){return e(),ki(n,t)},async reloadServers(){e();let t=qe(en(n));try{return{ok:!0,servers:t.listServers()}}finally{await t.dispose()}},async listTools(t){e();let i=en(n),a=t?.server!==void 0?[t.server]:Object.keys(i),c=qe(i);try{let l=[];for(let d of a)l.push(await c.listTools(d,{forceRefresh:t?.forceRefresh===!0}));return l}finally{await c.dispose()}}}}s(Wr,"createRuntimeMcpService");function Ur(){let e=new Map;return{service:{async create(i){if(!ui(i.kind))throw new Error(`Unsupported runtime artifact kind: ${String(i.kind)}`);let a=D.resolve(i.path),c;try{c=await h.promises.stat(a)}catch(r){throw new Error(`Runtime artifact path is not readable: ${a}`,{cause:r})}if(!c.isFile())throw new Error(`Runtime artifact path must be a regular file: ${a}`);if(c.size>ct)throw new Error(`Runtime artifact exceeds the ${ct}-byte limit: ${a}`);let l=`art_${G().replace(/-/g,"").slice(0,12)}`,d={id:l,kind:i.kind,path:a,sizeBytes:c.size,...i.mediaType!==void 0?{mediaType:i.mediaType}:{},...i.mimeType!==void 0?{mimeType:i.mimeType}:{},...i.name!==void 0?{name:i.name}:{},...i.source!==void 0?{source:i.source}:{},...i.description!==void 0?{description:i.description}:{},createdAt:new Date().toISOString()};return e.set(l,d),d},async get(i){return e.get(i)},async delete(i){return e.delete(i)}},resolve:s(i=>{let a=e.get(i);if(!a)throw new Error(`Runtime artifact not found: ${i}`);return a},"resolve")}}s(Ur,"createRuntimeArtifactStore");function Br(e){let{events:n,model:t,options:i,provider:a,record:c,sessionManager:l}=e;return{...i,provider:a,...t!==void 0?{modelOverride:t}:{},session:{...i.session??{},id:c.sessionId,storage:l.storage},events:n}}s(Br,"buildRunOptions");function Jr(e){return{async snapshot(){return{runtimeId:e.identity.runtimeId,mode:e.identity.mode,profile:e.identity.profile,startedAt:e.identity.startedAt,sessions:(await e.sessionManager.listSessions({includeArchived:!0})).map(kt),runs:[...e.runs.values()].map(q),pendingPermissions:await e.permissions.service.listPending(),workflows:await e.workflows.list({})}}}}s(Jr,"createRuntimeStatusService");function Hr(e){return{latestContextBudget(n){return ft(e,"context.budget.snapshot",n)},latestToolExposure(n){return ft(e,"tool.exposure.planned",n)}}}s(Hr,"createRuntimeDiagnosticsService");async function ft(e,n,t){let i={type:n,limit:100,...t?.sessionId!==void 0?{sessionId:t.sessionId}:{},...t?.runId!==void 0?{runId:t.runId}:{}};return(await e.replay(i)).at(-1)?.payload??null}s(ft,"latestRuntimeDiagnosticPayload");function Ce(e){return e==="running"||e==="waiting_permission"||e==="waiting_user_input"}s(Ce,"isActiveRunPhase");function zr(e,n){let t=e.get(n.sessionId);if(!t)return;let i=t.filter(a=>a!==n.runId);i.length===0?e.delete(n.sessionId):e.set(n.sessionId,i)}s(zr,"removeQueuedRun");function Vr(e){let n=!1,t=[],i=new Set,a=s((u,f)=>f?!(f.sessionId!==void 0&&u.sessionId!==f.sessionId||f.runId!==void 0&&u.runId!==f.runId||f.type!==void 0&&!(Array.isArray(f.type)?f.type:[f.type]).includes(u.type)):!0,"matches"),c=s(u=>{t.push(u),t.length>Te&&t.splice(0,t.length-Te)},"remember"),l=s((u,f,o)=>{let p=e.nextEventSeq();return{id:`evt_${p}_${G().replace(/-/g,"").slice(0,8)}`,seq:p,time:new Date().toISOString(),sessionId:o.sessionId,runId:o.runId,...o.turnId!==void 0?{turnId:o.turnId}:{},type:u,payload:f}},"createEvent"),d=s(u=>{for(let f of[...i])if(a(u,f.filter))try{f.listener(u)}catch(o){ue({source:"runtime.events",level:"error",message:`Runtime event listener failed for ${u.type}`,detail:{eventId:u.id,error:_(o)}})}},"notify");return{service:{subscribe(u,f){if(n)throw new Error("KodaX runtime event bus is closed");let o={filter:u,listener:f};return i.add(o),{close(){i.delete(o)}}},async replay(u){let f=e.replay(u),o=new Map;for(let R of f)o.set(R.id,R);for(let R of t)o.set(R.id,R);let p=[...o.values()].filter(R=>a(R,u)&&(u?.sinceSeq===void 0||R.seq>u.sinceSeq)).sort((R,I)=>R.seq-I.seq||R.time.localeCompare(I.time));return u?.limit===void 0?p:p.slice(-u.limit)}},emit(u,f,o){let p=l(u,f,o);c(p);let R=[p];try{e.appendEvent(p)}catch(I){let k=l("runtime.warning",{message:_(I).message,sourceEventId:p.id},o);c(k),R.push(k)}for(let I of R)d(I);return p},close(){n=!0;try{e.close()}catch(u){ue({source:"runtime.persistence",level:"error",message:"Failed to flush runtime events while closing",detail:u})}i.clear()}}}s(Vr,"createRuntimeEventBus");function Yr(e){let n=e.homeDir?D.resolve(e.homeDir):e.sessionsDir?D.resolve(e.sessionsDir,".."):process.cwd(),t=D.join(n,".kodax","runtime"),i=D.join(t,"runs"),a=D.join(t,"session-settings"),c=D.join(t,"event-sequence"),l=new Map,d=0,r,u,f,o=!1,p=s(g=>D.join(i,encodeURIComponent(g)),"runDir"),R=s(g=>D.join(p(g),"events.jsonl"),"eventFile"),I=s(g=>D.join(p(g),"status.json"),"statusFile"),k=s(g=>D.join(a,`${encodeURIComponent(g)}.json`),"sessionSettingsFile"),P=[],b=new Set,j=s(()=>{let g=0;if(h.existsSync(c))try{let w=Number.parseInt(h.readFileSync(c,"utf-8").trim(),10);Number.isSafeInteger(w)&&w>0&&(g=w)}catch(w){ue({source:"runtime.persistence",level:"warn",message:"Failed to read runtime event sequence cursor; recovering from event logs",detail:w})}if(!h.existsSync(i))return g;for(let w of h.readdirSync(i,{withFileTypes:!0})){if(!w.isDirectory())continue;let S=D.join(i,w.name,"events.jsonl");if(!h.existsSync(S))continue;let E=h.statSync(S).size,T=Math.min(E,Tr),M=Buffer.allocUnsafe(T),U=h.openSync(S,"r");try{h.readSync(U,M,0,T,E-T)}finally{h.closeSync(U)}let H=M.toString("utf-8").split(/\r?\n/);T<E&&H.shift();for(let sn of H)if(sn.trim())try{let Ne=JSON.parse(sn);pt(Ne)&&Number.isSafeInteger(Ne.seq)&&(g=Math.max(g,Ne.seq))}catch{}}return g},"findMaxPersistedEventSeq"),W=s(()=>{f===void 0&&(f=j()+1);let g=f;return f+=1,o=!0,g},"allocateEventSeq"),N=s((g,w,S)=>{if(b.has(g))return;b.add(g);let E=W(),T={id:`evt_persist_warn_${E}_${G().replace(/-/g,"").slice(0,8)}`,seq:E,time:new Date().toISOString(),sessionId:S.sessionId??"runtime",runId:S.runId??S.sessionId??"runtime",type:"runtime.warning",payload:{source:"runtime.persistence",message:w,...S.file!==void 0?{file:S.file}:{}}};P.push(T),P.length>Te&&P.splice(0,P.length-Te)},"pushPersistenceWarning"),Q=s((g,w)=>[...g,...P].filter(S=>Qr(S,w)).sort((S,E)=>S.seq-E.seq||S.time.localeCompare(E.time)),"withPersistenceWarnings"),Z=s((g,w)=>{if(!h.existsSync(g))return[];let S=h.readFileSync(g,"utf-8"),E=[],T=S.split(/\r?\n/);for(let M=0;M<T.length;M+=1){let U=T[M]??"";if(U.trim())try{let H=JSON.parse(U);pt(H)?E.push(H):N(`${g}:${M+1}:shape`,`Skipped malformed runtime event record at ${D.basename(g)}:${M+1}`,{runId:w,file:g})}catch(H){N(`${g}:${M+1}:parse`,`Skipped malformed runtime event record at ${D.basename(g)}:${M+1}: ${_(H).message}`,{runId:w,file:g})}}return E},"readEventsFromFile"),ee=s(g=>{if(h.statSync(g).size<=vt)return;let w=h.readFileSync(g,"utf-8").trimEnd().split(/\r?\n/),S=[],E=0;for(let T=w.length-1;T>=0;T-=1){let M=w[T]??"";if(!M)continue;let U=Buffer.byteLength(M,"utf-8")+1;if(S.length>0&&E+U>xr)break;S.push(M),E+=U}S.reverse(),h.writeFileSync(g,S.length>0?`${S.join(`
5
+ `)}
6
+ `:"","utf-8")},"trimEventFile"),ne=s(()=>{r!==void 0&&(clearTimeout(r),r=void 0);for(let[g,w]of l){let S=w.join(""),E=Buffer.byteLength(S,"utf-8"),T=p(g),M=R(g);h.mkdirSync(T,{recursive:!0}),h.appendFileSync(M,S,"utf-8"),l.delete(g),d=Math.max(0,d-E),ee(M)}o&&f!==void 0&&(h.mkdirSync(t,{recursive:!0}),h.writeFileSync(c,String(f-1),"utf-8"),o=!1),u=void 0},"flushBufferedEvents"),on=s(()=>{r===void 0&&(r=setTimeout(()=>{r=void 0;try{ne()}catch(g){u=_(g),ue({source:"runtime.persistence",level:"error",message:"Failed to flush buffered runtime events",detail:g})}},br),r.unref?.())},"scheduleEventFlush");return{runtimeDir:t,appendEvent(g){let w=`${JSON.stringify(g)}
7
+ `,S=l.get(g.runId)??[];S.push(w),l.set(g.runId,S),d+=Buffer.byteLength(w,"utf-8");let E=u;u=void 0;try{E!==void 0||!Mr.has(g.type)||d>=Er?ne():on()}catch(T){throw on(),T}if(E!==void 0)throw E},close(){ne()},nextEventSeq(){return W()},replay(g){try{ne()}catch(S){N(`${t}:event-flush`,`Failed to flush buffered runtime events: ${_(S).message}`,{runId:g?.runId})}if(g?.runId)return Q(Z(R(g.runId),g.runId),g);if(!h.existsSync(i))return Q([],g);let w=[];for(let S of h.readdirSync(i,{withFileTypes:!0}))S.isDirectory()&&w.push(...Z(D.join(i,S.name,"events.jsonl"),S.name));return Q(w,g)},saveRunStatus(g){let w=p(g.runId);h.mkdirSync(w,{recursive:!0}),h.writeFileSync(I(g.runId),JSON.stringify(g,null,2),"utf-8")},loadRunStatus(g){let w=I(g);if(h.existsSync(w))try{let S=Rt(JSON.parse(h.readFileSync(w,"utf-8")));if(S)return S;N(`${w}:shape`,`Skipped malformed runtime status record at ${D.basename(w)}`,{runId:g,file:w});return}catch(S){N(`${w}:parse`,`Skipped malformed runtime status record at ${D.basename(w)}: ${_(S).message}`,{runId:g,file:w});return}},loadRunStatuses(){if(!h.existsSync(i))return[];let g=[];for(let w of h.readdirSync(i,{withFileTypes:!0})){if(!w.isDirectory())continue;let S=D.join(i,w.name,"status.json");if(h.existsSync(S))try{let E=JSON.parse(h.readFileSync(S,"utf-8")),T=Rt(E);T?g.push(T):N(`${S}:shape`,`Skipped malformed runtime status record at ${D.basename(S)}`,{runId:w.name,file:S})}catch(E){N(`${S}:parse`,`Skipped malformed runtime status record at ${D.basename(S)}: ${_(E).message}`,{runId:w.name,file:S})}}return g},loadSessionSettings(g){let w=k(g);if(!h.existsSync(w))return{};try{let S=JSON.parse(h.readFileSync(w,"utf-8"));return li(S)}catch(S){return N(`${w}:parse`,`Skipped malformed runtime session settings at ${D.basename(w)}: ${_(S).message}`,{sessionId:g,file:w}),{}}},saveSessionSettings(g,w){h.mkdirSync(a,{recursive:!0});let S=Oi(w),E=k(g);if(Object.keys(S).length===0){h.existsSync(E)&&h.unlinkSync(E);return}h.writeFileSync(E,JSON.stringify(S,null,2),"utf-8")}}}s(Yr,"createRuntimePersistence");function Gr(e){if(e.sessionsDir!==void 0)return D.resolve(e.sessionsDir);if(e.homeDir!==void 0)return D.join(D.resolve(e.homeDir),".kodax","sessions")}s(Gr,"resolveRuntimeSessionsDir");function Qr(e,n){return n?!(n.sessionId!==void 0&&e.sessionId!==n.sessionId||n.runId!==void 0&&e.runId!==n.runId||n.type!==void 0&&!(Array.isArray(n.type)?n.type:[n.type]).includes(e.type)||n.sinceSeq!==void 0&&e.seq<=n.sinceSeq):!0}s(Qr,"eventMatchesReplayFilter");function pt(e){return X(e)?typeof e.id=="string"&&typeof e.seq=="number"&&typeof e.time=="string"&&typeof e.sessionId=="string"&&typeof e.runId=="string"&&typeof e.type=="string"&&"payload"in e:!1}s(pt,"isRuntimeEvent");function Rt(e){if(X(e)&&!(typeof e.runId!="string"||typeof e.sessionId!="string"||!Zr(e.phase)||typeof e.startedAt!="string"||typeof e.provider!="string"))return{runId:e.runId,sessionId:e.sessionId,...typeof e.turnId=="string"?{turnId:e.turnId}:{},phase:e.phase,startedAt:e.startedAt,...typeof e.endedAt=="string"?{endedAt:e.endedAt}:{},provider:e.provider,...typeof e.model=="string"?{model:e.model}:{},...typeof e.reasoning=="string"?{reasoning:e.reasoning}:{},...typeof e.error=="string"?{error:e.error}:{}}}s(Rt,"parseRuntimeRunStatus");function Zr(e){return e==="queued"||e==="running"||e==="waiting_permission"||e==="waiting_user_input"||e==="completed"||e==="failed"||e==="cancelled"||e==="interrupted"}s(Zr,"isRuntimeRunPhase");function ei(e){return{runId:e.runId,sessionId:e.sessionId,...e.turnId!==void 0?{turnId:e.turnId}:{},phase:e.phase,startedAt:e.startedAt,...e.endedAt!==void 0?{endedAt:e.endedAt}:{},provider:e.provider,...e.model!==void 0?{model:e.model}:{},...e.reasoning!==void 0?{reasoning:e.reasoning}:{},...e.error!==void 0?{error:e.error}:{},mode:"coding",result:Promise.resolve(xt(e)),terminalEmitted:rn(e.phase)}}s(ei,"recordFromPersistedStatus");function ni(e,n,t){if(rn(e.phase))return e;let i=e.phase==="queued"?"daemon_restarted":"daemon_crashed",a={...e,phase:"interrupted",endedAt:new Date().toISOString(),error:i};return n.emit("run.interrupted",a,{sessionId:a.sessionId,runId:a.runId,...a.turnId!==void 0?{turnId:a.turnId}:{}}),Ae(n,t,void 0,a),a}s(ni,"interruptPersistedNonTerminalRun");function yt(e,n){if(e===void 0)return n;let t=Date.parse(e);return Number.isFinite(t)?Math.max(1,t-Date.now()):1}s(yt,"resolvePermissionTimeoutMs");function ti(e,n){let t=new Map,i=s((r,u=n)=>{let f=s(()=>{},"resolveResponse"),o=new Promise(R=>{f=R});return{request:d(r,[f],yt(r.expiresAt,u)),response:o}},"trackAndWait"),a=s((r,u,f)=>{let o=t.get(r);if(!o||f!==void 0&&o.request.runId!==f)return!1;t.delete(r),o.timer&&clearTimeout(o.timer);for(let p of o.waiters)p(u);return e.emit("permission.resolved",{requestId:r,decision:u},{sessionId:o.request.sessionId,runId:o.request.runId,...o.request.turnId!==void 0?{turnId:o.request.turnId}:{}}),!0},"resolvePending"),c=s((r,u)=>{let f=[...t.values()].filter(o=>r(o.request)).map(o=>o.request.id);for(let o of f)a(o,u)},"resolveMatching");return{service:{request(r){return i({sessionId:r.sessionId,runId:r.runId,...r.turnId!==void 0?{turnId:r.turnId}:{},...r.toolCallId!==void 0?{toolCallId:r.toolCallId}:{},toolName:r.toolName,...r.reason!==void 0?{reason:r.reason}:{},...r.risk!==void 0?{risk:r.risk}:{},...r.inputPreview!==void 0?{inputPreview:r.inputPreview}:{},...r.expiresAt!==void 0?{expiresAt:r.expiresAt}:{}},r.timeoutMs??n).response},async listPending(r){return[...t.values()].map(u=>u.request).filter(u=>ji(u,r))},async respond(r,u,f){return a(r,u,f?.runId)}},track(r){return d(r,[],yt(r.expiresAt,n))},trackAndWait(r,u=n){return i(r,u)},resolve(r,u){a(r,u)},rejectForRun(r,u){c(f=>f.runId===r,{type:"reject",reason:u})},rejectAll(r){c(()=>!0,{type:"reject",reason:r})}};function d(r,u,f=n){let o={...r,id:`perm_${G().replace(/-/g,"").slice(0,12)}`,createdAt:new Date().toISOString()},p=f>0?setTimeout(()=>{let R=t.get(o.id);if(!R)return;t.delete(o.id);let I={type:"reject",reason:"permission request timed out"};for(let k of R.waiters)k(I);e.emit("permission.resolved",{requestId:o.id,decision:I},{sessionId:o.sessionId,runId:o.runId,...o.turnId!==void 0?{turnId:o.turnId}:{}})},f):void 0;return p?.unref?.(),t.set(o.id,{request:o,waiters:u,...p!==void 0?{timer:p}:{}}),e.emit("permission.requested",o,{sessionId:o.sessionId,runId:o.runId,...o.turnId!==void 0?{turnId:o.turnId}:{}}),o}}s(ti,"createRuntimePermissionRegistry");function ri(e){let{bus:n,original:t,permissions:i,record:a}=e,c=s(r=>({sessionId:r?.sessionId??a.sessionId,runId:a.runId,turnId:r?.turnId??a.turnId}),"scopeFromMeta"),l=s((r,u,f)=>{n.emit(r,u,c(f))},"emit"),d=s(async(r,u,f,o)=>{let p=`input_${G().replace(/-/g,"").slice(0,12)}`,R=a.phase;a.phase==="running"&&(a.phase="waiting_user_input"),l("user_input.requested",{requestId:p,kind:r,options:u},f);try{let I=await o();return l("user_input.resolved",{requestId:p,kind:r,status:I===void 0?"dismissed":"answered"},f),I}catch(I){throw l("user_input.resolved",{requestId:p,kind:r,status:"failed",error:_(I).message},f),I}finally{a.phase==="waiting_user_input"&&(a.phase=R)}},"runWithUserInputPhase");return{...t,onTextDelta(r,u){l("assistant.delta",{text:r,meta:u},u),t?.onTextDelta?.(r,u)},onThinkingDelta(r,u){l("thinking.delta",{text:r,meta:u},u),t?.onThinkingDelta?.(r,u)},onThinkingEnd(r,u){l("thinking.finished",{thinking:r,meta:u},u),t?.onThinkingEnd?.(r,u)},onToolUseStart(r,u){l("tool.started",{tool:r,meta:u},u),t?.onToolUseStart?.(r,u)},onToolProgress(r,u){l("tool.progress",{update:r,meta:u},u),t?.onToolProgress?.(r,u)},onToolInputDelta(r,u,f){l("tool.progress",{toolName:r,partialJson:u,meta:f},f),t?.onToolInputDelta?.(r,u,f)},onToolResult(r,u){l("tool.finished",{result:r,meta:u},u),t?.onToolResult?.(r,u)},onStreamEnd(r){l("run.progress",{kind:"stream_end",meta:r},r),t?.onStreamEnd?.(r)},onChildActivityEnd(r){l("child_activity.finished",{meta:r},r),t?.onChildActivityEnd?.(r)},onSessionStart(r){a.provider=r.provider,n.emit("session.loaded",r,{sessionId:r.sessionId,runId:a.runId,turnId:r.turnId??a.turnId}),t?.onSessionStart?.(r)},onTurnStarted(r){a.turnId=r.turnId,n.emit("turn.started",r,{sessionId:r.sessionId,runId:a.runId,turnId:r.turnId}),t?.onTurnStarted?.(r)},onTurnCompleted(r){n.emit("turn.completed",r,{sessionId:r.sessionId,runId:a.runId,turnId:r.turnId}),t?.onTurnCompleted?.(r)},onTurnFailed(r){n.emit("turn.failed",r,{sessionId:r.sessionId,runId:a.runId,turnId:r.turnId}),t?.onTurnFailed?.(r)},onIterationStart(r,u,f){l("run.progress",{kind:"iteration_start",iter:r,maxIter:u,meta:f},f),t?.onIterationStart?.(r,u,f)},onIterationEnd(r){l("run.progress",{kind:"iteration_end",info:r},r),t?.onIterationEnd?.(r)},onCompactStart(r){l("context.compaction.started",{meta:r},r),t?.onCompactStart?.(r)},onCompact(r,u){l("context.compaction.finished",{estimatedTokens:r,meta:u},u),t?.onCompact?.(r,u)},onCompactStats(r){l("context.compaction.stats",r,r),t?.onCompactStats?.(r)},onCompactedMessages(r,u,f){l("context.compaction.messages",{messageCount:r.length,update:u,meta:f},f),t?.onCompactedMessages?.(r,u,f)},onCompactEnd(r){l("context.compaction.ended",{meta:r},r),t?.onCompactEnd?.(r)},onMidTurnUserMessages(r,u){l("run.progress",{kind:"mid_turn_user_messages",contents:r,meta:u},u),t?.onMidTurnUserMessages?.(r,u)},onRetry(r,u,f,o){l("provider.retry",{reason:r,attempt:u,maxAttempts:f,meta:o},o),t?.onRetry?.(r,u,f,o)},onProviderRateLimit(r,u,f,o){l("provider.retry",{reason:"rate_limit",attempt:r,maxAttempts:u,delayMs:f,meta:o},o),t?.onProviderRateLimit?.(r,u,f,o)},onRetryAfter(r,u){l("provider.retry",{retryAfter:r,meta:u},u),t?.onRetryAfter?.(r,u)},onReasoningEffortRejected(r){l("provider.recovery",{kind:"reasoning_effort_rejected",event:r},r),t?.onReasoningEffortRejected?.(r)},onRepoIntelligenceTrace(r){l("repo_intelligence.trace",r,r),t?.onRepoIntelligenceTrace?.(r)},onContextBudgetSnapshot(r){l("context.budget.snapshot",r,r),t?.onContextBudgetSnapshot?.(r)},onToolExposurePlanned(r){l("tool.exposure.planned",r,r),t?.onToolExposurePlanned?.(r)},onContextCompactionSkipped(r){l("context.compaction.skipped",r,r),t?.onContextCompactionSkipped?.(r)},onSidecarMessage(r){l("sidecar.message",r,r),t?.onSidecarMessage?.(r)},onTodoUpdate(r,u){l("todo.updated",{items:r,meta:u},u),t?.onTodoUpdate?.(r,u)},onTodoDriftWarning(r){l("todo.warning",r,r),t?.onTodoDriftWarning?.(r)},onProviderRecovery(r,u){l("provider.recovery",{event:r,meta:u},u),t?.onProviderRecovery?.(r,u)},onEffectiveConfig(r){l("config.effective",r,r),t?.onEffectiveConfig?.(r)},onWorkflowProcessEvent(r){let u=qi(r);n.emit(u,r,{sessionId:r.snapshot.hostMetadata?.sessionId??a.sessionId,runId:a.runId,turnId:a.turnId}),t?.onWorkflowProcessEvent?.(r)},onComplete(r){l("run.progress",{kind:"complete",meta:r},r),t?.onComplete?.(r)},onError(r,u){l("runtime.warning",{source:"coding",severity:"error",message:r.message},u),t?.onError?.(r,u)},onManagedTaskStatus(r){l("run.progress",{kind:"managed_task_status",status:r},r),t?.onManagedTaskStatus?.(r)},beforeToolExecute:s(async(r,u,f)=>{let o=t?.beforeToolExecute===void 0?$i(a,r,u):void 0;if(o!==void 0)return o;let p=a.phase;a.phase==="running"&&(a.phase="waiting_permission");let R=i.trackAndWait({sessionId:f?.sessionId??a.sessionId,runId:a.runId,...f?.turnId??a.turnId?{turnId:f?.turnId??a.turnId}:{},...f?.toolId?{toolCallId:f.toolId}:{},toolName:r,inputPreview:Wi(u)});try{if(!t?.beforeToolExecute){let b=await R.response;return wt(b)}let I=Promise.resolve(t.beforeToolExecute(r,u,f)).then(b=>({source:"hook",decision:b})),k=R.response.then(b=>({source:"runtime",decision:wt(b)})),P=await Promise.race([I,k]);return P.source==="hook"&&i.resolve(R.request.id,Li(P.decision)),P.decision}catch(I){throw i.resolve(R.request.id,{type:"reject",reason:_(I).message}),I}finally{a.phase==="waiting_permission"&&(a.phase=p==="queued"?"running":p)}},"beforeToolExecute"),...t?.askUser?{askUser:s((r,u)=>d("askUser",r,u,()=>t.askUser(r,u)),"askUser")}:{},...t?.askUserMulti?{askUserMulti:s((r,u)=>d("askUserMulti",r,u,()=>t.askUserMulti(r,u)),"askUserMulti")}:{},...t?.askUserInput?{askUserInput:s((r,u)=>d("askUserInput",r,u,()=>t.askUserInput(r,u)),"askUserInput")}:{}}}s(ri,"wrapKodaXEvents");function ii(e,n,t){let i={...t!==void 0?{canonicalRepoRoot:t}:{},...n!==void 0?{workspaceRoot:n,executionCwd:n}:{},...n!==void 0?{workspaceKind:"managed"}:{},...e.surface!==void 0?{surface:e.surface}:{},...e.profileId!==void 0?{profileId:e.profileId}:{}};return Object.keys(i).length>0?i:void 0}s(ii,"buildSessionRuntimeInfo");function kt(e){return{id:e.id,title:e.title,msgCount:e.msgCount,...e.runtimeInfo?.gitRoot?{gitRoot:e.runtimeInfo.gitRoot}:{},...e.runtimeInfo?.workspaceRoot?{workspaceRoot:e.runtimeInfo.workspaceRoot}:{},...e.runtimeInfo?.surface?{surface:e.runtimeInfo.surface}:{},...e.runtimeInfo?.profileId?{profileId:e.runtimeInfo.profileId}:{},...e.createdAt!==void 0?{createdAt:e.createdAt}:{},...e.tag!==void 0?{tag:e.tag}:{},...e.projectKey!==void 0?{projectKey:e.projectKey}:{},...e.archived===!0?{archived:!0}:{}}}s(kt,"toRuntimeSessionSummary");function oi(e,n){let t=e.input===void 0?[]:Array.isArray(e.input)?[...e.input]:[e.input],i=t.filter(c=>c.type==="text");if(e.prompt!==void 0&&i.length>0)throw new Error("runtime.runs.start accepts either prompt or text input, not both");if(i.length>1)throw new Error("runtime.runs.start accepts at most one text input item");let a=e.prompt??i[0]?.text;if(a===void 0)throw new Error("runtime.runs.start requires prompt or text input");return{prompt:a,inputArtifacts:t.flatMap(c=>si(c,n))}}s(oi,"normalizeRuntimeRunInput");function si(e,n){if(e.type==="text")return[];if(e.type==="artifact_ref")return ai(n.resolve(e.artifactId),e.description);if(e.type==="image")return[{kind:"image",path:e.path,...e.mediaType!==void 0?{mediaType:e.mediaType}:{},...e.source!==void 0?{source:e.source}:{},...e.description!==void 0?{description:e.description}:{}}];if(e.type==="file")return[{kind:"file",path:e.path,...e.mediaType!==void 0?{mediaType:e.mediaType}:{},...e.mimeType!==void 0?{mimeType:e.mimeType}:{},...e.name!==void 0?{name:e.name}:{},...e.source!==void 0?{source:e.source}:{},...e.description!==void 0?{description:e.description}:{}}];if(e.type==="video")return[{kind:"video",path:e.path,mediaType:e.mediaType,...e.name!==void 0?{name:e.name}:{},...e.source!==void 0?{source:e.source}:{},...e.description!==void 0?{description:e.description}:{}}];let t=e;throw new Error(`Unsupported runtime input type: ${String(t.type)}`)}s(si,"runtimeInputToArtifacts");function ai(e,n){let t=n??e.description;if(e.kind==="image")return[{kind:"image",path:e.path,...e.mediaType!==void 0?{mediaType:e.mediaType}:{},...e.source!==void 0?{source:e.source}:{},...t!==void 0?{description:t}:{}}];if(e.kind==="file")return[{kind:"file",path:e.path,...e.mediaType!==void 0?{mediaType:e.mediaType}:{},...e.mimeType!==void 0?{mimeType:e.mimeType}:{},...e.name!==void 0?{name:e.name}:{},...e.source!==void 0?{source:e.source}:{},...t!==void 0?{description:t}:{}}];if(e.kind==="video")return[{kind:"video",path:e.path,mediaType:e.mediaType??"video/mp4",...e.name!==void 0?{name:e.name}:{},...e.source!==void 0?{source:e.source}:{},...t!==void 0?{description:t}:{}}];throw new Error(`Unsupported runtime artifact kind: ${String(e.kind)}`)}s(ai,"runtimeArtifactToInputArtifacts");function ui(e){return typeof e=="string"&&Ar.has(e)}s(ui,"isRuntimeArtifactKind");function di(e,n,t){let i={...n.executionCwd!==void 0?{executionCwd:n.executionCwd}:{}},a=e.context,c=[...a?.inputArtifacts??[],...t],l={...i,...a??{},...c.length>0?{inputArtifacts:c}:{}},d=e.provider??n.provider,r=e.model??n.model,u=e.effort??n.effort,f=e.thinking??n.thinking,o=e.reasoningMode??n.reasoningMode;return{...e,...d!==void 0?{provider:d}:{},...r!==void 0?{model:r}:{},...u!==void 0?{effort:u}:{},...f!==void 0?{thinking:f}:{},...o!==void 0?{reasoningMode:o}:{},...Object.keys(l).length>0?{context:l}:{}}}s(di,"buildEffectiveRuntimeOptions");async function gt(e,n){let t=await e.loadSession(n);if(!t)throw new Error(`Session not found: ${n}`);return t}s(gt,"loadRequiredSession");function Dt(e,n){if(n.executionCwd===void 0)return;let t=e.runtimeInfo?.workspaceRoot??e.gitRoot;t&&mi(n.executionCwd,t,"executionCwd")}s(Dt,"assertSessionSettingsAllowed");function mi(e,n,t){let i=St(D.resolve(e)),a=St(D.resolve(n)),c=D.relative(a,i);if(c!==""&&(c.startsWith("..")||D.isAbsolute(c)))throw new Error(`${t} must stay within the session workspace root`)}s(mi,"assertPathWithinRoot");function St(e){return process.platform==="win32"?e.toLowerCase():e}s(St,"normalizePathForContainment");function ci(e,n){let t={...e};return xe(t,"provider",n.provider),xe(t,"model",n.model),xe(t,"permissionMode",n.permissionMode),xe(t,"executionCwd",n.executionCwd,!0),Ze(t,"effort",n.effort),Ze(t,"thinking",n.thinking),Ze(t,"reasoningMode",n.reasoningMode),t}s(ci,"applySessionSettingsPatch");function xe(e,n,t,i=!1){if(t!==void 0){if(t===null){Pt(e,n);return}if(i&&!D.isAbsolute(t))throw new Error(`${String(n)} must be an absolute path`);K(e,n,t)}}s(xe,"applyNullableStringPatch");function Ze(e,n,t){if(t!==void 0){if(t===null){Pt(e,n);return}K(e,n,t)}}s(Ze,"applyNullablePatch");function K(e,n,t){e[n]=t}s(K,"setMutableSetting");function Pt(e,n){delete e[n]}s(Pt,"deleteMutableSetting");function li(e){if(!X(e))return{};let n={};return se(n,"provider",e.provider),se(n,"model",e.model),se(n,"permissionMode",e.permissionMode),se(n,"executionCwd",e.executionCwd),se(n,"effort",e.effort),typeof e.thinking=="boolean"&&K(n,"thinking",e.thinking),se(n,"reasoningMode",e.reasoningMode),n}s(li,"parseRuntimeSessionSettings");function se(e,n,t){typeof t=="string"&&t.length>0&&K(e,n,t)}s(se,"setStringIfPresent");function X(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}s(X,"isRecord");function fi(e,n){if(!X(e))throw new Error(`${n} requires a plain object`)}s(fi,"assertPlainObject");function pi(e){let n=new Set(Dr);for(let t of Object.keys(e))if(!n.has(t))throw new Error(`runtime.config.patch does not support config key: ${t}`);return e}s(pi,"sanitizeRuntimeConfigPatch");function Ri(e){if(e.homeDir!==void 0)return D.join(D.resolve(e.homeDir),".kodax","config.json")}s(Ri,"resolveRuntimeConfigFile");function F(e){if(e===void 0)return pn();if(!h.existsSync(e))return{};try{let n=JSON.parse(h.readFileSync(e,"utf8"));return X(n)?n:{}}catch{return{}}}s(F,"readRuntimeConfig");function yi(e,n){if(e===void 0){yn(n);return}let i={...F(e),...n};for(let a of Object.keys(n))n[a]===void 0&&delete i[a];ye(e,i)}s(yi,"patchRuntimeConfig");function ye(e,n){h.mkdirSync(D.dirname(e),{recursive:!0}),h.writeFileSync(e,`${JSON.stringify(n,null,2)}
8
+ `,"utf8")}s(ye,"writeRuntimeConfig");function gi(e){return e===void 0?vn():wi(Oe(F(e)))}s(gi,"listRuntimeCustomProviders");function Si(e,n){if(e===void 0)return kn(n);an(n);let t=F(e),i=Oe(t),a=Pi(i,n,c=>c.name===n.name);return ye(e,{...t,customProviders:a}),ge(a),structuredClone(n)}s(Si,"upsertRuntimeCustomProvider");function hi(e,n){if(e===void 0)return Dn(n);if(typeof n!="string"||n.length===0)return!1;let t=F(e),i=Oe(t),a=i.filter(c=>c.name!==n);return a.length===i.length?!1:(ye(e,{...t,customProviders:a}),ge(a),!0)}s(hi,"removeRuntimeCustomProvider");function Et(e){e!==void 0&&ge(Oe(F(e)))}s(Et,"registerRuntimeConfiguredCustomProviders");function Oe(e){return Array.isArray(e.customProviders)?structuredClone(e.customProviders):[]}s(Oe,"extractRuntimeCustomProviders");function wi(e){return structuredClone(e)}s(wi,"cloneCustomProviders");function en(e){return e===void 0?Pn():Di(_e(F(e)))}s(en,"listRuntimeMcpServers");function Ii(e,n){if(e===void 0)return En(n);let t=_e(F(e))[n];return t===void 0?void 0:structuredClone(t)}s(Ii,"getRuntimeMcpServer");function vi(e,n,t){if(e===void 0)return bn(n,t);Le(n,t);let i=F(e),a={..._e(i),[n]:structuredClone(t)};return ye(e,{...i,mcpServers:a}),structuredClone(t)}s(vi,"upsertRuntimeMcpServer");function ki(e,n){if(e===void 0)return xn(n);let t=F(e),i=_e(t);if(!(n in i))return!1;let a={...i};return delete a[n],ye(e,{...t,mcpServers:a}),!0}s(ki,"removeRuntimeMcpServer");function _e(e){return X(e.mcpServers)?structuredClone(e.mcpServers):{}}s(_e,"extractRuntimeMcpServers");function Di(e){return structuredClone(e)}s(Di,"cloneMcpServers");function Pi(e,n,t){let i=e.findIndex(t);return i<0?[...e,structuredClone(n)]:e.map((a,c)=>c===i?structuredClone(n):structuredClone(a))}s(Pi,"upsertConfigEntry");function Ei(e,n){let t=Array.isArray(e)?e:[];if(n?.provider!==void 0){let i=t.find(a=>X(a)&&a.name===n.provider);return X(i)?{provider:n.provider,models:Array.isArray(i.models)?i.models:[]}:{provider:n.provider,models:[]}}return t.flatMap(i=>!X(i)||typeof i.name!="string"?[]:[{provider:i.name,models:Array.isArray(i.models)?i.models:[]}])}s(Ei,"listRuntimeModels");function ht(e){let n=bi(e).map(xi),t=Se()?.listCommands().filter(i=>i.metadata?.userInvocable!==!1).map(Ti)??[];return[...n,...t].sort((i,a)=>i.name.localeCompare(a.name))}s(ht,"listRuntimeCommands");function bi(e){let n=Mn;return typeof n.listRegisteredCommands=="function"?n.listRegisteredCommands(e):In().getAll()}s(bi,"listReplCommands");function xi(e){return{name:e.name,...e.aliases!==void 0?{aliases:e.aliases}:{},description:e.description,source:e.source,...e.usage!==void 0?{usage:e.usage}:{},...e.argumentHint!==void 0?{argumentHint:e.argumentHint}:{},...e.location!==void 0?{location:e.location}:{},...e.path!==void 0?{path:e.path}:{},...e.userInvocable!==void 0?{userInvocable:e.userInvocable}:{},...e.disableModelInvocation!==void 0?{disableModelInvocation:e.disableModelInvocation}:{},...e.allowedTools!==void 0?{allowedTools:e.allowedTools}:{},...e.context!==void 0?{context:e.context}:{},...e.agent!==void 0?{agent:e.agent}:{},...e.model!==void 0?{model:e.model}:{}}}s(xi,"replCommandToRuntimeCommandInfo");function Ti(e){return{name:e.name,...e.aliases!==void 0?{aliases:e.aliases}:{},description:e.description,source:"extension",...e.usage!==void 0?{usage:e.usage}:{}}}s(Ti,"extensionCommandToRuntimeCommandInfo");function ae(e){return Array.isArray(e)?e.map(n=>ae(n)):X(e)?Object.fromEntries(Object.entries(e).map(([n,t])=>[n,Mi(n)?"[redacted]":ae(t)])):e}s(ae,"redactRuntimeConfig");function Mi(e){let n=e.toLowerCase();return n.includes("apikey")||n.includes("api_key")||n==="key"||n.endsWith("key")||n.includes("token")||n.includes("secret")||n.includes("password")}s(Mi,"isSensitiveConfigKey");function Ci(e){return{name:e.name,description:e.description,userInvocable:e.userInvocable,...e.argumentHint!==void 0?{argumentHint:e.argumentHint}:{},path:e.path,source:e.source,disableModelInvocation:e.disableModelInvocation}}s(Ci,"toRuntimeSkillSummary");function Ai(e){return{name:e.name,description:e.description,userInvocable:e.userInvocable??!0,...e.argumentHint!==void 0?{argumentHint:e.argumentHint}:{},path:e.path,source:e.source,disableModelInvocation:e.disableModelInvocation??!1,content:e.content,skillFilePath:e.skillFilePath,...e.scripts!==void 0?{scripts:e.scripts.map(pe)}:{},...e.references!==void 0?{references:e.references.map(pe)}:{},...e.assets!==void 0?{assets:e.assets.map(pe)}:{},...e.templates!==void 0?{templates:e.templates.map(pe)}:{},...e.resources!==void 0?{resources:e.resources.map(pe)}:{}}}s(Ai,"toRuntimeSkillDescription");function pe(e){return{name:e.name,path:e.path,relativePath:e.relativePath}}s(pe,"toRuntimeSkillFileSummary");function Fe(e){if(!X(e))throw new Error("Invalid runtime daemon response: expected object");return e}s(Fe,"requireRuntimeRecord");function bt(e){let n=Fe(e);if(typeof n.runtimeId!="string"||typeof n.mode!="string"||typeof n.profile!="string"||typeof n.startedAt!="string"||typeof n.version!="string")throw new Error("Invalid runtime daemon response: missing identity fields");return{runtimeId:n.runtimeId,mode:n.mode==="daemon"?"daemon":"embedded",profile:n.profile,startedAt:n.startedAt,version:n.version,...n.isolation==="inline"||n.isolation==="worker"||n.isolation==="process"?{isolation:n.isolation}:{},...typeof n.workerThreadId=="number"?{workerThreadId:n.workerThreadId}:{}}}s(bt,"parseRuntimeIdentity");function Oi(e){let n={};return e.provider!==void 0&&K(n,"provider",e.provider),e.model!==void 0&&K(n,"model",e.model),e.effort!==void 0&&K(n,"effort",e.effort),e.thinking!==void 0&&K(n,"thinking",e.thinking),e.reasoningMode!==void 0&&K(n,"reasoningMode",e.reasoningMode),e.permissionMode!==void 0&&K(n,"permissionMode",e.permissionMode),e.executionCwd!==void 0&&K(n,"executionCwd",e.executionCwd),n}s(Oi,"serializeSessionSettings");function _i(){return`run_${Date.now().toString(36)}_${G().replace(/-/g,"").slice(0,8)}`}s(_i,"createRunId");function q(e){return{runId:e.runId,sessionId:e.sessionId,...e.turnId!==void 0?{turnId:e.turnId}:{},phase:e.phase,startedAt:e.startedAt,...e.endedAt!==void 0?{endedAt:e.endedAt}:{},provider:e.provider,...e.model!==void 0?{model:e.model}:{},...e.reasoning!==void 0?{reasoning:e.reasoning}:{},...e.error!==void 0?{error:e.error}:{}}}s(q,"statusFromRecord");function xt(e){return{runId:e.runId,sessionId:e.sessionId,phase:e.phase,...e.error!==void 0?{error:new Error(e.error)}:{}}}s(xt,"resultFromStatus");function Fi(e){return e.length<=Me?e:[...e].sort(Tt).slice(-Me)}s(Fi,"recentRunStatuses");function Ni(e){if(e.size<=Me)return;let n=[...e.values()].filter(t=>rn(t.phase)).sort((t,i)=>Tt(q(t),q(i)));for(let t of n){if(e.size<=Me)return;e.delete(t.runId)}}s(Ni,"pruneTerminalRuns");function Tt(e,n){let t=e.endedAt??e.startedAt,i=n.endedAt??n.startedAt,a=t.localeCompare(i);return a!==0?a:e.runId.localeCompare(n.runId)}s(Tt,"compareRunStatusRecency");function Ki(e,n){return n?!(n.sessionId!==void 0&&e.sessionId!==n.sessionId||n.phase!==void 0&&!(Array.isArray(n.phase)?n.phase:[n.phase]).includes(e.phase)):!0}s(Ki,"runMatchesFilter");function Re(e,n,t,i){if(t.terminalEmitted)return;t.phase=i,t.endedAt=new Date().toISOString(),t.terminalEmitted=!0;let a=i==="completed"?"run.completed":i==="cancelled"?"run.cancelled":i==="interrupted"?"run.interrupted":"run.failed";e.emit(a,q(t),{sessionId:t.sessionId,runId:t.runId,...t.turnId!==void 0?{turnId:t.turnId}:{}}),Ae(e,n,t,q(t))}s(Re,"markRunTerminal");function Ae(e,n,t,i){try{n.saveRunStatus(i)}catch(a){let c=t?.turnId??i.turnId;e.emit("runtime.warning",{message:`Failed to save runtime run status for ${i.runId}: ${_(a).message}`,runId:i.runId,phase:i.phase},{sessionId:i.sessionId,runId:i.runId,...c!==void 0?{turnId:c}:{}})}}s(Ae,"saveRunStatusSafely");function rn(e){return e==="completed"||e==="failed"||e==="cancelled"||e==="interrupted"}s(rn,"isTerminalRunPhase");function qi(e){return e.type==="workflow_started"?"workflow.started":e.type==="workflow_finished"?"workflow.finished":"workflow.updated"}s(qi,"workflowEventType");function Xi(e){return e==="completed"||e==="failed"||e==="cancelled"}s(Xi,"isFinalWorkflowStatus");function ji(e,n){return n?!(n.sessionId!==void 0&&e.sessionId!==n.sessionId||n.runId!==void 0&&e.runId!==n.runId||n.toolName!==void 0&&e.toolName!==n.toolName):!0}s(ji,"permissionMatchesFilter");function Li(e){return e===!0?{type:"allow_once"}:{type:"reject",reason:e===!1?"tool execution rejected":e}}s(Li,"decisionToPermissionDecision");function $i(e,n,t){if(Cr.has(n))return!0;if(e.permissionBroker==="client")return;let i=fn(e.permissionMode);if(i===void 0)return;let a=e.start?.options.context?.gitRoot??e.start?.options.context?.executionCwd;if(i==="plan"){let c=wn(n,t,a);return c===null?!0:`${c} Finish the plan before switching to a writable permission mode.`}if(n==="bash"){let c=typeof t.command=="string"?t.command:"";if(gn(c))return!0;if(a&&hn(c,a))return}if(a&&cn.has(n)){let c=typeof t.path=="string"?t.path:void 0;if(c&&Sn(D.resolve(a,c),a))return}return ln(i).has(n)?void 0:!0}s($i,"resolveRuntimePermissionPolicy");function wt(e){return e?e.type==="allow_once"||e.type==="allow_always"?!0:e.reason??!1:!1}s(wt,"decisionToToolDecision");function Wi(e){let n=JSON.stringify(e);return n.length<=500?n:`${n.slice(0,497)}...`}s(Wi,"previewInput");function _(e){return e instanceof Error?e:new Error(String(e))}s(_,"normalizeError");function nn(e,n){if(!n(e))return;let t=new Error(`Session has an active run and cannot be mutated: ${e}`);throw Object.defineProperty(t,"code",{configurable:!0,enumerable:!0,value:"conflict"}),t}s(nn,"assertSessionMutationAllowed");function Ui(e,n){if(!("ok"in n))throw new Error(`Session is running and cannot be deleted: ${e}`)}s(Ui,"assertDeleteSucceeded");function Bi(e){return structuredClone(e)}s(Bi,"cloneMessage");export{te as a,ze as b,Ie as c,st as d,at as e,ut as f,lr as g,fr as h,Uo as i,Fr as j};
@@ -1,5 +1,5 @@
1
1
  // @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
2
- import{t as N,z as C}from"./chunk-JILSZHCQ.js";import{Da as M,Ea as q}from"./chunk-S4ISEA6F.js";import{$a as R,Ja as E,j as b,k as T}from"./chunk-S4GVQO3W.js";import{ac as O,bc as W,de as $,ee as g,fe as k,gc as I,ie as _,je as y,ke as x}from"./chunk-E2Q4RIOD.js";import{a as o}from"./chunk-V4WSBIXB.js";import{join as Pe}from"node:path";var te=["You generate KodaX Dynamic Workflow scripts.","Return JSON only. Do not wrap the answer in prose.","For simple tasks that do not benefit from multiple agents, return:",'{"action":"decline","reason":"..."}',"For complex tasks, return:",'{"action":"generate","manifest":{...},"source":"async function run(wf, args) { ... }","approvalSummary":"..."}',"Generated source may only coordinate agents through wf and args.","Generated source must return displayable final text for the user.","Never use import, require, process, fs, child_process, network APIs, shell commands, or direct file access."].join(`
2
+ import{t as N,z as C}from"./chunk-NBQW7PNZ.js";import{Ga as M,Ha as q}from"./chunk-3HKBBY74.js";import{$a as R,Ja as E,j as b,k as T}from"./chunk-O7N22GJ3.js";import{dc as O,ec as W,ge as $,he as g,ie as k,jc as I,le as _,me as y,ne as x}from"./chunk-TLJGOKBT.js";import{a as o}from"./chunk-ONUPGMER.js";import{join as Pe}from"node:path";var te=["You generate KodaX Dynamic Workflow scripts.","Return JSON only. Do not wrap the answer in prose.","For simple tasks that do not benefit from multiple agents, return:",'{"action":"decline","reason":"..."}',"For complex tasks, return:",'{"action":"generate","manifest":{...},"source":"async function run(wf, args) { ... }","approvalSummary":"..."}',"Generated source may only coordinate agents through wf and args.","Generated source must return displayable final text for the user.","Never use import, require, process, fs, child_process, network APIs, shell commands, or direct file access."].join(`
3
3
  `),j=12e4,ne="KODAX_WORKFLOW_GENERATION_TIMEOUT_SEC",re="KODAX_WORKFLOW_GENERATION_TIMEOUT_MS",se=64,oe=2,ie=2e3,ae=[{name:"default"},{name:"variant-results",finalText:o((e,n)=>`Variant smoke child report from ${e} (${n}).`,"finalText"),synthesizeText:"Variant smoke synthesis report."},{name:"unverified-success",status:o(()=>"completed_unverified","status"),finalText:o(e=>`Smoke result for ${e}: completed with verification warnings.`,"finalText"),synthesizeText:"Smoke synthesis: completed with verification warnings."},{name:"empty-args-rerun",args:o(()=>({}),"args")}],le=["- classify-and-act: first classify a mixed request, then route to the right worker behavior.","- fan-out-and-synthesize: split independent areas, files, hypotheses, reviewers, or perspectives; run them with wf.parallel, then wf.synthesize.","- adversarial-verification: produce or inspect a candidate, then have an independent verifier attack assumptions, evidence, and edge cases.","- generate-and-filter: ask several generators for distinct candidates, then filter/dedupe/rank before synthesis.","- tournament: compare competing approaches or answers and use synthesis as the judge.","- loop-until-done: run bounded follow-up rounds when findings should drive the next prompt.","- review or audit combines fan-out-and-synthesize with adversarial-verification: fan independent reviewers out across the dimensions, then pipe each finding straight into a verifier that tries to refute it before synthesis. A review with no verification stage ships findings a single reviewer's blind spot would have hidden."],ce=[{id:"import",pattern:/\bimport\s*(?:\(|['"*{]|\w+\s+from\b)/},{id:"require",pattern:/\brequire\s*\(/},{id:"process",pattern:/\bprocess\s*(?:\.|\[)/},{id:"fs",pattern:/\b(?:node:)?fs\b/},{id:"child_process",pattern:/\bchild_process\b/},{id:"shell",pattern:/\b(?:exec|spawn|execFile)\s*\(/},{id:"fetch",pattern:/\bfetch\s*\(/},{id:"Deno",pattern:/\bDeno\s*(?:\.|\[)/},{id:"Bun",pattern:/\bBun\s*(?:\.|\[)/},{id:"globalThis-index",pattern:/\bglobalThis\s*\[/}];function ue(e=process.env,n){let t=b(n?.workflow?.generationTimeoutSec,"timeouts.workflow.generationTimeoutSec");if(t!==void 0)return t;let r=T(e[ne]);if(r!==void 0)return r;let s=e[re];if(s===void 0||s.trim().length===0)return j;let i=Number(s);return!Number.isFinite(i)||i<=0?j:Math.floor(i)}o(ue,"resolveWorkflowGenerationTimeoutMs");function fe(e,n){if(typeof e!="object"||e===null)throw new Error(`${n} must be an object`);return e}o(fe,"readRecord");function P(e,n){let t=e[n];if(typeof t!="string"||t.trim().length===0)throw new Error(`workflow generation ${n} must be a non-empty string`);return t}o(P,"readNonEmptyString");function de(e){let n=e.trim(),t=/^```(?:json)?\s*([\s\S]*?)\s*```$/i.exec(n);if(t?.[1])return t[1].trim();let r=n.indexOf("{"),s=n.lastIndexOf("}");if(r>=0&&s>r)return n.slice(r,s+1);throw new Error("workflow generation output did not contain a JSON object")}o(de,"extractJsonText");function pe(e){let n=de(e);return fe(JSON.parse(n),"workflow generation output")}o(pe,"parseGenerationJson");function me(e){if(typeof e=="string"){let t=e.trim();return t.length>0?t:void 0}if(typeof e!="object"||e===null)return;let n=e;for(let t of["name","id","title","phase"]){let r=n[t];if(typeof r=="string"&&r.trim().length>0)return r.trim()}}o(me,"normalizePhaseEntry");function he(e){return e.split(/(?:->|\u2192|,|\n)/).map(n=>n.trim()).filter(n=>n.length>0)}o(he,"splitPhaseString");function we(e){if(typeof e!="object"||e===null)return e;let n=e,t=n.phases,r;if(Array.isArray(t)){let s=t.map(me);s.every(i=>i!==void 0)&&(r=s)}else if(typeof t=="string"){let s=he(t);s.length>0&&(r=s)}return r?{...n,phases:r}:e}o(we,"normalizeGeneratedManifestCandidate");function ge(e){return e.match(/\bwf\.(?:runAgent|spawnAgent|synthesize)\s*\(/g)?.length??0}o(ge,"estimateDirectAgentCalls");function ke(e,n){let t=e.maxConcurrency*Math.max(1,e.phases.length)+2,r=ge(n)+2,s=Math.min(se,Math.max(e.maxAgents,t,r));return s>e.maxAgents?{...e,maxAgents:s}:e}o(ke,"reserveGeneratedWorkflowAgentCapacity");function h(e){let n="",t=0,r=["code"],s=[0];for(;t<e.length;){let i=e[t],a=e[t+1];if(r[r.length-1]==="template"){if(i==="\\"){n+=" ",t+=2;continue}if(i==="`"){n+=" ",t+=1,r.pop(),s.pop();continue}if(i==="$"&&a==="{"){n+=" ",t+=2,r.push("code"),s.push(0);continue}n+=i===`
4
4
  `?`
5
5
  `:" ",t+=1;continue}if(i==="/"&&a==="/"){for(n+=" ",t+=2;t<e.length&&e[t]!==`