@kodax-ai/kodax 0.7.47 → 0.7.49

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 (53) hide show
  1. package/CHANGELOG.md +1741 -1702
  2. package/README.md +80 -27
  3. package/README_CN.md +60 -15
  4. package/dist/builtin/code-review/SKILL.md +1 -1
  5. package/dist/chunks/argument-completer-GDG5OHN7.js +2 -0
  6. package/dist/chunks/{chunk-VGRG2F6H.js → chunk-67SWUEEN.js} +424 -276
  7. package/dist/chunks/chunk-C5PKZX5Z.js +291 -0
  8. package/dist/chunks/chunk-ISGHUKRY.js +428 -0
  9. package/dist/chunks/chunk-JTHMWRXM.js +566 -0
  10. package/dist/chunks/chunk-TYZAH3YP.js +2 -0
  11. package/dist/chunks/chunk-YACQ4OST.js +31 -0
  12. package/dist/chunks/{chunk-2SMCCP44.js → chunk-YW4RQV7U.js} +1 -1
  13. package/dist/chunks/{compaction-config-YU7SI6L6.js → compaction-config-BQBYOWX2.js} +1 -1
  14. package/dist/chunks/{construction-bootstrap-6UN3OY7X.js → construction-bootstrap-5TFGMSWQ.js} +1 -1
  15. package/dist/chunks/{dist-IDNOAB4M.js → dist-BL7IBQHD.js} +1 -1
  16. package/dist/chunks/dist-D7HOETCE.js +2 -0
  17. package/dist/chunks/{utils-3ISOUEFC.js → utils-XWDT3W5X.js} +1 -1
  18. package/dist/index.d.ts +13 -13
  19. package/dist/index.js +5 -5
  20. package/dist/kodax_cli.js +1337 -888
  21. package/dist/provider-capabilities.json +193 -190
  22. package/dist/sdk-agent.d.ts +207 -105
  23. package/dist/sdk-agent.js +1 -1
  24. package/dist/sdk-coding.d.ts +569 -37
  25. package/dist/sdk-coding.js +1 -1
  26. package/dist/sdk-llm.d.ts +5 -5
  27. package/dist/sdk-llm.js +1 -1
  28. package/dist/sdk-mcp.d.ts +3 -3
  29. package/dist/sdk-mcp.js +1 -1
  30. package/dist/sdk-repl.d.ts +16 -15
  31. package/dist/sdk-repl.js +1 -1
  32. package/dist/sdk-session.d.ts +6 -3
  33. package/dist/sdk-session.js +1 -1
  34. package/dist/sdk-skills.js +1 -1
  35. package/dist/types-chunks/{base.d-BdJKSPO2.d.ts → base.d-C4jYVjJh.d.ts} +2 -1
  36. package/dist/types-chunks/{bash-prefix-extractor.d-D6hL0Cuv.d.ts → bash-prefix-extractor.d-CI_xcPhn.d.ts} +70 -35
  37. package/dist/types-chunks/{file-tracker.d-BNTIvsdb.d.ts → capsule.d-DaPuhyyK.d.ts} +170 -5
  38. package/dist/types-chunks/{config.d-BfJUXxC0.d.ts → config.d-CJy1WENT.d.ts} +17 -7
  39. package/dist/types-chunks/manager.d-DLmDhX3i.d.ts +696 -0
  40. package/dist/types-chunks/{resolver.d-DkgJlEzr.d.ts → resolver.d-B_wm409c.d.ts} +2 -2
  41. package/dist/types-chunks/{storage.d-B1Jk6ryM.d.ts → storage.d-J2GqOgaX.d.ts} +4 -1
  42. package/dist/types-chunks/{types.d-D2RNa5Y7.d.ts → types.d-BR9oNWup.d.ts} +429 -4
  43. package/dist/types-chunks/{types.d-B_MIIApc.d.ts → types.d-BnjX2Gn4.d.ts} +6 -1
  44. package/dist/types-chunks/{types.d-Cf-GCzac.d.ts → types.d-rPRl2LSB.d.ts} +4 -0
  45. package/dist/types-chunks/{utils.d-umRKgMAu.d.ts → utils.d-BJ_-y8gC.d.ts} +42 -8
  46. package/package.json +1 -1
  47. package/dist/chunks/chunk-66B6ZOU7.js +0 -31
  48. package/dist/chunks/chunk-KRHAO2T3.js +0 -567
  49. package/dist/chunks/chunk-QZFZIGPF.js +0 -2
  50. package/dist/chunks/chunk-VX6HN3JP.js +0 -415
  51. package/dist/chunks/dist-DS2KIZQG.js +0 -2
  52. package/dist/types-chunks/manager.d-U3UEwY1P.d.ts +0 -385
  53. package/dist/types-chunks/types.d-C5mHR87z.d.ts +0 -119
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{Rb as fe,Sb as he,X as L,_ as T,aa as O,ac as w,ba as q,ca as K,da as F,ea as D,fa as X,ga as j,ka as le,la as ce,ma as pe,nb as ue,ob as me,zb as ge}from"./chunks/chunk-KRHAO2T3.js";import{D as de,b as Q,c as H,d as J,f as Y,h as Z,i as ee,j as te,k as se,u as oe,v as ne,w as ie,x as A,y as re,z as ae}from"./chunks/chunk-QZFZIGPF.js";import"./chunks/chunk-2SMCCP44.js";import"./chunks/chunk-EVIDQWMF.js";import{$ as bo,$a as Cn,$b as Pi,$c as wr,$d as Aa,A as Js,Aa as Yo,Ab as Yn,Ac as Ji,Ad as Gr,B as Ys,Ba as Zo,Bb as Zn,Bc as Yi,Bd as Qr,C as Zs,Ca as en,Cb as ei,Cc as Zi,Cd as Hr,D as eo,Da as tn,Db as ti,Dc as M,Dd as Jr,E as to,Ea as sn,Eb as si,Ec as er,Ed as Yr,F as so,Fa as on,Fb as oi,Fc as tr,Fd as Zr,G as oo,Ga as nn,Gb as ni,Gc as sr,Gd as ea,H as no,Ha as rn,Hb as ii,Hc as or,Hd as ta,I as io,Ia as an,Ib as ri,Ic as x,Id as sa,J as ro,Ja as dn,Jb as ai,Jc as nr,Jd as oa,K as ao,Ka as ln,Kb as di,Kc as ir,Kd as na,L as lo,La as cn,Lb as li,Lc as rr,Ld as ia,M as co,Ma as pn,Mb as ci,Mc as ar,Md as ra,N as po,Na as un,Nb as R,Nc as dr,Nd as aa,O as uo,Oa as mn,Ob as pi,Oc as lr,Od as da,P as mo,Pa as gn,Pb as ui,Pc as cr,Pd as la,Q as go,Qa as fn,Qb as mi,Qc as pr,Qd as ca,R as fo,Ra as hn,Rb as gi,Rc as ur,Rd as pa,S as ho,Sa as vn,Sb as fi,Sc as mr,Sd as ua,T as vo,Ta as yn,Tb as hi,Tc as gr,Td as ma,U as yo,Ua as _n,Ub as vi,Uc as fr,Ud as ga,V as _o,Va as In,Vb as yi,Vc as hr,Vd as fa,W as Io,Wa as An,Wb as _i,Wc as vr,Wd as ha,X as Ao,Xa as wn,Xb as Ii,Xc as yr,Xd as va,Y as wo,Ya as Sn,Yb as Ai,Yc as _r,Yd as ya,Z as So,Za as Pn,Zb as wi,Zc as Ir,Zd as _a,_ as Po,_a as bn,_b as Si,_c as Ar,_d as Ia,a as Ct,aa as Co,ab as kn,ac as bi,ad as Sr,ae as wa,b as kt,ba as ko,bb as Rn,bc as Ci,bd as Pr,be as Sa,c as Rt,ca as Ro,cb as Mn,cc as ki,cd as br,ce as Pa,d as Mt,da as Mo,db as xn,dc as Ri,dd as Cr,de as ba,e as xt,ea as xo,eb as En,ec as Mi,ed as kr,ee as Ca,f as xs,fa as Eo,fb as Ln,fc as xi,fd as Rr,fe as ka,g as Es,ga as Lo,gb as Tn,gc as Ei,gd as Mr,ge as E,h as Ls,ha as To,hb as On,hc as Li,hd as xr,he as Ra,i as Ts,ia as Oo,ib as qn,ic as Ti,id as I,ie as Ma,j as Os,ja as qo,jb as Kn,jc as Oi,jd as Er,k as qs,ka as Ko,kb as Fn,kc as qi,kd as Lr,l as Ks,la as Fo,lb as Dn,lc as Ki,ld as Tr,m as Fs,ma as Do,mb as Xn,mc as Fi,md as Or,n as Ds,na as Xo,nb as jn,nc as Di,nd as qr,o as Xs,oa as jo,ob as Un,oc as Xi,od as Kr,p as js,pa as Uo,pb as Vn,pc as ji,pd as Fr,q as Us,qa as Vo,qb as $n,qc as Ui,qd as Dr,r as Vs,ra as $o,rb as zn,rc as Vi,rd as Xr,s as $s,sa as zo,sb as Bn,sc as $i,sd as jr,t as zs,ta as Bo,tb as Wn,tc as zi,td as Ur,u as Bs,ua as Wo,ub as Nn,uc as Bi,ud as Vr,v as Ws,va as No,vb as Gn,vc as Wi,vd as $r,w as Ns,wa as Go,wb as Qn,wc as Ni,wd as zr,x as Gs,xa as Qo,xb as Hn,xc as Gi,xd as Br,y as Qs,ya as Ho,yb as _,yc as Qi,yd as Wr,z as Hs,za as Jo,zb as Jn,zc as Hi,zd as Nr}from"./chunks/chunk-VGRG2F6H.js";import{$ as st,C as We,K as Ne,L as Ge,Q as Qe,R as He,S as C,T as Je,W as Ye,X as Ze,Z as et,_ as tt,a as Ke,aa as ot,b as Fe,ba as nt,c as De,ca as it,da as rt,ea as at,fa as dt,ga as lt,ha as ct,ia as pt,j as Xe,ja as ut,ka as mt,la as gt,ma as ft,na as ht,oa as vt,pa as yt,qa as _t,ra as It,sa as k,t as je,ta as At,u as Ue,ua as wt,v as Ve,va as St,w as $e,wa as Pt,x as ze,xa as bt,y as Be}from"./chunks/chunk-66B6ZOU7.js";import{Ab as ns,Bb as is,Bc as ws,Cb as rs,Cc as Ss,Db as as,Dc as Ps,Eb as ds,Ec as bs,Fb as ls,Fc as Cs,Gc as ks,Nc as Rs,Oc as Ms,a as Et,b as Lt,c as Tt,d as Ot,e as qt,f as Kt,h as Ft,hb as Yt,i as Dt,ib as Zt,ic as cs,j as Xt,jc as ps,k as jt,ka as Wt,kc as us,l as Ut,lc as ms,m as Vt,mc as gs,n as $t,na as Nt,o as zt,p as Bt,tc as fs,ua as Gt,uc as hs,va as Qt,vc as vs,wa as Ht,wb as es,wc as ys,xa as Jt,xb as ts,xc as _s,yb as ss,yc as Is,zb as os,zc as As}from"./chunks/chunk-VX6HN3JP.js";import{a as i}from"./chunks/chunk-V4WSBIXB.js";import ve from"node:process";var V=["off","error","info","debug"],U={off:0,error:1,info:2,debug:3};function S(o,e="info"){if(!o)return e;let t=o.trim().toLowerCase();return V.includes(t)?t:e}i(S,"resolveAcpLogLevel");var m=class{static{i(this,"AcpLogger")}level;sink;constructor(e={}){this.level=e.level??"info",this.sink=e.sink??(t=>{ve.stderr.write(`${t}
3
- `)})}handleEvent(e){let t=ye(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,s){if(U[this.level]<U[e])return;let n=new Date().toISOString(),r=s?Ie(s):"",a=r?` ${r}`:"";this.sink(`[ACP][${e.toUpperCase()}][${n}] ${t}${a}`)}};function ye(o){switch(o.type){case"server_attached":return{level:"info",message:"ACP server attached",fields:c(o)};case"connection_closed":return{level:"info",message:"ACP connection closed",fields:c(o)};case"initialize_completed":return{level:"info",message:"ACP initialize completed",fields:c(o)};case"session_created":return{level:"info",message:"ACP session created",fields:c(o)};case"session_mode_changed":return{level:"info",message:"ACP session mode changed",fields:c(o)};case"prompt_skipped":return{level:"info",message:"ACP prompt skipped because session was already aborted",fields:c(o)};case"prompt_started":return{level:"info",message:"ACP prompt started",fields:c(o)};case"prompt_preview":return{level:"debug",message:"ACP prompt preview",fields:c(o)};case"prompt_finished":return{level:"info",message:"ACP prompt finished",fields:c(o)};case"prompt_cancelled":return{level:"info",message:"ACP prompt cancelled during execution",fields:c(o)};case"prompt_failed":return{level:"error",message:"ACP prompt failed",fields:c(o)};case"cancel_requested":return{level:"info",message:"ACP cancel requested",fields:c(o)};case"tool_permission_evaluated":return{level:"debug",message:"ACP evaluating tool permission",fields:c(o)};case"tool_permission_resolved":return _e(o);case"permission_requested":return{level:"info",message:"ACP permission requested",fields:c(o)};case"notification_failed":return{level:"error",message:`Failed to send ${o.label}`,fields:{sessionId:o.sessionId,error:o.error}};case"repo_intelligence_trace":return{level:"debug",message:"ACP repo intelligence trace",fields:c(o)};default:return null}}i(ye,"mapEventToLogEntry");function c(o){let{type:e,...t}=o;return t}i(c,"toLogFields");function _e(o){let e={sessionId:o.sessionId,tool:o.tool,toolId:o.toolId};switch(o.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:o.remember??!1}}}}i(_e,"mapPermissionOutcomeToLogEntry");function Ie(o){return Object.entries(o).flatMap(([e,t])=>t===void 0?[]:`${e}=${Ae(t)}`).join(" ")}i(Ie,"formatFields");function Ae(o){return o===null?"null":typeof o=="string"?JSON.stringify(o.length>160?`${o.slice(0,157)}...`:o):String(o)}i(Ae,"formatFieldValue");var g=class{static{i(this,"AcpEventEmitter")}sinks;constructor(e={}){this.sinks=[...e.sinks??[]]}emit(e){for(let t of this.sinks)try{t.handleEvent(e)}catch{}}};import{randomUUID as $}from"node:crypto";import f from"node:path";import v from"node:process";import{Readable as we,Writable as Se}from"node:stream";import{AgentSideConnection as Pe,PROTOCOL_VERSION as z,RequestError as h,ndJsonStream as be}from"@agentclientprotocol/sdk";var G=["plan","accept-edits","auto-in-project"];function P(o){return R(o)}i(P,"acpIsFileModificationTool");var Ce={read:"read",write:"edit",edit:"edit",undo:"edit",bash:"execute",grep:"search",glob:"search",think:"think",fetch:"fetch"},ke=[{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 Re(o){let e={};for(let t of o)if("command"in t){let s={};for(let n of t.env??[])s[n.name]=n.value;e[t.name]={type:"stdio",command:t.command,args:t.args??[],env:Object.keys(s).length>0?s:void 0}}else if("type"in t&&t.type==="sse"){let s={};for(let n of t.headers??[])s[n.name]=n.value;e[t.name]={type:"sse",url:t.url,headers:Object.keys(s).length>0?s:void 0}}else if("type"in t&&t.type==="http"){let s={};for(let n of t.headers??[])s[n.name]=n.value;e[t.name]={type:"streamable-http",url:t.url,headers:Object.keys(s).length>0?s:void 0}}return e}i(Re,"convertAcpMcpServers");function Me(o,e="accept-edits"){return o&&G.includes(o)?o:e}i(Me,"normalizeAcpPermissionMode");function xe(o){if(o&&G.includes(o))return o;throw h.invalidParams({modeId:o},"Invalid session mode. Expected one of: plan, accept-edits, auto-in-project.")}i(xe,"parseSessionMode");function Ee(o){return{availableModes:ke,currentModeId:o}}i(Ee,"buildModeState");function B(o){return Ce[o]??"other"}i(B,"inferToolKind");function W(o,e){if(P(o)){let t=typeof e.path=="string"?e.path:void 0;return t?[{path:t}]:void 0}if(o==="bash"){let t=typeof e.command=="string"?e.command:"",s=D(t);if(s.length>0)return s.map(n=>({path:n}))}}i(W,"inferToolLocations");function Le(o){let e=[];for(let t of o){let s=t,n=typeof s.type=="string"?s.type:"";if(n==="text"&&typeof s.text=="string"){e.push(s.text);continue}if(n==="resource_link"&&typeof s.uri=="string"){e.push(`[Resource] ${s.uri}`);continue}if(n==="resource"&&s.resource&&typeof s.resource=="object"){let r=s.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{Ib as S,Va as me,Wa as ge,fb as fe,xb as he,yb as ve}from"./chunks/chunk-C5PKZX5Z.js";import{ba as ce,ca as pe,da as ue,f as T,i as O,l as q,m as K,n as F,p as D,q as X,r as j,s as U}from"./chunks/chunk-ISGHUKRY.js";import{D as le,b as H,c as J,d as Y,f as Z,h as ee,i as te,j as se,k as oe,u as ne,v as ie,w as re,x as A,y as ae,z as de}from"./chunks/chunk-TYZAH3YP.js";import"./chunks/chunk-YW4RQV7U.js";import"./chunks/chunk-EVIDQWMF.js";import{$ as Fo,$a as Dn,$b as Ki,$c as Or,$d as La,A as co,Aa as pn,Ab as ci,Ac as lr,Ad as ia,Ae as nd,B as po,Ba as un,Bb as pi,Bc as cr,Bd as ra,Be as id,C as uo,Ca as mn,Cb as ui,Cc as pr,Cd as aa,Ce as rd,D as mo,Da as gn,Db as mi,Dc as x,Dd as da,De as ad,E as go,Ea as fn,Eb as gi,Ec as ur,Ed as la,Ee as dd,F as fo,Fa as hn,Fb as fi,Fc as mr,Fd as ca,Fe as ld,G as ho,Ga as vn,Gb as hi,Gc as gr,Gd as pa,Ge as cd,H as vo,Ha as yn,Hb as vi,Hc as fr,Hd as ua,He as pd,I as yo,Ia as _n,Ib as yi,Ic as E,Id as ma,Ie as ud,J as _o,Ja as In,Jb as _i,Jc as hr,Jd as ga,Je as md,K as Io,Ka as wn,Kb as Ii,Kc as vr,Kd as fa,Ke as gd,L as wo,La as An,Lb as wi,Lc as yr,Ld as ha,Le as fd,M as Ao,Ma as Sn,Mb as Ai,Mc as _r,Md as va,Me as hd,N as So,Na as Pn,Nb as M,Nc as Ir,Nd as ya,Ne as vd,O as Po,Oa as bn,Ob as Si,Oc as wr,Od as _a,Oe as yd,P as bo,Pa as Cn,Pb as Pi,Pc as Ar,Pd as Ia,Pe as _d,Q as Co,Qa as Rn,Qb as bi,Qc as Sr,Qd as wa,Qe as Id,R as Ro,Ra as kn,Rb as Ci,Rc as Pr,Rd as Aa,Re as wd,S as ko,Sa as Mn,Sb as Ri,Sc as br,Sd as Sa,Se as Ad,T as Mo,Ta as xn,Tb as ki,Tc as Cr,Td as Pa,U as xo,Ua as En,Ub as Mi,Uc as Rr,Ud as ba,V as Eo,Va as Ln,Vb as xi,Vc as kr,Vd as Ca,W as Lo,Wa as Tn,Wb as Ei,Wc as Mr,Wd as Ra,X as To,Xa as On,Xb as Li,Xc as xr,Xd as ka,Y as Oo,Ya as qn,Yb as Ti,Yc as Er,Yd as Ma,Z as qo,Za as Kn,Zb as Oi,Zc as Lr,Zd as xa,_ as Ko,_a as Fn,_b as qi,_c as Tr,_d as Ea,a as Rt,aa as Do,ab as Xn,ac as Fi,ad as qr,ae as Ta,b as kt,ba as Xo,bb as jn,bc as Di,bd as Kr,be as Oa,c as Mt,ca as jo,cb as Un,cc as Xi,cd as Fr,ce as qa,d as xt,da as Uo,db as Vn,dc as ji,dd as Dr,de as Ka,e as Et,ea as Vo,eb as $n,ec as Ui,ed as Xr,ee as Fa,f as Vs,fa as $o,fb as zn,fc as Vi,fd as jr,fe as Da,g as $s,ga as zo,gb as Bn,gc as $i,gd as Ur,ge as Xa,h as zs,ha as Bo,hb as Wn,hc as zi,hd as Vr,he as ja,i as Bs,ia as Wo,ib as Nn,ic as Bi,id as I,ie as L,j as Ws,ja as No,jb as Gn,jc as Wi,jd as $r,je as Ua,k as Ns,ka as Go,kb as Qn,kc as Ni,kd as w,ke as Va,l as Gs,la as Qo,lb as Hn,lc as Gi,ld as zr,le as $a,m as Qs,ma as Ho,mb as Jn,mc as Qi,md as Br,me as za,n as Hs,na as Jo,nb as Yn,nc as Hi,nd as Wr,ne as Ba,o as Js,oa as Yo,ob as Zn,oc as Ji,od as Nr,oe as Wa,p as Ys,pa as Zo,pb as ei,pc as Yi,pd as Gr,pe as Na,q as Zs,qa as en,qb as ti,qc as Zi,qd as Qr,qe as Ga,r as eo,ra as tn,rb as si,rc as er,rd as Hr,re as Qa,s as to,sa as sn,sb as oi,sc as tr,sd as Jr,se as Ha,t as so,ta as on,tb as ni,tc as sr,td as Yr,te as Ja,u as oo,ua as nn,ub as ii,uc as or,ud as Zr,ue as Ya,v as no,va as rn,vb as ri,vc as nr,vd as ea,ve as Za,w as io,wa as an,wb as ai,wc as ir,wd as ta,we as ed,x as ro,xa as dn,xb as di,xc as rr,xd as sa,xe as td,y as ao,ya as ln,yb as _,yc as ar,yd as oa,ye as sd,z as lo,za as cn,zb as li,zc as dr,zd as na,ze as od}from"./chunks/chunk-67SWUEEN.js";import{$ as ot,C as Ne,K as Ge,L as Qe,Q as He,R as Je,S as R,T as Ye,W as Ze,X as et,Z as tt,_ as st,a as Fe,aa as nt,b as De,ba as it,c as Xe,ca as rt,da as at,ea as dt,fa as lt,ga as ct,ha as pt,ia as ut,j as je,ja as mt,ka as gt,la as ft,ma as ht,na as vt,oa as yt,pa as _t,qa as It,ra as wt,sa as k,t as Ue,ta as At,u as Ve,ua as St,v as $e,va as Pt,w as ze,wa as bt,x as Be,xa as Ct,y as We}from"./chunks/chunk-YACQ4OST.js";import{Ac as Ss,Bc as Ps,Cb as ts,Cc as bs,Db as ss,Dc as Cs,Eb as os,Fb as ns,Gb as is,Hb as rs,Ib as as,Jb as ds,Kb as ls,Kc as Rs,Lb as cs,Lc as ks,Mb as ps,Mc as Ms,Nb as us,Nc as xs,Ob as ms,Oc as Es,Pb as gs,Pc as Ls,Qb as fs,Qc as Ts,Rb as hs,Sb as vs,Sc as Os,Tb as ys,Tc as qs,Ub as _s,Uc as Ks,Vb as Is,Vc as Fs,Wb as ws,Wc as Ds,Xc as Xs,a as Lt,b as Tt,c as Ot,cd as js,d as qt,dd as Us,e as Kt,f as Ft,h as Dt,i as Xt,j as jt,jb as Zt,k as Ut,ka as Nt,kb as es,l as Vt,m as $t,n as zt,na as Gt,o as Bt,p as Wt,ua as Qt,va as Ht,wa as Jt,xa as Yt,zc as As}from"./chunks/chunk-JTHMWRXM.js";import{a as i}from"./chunks/chunk-V4WSBIXB.js";import ye from"node:process";var $=["off","error","info","debug"],V={off:0,error:1,info:2,debug:3};function P(o,e="info"){if(!o)return e;let t=o.trim().toLowerCase();return $.includes(t)?t:e}i(P,"resolveAcpLogLevel");var m=class{static{i(this,"AcpLogger")}level;sink;constructor(e={}){this.level=e.level??"info",this.sink=e.sink??(t=>{ye.stderr.write(`${t}
3
+ `)})}handleEvent(e){let t=_e(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,s){if(V[this.level]<V[e])return;let n=new Date().toISOString(),r=s?we(s):"",a=r?` ${r}`:"";this.sink(`[ACP][${e.toUpperCase()}][${n}] ${t}${a}`)}};function _e(o){switch(o.type){case"server_attached":return{level:"info",message:"ACP server attached",fields:c(o)};case"connection_closed":return{level:"info",message:"ACP connection closed",fields:c(o)};case"initialize_completed":return{level:"info",message:"ACP initialize completed",fields:c(o)};case"session_created":return{level:"info",message:"ACP session created",fields:c(o)};case"session_mode_changed":return{level:"info",message:"ACP session mode changed",fields:c(o)};case"prompt_skipped":return{level:"info",message:"ACP prompt skipped because session was already aborted",fields:c(o)};case"prompt_started":return{level:"info",message:"ACP prompt started",fields:c(o)};case"prompt_preview":return{level:"debug",message:"ACP prompt preview",fields:c(o)};case"prompt_finished":return{level:"info",message:"ACP prompt finished",fields:c(o)};case"prompt_cancelled":return{level:"info",message:"ACP prompt cancelled during execution",fields:c(o)};case"prompt_failed":return{level:"error",message:"ACP prompt failed",fields:c(o)};case"cancel_requested":return{level:"info",message:"ACP cancel requested",fields:c(o)};case"tool_permission_evaluated":return{level:"debug",message:"ACP evaluating tool permission",fields:c(o)};case"tool_permission_resolved":return Ie(o);case"permission_requested":return{level:"info",message:"ACP permission requested",fields:c(o)};case"notification_failed":return{level:"error",message:`Failed to send ${o.label}`,fields:{sessionId:o.sessionId,error:o.error}};case"repo_intelligence_trace":return{level:"debug",message:"ACP repo intelligence trace",fields:c(o)};default:return null}}i(_e,"mapEventToLogEntry");function c(o){let{type:e,...t}=o;return t}i(c,"toLogFields");function Ie(o){let e={sessionId:o.sessionId,tool:o.tool,toolId:o.toolId};switch(o.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:o.remember??!1}}}}i(Ie,"mapPermissionOutcomeToLogEntry");function we(o){return Object.entries(o).flatMap(([e,t])=>t===void 0?[]:`${e}=${Ae(t)}`).join(" ")}i(we,"formatFields");function Ae(o){return o===null?"null":typeof o=="string"?JSON.stringify(o.length>160?`${o.slice(0,157)}...`:o):String(o)}i(Ae,"formatFieldValue");var g=class{static{i(this,"AcpEventEmitter")}sinks;constructor(e={}){this.sinks=[...e.sinks??[]]}emit(e){for(let t of this.sinks)try{t.handleEvent(e)}catch{}}};import{randomUUID as z}from"node:crypto";import f from"node:path";import v from"node:process";import{Readable as Se,Writable as Pe}from"node:stream";import{AgentSideConnection as be,PROTOCOL_VERSION as B,RequestError as h,ndJsonStream as Ce}from"@agentclientprotocol/sdk";var Q=["plan","accept-edits","auto-in-project"];function b(o){return M(o)}i(b,"acpIsFileModificationTool");var Re={read:"read",write:"edit",edit:"edit",undo:"edit",bash:"execute",grep:"search",glob:"search",think:"think",fetch:"fetch"},ke=[{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 Me(o){let e={};for(let t of o)if("command"in t){let s={};for(let n of t.env??[])s[n.name]=n.value;e[t.name]={type:"stdio",command:t.command,args:t.args??[],env:Object.keys(s).length>0?s:void 0}}else if("type"in t&&t.type==="sse"){let s={};for(let n of t.headers??[])s[n.name]=n.value;e[t.name]={type:"sse",url:t.url,headers:Object.keys(s).length>0?s:void 0}}else if("type"in t&&t.type==="http"){let s={};for(let n of t.headers??[])s[n.name]=n.value;e[t.name]={type:"http",url:t.url,headers:Object.keys(s).length>0?s:void 0}}return e}i(Me,"convertAcpMcpServers");function xe(o,e="accept-edits"){return o&&Q.includes(o)?o:e}i(xe,"normalizeAcpPermissionMode");function Ee(o){if(o&&Q.includes(o))return o;throw h.invalidParams({modeId:o},"Invalid session mode. Expected one of: plan, accept-edits, auto-in-project.")}i(Ee,"parseSessionMode");function Le(o){return{availableModes:ke,currentModeId:o}}i(Le,"buildModeState");function W(o){return Re[o]??"other"}i(W,"inferToolKind");function N(o,e){if(b(o)){let t=typeof e.path=="string"?e.path:void 0;return t?[{path:t}]:void 0}if(o==="bash"){let t=typeof e.command=="string"?e.command:"",s=X(t);if(s.length>0)return s.map(n=>({path:n}))}}i(N,"inferToolLocations");function Te(o){let e=[];for(let t of o){let s=t,n=typeof s.type=="string"?s.type:"";if(n==="text"&&typeof s.text=="string"){e.push(s.text);continue}if(n==="resource_link"&&typeof s.uri=="string"){e.push(`[Resource] ${s.uri}`);continue}if(n==="resource"&&s.resource&&typeof s.resource=="object"){let r=s.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()}i(Le,"extractPromptText");function Te(o){return/^\[(?:Tool Error|Cancelled|Blocked|Error)\]/.test(o)}i(Te,"isToolResultFailure");function Oe(o){return o instanceof Error?o.name==="AbortError"||o.message.includes("aborted")||o.message.includes("ABORTED"):!1}i(Oe,"isAbortLikeError");function N(o){let e=o?.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}:{}}}i(N,"toAcpUsage");var y=class{static{i(this,"KodaXAcpServer")}provider;model;thinking;reasoningMode;defaultPermissionMode;defaultCwd;hasFixedCwd;agentName;agentVersion;storage;events;bashPrefixExtractor;connection=null;sessions=new Map;promptQueue=Promise.resolve();extensionRuntime;extensionRuntimeReady;disposePromise;constructor(e={}){let t=A();this.provider=e.provider??t.provider??C,this.model=e.model,this.thinking=e.thinking??t.thinking??!1,this.reasoningMode=e.reasoningMode??t.reasoningMode??"auto",this.defaultPermissionMode=Me(e.permissionMode??t.permissionMode,"accept-edits"),this.defaultCwd=f.resolve(e.cwd??v.cwd()),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 w,this.events=new g({sinks:[...e.eventSinks??[],new m({level:S(e.logLevel??v.env.KODAX_ACP_LOG,"info")})]}),this.bashPrefixExtractor=E({getProvider:i(()=>k(this.provider),"getProvider"),getModel:i(()=>this.model??"","getModel")});let s=t.mcpServers;if(s&&Object.values(s).some(r=>(r.connect??"lazy")!=="disabled")){let r=_({config:t});this.extensionRuntimeReady=I(r,s).then(()=>{r.activate(),this.extensionRuntime=r}).catch(a=>{let d=a instanceof Error?a.message:String(a);console.warn(`[kodax:acp] MCP initialization failed: ${d}`)})}}attach(e,t){let s=be(t,e),n=new Pe(()=>this,s);return this.connection=n,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:this.reasoningMode,thinking:this.thinking,fixedCwd:this.hasFixedCwd}),n.signal.addEventListener("abort",()=>{let r=this.sessions.size;this.events.emit({type:"connection_closed",activeSessions:r}),this.dispose()}),n}async waitForClose(){await this.connection?.closed}async dispose(){return this.disposePromise?this.disposePromise:(this.disposePromise=(async()=>{for(let s of this.sessions.values())s.activeController?.abort();let e=new Set;for(let s of this.sessions.values())s.extensionRuntime&&(e.add(s.extensionRuntime),s.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(s=>s.dispose())),await M()})(),this.disposePromise)}async initialize(e){return this.events.emit({type:"initialize_completed",protocolVersion:z}),{protocolVersion:z,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(!f.isAbsolute(t))throw h.invalidParams({cwd:t},"Session cwd must be an absolute path.");let s=$(),n=e.mcpServers??[],r={sessionId:s,cwd:f.resolve(t),permissionMode:this.defaultPermissionMode,mcpServers:n,alwaysAllowTools:[],activeController:null};if(n.length>0){let a=Re(n),d=_({});await I(d,a).catch(p=>{let l=p instanceof Error?p.message:String(p);console.warn(`[kodax:acp] Per-session MCP init failed for ${s}: ${l}`)}),d.activate(),r.extensionRuntime=d}return this.sessions.set(s,r),this.events.emit({type:"session_created",sessionId:s,cwd:r.cwd,permissionMode:r.permissionMode,mcpServers:r.mcpServers.length}),{sessionId:s,modes:Ee(r.permissionMode)}}async authenticate(){}async setSessionMode(e){let t=this.requireSession(e.sessionId),s=t.permissionMode,n=xe(e.modeId);return t.permissionMode=n,this.events.emit({type:"session_mode_changed",sessionId:t.sessionId,from:s,to:n}),await this.sendSessionUpdate({sessionId:t.sessionId,update:{sessionUpdate:"current_mode_update",currentModeId:n}}),{}}async prompt(e){let t=this.requireSession(e.sessionId),s=Le(e.prompt);if(!s)throw h.invalidParams({prompt:e.prompt},"Prompt must include at least one text or resource block with content.");let n=new AbortController;t.activeController=n;let r=Date.now(),a=i(async()=>{if(n.signal.aborted)return this.events.emit({type:"prompt_skipped",sessionId:t.sessionId}),{stopReason:"cancelled",userMessageId:e.messageId??void 0};let p=Date.now();this.events.emit({type:"prompt_started",sessionId:t.sessionId,messageId:e.messageId??null,chars:s.length,cwd:t.cwd,queueDelayMs:p-r}),this.events.emit({type:"prompt_preview",sessionId:t.sessionId,prompt:s});try{this.extensionRuntimeReady&&await this.extensionRuntimeReady;let l=await x(this.buildKodaXOptions(t,n.signal),s);t.contextTokenSnapshot=l.contextTokenSnapshot;let u=!!l.interrupted,b=n.signal.aborted||u?"cancelled":"end_turn";return this.events.emit({type:"prompt_finished",sessionId:t.sessionId,stopReason:b,interrupted:u,durationMs:Date.now()-p}),{stopReason:b,userMessageId:e.messageId??void 0,...N(l.contextTokenSnapshot)?{usage:N(l.contextTokenSnapshot)}:{}}}catch(l){if(n.signal.aborted||Oe(l))return this.events.emit({type:"prompt_cancelled",sessionId:t.sessionId,durationMs:Date.now()-p}),{stopReason:"cancelled",userMessageId:e.messageId??void 0};let u=l instanceof Error?l.message:String(l);return this.events.emit({type:"prompt_failed",sessionId:t.sessionId,durationMs:Date.now()-p,error:u}),await this.sendTextChunk(t.sessionId,`
5
+ `).trim()}i(Te,"extractPromptText");function Oe(o){return/^\[(?:Tool Error|Cancelled|Blocked|Error)\]/.test(o)}i(Oe,"isToolResultFailure");function qe(o){return o instanceof Error?o.name==="AbortError"||o.message.includes("aborted")||o.message.includes("ABORTED"):!1}i(qe,"isAbortLikeError");function G(o){let e=o?.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}:{}}}i(G,"toAcpUsage");var y=class{static{i(this,"KodaXAcpServer")}provider;model;thinking;reasoningMode;defaultPermissionMode;defaultCwd;hasFixedCwd;agentName;agentVersion;storage;events;bashPrefixExtractor;connection=null;sessions=new Map;promptQueue=Promise.resolve();extensionRuntime;extensionRuntimeReady;disposePromise;constructor(e={}){let t=A();this.provider=e.provider??t.provider??R,this.model=e.model,this.thinking=e.thinking??t.thinking??!1,this.reasoningMode=e.reasoningMode??t.reasoningMode??"auto",this.defaultPermissionMode=xe(e.permissionMode??t.permissionMode,"accept-edits"),this.defaultCwd=f.resolve(e.cwd??v.cwd()),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 S,this.events=new g({sinks:[...e.eventSinks??[],new m({level:P(e.logLevel??v.env.KODAX_ACP_LOG,"info")})]}),this.bashPrefixExtractor=L({getProvider:i(()=>k(this.provider),"getProvider"),getModel:i(()=>this.model??"","getModel")});let s=t.mcpServers;if(s&&Object.values(s).some(r=>(r.connect??"lazy")!=="disabled")){let r=_({config:t});this.extensionRuntimeReady=I(r,s,{reverse:w({cwd:this.defaultCwd})}).then(()=>{r.activate(),this.extensionRuntime=r}).catch(a=>{let d=a instanceof Error?a.message:String(a);console.warn(`[kodax:acp] MCP initialization failed: ${d}`)})}}attach(e,t){let s=Ce(t,e),n=new be(()=>this,s);return this.connection=n,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:this.reasoningMode,thinking:this.thinking,fixedCwd:this.hasFixedCwd}),n.signal.addEventListener("abort",()=>{let r=this.sessions.size;this.events.emit({type:"connection_closed",activeSessions:r}),this.dispose()}),n}async waitForClose(){await this.connection?.closed}async dispose(){return this.disposePromise?this.disposePromise:(this.disposePromise=(async()=>{for(let s of this.sessions.values())s.activeController?.abort();let e=new Set;for(let s of this.sessions.values())s.extensionRuntime&&(e.add(s.extensionRuntime),s.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(s=>s.dispose())),await x()})(),this.disposePromise)}async initialize(e){return this.events.emit({type:"initialize_completed",protocolVersion:B}),{protocolVersion:B,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(!f.isAbsolute(t))throw h.invalidParams({cwd:t},"Session cwd must be an absolute path.");let s=z(),n=e.mcpServers??[],r={sessionId:s,cwd:f.resolve(t),permissionMode:this.defaultPermissionMode,mcpServers:n,alwaysAllowTools:[],activeController:null};if(n.length>0){let a=Me(n),d=_({});await I(d,a,{reverse:w({cwd:r.cwd})}).catch(p=>{let l=p instanceof Error?p.message:String(p);console.warn(`[kodax:acp] Per-session MCP init failed for ${s}: ${l}`)}),d.activate(),r.extensionRuntime=d}return this.sessions.set(s,r),this.events.emit({type:"session_created",sessionId:s,cwd:r.cwd,permissionMode:r.permissionMode,mcpServers:r.mcpServers.length}),{sessionId:s,modes:Le(r.permissionMode)}}async authenticate(){}async setSessionMode(e){let t=this.requireSession(e.sessionId),s=t.permissionMode,n=Ee(e.modeId);return t.permissionMode=n,this.events.emit({type:"session_mode_changed",sessionId:t.sessionId,from:s,to:n}),await this.sendSessionUpdate({sessionId:t.sessionId,update:{sessionUpdate:"current_mode_update",currentModeId:n}}),{}}async prompt(e){let t=this.requireSession(e.sessionId),s=Te(e.prompt);if(!s)throw h.invalidParams({prompt:e.prompt},"Prompt must include at least one text or resource block with content.");let n=new AbortController;t.activeController=n;let r=Date.now(),a=i(async()=>{if(n.signal.aborted)return this.events.emit({type:"prompt_skipped",sessionId:t.sessionId}),{stopReason:"cancelled",userMessageId:e.messageId??void 0};let p=Date.now();this.events.emit({type:"prompt_started",sessionId:t.sessionId,messageId:e.messageId??null,chars:s.length,cwd:t.cwd,queueDelayMs:p-r}),this.events.emit({type:"prompt_preview",sessionId:t.sessionId,prompt:s});try{this.extensionRuntimeReady&&await this.extensionRuntimeReady;let l=await E(this.buildKodaXOptions(t,n.signal),s);t.contextTokenSnapshot=l.contextTokenSnapshot;let u=!!l.interrupted,C=n.signal.aborted||u?"cancelled":"end_turn";return this.events.emit({type:"prompt_finished",sessionId:t.sessionId,stopReason:C,interrupted:u,durationMs:Date.now()-p}),{stopReason:C,userMessageId:e.messageId??void 0,...G(l.contextTokenSnapshot)?{usage:G(l.contextTokenSnapshot)}:{}}}catch(l){if(n.signal.aborted||qe(l))return this.events.emit({type:"prompt_cancelled",sessionId:t.sessionId,durationMs:Date.now()-p}),{stopReason:"cancelled",userMessageId:e.messageId??void 0};let u=l instanceof Error?l.message:String(l);return this.events.emit({type:"prompt_failed",sessionId:t.sessionId,durationMs:Date.now()-p,error:u}),await this.sendTextChunk(t.sessionId,`
6
6
  [ACP Server Error] ${u}
7
- `),{stopReason:n.signal.aborted?"cancelled":"end_turn",userMessageId:e.messageId??void 0}}finally{t.activeController=null}},"task"),d=this.promptQueue.then(a,a);return this.promptQueue=d.then(()=>{},()=>{}),d}async cancel(e){let t=this.sessions.get(e.sessionId);this.events.emit({type:"cancel_requested",sessionId:e.sessionId,active:!!t?.activeController}),t?.activeController?.abort()}requireSession(e){let t=this.sessions.get(e);if(!t)throw h.resourceNotFound(e);return t}buildKodaXOptions(e,t){return{provider:this.provider,model:this.model,thinking:this.thinking,reasoningMode:this.reasoningMode,abortSignal:t,extensionRuntime:e.extensionRuntime??this.extensionRuntime,session:{id:e.sessionId,storage:this.storage},context:{gitRoot:e.cwd,executionCwd:e.cwd,contextTokenSnapshot:e.contextTokenSnapshot},events:{onTextDelta:i(s=>{this.dispatchNotification("assistant text chunk",e.sessionId,this.sendTextChunk(e.sessionId,s))},"onTextDelta"),onThinkingDelta:i(s=>{this.dispatchNotification("thinking chunk",e.sessionId,this.sendSessionUpdate({sessionId:e.sessionId,update:{sessionUpdate:"agent_thought_chunk",content:{type:"text",text:s}}}))},"onThinkingDelta"),onToolUseStart:i(s=>{this.dispatchNotification("tool call start",e.sessionId,this.sendSessionUpdate({sessionId:e.sessionId,update:{sessionUpdate:"tool_call",toolCallId:s.id,title:s.name,kind:B(s.name),rawInput:s.input,locations:W(s.name,s.input??{}),status:"pending"}}))},"onToolUseStart"),onToolResult:i(s=>{this.dispatchNotification("tool call update",e.sessionId,this.sendSessionUpdate({sessionId:e.sessionId,update:{sessionUpdate:"tool_call_update",toolCallId:s.id,title:s.name,status:Te(s.content)?"failed":"completed",rawOutput:s.content}}))},"onToolResult"),onRepoIntelligenceTrace:i(s=>{this.events.emit({type:"repo_intelligence_trace",sessionId:e.sessionId,stage:s.stage,summary:s.summary,mode:s.capability?.mode,engine:s.capability?.engine,bridge:s.capability?.bridge,status:s.capability?.status,daemonLatencyMs:s.trace?.daemonLatencyMs,cliLatencyMs:s.trace?.cliLatencyMs,cacheHit:s.trace?.cacheHit,capsuleEstimatedTokens:s.trace?.capsuleEstimatedTokens})},"onRepoIntelligenceTrace"),onError:i(s=>{this.dispatchNotification("error text chunk",e.sessionId,this.sendTextChunk(e.sessionId,`
7
+ `),{stopReason:n.signal.aborted?"cancelled":"end_turn",userMessageId:e.messageId??void 0}}finally{t.activeController=null}},"task"),d=this.promptQueue.then(a,a);return this.promptQueue=d.then(()=>{},()=>{}),d}async cancel(e){let t=this.sessions.get(e.sessionId);this.events.emit({type:"cancel_requested",sessionId:e.sessionId,active:!!t?.activeController}),t?.activeController?.abort()}requireSession(e){let t=this.sessions.get(e);if(!t)throw h.resourceNotFound(e);return t}buildKodaXOptions(e,t){return{provider:this.provider,model:this.model,thinking:this.thinking,reasoningMode:this.reasoningMode,abortSignal:t,extensionRuntime:e.extensionRuntime??this.extensionRuntime,session:{id:e.sessionId,storage:this.storage},context:{gitRoot:e.cwd,executionCwd:e.cwd,contextTokenSnapshot:e.contextTokenSnapshot},events:{onTextDelta:i(s=>{this.dispatchNotification("assistant text chunk",e.sessionId,this.sendTextChunk(e.sessionId,s))},"onTextDelta"),onThinkingDelta:i(s=>{this.dispatchNotification("thinking chunk",e.sessionId,this.sendSessionUpdate({sessionId:e.sessionId,update:{sessionUpdate:"agent_thought_chunk",content:{type:"text",text:s}}}))},"onThinkingDelta"),onToolUseStart:i(s=>{this.dispatchNotification("tool call start",e.sessionId,this.sendSessionUpdate({sessionId:e.sessionId,update:{sessionUpdate:"tool_call",toolCallId:s.id,title:s.name,kind:W(s.name),rawInput:s.input,locations:N(s.name,s.input??{}),status:"pending"}}))},"onToolUseStart"),onToolResult:i(s=>{this.dispatchNotification("tool call update",e.sessionId,this.sendSessionUpdate({sessionId:e.sessionId,update:{sessionUpdate:"tool_call_update",toolCallId:s.id,title:s.name,status:Oe(s.content)?"failed":"completed",rawOutput:s.content}}))},"onToolResult"),onRepoIntelligenceTrace:i(s=>{this.events.emit({type:"repo_intelligence_trace",sessionId:e.sessionId,stage:s.stage,summary:s.summary,mode:s.capability?.mode,engine:s.capability?.engine,bridge:s.capability?.bridge,status:s.capability?.status,daemonLatencyMs:s.trace?.daemonLatencyMs,cliLatencyMs:s.trace?.cliLatencyMs,cacheHit:s.trace?.cacheHit,capsuleEstimatedTokens:s.trace?.capsuleEstimatedTokens})},"onRepoIntelligenceTrace"),onError:i(s=>{this.dispatchNotification("error text chunk",e.sessionId,this.sendTextChunk(e.sessionId,`
8
8
  [Error] ${s.message}
9
- `))},"onError"),beforeToolExecute:i(async(s,n,r)=>{let a=await this.evaluateToolPermission(e,s,n,r?.toolId);return a.allowed?!0:a.override??!1},"beforeToolExecute")}}}async evaluateToolPermission(e,t,s,n){if(this.events.emit({type:"tool_permission_evaluated",sessionId:e.sessionId,tool:t,toolId:n??null,permissionMode:e.permissionMode}),t==="bash"){let l=typeof s.command=="string"?s.command:"";if(T(l))return this.events.emit({type:"tool_permission_resolved",sessionId:e.sessionId,tool:t,toolId:n??null,outcome:"auto_allowed_read_only_bash"}),{allowed:!0};if(await O(t,s,e.alwaysAllowTools,this.bashPrefixExtractor))return this.events.emit({type:"tool_permission_resolved",sessionId:e.sessionId,tool:t,toolId:n??null,outcome:"auto_allowed_remembered"}),{allowed:!0}}if(e.permissionMode==="plan"){let l=j(t,s,e.cwd);return l?(this.events.emit({type:"tool_permission_resolved",sessionId:e.sessionId,tool:t,toolId:n??null,outcome:"blocked_plan_mode"}),{allowed:!1,override:`${l} 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:n??null,outcome:"auto_allowed_plan_mode"}),{allowed:!0})}let r=P(t)&&typeof s.path=="string"&&K(f.resolve(e.cwd,s.path),e.cwd),a=L(e.permissionMode).has(t),d=e.permissionMode==="auto-in-project"&&(P(t)&&typeof s.path=="string"&&!F(s.path,e.cwd)||t==="bash"&&typeof s.command=="string"&&X(s.command,e.cwd).dangerous);return!r&&!a&&!d?(this.events.emit({type:"tool_permission_resolved",sessionId:e.sessionId,tool:t,toolId:n??null,outcome:"auto_allowed_policy"}),{allowed:!0}):await this.requestPermissionFromClient(e,t,s,n)}async requestPermissionFromClient(e,t,s,n){if(!this.connection)return this.events.emit({type:"tool_permission_resolved",sessionId:e.sessionId,tool:t,toolId:n??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:n??$(),title:t,kind:B(t),rawInput:s,locations:W(t,s),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{return this.events.emit({type:"tool_permission_resolved",sessionId:e.sessionId,tool:t,toolId:a.toolCallId,outcome:"request_failed_incomplete"}),{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,s,!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,s){s.catch(n=>{if(!this.connection||this.connection.signal.aborted)return;let r=n instanceof Error?n.message:String(n);this.events.emit({type:"notification_failed",sessionId:t,label:e,error:r})})}};async function qe(o={}){let e=new y(o),t=we.toWeb(v.stdin),s=Se.toWeb(v.stdout);e.attach(t,s);try{await e.waitForClose()}finally{await e.dispose()}}i(qe,"runAcpServer");export{V as ACP_LOG_LEVELS,ia as AUTO_MODE_DENIAL_CONSECUTIVE_THRESHOLD,ra as AUTO_MODE_DENIAL_CUMULATIVE_THRESHOLD,g as AcpEventEmitter,m as AcpLogger,Ca as BASH_POLICY_SPEC,br as BLOCKER_REQUIRED_CONSECUTIVE_TURNS,pa as BREAKER_ERROR_THRESHOLD,ua as BREAKER_WINDOW_MS,le as BUILTIN_COMMANDS,Es as CANCELLED_TOOL_RESULT_MESSAGE,xs as CANCELLED_TOOL_RESULT_PREFIX,Qr as CODING_AGENT_MARKER,cr as CODING_INVARIANTS,er as CODING_SUMMARY_PROMPT,tr as CODING_UPDATE_SUMMARY_PROMPT,yn as CapabilityDeniedError,ur as Client,_n as ConstructionManifestError,sr as DEFAULT_CODING_AGENT_NAME,Dr as DEFAULT_DANGEROUS_PATTERNS,hn as DEFAULT_HANDLER_TIMEOUT_MS,Ei as DEFAULT_RESILIENCE_CONFIG,Fr as DEFAULT_SAFE_PATTERNS,Mn as DEFAULT_SELF_MODIFY_BUDGET,wa as DEFAULT_SPECULATIVE_WINDOW_MS,Ts as DEFAULT_TOOL_OUTPUT_MAX_BYTES,Ls as DEFAULT_TOOL_OUTPUT_MAX_LINES,Bt as DefaultSummaryCompaction,Wr as EMIT_VERDICT_TOOL_NAME,Mt as ErrorCategory,w as FileSessionStorage,Qo as GENERATOR_AGENT_NAME,Dt as KODAX_API_MIN_INTERVAL,J as KODAX_CONFIG_FILE,C as KODAX_DEFAULT_PROVIDER,Lt as KODAX_DEFAULT_TIMEOUT,Q as KODAX_DIR,Tt as KODAX_HARD_TIMEOUT,Kt as KODAX_MAX_INCOMPLETE_RETRIES,Ot as KODAX_MAX_RETRIES,Et as KODAX_MAX_TOKENS,He as KODAX_PROVIDERS,Qe as KODAX_PROVIDER_SNAPSHOTS,Xe as KODAX_REASONING_MODE_SEQUENCE,qt as KODAX_RETRY_BASE_DELAY,H as KODAX_SESSIONS_DIR,Ft as KODAX_STAGGER_DELAY,Zn as KODAX_TOOLS,te as KODAX_VERSION,y as KodaXAcpServer,Ne as KodaXAnthropicCompatProvider,We as KodaXBaseProvider,ur as KodaXClient,Ke as KodaXError,Hn as KodaXExtensionRuntime,Ge as KodaXOpenAICompatProvider,Fe as KodaXProviderError,De as KodaXRateLimitError,kt as KodaXSessionError,Rt as KodaXTerminalError,Ct as KodaXToolError,cs as LINEAGE_ENTRY_TYPES,Ji as LSP_SERVERS,us as LineageCompaction,ps as LineageExtension,Yi as LspService,$s as MANUAL_TOPIC_IDS,as as McpCapabilityProvider,ds as McpManager,rs as McpServerRuntime,Go as PLANNER_AGENT_NAME,Xt as PROMISE_PATTERN,vi as PROMPT_SECTION_REGISTRY,Gr as PROTOCOL_EMITTER_TOOLS,Ki as ProviderRecoveryCoordinator,Os as READ_DEFAULT_LIMIT,Ks as READ_MAX_LINE_CHARS,qs as READ_PREFLIGHT_SIZE_BYTES,fo as REPOINTEL_DEFAULT_ENDPOINT,Nt as Runner,No as SCOUT_AGENT_NAME,Si as SELF_KNOWLEDGE_ROUTING_RULE,hi as SYSTEM_PROMPT,Oi as StableBoundaryTracker,Yo as TASK_ENGINE_ROLE_AGENTS,Ar as TOOL_RESULT_TRUNCATION_GUARDRAIL_NAME,Ra as TRACING_ENV,Ho as WORKER_AGENT_NAME,Kn as _resetRuntimeForTesting,Xn as activate,io as analyzeChangedScope,kn as appendAuditEntry,Is as appendSessionLineageLabel,dn as applyAccountingDelta,vr as applyFanoutBranchTransition,As as applySessionCompaction,To as applyToolResultGuardrail,ks as archiveOldIslands,yr as assignFanoutBranchWorker,ca as autoModeDenialShouldFallback,_a as bashSignalCollector,Ma as bootstrapTracing,rr as boundedRevise,fa as breakerShouldFallback,ar as budgetCeiling,Bi as buildAmaControllerDecision,pn as buildBlockedGoal,Pi as buildCapabilityContextSections,Hr as buildClassifierPrompt,un as buildCompleteGoal,an as buildCreatedGoal,$i as buildFallbackRoutingDecision,gr as buildFanoutSchedulerPlan,Mr as buildGoalRuntimeBinding,Pn as buildLlmReviewPrompt,ln as buildPausedGoal,Ri as buildPromptMessageContent,Wi as buildPromptOverlay,Ai as buildPromptSnapshot,Fi as buildProviderCapabilitySnapshot,zi as buildProviderPolicyHintsForDecision,Di as buildProviderPolicyPromptNotes,Ve as buildReasoningOverrideKey,no as buildRepoIntelligenceContext,Io as buildRepoIntelligenceIndex,to as buildRepoOverview,cn as buildResumedGoal,wi as buildSelfKnowledgeRoutingRule,bs as buildSessionTree,Ci as buildSystemPrompt,bi as buildSystemPromptSnapshot,ya as checkAbsoluteDeny,ki as checkIncompleteToolCalls,Gi as checkPromiseSignal,Yr as classify,jr as classifyBashCommand,xt as classifyError,Ti as classifyResilienceError,Zt as cleanupIncompleteToolCalls,Be as clearReasoningOverride,It as clearRuntimeModelProviders,Aa as collectAllSignals,Vr as computeInputSignature,Zr as computeRulesFingerprint,qn as configureRuntime,Fo as convertCapabilityReadResult,Ko as convertProviderSearchResults,hr as countActiveFanoutBranches,Cs as countActiveLineageMessages,Ut as countTokens,Vt as createAgent,aa as createAutoModeDenialTracker,ba as createAutoModeToolGuardrail,Xr as createBashClassifierConfig,E as createBashPrefixExtractor,ai as createBuiltinToolDefinition,ma as createCircuitBreaker,In as createCtxProxy,rt as createCustomProvider,or as createDefaultCodingAgent,Ur as createDenialTracker,_ as createExtensionRuntime,mr as createFanoutSchedulerInput,$t as createHandoff,zt as createInMemorySession,ue as createInteractiveContext,Tr as createKodaXTaskRunner,ts as createMcpCapabilityId,ls as createMcpManager,is as createMcpTransport,yi as createPromptSection,Ni as createReasoningPlan,nr as createSessionControl,fs as createSessionLineage,wr as createToolResultTruncationGuardrail,es as defaultMcpCacheDir,vn as defaultPolicy,On as disableSelfModify,Gn as discoverMarkdownAgents,tn as drainPendingSwaps,Nr as emitVerdict,jt as estimateTokens,Xi as evaluateProviderPolicy,gn as exec,pe as executeCommand,fi as executeTool,Rs as extractArtifactLedger,ka as extractCommandPrefix,xi as extractComparableUserMessageText,qo as extractHtmlTitle,Mi as extractPromptComparableText,gs as extractTitleFromMessages,Ia as fileSignalCollector,Xo as finalizeRetrievalResult,Bn as findByVersion,ws as findPreviousUserEntryId,Ps as forkSessionLineage,Wo as formatAgentsForPrompt,qr as formatParallelDispatchResult,Fs as formatSize,ms as generateSessionId,Yn as getActiveExtensionRuntime,Qt as getAgentConfigHome,Ht as getAgentConfigPath,li as getAllRegisteredTools,Jt as getAppDataDir,wt as getAvailableProviderNames,ri as getBuiltinRegisteredToolDefinition,ii as getBuiltinToolDefinition,gt as getCustomModelCapabilities,dt as getCustomProvider,pt as getCustomProviderList,mt as getCustomProviderModelDescriptors,ut as getCustomProviderModels,ct as getCustomProviderNames,Zi as getDefaultLspService,Br as getDenialContext,fr as getFanoutBranch,ae as getGitRoot,bo as getImpactEstimate,zo as getKodaxGlobalDir,ns as getMcpCachePaths,ot as getModelCapabilities,wo as getModuleContext,Po as getProcessContext,Je as getProvider,Ze as getProviderConfiguredCapabilityProfile,Ye as getProviderConfiguredReasoningCapability,oe as getProviderList,se as getProviderModel,st as getProviderModelDescriptors,et as getProviderModels,oi as getRegisteredToolDefinition,Ao as getRepoIntelligenceIndex,so as getRepoOverview,Co as getRepoRoutingSignals,ui as getRequiredToolParams,vt as getRuntimeModelProvider,_t as getRuntimeModelProviderNames,hs as getSessionLineagePath,vs as getSessionMessagesFromLineage,So as getSymbolContext,ti as getTool,si as getToolDefinition,ni as getToolRegistrations,Lo as getToolResultPolicy,ee as getVersion,on as goalTokenDelta,en as hasPendingSwap,Y as hydrateProcessEnvFromShell,Vi as inferTaskType,Gs as inspectEditFailure,yo as inspectRepoIntelligenceRuntime,lt as isCustomProviderName,zr as isDeniedRecently,At as isKnownProvider,Or as isParallelDispatchDirective,ne as isProviderConfigured,tt as isProviderName,yt as isRuntimeModelProviderName,R as isToolFileMutation,pi as isToolMutation,ci as isToolPlanModeAllowed,mn as isValidTokenBudget,Qi as languageIdForPath,Wn as listAll,bt as listAllModelCapabilities,Vn as listArtifacts,nt as listBuiltinModelCapabilities,di as listBuiltinToolDefinitions,zn as listConstructed,ft as listCustomProviderModelCapabilities,gi as listToolDefinitions,mi as listTools,Bo as loadAgentsFiles,Nn as loadAgentsFromMarkdown,oa as loadAutoRules,ie as loadConfig,An as loadHandler,$e as loadReasoningOverride,sn as makeDisabledGoalToolsContext,Ir as markFanoutBranchCancelled,_r as markFanoutBranchCompleted,Ms as mergeArtifactLedger,_i as orderPromptSections,sa as parseAutoRules,Jr as parseClassifierOutput,ce as parseCommand,Ns as parseEditToolError,bn as parseLlmReviewVerdict,ss as parseMcpCapabilityId,ha as parseModelSpec,Us as persistToolOutput,A as prepareRuntimeConfig,ko as prewarmRepoIntelligenceCaches,he as processSpecialSyntax,de as rateLimitedCall,$n as readArtifact,Rn as readAuditEntries,xn as readBudget,Tn as readDisableState,Sa as readSpeculativeWindowFromEnv,ea as readTrustState,je as reasoningCapabilityToOverride,Ui as reasoningModeToDepth,Ue as reasoningOverrideToCapability,qi as reconstructMessagesWithToolGuard,la as recordAutoModeAllow,da as recordAutoModeBlock,Sr as recordBlockerAttempt,ga as recordBreakerError,$r as recordDenial,pr as registerCodingInvariants,Z as registerConfiguredCustomProviders,I as registerConfiguredMcpCapabilityProvider,at as registerCustomProviders,ht as registerModelProvider,Er as registerOfficialSandboxExtension,Wt as registerPresetDispatcher,ei as registerTool,jn as rehydrateActiveArtifacts,En as remainingSelfModifyBudget,ro as renderChangedScope,go as renderImpactEstimate,po as renderModuleContext,mo as renderProcessContext,Ii as renderPromptSections,oo as renderRepoOverview,Do as renderRetrievalResult,uo as renderSymbolContext,Hi as reportLspDiagnostics,Pr as resetBlockerCounter,Ln as resetBudget,S as resolveAcpLogLevel,va as resolveClassifierModel,Zo as resolveConstructedAgent,zs as resolveKodaXManual,Pt as resolveModelCapabilities,k as resolveProvider,St as resolveProviderModelDescriptors,ji as resolveReasoningMode,vo as resolveRepoIntelligenceMode,ho as resolveRepoIntelligenceRuntimeConfig,Li as resolveResilienceConfig,ys as resolveSessionLineageTarget,dr as resolveToolCapability,Un as revoke,Ss as rewindSessionLineage,Qn as rollbackSelfModify,qe as runAcpServer,wn as runAstRules,ge as runInkInteractiveMode,fe as runInteractiveMode,x as runKodaX,Cn as runLlmReview,xr as runManagedTask,Lr as runOrchestration,re as saveConfig,ze as saveReasoningOverride,os as searchMcpCatalog,Jn as setActiveExtensionRuntime,Gt as setAgentConfigHome,_s as setSessionLineageActiveEntry,rn as shouldFlipBudgetLimited,M as shutdownDefaultLspService,Pa as speculativeRace,Fn as stage,ir as startKodaX,na as stripAssistantText,Oo as stripHtmlToText,Dn as testArtifact,eo as toolAskUserQuestion,Hs as toolBash,co as toolChangedDiff,lo as toolChangedScope,Vo as toolCodeSearch,Ws as toolEdit,Js as toolGlob,Ys as toolGrep,Eo as toolImpactEstimate,Qs as toolInsertAfterAnchor,Ro as toolModuleContext,lr as toolPermission,xo as toolProcessContext,Vs as toolRead,ao as toolRepoOverview,$o as toolSemanticLookup,Mo as toolSymbolContext,Zs as toolUndo,Uo as toolWebFetch,jo as toolWebSearch,Bs as toolWrite,me as touchContext,Ds as truncateHead,js as truncateLine,Xs as truncateTail,ta as trustProjectRules,nn as turnWallTimeDelta,Yt as validateAndFixToolHistory,it as validateCustomProviderConfig,Kr as validateSubtaskIndependence,Sn as validateToolSchemaForProvider,Rr as verifyGoalCompletion,_o as warmRepoIntelligenceRuntime,fn as webhook,Cr as withGoalBeforeNextTurn,kr as withGoalStopHook,Jo as workerAgent};
9
+ `))},"onError"),beforeToolExecute:i(async(s,n,r)=>{let a=await this.evaluateToolPermission(e,s,n,r?.toolId);return a.allowed?!0:a.override??!1},"beforeToolExecute")}}}async evaluateToolPermission(e,t,s,n){if(this.events.emit({type:"tool_permission_evaluated",sessionId:e.sessionId,tool:t,toolId:n??null,permissionMode:e.permissionMode}),t==="bash"){let l=typeof s.command=="string"?s.command:"";if(O(l))return this.events.emit({type:"tool_permission_resolved",sessionId:e.sessionId,tool:t,toolId:n??null,outcome:"auto_allowed_read_only_bash"}),{allowed:!0};if(await q(t,s,e.alwaysAllowTools,this.bashPrefixExtractor))return this.events.emit({type:"tool_permission_resolved",sessionId:e.sessionId,tool:t,toolId:n??null,outcome:"auto_allowed_remembered"}),{allowed:!0}}if(e.permissionMode==="plan"){let l=U(t,s,e.cwd);return l?(this.events.emit({type:"tool_permission_resolved",sessionId:e.sessionId,tool:t,toolId:n??null,outcome:"blocked_plan_mode"}),{allowed:!1,override:`${l} 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:n??null,outcome:"auto_allowed_plan_mode"}),{allowed:!0})}let r=b(t)&&typeof s.path=="string"&&F(f.resolve(e.cwd,s.path),e.cwd),a=T(e.permissionMode).has(t),d=e.permissionMode==="auto-in-project"&&(b(t)&&typeof s.path=="string"&&!D(s.path,e.cwd)||t==="bash"&&typeof s.command=="string"&&j(s.command,e.cwd).dangerous);return!r&&!a&&!d?(this.events.emit({type:"tool_permission_resolved",sessionId:e.sessionId,tool:t,toolId:n??null,outcome:"auto_allowed_policy"}),{allowed:!0}):await this.requestPermissionFromClient(e,t,s,n)}async requestPermissionFromClient(e,t,s,n){if(!this.connection)return this.events.emit({type:"tool_permission_resolved",sessionId:e.sessionId,tool:t,toolId:n??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:n??z(),title:t,kind:W(t),rawInput:s,locations:N(t,s),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{return this.events.emit({type:"tool_permission_resolved",sessionId:e.sessionId,tool:t,toolId:a.toolCallId,outcome:"request_failed_incomplete"}),{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,K(t,s,!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,s){s.catch(n=>{if(!this.connection||this.connection.signal.aborted)return;let r=n instanceof Error?n.message:String(n);this.events.emit({type:"notification_failed",sessionId:t,label:e,error:r})})}};async function Ke(o={}){let e=new y(o),t=Se.toWeb(v.stdin),s=Pe.toWeb(v.stdout);e.attach(t,s);try{await e.waitForClose()}finally{await e.dispose()}}i(Ke,"runAcpServer");export{$ as ACP_LOG_LEVELS,ya as AUTO_MODE_DENIAL_CONSECUTIVE_THRESHOLD,_a as AUTO_MODE_DENIAL_CUMULATIVE_THRESHOLD,g as AcpEventEmitter,m as AcpLogger,Xa as BASH_POLICY_SPEC,Fr as BLOCKER_REQUIRED_CONSECUTIVE_TURNS,Pa as BREAKER_ERROR_THRESHOLD,ba as BREAKER_WINDOW_MS,ce as BUILTIN_COMMANDS,Id as BUILTIN_WORKFLOWS,$s as CANCELLED_TOOL_RESULT_MESSAGE,Vs as CANCELLED_TOOL_RESULT_PREFIX,da as CODING_AGENT_MARKER,Ar as CODING_INVARIANTS,ur as CODING_SUMMARY_PROMPT,mr as CODING_UPDATE_SUMMARY_PROMPT,xn as CapabilityDeniedError,Pr as Client,En as ConstructionManifestError,gr as DEFAULT_CODING_AGENT_NAME,Jr as DEFAULT_DANGEROUS_PATTERNS,kn as DEFAULT_HANDLER_TIMEOUT_MS,$i as DEFAULT_RESILIENCE_CONFIG,Hr as DEFAULT_SAFE_PATTERNS,Un as DEFAULT_SELF_MODIFY_BUDGET,qa as DEFAULT_SPECULATIVE_WINDOW_MS,Bs as DEFAULT_TOOL_OUTPUT_MAX_BYTES,zs as DEFAULT_TOOL_OUTPUT_MAX_LINES,ld as DEFAULT_WORKFLOW_GENERATION_TIMEOUT_MS,Wt as DefaultSummaryCompaction,ia as EMIT_VERDICT_TOOL_NAME,xt as ErrorCategory,S as FileSessionStorage,dn as GENERATOR_AGENT_NAME,Xt as KODAX_API_MIN_INTERVAL,Y as KODAX_CONFIG_FILE,R as KODAX_DEFAULT_PROVIDER,Tt as KODAX_DEFAULT_TIMEOUT,H as KODAX_DIR,Ot as KODAX_HARD_TIMEOUT,Ft as KODAX_MAX_INCOMPLETE_RETRIES,qt as KODAX_MAX_RETRIES,Lt as KODAX_MAX_TOKENS,Je as KODAX_PROVIDERS,He as KODAX_PROVIDER_SNAPSHOTS,je as KODAX_REASONING_MODE_SEQUENCE,Kt as KODAX_RETRY_BASE_DELAY,J as KODAX_SESSIONS_DIR,Dt as KODAX_STAGGER_DELAY,pi as KODAX_TOOLS,se as KODAX_VERSION,y as KodaXAcpServer,Ge as KodaXAnthropicCompatProvider,Ne as KodaXBaseProvider,Pr as KodaXClient,Fe as KodaXError,di as KodaXExtensionRuntime,Qe as KodaXOpenAICompatProvider,De as KodaXProviderError,Xe as KodaXRateLimitError,kt as KodaXSessionError,Mt as KodaXTerminalError,Rt as KodaXToolError,As as LINEAGE_ENTRY_TYPES,lr as LSP_SERVERS,Ps as LineageCompaction,Ss as LineageExtension,cr as LspService,to as MANUAL_TOPIC_IDS,as as McpAuthRequiredError,_s as McpCapabilityProvider,rs as McpExpiredSessionError,Is as McpManager,ys as McpServerRuntime,an as PLANNER_AGENT_NAME,jt as PROMISE_PATTERN,Mi as PROMPT_SECTION_REGISTRY,aa as PROTOCOL_EMITTER_TOOLS,Gi as ProviderRecoveryCoordinator,Ws as READ_DEFAULT_LIMIT,Gs as READ_MAX_LINE_CHARS,Ns as READ_PREFLIGHT_SIZE_BYTES,Ro as REPOINTEL_DEFAULT_ENDPOINT,Gt as Runner,rn as SCOUT_AGENT_NAME,qi as SELF_KNOWLEDGE_ROUTING_RULE,ki as SYSTEM_PROMPT,Na as SYSTEM_WORKFLOW_LIMITS,Wi as StableBoundaryTracker,pn as TASK_ENGINE_ROLE_AGENTS,Tr as TOOL_RESULT_TRUNCATION_GUARDRAIL_NAME,Ua as TRACING_ENV,ln as WORKER_AGENT_NAME,dd as WORKFLOW_GENERATION_SYSTEM_PROMPT,Gn as _resetRuntimeForTesting,Jn as activate,yo as analyzeChangedScope,Xn as appendAuditEntry,Ls as appendSessionLineageLabel,In as applyAccountingDelta,Mr as applyFanoutBranchTransition,Ts as applySessionCompaction,Bo as applyToolResultGuardrail,Xs as archiveOldIslands,xr as assignFanoutBranchWorker,Sa as autoModeDenialShouldFallback,La as bashSignalCollector,Va as bootstrapTracing,yr as boundedRevise,ka as breakerShouldFallback,_r as budgetCeiling,or as buildAmaControllerDecision,Ga as buildApprovalSummary,Sn as buildBlockedGoal,Ki as buildCapabilityContextSections,la as buildClassifierPrompt,Pn as buildCompleteGoal,_n as buildCreatedGoal,tr as buildFallbackRoutingDecision,Cr as buildFanoutSchedulerPlan,Ur as buildGoalRuntimeBinding,vs as buildInitializeCapabilities,Kn as buildLlmReviewPrompt,w as buildMcpReverseCapabilities,wn as buildPausedGoal,ji as buildPromptMessageContent,nr as buildPromptOverlay,Ti as buildPromptSnapshot,Qi as buildProviderCapabilitySnapshot,sr as buildProviderPolicyHintsForDecision,Hi as buildProviderPolicyPromptNotes,$e as buildReasoningOverrideKey,vo as buildRepoIntelligenceContext,Lo as buildRepoIntelligenceIndex,go as buildRepoOverview,An as buildResumedGoal,Oi as buildSelfKnowledgeRoutingRule,Fs as buildSessionTree,Di as buildSystemPrompt,Fi as buildSystemPromptSnapshot,ud as buildWorkflowGenerationUserPrompt,Ea as checkAbsoluteDeny,Xi as checkIncompleteToolCalls,rr as checkPromiseSignal,Qa as clampWorkflowLimits,pa as classify,Zr as classifyBashCommand,Et as classifyError,Bi as classifyResilienceError,es as cleanupIncompleteToolCalls,We as clearReasoningOverride,wt as clearRuntimeModelProviders,Oa as collectAllSignals,ta as computeInputSignature,ua as computeRulesFingerprint,Nn as configureRuntime,Qo as convertCapabilityReadResult,Go as convertProviderSearchResults,kr as countActiveFanoutBranches,Ds as countActiveLineageMessages,Vt as countTokens,$t as createAgent,Ia as createAutoModeDenialTracker,Da as createAutoModeToolGuardrail,Yr as createBashClassifierConfig,L as createBashPrefixExtractor,_i as createBuiltinToolDefinition,Ca as createCircuitBreaker,za as createCodingWorkflowBackend,Ln as createCtxProxy,at as createCustomProvider,fr as createDefaultCodingAgent,ea as createDenialTracker,_ as createExtensionRuntime,br as createFanoutSchedulerInput,zt as createHandoff,Bt as createInMemorySession,me as createInteractiveContext,Wr as createKodaXTaskRunner,ss as createMcpCapabilityId,ws as createMcpManager,ds as createMcpTransport,xi as createPromptSection,ir as createReasoningPlan,Wa as createRunGraphWriter,hr as createSessionControl,Rs as createSessionLineage,Or as createToolResultTruncationGuardrail,yd as createWorkflowPatternTemplateModule,rd as createWorkflowRunManager,_d as decideWorkflowInvocation,ts as defaultMcpCacheDir,Mn as defaultPolicy,Wn as disableSelfModify,us as discoverAuthorizationServerMetadata,ri as discoverMarkdownAgents,ms as discoverOAuthEndpoints,ps as discoverProtectedResourceMetadata,Ya as discoverSavedWorkflows,gn as drainPendingSwaps,ra as emitVerdict,Ut as estimateTokens,Ji as evaluateProviderPolicy,Cn as exec,ue as executeCommand,Ri as executeTool,js as extractArtifactLedger,ja as extractCommandPrefix,Vi as extractComparableUserMessageText,No as extractHtmlTitle,cs as extractInsufficientScope,Ui as extractPromptComparableText,ls as extractResourceMetadataUrl,Cs as extractTitleFromMessages,Ta as fileSignalCollector,Jo as finalizeRetrievalResult,oi as findByVersion,Os as findPreviousUserEntryId,Ks as forkSessionLineage,nn as formatAgentsForPrompt,Gr as formatParallelDispatchResult,Qs as formatSize,bs as generateSessionId,gd as generateWorkflow,fd as generateWorkflowFromOptions,ci as getActiveExtensionRuntime,Ht as getAgentConfigHome,Jt as getAgentConfigPath,wi as getAllRegisteredTools,Yt as getAppDataDir,St as getAvailableProviderNames,yi as getBuiltinRegisteredToolDefinition,vi as getBuiltinToolDefinition,wd as getBuiltinWorkflow,ft as getCustomModelCapabilities,lt as getCustomProvider,ut as getCustomProviderList,gt as getCustomProviderModelDescriptors,mt as getCustomProviderModels,pt as getCustomProviderNames,pr as getDefaultLspService,ad as getDefaultWorkflowRunManager,na as getDenialContext,Rr as getFanoutBranch,de as getGitRoot,Fo as getImpactEstimate,sn as getKodaxGlobalDir,is as getMcpCachePaths,nt as getModelCapabilities,Oo as getModuleContext,Ko as getProcessContext,Ye as getProvider,et as getProviderConfiguredCapabilityProfile,Ze as getProviderConfiguredReasoningCapability,ne as getProviderList,oe as getProviderModel,ot as getProviderModelDescriptors,tt as getProviderModels,fi as getRegisteredToolDefinition,To as getRepoIntelligenceIndex,fo as getRepoOverview,Do as getRepoRoutingSignals,Pi as getRequiredToolParams,yt as getRuntimeModelProvider,It as getRuntimeModelProviderNames,ks as getSessionLineagePath,Ms as getSessionMessagesFromLineage,qo as getSymbolContext,mi as getTool,gi as getToolDefinition,hi as getToolRegistrations,zo as getToolResultPolicy,te as getVersion,vd as getWorkflowPatternTemplate,hn as goalTokenDelta,mn as hasPendingSwap,Z as hydrateProcessEnvFromShell,er as inferTaskType,ro as inspectEditFailure,xo as inspectRepoIntelligenceRuntime,ct as isCustomProviderName,oa as isDeniedRecently,At as isKnownProvider,Nr as isParallelDispatchDirective,ie as isProviderConfigured,st as isProviderName,_t as isRuntimeModelProviderName,M as isToolFileMutation,Si as isToolMutation,Ai as isToolPlanModeAllowed,bn as isValidTokenBudget,ar as languageIdForPath,ni as listAll,Ct as listAllModelCapabilities,ei as listArtifacts,it as listBuiltinModelCapabilities,Ii as listBuiltinToolDefinitions,Ad as listBuiltinWorkflows,si as listConstructed,ht as listCustomProviderModelCapabilities,Ci as listToolDefinitions,bi as listTools,hd as listWorkflowPatternTemplates,on as loadAgentsFiles,ii as loadAgentsFromMarkdown,ha as loadAutoRules,re as loadConfig,od as loadGeneratedWorkflowFromRun,Tn as loadHandler,ze as loadReasoningOverride,td as loadSavedWorkflow,ed as loadSavedWorkflowCapsule,hs as loadValidToken,fn as makeDisabledGoalToolsContext,Lr as markFanoutBranchCancelled,Er as markFanoutBranchCompleted,$r as mcpRootsFromWorkspace,Us as mergeArtifactLedger,Za as normalizeWorkflowModule,Ei as orderPromptSections,$a as parallelInvestigation,fa as parseAutoRules,ca as parseClassifierOutput,pe as parseCommand,io as parseEditToolError,Fn as parseLlmReviewVerdict,os as parseMcpCapabilityId,Ma as parseModelSpec,md as parseWorkflowGeneration,fs as performOAuthLogin,Zs as persistToolOutput,id as preflightWorkflowCapsule,A as prepareRuntimeConfig,Xo as prewarmRepoIntelligenceCaches,ve as processSpecialSyntax,le as rateLimitedCall,ti as readArtifact,jn as readAuditEntries,Vn as readBudget,Bn as readDisableState,Ka as readSpeculativeWindowFromEnv,ma as readTrustState,Ue as reasoningCapabilityToOverride,Zi as reasoningModeToDepth,Ve as reasoningOverrideToCapability,Ni as reconstructMessagesWithToolGuard,Aa as recordAutoModeAllow,wa as recordAutoModeBlock,qr as recordBlockerAttempt,Ra as recordBreakerError,sa as recordDenial,Sr as registerCodingInvariants,ee as registerConfiguredCustomProviders,I as registerConfiguredMcpCapabilityProvider,dt as registerCustomProviders,vt as registerModelProvider,gs as registerOAuthClient,zr as registerOfficialSandboxExtension,Nt as registerPresetDispatcher,ui as registerTool,Yn as rehydrateActiveArtifacts,$n as remainingSelfModifyBudget,_o as renderChangedScope,Co as renderImpactEstimate,So as renderModuleContext,bo as renderProcessContext,Li as renderPromptSections,ho as renderRepoOverview,Ho as renderRetrievalResult,Po as renderSymbolContext,dr as reportLspDiagnostics,Kr as resetBlockerCounter,zn as resetBudget,P as resolveAcpLogLevel,xa as resolveClassifierModel,un as resolveConstructedAgent,so as resolveKodaXManual,bt as resolveModelCapabilities,k as resolveProvider,Pt as resolveProviderModelDescriptors,Yi as resolveReasoningMode,Mo as resolveRepoIntelligenceMode,ko as resolveRepoIntelligenceRuntimeConfig,zi as resolveResilienceConfig,xs as resolveSessionLineageTarget,Ir as resolveToolCapability,cd as resolveWorkflowGenerationTimeoutMs,Zn as revoke,qs as rewindSessionLineage,ai as rollbackSelfModify,Ke as runAcpServer,On as runAstRules,fe as runInkInteractiveMode,he as runInteractiveMode,E as runKodaX,Dn as runLlmReview,Vr as runManagedTask,Br as runOrchestration,Ja as runWorkflowFromOptions,Ha as runWorkflowModule,Ba as safeWorkflowArtifactName,ae as saveConfig,sd as saveGeneratedWorkflow,nd as saveGeneratedWorkflowFromRun,Be as saveReasoningOverride,ns as searchMcpCatalog,li as setActiveExtensionRuntime,Qt as setAgentConfigHome,Es as setSessionLineageActiveEntry,yn as shouldFlipBudgetLimited,x as shutdownDefaultLspService,Fa as speculativeRace,Qn as stage,vr as startKodaX,va as stripAssistantText,Wo as stripHtmlToText,Hn as testArtifact,mo as toolAskUserQuestion,lo as toolBash,Ao as toolChangedDiff,wo as toolChangedScope,en as toolCodeSearch,no as toolEdit,co as toolGlob,po as toolGrep,$o as toolImpactEstimate,ao as toolInsertAfterAnchor,jo as toolModuleContext,wr as toolPermission,Vo as toolProcessContext,eo as toolRead,Io as toolRepoOverview,tn as toolSemanticLookup,Uo as toolSymbolContext,uo as toolUndo,Zo as toolWebFetch,Yo as toolWebSearch,oo as toolWrite,ge as touchContext,Hs as truncateHead,Ys as truncateLine,Js as truncateTail,ga as trustProjectRules,vn as turnWallTimeDelta,Zt as validateAndFixToolHistory,rt as validateCustomProviderConfig,pd as validateGeneratedWorkflowSource,Qr as validateSubtaskIndependence,qn as validateToolSchemaForProvider,jr as verifyGoalCompletion,Eo as warmRepoIntelligenceRuntime,Rn as webhook,Dr as withGoalBeforeNextTurn,Xr as withGoalStopHook,cn as workerAgent};