@kodax-ai/kodax 0.7.74 → 0.7.75
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.
- package/CHANGELOG.md +40 -0
- package/README.md +14 -0
- package/README_CN.md +11 -0
- package/dist/chunks/{agent-2ABIG5NW.js → agent-LVZJB2GQ.js} +1 -1
- package/dist/chunks/argument-completer-GHWEWPVQ.js +2 -0
- package/dist/chunks/{chunk-QH56WEHK.js → chunk-4PVSDE5L.js} +1 -1
- package/dist/chunks/{chunk-XM724XAA.js → chunk-5WSOB34U.js} +4 -4
- package/dist/chunks/chunk-6YUDR7WN.js +5 -0
- package/dist/chunks/{chunk-5GH3SVI3.js → chunk-6ZMKX3XF.js} +21 -21
- package/dist/chunks/{chunk-C7TZAT3S.js → chunk-737LI7OS.js} +8 -8
- package/dist/chunks/{chunk-64M5HOCA.js → chunk-BN3W2DQY.js} +1 -1
- package/dist/chunks/{chunk-VPURXE2F.js → chunk-DEHOFNQA.js} +119 -119
- package/dist/chunks/{chunk-MBAPT2R5.js → chunk-G5VW55T4.js} +1 -1
- package/dist/chunks/{chunk-MVCAFD6M.js → chunk-N6M2LYEP.js} +1 -1
- package/dist/chunks/{chunk-GAFFYJU3.js → chunk-OGL227XV.js} +11 -11
- package/dist/chunks/{chunk-7W6KYJU2.js → chunk-OJQQRLZJ.js} +4 -4
- package/dist/chunks/{chunk-XXQLPTAN.js → chunk-Q65EAOX6.js} +7 -7
- package/dist/chunks/{chunk-KPGVY6PF.js → chunk-QRBWNYFV.js} +4 -4
- package/dist/chunks/{chunk-UJS7JAO6.js → chunk-QSMXI4MH.js} +1 -1
- package/dist/chunks/{chunk-XMP66YWG.js → chunk-SB75RNNR.js} +4 -4
- package/dist/chunks/{chunk-VK5QTHS6.js → chunk-UJRRZINL.js} +3 -3
- package/dist/chunks/{compaction-config-QYCDOW3Q.js → compaction-config-L2YZK7Q3.js} +1 -1
- package/dist/chunks/{construction-bootstrap-BKNPJI7O.js → construction-bootstrap-3TQWTHSQ.js} +1 -1
- package/dist/chunks/{dist-EVEJAII2.js → dist-D3EPVAOZ.js} +1 -1
- package/dist/chunks/{dist-6EK4H7TP.js → dist-ZJFTZJ55.js} +1 -1
- package/dist/chunks/host-KHDXYFVG.js +2 -0
- package/dist/chunks/{run-manager-L7MKGQNX.js → run-manager-CD24OO4V.js} +1 -1
- package/dist/chunks/{utils-GTJLL4GT.js → utils-HMVP6XPH.js} +1 -1
- package/dist/index.js +1 -1
- package/dist/kodax_cli.js +825 -825
- package/dist/runtime-worker.js +756 -756
- package/dist/sdk-a2a.js +1 -1
- package/dist/sdk-agent.js +1 -1
- package/dist/sdk-coding.js +1 -1
- package/dist/sdk-experimental-memory.js +1 -1
- package/dist/sdk-llm.js +1 -1
- package/dist/sdk-mcp.js +1 -1
- package/dist/sdk-media.js +1 -1
- package/dist/sdk-repl.js +1 -1
- package/dist/sdk-runtime.d.ts +2 -1
- package/dist/sdk-runtime.js +1 -1
- package/dist/sdk-session.js +1 -1
- package/dist/sdk-skills.js +1 -1
- package/docs/SDK_EMBEDDER_GUIDE.md +144 -110
- package/package.json +1 -1
- package/dist/chunks/argument-completer-C45DEO34.js +0 -2
- package/dist/chunks/chunk-PP53SIIL.js +0 -5
- package/dist/chunks/host-KS4TJKWQ.js +0 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
-
import{$ as R,A as q,B as r,C as s,D as t,E as u,F as v,G as w,H as x,I as y,J as z,K as A,L as B,M as C,N as D,O as E,P as F,Q as G,R as H,S as I,T as J,U as K,V as L,W as M,X as N,Y as O,Z as P,_ as Q,aa as S,b as a,ba as T,c as b,ca as U,m as c,n as d,o as e,p as f,q as g,r as h,s as i,t as j,u as k,v as l,w as m,x as n,y as o,z as p}from"./chunk-
|
|
2
|
+
import{$ as R,A as q,B as r,C as s,D as t,E as u,F as v,G as w,H as x,I as y,J as z,K as A,L as B,M as C,N as D,O as E,P as F,Q as G,R as H,S as I,T as J,U as K,V as L,W as M,X as N,Y as O,Z as P,_ as Q,aa as S,b as a,ba as T,c as b,ca as U,m as c,n as d,o as e,p as f,q as g,r as h,s as i,t as j,u as k,v as l,w as m,x as n,y as o,z as p}from"./chunk-SB75RNNR.js";import"./chunk-DEHOFNQA.js";import"./chunk-N6M2LYEP.js";import"./chunk-UJRRZINL.js";import"./chunk-5WSOB34U.js";import"./chunk-BN3W2DQY.js";import"./chunk-G5VW55T4.js";import"./chunk-737LI7OS.js";import"./chunk-Q65EAOX6.js";import"./chunk-QSMXI4MH.js";import"./chunk-OGL227XV.js";import"./chunk-6YUDR7WN.js";import"./chunk-F7AIEHSS.js";import"./chunk-ONUPGMER.js";export{a as CONFIG_TEMPLATES,H as KODAX_CONFIG_ENV_BINDINGS,e as KODAX_CONFIG_FILE,c as KODAX_DIR,D as KODAX_EXAMPLE_CONFIG_FILE,E as KODAX_INTEGRATION_EXAMPLE_FILES,d as KODAX_SESSIONS_DIR,k as KODAX_VERSION,f as PREVIEW_MAX_LENGTH,I as applyConfigEnvironment,r as describeProviderCapabilitySummary,y as describeReasoningCapabilityControl,z as describeReasoningExecution,G as ensureExampleConfigFile,F as ensureExampleConfigFiles,S as formatProviderCapabilityDetailLines,R as formatProviderSourceKind,s as formatReasoningCapabilityShort,t as formatReasoningEffortForDisplay,w as formatReasoningEffortStatusLabel,b as getConfigTemplate,Q as getGitRoot,m as getProviderAvailableModels,o as getProviderCapabilityProfile,p as getProviderCapabilitySnapshot,T as getProviderCommonPolicyScenarios,A as getProviderList,l as getProviderModel,q as getProviderPolicyDecision,n as getProviderReasoningCapability,v as getProviderReasoningEffortCycle,u as getProviderReasoningEffortOptions,j as getVersion,g as hydrateProcessEnvFromShell,B as isProviderConfigured,C as loadConfig,J as prepareRuntimeConfig,U as rateLimitedCall,i as registerConfiguredCustomProviders,h as resetShellEnvironmentHydrationForTesting,L as resolveInitialEffortOverride,P as resolvePermissionModeEffort,x as resolveProviderReasoningRuntimeEffort,O as resolveRuntimeEffortSelection,N as resolveRuntimeModelSelection,M as resolveRuntimeProviderSelection,K as saveConfig};
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
-
import{a as Ke,e as Xe,f as qe,n as De,o as Fe,p as Ue,q as je,r as We,s as M,t as $e}from"./chunks/chunk-
|
|
2
|
+
import{a as Ke,e as Xe,f as qe,n as De,o as Fe,p as Ue,q as je,r as We,s as M,t as $e}from"./chunks/chunk-6ZMKX3XF.js";import{Ab as Te,Bb as Le,Sb as C,Ua as Ce,Va as Me,hb as Oe}from"./chunks/chunk-QRBWNYFV.js";import{B as te,C as ne,Ea as xe,F as Ee,G as Ae,Ga as ke,Ha as be,k as V,q as N,t as J,u as Q,v as Y,y as Z,z as ee}from"./chunks/chunk-OJQQRLZJ.js";import{K as ye,L as Se,M as Pe,T as b,U as we,W as B,X as G,Y as H,_ 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-SB75RNNR.js";import"./chunks/chunk-4PVSDE5L.js";import{$ as Hl,A as x,Aa as Pc,B as wl,Ba as z,C as _l,Ca as wc,D as Il,Da as _c,E as El,Ea as Ic,F as Al,Fa as Ec,G as xl,Ga as Ac,H as kl,Ha as xc,I as bl,Ia as kc,J as Cl,Ja as bc,K as Ml,Ka as Cc,L as Ol,La as Mc,M as Tl,Ma as Oc,N as Ll,O as Kl,P as Xl,Q as ql,R as Dl,S as Fl,T as Ul,U as jl,V as Wl,W as $l,X as zl,Y as Vl,Z as Bl,_ as Gl,a as cn,aa as Nl,b as un,ba as Jl,c as pn,ca as Ql,d as el,da as Yl,e as tl,ea as Zl,f as nl,fa as ec,g as il,ga as tc,h as ol,ha as nc,i as sl,ia as ic,j as rl,ja as oc,k as al,ka as sc,l as dl,la as rc,m as ll,ma as ac,n as cl,na as dc,o as ul,oa as lc,p as pl,pa as cc,q as ml,qa as uc,r as fl,ra as pc,s as gl,sa as mc,t as hl,ta as fc,u as vl,ua as gc,v as Rl,va as hc,w as yl,wa as vc,x as A,xa as Rc,y as Sl,ya as yc,z as Pl,za as Sc}from"./chunks/chunk-DEHOFNQA.js";import{a as id,b as od,c as sd,d as rd,e as ad,f as dd,g as ld,h as cd,i as ud,j as Hd}from"./chunks/chunk-N6M2LYEP.js";import{A as Dd,B as Fd,C as Ud,D as jd,E as Wd,F as $d,G as zd,H as Vd,I as Bd,J as Gd,a as pd,b as md,c as fd,d as gd,e as hd,f as vd,g as Rd,h as yd,i as Sd,j as Pd,k as wd,l as _d,m as Id,n as Ed,o as Ad,p as xd,q as kd,r as bd,s as Cd,t as Md,u as Od,v as Td,w as Ld,x as Kd,y as Xd,z as qd}from"./chunks/chunk-UJRRZINL.js";import{$ as $a,A as Ea,Aa as Jd,B as Aa,C as xa,D as ka,E as ba,F as Ca,Ha as Qd,I as Ma,Ia as Yd,J as Oa,K as Ta,Ka as Zd,L as La,M as Ka,N as Xa,O as qa,T as Da,U as Fa,V as Ua,W as ja,X as Wa,a as ln,aa as za,b as Xn,ba as Va,c as qn,ca as Ba,d as sa,e as ra,f as aa,fa as Ga,g as da,h as la,i as ca,k as fa,l as ga,m as ha,n as va,o as Ra,p as ya,q as Sa,v as Pa,w as wa,y as _a,z as Ia,za as Nd}from"./chunks/chunk-5WSOB34U.js";import"./chunks/chunk-BN3W2DQY.js";import{a as nd}from"./chunks/chunk-G5VW55T4.js";import{$ as wo,$a as vs,$b as ar,$c as Yr,Aa as Vo,Ab as qs,Ac as Or,Ad as $,Ba as Bo,Bb as Ds,Bc as Tr,Ca as Go,Cb as Fs,Da as Ho,Db as Us,E as co,Ea as No,Eb as js,F as uo,Fa as Jo,Fb as Ws,G as po,Ga as Qo,Gb as $s,H as mo,Hb as I,Hc as Lr,Hd as Za,I as fo,Ia as Yo,Ib as F,Ic as Kr,Id as ed,J as go,Ja as Zo,Jb as zs,Jc as Xr,Jd as td,Ka as es,Kb as Vs,Kc as qr,La as ts,Lb as U,Lc as Dr,Ma as ns,Mb as Bs,Mc as Fr,Na as is,Nb as Gs,Nc as Ur,Oa as os,Ob as Hs,Oc as jr,Pa as ss,Pb as Ns,Pc as Wr,Q as ho,Qa as rs,Qb as Js,Qc as $r,R as vo,Ra as as,Rb as Qs,Rc as zr,S as Ro,Sa as ds,Sb as Ys,Sc as Vr,T as yo,Ta as ls,Tb as Zs,Tc as W,U as So,Ua as cs,Ub as er,Uc as Br,Va as us,Vb as tr,Vc as Gr,Wa as ps,Wb as nr,Wc as Hr,Xa as ms,Xb as ir,Xc as Nr,Ya as fs,Yb as or,Yc as Jr,Z as Po,Za as gs,Zb as sr,_a as hs,_b as rr,_c as Qr,ab as Rs,ac as dr,ad as Zr,ba as _o,bb as ys,bc as lr,bd as ea,ca as Io,cc as cr,cd as ta,d as Ni,da as Eo,db as Ss,dc as ur,dd as na,e as Ji,ea as Ao,eb as Ps,ec as pr,ed as ia,fa as xo,fb as ws,fc as mr,fd as oa,gb as _s,gc as fr,gd as ua,ha as ko,hc as gr,hd as pa,ia as bo,ib as Is,ic as hr,id as ma,ja as Co,jb as Es,jc as vr,ka as Mo,kb as As,kc as Rr,l as Qi,la as Oo,lb as xs,lc as yr,m as Yi,ma as To,mb as ks,mc as Sr,n as Zi,na as Lo,nb as bs,nc as Pr,o as eo,oa as Ko,ob as Cs,oc as wr,p as to,pa as Xo,pb as Ms,pc as _r,q as no,qa as qo,qb as Os,qc as Ir,r as io,ra as Do,rb as Ts,rc as Er,s as oo,sa as Fo,sb as Ls,sc as Ar,t as so,ta as Uo,tc as xr,u as ro,ua as jo,uc as kr,v as ao,va as Wo,vb as Ks,vc as br,vd as Ha,w as lo,wa as $o,wc as Cr,wd as Na,xa as zo,xc as Mr,xd as Ja,yc as j,yd as Qa,zb as Xs,zc as E,zd as Ya}from"./chunks/chunk-737LI7OS.js";import{Aa as zt,Ba as Vt,C as K,Ca as Bt,D as _t,Da as Gt,E as It,Ea as Ht,F as X,Fa as Nt,G as Et,Ga as Jt,H as At,Ha as Qt,Ia as Yt,Ja as Zt,Ka as en,La as tn,Ma as D,Na as nn,Oa as on,Pa as sn,Qa as rn,Ra as an,U as xt,Ua as dn,ca as kt,d as ht,da as bt,e as vt,f as Rt,ia as Ct,ja as Mt,ka as q,la as Ot,m as yt,n as St,oa as Tt,pa as Lt,ra as Kt,sa as Xt,ta as qt,ua as Dt,v as Pt,va as Ft,w as wt,wa as Ut,xa as jt,ya as Wt,za as $t}from"./chunks/chunk-Q65EAOX6.js";import{Ac as Mi,Ec as Oi,Fc as Ti,Ic as Li,Jc as Ki,a as Dn,b as Fn,bc as ai,c as Un,cc as di,d as jn,dc as li,e as Wn,ec as ci,f as $n,fc as ui,gc as pi,h as zn,hc as mi,i as Vn,ic as fi,j as Bn,jc as gi,k as Gn,kc as hi,kd as Xi,l as Hn,lc as vi,ld as qi,mc as Ri,md as Di,nc as yi,nd as Fi,oc as Si,od as Ui,pc as Pi,pd as ji,qc as wi,qd as Wi,rc as _i,s as Nn,sa as Zn,sb as si,sc as Ii,t as Jn,tb as ri,tc as Ei,td as $i,u as Qn,uc as Ai,ud as zi,v as Yn,va as ei,vc as xi,vd as Vi,wc as ki,wd as Bi,xd as Gi,yc as bi,yd as Hi,zc as Ci}from"./chunks/chunk-QSMXI4MH.js";import{d as ti,e as ni,f as ii,i as oi}from"./chunks/chunk-OGL227XV.js";import{F as Kn,a as mn,b as fn,c as gn,d as hn,e as vn,f as Rn,g as yn,h as Sn,i as Pn,j as wn,k as _n,l as In,m as En,n as An,o as xn,p as kn,q as bn,r as Cn,s as Mn,t as On,u as Tn,y as Ln}from"./chunks/chunk-6YUDR7WN.js";import"./chunks/chunk-F7AIEHSS.js";import{a as s}from"./chunks/chunk-ONUPGMER.js";import ze 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=>{ze.stderr.write(`${t}
|
|
3
3
|
`)})}handleEvent(e){let t=Ve(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?Ge(i):"",a=r?` ${r}`:"";this.sink(`[ACP][${e.toUpperCase()}][${o}] ${t}${a}`)}};function Ve(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 Be(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(Ve,"mapEventToLogEntry");function u(n){let{type:e,...t}=n;return t}s(u,"toLogFields");function Be(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(Be,"mapPermissionOutcomeToLogEntry");function Ge(n){return Object.entries(n).flatMap(([e,t])=>t===void 0?[]:`${e}=${He(t)}`).join(" ")}s(Ge,"formatFields");function He(n){return n===null?"null":typeof n=="string"?JSON.stringify(n.length>160?`${n.slice(0,157)}...`:n):String(n)}s(He,"formatFieldValue");var S=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 Ne from"node:os";import g from"node:path";import R from"node:process";import{Readable as Je,Writable as Qe}from"node:stream";import{AgentSideConnection as Ye,PROTOCOL_VERSION as re,RequestError as P,ndJsonStream as Ze}from"@agentclientprotocol/sdk";var ue=["plan","accept-edits","auto-in-project"];function T(n){return W(n)}s(T,"acpIsFileModificationTool");var et={read:"read",write:"edit",edit:"edit",undo:"edit",bash:"execute",grep:"search",glob:"search",think:"think",fetch:"fetch"},tt=[{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 nt(n){let e=n.replace(/\s+/g," ").trim();return e.length<=80?e:`${e.slice(0,77)}...`}s(nt,"buildAcpSessionTitle");function it(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 P.invalidParams({effort:e},i)}}s(it,"resolvePromptEffortOverride");function ot(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(ot,"convertAcpMcpServers");function st(n){let e=[];for(let t of n){let i=t.trim();i&&!e.includes(i)&&e.push(i)}return e}s(st,"dedupeExtensionPaths");function rt(n){return Array.isArray(n)?st(n.filter(e=>typeof e=="string"&&e.trim().length>0).map(e=>g.isAbsolute(e)?e:g.resolve(g.dirname(k),e))):[]}s(rt,"normalizeConfiguredExtensionPaths");async function at(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(at,"discoverAcpDefaultExtensions");async function dt(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(dt,"loadAcpExtensionGroups");function lt(n,e="accept-edits"){return n&&ue.includes(n)?n:e}s(lt,"normalizeAcpPermissionMode");function ct(n){if(n&&ue.includes(n))return n;throw P.invalidParams({modeId:n},"Invalid session mode. Expected one of: plan, accept-edits, auto-in-project.")}s(ct,"parseSessionMode");function ut(n){return{availableModes:tt,currentModeId:n}}s(ut,"buildModeState");function ae(n){return et[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 pt(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
5
|
`).trim()}s(pt,"extractPromptText");function mt(n){return/^\[(?:Tool Error|Cancelled|Blocked|Error)\]/.test(n)}s(mt,"isToolResultFailure");function ft(n){return n instanceof Error?n.name==="AbortError"||n.message.includes("aborted")||n.message.includes("ABORTED"):!1}s(ft,"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=G({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(H({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=lt(e.permissionMode??o.permissionMode,"accept-edits");let d=g.resolve(e.cwd??R.cwd()),l=rt(r.extensions),c=new y({level:O(e.logLevel??R.env.KODAX_ACP_LOG,"info")}),p=at(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??Ne.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 S({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 w=E({config:o});f&&await A(w,h,{reverse:x({cwd:d})}),await dt(w,m,l),w.activate(),this.extensionRuntime=w})().catch(m=>{let v=m instanceof Error?m.message:String(m);c.error("ACP extension initialization failed: "+v)})}attach(e,t){let i=Ze(t,e),o=new Ye(()=>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 P.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=ot(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:ut(r.permissionMode)}}async authenticate(){}async setSessionMode(e){let t=this.requireSession(e.sessionId),i=t.permissionMode,o=ct(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=pt(e.prompt),o=it(e);if(!i)throw P.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(ft(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,`
|