@kodax-ai/kodax 0.7.66 → 0.7.67

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 (61) hide show
  1. package/CHANGELOG.md +108 -3
  2. package/README.md +40 -10
  3. package/README_CN.md +26 -9
  4. package/dist/chunks/{agent-KER4WDNO.js → agent-E4V5SLX6.js} +1 -1
  5. package/dist/chunks/argument-completer-N6RT5KYT.js +2 -0
  6. package/dist/chunks/{chunk-QJVZZSEO.js → chunk-AKMXJSGM.js} +1 -1
  7. package/dist/chunks/{chunk-WMIZCY2J.js → chunk-CW32NQFO.js} +1 -1
  8. package/dist/chunks/{chunk-ALS32RNZ.js → chunk-DEICMTHO.js} +9 -9
  9. package/dist/chunks/{chunk-VS4CDDEF.js → chunk-EN3O2C43.js} +221 -221
  10. package/dist/chunks/chunk-KBBGDRER.js +22 -0
  11. package/dist/chunks/chunk-NVDK375I.js +729 -0
  12. package/dist/chunks/chunk-QI6SQ2UQ.js +306 -0
  13. package/dist/chunks/{chunk-MHRN2LQV.js → chunk-RS2GAABJ.js} +17 -17
  14. package/dist/chunks/chunk-W2XMNYLK.js +15 -0
  15. package/dist/chunks/{chunk-QAQ2HNXD.js → chunk-WCSSXBHR.js} +126 -112
  16. package/dist/chunks/chunk-YH5BTUQO.js +343 -0
  17. package/dist/chunks/{compaction-config-7GMUFNPB.js → compaction-config-56NO42ZI.js} +1 -1
  18. package/dist/chunks/{construction-bootstrap-3XDS2D5K.js → construction-bootstrap-GLEHQ2KB.js} +1 -1
  19. package/dist/chunks/dist-4UIRSSFS.js +2 -0
  20. package/dist/chunks/host-DMREFNSO.js +2 -0
  21. package/dist/chunks/{run-manager-6CAH3KTA.js → run-manager-P5XMSGZ7.js} +1 -1
  22. package/dist/chunks/{utils-OT5ENFUL.js → utils-JENPFKAE.js} +1 -1
  23. package/dist/index.d.ts +15 -12
  24. package/dist/index.js +6 -6
  25. package/dist/kodax_cli.js +1237 -1214
  26. package/dist/runtime-worker.js +1147 -1118
  27. package/dist/sdk-agent.d.ts +27 -10
  28. package/dist/sdk-agent.js +1 -1
  29. package/dist/sdk-coding.d.ts +277 -16
  30. package/dist/sdk-coding.js +1 -1
  31. package/dist/sdk-mcp.js +1 -1
  32. package/dist/sdk-repl.d.ts +23 -14
  33. package/dist/sdk-repl.js +2 -2
  34. package/dist/sdk-runtime.d.ts +99 -11
  35. package/dist/sdk-runtime.js +1 -1
  36. package/dist/sdk-session.d.ts +4 -4
  37. package/dist/sdk-session.js +1 -1
  38. package/dist/sdk-skills.js +1 -1
  39. package/dist/semantic-worker.js +11 -11
  40. package/dist/types-chunks/{bash-prefix-extractor.d-BjkITAva.d.ts → bash-prefix-extractor.d-D57Gt6n8.d.ts} +44 -9
  41. package/dist/types-chunks/{capsule.d-hVhPNkHd.d.ts → capsule.d-BZmqu_HL.d.ts} +2 -2
  42. package/dist/types-chunks/{commands.d-C3B1TdGM.d.ts → commands.d-Cg26ud-Y.d.ts} +4 -4
  43. package/dist/types-chunks/{guardrail.d-C_Siraua.d.ts → guardrail.d-Ds7JHxR1.d.ts} +1 -1
  44. package/dist/types-chunks/{guardrail.d-wk-s0psS.d.ts → guardrail.d-vSaBe64I.d.ts} +2 -2
  45. package/dist/types-chunks/{public-api.d-jtREVfEq.d.ts → public-api.d-CPBMPDiU.d.ts} +8 -2
  46. package/dist/types-chunks/{run-manager.d-CFknOfo1.d.ts → run-manager.d-lnwnfyNC.d.ts} +1 -1
  47. package/dist/types-chunks/{sdk-session-CLqyfAmf.d.ts → sdk-session-ByoMLoUS.d.ts} +3 -3
  48. package/dist/types-chunks/{process.d-CY2g03Mb.d.ts → types.d-DG9B4SMm.d.ts} +369 -4
  49. package/dist/types-chunks/{types.d-BMLxKV69.d.ts → types.d-DU9lLkmE.d.ts} +1 -1
  50. package/dist/types-chunks/{types.d-CUN_bZU7.d.ts → types.d-DYv3a1ka.d.ts} +2 -2
  51. package/dist/types-chunks/{utils.d-C1rpoeDh.d.ts → utils.d-DMI-9GTR.d.ts} +8 -4
  52. package/docs/SDK_EMBEDDER_GUIDE.md +3079 -0
  53. package/package.json +2 -1
  54. package/dist/chunks/argument-completer-HK3MHA3K.js +0 -2
  55. package/dist/chunks/chunk-3HKBBY74.js +0 -339
  56. package/dist/chunks/chunk-AKBH2EEE.js +0 -8
  57. package/dist/chunks/chunk-NBQW7PNZ.js +0 -18
  58. package/dist/chunks/chunk-TLJGOKBT.js +0 -729
  59. package/dist/chunks/chunk-WBBEJIAY.js +0 -306
  60. package/dist/chunks/dist-4YAYT2TO.js +0 -2
  61. package/dist/chunks/host-KG3456QP.js +0 -2
@@ -1,8 +0,0 @@
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,18 +0,0 @@
1
- // @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
2
- import{Db as Te,Eb as X,Fb as Ee,Gb as Ae,Ia as We,Nc as Pe,Oc as Oe}from"./chunk-3HKBBY74.js";import{N as ge}from"./chunk-O7N22GJ3.js";import{Be as Me,Ce as Re,De as be,_a as G,ee as ve,fe as Se,he as F,ib as ye,le as z,re as J,se as W,te as H,ue as xe}from"./chunk-TLJGOKBT.js";import{B as ke}from"./chunk-PZTG2C33.js";import{a}from"./chunk-ONUPGMER.js";import{basename as bn,dirname as Wn}from"node:path";import{execFile as yt}from"node:child_process";import j from"node:path";import{promisify as vt}from"node:util";var St=vt(yt),xt=1e4,De=2,Fe=new Set(["write","edit","multi_edit","insert_after_anchor"]),Mt=/^\s*(?:let me|i will|i'll|i am going to)\b[\s\S]{0,120}\b(?:start|create|implement|write|build|plan)\b|^\s*(?:我将|让我|接下来)[\s\S]{0,80}(?:开始|创建|编写|实现|制定)/i;function Rt(e){if(e?.timeoutMs!==void 0){if(!Number.isFinite(e.timeoutMs)||e.timeoutMs<=0)throw new Error("workflow wait timeoutMs must be a positive number");return Math.floor(e.timeoutMs)}}a(Rt,"normalizeWaitTimeoutMs");function Y(e){return e?.requiresMutation===!0||(e?.requiredChangedPaths?.length??0)>0}a(Y,"hasVerificationWork");function T(e){return e.replace(/\\/g,"/").replace(/^\.\//,"").trim()}a(T,"normalizeWorkspacePath");function bt(e,t){let n=t.gitRoot?j.resolve(t.gitRoot):void 0,o=j.isAbsolute(e)&&n?j.relative(n,j.resolve(e)):e;return T(o)}a(bt,"normalizeRequiredPath");function Wt(e){let t=(e.readOnly??!1)===!1?{enforcement:"warn",requiresMutation:!0,rejectPreparatoryFinalText:!0}:void 0;if(e.verification!==void 0){let n={...t??{},...e.verification,enforcement:e.verification.enforcement??"hard"},o=e.verification.requiredChangedPaths;return{verification:{...n,...o!==void 0&&o.length>0&&n.requiresMutation===void 0?{requiresMutation:!0}:{}}}}return{verification:t}}a(Wt,"resolveVerificationForInput");function Tt(e,t){if(t===!0&&e.readOnly===!1)throw new Error(`workflow manifest readOnly=true cannot spawn write-capable child "${e.name}"; set the workflow manifest readOnly=false or use child readOnly:true`);let n=e.readOnly??t??!1;return e.readOnly===n?e:{...e,readOnly:n}}a(Tt,"resolveSpawnAgentInput");function _e(e){let t=e.trim();return t.length>0&&Mt.test(t)}a(_e,"isPreparatoryOnlyText");function Et(e,t){let n=e.trim(),o=t?.trim();return o&&(n.length===0||_e(n))?o:e}a(Et,"selectWorkflowFinalText");async function B(e,t){return(await St("git",[...e],{cwd:t,timeout:xt,windowsHide:!0,maxBuffer:4194304})).stdout.toString()}a(B,"runGit");async function At(e){let t=e.gitRoot??e.executionCwd??process.cwd(),n=(await B(["rev-parse","--show-toplevel"],t)).trim(),o=await Promise.all([B(["diff","--name-only","--"],n),B(["diff","--cached","--name-only","--"],n),B(["ls-files","--others","--exclude-standard"],n)]);return[...new Set(o.flatMap(i=>i.split(/\r?\n/)).map(T).filter(i=>i.length>0))]}a(At,"listGitChangedFiles");async function Z(e,t){try{return{paths:(await t(e)).map(T).filter(o=>o.length>0)}}catch(n){return{paths:[],error:n instanceof Error?n.message:String(n)}}}a(Z,"captureChangedPaths");function Pt(){return{toolNameById:new Map,toolPathById:new Map,succeededToolCalls:[],succeededPaths:[]}}a(Pt,"createMutationRecorder");function Ot(e){if(e)for(let t of["path","file_path","target_path"]){let n=e[t];if(typeof n=="string"&&n.trim().length>0)return T(n)}}a(Ot,"readMutationPath");function Ft(e,t){return{...e??{},onToolUseStart:a((n,o)=>{if(Fe.has(n.name)){t.toolNameById.set(n.id,n.name);let i=Ot(n.input);i!==void 0&&t.toolPathById.set(n.id,i)}e?.onToolUseStart?.(n,o)},"onToolUseStart"),onToolResult:a((n,o)=>{let i=t.toolNameById.get(n.id)??n.name;if(Fe.has(i)&&!n.content.trimStart().startsWith("[Tool Error]")){t.succeededToolCalls.push(i);let r=t.toolPathById.get(n.id);r!==void 0&&t.succeededPaths.push(r)}e?.onToolResult?.(n,o)},"onToolResult")}}a(Ft,"wrapEventsForMutationRecording");function Q(e){return[...new Set(e.filter(t=>t.trim().length>0))]}a(Q,"uniqueItems");function Ie(e){let t=e.verification;if(!t)return;let n=[],o=new Set(e.before.paths.map(T)),i=Q(e.after.paths.map(T)),r=i.filter(m=>!o.has(m)),s=Q(e.mutationRecorder.succeededToolCalls),c=e.acceptToolMutationEvidence?s:[],p=e.acceptToolMutationEvidence?Q(e.mutationRecorder.succeededPaths.map(T)):[],l=r.length>0||c.length>0,h=t.enforcement??"hard",v=(t.requiredChangedPaths??[]).map(m=>bt(m,e.ctx));t.requiresMutation===!0&&(e.before.error!==void 0||e.after.error!==void 0?n.push(`workspace mutation verification could not read changed files: ${e.after.error??e.before.error}`):l||n.push(e.acceptToolMutationEvidence||s.length===0?"expected file mutations, but no new workspace changes or successful write tools were observed":"write tools ran in an isolated worktree, but no main workspace changes were present after cleanup")),e.term.limitReached===!0&&!l&&n.push("workflow child reached its iteration limit before satisfying the task");for(let m of v)!i.includes(m)&&!p.includes(m)&&n.push(`required changed path was not present in workspace changes: ${m}`);let k=t.minFinalTextChars;return k!==void 0&&!l&&e.term.finalText.trim().length<k&&n.push(`finalText was shorter than the required ${k} characters`),t.rejectPreparatoryFinalText===!0&&!l&&_e(e.term.finalText)&&n.push("finalText looks preparatory instead of terminal"),{ok:n.length===0,enforcement:h,reasons:n,changedPaths:i,mutationToolCalls:s,mutationEvidence:l}}a(Ie,"evaluateVerification");function ee(e,t){if(t.ok)return e;let o=[t.enforcement==="warn"?"[Workflow task completed without verification]":"[Workflow task verification failed]",...t.reasons.map(i=>`- ${i}`)].join(`
3
- `);return e.trim().length>0?`${e}
4
-
5
- ${o}`:o}a(ee,"appendVerificationFailure");function Ce(){return{ok:!1,enforcement:"warn",reasons:["workflow child reached its iteration limit before satisfying the task"],mutationEvidence:!1}}a(Ce,"limitReachedWarningVerification");function It(e){return e.entry.bundle.readOnly!==!0&&e.entry.repairAttempts<De&&e.term.status==="completed"&&e.verification!==void 0&&e.verification.ok!==!0&&e.verification.enforcement!=="warn"}a(It,"shouldRepairVerificationFailure");function Ct(e){let t=e.verification.reasons.map(o=>`- ${o}`).join(`
6
- `),n=(e.verification.changedPaths??[]).length>0?`
7
- Workspace changes already present before this repair attempt:
8
- ${e.verification.changedPaths?.map(o=>`- ${o}`).join(`
9
- `)??""}`:"";return[e.originalPrompt,"","[Workflow verification repair]",`Repair attempt ${e.attempt}/${De}.`,"The previous attempt did not satisfy the workflow postconditions.","Do not stop at analysis, planning, or a promise to begin. Complete the required file writes in the real workspace now.","Use the available file editing tools when a file change is required, then report the exact files changed.","","Verification failures:",t,n,"","Previous terminal response:",e.previousFinalText.trim()||"(empty)"].join(`
10
- `)}a(Ct,"buildVerificationRepairPrompt");async function $e(e,t,n,o,i=n){if(n===void 0)return e;let r;try{return await Promise.race([e,new Promise((s,c)=>{r=setTimeout(()=>{o.childAbortControllers?.get(t)?.abort(),c(new Error(`workflow task ${t} timed out after ${i??n}ms`))},n)})])}finally{r&&clearTimeout(r)}}a($e,"waitForChildPromise");function Ne(e,t,n){return t.outputSchema!==void 0&&We(t.outputSchema),Oe(t.name,t.evidenceRefs,n),{id:e,fanoutClass:"evidence-scan",objective:t.prompt,readOnly:t.readOnly??!1,evidenceRefs:t.evidenceRefs?[...t.evidenceRefs]:[],constraints:[],...t.modelHint?{modelHint:t.modelHint}:{},...t.isolation?{isolation:t.isolation}:{},...t.subagentType?{specialistName:t.subagentType}:{},...t.outputSchema!==void 0?{outputSchema:t.outputSchema}:{},...t.effort?{effort:t.effort}:{}}}a(Ne,"buildBundle");function te(e,t){if(e.cancelledChildren.includes(t))return{status:"stopped",snapStatus:"aborted",finalText:""};let n=e.results[0],o=Et(n?.summary??"",n?.digest);return n?.status==="completed"?{status:"completed",snapStatus:"completed",finalText:o,...n.digest?{digest:n.digest}:{},...n.digestFailed?{digestFailed:!0}:{},...n.digestPending?{digestPending:!0}:{},...n.limitReached?{limitReached:!0}:{},...n.provider?{provider:n.provider}:{},...n.model?{model:n.model}:{},...n.structured!==void 0?{structured:n.structured}:{}}:{status:"failed",snapStatus:"failed",finalText:o,...n?.limitReached?{limitReached:!0}:{},...n?.provider?{provider:n.provider}:{},...n?.model?{model:n.model}:{}}}a(te,"deriveTerminal");function qe(e){let{ctx:t,childOptions:n}=e,o=e.runChild??Pe,i=e.queue??ke(),r=e.listChangedFiles??At,s=e.now??(()=>Date.now()),c=0,p=e.generateId??(()=>`wf-child-${c+=1}`),l=new Map,h=new Set,v=new Map,k=a(()=>e.onTaskSummary!==void 0||h.size>0,"hasTaskSummaryObservers"),m=a((d,g)=>{try{e.onTaskSummary?.(d,g)}catch{}for(let f of h)try{f(d,g)}catch{}},"notifyTaskSummary");return{spawn:a(async d=>{let g=Tt(d,e.defaultChildReadOnly),f=p(),S=Ne(f,g,new Set(l.keys())),O=Wt(g).verification,R=Pt(),D=g.isolation!=="worktree",u=Y(O)?Z(t,r):Promise.resolve({paths:[]}),w=t.childProgressSnapshots,x=a(async A=>{let he=new AbortController;t.childAbortControllers?.set(f,he),w&&Te(w,{childId:f,startedAt:s(),maxIterations:n.maxIterationsPerChild,parentRole:n.parentRole,readOnly:A.readOnly,specialistName:A.specialistName});let kt={...n,parentOptions:{...n.parentOptions,events:Ft(n.parentOptions.events,R)},maxParallel:1,workflowChild:!0,...e.runId!==void 0?{workflowCorrelation:{workflowRunId:e.runId,childAgentId:f,itemId:`agent:${f}`}}:{},childActivityName:g.name,workflowDigestMode:k()?"async":"blocking",...k()?{onWorkflowChildDigest:a(y=>{m(y.childId,{...y.digest?{summary:y.digest}:{},summaryKind:y.digest?"digest":"digest-failed",...y.totalTokensUsed>0?{usage:{totalTokens:y.totalTokensUsed}}:{}})},"onWorkflowChildDigest")}:{},abortSignal:he.signal,snapshotUpdater:w?y=>Ee(w,f,y):void 0},q;try{return await u,q=await o([A],t,kt),q}finally{if(t.childAbortControllers?.delete(f),w){let y=q?te(q,f):{snapStatus:"failed",finalText:""};X(w,f,{status:y.snapStatus,finalText:y.finalText,endedAt:s()})}}},"runBundle"),_=x(S);return l.set(f,{name:g.name,input:g,bundle:S,promise:_,runBundle:x,verification:O,changedPathBaseline:u,mutationRecorder:R,acceptToolMutationEvidence:D,repairAttempts:0}),G(v,f,_),{taskId:f,name:g.name}},"spawn"),wait:a(async(d,g)=>{let f=l.get(d);if(!f)throw new Error(`unknown workflow task: ${d}`);let S=Rt(g),pe=Date.now(),O=a(async x=>{if(S===void 0)return $e(x,d,void 0,t);let _=Date.now()-pe,A=S-_;if(A<=0)throw t.childAbortControllers?.get(d)?.abort(),new Error(`workflow task ${d} timed out after ${S}ms`);return $e(x,d,Math.max(1,Math.floor(A)),t,S)},"waitForAttempt"),R=await O(f.promise),D=R.totalTokensUsed,u=te(R,d),w=f.verification?Ie({verification:f.verification,term:u,before:await f.changedPathBaseline,after:Y(f.verification)?await Z(t,r):{paths:[]},mutationRecorder:f.mutationRecorder,ctx:t,acceptToolMutationEvidence:f.acceptToolMutationEvidence}):void 0;for(u.limitReached===!0&&w===void 0&&u.status==="completed"&&(w=Ce(),u={...u,status:"completed_unverified",snapStatus:"completed",finalText:ee(u.finalText,w)});It({entry:f,term:u,verification:w});){f.repairAttempts+=1;let x=Ne(d,{...f.input,prompt:Ct({originalPrompt:f.input.prompt,previousFinalText:u.finalText,verification:w,attempt:f.repairAttempts})});f.promise=f.runBundle(x),G(v,d,f.promise),R=await O(f.promise),D+=R.totalTokensUsed,u=te(R,d),w=f.verification?Ie({verification:f.verification,term:u,before:await f.changedPathBaseline,after:Y(f.verification)?await Z(t,r):{paths:[]},mutationRecorder:f.mutationRecorder,ctx:t,acceptToolMutationEvidence:f.acceptToolMutationEvidence}):void 0,u.limitReached===!0&&w===void 0&&u.status==="completed"&&(w=Ce(),u={...u,status:"completed_unverified",snapStatus:"completed",finalText:ee(u.finalText,w)})}if(w!==void 0&&!w.ok&&u.status==="completed"){let x=w.enforcement==="warn";u={...u,status:x?"completed_unverified":"failed",snapStatus:x?"completed":"failed",finalText:ee(u.finalText,w)}}return X(t.childProgressSnapshots,d,{status:u.snapStatus,finalText:u.finalText,endedAt:s()}),{taskId:d,name:f.name,status:u.status,finalText:u.finalText,...u.digest?{digest:u.digest}:{},...u.digestFailed?{digestFailed:!0}:{},...u.digestPending?{digestPending:!0}:{},...w!==void 0?{verification:w}:{},...u.limitReached?{limitReached:!0}:{},...u.provider?{provider:u.provider}:{},...u.model?{model:u.model}:{},...u.structured!==void 0?{structured:u.structured}:{},usage:{totalTokens:D}}},"wait"),output:a(async d=>{if(!l.has(d))throw new Error(`unknown workflow task: ${d}`);let g=l.get(d)?.name??d,f=t.childProgressSnapshots?.get(d);if(!f)return{taskId:d,name:g,status:"running"};let S=f.status==="aborted"?"stopped":f.status;return f.finalText!==void 0?{taskId:d,name:g,status:S,lastText:f.finalText}:{taskId:d,name:g,status:S}},"output"),send:a(async(d,g)=>{if(!l.has(d))throw new Error(`unknown workflow task: ${d}`);ye({to:d,priority:"user",mode:"prompt",content:g,registry:v,queue:i})},"send"),stop:a(async d=>{if(!l.has(d))throw new Error(`unknown workflow task: ${d}`);t.childAbortControllers?.get(d)?.abort()},"stop"),subscribeTaskSummaryUpdates:a(d=>(h.add(d),()=>{h.delete(d)}),"subscribeTaskSummaryUpdates")}}a(qe,"createCodingWorkflowBackend");import{homedir as sn}from"node:os";import{join as Ze}from"node:path";var $t=["structure, entry points, and control flow","edge cases, error handling, and failure modes","tests, validation, and existing coverage"],Nt="Deduplicate overlapping findings, keep concrete evidence (file:line), rank by relevance to the question, and explicitly note gaps left by any failed investigation.",Dt={type:"object",additionalProperties:!1,required:["finding"],properties:{finding:{type:"string",description:"Your concrete findings for this focus, with file:line evidence. If nothing relevant was found, a brief note saying so."}}};function _t(e){if(e!==null&&typeof e=="object"&&"finding"in e){let t=e.finding;if(typeof t=="string"&&t.trim().length>0)return t}}a(_t,"readStructuredFinding");function qt(e){let t=_t(e.structured);if(t)return t;let n=e.finalText?.trim();return n&&n.length>0?e.finalText:"[no finding text was returned \u2014 the investigator may have ended on a tool call without a closing summary]"}a(qt,"pickFindingText");function jt(e,t){return["Investigate the following question (READ-ONLY \u2014 do not modify any files):",e,"",`Focus your investigation on: ${t}`,"","Report concrete findings backed by evidence (cite file:line). If you find nothing relevant for this focus, say so briefly."].join(`
11
- `)}a(jt,"buildInvestigatorPrompt");function Bt(e){let t=Math.max(1,(e.maxAgents??8)-1);return(e.targets&&e.targets.length>0?e.targets:$t).slice(0,t).map((o,i)=>({name:`investigate-${i+1}`,prompt:jt(e.question,o)}))}a(Bt,"resolveAngles");async function Lt(e,t){try{let n=await e.runAgent({name:t.name,prompt:t.prompt,readOnly:!0,outputSchema:Dt});return n===null?{angle:t.name,status:"failed",text:"[investigation failed] agent did not complete"}:{angle:t.name,status:n.status==="completed"?"completed":"failed",text:qt(n)}}catch(n){let o=n instanceof Error?n.message:String(n);return{angle:t.name,status:"failed",text:`[investigation failed] ${o}`}}}a(Lt,"investigate");async function Ut(e,t){let n=Bt(t),o=(await e.phase("investigate",()=>e.parallel(n.map(s=>()=>Lt(e,s)),t.maxConcurrency!==void 0?{concurrency:t.maxConcurrency}:void 0))).filter(s=>s!==null),i=o.some(s=>s.status!=="completed");return{synthesis:(await e.phase("synthesize",()=>e.synthesize({inputs:o.map(s=>`### ${s.angle} (${s.status})
12
- ${s.text}`),rubric:t.rubric??Nt}))).text,findings:o,degraded:i}}a(Ut,"runParallelInvestigation");var je={meta:{name:"parallel-investigation",description:"Fan out read-only investigators over a question (split by target areas), then synthesize ranked, evidence-keeping findings.",maxAgents:8,maxConcurrency:4,readOnly:!0,phases:["investigate","synthesize"]},run:Ut};function Vt(e){return{meta:e.meta,run:a((t,n)=>e.run(t,n),"run")}}a(Vt,"erase");var Be=[Vt(je)];function Le(e){return Be.find(t=>t.meta.name===e)}a(Le,"getBuiltinWorkflow");function Qn(){return Be.map(e=>e.meta)}a(Qn,"listBuiltinWorkflows");import{mkdir as ze,readdir as Kt,readFile as I,rename as Gt,unlink as oe,writeFile as ae}from"node:fs/promises";import{basename as zt,dirname as re,join as E}from"node:path";import{pathToFileURL as Jt}from"node:url";var Je=[".workflow.json",".ts",".mjs",".js"],C="0.7.49";function He(){return"0.7.66"}a(He,"currentKodaxWorkflowVersion");function Ht(e){return e.endsWith(".workflow.json")?"capability-generated":"trusted-local"}a(Ht,"executionForPath");function Xt(e){let t=Je.find(n=>e.endsWith(n));return t?e.slice(0,-t.length):void 0}a(Xt,"stripWorkflowSuffix");function ie(e){let t=e.trim().replace(/[^a-zA-Z0-9._-]+/g,"-").replace(/^[.-]+|[.-]+$/g,"").slice(0,80);if(!t||t==="."||t==="..")throw new Error("workflow name must contain at least one safe filename character");return t}a(ie,"safeWorkflowName");function se(e){return typeof e=="object"&&e!==null}a(se,"isRecord");function Ue(e,t){let n=e[t];if(typeof n!="string"||n.length===0)throw new Error(`workflow run.json missing ${t}`);return n}a(Ue,"readRequiredString");async function Ve(e,t){if(!e)return[];let n;try{n=await Kt(e)}catch{return[]}let o=new Map;for(let i of Je)for(let r of n){if(!r.endsWith(i))continue;let s=Xt(r);if(!s||s.length===0||o.has(s))continue;let c=E(e,r);o.set(s,{name:s,path:c,source:t,execution:Ht(c)})}return[...o.values()]}a(Ve,"scanDir");async function $(e){let t=await Ve(e.personal,"personal"),n=await Ve(e.project,"project"),o=new Map;for(let i of t)o.set(i.name,i);for(let i of n)o.set(i.name,i);return[...o.values()].sort((i,r)=>i.name.localeCompare(r.name))}a($,"discoverSavedWorkflows");function Yt(e){return typeof e=="object"&&e!==null&&"meta"in e&&"run"in e&&typeof e.run=="function"}a(Yt,"isWorkflowModule");function Zt(e){let t=e.default;if(Yt(t))return t;let n=typeof t=="function"?t:e.run,o=e.workflow??e.meta;if(typeof n=="function"&&typeof o=="object"&&o!==null&&"name"in o)return{meta:o,run:n};throw new Error("invalid workflow module: expected a `{ meta, run }` default export, or `export const workflow = {...}` + a default run function")}a(Zt,"normalizeWorkflowModule");function Qt(e){let t=JSON.parse(e);if(!se(t))throw new Error("generated workflow file must be an object");if(t.format!==void 0&&t.format!=="kodax.workflow")throw new Error(`unsupported workflow capsule format: ${String(t.format)}`);if(t.format==="kodax.workflow"){let i=J(t);return{manifest:i.manifest,source:i.source,capsule:i,legacy:!1}}let n=t.source;if(typeof n!="string"||n.trim().length===0)throw new Error("generated workflow file source must be a non-empty string");let o=F(t.manifest);return{manifest:o,source:n,capsule:W({minKodaxVersion:C,manifest:o,source:n}),legacy:!0}}a(Qt,"parseGeneratedWorkflowFile");async function ce(e){let t=Qt(await I(e,"utf8"));return t.capsule??W({minKodaxVersion:C,manifest:t.manifest,source:t.source})}a(ce,"loadSavedWorkflowCapsule");async function Xe(e){if(e.endsWith(".workflow.json"))return H(await ce(e));let t=await import(Jt(e).href);return Zt(t)}a(Xe,"loadSavedWorkflow");function fe(e){if(e.mayUseWorktree===!0)return{environment:["git-repo","worktree-capable"]}}a(fe,"deriveRequirements");function L(e,t){z(t,{filename:`${e.name}.workflow.js`,requireAsyncRun:!0})}a(L,"assertGeneratedCapsuleSource");async function en(e){let t=ie(e.name),n=F(e.manifest);L(n,e.source);let o=e.requires??fe(n),i=W({minKodaxVersion:e.minKodaxVersion??C,manifest:n,source:e.source,...e.intent!==void 0?{intent:e.intent}:{},...e.inputs!==void 0?{inputs:e.inputs}:{},...o!==void 0?{requires:o}:{},...e.provenance!==void 0?{provenance:e.provenance}:{}});await ze(e.dir,{recursive:!0});let r=E(e.dir,`${t}.workflow.json`);return await ae(r,`${JSON.stringify(i,null,2)}
13
- `,"utf8"),{name:t,path:r,source:"project",execution:"capability-generated"}}a(en,"saveGeneratedWorkflow");async function Ke(e,t){await ae(e,`${JSON.stringify(t,null,2)}
14
- `,"utf8")}a(Ke,"writeCapsuleFile");async function tn(e){try{return await I(e,"utf8"),!0}catch{return!1}}a(tn,"fileExists");async function ir(e){let t=(await $(e.dirs)).filter(c=>c.name===e.name).filter(c=>e.source===void 0||c.source===e.source);if(t.length===0)throw new Error(`saved workflow not found: ${e.name}`);if(t.length>1)throw new Error(`ambiguous saved workflow name: ${e.name}`);let n=t[0];if(!n.path.endsWith(".workflow.json"))throw new Error("only generated workflow capsules can be renamed");let o=ie(e.newName),i=E(re(n.path),`${o}.workflow.json`);if(i!==n.path&&await tn(i))throw new Error(`saved workflow already exists: ${o}`);let r=await ce(n.path);L(r.manifest,r.source);let s=W({minKodaxVersion:r.minKodaxVersion,manifest:{...r.manifest,name:o},source:r.source,...r.intent!==void 0?{intent:r.intent}:{},...r.inputs!==void 0?{inputs:r.inputs}:{},...r.requires!==void 0?{requires:r.requires}:{},...r.provenance!==void 0?{provenance:r.provenance}:{}});return await ae(i,`${JSON.stringify(s,null,2)}
15
- `,"utf8"),i!==n.path&&await oe(n.path),{name:o,path:i,source:n.source,execution:"capability-generated"}}a(ir,"renameSavedWorkflow");async function sr(e){let t=(await $(e.dirs)).filter(o=>o.name===e.name).filter(o=>e.source===void 0||o.source===e.source);if(t.length===0)throw new Error(`saved workflow not found: ${e.name}`);if(t.length>1)throw new Error(`ambiguous saved workflow name: ${e.name}`);let n=t[0];if(!n.path.endsWith(".workflow.json"))throw new Error("only generated workflow capsules can be deleted");return await oe(n.path),n}a(sr,"deleteSavedWorkflow");async function cr(e){let t=ie(e.name),n=(await $(e.dirs)).filter(m=>m.name===t).filter(m=>e.savedSource===void 0||m.source===e.savedSource);if(n.length===0)throw new Error(`saved workflow not found: ${t}`);if(n.length>1)throw new Error(`ambiguous saved workflow name: ${t}`);let o=n[0];if(!o.path.endsWith(".workflow.json"))throw new Error("only generated workflow capsules can be replaced");let i=F({...e.manifest,name:t});L(i,e.source);let r=e.requires??fe(i),s=W({minKodaxVersion:e.minKodaxVersion??C,manifest:i,source:e.source,...e.intent!==void 0?{intent:e.intent}:{},...e.inputs!==void 0?{inputs:e.inputs}:{},...r!==void 0?{requires:r}:{},...e.provenance!==void 0?{provenance:e.provenance}:{}}),c=await ce(o.path),p=new Date().toISOString().replace(/[:.]/g,"-"),l=E(re(o.path),".revisions",t),h=`${p}-${process.hrtime.bigint().toString(36)}`,v=E(l,`${t}-${h}.workflow.json`),k=E(re(o.path),`.${t}.${process.pid}.${Date.now().toString(36)}.tmp`);await ze(l,{recursive:!0}),await Ke(v,c);try{await Ke(k,s),await Gt(k,o.path)}catch(m){try{await oe(k)}catch{}throw m}return{name:t,path:o.path,source:o.source,execution:"capability-generated",previousPath:v}}a(cr,"replaceSavedWorkflow");function nn(e){if(!se(e))return;let t=e.request;if(typeof t=="string"&&t.trim().length>0)return t;let n=e.question;if(typeof n=="string"&&n.trim().length>0)return n}a(nn,"readOptionalOriginalRequest");function Ye(e){return rn(e)}a(Ye,"buildCapsuleFromRun");async function rn(e){let t=JSON.parse(await I(E(e.runDir,"run.json"),"utf8"));if(!se(t))throw new Error("workflow run.json must be an object");let n=Ue(t,"scriptSnapshotPath"),o=Ue(t,"manifestSnapshotPath"),i=await I(n,"utf8"),r=F(JSON.parse(await I(o,"utf8")));L(r,i);let s=typeof t.runId=="string"&&t.runId.length>0?t.runId:zt(e.runDir),c=nn(t.args),p=fe(r),l=xe(r,c!==void 0?{originalRequest:c}:{}),h={description:"Provide new workflow args matching the generated request shape.",..."args"in t?{examples:[t.args]}:{}};return W({minKodaxVersion:C,manifest:r,source:i,intent:l,inputs:h,...p!==void 0?{requires:p}:{},provenance:{fromRunId:s,createdAt:new Date().toISOString(),kodaxVersion:He()}})}a(rn,"readCapsuleFromRun");async function fr(e){let t=await Ye(e);return{capsule:t,module:H(t)}}a(fr,"loadGeneratedWorkflowFromRun");async function dr(e){let t=await Ye(e);return en({dir:e.targetDir,name:e.name,manifest:t.manifest,source:t.source,...t.intent!==void 0?{intent:t.intent}:{},...t.inputs!==void 0?{inputs:t.inputs}:{},...t.requires!==void 0?{requires:t.requires}:{},...t.provenance!==void 0?{provenance:t.provenance}:{},minKodaxVersion:t.minKodaxVersion})}a(dr,"saveGeneratedWorkflowFromRun");function b(e,t,n,o){e.push({severity:t,requirement:n,message:o})}a(b,"addRequirementIssue");function Ge(e){let t=/^v?(\d+)\.(\d+)\.(\d+)(?:[-+].*)?$/.exec(e.trim());if(t)return[Number(t[1]),Number(t[2]),Number(t[3])]}a(Ge,"parseSemver");function on(e,t){for(let n=0;n<3;n+=1){let o=e[n]-t[n];if(o!==0)return o}return 0}a(on,"compareSemver");function an(e,t,n){let o=Ge(t),i=Ge(n);if(!o){b(e,"error","kodax:min-version",`workflow minKodaxVersion is not valid semver: ${t}`);return}if(!i){b(e,"warning","kodax:min-version",`cannot verify workflow minKodaxVersion ${t}; current version is unknown`);return}on(i,o)<0&&b(e,"error","kodax:min-version",`workflow requires KodaX >= ${t}, current version is ${n}`)}a(an,"addMinVersionIssue");function ne(e,t,n,o){if(!n)return;if(!o){for(let r of n)b(e,"warning",`${t}:${r}`,`workflow requires ${t}:${r}, but no ${t} inventory was provided`);return}let i=new Set(o);for(let r of n)i.has(r)||b(e,"error",`${t}:${r}`,`missing required workflow ${t}: ${r}`)}a(ne,"addMissingItems");function ur(e,t={}){let n=J(e),o=[],i=n.requires;an(o,n.minKodaxVersion,t.kodaxVersion??He()),i?.environment?.includes("git-repo")&&t.isGitRepo===!1&&b(o,"error","environment:git-repo","workflow requires a git repository"),i?.environment?.includes("worktree-capable")&&t.worktreeCapable===!1&&b(o,"error","environment:worktree-capable","workflow may request git worktree isolation");try{z(n.source,{filename:`${n.manifest.name}.workflow.js`,requireAsyncRun:!0})}catch(r){let s=r instanceof Error?r.message:String(r);b(o,"error","workflow:source",s)}return ne(o,"tools",i?.tools,t.availableTools),ne(o,"mcp",i?.mcp,t.availableMcp),ne(o,"skills",i?.skills,t.availableSkills),{ok:!o.some(r=>r.severity==="error"),issues:o}}a(ur,"preflightWorkflowCapsule");function cn(e){return{project:Ze(e,".kodax","workflows"),personal:Ze(sn(),".kodax","workflows")}}a(cn,"defaultSavedWorkflowDirs");async function fn(e,t){let o=(await $(t)).find(i=>i.name===e);if(o)return Xe(o.path)}a(fn,"resolveSavedByName");function Qe(e){let t=cn(e);return async n=>Le(n)??await fn(n,t)}a(Qe,"createNestedWorkflowResolver");import{existsSync as dn,mkdirSync as un,readFileSync as ln,writeFileSync as et}from"node:fs";import{join as N}from"node:path";var tt="results";function nt(e){return e.replace(/[^a-zA-Z0-9._-]/g,"_")}a(nt,"safeKey");function rt(e,t){let n=N(e,t);if(dn(n))try{return JSON.parse(ln(n,"utf8"))}catch{return}}a(rt,"readResult");function ot(e,t={}){let n=N(e,tt);un(n,{recursive:!0});let o=t.readFrom?N(t.readFrom,tt):void 0;return{get:a(i=>{let r=`${nt(i)}.json`,s=rt(n,r);if(s!==void 0)return s;if(o===void 0)return;let c=rt(o,r);if(c!==void 0){try{et(N(n,r),JSON.stringify(c),"utf8")}catch{}return c}},"get"),set:a((i,r)=>{try{et(N(n,`${nt(i)}.json`),JSON.stringify(r),"utf8")}catch{}},"set")}}a(ot,"createFsResultCache");import{mkdirSync as mn,appendFileSync as wn,writeFileSync as U}from"node:fs";import{join as P}from"node:path";function pn(e){let t=e.replace(/[^a-zA-Z0-9._-]/g,"_").slice(0,120);return t.length>0?t:"artifact"}a(pn,"safeWorkflowArtifactName");function at(e,t={}){let n=t.now??(()=>Date.now()),o=P(e,"artifacts");mn(o,{recursive:!0});let i=P(e,"events.jsonl");return{runDir:e,onEvent:a(r=>{wn(i,`${JSON.stringify({...r,ts:n()})}
16
- `,"utf8")},"onEvent"),writeArtifact:a((r,s)=>{let c=P(o,`${pn(r)}.json`);return U(c,JSON.stringify(s,null,2),"utf8"),{name:r,path:c}},"writeArtifact"),writeScriptSnapshot:a(r=>{let s=P(e,"script.js");if(U(s,r.source,"utf8"),!r.manifest)return{scriptPath:s};let c=P(e,"manifest.json");return U(c,`${JSON.stringify(r.manifest,null,2)}
17
- `,"utf8"),{scriptPath:s,manifestPath:c}},"writeScriptSnapshot"),writeRunJson:a(r=>{let s=ve(r.processMetadata?.hostMetadata),c={runId:r.state.runId,workflow:r.meta.name,status:r.state.status,totalSpawned:r.state.totalSpawned,artifacts:r.state.artifacts.map(p=>p.name),eventCount:r.state.events.length,startedAt:r.startedAt,endedAt:r.endedAt,args:r.args,...r.resultSummary!==void 0?{resultSummary:r.resultSummary}:{},...r.processMetadata?.displayName!==void 0?{displayName:r.processMetadata.displayName}:{},...r.processMetadata?.goal!==void 0?{goal:r.processMetadata.goal}:{},...r.processMetadata?.source!==void 0?{source:r.processMetadata.source}:{},...r.processMetadata?.savedWorkflowName!==void 0?{savedWorkflowName:r.processMetadata.savedWorkflowName}:{},...r.processMetadata?.sourceRunId!==void 0?{sourceRunId:r.processMetadata.sourceRunId}:{},...r.processMetadata?.sourceWorkflowName!==void 0?{sourceWorkflowName:r.processMetadata.sourceWorkflowName}:{},...r.processMetadata?.revisionOf!==void 0?{revisionOf:r.processMetadata.revisionOf}:{},...r.processMetadata?.resumedFromRunId!==void 0?{resumedFromRunId:r.processMetadata.resumedFromRunId}:{},...s!==void 0?{hostMetadata:s}:{},...r.scriptSnapshot?{scriptSnapshotPath:r.scriptSnapshot.scriptPath,...r.scriptSnapshot.manifestPath?{manifestSnapshotPath:r.scriptSnapshot.manifestPath}:{}}:{}};U(P(e,"run.json"),`${JSON.stringify(c,null,2)}
18
- `,"utf8")},"writeRunJson")}}a(at,"createRunGraphWriter");import{execFile as hn}from"node:child_process";import{promisify as gn}from"node:util";import{statSync as kn}from"node:fs";import{join as yn}from"node:path";var vn=gn(hn);function ue(e){return yn(e,"worktrees")}a(ue,"workflowWorktreeBaseDir");var Sn=360*60*1e3;function st(e,t){return vn("git",[...e],{cwd:t}).then(n=>n.stdout)}a(st,"defaultRunGit");function xn(e){return kn(e).mtimeMs}a(xn,"defaultMtimeMs");function Mn(e){let t=[],n,o,i=a(()=>{n&&t.push(o?{path:n,branch:o}:{path:n}),n=void 0,o=void 0},"flush");for(let r of e.split(/\r?\n/))r.startsWith("worktree ")?(i(),n=r.slice(9).trim()):r.startsWith("branch ")&&(o=r.slice(7).trim().replace(/^refs\/heads\//,""));return i(),t}a(Mn,"parseWorktreeList");function it(e){return e.replace(/\\/g,"/").replace(/\/+$/,"")}a(it,"normalize");function ct(e,t){let n=it(e),o=it(t);return n===o||n.startsWith(`${o}/`)}a(ct,"isUnder");async function Rn(e,t,n){try{let i=(await t(["status","--porcelain"],e.path)).split(/\r?\n/).filter(c=>c.trim().length>0).length,r=await t(["rev-list","--count","HEAD","--not","--remotes"],e.path),s=Number.parseInt(r.trim(),10)||0;return i>0||s>0}catch(o){return n.push(`retain ${e.path}: cannot verify worktree cleanliness: ${o instanceof Error?o.message:String(o)}`),!0}}a(Rn,"worktreeHasChanges");async function ft(e,t,n,o,i){if(await Rn(e,n,i)){i.push(`retain ${e.path}: worktree has unmerged changes`);return}try{await n(["worktree","remove",e.path,"--force"],t),o.push(e.path)}catch(r){i.push(`remove ${e.path}: ${r instanceof Error?r.message:String(r)}`);return}if(e.branch)try{await n(["branch","-D",e.branch],t)}catch{}}a(ft,"removeWorktree");async function dt(e,t,n){try{let o=await t(["worktree","list","--porcelain"],e);return Mn(o)}catch(o){n.push(`list worktrees: ${o instanceof Error?o.message:String(o)}`);return}}a(dt,"listWorktrees");async function de(e,t,n){try{await t(["worktree","prune"],e)}catch(o){n.push(`prune: ${o instanceof Error?o.message:String(o)}`)}}a(de,"prune");async function ut(e,t={}){let n=[],o=[];if(!e.gitRoot)return{removed:o,warnings:n};let i=t.runGit??st,r=await dt(e.gitRoot,i,n);if(!r)return{removed:o,warnings:n};for(let s of r)ct(s.path,e.baseDir)&&await ft(s,e.gitRoot,i,o,n);return o.length>0&&await de(e.gitRoot,i,n),{removed:o,warnings:n}}a(ut,"sweepWorkflowRunWorktrees");async function lt(e,t={}){let n=[],o=[];if(!e.gitRoot)return{removed:o,warnings:n};let i=t.runGit??st,r=t.mtimeMs??xn,s=t.now??(()=>Date.now()),c=e.maxAgeMs??Sn;await de(e.gitRoot,i,n);let p=await dt(e.gitRoot,i,n);if(!p)return{removed:o,warnings:n};for(let l of p){if(!ct(l.path,e.workflowRunsRoot))continue;let h;try{h=s()-r(l.path)}catch{continue}h>=c&&await ft(l,e.gitRoot,i,o,n)}return o.length>0&&await de(e.gitRoot,i,n),{removed:o,warnings:n}}a(lt,"pruneStaleWorkflowWorktrees");var Tn=200,mt={maxAgents:64,tokenBudget:2e5};function En(e,t){let n=e.meta,o=V(n,t);return{name:n.name,description:n.description,phases:n.phases??[],...n.plannedAgents!==void 0?{plannedAgents:n.plannedAgents}:{},maxAgents:o.maxAgents??null,maxConcurrency:o.maxConcurrency??null,tokenBudget:o.tokenBudget??null,writesFiles:n.readOnly!==!0}}a(En,"buildApprovalSummary");function le(e,t){if(e!==void 0)return!Number.isInteger(e)||e<=0?1:Math.min(e,t)}a(le,"clampLimit");function An(e,t,n){let o=le(e,n),i=le(t,n);return o===void 0?i:i===void 0?o:Math.min(o,i)}a(An,"clampEffectiveLimit");function wt(e,t){if(!(e==null||!Number.isFinite(e)||e<=0))return Math.min(Math.floor(e),t)}a(wt,"clampTokenBudget");function Pn(e,t,n){let o=wt(e,n),i=wt(t,n);return o===void 0?i:i===void 0?o:Math.min(o,i)}a(Pn,"clampEffectiveTokenBudget");function V(e,t){let n=An(e.maxAgents,t?.maxAgents,mt.maxAgents),o=ge(),i=[e.maxConcurrency,t?.maxConcurrency].map(c=>le(c,o)).filter(c=>c!==void 0),r=i.length===0?o:Math.min(o,...i),s=Pn(e.tokenBudget,t?.tokenBudget,mt.tokenBudget);return{...n!==void 0?{maxAgents:n}:{},...r!==void 0?{maxConcurrency:r}:{},...s!==void 0?{tokenBudget:s}:{}}}a(V,"clampWorkflowLimits");function pt(e){if(typeof e=="string"&&e.trim().length>0)return e;if(typeof e!="object"||e===null)return;let t=e,n=t.synthesis;if(typeof n=="string"&&n.trim().length>0)return n;if(typeof n=="object"&&n!==null){let o=n.text;if(typeof o=="string"&&o.trim().length>0)return o}for(let o of["summary","report","text","result"]){let i=t[o];if(typeof i=="string"&&i.trim().length>0)return i}}a(pt,"workflowResultSummary");async function me(e){let t=V(e.module.meta,e.hostPolicy),n=En(e.module,e.hostPolicy);if(e.approval&&!await e.approval(n))return{kind:"denied",summary:n};let o=e.now??(()=>Date.now()),i=e.ctx?.executionCwd??e.ctx?.gitRoot;await lt({workflowRunsRoot:Wn(e.runDir),gitRoot:i},{now:o,...e.worktreeSweepDeps});let r=at(e.runDir,{now:o}),s=e.resumeFromRunDir!==void 0?bn(e.resumeFromRunDir):void 0,c=e.onWorkflowProcessEvent?Se({runId:e.runId,workflowName:e.module.meta.name,displayName:e.processMetadata?.displayName??e.module.meta.name,...e.processMetadata?.goal!==void 0?{goal:e.processMetadata.goal}:{},...e.processMetadata?.source!==void 0?{source:e.processMetadata.source}:{},...e.processMetadata?.savedWorkflowName!==void 0?{savedWorkflowName:e.processMetadata.savedWorkflowName}:{},...e.processMetadata?.sourceRunId!==void 0?{sourceRunId:e.processMetadata.sourceRunId}:{},...e.processMetadata?.sourceWorkflowName!==void 0?{sourceWorkflowName:e.processMetadata.sourceWorkflowName}:{},...e.processMetadata?.revisionOf!==void 0?{revisionOf:e.processMetadata.revisionOf}:{},...s!==void 0?{resumedFromRunId:s}:{},...e.processMetadata?.hostMetadata!==void 0?{hostMetadata:{...e.processMetadata.hostMetadata}}:{},...e.module.meta.phases!==void 0?{phases:e.module.meta.phases}:{},...t.maxAgents!==void 0?{maxAgents:t.maxAgents}:{},...e.module.meta.plannedAgents!==void 0?{plannedAgents:e.module.meta.plannedAgents}:{},...t.tokenBudget!==void 0?{tokenBudget:t.tokenBudget}:{},now:a(()=>new Date(o()).toISOString(),"now")}):void 0,p=e.scriptSnapshot?r.writeScriptSnapshot(e.scriptSnapshot):void 0,l=e.backend??On(e),v={...e.beforeSpawn?Fn(l,e.beforeSpawn):l,writeArtifact:a(async(M,we)=>r.writeArtifact(M,we),"writeArtifact")},k=o(),m;try{m=await Me({runId:e.runId,args:e.args,backend:v,limits:t,...e.signal?{signal:e.signal}:{},summarizeResult:pt,resolveWorkflowModule:Qe(i??process.cwd()),resultCache:ot(e.runDir,e.resumeFromRunDir?{readFrom:e.resumeFromRunDir}:{}),onEvent:a(M=>{r.onEvent(M),c&&e.onWorkflowProcessEvent?.(c.applyEvent(M)),e.onEvent?.(M)},"onEvent")},M=>e.module.run(M,e.args))}finally{await ut({baseDir:ue(e.runDir),gitRoot:i},{now:o,...e.worktreeSweepDeps})}let K=m.ok?pt(m.result):void 0;return r.writeRunJson({meta:e.module.meta,args:e.args,state:m.state,startedAt:k,endedAt:o(),...p?{scriptSnapshot:p}:{},...K!==void 0?{resultSummary:K}:{},...e.processMetadata!==void 0||s!==void 0?{processMetadata:{...e.processMetadata,...s!==void 0?{resumedFromRunId:s}:{}}}:{}}),m.ok?{kind:"completed",result:m.result,state:m.state}:{kind:"failed",error:m.error,state:m.state}}a(me,"runWorkflowModule");function On(e){if(!e.ctx||!e.childOptions)throw new Error("runWorkflowModule requires either a backend or ctx + childOptions");return qe({ctx:e.ctx,childOptions:e.childOptions,runId:e.runId,defaultChildReadOnly:e.module.meta.readOnly===!0})}a(On,"buildBackend");function Fn(e,t){return{...e,spawn:a(async n=>(await t(),e.spawn(n)),"spawn")}}a(Fn,"withBeforeSpawn");function In(e,t,n){let o=e?.onWorkflowAgentDigest;o&&(n.type==="agent_completed"||n.type==="agent_unverified"||n.type==="agent_failed"||n.type==="agent_summary_updated")&&o({runId:t,event:n})}a(In,"emitWorkflowAgentDigest");async function ht(e){let t={...Ae({options:e.options,runtime:e.options.extensionRuntime,managedProtocolPayloadRef:{current:void 0}}),workflowWorktreeBaseDir:ue(e.runDir)},n={maxIterationsPerChild:Tn,parentRole:"worker",parentHarness:"tool-dispatch",parentOptions:{provider:e.options.provider,model:e.options.modelOverride??e.options.model,effort:e.options.effort,reasoningMode:e.options.reasoningMode,repoIntelligenceMode:e.options.context?.repoIntelligenceMode,repoIntelligenceTrace:e.options.context?.repoIntelligenceTrace,extensionRuntime:e.options.extensionRuntime,events:e.options.events},...e.options.guardrails?{guardrails:e.options.guardrails}:{},...t.planModeBlockCheck?{planModeBlockCheck:t.planModeBlockCheck}:{}},o=e.onWorkflowProcessEvent||e.options.events?.onWorkflowProcessEvent?r=>{e.onWorkflowProcessEvent?.(r),e.options.events?.onWorkflowProcessEvent?.(r)}:void 0,i=e.onEvent||e.options.events?.onWorkflowAgentDigest?r=>{e.onEvent?.(r),In(e.options.events,e.runId,r)}:void 0;return me({module:e.module,args:e.args,runId:e.runId,runDir:e.runDir,ctx:t,childOptions:n,...e.approval?{approval:e.approval}:{},...e.signal?{signal:e.signal}:{},...i?{onEvent:i}:{},...o?{onWorkflowProcessEvent:o}:{},...e.options.workflowHostPolicy?{hostPolicy:e.options.workflowHostPolicy}:{},...e.now?{now:e.now}:{},...e.scriptSnapshot?{scriptSnapshot:e.scriptSnapshot}:{},...e.resumeFromRunDir?{resumeFromRunDir:e.resumeFromRunDir}:{},...e.processMetadata?{processMetadata:e.processMetadata}:{},...e.beforeSpawn?{beforeSpawn:e.beforeSpawn}:{}})}a(ht,"runWorkflowFromOptions");function Cn(e){if(typeof e=="string"&&e.trim().length>0)return e;if(typeof e!="object"||e===null)return;let t=e,n=t.synthesis;if(typeof n=="string"&&n.trim().length>0)return n;if(typeof n=="object"&&n!==null){let o=n.text;if(typeof o=="string"&&o.trim().length>0)return o}for(let o of["summary","report","text","result"]){let i=t[o];if(typeof i=="string"&&i.trim().length>0)return i}}a(Cn,"resultText");function $n(e){if(e.kind==="completed"){let t=Cn(e.result);return t!==void 0?{status:"completed",resultText:t}:{status:"completed"}}return e.kind==="denied"?{status:"denied"}:{status:"failed",error:e.error}}a($n,"classifyOutcome");function Nn(e,t){return{kind:"failed",error:t instanceof Error?t:new Error(String(t)),state:{runId:e,status:"failed",totalSpawned:0,events:[],artifacts:[]}}}a(Nn,"failedOutcome");var Dn=1e3;function _n(e={},t=Re(e)){let n=new Map,o=a(r=>r?{...r,runDir:n.get(r.runId)??""}:void 0,"withRunDir"),i=a((r,s)=>{if(n.set(r.runId,r.runDir),n.size>Dn){let l=new Set(t.list().map(h=>h.runId));for(let h of n.keys())h!==r.runId&&!l.has(h)&&n.delete(h)}let c=V(r.meta,r.hostPolicy),p=t.start({runId:r.runId,workflow:r.meta.name,...r.meta.phases!==void 0?{phases:r.meta.phases}:{},...c.maxAgents!==void 0?{maxAgents:c.maxAgents}:{},...r.meta.plannedAgents!==void 0?{plannedAgents:r.meta.plannedAgents}:{},...c.tokenBudget!==void 0?{tokenBudget:c.tokenBudget}:{},...r.processMetadata!==void 0?{processMetadata:r.processMetadata}:{},...r.signal?{signal:r.signal}:{},runFn:s,classify:$n,onError:a(l=>Nn(r.runId,l),"onError")});return{runId:p.runId,done:p.done,getSnapshot:a(()=>o(p.getSnapshot()),"getSnapshot"),getProcessSnapshot:a(()=>p.getProcessSnapshot(),"getProcessSnapshot")}},"startManaged");return{start:a(r=>i({runId:r.runId,runDir:r.runDir,meta:r.module.meta,hostPolicy:r.hostPolicy,processMetadata:r.processMetadata,signal:r.signal},s=>me({...r,signal:s.signal,beforeSpawn:s.beforeSpawn,onEvent:a(c=>{s.onEvent(c),r.onEvent?.(c)},"onEvent")})),"start"),startFromOptions:a(r=>i({runId:r.runId,runDir:r.runDir,meta:r.module.meta,hostPolicy:r.options.workflowHostPolicy,processMetadata:r.processMetadata,signal:r.signal},s=>ht({...r,signal:s.signal,beforeSpawn:s.beforeSpawn,onEvent:a(c=>{s.onEvent(c),r.onEvent?.(c)},"onEvent")})),"startFromOptions"),list:a(()=>t.list().map(r=>({...r,runDir:n.get(r.runId)??""})),"list"),get:a(r=>o(t.get(r)),"get"),subscribeWorkflowProcess:a(r=>t.subscribeWorkflowProcess(r),"subscribeWorkflowProcess"),getWorkflowProcessSnapshot:a(r=>t.getWorkflowProcessSnapshot(r),"getWorkflowProcessSnapshot"),listWorkflowProcessSnapshots:a(r=>t.listWorkflowProcessSnapshots(r),"listWorkflowProcessSnapshots"),pause:a(r=>t.pause(r),"pause"),resume:a(r=>t.resume(r),"resume"),stop:a((r,s)=>t.stop(r,s),"stop")}}a(_n,"createWorkflowRunManager");var gt;function Jr(){return gt??=_n({},be()),gt}a(Jr,"getDefaultWorkflowRunManager");export{qe as a,je as b,Be as c,Le as d,Qn as e,$ as f,Zt as g,ce as h,Xe as i,en as j,ir as k,sr as l,cr as m,fr as n,dr as o,ur as p,pn as q,at as r,mt as s,En as t,V as u,me as v,In as w,ht as x,_n as y,Jr as z};