@kodax-ai/kodax 0.7.71 → 0.7.72

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 (86) hide show
  1. package/CHANGELOG.md +602 -487
  2. package/README.md +46 -27
  3. package/README_CN.md +30 -13
  4. package/dist/chunks/agent-YKGU4USA.js +2 -0
  5. package/dist/chunks/argument-completer-QZETLNAB.js +2 -0
  6. package/dist/chunks/{chunk-SX2WFHIS.js → chunk-2RI252RN.js} +1 -1
  7. package/dist/chunks/chunk-CLFP6UGU.js +71 -0
  8. package/dist/chunks/chunk-E27LHEIP.js +37 -0
  9. package/dist/chunks/chunk-EDZ5KJFT.js +5 -0
  10. package/dist/chunks/chunk-GIK4SGAT.js +364 -0
  11. package/dist/chunks/chunk-GVWPHE23.js +310 -0
  12. package/dist/chunks/{chunk-A2TFSV5M.js → chunk-IR5KIK7E.js} +1 -1
  13. package/dist/chunks/chunk-JSDLBXME.js +755 -0
  14. package/dist/chunks/chunk-MVARIMQV.js +22 -0
  15. package/dist/chunks/chunk-PKQOEDHJ.js +628 -0
  16. package/dist/chunks/{chunk-64NQBOSN.js → chunk-SQODXBLX.js} +1 -1
  17. package/dist/chunks/chunk-VDGCGOQH.js +328 -0
  18. package/dist/chunks/chunk-VVE3UM4F.js +410 -0
  19. package/dist/chunks/chunk-WIBLZK4G.js +151 -0
  20. package/dist/chunks/{compaction-config-5KKKXYFT.js → compaction-config-TWCDFLX6.js} +1 -1
  21. package/dist/chunks/{construction-bootstrap-OXDDDW6O.js → construction-bootstrap-ZJPXUPXQ.js} +1 -1
  22. package/dist/chunks/dist-JT4ATXVM.js +2 -0
  23. package/dist/chunks/host-SVEDZUC5.js +2 -0
  24. package/dist/chunks/{run-manager-Z3W6MDO7.js → run-manager-RX42UNEM.js} +1 -1
  25. package/dist/chunks/{utils-CFOXDCB5.js → utils-OTT5CG5J.js} +1 -1
  26. package/dist/index.d.ts +13 -13
  27. package/dist/index.js +4 -4
  28. package/dist/kodax_bootstrap.js +28 -0
  29. package/dist/kodax_cli.js +1325 -1333
  30. package/dist/kodax_resume.js +44 -0
  31. package/dist/provider-capabilities.json +50 -48
  32. package/dist/runtime-worker.js +1322 -1330
  33. package/dist/sdk-a2a.d.ts +10 -9
  34. package/dist/sdk-a2a.js +1 -1
  35. package/dist/sdk-agent.d.ts +382 -206
  36. package/dist/sdk-agent.js +1 -1
  37. package/dist/sdk-coding.d.ts +80 -128
  38. package/dist/sdk-coding.js +1 -1
  39. package/dist/sdk-experimental-memory.js +1 -1
  40. package/dist/sdk-mcp.js +1 -1
  41. package/dist/sdk-media.d.ts +3 -0
  42. package/dist/sdk-media.js +1 -1
  43. package/dist/sdk-repl.d.ts +71 -23
  44. package/dist/sdk-repl.js +2 -2
  45. package/dist/sdk-runtime.d.ts +143 -31
  46. package/dist/sdk-runtime.js +1 -1
  47. package/dist/sdk-session.d.ts +6 -5
  48. package/dist/sdk-session.js +1 -1
  49. package/dist/sdk-skills.d.ts +5 -5
  50. package/dist/sdk-skills.js +1 -1
  51. package/dist/semantic-worker.js +14 -14
  52. package/dist/types-chunks/{bash-prefix-extractor.d-YoiZl5yt.d.ts → bash-prefix-extractor.d-CHJO5y94.d.ts} +107 -248
  53. package/dist/types-chunks/{capsule.d-CK5Pfz1k.d.ts → capsule.d-DxtdE-GD.d.ts} +24 -95
  54. package/dist/types-chunks/center-types.d-BBT122uJ.d.ts +91 -0
  55. package/dist/types-chunks/{commands.d-D6g2jq8V.d.ts → commands.d-DZxHzH5-.d.ts} +6 -4
  56. package/dist/types-chunks/{guardrail.d-DilYC1dh.d.ts → guardrail.d-DlpMnd-Y.d.ts} +1 -1
  57. package/dist/types-chunks/{guardrail.d-DdeDWnVu.d.ts → guardrail.d-auV61_h5.d.ts} +83 -10
  58. package/dist/types-chunks/public-api.d--IDNJsu1.d.ts +1342 -0
  59. package/dist/types-chunks/{run-manager.d-DxU3SSGR.d.ts → run-manager.d-Bh50OdVl.d.ts} +1 -1
  60. package/dist/types-chunks/sdk-session-Cfw6NFu-.d.ts +82 -0
  61. package/dist/types-chunks/{types.d-CEZZSY9s.d.ts → types.d-CNZgY52F.d.ts} +2 -2
  62. package/dist/types-chunks/{types.d-vJExiRje.d.ts → types.d-DCQVBqVn.d.ts} +10 -5
  63. package/dist/types-chunks/{types.d-CRCaLt_s.d.ts → types.d-DH1mvdcl.d.ts} +284 -164
  64. package/dist/types-chunks/{types.d-CzsLFqmf.d.ts → types.d-EqQmHztg.d.ts} +9 -10
  65. package/dist/types-chunks/{utils.d-Cb6vdvFM.d.ts → utils.d-gmn3c5U4.d.ts} +9 -12
  66. package/docs/SDK_EMBEDDER_GUIDE.md +171 -26
  67. package/package.json +4 -4
  68. package/scripts/kodax-bin.cjs +4 -2
  69. package/scripts/production-env.cjs +9 -0
  70. package/dist/chunks/agent-X2EWQADL.js +0 -2
  71. package/dist/chunks/argument-completer-BLNXDO2F.js +0 -2
  72. package/dist/chunks/chunk-4DY756KL.js +0 -70
  73. package/dist/chunks/chunk-52JSZ77P.js +0 -37
  74. package/dist/chunks/chunk-A574DBTV.js +0 -422
  75. package/dist/chunks/chunk-F7KGYHJ3.js +0 -624
  76. package/dist/chunks/chunk-GVTM4Z6O.js +0 -151
  77. package/dist/chunks/chunk-PHH4TRGF.js +0 -22
  78. package/dist/chunks/chunk-PVUXONQB.js +0 -366
  79. package/dist/chunks/chunk-T7LYK53M.js +0 -329
  80. package/dist/chunks/chunk-VRSVNU2Y.js +0 -7
  81. package/dist/chunks/chunk-Y5XKAN7C.js +0 -755
  82. package/dist/chunks/chunk-Z535BARK.js +0 -306
  83. package/dist/chunks/dist-IXJRJ27U.js +0 -2
  84. package/dist/chunks/host-VRKDAN26.js +0 -2
  85. package/dist/types-chunks/public-api.d-BvCp5VkW.d.ts +0 -601
  86. package/dist/types-chunks/sdk-session-wGpa7X_U.d.ts +0 -796
package/dist/index.js CHANGED
@@ -1,9 +1,9 @@
1
1
  // @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
2
- import{a as Te,e as Le,k as Ke,l as Xe,m as qe,n as De,o as Fe,p as M,q as Ue}from"./chunks/chunk-4DY756KL.js";import{Ib as C,Sa as ke,Ta as be,eb as Ce,xb as Me,yb as Oe}from"./chunks/chunk-Z535BARK.js";import{k as V,n as G,q as J,r as Q,s as Y,u as Z,v as ee,w as te,wa as Ee,x as ne,ya as Ae,za as xe}from"./chunks/chunk-F7KGYHJ3.js";import{K as ye,L as we,M as Se,T as b,U as Pe,W as B,X as H,Y as N,_ as _e,ca as Ie,m as pe,n as me,o as k,q as fe,s as ge,t as he,u as ve,v as Re}from"./chunks/chunk-GVTM4Z6O.js";import"./chunks/chunk-SX2WFHIS.js";import{$ as Fl,A as pl,Aa as uc,B as ml,Ba as pc,C as fl,Ca as mc,D as gl,Da as fc,E as hl,Ea as gc,F as vl,Fa as hc,G as Rl,Ga as vc,H as yl,Ha as Rc,I as wl,Ia as yc,J as Sl,Ja as wc,K as Pl,Ka as Sc,L as _l,M as Il,N as El,O as Al,P as xl,Q as kl,R as bl,S as Cl,T as Ml,U as Ol,V as Tl,W as Ll,X as Kl,Y as Xl,Z as ql,_ as Dl,a as rn,aa as Ul,b as an,ba as jl,c as dn,ca as Wl,d as Vd,da as $l,e as Bd,ea as zl,f as Hd,fa as Vl,g as Nd,ga as Bl,h as Gd,ha as Hl,i as Jd,ia as Nl,j as Qd,ja as Gl,k as Yd,ka as Jl,l as Zd,la as Ql,m as el,ma as Yl,n as tl,na as Zl,o as nl,oa as ec,p as il,pa as tc,q as ol,qa as nc,r as sl,ra as ic,s as rl,sa as oc,t as al,ta as sc,u as A,ua as rc,v as dl,va as ac,w as ll,wa as dc,x,xa as z,y as cl,ya as lc,z as ul,za as cc}from"./chunks/chunk-A574DBTV.js";import{a as Hs,b as Ns,c as Gs,d as Js,e as Qs,f as Ys,g as Zs,h as er,i as tr,j as Ur}from"./chunks/chunk-A2TFSV5M.js";import{A as Cr,B as Mr,C as Or,D as Tr,E as Lr,F as Kr,G as Xr,H as qr,I as Dr,J as Fr,a as or,b as sr,c as rr,d as ar,e as dr,f as lr,g as cr,h as ur,i as pr,j as mr,k as fr,l as gr,m as hr,n as vr,o as Rr,p as yr,q as wr,r as Sr,s as Pr,t as _r,u as Ir,v as Er,w as Ar,x as xr,y as kr,z as br}from"./chunks/chunk-PHH4TRGF.js";import{$ as jr,A as Ts,Aa as ed,B as Ls,Ba as td,C as Ks,Ca as nd,G as Xs,H as qs,I as Ds,J as Fs,Ja as rd,Ka as ad,M as Us,Ma as dd,a as Mn,aa as Wr,b as On,ba as $r,ca as zr,da as Vr,e as ws,ea as Br,f as Ss,fa as Hr,g as Ps,ga as Nr,h as _s,i as Is,ia as Gr,j as Es,ja as Jr,k as As,ka as Qr,p as xs,q as ks,ta as Ha,ua as Na,v as bs,va as Ga,w as Cs,wa as Ja,xa as Qa,y as Ms,ya as Ya,z as Os,za as Za}from"./chunks/chunk-T7LYK53M.js";import"./chunks/chunk-64NQBOSN.js";import{a as Bs}from"./chunks/chunk-44QXPEEE.js";import{$ as Ao,$a as Rs,$b as _a,A as ro,Aa as Jo,Ab as Zr,Ad as jd,B as ao,Ba as Qo,Bb as ea,Bd as Wd,C as lo,Ca as Yo,Cb as ta,Cd as $d,D as co,Da as Zo,Db as na,Dd as zd,Ea as es,Eb as I,F as uo,Fa as ts,Fb as U,Fc as id,G as po,Ga as ns,Gb as ia,Gc as od,H as mo,Ha as is,Hb as oa,Hc as sd,I as fo,Ia as os,Ib as j,J as go,Ja as ss,Jb as sa,Ka as rs,Kb as ra,La as as,Lb as aa,Lc as ld,Ma as ds,Mb as da,Mc as cd,Na as ls,Nb as la,Nc as ud,O as ho,Oa as cs,Ob as ca,Oc as pd,Pb as ua,Pc as md,Q as vo,Qb as pa,Qc as fd,Rb as ma,Rc as gd,S as Ro,Sb as fa,Sc as hd,T as yo,Ta as us,Tb as ga,Tc as vd,U as wo,Ua as ps,Ub as ha,Uc as Rd,V as So,Va as ms,Vb as va,Vc as yd,W as Po,Wa as fs,Wb as Ra,Xa as gs,Xb as ya,Y as _o,Ya as hs,Yb as wa,Yc as wd,Z as Io,Za as vs,Zb as Sa,Zc as Sd,_ as Eo,_b as Pa,_c as Pd,aa as xo,ab as ys,ac as Ia,ba as ko,bc as Ea,ca as bo,cc as Aa,d as zi,da as Co,dc as xa,e as Vi,ea as Mo,ec as ka,ed as _d,fa as Oo,fc as ba,fd as Id,ga as To,gc as Ca,gd as Ed,ha as Lo,hc as Ma,hd as Ad,i as Bi,ia as Ko,ic as Oa,id as xd,j as Hi,ja as Xo,jc as Ta,jd as kd,k as Ni,ka as qo,kc as La,kd as bd,l as Gi,la as Do,lc as Ka,ld as Cd,m as Ji,ma as Fo,mc as Xa,md as Md,n as Qi,nb as js,nc as qa,nd as Od,o as Yi,ob as Ws,oc as Da,od as Td,p as Zi,pa as Uo,pb as $s,pc as Fa,pd as Ld,q as eo,qa as jo,qb as zs,qc as Ua,qd as $,r as to,ra as Wo,rb as Vs,rc as ja,rd as Kd,s as no,sa as $o,sb as F,sc as Wa,sd as Xd,t as io,ta as zo,tb as nr,tc as $a,td as qd,ua as Vo,ub as ir,uc as za,ud as Dd,va as Bo,vc as W,vd as Fd,wc as E,xa as Ho,xc as Va,y as oo,ya as No,yc as Ba,z as so,za as Go,zb as Yr,zd as Ud}from"./chunks/chunk-PVUXONQB.js";import{Aa as jt,Ba as Wt,C as K,Ca as $t,D as wt,Da as zt,E as St,Ea as Vt,F as X,Fa as Bt,G as Pt,Ga as Ht,H as _t,Ha as Nt,Ia as Gt,Ja as Jt,Ka as Qt,La as Yt,Ma as D,Na as Zt,Oa as en,Pa as tn,Qa as nn,Ra as on,U as It,Ua as sn,ca as Et,d as mt,da as At,e as ft,f as gt,ia as xt,ja as kt,ka as q,la as bt,m as ht,n as vt,oa as Ct,pa as Mt,ra as Ot,sa as Tt,ta as Lt,ua as Kt,v as Rt,va as Xt,w as yt,wa as qt,xa as Dt,ya as Ft,za as Ut}from"./chunks/chunk-ZJIMT5I3.js";import{$b as ui,Bc as bi,Cc as Ci,Dc as Mi,Ec as Oi,Fc as Ti,Gc as Li,Hc as Ki,Jc as Xi,Kc as qi,Lc as Di,Mc as Fi,Nc as Ui,Oc as ji,Sb as ni,Tb as ii,Ub as oi,Vb as si,Vc as Wi,Wb as ri,Wc as $i,Xb as ai,Yb as di,Zb as li,_b as ci,a as Tn,ac as pi,b as Ln,bc as mi,c as Kn,cc as fi,d as Xn,dc as gi,e as qn,ec as hi,f as Dn,fc as vi,gc as Ri,h as Fn,hc as yi,i as Un,ic as wi,j as jn,jc as Si,k as Wn,kc as Pi,l as $n,lc as _i,nc as Ii,oc as Ei,pc as Ai,s as zn,sa as Nn,t as Vn,tc as xi,u as Bn,uc as ki,v as Hn,va as Gn,vb as ei,wb as ti}from"./chunks/chunk-Y5XKAN7C.js";import{d as Jn,e as Qn,f as Yn,g as Zn}from"./chunks/chunk-52JSZ77P.js";import{C as Cn,a as ln,b as cn,c as un,d as pn,e as mn,f as fn,g as gn,h as hn,i as vn,j as Rn,k as yn,l as wn,m as Sn,n as Pn,o as _n,p as In,q as En,r as An,s as xn,t as kn,u as bn}from"./chunks/chunk-VRSVNU2Y.js";import"./chunks/chunk-23X6REO4.js";import{a as s}from"./chunks/chunk-ONUPGMER.js";import je from"node:process";var oe=["off","error","info","debug"],ie={off:0,error:1,info:2,debug:3};function O(n,e="info"){if(!n)return e;let t=n.trim().toLowerCase();return oe.includes(t)?t:e}s(O,"resolveAcpLogLevel");var y=class{static{s(this,"AcpLogger")}level;sink;constructor(e={}){this.level=e.level??"info",this.sink=e.sink??(t=>{je.stderr.write(`${t}
3
- `)})}handleEvent(e){let t=We(e);t&&this.log(t.level,t.message,t.fields)}error(e,t){this.log("error",e,t)}info(e,t){this.log("info",e,t)}debug(e,t){this.log("debug",e,t)}log(e,t,i){if(ie[this.level]<ie[e])return;let o=new Date().toISOString(),r=i?ze(i):"",a=r?` ${r}`:"";this.sink(`[ACP][${e.toUpperCase()}][${o}] ${t}${a}`)}};function We(n){switch(n.type){case"server_attached":return{level:"info",message:"ACP server attached",fields:u(n)};case"connection_closed":return{level:"info",message:"ACP connection closed",fields:u(n)};case"initialize_completed":return{level:"info",message:"ACP initialize completed",fields:u(n)};case"session_created":return{level:"info",message:"ACP session created",fields:u(n)};case"session_mode_changed":return{level:"info",message:"ACP session mode changed",fields:u(n)};case"prompt_skipped":return{level:"info",message:"ACP prompt skipped because session was already aborted",fields:u(n)};case"prompt_started":return{level:"info",message:"ACP prompt started",fields:u(n)};case"prompt_preview":return{level:"debug",message:"ACP prompt preview",fields:u(n)};case"prompt_finished":return{level:"info",message:"ACP prompt finished",fields:u(n)};case"prompt_cancelled":return{level:"info",message:"ACP prompt cancelled during execution",fields:u(n)};case"prompt_failed":return{level:"error",message:"ACP prompt failed",fields:u(n)};case"cancel_requested":return{level:"info",message:"ACP cancel requested",fields:u(n)};case"tool_permission_evaluated":return{level:"debug",message:"ACP evaluating tool permission",fields:u(n)};case"tool_permission_resolved":return $e(n);case"permission_requested":return{level:"info",message:"ACP permission requested",fields:u(n)};case"notification_failed":return{level:"error",message:`Failed to send ${n.label}`,fields:{sessionId:n.sessionId,error:n.error}};case"repo_intelligence_trace":return{level:"debug",message:"ACP repo intelligence trace",fields:u(n)};default:return null}}s(We,"mapEventToLogEntry");function u(n){let{type:e,...t}=n;return t}s(u,"toLogFields");function $e(n){let e={sessionId:n.sessionId,tool:n.tool,toolId:n.toolId,error:n.error};switch(n.outcome){case"auto_allowed_read_only_bash":return{level:"debug",message:"ACP tool permission auto-allowed for read-only bash",fields:e};case"auto_allowed_remembered":return{level:"info",message:"ACP tool permission reused remembered allowance",fields:e};case"blocked_plan_mode":return{level:"info",message:"ACP tool blocked by plan mode",fields:e};case"auto_allowed_plan_mode":return{level:"debug",message:"ACP tool auto-allowed in plan mode",fields:e};case"auto_allowed_policy":return{level:"debug",message:"ACP tool auto-allowed by permission policy",fields:e};case"request_failed_disconnected":return{level:"error",message:"ACP permission request failed because client is disconnected",fields:e};case"request_failed_incomplete":return{level:"error",message:"ACP permission request did not complete",fields:e};case"request_dismissed":return{level:"info",message:"ACP permission request dismissed",fields:e};case"request_rejected":return{level:"info",message:"ACP permission rejected",fields:e};case"request_granted":return{level:"info",message:"ACP permission granted",fields:{...e,remember:n.remember??!1}}}}s($e,"mapPermissionOutcomeToLogEntry");function ze(n){return Object.entries(n).flatMap(([e,t])=>t===void 0?[]:`${e}=${Ve(t)}`).join(" ")}s(ze,"formatFields");function Ve(n){return n===null?"null":typeof n=="string"?JSON.stringify(n.length>160?`${n.slice(0,157)}...`:n):String(n)}s(Ve,"formatFieldValue");var w=class{static{s(this,"AcpEventEmitter")}sinks;constructor(e={}){this.sinks=[...e.sinks??[]]}emit(e){for(let t of this.sinks)try{t.handleEvent(e)}catch(i){}}};import{randomUUID as se}from"node:crypto";import Be from"node:os";import g from"node:path";import R from"node:process";import{Readable as He,Writable as Ne}from"node:stream";import{AgentSideConnection as Ge,PROTOCOL_VERSION as re,RequestError as S,ndJsonStream as Je}from"@agentclientprotocol/sdk";var ue=["plan","accept-edits","auto-in-project"];function T(n){return $(n)}s(T,"acpIsFileModificationTool");var Qe={read:"read",write:"edit",edit:"edit",undo:"edit",bash:"execute",grep:"search",glob:"search",think:"think",fetch:"fetch"},Ye=[{id:"plan",name:"Plan",description:"Read-only planning mode. File modifications are blocked except the plan-mode whitelist."},{id:"accept-edits",name:"Accept Edits",description:"File edits are auto-approved. Shell commands still require confirmation unless explicitly remembered."},{id:"auto-in-project",name:"Auto In Project",description:"Project-scoped changes are auto-approved. Protected paths and risky out-of-project operations still require confirmation."}];function L(n,e){if(n==null)return;if(typeof n!="string")throw new Error(`${e} must be a string.`);let t=K(n);return t==="auto"?void 0:t}s(L,"normalizeOptionalEffort");function Ze(n){let e=n.replace(/\s+/g," ").trim();return e.length<=80?e:`${e.slice(0,77)}...`}s(Ze,"buildAcpSessionTitle");function et(n){let e=n.effort;if(e===void 0)return{kind:"absent"};try{return{kind:"value",value:L(e,"Prompt effort")}}catch(t){let i=t instanceof Error?t.message:String(t);throw S.invalidParams({effort:e},i)}}s(et,"resolvePromptEffortOverride");function tt(n){let e={};for(let t of n)if("command"in t){let i={};for(let o of t.env??[])i[o.name]=o.value;e[t.name]={type:"stdio",command:t.command,args:t.args??[],env:Object.keys(i).length>0?i:void 0}}else if("type"in t&&t.type==="sse"){let i={};for(let o of t.headers??[])i[o.name]=o.value;e[t.name]={type:"sse",url:t.url,headers:Object.keys(i).length>0?i:void 0}}else if("type"in t&&t.type==="http"){let i={};for(let o of t.headers??[])i[o.name]=o.value;e[t.name]={type:"http",url:t.url,headers:Object.keys(i).length>0?i:void 0}}return e}s(tt,"convertAcpMcpServers");function nt(n){let e=[];for(let t of n){let i=t.trim();i&&!e.includes(i)&&e.push(i)}return e}s(nt,"dedupeExtensionPaths");function it(n){return Array.isArray(n)?nt(n.filter(e=>typeof e=="string"&&e.trim().length>0).map(e=>g.isAbsolute(e)?e:g.resolve(g.dirname(k),e))):[]}s(it,"normalizeConfiguredExtensionPaths");async function ot(n){try{return await j()}catch(e){let t=e instanceof Error?e.message:String(e);return n.error("ACP extension discovery failed: "+t),[]}}s(ot,"discoverAcpDefaultExtensions");async function st(n,e,t){let i=await I(t),o=await U(await I(e),i);await n.loadExtensions(o,{continueOnError:!0,loadSource:"discovery"}),await n.loadExtensions(i,{continueOnError:!0,loadSource:"config"})}s(st,"loadAcpExtensionGroups");function rt(n,e="accept-edits"){return n&&ue.includes(n)?n:e}s(rt,"normalizeAcpPermissionMode");function at(n){if(n&&ue.includes(n))return n;throw S.invalidParams({modeId:n},"Invalid session mode. Expected one of: plan, accept-edits, auto-in-project.")}s(at,"parseSessionMode");function dt(n){return{availableModes:Ye,currentModeId:n}}s(dt,"buildModeState");function ae(n){return Qe[n]??"other"}s(ae,"inferToolKind");function de(n,e){if(T(n)){let t=typeof e.path=="string"?e.path:void 0;return t?[{path:t}]:void 0}if(n==="bash"){let t=typeof e.command=="string"?e.command:"",i=ee(t);if(i.length>0)return i.map(o=>({path:o}))}}s(de,"inferToolLocations");function lt(n){let e=[];for(let t of n){let i=t,o=typeof i.type=="string"?i.type:"";if(o==="text"&&typeof i.text=="string"){e.push(i.text);continue}if(o==="resource_link"&&typeof i.uri=="string"){e.push(`[Resource] ${i.uri}`);continue}if(o==="resource"&&i.resource&&typeof i.resource=="object"){let r=i.resource;if(typeof r.text=="string"){e.push(r.text);continue}typeof r.uri=="string"&&e.push(`[Resource] ${r.uri}`)}}return e.join(`
2
+ import{a as Te,e as Le,l as Ke,m as Xe,n as qe,o as De,p as Fe,q as M,r as Ue}from"./chunks/chunk-CLFP6UGU.js";import{Ib as C,Sa as ke,Ta as be,eb as Ce,xb as Me,yb as Oe}from"./chunks/chunk-GVWPHE23.js";import{Aa as Ae,Ba as xe,k as V,n as G,q as J,r as Q,s as Y,u as Z,v as ee,w as te,x as ne,ya as Ee}from"./chunks/chunk-PKQOEDHJ.js";import{K as ye,L as we,M as Se,T as b,U as Pe,W as B,X as H,Y as N,_ as _e,ca as Ie,m as pe,n as me,o as k,q as fe,s as ge,t as he,u as ve,v as Re}from"./chunks/chunk-WIBLZK4G.js";import"./chunks/chunk-2RI252RN.js";import{$ as Vl,A as x,Aa as z,B as yl,Ba as Rc,C as wl,Ca as yc,D as Sl,Da as wc,E as Pl,Ea as Sc,F as _l,Fa as Pc,G as Il,Ga as _c,H as El,Ha as Ic,I as Al,Ia as Ec,J as xl,Ja as Ac,K as kl,Ka as xc,L as bl,La as kc,M as Cl,N as Ml,O as Ol,P as Tl,Q as Ll,R as Kl,S as Xl,T as ql,U as Dl,V as Fl,W as Ul,X as jl,Y as Wl,Z as $l,_ as zl,a as an,aa as Bl,b as dn,ba as Hl,c as ln,ca as Nl,d as Qd,da as Gl,e as Yd,ea as Jl,f as Zd,fa as Ql,g as el,ga as Yl,h as tl,ha as Zl,i as nl,ia as ec,j as il,ja as tc,k as ol,ka as nc,l as sl,la as ic,m as rl,ma as oc,n as al,na as sc,o as dl,oa as rc,p as ll,pa as ac,q as cl,qa as dc,r as ul,ra as lc,s as pl,sa as cc,t as ml,ta as uc,u as fl,ua as pc,v as gl,va as mc,w as hl,wa as fc,x as A,xa as gc,y as vl,ya as hc,z as Rl,za as vc}from"./chunks/chunk-VVE3UM4F.js";import{a as ed,b as td,c as nd,d as id,e as od,f as sd,g as rd,h as ad,i as dd,j as Vd}from"./chunks/chunk-IR5KIK7E.js";import{A as Kd,B as Xd,C as qd,D as Dd,E as Fd,F as Ud,G as jd,H as Wd,I as $d,J as zd,a as ld,b as cd,c as ud,d as pd,e as md,f as fd,g as gd,h as hd,i as vd,j as Rd,k as yd,l as wd,m as Sd,n as Pd,o as _d,p as Id,q as Ed,r as Ad,s as xd,t as kd,u as bd,v as Cd,w as Md,x as Od,y as Td,z as Ld}from"./chunks/chunk-MVARIMQV.js";import{$ as Ua,A as Pa,B as _a,Ba as Bd,C as Ia,Ca as Hd,D as Ea,E as Aa,F as xa,I as ka,J as ba,Ja as Nd,K as Ca,Ka as Gd,L as Ma,M as Oa,Ma as Jd,N as Ta,O as La,T as Ka,U as Xa,V as qa,W as Da,X as Fa,a as rn,aa as ja,b as Tn,ba as Wa,c as Ln,ca as $a,d as na,e as ia,f as oa,fa as za,g as sa,h as ra,i as aa,k as ua,l as pa,m as ma,n as fa,o as ga,p as ha,q as va,v as Ra,w as ya,y as wa,z as Sa}from"./chunks/chunk-VDGCGOQH.js";import"./chunks/chunk-SQODXBLX.js";import{a as Za}from"./chunks/chunk-44QXPEEE.js";import{$ as Io,$a as ys,$b as ur,$c as Yr,A as lo,Aa as No,Ab as I,B as co,Bb as F,C as uo,Ca as Go,Cb as js,Cc as Mr,D as po,Da as Jo,Db as Ws,Dc as Or,Ea as Qo,Eb as U,Ec as Tr,Ed as Ja,Fa as Yo,Fb as $s,Fc as Lr,Fd as Qa,Ga as Zo,Gb as zs,Gc as Kr,Gd as Ya,Ha as es,Hb as Vs,Hc as Xr,Ia as ts,Ib as Bs,Ic as qr,Ja as ns,Jb as Hs,Jc as Dr,K as mo,Ka as is,Kb as Ns,Kc as Fr,L as fo,La as os,Lb as Gs,Lc as Ur,M as go,Ma as ss,Mb as Js,Mc as jr,N as ho,Na as rs,Nb as Qs,Nc as Wr,O as vo,Oa as as,Ob as Ys,Oc as W,Pa as ds,Pb as Zs,Pc as $r,Qa as ls,Qb as er,Qc as zr,Ra as cs,Rb as tr,Rc as Vr,Sa as us,Sb as nr,Sc as Br,T as Ro,Ta as ps,Tb as ir,Tc as Hr,Ua as ms,Ub as or,V as yo,Va as fs,Vb as sr,Wa as gs,Wb as rr,X as wo,Xa as hs,Xb as ar,Xc as Nr,Y as So,Yb as dr,Yc as Gr,Z as Po,Za as vs,Zb as lr,Zc as Jr,_ as _o,_a as Rs,_b as cr,_c as Qr,ab as ws,ac as pr,ad as Zr,ba as Eo,bb as Ss,bc as mr,bd as ea,ca as Ao,cb as Ps,cc as fr,cd as ta,d as Bi,da as xo,db as _s,dc as gr,dd as da,e as Hi,ea as ko,eb as Is,ec as hr,ed as la,fa as bo,fb as Es,fc as vr,fd as ca,ga as Co,gb as As,gc as Rr,ha as Mo,hb as xs,hc as yr,i as Ni,ia as Oo,ib as ks,ic as wr,j as Gi,ja as To,jb as bs,jc as Sr,k as Ji,ka as Lo,kb as Cs,kc as Pr,l as Qi,la as Ko,lb as Ms,lc as _r,m as Yi,ma as Xo,mc as Ir,n as Zi,na as qo,nc as Er,o as eo,oa as Do,ob as Os,oc as Ar,p as to,pa as Fo,pc as xr,q as no,qa as Uo,qc as kr,r as io,ra as jo,rc as j,s as oo,sb as Ts,sc as E,sd as Va,t as so,tb as Ls,tc as br,td as Ba,ua as Wo,ub as Ks,uc as Cr,ud as Ha,va as $o,vb as Xs,vd as Na,wa as zo,wb as qs,wd as Ga,xa as Vo,xb as Ds,xd as $,y as ro,ya as Bo,yb as Fs,z as ao,za as Ho,zb as Us}from"./chunks/chunk-GIK4SGAT.js";import{Aa as jt,Ba as Wt,C as K,Ca as $t,D as wt,Da as zt,E as St,Ea as Vt,F as X,Fa as Bt,G as Pt,Ga as Ht,H as _t,Ha as Nt,Ia as Gt,Ja as Jt,Ka as Qt,La as Yt,Ma as D,Na as Zt,Oa as en,Pa as tn,Qa as nn,Ra as on,U as It,Ua as sn,ca as Et,d as mt,da as At,e as ft,f as gt,ia as xt,ja as kt,ka as q,la as bt,m as ht,n as vt,oa as Ct,pa as Mt,ra as Ot,sa as Tt,ta as Lt,ua as Kt,v as Rt,va as Xt,w as yt,wa as qt,xa as Dt,ya as Ft,za as Ut}from"./chunks/chunk-ZJIMT5I3.js";import{Ac as ki,Ec as bi,Fc as Ci,Mc as Mi,Nc as Oi,Oc as Ti,Pc as Li,Qc as Ki,Rc as Xi,Sc as qi,Uc as Di,Vc as Fi,Wc as Ui,Xc as ji,Yc as Wi,Zc as $i,a as Kn,b as Xn,bc as oi,c as qn,cc as si,d as Dn,dc as ri,e as Fn,ec as ai,ed as zi,f as Un,fc as di,fd as Vi,gc as li,h as jn,hc as ci,i as Wn,ic as ui,j as $n,jc as pi,k as zn,kc as mi,l as Vn,lc as fi,mc as gi,nc as hi,oc as vi,pc as Ri,qc as yi,rc as wi,s as Bn,sa as Jn,sb as ni,sc as Si,t as Hn,tb as ii,tc as Pi,u as Nn,uc as _i,v as Gn,va as Qn,vc as Ii,wc as Ei,yc as Ai,zc as xi}from"./chunks/chunk-JSDLBXME.js";import{d as Yn,e as Zn,f as ei,i as ti}from"./chunks/chunk-E27LHEIP.js";import{F as On,a as cn,b as un,c as pn,d as mn,e as fn,f as gn,g as hn,h as vn,i as Rn,j as yn,k as wn,l as Sn,m as Pn,n as _n,o as In,p as En,q as An,r as xn,s as kn,t as bn,u as Cn,y as Mn}from"./chunks/chunk-EDZ5KJFT.js";import"./chunks/chunk-23X6REO4.js";import{a as s}from"./chunks/chunk-ONUPGMER.js";import je from"node:process";var oe=["off","error","info","debug"],ie={off:0,error:1,info:2,debug:3};function O(n,e="info"){if(!n)return e;let t=n.trim().toLowerCase();return oe.includes(t)?t:e}s(O,"resolveAcpLogLevel");var y=class{static{s(this,"AcpLogger")}level;sink;constructor(e={}){this.level=e.level??"info",this.sink=e.sink??(t=>{je.stderr.write(`${t}
3
+ `)})}handleEvent(e){let t=We(e);t&&this.log(t.level,t.message,t.fields)}error(e,t){this.log("error",e,t)}info(e,t){this.log("info",e,t)}debug(e,t){this.log("debug",e,t)}log(e,t,i){if(ie[this.level]<ie[e])return;let o=new Date().toISOString(),r=i?ze(i):"",a=r?` ${r}`:"";this.sink(`[ACP][${e.toUpperCase()}][${o}] ${t}${a}`)}};function We(n){switch(n.type){case"server_attached":return{level:"info",message:"ACP server attached",fields:u(n)};case"connection_closed":return{level:"info",message:"ACP connection closed",fields:u(n)};case"initialize_completed":return{level:"info",message:"ACP initialize completed",fields:u(n)};case"session_created":return{level:"info",message:"ACP session created",fields:u(n)};case"session_mode_changed":return{level:"info",message:"ACP session mode changed",fields:u(n)};case"prompt_skipped":return{level:"info",message:"ACP prompt skipped because session was already aborted",fields:u(n)};case"prompt_started":return{level:"info",message:"ACP prompt started",fields:u(n)};case"prompt_preview":return{level:"debug",message:"ACP prompt preview",fields:u(n)};case"prompt_finished":return{level:"info",message:"ACP prompt finished",fields:u(n)};case"prompt_cancelled":return{level:"info",message:"ACP prompt cancelled during execution",fields:u(n)};case"prompt_failed":return{level:"error",message:"ACP prompt failed",fields:u(n)};case"cancel_requested":return{level:"info",message:"ACP cancel requested",fields:u(n)};case"tool_permission_evaluated":return{level:"debug",message:"ACP evaluating tool permission",fields:u(n)};case"tool_permission_resolved":return $e(n);case"permission_requested":return{level:"info",message:"ACP permission requested",fields:u(n)};case"notification_failed":return{level:"error",message:`Failed to send ${n.label}`,fields:{sessionId:n.sessionId,error:n.error}};case"repo_intelligence_trace":return{level:"debug",message:"ACP repo intelligence trace",fields:u(n)};default:return null}}s(We,"mapEventToLogEntry");function u(n){let{type:e,...t}=n;return t}s(u,"toLogFields");function $e(n){let e={sessionId:n.sessionId,tool:n.tool,toolId:n.toolId,error:n.error};switch(n.outcome){case"auto_allowed_read_only_bash":return{level:"debug",message:"ACP tool permission auto-allowed for read-only bash",fields:e};case"auto_allowed_remembered":return{level:"info",message:"ACP tool permission reused remembered allowance",fields:e};case"blocked_plan_mode":return{level:"info",message:"ACP tool blocked by plan mode",fields:e};case"auto_allowed_plan_mode":return{level:"debug",message:"ACP tool auto-allowed in plan mode",fields:e};case"auto_allowed_policy":return{level:"debug",message:"ACP tool auto-allowed by permission policy",fields:e};case"request_failed_disconnected":return{level:"error",message:"ACP permission request failed because client is disconnected",fields:e};case"request_failed_incomplete":return{level:"error",message:"ACP permission request did not complete",fields:e};case"request_dismissed":return{level:"info",message:"ACP permission request dismissed",fields:e};case"request_rejected":return{level:"info",message:"ACP permission rejected",fields:e};case"request_granted":return{level:"info",message:"ACP permission granted",fields:{...e,remember:n.remember??!1}}}}s($e,"mapPermissionOutcomeToLogEntry");function ze(n){return Object.entries(n).flatMap(([e,t])=>t===void 0?[]:`${e}=${Ve(t)}`).join(" ")}s(ze,"formatFields");function Ve(n){return n===null?"null":typeof n=="string"?JSON.stringify(n.length>160?`${n.slice(0,157)}...`:n):String(n)}s(Ve,"formatFieldValue");var w=class{static{s(this,"AcpEventEmitter")}sinks;constructor(e={}){this.sinks=[...e.sinks??[]]}emit(e){for(let t of this.sinks)try{t.handleEvent(e)}catch(i){}}};import{randomUUID as se}from"node:crypto";import Be from"node:os";import g from"node:path";import R from"node:process";import{Readable as He,Writable as Ne}from"node:stream";import{AgentSideConnection as Ge,PROTOCOL_VERSION as re,RequestError as S,ndJsonStream as Je}from"@agentclientprotocol/sdk";var ue=["plan","accept-edits","auto-in-project"];function T(n){return W(n)}s(T,"acpIsFileModificationTool");var Qe={read:"read",write:"edit",edit:"edit",undo:"edit",bash:"execute",grep:"search",glob:"search",think:"think",fetch:"fetch"},Ye=[{id:"plan",name:"Plan",description:"Read-only planning mode. File modifications are blocked except the plan-mode whitelist."},{id:"accept-edits",name:"Accept Edits",description:"File edits are auto-approved. Shell commands still require confirmation unless explicitly remembered."},{id:"auto-in-project",name:"Auto In Project",description:"Project-scoped changes are auto-approved. Protected paths and risky out-of-project operations still require confirmation."}];function L(n,e){if(n==null)return;if(typeof n!="string")throw new Error(`${e} must be a string.`);let t=K(n);return t==="auto"?void 0:t}s(L,"normalizeOptionalEffort");function Ze(n){let e=n.replace(/\s+/g," ").trim();return e.length<=80?e:`${e.slice(0,77)}...`}s(Ze,"buildAcpSessionTitle");function et(n){let e=n.effort;if(e===void 0)return{kind:"absent"};try{return{kind:"value",value:L(e,"Prompt effort")}}catch(t){let i=t instanceof Error?t.message:String(t);throw S.invalidParams({effort:e},i)}}s(et,"resolvePromptEffortOverride");function tt(n){let e={};for(let t of n)if("command"in t){let i={};for(let o of t.env??[])i[o.name]=o.value;e[t.name]={type:"stdio",command:t.command,args:t.args??[],env:Object.keys(i).length>0?i:void 0}}else if("type"in t&&t.type==="sse"){let i={};for(let o of t.headers??[])i[o.name]=o.value;e[t.name]={type:"sse",url:t.url,headers:Object.keys(i).length>0?i:void 0}}else if("type"in t&&t.type==="http"){let i={};for(let o of t.headers??[])i[o.name]=o.value;e[t.name]={type:"http",url:t.url,headers:Object.keys(i).length>0?i:void 0}}return e}s(tt,"convertAcpMcpServers");function nt(n){let e=[];for(let t of n){let i=t.trim();i&&!e.includes(i)&&e.push(i)}return e}s(nt,"dedupeExtensionPaths");function it(n){return Array.isArray(n)?nt(n.filter(e=>typeof e=="string"&&e.trim().length>0).map(e=>g.isAbsolute(e)?e:g.resolve(g.dirname(k),e))):[]}s(it,"normalizeConfiguredExtensionPaths");async function ot(n){try{return await U()}catch(e){let t=e instanceof Error?e.message:String(e);return n.error("ACP extension discovery failed: "+t),[]}}s(ot,"discoverAcpDefaultExtensions");async function st(n,e,t){let i=await I(t),o=await F(await I(e),i);await n.loadExtensions(o,{continueOnError:!0,loadSource:"discovery"}),await n.loadExtensions(i,{continueOnError:!0,loadSource:"config"})}s(st,"loadAcpExtensionGroups");function rt(n,e="accept-edits"){return n&&ue.includes(n)?n:e}s(rt,"normalizeAcpPermissionMode");function at(n){if(n&&ue.includes(n))return n;throw S.invalidParams({modeId:n},"Invalid session mode. Expected one of: plan, accept-edits, auto-in-project.")}s(at,"parseSessionMode");function dt(n){return{availableModes:Ye,currentModeId:n}}s(dt,"buildModeState");function ae(n){return Qe[n]??"other"}s(ae,"inferToolKind");function de(n,e){if(T(n)){let t=typeof e.path=="string"?e.path:void 0;return t?[{path:t}]:void 0}if(n==="bash"){let t=typeof e.command=="string"?e.command:"",i=ee(t);if(i.length>0)return i.map(o=>({path:o}))}}s(de,"inferToolLocations");function lt(n){let e=[];for(let t of n){let i=t,o=typeof i.type=="string"?i.type:"";if(o==="text"&&typeof i.text=="string"){e.push(i.text);continue}if(o==="resource_link"&&typeof i.uri=="string"){e.push(`[Resource] ${i.uri}`);continue}if(o==="resource"&&i.resource&&typeof i.resource=="object"){let r=i.resource;if(typeof r.text=="string"){e.push(r.text);continue}typeof r.uri=="string"&&e.push(`[Resource] ${r.uri}`)}}return e.join(`
4
4
 
5
- `).trim()}s(lt,"extractPromptText");function ct(n){return/^\[(?:Tool Error|Cancelled|Blocked|Error)\]/.test(n)}s(ct,"isToolResultFailure");function ut(n){return n instanceof Error?n.name==="AbortError"||n.message.includes("aborted")||n.message.includes("ABORTED"):!1}s(ut,"isAbortLikeError");function le(n){return n==="queued"?0:n==="running"||n==="waiting_permission"||n==="waiting_user_input"?1:2}s(le,"acpAbortPhaseRank");function ce(n){let e=n?.usage;if(e)return{inputTokens:e.inputTokens,outputTokens:e.outputTokens,totalTokens:e.totalTokens,...e.cachedReadTokens!==void 0?{cachedReadTokens:e.cachedReadTokens}:{},...e.cachedWriteTokens!==void 0?{cachedWriteTokens:e.cachedWriteTokens}:{},...e.thoughtTokens!==void 0?{thoughtTokens:e.thoughtTokens}:{}}}s(ce,"toAcpUsage");var _=class{static{s(this,"KodaXAcpServer")}provider;model;effort;planModeEffort;thinking;reasoningMode;defaultPermissionMode;defaultCwd;hasFixedCwd;agentName;agentVersion;storage;runtimeReady;ownsRuntime;logger;events;bashPrefixExtractor;configuredExtensions;discoveredExtensions;connection=null;sessions=new Map;extensionRuntime;extensionRuntimeReady;disposePromise;constructor(e={}){let t=R.env.KODAX_PROVIDER,i=R.env.KODAX_EFFORT,o=b(),r=o;this.provider=B({explicitProvider:e.provider,environmentProvider:t,configuredProvider:o.provider,defaultProvider:q}),this.model=H({explicitProvider:e.provider,environmentProvider:t,explicitModel:e.model,configuredProvider:o.provider,configuredModel:o.model});let a=e.effort!==void 0||X(i).kind==="value";this.effort=L(N({explicitEffort:e.effort,environmentEffort:i,configuredEffort:o.effort}),"Configured effort"),this.planModeEffort=a?void 0:L(e.planModeEffort??o.planModeEffort,"Configured plan-mode effort"),this.thinking=e.thinking??o.thinking??!1,this.reasoningMode=e.reasoningMode??o.reasoningMode??"auto",this.defaultPermissionMode=rt(e.permissionMode??o.permissionMode,"accept-edits");let d=g.resolve(e.cwd??R.cwd()),l=it(r.extensions),c=new y({level:O(e.logLevel??R.env.KODAX_ACP_LOG,"info")}),p=ot(c);this.defaultCwd=d,this.hasFixedCwd=e.cwd!==void 0,this.agentName=e.agentName??"kodax-acp-server",this.agentVersion=e.agentVersion??"0.0.0",this.storage=e.storage??new C,this.logger=c,this.ownsRuntime=e.runtime===void 0,this.runtimeReady=e.runtime?Promise.resolve(e.runtime):M({homeDir:e.homeDir??Be.homedir(),sessionsDir:this.storage.getSessionsDir(),profile:"acp",defaultProvider:this.provider,...this.model!==void 0?{defaultModel:this.model}:{}}),this.configuredExtensions=l,this.discoveredExtensions=p,this.events=new w({sinks:[...e.eventSinks??[],c]}),this.bashPrefixExtractor=z({getProvider:s(()=>D(this.provider),"getProvider"),getModel:s(()=>this.model??"","getModel")});let h=o.mcpServers,f=h&&Object.values(h).some(m=>(m.connect??"lazy")!=="disabled");this.extensionRuntimeReady=(async()=>{let m=await p,v=m.length>0||l.length>0;if(!f&&!v)return;let P=E({config:o});f&&await A(P,h,{reverse:x({cwd:d})}),await st(P,m,l),P.activate(),this.extensionRuntime=P})().catch(m=>{let v=m instanceof Error?m.message:String(m);c.error("ACP extension initialization failed: "+v)})}attach(e,t){let i=Je(t,e),o=new Ge(()=>this,i);this.connection=o;let r=this.effort==="none"?!1:this.thinking,a=this.effort==="none"?"off":this.reasoningMode;return this.events.emit({type:"server_attached",agent:this.agentName,version:this.agentVersion,provider:this.provider,model:this.model??"(default)",cwd:this.defaultCwd,permissionMode:this.defaultPermissionMode,reasoningMode:a,thinking:r,fixedCwd:this.hasFixedCwd}),o.signal.addEventListener("abort",()=>{let d=this.sessions.size;this.events.emit({type:"connection_closed",activeSessions:d}),this.dispose()}),o}async waitForClose(){await this.connection?.closed}async dispose(){return this.disposePromise?this.disposePromise:(this.disposePromise=(async()=>{for(let i of this.sessions.values())await this.abortSessionRuns(i);let e=new Set;for(let i of this.sessions.values())i.ownedExtensionRuntime&&(e.add(i.ownedExtensionRuntime),i.ownedExtensionRuntime=void 0),i.extensionRuntime=void 0;this.sessions.clear(),this.connection=null;let t=this.extensionRuntimeReady;this.extensionRuntimeReady=void 0,await t?.catch(()=>{}),this.extensionRuntime&&(e.add(this.extensionRuntime),this.extensionRuntime=void 0),await Promise.all([...e].map(i=>i.dispose())),this.ownsRuntime&&await(await this.runtimeReady).close().catch(()=>{}),await F()})(),this.disposePromise)}async initialize(e){return this.events.emit({type:"initialize_completed",protocolVersion:re}),{protocolVersion:re,agentInfo:{name:this.agentName,version:this.agentVersion},agentCapabilities:{promptCapabilities:{embeddedContext:!0,image:!1,audio:!1},sessionCapabilities:{}}}}async newSession(e){let t=this.hasFixedCwd?this.defaultCwd:e.cwd??this.defaultCwd;if(!g.isAbsolute(t))throw S.invalidParams({cwd:t},"Session cwd must be an absolute path.");let i=se(),o=e.mcpServers??[],r={sessionId:i,cwd:g.resolve(t),permissionMode:this.defaultPermissionMode,mcpServers:o,alwaysAllowTools:[],activeRunIds:new Set};if(o.length>0){let a=tt(o),d=E({});await A(d,a,{reverse:x({cwd:r.cwd})}).catch(l=>{let c=l instanceof Error?l.message:String(l);this.logger.error("ACP per-session MCP init failed for "+i+": "+c)}),await this.extensionRuntimeReady,r.ownedExtensionRuntime=d,r.extensionRuntime=this.extensionRuntime?W(d,this.extensionRuntime):d}return this.sessions.set(i,r),this.events.emit({type:"session_created",sessionId:i,cwd:r.cwd,permissionMode:r.permissionMode,mcpServers:r.mcpServers.length}),{sessionId:i,modes:dt(r.permissionMode)}}async authenticate(){}async setSessionMode(e){let t=this.requireSession(e.sessionId),i=t.permissionMode,o=at(e.modeId);return t.permissionMode=o,this.events.emit({type:"session_mode_changed",sessionId:t.sessionId,from:i,to:o}),await this.sendSessionUpdate({sessionId:t.sessionId,update:{sessionUpdate:"current_mode_update",currentModeId:o}}),{}}async prompt(e){let t=this.requireSession(e.sessionId),i=lt(e.prompt),o=et(e);if(!i)throw S.invalidParams({prompt:e.prompt},"Prompt must include at least one text or resource block with content.");let r=Date.now();return s(async()=>{let d=Date.now();this.events.emit({type:"prompt_started",sessionId:t.sessionId,messageId:e.messageId??null,chars:i.length,cwd:t.cwd,queueDelayMs:d-r}),this.events.emit({type:"prompt_preview",sessionId:t.sessionId,prompt:i});let l;try{this.extensionRuntimeReady&&await this.extensionRuntimeReady;let c=await this.runtimeReady;await this.ensureRuntimeSession(c,t,i),l=await c.runs.start({sessionId:t.sessionId,prompt:i,options:this.buildKodaXOptions(t,o)}),t.activeRunIds.add(l.runId);let p=await l.result;if(p.error)throw p.error;let h=p.phase==="cancelled"||p.phase==="interrupted",f=p.result;if(!f){if(h)return this.events.emit({type:"prompt_cancelled",sessionId:t.sessionId,durationMs:Date.now()-d}),{stopReason:"cancelled",userMessageId:e.messageId??void 0};throw new Error(`Runtime run ${l.runId} ended without a coding result.`)}t.contextTokenSnapshot=f.contextTokenSnapshot;let m=!!f.interrupted||h,v=m?"cancelled":"end_turn";return this.events.emit({type:"prompt_finished",sessionId:t.sessionId,stopReason:v,interrupted:m,durationMs:Date.now()-d}),{stopReason:v,userMessageId:e.messageId??void 0,...ce(f.contextTokenSnapshot)?{usage:ce(f.contextTokenSnapshot)}:{}}}catch(c){if(ut(c))return this.events.emit({type:"prompt_cancelled",sessionId:t.sessionId,durationMs:Date.now()-d}),{stopReason:"cancelled",userMessageId:e.messageId??void 0};let p=c instanceof Error?c.message:String(c);return this.events.emit({type:"prompt_failed",sessionId:t.sessionId,durationMs:Date.now()-d,error:p}),await this.sendTextChunk(t.sessionId,`
5
+ `).trim()}s(lt,"extractPromptText");function ct(n){return/^\[(?:Tool Error|Cancelled|Blocked|Error)\]/.test(n)}s(ct,"isToolResultFailure");function ut(n){return n instanceof Error?n.name==="AbortError"||n.message.includes("aborted")||n.message.includes("ABORTED"):!1}s(ut,"isAbortLikeError");function le(n){return n==="queued"?0:n==="running"||n==="waiting_permission"||n==="waiting_user_input"?1:2}s(le,"acpAbortPhaseRank");function ce(n){let e=n?.usage;if(e)return{inputTokens:e.inputTokens,outputTokens:e.outputTokens,totalTokens:e.totalTokens,...e.cachedReadTokens!==void 0?{cachedReadTokens:e.cachedReadTokens}:{},...e.cachedWriteTokens!==void 0?{cachedWriteTokens:e.cachedWriteTokens}:{},...e.thoughtTokens!==void 0?{thoughtTokens:e.thoughtTokens}:{}}}s(ce,"toAcpUsage");var _=class{static{s(this,"KodaXAcpServer")}provider;model;effort;planModeEffort;thinking;reasoningMode;defaultPermissionMode;defaultCwd;hasFixedCwd;agentName;agentVersion;storage;runtimeReady;ownsRuntime;logger;events;bashPrefixExtractor;configuredExtensions;discoveredExtensions;connection=null;sessions=new Map;extensionRuntime;extensionRuntimeReady;disposePromise;constructor(e={}){let t=R.env.KODAX_PROVIDER,i=R.env.KODAX_EFFORT,o=b(),r=o;this.provider=B({explicitProvider:e.provider,environmentProvider:t,configuredProvider:o.provider,defaultProvider:q}),this.model=H({explicitProvider:e.provider,environmentProvider:t,explicitModel:e.model,configuredProvider:o.provider,configuredModel:o.model});let a=e.effort!==void 0||X(i).kind==="value";this.effort=L(N({explicitEffort:e.effort,environmentEffort:i,configuredEffort:o.effort}),"Configured effort"),this.planModeEffort=a?void 0:L(e.planModeEffort??o.planModeEffort,"Configured plan-mode effort"),this.thinking=e.thinking??o.thinking??!1,this.reasoningMode=e.reasoningMode??o.reasoningMode??"auto",this.defaultPermissionMode=rt(e.permissionMode??o.permissionMode,"accept-edits");let d=g.resolve(e.cwd??R.cwd()),l=it(r.extensions),c=new y({level:O(e.logLevel??R.env.KODAX_ACP_LOG,"info")}),p=ot(c);this.defaultCwd=d,this.hasFixedCwd=e.cwd!==void 0,this.agentName=e.agentName??"kodax-acp-server",this.agentVersion=e.agentVersion??"0.0.0",this.storage=e.storage??new C,this.logger=c,this.ownsRuntime=e.runtime===void 0,this.runtimeReady=e.runtime?Promise.resolve(e.runtime):M({homeDir:e.homeDir??Be.homedir(),sessionsDir:this.storage.getSessionsDir(),profile:"acp",defaultProvider:this.provider,...this.model!==void 0?{defaultModel:this.model}:{}}),this.configuredExtensions=l,this.discoveredExtensions=p,this.events=new w({sinks:[...e.eventSinks??[],c]}),this.bashPrefixExtractor=z({getProvider:s(()=>D(this.provider),"getProvider"),getModel:s(()=>this.model??"","getModel")});let h=o.mcpServers,f=h&&Object.values(h).some(m=>(m.connect??"lazy")!=="disabled");this.extensionRuntimeReady=(async()=>{let m=await p,v=m.length>0||l.length>0;if(!f&&!v)return;let P=E({config:o});f&&await A(P,h,{reverse:x({cwd:d})}),await st(P,m,l),P.activate(),this.extensionRuntime=P})().catch(m=>{let v=m instanceof Error?m.message:String(m);c.error("ACP extension initialization failed: "+v)})}attach(e,t){let i=Je(t,e),o=new Ge(()=>this,i);this.connection=o;let r=this.effort==="none"?!1:this.thinking,a=this.effort==="none"?"off":this.reasoningMode;return this.events.emit({type:"server_attached",agent:this.agentName,version:this.agentVersion,provider:this.provider,model:this.model??"(default)",cwd:this.defaultCwd,permissionMode:this.defaultPermissionMode,reasoningMode:a,thinking:r,fixedCwd:this.hasFixedCwd}),o.signal.addEventListener("abort",()=>{let d=this.sessions.size;this.events.emit({type:"connection_closed",activeSessions:d}),this.dispose()}),o}async waitForClose(){await this.connection?.closed}async dispose(){return this.disposePromise?this.disposePromise:(this.disposePromise=(async()=>{for(let i of this.sessions.values())await this.abortSessionRuns(i);let e=new Set;for(let i of this.sessions.values())i.ownedExtensionRuntime&&(e.add(i.ownedExtensionRuntime),i.ownedExtensionRuntime=void 0),i.extensionRuntime=void 0;this.sessions.clear(),this.connection=null;let t=this.extensionRuntimeReady;this.extensionRuntimeReady=void 0,await t?.catch(()=>{}),this.extensionRuntime&&(e.add(this.extensionRuntime),this.extensionRuntime=void 0),await Promise.all([...e].map(i=>i.dispose())),this.ownsRuntime&&await(await this.runtimeReady).close().catch(()=>{}),await $()})(),this.disposePromise)}async initialize(e){return this.events.emit({type:"initialize_completed",protocolVersion:re}),{protocolVersion:re,agentInfo:{name:this.agentName,version:this.agentVersion},agentCapabilities:{promptCapabilities:{embeddedContext:!0,image:!1,audio:!1},sessionCapabilities:{}}}}async newSession(e){let t=this.hasFixedCwd?this.defaultCwd:e.cwd??this.defaultCwd;if(!g.isAbsolute(t))throw S.invalidParams({cwd:t},"Session cwd must be an absolute path.");let i=se(),o=e.mcpServers??[],r={sessionId:i,cwd:g.resolve(t),permissionMode:this.defaultPermissionMode,mcpServers:o,alwaysAllowTools:[],activeRunIds:new Set};if(o.length>0){let a=tt(o),d=E({});await A(d,a,{reverse:x({cwd:r.cwd})}).catch(l=>{let c=l instanceof Error?l.message:String(l);this.logger.error("ACP per-session MCP init failed for "+i+": "+c)}),await this.extensionRuntimeReady,r.ownedExtensionRuntime=d,r.extensionRuntime=this.extensionRuntime?j(d,this.extensionRuntime):d}return this.sessions.set(i,r),this.events.emit({type:"session_created",sessionId:i,cwd:r.cwd,permissionMode:r.permissionMode,mcpServers:r.mcpServers.length}),{sessionId:i,modes:dt(r.permissionMode)}}async authenticate(){}async setSessionMode(e){let t=this.requireSession(e.sessionId),i=t.permissionMode,o=at(e.modeId);return t.permissionMode=o,this.events.emit({type:"session_mode_changed",sessionId:t.sessionId,from:i,to:o}),await this.sendSessionUpdate({sessionId:t.sessionId,update:{sessionUpdate:"current_mode_update",currentModeId:o}}),{}}async prompt(e){let t=this.requireSession(e.sessionId),i=lt(e.prompt),o=et(e);if(!i)throw S.invalidParams({prompt:e.prompt},"Prompt must include at least one text or resource block with content.");let r=Date.now();return s(async()=>{let d=Date.now();this.events.emit({type:"prompt_started",sessionId:t.sessionId,messageId:e.messageId??null,chars:i.length,cwd:t.cwd,queueDelayMs:d-r}),this.events.emit({type:"prompt_preview",sessionId:t.sessionId,prompt:i});let l;try{this.extensionRuntimeReady&&await this.extensionRuntimeReady;let c=await this.runtimeReady;await this.ensureRuntimeSession(c,t,i),l=await c.runs.start({sessionId:t.sessionId,prompt:i,options:this.buildKodaXOptions(t,o)}),t.activeRunIds.add(l.runId);let p=await l.result;if(p.error)throw p.error;let h=p.phase==="cancelled"||p.phase==="interrupted",f=p.result;if(!f){if(h)return this.events.emit({type:"prompt_cancelled",sessionId:t.sessionId,durationMs:Date.now()-d}),{stopReason:"cancelled",userMessageId:e.messageId??void 0};throw new Error(`Runtime run ${l.runId} ended without a coding result.`)}t.contextTokenSnapshot=f.contextTokenSnapshot;let m=!!f.interrupted||h,v=m?"cancelled":"end_turn";return this.events.emit({type:"prompt_finished",sessionId:t.sessionId,stopReason:v,interrupted:m,durationMs:Date.now()-d}),{stopReason:v,userMessageId:e.messageId??void 0,...ce(f.contextTokenSnapshot)?{usage:ce(f.contextTokenSnapshot)}:{}}}catch(c){if(ut(c))return this.events.emit({type:"prompt_cancelled",sessionId:t.sessionId,durationMs:Date.now()-d}),{stopReason:"cancelled",userMessageId:e.messageId??void 0};let p=c instanceof Error?c.message:String(c);return this.events.emit({type:"prompt_failed",sessionId:t.sessionId,durationMs:Date.now()-d,error:p}),await this.sendTextChunk(t.sessionId,`
6
6
  [ACP Server Error] ${p}
7
7
  `),{stopReason:"end_turn",userMessageId:e.messageId??void 0}}finally{l&&t.activeRunIds.delete(l.runId)}},"task")()}async ensureRuntimeSession(e,t,i){t.runtimeSessionReady||(t.runtimeSessionReady=e.sessions.create({sessionId:t.sessionId,title:Ze(i),projectPath:t.cwd,gitRoot:t.cwd,surface:"acp"}).then(()=>{}));try{await t.runtimeSessionReady}catch(o){throw t.runtimeSessionReady=void 0,o}}async cancel(e){let t=this.sessions.get(e.sessionId);this.events.emit({type:"cancel_requested",sessionId:e.sessionId,active:(t?.activeRunIds.size??0)>0}),t&&await this.abortSessionRuns(t)}async abortSessionRuns(e){if(e.activeRunIds.size===0)return;let t=await this.runtimeReady,i=[...e.activeRunIds],o=await Promise.all(i.map(async r=>{try{let a=await t.runs.get(r);return{runId:r,rank:le(a.phase)}}catch(a){let d=a instanceof Error?a.message:String(a);return this.logger.error(`ACP runtime run status lookup failed for ${r}: ${d}`),{runId:r,rank:le("cancelled")}}}));o.sort((r,a)=>r.rank-a.rank),await Promise.all(o.map(({runId:r})=>t.runs.abort(r).catch(a=>{let d=a instanceof Error?a.message:String(a);this.logger.error(`ACP runtime run abort failed for ${r}: ${d}`)})))}requireSession(e){let t=this.sessions.get(e);if(!t)throw S.resourceNotFound(e);return t}buildKodaXOptions(e,t={kind:"absent"}){let i=t.kind==="value"?t.value:e.permissionMode==="plan"&&this.planModeEffort!==void 0?this.planModeEffort:this.effort;return{provider:this.provider,model:this.model,effort:i,thinking:i==="none"?!1:this.thinking,reasoningMode:i==="none"?"off":this.reasoningMode,extensionRuntime:e.extensionRuntime??this.extensionRuntime,session:{id:e.sessionId,storage:this.storage},context:{gitRoot:e.cwd,executionCwd:e.cwd,contextTokenSnapshot:e.contextTokenSnapshot},events:{onTextDelta:s(o=>{this.dispatchNotification("assistant text chunk",e.sessionId,this.sendTextChunk(e.sessionId,o))},"onTextDelta"),onThinkingDelta:s(o=>{this.dispatchNotification("thinking chunk",e.sessionId,this.sendSessionUpdate({sessionId:e.sessionId,update:{sessionUpdate:"agent_thought_chunk",content:{type:"text",text:o}}}))},"onThinkingDelta"),onToolUseStart:s(o=>{this.dispatchNotification("tool call start",e.sessionId,this.sendSessionUpdate({sessionId:e.sessionId,update:{sessionUpdate:"tool_call",toolCallId:o.id,title:o.name,kind:ae(o.name),rawInput:o.input,locations:de(o.name,o.input??{}),status:"pending"}}))},"onToolUseStart"),onToolResult:s(o=>{this.dispatchNotification("tool call update",e.sessionId,this.sendSessionUpdate({sessionId:e.sessionId,update:{sessionUpdate:"tool_call_update",toolCallId:o.id,title:o.name,status:ct(o.content)?"failed":"completed",rawOutput:o.content}}))},"onToolResult"),onRepoIntelligenceTrace:s(o=>{this.events.emit({type:"repo_intelligence_trace",sessionId:e.sessionId,stage:o.stage,summary:o.summary,mode:o.capability?.mode,engine:o.capability?.engine,status:o.capability?.status,cacheHit:o.trace?.cacheHit,capsuleEstimatedTokens:o.trace?.capsuleEstimatedTokens})},"onRepoIntelligenceTrace"),onError:s(o=>{this.dispatchNotification("error text chunk",e.sessionId,this.sendTextChunk(e.sessionId,`
8
8
  [Error] ${o.message}
9
- `))},"onError"),beforeToolExecute:s(async(o,r,a)=>{let d=await this.evaluateToolPermission(e,o,r,a?.toolId);return d.allowed?!0:d.override??!1},"beforeToolExecute")}}}async evaluateToolPermission(e,t,i,o){if(this.events.emit({type:"tool_permission_evaluated",sessionId:e.sessionId,tool:t,toolId:o??null,permissionMode:e.permissionMode}),t==="bash"){let c=typeof i.command=="string"?i.command:"";if(G(c))return this.events.emit({type:"tool_permission_resolved",sessionId:e.sessionId,tool:t,toolId:o??null,outcome:"auto_allowed_read_only_bash"}),{allowed:!0};if(await J(t,i,e.alwaysAllowTools,this.bashPrefixExtractor))return this.events.emit({type:"tool_permission_resolved",sessionId:e.sessionId,tool:t,toolId:o??null,outcome:"auto_allowed_remembered"}),{allowed:!0}}if(e.permissionMode==="plan"){let c=ne(t,i,e.cwd);return c?(this.events.emit({type:"tool_permission_resolved",sessionId:e.sessionId,tool:t,toolId:o??null,outcome:"blocked_plan_mode"}),{allowed:!1,override:`${c} Do not try to modify files while planning. Finish the plan first, then hand off to a writable mode.`}):(this.events.emit({type:"tool_permission_resolved",sessionId:e.sessionId,tool:t,toolId:o??null,outcome:"auto_allowed_plan_mode"}),{allowed:!0})}let r=T(t)&&typeof i.path=="string"&&Y(g.resolve(e.cwd,i.path),e.cwd),a=V(e.permissionMode).has(t),d=e.permissionMode==="auto-in-project"&&(T(t)&&typeof i.path=="string"&&!Z(i.path,e.cwd)||t==="bash"&&typeof i.command=="string"&&te(i.command,e.cwd).dangerous);return!r&&!a&&!d?(this.events.emit({type:"tool_permission_resolved",sessionId:e.sessionId,tool:t,toolId:o??null,outcome:"auto_allowed_policy"}),{allowed:!0}):await this.requestPermissionFromClient(e,t,i,o)}async requestPermissionFromClient(e,t,i,o){if(!this.connection)return this.events.emit({type:"tool_permission_resolved",sessionId:e.sessionId,tool:t,toolId:o??null,outcome:"request_failed_disconnected"}),{allowed:!1,override:"[Cancelled] ACP client is disconnected, so the permission request could not be completed."};let r=[{optionId:"allow_once",kind:"allow_once",name:"Allow once"},{optionId:"allow_always",kind:"allow_always",name:"Always allow"},{optionId:"reject_once",kind:"reject_once",name:"Reject"}],a={toolCallId:o??se(),title:t,kind:ae(t),rawInput:i,locations:de(t,i),status:"pending"},d;this.events.emit({type:"permission_requested",sessionId:e.sessionId,tool:t,toolId:a.toolCallId});try{d=await this.connection.requestPermission({sessionId:e.sessionId,toolCall:a,options:r})}catch(l){return this.events.emit({type:"tool_permission_resolved",sessionId:e.sessionId,tool:t,toolId:a.toolCallId,outcome:"request_failed_incomplete",error:l instanceof Error?l.message:String(l)}),{allowed:!1,override:"[Cancelled] ACP client did not complete the permission request. Operation failed closed."}}return d.outcome.outcome!=="selected"?(this.events.emit({type:"tool_permission_resolved",sessionId:e.sessionId,tool:t,toolId:a.toolCallId,outcome:"request_dismissed"}),{allowed:!1,override:"[Cancelled] Operation cancelled by user"}):(d.outcome.optionId==="allow_always"&&t==="bash"&&(e.alwaysAllowTools=Array.from(new Set([...e.alwaysAllowTools,Q(t,i,!1)])).filter(Boolean)),d.outcome.optionId==="reject_once"?(this.events.emit({type:"tool_permission_resolved",sessionId:e.sessionId,tool:t,toolId:a.toolCallId,outcome:"request_rejected"}),{allowed:!1,override:"[Cancelled] Operation cancelled by user"}):(this.events.emit({type:"tool_permission_resolved",sessionId:e.sessionId,tool:t,toolId:a.toolCallId,outcome:"request_granted",remember:d.outcome.optionId==="allow_always"}),{allowed:!0}))}async sendTextChunk(e,t){await this.sendSessionUpdate({sessionId:e,update:{sessionUpdate:"agent_message_chunk",content:{type:"text",text:t}}})}async sendSessionUpdate(e){!this.connection||this.connection.signal.aborted||await this.connection.sessionUpdate(e)}dispatchNotification(e,t,i){i.catch(o=>{if(!this.connection||this.connection.signal.aborted)return;let r=o instanceof Error?o.message:String(o);this.events.emit({type:"notification_failed",sessionId:t,label:e,error:r})})}};async function pt(n={}){let e=new _(n),t=He.toWeb(R.stdin),i=Ne.toWeb(R.stdout);e.attach(t,i);try{await e.waitForClose()}finally{await e.dispose()}}s(pt,"runAcpServer");export{oe as ACP_LOG_LEVELS,Ga as ALWAYS_RESIDENT_TOOL_NAMES,Ul as AUTO_MODE_DENIAL_CONSECUTIVE_THRESHOLD,jl as AUTO_MODE_DENIAL_CUMULATIVE_THRESHOLD,w as AcpEventEmitter,y as AcpLogger,ac as BASH_POLICY_SPEC,nl as BLOCKER_REQUIRED_CONSECUTIVE_TURNS,Bl as BREAKER_ERROR_THRESHOLD,Hl as BREAKER_WINDOW_MS,Ee as BUILTIN_COMMANDS,gr as BUILTIN_WORKFLOWS,Vi as CANCELLED_TOOL_RESULT_MESSAGE,zi as CANCELLED_TOOL_RESULT_PREFIX,kl as CODING_AGENT_MARKER,Qd as CODING_INVARIANTS,Qa as CODING_SUMMARY_PROMPT,Ya as CODING_UPDATE_SUMMARY_PROMPT,aa as CapabilityDeniedError,Zd as Client,za as CombinedExtensionRuntime,da as ConstructionManifestError,rd as DEFAULT_CODING_AGENT_NAME,vl as DEFAULT_DANGEROUS_PATTERNS,sa as DEFAULT_HANDLER_TIMEOUT_MS,ws as DEFAULT_RESILIENCE_CONFIG,hl as DEFAULT_SAFE_PATTERNS,Ra as DEFAULT_SELF_MODIFY_BUDGET,ic as DEFAULT_SPECULATIVE_WINDOW_MS,Hi as DEFAULT_TOOL_OUTPUT_MAX_BYTES,Bi as DEFAULT_TOOL_OUTPUT_MAX_LINES,Ns as DEFAULT_WORKFLOW_GENERATION_TIMEOUT_MS,Hn as DefaultSummaryCompaction,El as EMIT_VERDICT_TOOL_NAME,Mn as ErrorCategory,ar as FINDING_VERIFICATION_OUTPUT_SCHEMA,C as FileSessionStorage,ms as GENERATOR_AGENT_NAME,cn as ImageResizeError,Un as KODAX_API_MIN_INTERVAL,k as KODAX_CONFIG_FILE,q as KODAX_DEFAULT_PROVIDER,Ln as KODAX_DEFAULT_TIMEOUT,pe as KODAX_DIR,xn as KODAX_FILE_MEDIA_TYPES,Kn as KODAX_HARD_TIMEOUT,En as KODAX_IMAGE_MEDIA_TYPES,Dn as KODAX_MAX_INCOMPLETE_RETRIES,Xn as KODAX_MAX_RETRIES,Tn as KODAX_MAX_TOKENS,kt as KODAX_PROVIDERS,xt as KODAX_PROVIDER_SNAPSHOTS,Rt as KODAX_REASONING_MODE_SEQUENCE,qn as KODAX_RETRY_BASE_DELAY,me as KODAX_SESSIONS_DIR,yt as KODAX_STABLE_EFFORT_INTENTS,Fn as KODAX_STAGGER_DELAY,_d as KODAX_TOOLS,so as KODAX_UNDERLYING_CAPABILITY_TOPICS,ve as KODAX_VERSION,An as KODAX_VIDEO_MEDIA_TYPES,_ as KodaXAcpServer,Et as KodaXAnthropicCompatProvider,It as KodaXBaseProvider,Zd as KodaXClient,mt as KodaXError,$a as KodaXExtensionRuntime,ln as KodaXMediaError,At as KodaXOpenAICompatProvider,ft as KodaXProviderError,gt as KodaXRateLimitError,an as KodaXSessionError,dn as KodaXTerminalError,rn as KodaXToolError,Ii as LINEAGE_ENTRY_TYPES,$s as LSP_SERVERS,Ai as LineageCompaction,Ei as LineageExtension,zs as LspService,ro as MANUAL_REGISTRY,oo as MANUAL_TOPIC_IDS,hn as MAX_DIMENSION,li as McpAuthRequiredError,Si as McpCapabilityProvider,di as McpExpiredSessionError,Pi as McpManager,wi as McpServerRuntime,Sn as PASTE_TMP_DIR_ENV,Pn as PASTE_TMP_TTL_MS,ps as PLANNER_AGENT_NAME,jn as PROMISE_PATTERN,Wr as PROMPT_SECTION_REGISTRY,xl as PROTOCOL_EMITTER_TOOLS,As as ProviderRecoveryCoordinator,Ni as READ_DEFAULT_LIMIT,Ji as READ_MAX_LINE_CHARS,Gi as READ_PREFLIGHT_SIZE_BYTES,Fa as REPO_EXPLORER_AGENT_NAME,Ua as REPO_EXPLORER_TOOL_NAMES,Gn as Runner,Le as RuntimeTransportBoundaryError,rr as SCOPED_REVIEW_OUTPUT_SCHEMA,us as SCOUT_AGENT_NAME,Rc as SCOUT_THEN_AUTHOR_PROMPT_LINES,Nr as SELF_KNOWLEDGE_ROUTING_RULE,jr as SYSTEM_PROMPT,Or as SYSTEM_WORKFLOW_LIMITS,Is as StableBoundaryTracker,vn as TARGET_RAW_SIZE_BYTES,hs as TASK_ENGINE_ROLE_AGENTS,bl as TOOL_RESULT_TRUNCATION_GUARDRAIL_NAME,lc as TRACING_ENV,fs as WORKER_AGENT_NAME,Hs as WORKFLOW_GENERATION_SYSTEM_PROMPT,Ea as _resetRuntimeForTesting,Ke as acquireKodaXInlineOwner,ka as activate,ko as analyzeChangedScope,ha as appendAuditEntry,Li as appendSessionLineageLabel,fd as applyAccountingDelta,cr as applyFindingVerification,Ki as applySessionCompaction,vo as applyToolResultGuardrail,ji as archiveOldIslands,wc as authorWorkflowViaWorker,Vl as autoModeDenialShouldFallback,ec as bashSignalCollector,cc as bootstrapTracing,Hd as boundedRevise,Jl as breakerShouldFallback,Nd as budgetCeiling,Tr as buildApprovalSummary,vd as buildBlockedGoal,Gr as buildCapabilityContextSections,Ml as buildClassifierPrompt,Rd as buildCompleteGoal,md as buildCreatedGoal,qs as buildFallbackRoutingDecision,rl as buildGoalRuntimeBinding,yi as buildInitializeCapabilities,ma as buildLlmReviewPrompt,lo as buildManualToolDescription,x as buildMcpReverseCapabilities,gd as buildPausedGoal,xs as buildPromptMessageContent,Br as buildPromptSnapshot,Ms as buildProviderCapabilitySnapshot,Ds as buildProviderPolicyHintsForDecision,Os as buildProviderPolicyPromptNotes,xo as buildRepoIntelligenceContext,Uo as buildRepoIntelligenceIndex,Io as buildRepoOverview,hd as buildResumedGoal,mr as buildScopedReviewFinalPrompt,ur as buildScopedReviewPrimaryPrompt,pr as buildScopedReviewVerificationPrompt,yc as buildScoutThenAuthorPrompt,Hr as buildSelfKnowledgeRoutingRule,Fi as buildSessionTree,Qr as buildSystemPrompt,Jr as buildSystemPromptSnapshot,id as buildToolResultBudget,od as buildToolResultBudgetFromUsage,wd as buildToolSearchIndex,br as buildWorkflowCostReport,Ys as buildWorkflowGenerationSkillContext,Qs as buildWorkflowGenerationUserPrompt,Zl as checkAbsoluteDeny,ks as checkIncompleteToolCalls,Us as checkPromiseSignal,sd as clampToolResultPolicyToBudget,Lr as clampWorkflowLimits,Tl as classify,yl as classifyBashCommand,On as classifyError,_o as classifyFileCategory,Ps as classifyResilienceError,jd as cleanupExpiredToolOutputs,ti as cleanupIncompleteToolCalls,Wd as cleanupUnreferencedToolOutputs,Yt as clearRuntimeModelProviders,nc as collectAllSignals,W as combineExtensionRuntimes,Sl as computeInputSignature,Ll as computeRulesFingerprint,Ia as configureRuntime,Ue as connectKodaXRuntime,td as consumeCompactionCooldown,ts as convertCapabilityReadResult,es as convertProviderSearchResults,Ui as countActiveLineageMessages,$n as countTokens,zn as createAgent,Wl as createAutoModeDenialTracker,rc as createAutoModeToolGuardrail,Rl as createBashClassifierConfig,z as createBashPrefixExtractor,Md as createBuiltinToolDefinition,Nl as createCircuitBreaker,or as createCodingWorkflowBackend,Za as createCompactionAntiThrashState,la as createCtxProxy,Dt as createCustomProvider,ad as createDefaultCodingAgent,wl as createDenialTracker,E as createExtensionRuntime,fn as createFileArtifactFromPath,Vn as createHandoff,mn as createImageArtifactFromPath,Bn as createInMemorySession,ke as createInteractiveContext,M as createKodaXRuntime,pl as createKodaXTaskRunner,ii as createMcpCapabilityId,_i as createMcpManager,ci as createMcpTransport,$r as createPromptSection,Fs as createReasoningPlan,Mr as createRunGraphWriter,Na as createRuntimeContextBudgetSnapshot,Vd as createSessionControl,bi as createSessionLineage,Cl as createToolResultTruncationGuardrail,gn as createVideoArtifactFromPath,pc as createWorkflowLifecycleController,gc as createWorkflowPatternTemplateModule,Dr as createWorkflowRunManager,hc as decideWorkflowInvocation,I as dedupeExtensionPathsByEntrypoint,ni as defaultMcpCacheDir,ra as defaultPolicy,Ir as deleteSavedWorkflow,_a as disableSelfModify,fi as discoverAuthorizationServerMetadata,j as discoverDefaultExtensions,oa as discoverExtensionsInDirectory,ia as discoverExtensionsInDirectoryDetailed,Da as discoverMarkdownAgents,gi as discoverOAuthEndpoints,mi as discoverProtectedResourceMetadata,Rr as discoverSavedWorkflows,ys as drainPendingSwaps,St as effortToLegacyReasoningMode,Al as emitVerdict,Xr as emitWorkflowAgentDigest,De as enableKodaXDaemonOwner,Cn as enqueueWithArtifacts,ja as ensureBuiltinRepoExplorerAgent,Wn as estimateTokens,Ha as estimateToolSchemaTokens,Ts as evaluateProviderPolicy,U as excludeExtensionPathsByEntrypoint,Yr as exec,xe as executeCommand,Ud as executeTool,Wi as extractArtifactLedger,dc as extractCommandPrefix,Cs as extractComparableUserMessageText,Zo as extractHtmlTitle,pi as extractInsufficientScope,bs as extractPromptComparableText,ui as extractResourceMetadataUrl,ki as extractTitleFromMessages,tc as fileSignalCollector,is as finalizeRetrievalResult,La as findByVersion,Xi as findPreviousUserEntryId,Di as forkSessionLineage,cs as formatAgentsForPrompt,fl as formatParallelDispatchResult,Qi as formatSize,xi as generateSessionId,er as generateWorkflow,tr as generateWorkflowFromOptions,Ba as getActiveExtensionRuntime,Qn as getAgentConfigHome,Yn as getAgentConfigPath,Td as getAllRegisteredTools,Zn as getAppDataDir,en as getAvailableProviderNames,Cd as getBuiltinRegisteredToolDefinition,bd as getBuiltinToolDefinition,hr as getBuiltinWorkflow,Bt as getCustomModelCapabilities,Ut as getCustomProvider,$t as getCustomProviderList,Vt as getCustomProviderModelDescriptors,zt as getCustomProviderModels,Wt as getCustomProviderNames,ta as getDefaultExtensionDirectory,Vs as getDefaultLspService,Fr as getDefaultWorkflowRunManager,Il as getDenialContext,_e as getGitRoot,Vo as getImpactEstimate,Xe as getKodaXRuntimeOwnerPolicy,qe as getKodaXRuntimeOwnerState,ds as getKodaxGlobalDir,ai as getMcpCachePaths,Kt as getModelCapabilities,kn as getModelInputCapabilities,Wo as getModuleContext,zo as getProcessContext,bt as getProvider,Mt as getProviderConfiguredCapabilityProfile,Ct as getProviderConfiguredReasoningCapability,ye as getProviderList,Re as getProviderModel,Lt as getProviderModelDescriptors,Ot as getProviderModels,xd as getRegisteredToolDefinition,jo as getRepoIntelligenceIndex,Eo as getRepoOverview,Bo as getRepoRoutingSignals,qd as getRequiredToolParams,Gt as getRuntimeModelProvider,Qt as getRuntimeModelProviderNames,Ci as getSessionLineagePath,Mi as getSessionMessagesFromLineage,$o as getSymbolContext,Ed as getTool,Ad as getToolDefinition,kd as getToolRegistrations,ho as getToolResultPolicy,he as getVersion,fc as getWorkflowPatternTemplate,cd as goalTokenDelta,Rs as hasPendingSwap,fe as hydrateProcessEnvFromShell,un as inferImageMediaType,Xs as inferTaskType,pn as inferVideoMediaType,fo as inspectEditFailure,Fo as inspectRepoIntelligenceRuntime,jt as isCustomProviderName,_l as isDeniedRecently,Zt as isKnownProvider,ml as isParallelDispatchDirective,we as isProviderConfigured,Tt as isProviderName,Jt as isRuntimeModelProviderName,_s as isSessionRecoveryCandidateError,ea as isSupportedExtensionModulePath,$ as isToolFileMutation,Xd as isToolMutation,Kd as isToolNetworkRead,Ld as isToolPlanModeAllowed,yd as isValidTokenBudget,js as languageIdForPath,Ka as listAll,on as listAllModelCapabilities,Ma as listArtifacts,Xt as listBuiltinModelCapabilities,Od as listBuiltinToolDefinitions,vr as listBuiltinWorkflows,nr as listCodingDispatchableAgents,Ta as listConstructed,Ht as listCustomProviderModelCapabilities,Fd as listToolDefinitions,Dd as listTools,mc as listWorkflowPatternTemplates,ls as loadAgentsFiles,Xa as loadAgentsFromMarkdown,Dl as loadAutoRules,Se as loadConfig,Ar as loadGeneratedWorkflowFromRun,ca as loadHandler,qa as loadMarkdownAgentScope,Sr as loadSavedWorkflow,wr as loadSavedWorkflowCapsule,Ri as loadValidToken,ld as makeDisabledGoalToolsContext,wt as mapLegacyReasoningModeToEffortIntent,zd as maybeRunReferenceAwareToolOutputGc,$d as maybeRunToolOutputGc,ll as mcpRootsFromWorkspace,$i as mergeArtifactLedger,lr as mergeScopedReviewResults,oi as normalizeMcpCapabilityId,Rn as normalizePastedImage,K as normalizeReasoningEffortValue,dr as normalizeScopedReviewResult,yr as normalizeWorkflowModule,zr as orderPromptSections,sr as parallelInvestigation,ql as parseAutoRules,Ol as parseClassifierOutput,Ae as parseCommand,mo as parseEditToolError,fa as parseLlmReviewVerdict,si as parseMcpCapabilityId,Ql as parseModelSpec,X as parseReasoningEffortEnv,Te as parseRuntimeEvent,vt as parseTimeoutSecEnvMs,Pd as parseToolSearchQuery,Zs as parseWorkflowGeneration,vi as performOAuthLogin,_n as persistImageAsBlock,no as persistToolOutput,Ja as planToolExposure,kr as preflightWorkflowCapsule,b as prepareRuntimeConfig,Ho as prewarmRepoIntelligenceCaches,Oe as processSpecialSyntax,Bs as providerResilienceConfigFromTimeouts,In as prunePasteTmpDir,Ie as rateLimitedCall,wn as readAndNormalizeClipboardImage,Oa as readArtifact,va as readAuditEntries,ya as readBudget,yn as readClipboardImage,Pa as readDisableState,oc as readSpeculativeWindowFromEnv,Kl as readTrustState,Ks as reasoningModeToDepth,Es as reconstructMessagesWithToolGuard,zl as recordAutoModeAllow,$l as recordAutoModeBlock,el as recordBlockerAttempt,Gl as recordBreakerError,nd as recordCompactionSavings,Pl as recordDenial,Yd as registerCodingInvariants,ge as registerConfiguredCustomProviders,A as registerConfiguredMcpCapabilityProvider,Ft as registerCustomProviders,Nt as registerModelProvider,hi as registerOAuthClient,cl as registerOfficialSandboxExtension,Nn as registerPresetDispatcher,Id as registerTool,ba as rehydrateActiveArtifacts,wa as remainingSelfModifyBudget,_r as renameSavedWorkflow,bo as renderChangedScope,Xo as renderImpactEstimate,To as renderModuleContext,Ko as renderProcessContext,Vr as renderPromptSections,Ao as renderRepoOverview,ns as renderRetrievalResult,Lo as renderSymbolContext,dl as replaceConfiguredMcpCapabilityProvider,Er as replaceSavedWorkflow,Ws as reportLspDiagnostics,tl as resetBlockerCounter,Sa as resetBudget,O as resolveAcpLogLevel,Yl as resolveClassifierModel,ir as resolveCodingDispatchableAgent,vs as resolveConstructedAgent,na as resolveExtensionEntrypoint,ao as resolveKodaXManual,nn as resolveModelCapabilities,D as resolveProvider,tn as resolveProviderModelDescriptors,Pt as resolveReasoningEffort,_t as resolveReasoningEffortForModelSwitch,Ls as resolveReasoningMode,Do as resolveRepoIntelligenceMode,qo as resolveRepoIntelligenceRuntimeConfig,Ss as resolveResilienceConfig,Oi as resolveSessionLineageTarget,Gd as resolveToolCapability,to as resolveToolOutputDir,sn as resolveWireEffort,Gs as resolveWorkflowGenerationTimeoutMs,uc as resolveWorkflowIdentity,Ca as revoke,qi as rewindSessionLineage,Wa as rollbackSelfModify,pt as runAcpServer,ua as runAstRules,Ce as runInkInteractiveMode,Me as runInteractiveMode,dd as runKodaX,ga as runLlmReview,al as runManagedTask,ul as runOrchestration,qr as runWorkflowFromOptions,Kr as runWorkflowModule,Cr as safeWorkflowArtifactName,Pe as saveConfig,Pr as saveGeneratedWorkflow,xr as saveGeneratedWorkflowFromRun,fr as scopedReview,ri as searchMcpCatalog,Sd as searchToolIndex,Va as setActiveExtensionRuntime,Jn as setAgentConfigHome,Fe as setKodaXRuntimeOwnerMode,Ti as setSessionLineageActiveEntry,pd as shouldFlipBudgetLimited,ed as shouldSkipLlmCompaction,F as shutdownDefaultLspService,sc as speculativeRace,Aa as stage,Bd as startKodaX,Ur as startManagedWorkflow,Fl as stripAssistantText,Yo as stripHtmlToText,xa as testArtifact,ht as timeoutSecToMs,Po as toolAskUserQuestion,Ro as toolBash,Oo as toolChangedDiff,Mo as toolChangedScope,rs as toolCodeSearch,po as toolEdit,yo as toolGlob,wo as toolGrep,Qo as toolImpactEstimate,go as toolInsertAfterAnchor,No as toolModuleContext,Jd as toolPermission,Jo as toolProcessContext,io as toolRead,Co as toolRepoOverview,as as toolSemanticLookup,Go as toolSymbolContext,So as toolUndo,ss as toolWebFetch,os as toolWebSearch,uo as toolWrite,be as touchContext,Yi as truncateHead,eo as truncateLine,Zi as truncateTail,Xl as trustProjectRules,ud as turnWallTimeDelta,ei as validateAndFixToolHistory,qt as validateCustomProviderConfig,Js as validateGeneratedWorkflowSource,bn as validateInputArtifactsForModel,gl as validateSubtaskIndependence,pa as validateToolSchemaForProvider,sl as verifyGoalCompletion,Zr as webhook,il as withGoalBeforeNextTurn,ol as withGoalStopHook,co as withManualToolBranding,gs as workerAgent,vc as workflowStartOutcomeConsumesTurn,Sc as writeReviewPackets};
9
+ `))},"onError"),beforeToolExecute:s(async(o,r,a)=>{let d=await this.evaluateToolPermission(e,o,r,a?.toolId);return d.allowed?!0:d.override??!1},"beforeToolExecute")}}}async evaluateToolPermission(e,t,i,o){if(this.events.emit({type:"tool_permission_evaluated",sessionId:e.sessionId,tool:t,toolId:o??null,permissionMode:e.permissionMode}),t==="bash"){let c=typeof i.command=="string"?i.command:"";if(G(c))return this.events.emit({type:"tool_permission_resolved",sessionId:e.sessionId,tool:t,toolId:o??null,outcome:"auto_allowed_read_only_bash"}),{allowed:!0};if(await J(t,i,e.alwaysAllowTools,this.bashPrefixExtractor))return this.events.emit({type:"tool_permission_resolved",sessionId:e.sessionId,tool:t,toolId:o??null,outcome:"auto_allowed_remembered"}),{allowed:!0}}if(e.permissionMode==="plan"){let c=ne(t,i,e.cwd);return c?(this.events.emit({type:"tool_permission_resolved",sessionId:e.sessionId,tool:t,toolId:o??null,outcome:"blocked_plan_mode"}),{allowed:!1,override:`${c} Do not try to modify files while planning. Finish the plan first, then hand off to a writable mode.`}):(this.events.emit({type:"tool_permission_resolved",sessionId:e.sessionId,tool:t,toolId:o??null,outcome:"auto_allowed_plan_mode"}),{allowed:!0})}let r=T(t)&&typeof i.path=="string"&&Y(g.resolve(e.cwd,i.path),e.cwd),a=V(e.permissionMode).has(t),d=e.permissionMode==="auto-in-project"&&(T(t)&&typeof i.path=="string"&&!Z(i.path,e.cwd)||t==="bash"&&typeof i.command=="string"&&te(i.command,e.cwd).dangerous);return!r&&!a&&!d?(this.events.emit({type:"tool_permission_resolved",sessionId:e.sessionId,tool:t,toolId:o??null,outcome:"auto_allowed_policy"}),{allowed:!0}):await this.requestPermissionFromClient(e,t,i,o)}async requestPermissionFromClient(e,t,i,o){if(!this.connection)return this.events.emit({type:"tool_permission_resolved",sessionId:e.sessionId,tool:t,toolId:o??null,outcome:"request_failed_disconnected"}),{allowed:!1,override:"[Cancelled] ACP client is disconnected, so the permission request could not be completed."};let r=[{optionId:"allow_once",kind:"allow_once",name:"Allow once"},{optionId:"allow_always",kind:"allow_always",name:"Always allow"},{optionId:"reject_once",kind:"reject_once",name:"Reject"}],a={toolCallId:o??se(),title:t,kind:ae(t),rawInput:i,locations:de(t,i),status:"pending"},d;this.events.emit({type:"permission_requested",sessionId:e.sessionId,tool:t,toolId:a.toolCallId});try{d=await this.connection.requestPermission({sessionId:e.sessionId,toolCall:a,options:r})}catch(l){return this.events.emit({type:"tool_permission_resolved",sessionId:e.sessionId,tool:t,toolId:a.toolCallId,outcome:"request_failed_incomplete",error:l instanceof Error?l.message:String(l)}),{allowed:!1,override:"[Cancelled] ACP client did not complete the permission request. Operation failed closed."}}return d.outcome.outcome!=="selected"?(this.events.emit({type:"tool_permission_resolved",sessionId:e.sessionId,tool:t,toolId:a.toolCallId,outcome:"request_dismissed"}),{allowed:!1,override:"[Cancelled] Operation cancelled by user"}):(d.outcome.optionId==="allow_always"&&t==="bash"&&(e.alwaysAllowTools=Array.from(new Set([...e.alwaysAllowTools,Q(t,i,!1)])).filter(Boolean)),d.outcome.optionId==="reject_once"?(this.events.emit({type:"tool_permission_resolved",sessionId:e.sessionId,tool:t,toolId:a.toolCallId,outcome:"request_rejected"}),{allowed:!1,override:"[Cancelled] Operation cancelled by user"}):(this.events.emit({type:"tool_permission_resolved",sessionId:e.sessionId,tool:t,toolId:a.toolCallId,outcome:"request_granted",remember:d.outcome.optionId==="allow_always"}),{allowed:!0}))}async sendTextChunk(e,t){await this.sendSessionUpdate({sessionId:e,update:{sessionUpdate:"agent_message_chunk",content:{type:"text",text:t}}})}async sendSessionUpdate(e){!this.connection||this.connection.signal.aborted||await this.connection.sessionUpdate(e)}dispatchNotification(e,t,i){i.catch(o=>{if(!this.connection||this.connection.signal.aborted)return;let r=o instanceof Error?o.message:String(o);this.events.emit({type:"notification_failed",sessionId:t,label:e,error:r})})}};async function pt(n={}){let e=new _(n),t=He.toWeb(R.stdin),i=Ne.toWeb(R.stdout);e.attach(t,i);try{await e.waitForClose()}finally{await e.dispose()}}s(pt,"runAcpServer");export{oe as ACP_LOG_LEVELS,Pa as ALWAYS_RESIDENT_TOOL_NAMES,Gl as AUTO_MODE_DENIAL_CONSECUTIVE_THRESHOLD,Jl as AUTO_MODE_DENIAL_CUMULATIVE_THRESHOLD,w as AcpEventEmitter,y as AcpLogger,hc as BASH_POLICY_SPEC,ul as BLOCKER_REQUIRED_CONSECUTIVE_TURNS,tc as BREAKER_ERROR_THRESHOLD,nc as BREAKER_WINDOW_MS,Ee as BUILTIN_COMMANDS,wd as BUILTIN_WORKFLOWS,Hi as CANCELLED_TOOL_RESULT_MESSAGE,Bi as CANCELLED_TOOL_RESULT_PREFIX,ql as CODING_AGENT_MARKER,il as CODING_INVARIANTS,Bd as CODING_SUMMARY_PROMPT,Hd as CODING_UPDATE_SUMMARY_PROMPT,Vs as CapabilityDeniedError,sl as Client,Ja as CodingActorSession,kr as CombinedExtensionRuntime,Bs as ConstructionManifestError,Nd as DEFAULT_CODING_AGENT_NAME,Al as DEFAULT_DANGEROUS_PATTERNS,$s as DEFAULT_HANDLER_TIMEOUT_MS,ka as DEFAULT_RESILIENCE_CONFIG,El as DEFAULT_SAFE_PATTERNS,nr as DEFAULT_SELF_MODIFY_BUDGET,pc as DEFAULT_SPECULATIVE_WINDOW_MS,Gi as DEFAULT_TOOL_OUTPUT_MAX_BYTES,Ni as DEFAULT_TOOL_OUTPUT_MAX_LINES,td as DEFAULT_WORKFLOW_GENERATION_TIMEOUT_MS,Gn as DefaultSummaryCompaction,Ll as EMIT_VERDICT_TOOL_NAME,Tn as ErrorCategory,pd as FINDING_VERIFICATION_OUTPUT_SCHEMA,C as FileSessionStorage,ps as GENERATOR_AGENT_NAME,un as ImageResizeError,Wn as KODAX_API_MIN_INTERVAL,k as KODAX_CONFIG_FILE,q as KODAX_DEFAULT_PROVIDER,Xn as KODAX_DEFAULT_TIMEOUT,pe as KODAX_DIR,kn as KODAX_FILE_MEDIA_TYPES,qn as KODAX_HARD_TIMEOUT,An as KODAX_IMAGE_MEDIA_TYPES,Un as KODAX_MAX_INCOMPLETE_RETRIES,Dn as KODAX_MAX_RETRIES,Kn as KODAX_MAX_TOKENS,kt as KODAX_PROVIDERS,xt as KODAX_PROVIDER_SNAPSHOTS,Rt as KODAX_REASONING_MODE_SEQUENCE,Fn as KODAX_RETRY_BASE_DELAY,me as KODAX_SESSIONS_DIR,yt as KODAX_STABLE_EFFORT_INTENTS,jn as KODAX_STAGGER_DELAY,Mr as KODAX_TOOLS,ao as KODAX_UNDERLYING_CAPABILITY_TOPICS,ve as KODAX_VERSION,xn as KODAX_VIDEO_MEDIA_TYPES,_ as KodaXAcpServer,Et as KodaXAnthropicCompatProvider,It as KodaXBaseProvider,sl as KodaXClient,mt as KodaXError,xr as KodaXExtensionRuntime,cn as KodaXMediaError,At as KodaXOpenAICompatProvider,ft as KodaXProviderError,gt as KodaXRateLimitError,dn as KodaXSessionError,ln as KodaXTerminalError,an as KodaXToolError,Ai as LINEAGE_ENTRY_TYPES,Ha as LSP_SERVERS,ki as LineageCompaction,xi as LineageExtension,Na as LspService,lo as MANUAL_REGISTRY,ro as MANUAL_TOPIC_IDS,vn as MAX_DIMENSION,ui as McpAuthRequiredError,_i as McpCapabilityProvider,ci as McpExpiredSessionError,Ii as McpManager,Pi as McpServerRuntime,Pn as PASTE_TMP_DIR_ENV,_n as PASTE_TMP_TTL_MS,us as PLANNER_AGENT_NAME,$n as PROMISE_PATTERN,ia as PROMPT_SECTION_REGISTRY,Xl as PROTOCOL_EMITTER_TOOLS,La as ProviderRecoveryCoordinator,Ji as READ_DEFAULT_LIMIT,Yi as READ_MAX_LINE_CHARS,Qi as READ_PREFLIGHT_SIZE_BYTES,_r as REPO_EXPLORER_AGENT_NAME,Ir as REPO_EXPLORER_TOOL_NAMES,Qn as Runner,Le as RuntimeTransportBoundaryError,ud as SCOPED_REVIEW_OUTPUT_SCHEMA,cs as SCOUT_AGENT_NAME,Ec as SCOUT_THEN_AUTHOR_PROMPT_LINES,pa as SELF_KNOWLEDGE_ROUTING_RULE,na as SYSTEM_PROMPT,qd as SYSTEM_WORKFLOW_LIMITS,Oa as StableBoundaryTracker,Rn as TARGET_RAW_SIZE_BYTES,gs as TASK_ENGINE_ROLE_AGENTS,Dl as TOOL_RESULT_TRUNCATION_GUARDRAIL_NAME,Rc as TRACING_ENV,ms as WORKER_AGENT_NAME,ed as WORKFLOW_GENERATION_SYSTEM_PROMPT,lr as _resetRuntimeForTesting,Ke as acquireKodaXInlineOwner,pr as activate,Mn as actorQueueId,Co as analyzeChangedScope,er as appendAuditEntry,Xi as appendSessionLineageLabel,As as applyAccountingDelta,gd as applyFindingVerification,qi as applySessionCompaction,yo as applyToolResultGuardrail,$i as archiveOldIslands,xc as authorWorkflowViaWorker,ec as autoModeDenialShouldFallback,lc as bashSignalCollector,yc as bootstrapTracing,Zd as boundedRevise,sc as breakerShouldFallback,el as budgetCeiling,Dd as buildApprovalSummary,bs as buildBlockedGoal,ma as buildCapabilityContextSections,Ul as buildClassifierPrompt,Cs as buildCompleteGoal,Es as buildCreatedGoal,ja as buildFallbackRoutingDecision,gl as buildGoalRuntimeBinding,Si as buildInitializeCapabilities,Qs as buildLlmReviewPrompt,uo as buildManualToolDescription,x as buildMcpReverseCapabilities,xs as buildPausedGoal,va as buildPromptMessageContent,aa as buildPromptSnapshot,Ka as buildProviderCapabilitySnapshot,Wa as buildProviderPolicyHintsForDecision,Xa as buildProviderPolicyPromptNotes,bo as buildRepoIntelligenceContext,Wo as buildRepoIntelligenceIndex,Ao as buildRepoOverview,ks as buildResumedGoal,Rd as buildScopedReviewFinalPrompt,hd as buildScopedReviewPrimaryPrompt,vd as buildScopedReviewVerificationPrompt,Ac as buildScoutThenAuthorPrompt,ua as buildSelfKnowledgeRoutingRule,ji as buildSessionTree,ga as buildSystemPrompt,fa as buildSystemPromptSnapshot,Zr as buildToolResultBudget,ea as buildToolResultBudgetFromUsage,Ts as buildToolSearchIndex,Ld as buildWorkflowCostReport,sd as buildWorkflowGenerationSkillContext,od as buildWorkflowGenerationUserPrompt,dc as checkAbsoluteDeny,ha as checkIncompleteToolCalls,za as checkPromiseSignal,ta as clampToolResultPolicyToBudget,Fd as clampWorkflowLimits,Wl as classify,kl as classifyBashCommand,Ln as classifyError,Eo as classifyFileCategory,Ca as classifyResilienceError,Gr as cleanupExpiredToolOutputs,ii as cleanupIncompleteToolCalls,Jr as cleanupUnreferencedToolOutputs,Yt as clearRuntimeModelProviders,uc as collectAllSignals,j as combineExtensionRuntimes,Cl as computeInputSignature,$l as computeRulesFingerprint,dr as configureRuntime,Ue as connectKodaXRuntime,Aa as consumeCompactionCooldown,is as convertCapabilityReadResult,ns as convertProviderSearchResults,Wi as countActiveLineageMessages,Vn as countTokens,Bn as createAgent,Ql as createAutoModeDenialTracker,gc as createAutoModeToolGuardrail,xl as createBashClassifierConfig,z as createBashPrefixExtractor,Fr as createBuiltinToolDefinition,ic as createCircuitBreaker,ld as createCodingWorkflowBackend,Ia as createCompactionAntiThrashState,Hs as createCtxProxy,Dt as createCustomProvider,Gd as createDefaultCodingAgent,bl as createDenialTracker,E as createExtensionRuntime,Ya as createExternalActorTurnExecutor,gn as createFileArtifactFromPath,Hn as createHandoff,fn as createImageArtifactFromPath,Nn as createInMemorySession,ke as createInteractiveContext,M as createKodaXRuntime,Sl as createKodaXTaskRunner,Qa as createLocalCodingActorControl,si as createMcpCapabilityId,Ei as createMcpManager,pi as createMcpTransport,oa as createPromptSection,$a as createReasoningPlan,Xd as createRunGraphWriter,Sa as createRuntimeContextBudgetSnapshot,Qd as createSessionControl,Mi as createSessionLineage,Fl as createToolResultTruncationGuardrail,hn as createVideoArtifactFromPath,Sc as createWorkflowLifecycleController,Ic as createWorkflowPatternTemplateModule,$d as createWorkflowRunManager,al as decideWorkflowInvocation,I as dedupeExtensionPathsByEntrypoint,oi as defaultMcpCacheDir,zs as defaultPolicy,bd as deleteSavedWorkflow,ar as disableSelfModify,hi as discoverAuthorizationServerMetadata,U as discoverDefaultExtensions,Ws as discoverExtensionsInDirectory,js as discoverExtensionsInDirectoryDetailed,Pr as discoverMarkdownAgents,vi as discoverOAuthEndpoints,gi as discoverProtectedResourceMetadata,_d as discoverSavedWorkflows,Rs as drainPendingSwaps,St as effortToLegacyReasoningMode,Kl as emitVerdict,jd as emitWorkflowAgentDigest,De as enableKodaXDaemonOwner,On as enqueueWithArtifacts,Er as ensureBuiltinRepoExplorerAgent,zn as estimateTokens,wa as estimateToolSchemaTokens,qa as evaluateProviderPolicy,F as excludeExtensionPathsByEntrypoint,Xs as exec,xe as executeCommand,Nr as executeTool,zi as extractArtifactLedger,vc as extractCommandPrefix,ya as extractComparableUserMessageText,ts as extractHtmlTitle,fi as extractInsufficientScope,Ra as extractPromptComparableText,mi as extractResourceMetadataUrl,Ci as extractTitleFromMessages,cc as fileSignalCollector,ss as finalizeRetrievalResult,Rr as findByVersion,Di as findPreviousUserEntryId,Ui as forkSessionLineage,ca as formatAgentsForPrompt,_l as formatParallelDispatchResult,Zi as formatSize,bi as generateSessionId,ad as generateWorkflow,dd as generateWorkflowFromOptions,Cr as getActiveExtensionRuntime,Zn as getAgentConfigHome,ei as getAgentConfigPath,jr as getAllRegisteredTools,ti as getAppDataDir,en as getAvailableProviderNames,Dr as getBuiltinRegisteredToolDefinition,qr as getBuiltinToolDefinition,Sd as getBuiltinWorkflow,Bt as getCustomModelCapabilities,Ut as getCustomProvider,$t as getCustomProviderList,Vt as getCustomProviderModelDescriptors,zt as getCustomProviderModels,Wt as getCustomProviderNames,Fs as getDefaultExtensionDirectory,Ga as getDefaultLspService,zd as getDefaultWorkflowRunManager,Tl as getDenialContext,_e as getGitRoot,Ho as getImpactEstimate,Xe as getKodaXRuntimeOwnerPolicy,qe as getKodaXRuntimeOwnerState,da as getKodaxGlobalDir,li as getMcpCachePaths,Kt as getModelCapabilities,bn as getModelInputCapabilities,zo as getModuleContext,Bo as getProcessContext,bt as getProvider,Mt as getProviderConfiguredCapabilityProfile,Ct as getProviderConfiguredReasoningCapability,ye as getProviderList,Re as getProviderModel,Lt as getProviderModelDescriptors,Ot as getProviderModels,Kr as getRegisteredToolDefinition,$o as getRepoIntelligenceIndex,xo as getRepoOverview,No as getRepoRoutingSignals,Vr as getRequiredToolParams,Gt as getRuntimeModelProvider,Qt as getRuntimeModelProviderNames,Oi as getSessionLineagePath,Ti as getSessionMessagesFromLineage,Vo as getSymbolContext,Tr as getTool,Lr as getToolDefinition,Xr as getToolRegistrations,Ro as getToolResultPolicy,he as getVersion,_c as getWorkflowPatternTemplate,Ps as goalTokenDelta,rl as hasExplicitNaturalLanguageWorkflowIntent,vs as hasPendingSwap,fe as hydrateProcessEnvFromShell,pn as inferImageMediaType,Ua as inferTaskType,mn as inferVideoMediaType,ho as inspectEditFailure,jo as inspectRepoIntelligenceRuntime,jt as isCustomProviderName,Ol as isDeniedRecently,Zt as isKnownProvider,Pl as isParallelDispatchDirective,we as isProviderConfigured,Tt as isProviderName,Jt as isRuntimeModelProviderName,Ma as isSessionRecoveryCandidateError,Ds as isSupportedExtensionModulePath,W as isToolFileMutation,zr as isToolMutation,$r as isToolNetworkRead,Wr as isToolPlanModeAllowed,Ms as isValidTokenBudget,Va as languageIdForPath,yr as listAll,on as listAllModelCapabilities,gr as listArtifacts,Xt as listBuiltinModelCapabilities,Ur as listBuiltinToolDefinitions,Pd as listBuiltinWorkflows,ys as listCodingDispatchableAgents,vr as listConstructed,Ht as listCustomProviderModelCapabilities,Hr as listToolDefinitions,Br as listTools,Pc as listWorkflowPatternTemplates,la as loadAgentsFiles,wr as loadAgentsFromMarkdown,Hl as loadAutoRules,Se as loadConfig,Md as loadGeneratedWorkflowFromRun,Ns as loadHandler,Sr as loadMarkdownAgentScope,Ad as loadSavedWorkflow,Ed as loadSavedWorkflowCapsule,wi as loadValidToken,Ss as makeDisabledGoalToolsContext,wt as mapLegacyReasoningModeToEffortIntent,Yr as maybeRunReferenceAwareToolOutputGc,Qr as maybeRunToolOutputGc,Rl as mcpRootsFromWorkspace,Vi as mergeArtifactLedger,fd as mergeScopedReviewResults,rn as normalizeKodaXAgentMode,ri as normalizeMcpCapabilityId,yn as normalizePastedImage,K as normalizeReasoningEffortValue,md as normalizeScopedReviewResult,Id as normalizeWorkflowModule,sa as orderPromptSections,cd as parallelInvestigation,Bl as parseAutoRules,jl as parseClassifierOutput,Ae as parseCommand,go as parseEditToolError,Ys as parseLlmReviewVerdict,ai as parseMcpCapabilityId,rc as parseModelSpec,X as parseReasoningEffortEnv,Te as parseRuntimeEvent,vt as parseTimeoutSecEnvMs,Ks as parseToolSearchQuery,rd as parseWorkflowGeneration,yi as performOAuthLogin,In as persistImageAsBlock,oo as persistToolOutput,_a as planToolExposure,Td as preflightWorkflowCapsule,b as prepareRuntimeConfig,Go as prewarmRepoIntelligenceCaches,Oe as processSpecialSyntax,Za as providerResilienceConfigFromTimeouts,En as prunePasteTmpDir,Ie as rateLimitedCall,Sn as readAndNormalizeClipboardImage,hr as readArtifact,tr as readAuditEntries,ir as readBudget,wn as readClipboardImage,rr as readDisableState,mc as readSpeculativeWindowFromEnv,zl as readTrustState,Fa as reasoningModeToDepth,Ta as reconstructMessagesWithToolGuard,Zl as recordAutoModeAllow,Yl as recordAutoModeBlock,ll as recordBlockerAttempt,oc as recordBreakerError,xa as recordCompactionSavings,Ml as recordDenial,ol as registerCodingInvariants,ge as registerConfiguredCustomProviders,A as registerConfiguredMcpCapabilityProvider,Ft as registerCustomProviders,Nt as registerModelProvider,Ri as registerOAuthClient,yl as registerOfficialSandboxExtension,Jn as registerPresetDispatcher,Or as registerTool,mr as rehydrateActiveArtifacts,or as remainingSelfModifyBudget,kd as renameSavedWorkflow,Mo as renderChangedScope,Do as renderImpactEstimate,Ko as renderModuleContext,qo as renderProcessContext,ra as renderPromptSections,ko as renderRepoOverview,os as renderRetrievalResult,Xo as renderSymbolContext,vl as replaceConfiguredMcpCapabilityProvider,Cd as replaceSavedWorkflow,Ba as reportLspDiagnostics,cl as resetBlockerCounter,sr as resetBudget,O as resolveAcpLogLevel,ac as resolveClassifierModel,ws as resolveCodingDispatchableAgent,hs as resolveConstructedAgent,Us as resolveExtensionEntrypoint,co as resolveKodaXManual,nn as resolveModelCapabilities,D as resolveProvider,tn as resolveProviderModelDescriptors,Pt as resolveReasoningEffort,_t as resolveReasoningEffortForModelSwitch,Da as resolveReasoningMode,Uo as resolveRepoIntelligenceMode,Fo as resolveRepoIntelligenceRuntimeConfig,ba as resolveResilienceConfig,Li as resolveSessionLineageTarget,Os as resolveToolBridgeTarget,tl as resolveToolCapability,io as resolveToolOutputDir,sn as resolveWireEffort,nd as resolveWorkflowGenerationTimeoutMs,wc as resolveWorkflowIdentity,fr as revoke,Fi as rewindSessionLineage,Ar as rollbackSelfModify,pt as runAcpServer,Gs as runAstRules,Ce as runInkInteractiveMode,Me as runInteractiveMode,Jd as runKodaX,Zs as runLlmReview,hl as runManagedTask,wl as runOrchestration,Wd as runWorkflowFromOptions,Ud as runWorkflowModule,Kd as safeWorkflowArtifactName,Pe as saveConfig,xd as saveGeneratedWorkflow,Od as saveGeneratedWorkflowFromRun,yd as scopedReview,di as searchMcpCatalog,Ls as searchToolIndex,br as setActiveExtensionRuntime,Yn as setAgentConfigHome,Fe as setKodaXRuntimeOwnerMode,Ki as setSessionLineageActiveEntry,Is as shouldFlipBudgetLimited,Ea as shouldSkipLlmCompaction,$ as shutdownDefaultLspService,fc as speculativeRace,cr as stage,Yd as startKodaX,Vd as startManagedWorkflow,Nl as stripAssistantText,es as stripHtmlToText,ur as testArtifact,ht as timeoutSecToMs,Io as toolAskUserQuestion,wo as toolBash,Lo as toolChangedDiff,To as toolChangedScope,ds as toolCodeSearch,fo as toolEdit,So as toolGlob,Po as toolGrep,Zo as toolImpactEstimate,vo as toolInsertAfterAnchor,Jo as toolModuleContext,nl as toolPermission,Yo as toolProcessContext,so as toolRead,Oo as toolRepoOverview,ls as toolSemanticLookup,Qo as toolSymbolContext,_o as toolUndo,as as toolWebFetch,rs as toolWebSearch,mo as toolWrite,be as touchContext,eo as truncateHead,no as truncateLine,to as truncateTail,Vl as trustProjectRules,_s as turnWallTimeDelta,ni as validateAndFixToolHistory,qt as validateCustomProviderConfig,id as validateGeneratedWorkflowSource,Cn as validateInputArtifactsForModel,Il as validateSubtaskIndependence,Js as validateToolSchemaForProvider,fl as verifyGoalCompletion,qs as webhook,pl as withGoalBeforeNextTurn,ml as withGoalStopHook,po as withManualToolBranding,fs as workerAgent,dl as workflowStartOutcomeConsumesTurn,kc as writeReviewPackets};
@@ -0,0 +1,28 @@
1
+ // @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
2
+ /**
3
+ * Preload script — must execute before any ESM module evaluation.
4
+ * Loaded via: node --require ./scripts/production-env.cjs ...
5
+ *
6
+ * React ships two runtimes: development (with PerformanceMeasure tracking,
7
+ * prop diff strings, component profiling) and production (zero overhead).
8
+ * Development mode creates ~100 MB/turn of profiling objects that are never
9
+ * released, causing inevitable OOM after 10-20 conversation rounds.
10
+ *
11
+ * Default to production. Set KODAX_DEV=1 to opt-in to development mode.
12
+ */
13
+ 'use strict';
14
+
15
+ if (!process.env.NODE_ENV) {
16
+ process.env.NODE_ENV = process.env.KODAX_DEV === '1' ? 'development' : 'production';
17
+ }
18
+
19
+ // Bootstrap hardening must run before the first application ESM import.
20
+ // ELECTRON_RUN_AS_NODE is a one-shot exec-boundary switch and is never kept.
21
+ delete process.env.ELECTRON_RUN_AS_NODE;
22
+ if (process.env.KODAX_DISABLE_HARDENING !== '1') {
23
+ delete process.env.LD_PRELOAD;
24
+ delete process.env.DYLD_INSERT_LIBRARIES;
25
+ delete process.env.DYLD_LIBRARY_PATH;
26
+ }
27
+
28
+ var u=Object.defineProperty;var t=(e,o)=>u(e,"name",{value:o,configurable:!0});import{pathToFileURL as c}from"node:url";function m(e){return e.length===1&&(e[0]==="-r"||e[0]==="--resume")}t(m,"isBareResumeRequest");async function p(e={}){let o=e.argv??process.argv,r=e.stdin??process.stdin,d=e.loadResume??(()=>import("./kodax_resume.js")),l=e.loadCli??(()=>import("./kodax_cli.js")),a,s=t(()=>(a??=l(),a),"loadCliOnce");if(m(o.slice(2))){let n=await(await d()).resolveBareResume({beforeSelect:t(async()=>{await s()},"beforeSelect")});if(n.kind==="exit"){r.pause?.(),r.unref?.();return}o.splice(2,o.length-2,...n.argv),n.argv.length>0&&r.isTTY===!0&&(r.pause?.(),r.ref?.())}await(await s()).main()}t(p,"runKodaXBootstrap");async function f(){try{await p()}catch(e){process.stdin.pause(),process.stdin.unref?.();let o=e instanceof Error?e.message:String(e);try{let{default:r}=await import("chalk");console.error(r.red(`[Error] ${o}`))}catch{console.error(`[Error] ${o}`)}process.exitCode=1}}t(f,"runKodaXBootstrapAsEntry");var i=process.argv[1],y=i!==void 0&&import.meta.url===c(i).href;y&&f();export{m as isBareResumeRequest,p as runKodaXBootstrap,f as runKodaXBootstrapAsEntry};