@kodax-ai/kodax 0.7.40 → 0.7.42

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 (70) hide show
  1. package/CHANGELOG.md +146 -1
  2. package/README.md +129 -232
  3. package/README_CN.md +128 -253
  4. package/dist/chunks/chunk-3RKBXWZS.js +2 -0
  5. package/dist/chunks/chunk-7JLYVWAF.js +1033 -0
  6. package/dist/chunks/chunk-CD3R5YBH.js +16 -0
  7. package/dist/chunks/chunk-DKXUY5F2.js +209 -0
  8. package/dist/chunks/chunk-HMYEQJGT.js +31 -0
  9. package/dist/chunks/{chunk-FAVPT4P7.js → chunk-IYJ5EPRV.js} +1 -1
  10. package/dist/chunks/chunk-KUX5LRPP.js +2 -0
  11. package/dist/chunks/{chunk-EQ5DGS2W.js → chunk-OWSKU55I.js} +5 -6
  12. package/dist/chunks/chunk-ZZ4KRK2B.js +465 -0
  13. package/dist/chunks/compaction-config-FIFFP4FT.js +2 -0
  14. package/dist/chunks/{construction-bootstrap-OFPUZTXQ.js → construction-bootstrap-J2WOCYEK.js} +1 -1
  15. package/dist/chunks/dist-2ZHWDXMQ.js +2 -0
  16. package/dist/chunks/dist-W4CJWLIH.js +2 -0
  17. package/dist/chunks/utils-A5MWDTWZ.js +2 -0
  18. package/dist/index.d.ts +237 -7
  19. package/dist/index.js +5 -5
  20. package/dist/kodax_cli.js +935 -917
  21. package/dist/sdk-agent.d.ts +1375 -10
  22. package/dist/sdk-agent.js +1 -1
  23. package/dist/sdk-coding.d.ts +4608 -14
  24. package/dist/sdk-coding.js +1 -1
  25. package/dist/sdk-llm.d.ts +210 -10
  26. package/dist/sdk-llm.js +1 -1
  27. package/dist/sdk-mcp.d.ts +17 -0
  28. package/dist/sdk-mcp.js +2 -0
  29. package/dist/sdk-repl.d.ts +3026 -13
  30. package/dist/sdk-repl.js +2 -1
  31. package/dist/sdk-session.d.ts +164 -0
  32. package/dist/sdk-session.js +2 -0
  33. package/dist/sdk-skills.d.ts +553 -9
  34. package/dist/sdk-skills.js +1 -1
  35. package/dist/types-chunks/bash-prefix-extractor.d-CkhaqKkg.d.ts +2571 -0
  36. package/dist/types-chunks/capability.d-3C62G8Eq.d.ts +39 -0
  37. package/dist/types-chunks/config.d-BfJUXxC0.d.ts +41 -0
  38. package/dist/types-chunks/cost-tracker.d-B6vMoLLF.d.ts +360 -0
  39. package/dist/types-chunks/history-cleanup.d-DznrzEiU.d.ts +1475 -0
  40. package/dist/types-chunks/instance-discovery.d-BsKnIwpg.d.ts +990 -0
  41. package/dist/types-chunks/resolver.d-DX9au4NJ.d.ts +263 -0
  42. package/dist/types-chunks/session-storage.d-Cci897iM.d.ts +68 -0
  43. package/dist/types-chunks/storage.d-Bc5DoAwp.d.ts +532 -0
  44. package/dist/types-chunks/transport.d-DuyjG30t.d.ts +180 -0
  45. package/dist/types-chunks/types.d-B1uGoVTE.d.ts +400 -0
  46. package/dist/types-chunks/types.d-C5mHR87z.d.ts +119 -0
  47. package/dist/types-chunks/types.d-mM8vqvhT.d.ts +254 -0
  48. package/package.json +16 -3
  49. package/dist/acp_events.d.ts +0 -109
  50. package/dist/acp_logger.d.ts +0 -20
  51. package/dist/acp_server.d.ts +0 -92
  52. package/dist/chunks/chunk-6QO6HWGU.js +0 -30
  53. package/dist/chunks/chunk-CLS57NPX.js +0 -460
  54. package/dist/chunks/chunk-NDNILSTR.js +0 -2
  55. package/dist/chunks/chunk-QZEDWITG.js +0 -1226
  56. package/dist/chunks/chunk-Z5EBDA6R.js +0 -15
  57. package/dist/chunks/compaction-config-A7XZ6H5Y.js +0 -2
  58. package/dist/chunks/dist-M57GIWR4.js +0 -2
  59. package/dist/chunks/dist-OTUF22DA.js +0 -2
  60. package/dist/chunks/utils-DFMYJUTE.js +0 -2
  61. package/dist/cli_commands.d.ts +0 -17
  62. package/dist/cli_option_helpers.d.ts +0 -49
  63. package/dist/cli_option_helpers.test.d.ts +0 -1
  64. package/dist/constructed_cli.d.ts +0 -82
  65. package/dist/constructed_cli.test.d.ts +0 -1
  66. package/dist/kodax_cli.d.ts +0 -7
  67. package/dist/self_modify_cli.d.ts +0 -81
  68. package/dist/self_modify_cli.test.d.ts +0 -9
  69. package/dist/skill_cli.d.ts +0 -15
  70. package/dist/skill_cli.test.d.ts +0 -1
@@ -0,0 +1,2 @@
1
+ // @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
2
+ import{a}from"./chunk-IYJ5EPRV.js";import"./chunk-CD3R5YBH.js";import"./chunk-3RKBXWZS.js";import"./chunk-V4WSBIXB.js";export{a as loadCompactionConfig};
@@ -1,5 +1,5 @@
1
1
  // @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
2
- import{Xa as i,ab as a}from"./chunk-QZEDWITG.js";import"./chunk-Z5EBDA6R.js";import"./chunk-EQ5DGS2W.js";import"./chunk-6QO6HWGU.js";import{a as t}from"./chunk-V4WSBIXB.js";var n=null;function f(e){n=e}t(f,"bindAskUserForConstruction");function d(e){return e.content?.capabilities?.tools??[]}t(d,"readDeclaredTools");var u=t(async e=>{if(!n)return"reject";let o=d(e),r=o.length>0?o.join(", "):"<none>";return await n({question:`Activate constructed tool ${e.name}@${e.version}?
2
+ import{Ab as a,vb as i}from"./chunk-7JLYVWAF.js";import"./chunk-CD3R5YBH.js";import"./chunk-HMYEQJGT.js";import"./chunk-OWSKU55I.js";import"./chunk-DKXUY5F2.js";import"./chunk-3RKBXWZS.js";import{a as t}from"./chunk-V4WSBIXB.js";var n=null;function f(e){n=e}t(f,"bindAskUserForConstruction");function d(e){return e.content?.capabilities?.tools??[]}t(d,"readDeclaredTools");var u=t(async e=>{if(!n)return"reject";let o=d(e),r=o.length>0?o.join(", "):"<none>";return await n({question:`Activate constructed tool ${e.name}@${e.version}?
3
3
  It declares capabilities.tools = [${r}].`,options:[{label:"Approve \u2014 register and make callable",description:"The tool will be added to the active tool registry and the LLM can invoke it on the next turn.",value:"approve"},{label:"Reject \u2014 do not register",description:"The artifact stays staged on disk; rerun activate_tool to retry.",value:"reject"}]})==="approve"?"approve":"reject"},"replConstructionPolicy"),p=t(async e=>{if(!n)return"reject";let o=e.llmSummary.flaggedConcerns.length>0?e.llmSummary.flaggedConcerns.map(l=>` \u2022 ${l}`).join(`
4
4
  `):" \u2022 <none>",r=e.prevContent.instructions??"<no instructions>",s=e.nextContent.instructions??"<no instructions>",c=[`Self-modify activation: ${e.agentName}@${e.fromVersion} \u2192 ${e.toVersion}`,"",`LLM diff summary (severity=${e.llmSummary.severity}):`,` ${e.llmSummary.summary}`,"","Flagged concerns:",o,"",`Budget remaining (after approve): ${e.budgetRemaining-1}/${e.budgetLimit}`,"","\u2500\u2500 Previous instructions \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500",r,"\u2500\u2500 Proposed instructions \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500",s,"\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500","","The LLM summary is advisory \u2014 read the proposed instructions above before approving."].join(`
5
5
  `);return await n({question:c,options:[{label:"Approve \u2014 activate the new version on the next run",description:"Resolver swap is deferred to the next Runner.run boundary so the in-flight conversation keeps the prior reference.",value:"approve"},{label:"Reject \u2014 stay on the previous version",description:"Budget is not consumed on rejection; the staged version is left on disk for diff inspection.",value:"reject"}]})==="approve"?"approve":"reject"},"replSelfModifyAskUser");async function g(e){return i({cwd:e,policy:u,selfModifyAskUser:p}),a()}t(g,"bootstrapConstructionRuntime");export{f as bindAskUserForConstruction,g as bootstrapConstructionRuntime};
@@ -0,0 +1,2 @@
1
+ // @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
2
+ import{$ as ib,$a as hc,$b as hd,$c as he,$d as qf,A as Ja,Aa as Jb,Ab as Ic,Ac as Id,Ad as Qe,B as Ka,Ba as Kb,Bb as Jc,Bc as Jd,Bd as Re,C as La,Ca as Lb,Cb as Kc,Cc as Kd,Cd as Se,D as Ma,Da as Mb,Db as Lc,Dc as Ld,Dd as Te,E as Na,Ea as Nb,Eb as Mc,Ec as Md,Ed as Ue,F as Oa,Fa as Ob,Fb as Nc,Fc as Nd,Fd as Ve,G as Pa,Ga as Pb,Gb as Oc,Gc as Od,Gd as We,H as Qa,Ha as Qb,Hb as Pc,Hc as Pd,Hd as Xe,I as Ra,Ia as Rb,Ib as Qc,Ic as Qd,Id as Ye,J as Sa,Ja as Sb,Jb as Rc,Jc as Rd,Jd as Ze,K as Ta,Ka as Tb,Kb as Sc,Kc as Sd,Kd as _e,L as Ua,La as Ub,Lb as Tc,Lc as Td,Ld as $e,M as Va,Ma as Vb,Mb as Uc,Mc as Ud,Md as af,N as Wa,Na as Wb,Nb as Vc,Nc as Vd,Nd as bf,O as Xa,Oa as Xb,Ob as Wc,Oc as Wd,Od as cf,P as Ya,Pb as Xc,Pc as Xd,Pd as df,Q as Za,Qa as Yb,Qb as Yc,Qc as Yd,Qd as ef,R as _a,Ra as Zb,Rb as Zc,Rc as Zd,Rd as ff,S as $a,Sa as _b,Sb as _c,Sc as _d,Sd as gf,T as ab,Ta as $b,Tb as $c,Tc as $d,Td as hf,U as bb,Ua as ac,Ub as ad,Uc as ae,Ud as jf,V as cb,Va as bc,Vb as bd,Vc as be,Vd as kf,W as db,Wa as cc,Wb as cd,Wc as ce,Wd as lf,X as eb,Xa as dc,Xb as dd,Xc as de,Xd as mf,Y as fb,Ya as ec,Yb as ed,Yc as ee,Yd as nf,Z as gb,Za as fc,Zb as fd,Zc as fe,Zd as of,_ as hb,_a as gc,_b as gd,_c as ge,_d as pf,a as O,aa as jb,ab as ic,ac as id,ad as ie,ae as rf,b as P,ba as kb,bb as jc,bc as jd,bd as je,be as sf,c as Q,ca as lb,cb as kc,cc as kd,cd as ke,ce as tf,d as R,da as mb,db as lc,dc as ld,dd as le,de as uf,e as S,ea as nb,eb as mc,ec as md,ed as me,ee as vf,f as oa,fa as ob,fb as nc,fc as nd,fd as ne,fe as wf,g as pa,ga as pb,gb as oc,gc as od,gd as oe,ge as xf,h as qa,ha as qb,hb as pc,hc as pd,hd as pe,he as yf,i as ra,ia as rb,ib as qc,ic as qd,id as qe,ie as zf,j as sa,ja as sb,jb as rc,jc as rd,jd as ze,k as ta,ka as tb,kb as sc,kc as sd,kd as Ae,l as ua,la as ub,lb as tc,lc as td,ld as Be,m as va,ma as vb,mb as uc,mc as ud,md as Ce,n as wa,na as wb,nb as vc,nc as vd,nd as De,o as xa,oa as xb,ob as wc,oc as wd,od as Ee,p as ya,pa as yb,pb as xc,pc as xd,pd as Fe,q as za,qa as zb,qb as yc,qc as yd,qd as Ge,r as Aa,ra as Ab,rb as zc,rc as zd,rd as He,s as Ba,sa as Bb,sb as Ac,sc as Ad,sd as Ie,t as Ca,ta as Cb,tb as Bc,tc as Bd,td as Je,u as Da,ua as Db,ub as Cc,uc as Cd,ud as Ke,v as Ea,va as Eb,vb as Dc,vc as Dd,vd as Le,w as Fa,wa as Fb,wb as Ec,wc as Ed,wd as Me,x as Ga,xa as Gb,xb as Fc,xc as Fd,xd as Ne,y as Ha,ya as Hb,yb as Gc,yc as Gd,yd as Oe,z as Ia,za as Ib,zb as Hc,zc as Hd,zd as Pe}from"./chunk-7JLYVWAF.js";import{La as ma,Ma as na,Z as ga,a as T,aa as ha,b as U,c as V,d as W,e as X,f as Y,h as Z,ha as ia,i as _,ia as ja,j as $,ja as ka,k as aa,ka as la,l as ba,m as ca,n as da,o as ea,p as fa}from"./chunk-CD3R5YBH.js";import{$ as A,C as k,I as l,J as m,O as n,P as o,Q as p,R as q,S as r,T as s,U as t,V as u,W as v,X as w,Y as x,Z as y,_ as z,a,aa as B,b,ba as C,c,ca as D,da as E,ea as F,fa as G,ga as H,ha as I,ia as J,j as d,ja as K,ka as L,la as M,ma as N,t as e,u as f,v as g,w as h,x as i,y as j}from"./chunk-HMYEQJGT.js";import"./chunk-OWSKU55I.js";import{d as re,e as se,f as te,g as ue,h as ve,i as we,j as xe,k as ye}from"./chunk-DKXUY5F2.js";import"./chunk-3RKBXWZS.js";import"./chunk-V4WSBIXB.js";export{bf as AUTO_MODE_DENIAL_CONSECUTIVE_THRESHOLD,cf as AUTO_MODE_DENIAL_CUMULATIVE_THRESHOLD,xf as BASH_POLICY_SPEC,hf as BREAKER_ERROR_THRESHOLD,jf as BREAKER_WINDOW_MS,pa as CANCELLED_TOOL_RESULT_MESSAGE,oa as CANCELLED_TOOL_RESULT_PREFIX,Te as CODING_AGENTS,Pe as CODING_AGENT_MARKER,Wd as CODING_INVARIANTS,Ld as CODING_SUMMARY_PROMPT,Md as CODING_UPDATE_SUMMARY_PROMPT,cc as CapabilityDeniedError,Yd as Client,dc as ConstructionManifestError,Nd as DEFAULT_CODING_AGENT_NAME,He as DEFAULT_DANGEROUS_PATTERNS,ac as DEFAULT_HANDLER_TIMEOUT_MS,td as DEFAULT_RESILIENCE_CONFIG,Ge as DEFAULT_SAFE_PATTERNS,xc as DEFAULT_SELF_MODIFY_BUDGET,tf as DEFAULT_SPECULATIVE_WINDOW_MS,ra as DEFAULT_TOOL_OUTPUT_MAX_BYTES,qa as DEFAULT_TOOL_OUTPUT_MAX_LINES,fa as DefaultSummaryCompaction,ie as EMIT_CONTRACT_TOOL_NAME,je as EMIT_HANDOFF_TOOL_NAME,he as EMIT_SCOUT_VERDICT_TOOL_NAME,ke as EMIT_VERDICT_TOOL_NAME,R as ErrorCategory,gc as GENERATOR_AGENT_NAME,_ as KODAX_API_MIN_INTERVAL,p as KODAX_DEFAULT_PROVIDER,U as KODAX_DEFAULT_TIMEOUT,V as KODAX_HARD_TIMEOUT,Y as KODAX_MAX_INCOMPLETE_RETRIES,W as KODAX_MAX_RETRIES,T as KODAX_MAX_TOKENS,o as KODAX_PROVIDERS,n as KODAX_PROVIDER_SNAPSHOTS,d as KODAX_REASONING_MODE_SEQUENCE,X as KODAX_RETRY_BASE_DELAY,Z as KODAX_STAGGER_DELAY,Qc as KODAX_TOOLS,l as KodaXAnthropicCompatProvider,k as KodaXBaseProvider,Yd as KodaXClient,a as KodaXError,Yb as KodaXExtensionRuntime,m as KodaXOpenAICompatProvider,b as KodaXProviderError,c as KodaXRateLimitError,P as KodaXSessionError,Q as KodaXTerminalError,O as KodaXToolError,Eb as LINEAGE_ENTRY_TYPES,Gb as LineageCompaction,Fb as LineageExtension,ye as McpCapabilityProvider,xe as McpServerRuntime,fc as PLANNER_AGENT_NAME,$ as PROMISE_PATTERN,hd as PROMPT_SECTION_REGISTRY,pe as PROTOCOL_EMITTER_TOOLS,yd as ProviderRecoveryCoordinator,sa as READ_DEFAULT_LIMIT,ua as READ_MAX_LINE_CHARS,ta as READ_PREFLIGHT_SIZE_BYTES,Ya as REPOINTEL_DEFAULT_ENDPOINT,ha as Runner,ec as SCOUT_AGENT_NAME,gd as SYSTEM_PROMPT,wd as StableBoundaryTracker,kc as TASK_ENGINE_ROLE_AGENTS,fe as TOOL_RESULT_TRUNCATION_GUARDRAIL_NAME,Ec as _resetRuntimeForTesting,Hc as activate,Pa as analyzeChangedScope,vc as appendAuditEntry,Ob as appendSessionLineageLabel,be as applyFanoutBranchTransition,Pb as applySessionCompaction,ob as applyToolResultGuardrail,Vb as archiveOldIslands,ce as assignFanoutBranchWorker,gf as autoModeDenialShouldFallback,qf as bashSignalCollector,Sd as boundedRevise,mf as breakerShouldFallback,Td as budgetCeiling,Hd as buildAmaControllerDecision,md as buildCapabilityContextSections,Ue as buildClassifierPrompt,Fd as buildFallbackRoutingDecision,_d as buildFanoutSchedulerPlan,sc as buildLlmReviewPrompt,qd as buildPromptMessageContent,Id as buildPromptOverlay,ld as buildPromptSnapshot,zd as buildProviderCapabilitySnapshot,Gd as buildProviderPolicyHintsForDecision,Ad as buildProviderPolicyPromptNotes,g as buildReasoningOverrideKey,Oa as buildRepoIntelligenceContext,bb as buildRepoIntelligenceIndex,La as buildRepoOverview,Tb as buildSessionTree,od as buildSystemPrompt,nd as buildSystemPromptSnapshot,pf as checkAbsoluteDeny,pd as checkIncompleteToolCalls,Kd as checkPromiseSignal,We as classify,Je as classifyBashCommand,S as classifyError,vd as classifyResilienceError,na as cleanupIncompleteToolCalls,j as clearReasoningOverride,K as clearRuntimeModelProviders,sf as collectAllSignals,Le as computeInputSignature,Xe as computeRulesFingerprint,Dc as configureRuntime,sb as convertCapabilityReadResult,rb as convertProviderSearchResults,ae as countActiveFanoutBranches,Ub as countActiveLineageMessages,ba as countTokens,ca as createAgent,df as createAutoModeDenialTracker,wf as createAutoModeToolGuardrail,Ie as createBashClassifierConfig,zf as createBashPrefixExtractor,Yc as createBuiltinToolDefinition,kf as createCircuitBreaker,oc as createCtxProxy,z as createCustomProvider,Od as createDefaultCodingAgent,Ke as createDenialTracker,Zb as createExtensionRuntime,Zd as createFanoutSchedulerInput,da as createHandoff,ea as createInMemorySession,Ce as createKodaXTaskRunner,se as createMcpCapabilityId,we as createMcpTransport,id as createPromptSection,Jd as createReasoningPlan,Qd as createSessionControl,Jb as createSessionLineage,ge as createToolResultTruncationGuardrail,re as defaultMcpCacheDir,bc as defaultPolicy,Cc as disableSelfModify,nc as drainPendingSwaps,me as emitContract,ne as emitHandoff,le as emitScoutVerdict,oe as emitVerdict,aa as estimateTokens,Bd as evaluateProviderPolicy,Cb as exec,fd as executeTool,Wb as extractArtifactLedger,yf as extractCommandPrefix,sd as extractComparableUserMessageText,qb as extractHtmlTitle,rd as extractPromptComparableText,Ib as extractTitleFromMessages,rf as fileSignalCollector,ub as finalizeRetrievalResult,Nc as findByVersion,Qb as findPreviousUserEntryId,Sb as forkSessionLineage,Bb as formatAgentsForPrompt,Ee as formatParallelDispatchResult,va as formatSize,Hb as generateSessionId,jc as generatorAgent,Se as generatorCodingAgent,$b as getActiveExtensionRuntime,ja as getAgentConfigHome,ka as getAgentConfigPath,_c as getAllRegisteredTools,la as getAppDataDir,N as getAvailableProviderNames,Xc as getBuiltinRegisteredToolDefinition,Wc as getBuiltinToolDefinition,B as getCustomProvider,E as getCustomProviderList,F as getCustomProviderModels,D as getCustomProviderNames,Oe as getDenialContext,$d as getFanoutBranch,gb as getImpactEstimate,zb as getKodaxGlobalDir,ve as getMcpCachePaths,db as getModuleContext,fb as getProcessContext,q as getProvider,u as getProviderConfiguredCapabilityProfile,t as getProviderConfiguredReasoningCapability,v as getProviderList,s as getProviderModel,w as getProviderModels,Uc as getRegisteredToolDefinition,cb as getRepoIntelligenceIndex,Ma as getRepoOverview,hb as getRepoRoutingSignals,cd as getRequiredToolParams,H as getRuntimeModelProvider,J as getRuntimeModelProviderNames,Kb as getSessionLineagePath,Lb as getSessionMessagesFromLineage,eb as getSymbolContext,Sc as getTool,Tc as getToolDefinition,Vc as getToolRegistrations,nb as getToolResultPolicy,mc as hasPendingSwap,Ed as inferTaskType,Ea as inspectEditFailure,$a as inspectRepoIntelligenceRuntime,C as isCustomProviderName,Ne as isDeniedRecently,M as isKnownProvider,De as isParallelDispatchDirective,r as isProviderConfigured,x as isProviderName,I as isRuntimeModelProviderName,ad as isToolFileMutation,bd as isToolMutation,$c as isToolPlanModeAllowed,Oc as listAll,Kc as listArtifacts,Zc as listBuiltinToolDefinitions,Mc as listConstructed,ed as listToolDefinitions,dd as listTools,Ab as loadAgentsFiles,$e as loadAutoRules,pc as loadHandler,h as loadReasoningOverride,ee as markFanoutBranchCancelled,de as markFanoutBranchCompleted,Xb as mergeArtifactLedger,jd as orderPromptSections,_e as parseAutoRules,Ve as parseClassifierOutput,Da as parseEditToolError,tc as parseLlmReviewVerdict,te as parseMcpCapabilityId,nf as parseModelSpec,za as persistToolOutput,ic as plannerAgent,Re as plannerCodingAgent,ib as prewarmRepoIntelligenceCaches,Lc as readArtifact,wc as readAuditEntries,yc as readBudget,Bc as readDisableState,uf as readSpeculativeWindowFromEnv,Ye as readTrustState,e as reasoningCapabilityToOverride,Dd as reasoningModeToDepth,f as reasoningOverrideToCapability,xd as reconstructMessagesWithToolGuard,ff as recordAutoModeAllow,ef as recordAutoModeBlock,lf as recordBreakerError,Me as recordDenial,Xd as registerCodingInvariants,ze as registerConfiguredMcpCapabilityProvider,A as registerCustomProviders,G as registerModelProvider,Ae as registerOfficialSandboxExtension,ga as registerPresetDispatcher,Rc as registerTool,Ic as rehydrateActiveArtifacts,zc as remainingSelfModifyBudget,Qa as renderChangedScope,Xa as renderImpactEstimate,Ua as renderModuleContext,Wa as renderProcessContext,kd as renderPromptSections,Na as renderRepoOverview,tb as renderRetrievalResult,Va as renderSymbolContext,Ac as resetBudget,of as resolveClassifierModel,lc as resolveConstructedAgent,L as resolveProvider,Cd as resolveReasoningMode,_a as resolveRepoIntelligenceMode,Za as resolveRepoIntelligenceRuntimeConfig,ud as resolveResilienceConfig,Mb as resolveSessionLineageTarget,Ud as resolveToolCapability,Jc as revoke,Rb as rewindSessionLineage,Pc as rollbackSelfModify,qc as runAstRules,Pd as runKodaX,uc as runLlmReview,qe as runManagedTask,Be as runOrchestration,i as saveReasoningOverride,hc as scoutAgent,Qe as scoutCodingAgent,ue as searchMcpCatalog,_b as setActiveExtensionRuntime,ia as setAgentConfigHome,Nb as setSessionLineageActiveEntry,vf as speculativeRace,Fc as stage,Rd as startKodaX,af as stripAssistantText,pb as stripHtmlToText,Gc as testArtifact,Ka as toolAskUserQuestion,Ga as toolBash,Ta as toolChangedDiff,Sa as toolChangedScope,xb as toolCodeSearch,Ca as toolEdit,Ha as toolGlob,Ia as toolGrep,mb as toolImpactEstimate,Fa as toolInsertAfterAnchor,jb as toolModuleContext,Vd as toolPermission,lb as toolProcessContext,Aa as toolRead,Ra as toolRepoOverview,yb as toolSemanticLookup,kb as toolSymbolContext,Ja as toolUndo,wb as toolWebFetch,vb as toolWebSearch,Ba as toolWrite,wa as truncateHead,ya as truncateLine,xa as truncateTail,Ze as trustProjectRules,ma as validateAndFixToolHistory,y as validateCustomProviderConfig,Fe as validateSubtaskIndependence,rc as validateToolSchemaForProvider,ab as warmRepoIntelligenceRuntime,Db as webhook};
@@ -0,0 +1,2 @@
1
+ // @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
2
+ import{$,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,_,a,aa,b,ba,c,ca,d,da,e,ea,f,fa,g,ga,h,ha,i,ia,j,ja,k,ka,l,la,m,ma,n,na,o,oa,p,pa,q,qa,r,ra,s,sa,t,ta,u,ua,v,va,w,wa,x,y,z}from"./chunk-HMYEQJGT.js";import"./chunk-V4WSBIXB.js";export{na as DEFAULT_COST_RATES,i as KODAX_API_MIN_INTERVAL,g as KODAX_CAPPED_MAX_OUTPUT_TOKENS,Q as KODAX_DEFAULT_PROVIDER,k as KODAX_DEFAULT_THINKING_BUDGETS,h as KODAX_ESCALATED_MAX_OUTPUT_TOKENS,f as KODAX_MAX_TOKENS,P as KODAX_PROVIDERS,O as KODAX_PROVIDER_SNAPSHOTS,j as KODAX_REASONING_MODE_SEQUENCE,l as KODAX_REASONING_SAFETY_RESERVE,I as KodaXAnthropicCompatProvider,C as KodaXBaseProvider,a as KodaXError,d as KodaXNetworkError,J as KodaXOpenAICompatProvider,b as KodaXProviderError,c as KodaXRateLimitError,e as KodaXToolCallIdError,v as buildReasoningOverrideKey,pa as calculateCost,r as clampThinkingBudget,y as clearReasoningOverride,ja as clearRuntimeModelProviders,qa as createCostTracker,_ as createCustomProvider,A as extractHeadersFromError,ua as formatCost,va as formatCostReport,ma as getAvailableProviderNames,K as getCodexCliDefaultModel,M as getCodexCliKnownModels,oa as getCostRate,aa as getCustomProvider,da as getCustomProviderList,ea as getCustomProviderModels,ca as getCustomProviderNames,p as getDefaultThinkingDepthForMode,L as getGeminiCliDefaultModel,N as getGeminiCliKnownModels,R as getProvider,V as getProviderConfiguredCapabilityProfile,U as getProviderConfiguredReasoningCapability,W as getProviderList,T as getProviderModel,X as getProviderModels,m as getReasoningCapability,ga as getRuntimeModelProvider,ia as getRuntimeModelProviderNames,ta as getSummary,E as insertCacheBoundary,F as isCacheBoundary,ba as isCustomProviderName,la as isKnownProvider,S as isProviderConfigured,Y as isProviderName,n as isReasoningEnabled,ha as isRuntimeModelProviderName,w as loadReasoningOverride,G as lowerCacheBoundaries,s as mapDepthToOpenAIReasoningEffort,B as normalizeCapabilityProfile,o as normalizeReasoningRequest,z as parseRetryAfter,D as parseToolInputWithSalvage,t as reasoningCapabilityToOverride,u as reasoningOverrideToCapability,ra as recordRetry,sa as recordUsage,$ as registerCustomProviders,fa as registerModelProvider,ka as resolveProvider,q as resolveThinkingBudget,x as saveReasoningOverride,wa as sideQuery,H as stripCacheBoundaries,Z as validateCustomProviderConfig};
@@ -0,0 +1,2 @@
1
+ // @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
2
+ import{A as z,B as A,C as B,D as C,b as a,c as b,d as c,e as d,f as e,g as f,h as g,i as h,j as i,k as j,l as k,m as l,n as m,o as n,p as o,q as p,r as q,s as r,t as s,u as t,v as u,w as v,x as w,y as x,z as y}from"./chunk-KUX5LRPP.js";import"./chunk-7JLYVWAF.js";import"./chunk-CD3R5YBH.js";import"./chunk-HMYEQJGT.js";import"./chunk-OWSKU55I.js";import"./chunk-DKXUY5F2.js";import"./chunk-3RKBXWZS.js";import"./chunk-V4WSBIXB.js";export{c as KODAX_CONFIG_FILE,a as KODAX_DIR,b as KODAX_SESSIONS_DIR,i as KODAX_VERSION,d as PREVIEW_MAX_LENGTH,p as describeProviderCapabilitySummary,r as describeReasoningCapabilityControl,s as describeReasoningExecution,A as formatProviderCapabilityDetailLines,z as formatProviderSourceKind,q as formatReasoningCapabilityShort,y as getGitRoot,k as getProviderAvailableModels,m as getProviderCapabilityProfile,n as getProviderCapabilitySnapshot,B as getProviderCommonPolicyScenarios,t as getProviderList,j as getProviderModel,o as getProviderPolicyDecision,l as getProviderReasoningCapability,h as getVersion,e as hydrateProcessEnvFromShell,u as isProviderConfigured,v as loadConfig,w as prepareRuntimeConfig,C as rateLimitedCall,g as registerConfiguredCustomProviders,f as resetShellEnvironmentHydrationForTesting,x as saveConfig};
package/dist/index.d.ts CHANGED
@@ -1,10 +1,240 @@
1
+ import { D as KodaXReasoningMode } from './types-chunks/types.d-B1uGoVTE.js';
2
+ export { K as KodaXAmaControllerDecision, a as KodaXAmaFanoutClass, b as KodaXAmaFanoutPolicy, c as KodaXAmaProfile, d as KodaXAmaTactic, g as KodaXContentBlock, h as KodaXCustomProviderConfig, i as KodaXExecutionMode, l as KodaXImageBlock, m as KodaXMessage, n as KodaXModelDescriptor, p as KodaXProtocolFamily, q as KodaXProviderCapabilityProfile, r as KodaXProviderConfig, t as KodaXProviderConversationSemantics, w as KodaXProviderMcpSupport, z as KodaXProviderStreamOptions, B as KodaXProviderTransport, C as KodaXReasoningCapability, E as KodaXReasoningOverride, F as KodaXReasoningRequest, G as KodaXRedactedThinkingBlock, H as KodaXReviewScale, I as KodaXRiskLevel, J as KodaXStreamResult, M as KodaXTaskBudgetOverrides, P as KodaXTaskRoutingDecision, Q as KodaXTaskType, S as KodaXTextBlock, T as KodaXThinkingBlock, U as KodaXThinkingBudgetMap, V as KodaXThinkingDepth, W as KodaXTokenUsage, X as KodaXToolDefinition, Y as KodaXToolResultBlock, a0 as KodaXToolUseBlock } from './types-chunks/types.d-B1uGoVTE.js';
3
+ export { K as KODAX_DEFAULT_PROVIDER, b as KODAX_PROVIDERS, c as KODAX_PROVIDER_SNAPSHOTS, d as KODAX_REASONING_MODE_SEQUENCE, f as KodaXAnthropicCompatProvider, g as KodaXError, i as KodaXOpenAICompatProvider, j as KodaXProviderError, k as KodaXRateLimitError, P as ProviderName, m as buildReasoningOverrideKey, o as clearReasoningOverride, p as clearRuntimeModelProviders, q as createCustomProvider, r as getAvailableProviderNames, s as getCustomProvider, t as getCustomProviderList, u as getCustomProviderModels, v as getCustomProviderNames, x as getProvider, y as getProviderConfiguredCapabilityProfile, z as getProviderConfiguredReasoningCapability, C as getProviderModels, E as getRuntimeModelProvider, F as getRuntimeModelProviderNames, G as isCustomProviderName, H as isKnownProvider, J as isProviderName, M as isRuntimeModelProviderName, N as loadReasoningOverride, R as reasoningCapabilityToOverride, S as reasoningOverrideToCapability, T as registerCustomProviders, U as registerModelProvider, V as resolveProvider, X as saveReasoningOverride, Y as validateCustomProviderConfig } from './types-chunks/resolver.d-DX9au4NJ.js';
4
+ export { K as KodaXBaseProvider } from './types-chunks/cost-tracker.d-B6vMoLLF.js';
5
+ export { C as CapabilityKind, a as CapabilityProvider, b as CapabilityResult } from './types-chunks/capability.d-3C62G8Eq.js';
6
+ export { C as AUTO_MODE_DENIAL_CONSECUTIVE_THRESHOLD, n as AUTO_MODE_DENIAL_CUMULATIVE_THRESHOLD, A as AgentsFile, a as AskUserMultiOptions, b as AskUserQuestionItem, c as AskUserQuestionOptions, d as AutoModeAskUser, e as AutoModeAskUserVerdict, D as AutoModeDenialTracker, f as AutoModeEngine, g as AutoModeGuardrailConfig, h as AutoModeSharedState, i as AutoModeStats, j as AutoModeToolGuardrail, k as AutoRules, B as BASH_POLICY_SPEC, E as BREAKER_ERROR_THRESHOLD, aS as BREAKER_WINDOW_MS, l as BashPrefixExtractor, m as BashPrefixResult, o as CircuitBreaker, p as CompactionAnchor, r as CompactionResult, s as CompactionUpdate, t as CreateBashPrefixExtractorOptions, v as ExtractCommandPrefixOptions, F as FailureStage, K as KodaXAgentMode, w as KodaXBudgetDisclosureZone, x as KodaXBudgetExtensionRequest, y as KodaXChildAgentResult, z as KodaXChildContextBundle, G as KodaXContextOptions, H as KodaXContextTokenSnapshot, I as KodaXEvents, J as KodaXFanoutBranchLifecycle, L as KodaXFanoutBranchRecord, M as KodaXFanoutBranchTransition, N as KodaXFanoutSchedulerInput, O as KodaXFanoutSchedulerPlan, P as KodaXInputArtifact, Q as KodaXManagedBudgetSnapshot, S as KodaXManagedTask, T as KodaXManagedTaskRuntimeState, U as KodaXManagedTaskStatusEvent, V as KodaXMcpConnectMode, W as KodaXMcpServerConfig, X as KodaXMcpServersConfig, Y as KodaXMcpTransport, Z as KodaXMemoryStrategy, _ as KodaXOptions, $ as KodaXOrchestrationVerdict, a0 as KodaXParentReductionContract, a1 as KodaXProviderPolicyHints, a2 as KodaXRepoIntelligenceCapability, a3 as KodaXRepoIntelligenceMode, a4 as KodaXRepoIntelligenceResolvedMode, a5 as KodaXRepoIntelligenceTrace, a6 as KodaXRepoIntelligenceTraceEvent, a7 as KodaXRepoRoutingSignals, a8 as KodaXResult, a9 as KodaXRoleRoundSummary, aa as KodaXRuntimeVerificationContract, ab as KodaXSessionControl, ac as KodaXSessionMutators, ad as KodaXSessionOptions, ae as KodaXSkillInvocationContext, af as KodaXSkillMap, ag as KodaXSkillProjectionConfidence, ah as KodaXTaskCapabilityHint, ai as KodaXTaskContract, aj as KodaXTaskEvidenceArtifact, ak as KodaXTaskEvidenceBundle, al as KodaXTaskEvidenceEntry, am as KodaXTaskRole, an as KodaXTaskRoleAssignment, ao as KodaXTaskStatus, ap as KodaXTaskSurface, aq as KodaXTaskToolPolicy, ar as KodaXTaskVerificationContract, as as KodaXTaskVerificationCriterion, at as KodaXTaskWorkItem, au as KodaXToolExecutionContext, av as KodaXVerificationScorecard, aw as KodaXVerificationScorecardCriterion, ax as LoadAgentsOptions, ay as LoadedRulesSource, az as ProviderExecutionState, aA as ProviderRecoveryEvent, aB as ProviderResilienceConfig, aC as ProviderResiliencePolicy, aD as RecoveryAction, aE as RecoveryDecision, aF as RecoveryLadderStep, aG as RecoveryResult, aH as ResilienceClassification, aI as ResilienceErrorClass, aJ as RulesLoadError, aK as RulesLoadResult, aL as SignalCollector, aM as SkippedRulesSource, aN as TodoItem, aO as TodoList, aP as TodoStatus, aQ as ToolCallSignal, aR as TrustState, b7 as autoModeDenialShouldFallback, b8 as breakerShouldFallback, aT as collectAllSignals, aU as computeRulesFingerprint, aY as createAutoModeDenialTracker, aV as createAutoModeToolGuardrail, aW as createBashPrefixExtractor, aX as createCircuitBreaker, aZ as extractCommandPrefix, a_ as formatAgentsForPrompt, a$ as getKodaxGlobalDir, b0 as loadAgentsFiles, b1 as loadAutoRules, b2 as parseAutoRules, b3 as readTrustState, b4 as recordAutoModeAllow, b5 as recordAutoModeBlock, b6 as recordBreakerError, b9 as trustProjectRules } from './types-chunks/bash-prefix-extractor.d-CkhaqKkg.js';
7
+ export { AbsoluteDenyMatch, AbsoluteDenyMiss, AbsoluteDenyResult, AgentArtifact, ArtifactStatus, AstCheckResult, AstRuleId, AstRuleViolation, AuditEntry, AuditEventKind, BashClassificationResult, BashClassifierConfig, BashRiskLevel, BudgetState, BuildClassifierPromptInput, BuildPromptInput, CANCELLED_TOOL_RESULT_MESSAGE, CANCELLED_TOOL_RESULT_PREFIX, CODING_AGENTS, CODING_AGENT_MARKER, CODING_INVARIANTS, CODING_SUMMARY_PROMPT, CODING_UPDATE_SUMMARY_PROMPT, Capabilities, CapabilityDeniedError, ChangedFileEntry, ChangedFileStatus, ChangedScopeAreaSummary, ChangedScopeReport, ClassifierDecision, ClassifierPrompt, ClassifyDecision, ClassifyOptions, Client, ConstructionArtifact, ConstructionManifestError, ConstructionPolicy, ConstructionPolicyVerdict, CreateCtxProxyOptions, CreateKodaXTaskRunnerOptions, DEFAULT_CODING_AGENT_NAME, DEFAULT_DANGEROUS_PATTERNS, DEFAULT_HANDLER_TIMEOUT_MS, DEFAULT_RESILIENCE_CONFIG, DEFAULT_SAFE_PATTERNS, DEFAULT_SELF_MODIFY_BUDGET, DEFAULT_SPECULATIVE_WINDOW_MS, DEFAULT_TOOL_OUTPUT_MAX_BYTES, DEFAULT_TOOL_OUTPUT_MAX_LINES, DenialRecord, DenialTracker, DisableState, EMIT_CONTRACT_TOOL_NAME, EMIT_HANDOFF_TOOL_NAME, EMIT_SCOUT_VERDICT_TOOL_NAME, EMIT_VERDICT_TOOL_NAME, EditRecoveryDiagnostic, EditToolErrorCode, ErrorCategory, ErrorClassification, ExecOptions, ExecResult, ExtensionCommandContext, ExtensionCommandDefinition, ExtensionCommandInvocation, ExtensionCommandResult, ExtensionContributionSource, ExtensionEventMap, ExtensionFailureDiagnostic, ExtensionFailureStage, ExtensionHookMap, ExtensionLoadSource, ExtensionLogger, ExtensionRuntimeController, ExtensionRuntimeDiagnostics, ExtensionToolBeforeHookContext, GENERATOR_AGENT_NAME, ImpactEstimateResult, KODAX_TOOLS, KodaXAgentWorkerSpec, Client as KodaXClient, KodaXExtensionAPI, KodaXExtensionActivationResult, KodaXExtensionModule, KodaXExtensionRuntime, KodaXPromptSection, KodaXPromptSectionDefinition, KodaXPromptSectionSlot, KodaXPromptSectionStability, KodaXPromptSnapshot, KodaXPromptSnapshotMetadata, KodaXProviderCapabilitySnapshot, KodaXProviderPolicyDecision, KodaXProviderPolicyIssue, KodaXProviderPolicyIssueSeverity, KodaXProviderSourceKind, KodaXRetrievalArtifact, KodaXRetrievalFreshness, KodaXRetrievalItem, KodaXRetrievalResult, KodaXRetrievalScope, KodaXRetrievalToolName, KodaXRetrievalTrust, KodaXSessionError, KodaXTerminalError, KodaXToolError, LINEAGE_ENTRY_TYPES, LanguageCapabilityTier, LineageArtifactLedgerPayload, LineageCompaction, LineageCompactionDelegates, LineageEntryType, LineageExtension, LineageLabelPayload, LineageTreeNode, LlmReviewClient, LlmReviewResult, LlmReviewVerdict, LoadHandlerOptions, LoadHandlerScope, LoadedExtensionDiagnostic, LocalToolDefinition, ModelProviderRegistration, ModuleCapsule, ModuleContextResult, OfficialSandboxMode, OfficialSandboxOptions, OrchestrationArtifact, OrchestrationCompletedTask, OrchestrationRunEvents, OrchestrationRunOptions, OrchestrationRunResult, OrchestrationTaskBudget, OrchestrationTaskContext, OrchestrationTaskExecution, OrchestrationTaskStatus, OrchestrationTraceEvent, OrchestrationWorkerResult, OrchestrationWorkerRunner, OrchestrationWorkerSpec, PLANNER_AGENT_NAME, PROMPT_SECTION_REGISTRY, PROTOCOL_EMITTER_TOOLS, ParallelDispatchDirective, ParallelDispatchResult, ParallelSubtask, ParsedModelSpec, ProcessCapsule, ProcessContextResult, ProcessStep, ProtocolEmitterMetadata, ProviderRecoveryCoordinator, READ_DEFAULT_LIMIT, READ_MAX_LINE_CHARS, READ_PREFLIGHT_SIZE_BYTES, REPOINTEL_DEFAULT_ENDPOINT, RegisteredCapabilityProviderDiagnostic, RegisteredCommandDiagnostic, RegisteredHookDiagnostic, RegisteredToolDefinition, RegisteredToolDiagnostic, RepoAreaKind, RepoAreaOverview, RepoIntelligenceIndex, RepoIntelligenceRuntimeInspection, RepoIntelligenceRuntimeWarmResult, RepoLanguageId, RepoLanguageSupport, RepoOverview, RepoSymbolKind, RepoSymbolRecord, RepoSymbolReference, ResolveClassifierModelOptions, ResolveSource, ResolvedClassifierModel, RollbackResult, RunningSession, SCOUT_AGENT_NAME, SYSTEM_PROMPT, SchemaProvider, SchemaValidationResult, ScriptSource, SelfModifyAskUser, SelfModifyAskUserInput, SelfModifyDiffSeverity, SelfModifyDiffSummary, SpeculativeResult, StableBoundaryTracker, StagedHandle, StripOptions, SymbolContextResult, TASK_ENGINE_ROLE_AGENTS, TOOL_RESULT_TRUNCATION_GUARDRAIL_NAME, TestArtifactOptions, TestResult, TierZeroPatternId, ToolContent, ToolDefinitionSource, ToolHandler, ToolRegistrationOptions, ToolRegistry, ToolSideEffect, WebhookOptions, WebhookResult, _resetRuntimeForTesting, activate, analyzeChangedScope, appendAuditEntry, appendSessionLineageLabel, applyFanoutBranchTransition, applySessionCompaction, applyToolResultGuardrail, archiveOldIslands, assignFanoutBranchWorker, bashSignalCollector, boundedRevise, budgetCeiling, buildAmaControllerDecision, buildCapabilityContextSections, buildClassifierPrompt, buildFallbackRoutingDecision, buildFanoutSchedulerPlan, buildLlmReviewPrompt, buildPromptMessageContent, buildPromptOverlay, buildPromptSnapshot, buildProviderCapabilitySnapshot, buildProviderPolicyHintsForDecision, buildProviderPolicyPromptNotes, buildRepoIntelligenceContext, buildRepoIntelligenceIndex, buildRepoOverview, buildSessionTree, buildSystemPrompt, buildSystemPromptSnapshot, checkAbsoluteDeny, checkIncompleteToolCalls, checkPromiseSignal, classify, classifyBashCommand, classifyError, classifyResilienceError, computeInputSignature, configureRuntime, convertCapabilityReadResult, convertProviderSearchResults, countActiveFanoutBranches, countActiveLineageMessages, createBashClassifierConfig, createBuiltinToolDefinition, createCtxProxy, createDefaultCodingAgent, createDenialTracker, createExtensionRuntime, createFanoutSchedulerInput, createKodaXTaskRunner, createPromptSection, createReasoningPlan, createSessionControl, createSessionLineage, createToolResultTruncationGuardrail, defaultPolicy, disableSelfModify, drainPendingSwaps, emitContract, emitHandoff, emitScoutVerdict, emitVerdict, evaluateProviderPolicy, exec, executeTool, extractArtifactLedger, extractComparableUserMessageText, extractHtmlTitle, extractPromptComparableText, extractTitleFromMessages, fileSignalCollector, finalizeRetrievalResult, findByVersion, findPreviousUserEntryId, forkSessionLineage, formatParallelDispatchResult, formatSize, generateSessionId, generatorAgent, generatorCodingAgent, getActiveExtensionRuntime, getAllRegisteredTools, getBuiltinRegisteredToolDefinition, getBuiltinToolDefinition, getDenialContext, getFanoutBranch, getImpactEstimate, getModuleContext, getProcessContext, getRegisteredToolDefinition, getRepoIntelligenceIndex, getRepoOverview, getRepoRoutingSignals, getRequiredToolParams, getSessionLineagePath, getSessionMessagesFromLineage, getSymbolContext, getTool, getToolDefinition, getToolRegistrations, getToolResultPolicy, hasPendingSwap, inferTaskType, inspectEditFailure, inspectRepoIntelligenceRuntime, isDeniedRecently, isParallelDispatchDirective, isToolFileMutation, isToolMutation, isToolPlanModeAllowed, listAll, listArtifacts, listBuiltinToolDefinitions, listConstructed, listToolDefinitions, listTools, loadHandler, markFanoutBranchCancelled, markFanoutBranchCompleted, mergeArtifactLedger, orderPromptSections, parseClassifierOutput, parseEditToolError, parseLlmReviewVerdict, parseModelSpec, persistToolOutput, plannerAgent, plannerCodingAgent, prewarmRepoIntelligenceCaches, readArtifact, readAuditEntries, readBudget, readDisableState, readSpeculativeWindowFromEnv, reasoningModeToDepth, reconstructMessagesWithToolGuard, recordDenial, registerCodingInvariants, registerConfiguredMcpCapabilityProvider, registerOfficialSandboxExtension, registerTool, rehydrateActiveArtifacts, remainingSelfModifyBudget, renderChangedScope, renderImpactEstimate, renderModuleContext, renderProcessContext, renderPromptSections, renderRepoOverview, renderRetrievalResult, renderSymbolContext, resetBudget, resolveClassifierModel, resolveConstructedAgent, resolveReasoningMode, resolveRepoIntelligenceMode, resolveRepoIntelligenceRuntimeConfig, resolveResilienceConfig, resolveSessionLineageTarget, resolveToolCapability, revoke, rewindSessionLineage, rollbackSelfModify, runAstRules, runKodaX, runLlmReview, runManagedTask, runOrchestration, scoutAgent, scoutCodingAgent, setActiveExtensionRuntime, setSessionLineageActiveEntry, speculativeRace, stage, startKodaX, stripAssistantText, stripHtmlToText, testArtifact, toolAskUserQuestion, toolBash, toolChangedDiff, toolChangedScope, toolCodeSearch, toolEdit, toolGlob, toolGrep, toolImpactEstimate, toolInsertAfterAnchor, toolModuleContext, toolPermission, toolProcessContext, toolRead, toolRepoOverview, toolSemanticLookup, toolSymbolContext, toolUndo, toolWebFetch, toolWebSearch, toolWrite, truncateHead, truncateLine, truncateTail, validateSubtaskIndependence, validateToolSchemaForProvider, warmRepoIntelligenceRuntime, webhook } from './sdk-coding.js';
8
+ export { K as KodaXCompactMemoryProgress, a as KodaXCompactMemorySeed, b as KodaXExtensionSessionRecord, c as KodaXExtensionSessionState, f as KodaXJsonValue, h as KodaXSessionArtifactLedgerEntry, i as KodaXSessionBranchSummaryEntry, j as KodaXSessionCompactionEntry, k as KodaXSessionData, l as KodaXSessionEntry, m as KodaXSessionEntryBase, n as KodaXSessionLabelEntry, o as KodaXSessionLineage, p as KodaXSessionMessageEntry, q as KodaXSessionMeta, r as KodaXSessionNavigationOptions, s as KodaXSessionRuntimeInfo, t as KodaXSessionScope, u as KodaXSessionStorage, v as KodaXSessionTreeNode, w as KodaXSessionUiHistoryItem, x as KodaXSessionUiHistoryItemType, y as KodaXSessionWorkspaceKind, S as SessionErrorMetadata } from './types-chunks/types.d-mM8vqvhT.js';
9
+ export { C as CompactionContext, e as CompactionEntry, f as CompactionEntryPayload, g as CompactionPolicy, h as DefaultSummaryCompaction, i as DefaultSummaryCompactionOptions, I as InMemorySessionOptions, K as KODAX_API_MIN_INTERVAL, n as KODAX_DEFAULT_TIMEOUT, o as KODAX_HARD_TIMEOUT, p as KODAX_MAX_INCOMPLETE_RETRIES, r as KODAX_MAX_RETRIES, s as KODAX_MAX_TOKENS, t as KODAX_RETRY_BASE_DELAY, u as KODAX_STAGGER_DELAY, v as MessageEntry, P as PROMISE_PATTERN, x as PresetDispatcher, B as RunEvent, E as RunOptions, F as RunResult, G as Runner, S as Session, L as SessionEntry, N as SessionExtension, T as SessionForkOptions, a2 as cleanupIncompleteToolCalls, a3 as countTokens, a4 as createInMemorySession, a7 as estimateTokens, aa as getAgentConfigHome, ab as getAgentConfigPath, ac as getAppDataDir, ad as registerPresetDispatcher, ag as setAgentConfigHome, ah as validateAndFixToolHistory } from './types-chunks/history-cleanup.d-DznrzEiU.js';
10
+ export { A as Agent, a as AgentMessage, c as AgentReasoningProfile, d as AgentTool, G as Guardrail, H as Handoff, R as ReasoningDepth, Q as createAgent, U as createHandoff } from './types-chunks/instance-discovery.d-BsKnIwpg.js';
11
+ export { M as McpConnectMode, a as McpServerConfig, b as McpServersConfig, c as McpTransportKind } from './types-chunks/config.d-BfJUXxC0.js';
12
+ export { M as McpCapabilityDescriptor, a as McpCapabilityKind, b as McpCapabilityProvider, c as McpCapabilityRisk, d as McpCatalogItem, e as McpProviderOptions, f as McpServerCatalogSnapshot, g as McpServerRuntime, h as McpServerRuntimeDiagnostics, i as McpTransport, j as McpTransportEvents, k as createMcpCapabilityId, l as createMcpTransport, m as defaultMcpCacheDir, n as getMcpCachePaths, p as parseMcpCapabilityId, s as searchMcpCatalog } from './types-chunks/transport.d-DuyjG30t.js';
13
+ import { Agent, AgentSideConnection, InitializeRequest, InitializeResponse, NewSessionRequest, NewSessionResponse, SetSessionModeRequest, SetSessionModeResponse, PromptRequest, PromptResponse } from '@agentclientprotocol/sdk';
14
+ import { F as FileSessionStorage } from './types-chunks/storage.d-Bc5DoAwp.js';
15
+ export { B as BUILTIN_COMMANDS, C as Command, a as CommandCallbacks, c as CurrentConfig, I as InkREPLOptions, d as InteractiveContext, K as KODAX_CONFIG_FILE, f as KODAX_DIR, g as KODAX_SESSIONS_DIR, h as KODAX_VERSION, R as RepLOptions, m as createInteractiveContext, n as executeCommand, o as getGitRoot, p as getProviderList, q as getProviderModel, r as getVersion, s as hydrateProcessEnvFromShell, u as isProviderConfigured, v as loadConfig, x as parseCommand, z as prepareRuntimeConfig, A as processSpecialSyntax, D as rateLimitedCall, E as registerConfiguredCustomProviders, G as runInkInteractiveMode, H as runInteractiveMode, J as saveConfig, L as touchContext } from './types-chunks/storage.d-Bc5DoAwp.js';
16
+ import '@anthropic-ai/sdk';
17
+ import 'openai';
18
+ import './types-chunks/session-storage.d-Cci897iM.js';
19
+ import 'readline';
20
+ import 'child_process';
21
+
22
+ type AcpRuntimeEvent = {
23
+ type: 'server_attached';
24
+ agent: string;
25
+ version: string;
26
+ provider: string;
27
+ model: string;
28
+ cwd: string;
29
+ permissionMode: string;
30
+ reasoningMode: string;
31
+ thinking: boolean;
32
+ fixedCwd: boolean;
33
+ } | {
34
+ type: 'connection_closed';
35
+ activeSessions: number;
36
+ } | {
37
+ type: 'initialize_completed';
38
+ protocolVersion: number;
39
+ } | {
40
+ type: 'session_created';
41
+ sessionId: string;
42
+ cwd: string;
43
+ permissionMode: string;
44
+ mcpServers: number;
45
+ } | {
46
+ type: 'session_mode_changed';
47
+ sessionId: string;
48
+ from: string;
49
+ to: string;
50
+ } | {
51
+ type: 'prompt_skipped';
52
+ sessionId: string;
53
+ } | {
54
+ type: 'prompt_started';
55
+ sessionId: string;
56
+ messageId: string | null;
57
+ chars: number;
58
+ cwd: string;
59
+ queueDelayMs: number;
60
+ } | {
61
+ type: 'prompt_preview';
62
+ sessionId: string;
63
+ prompt: string;
64
+ } | {
65
+ type: 'prompt_finished';
66
+ sessionId: string;
67
+ stopReason: 'cancelled' | 'end_turn';
68
+ interrupted: boolean;
69
+ durationMs: number;
70
+ } | {
71
+ type: 'prompt_cancelled';
72
+ sessionId: string;
73
+ durationMs: number;
74
+ } | {
75
+ type: 'prompt_failed';
76
+ sessionId: string;
77
+ durationMs: number;
78
+ error: string;
79
+ } | {
80
+ type: 'cancel_requested';
81
+ sessionId: string;
82
+ active: boolean;
83
+ } | {
84
+ type: 'tool_permission_evaluated';
85
+ sessionId: string;
86
+ tool: string;
87
+ toolId: string | null;
88
+ permissionMode: string;
89
+ } | {
90
+ type: 'tool_permission_resolved';
91
+ sessionId: string;
92
+ tool: string;
93
+ toolId: string | null;
94
+ outcome: 'auto_allowed_read_only_bash' | 'auto_allowed_remembered' | 'blocked_plan_mode' | 'auto_allowed_plan_mode' | 'auto_allowed_policy' | 'request_failed_disconnected' | 'request_failed_incomplete' | 'request_dismissed' | 'request_rejected' | 'request_granted';
95
+ remember?: boolean;
96
+ } | {
97
+ type: 'permission_requested';
98
+ sessionId: string;
99
+ tool: string;
100
+ toolId: string;
101
+ } | {
102
+ type: 'notification_failed';
103
+ sessionId: string;
104
+ label: string;
105
+ error: string;
106
+ } | {
107
+ type: 'repo_intelligence_trace';
108
+ sessionId: string;
109
+ stage: 'routing' | 'preturn' | 'module' | 'impact' | 'task-snapshot';
110
+ summary: string;
111
+ mode?: string;
112
+ engine?: string;
113
+ bridge?: string;
114
+ status?: string;
115
+ daemonLatencyMs?: number;
116
+ cliLatencyMs?: number;
117
+ cacheHit?: boolean;
118
+ capsuleEstimatedTokens?: number;
119
+ };
120
+ interface AcpEventSink {
121
+ handleEvent(event: AcpRuntimeEvent): void;
122
+ }
123
+ interface AcpEventEmitterOptions {
124
+ sinks?: AcpEventSink[];
125
+ }
126
+ declare class AcpEventEmitter {
127
+ private readonly sinks;
128
+ constructor(options?: AcpEventEmitterOptions);
129
+ emit(event: AcpRuntimeEvent): void;
130
+ }
131
+
132
+ declare const ACP_LOG_LEVELS: readonly ["off", "error", "info", "debug"];
133
+ type AcpLogLevel = (typeof ACP_LOG_LEVELS)[number];
134
+ declare function resolveAcpLogLevel(value: string | undefined, fallback?: AcpLogLevel): AcpLogLevel;
135
+ interface AcpLoggerOptions {
136
+ level?: AcpLogLevel;
137
+ sink?: (line: string) => void;
138
+ }
139
+ type AcpLogFields = Record<string, string | number | boolean | null | undefined>;
140
+ declare class AcpLogger implements AcpEventSink {
141
+ private readonly level;
142
+ private readonly sink;
143
+ constructor(options?: AcpLoggerOptions);
144
+ handleEvent(event: AcpRuntimeEvent): void;
145
+ error(message: string, fields?: AcpLogFields): void;
146
+ info(message: string, fields?: AcpLogFields): void;
147
+ debug(message: string, fields?: AcpLogFields): void;
148
+ private log;
149
+ }
150
+
1
151
  /**
2
- * KodaX - 极致轻量化 Coding Agent
152
+ * Permission mode ids exposed to ACP clients. These are wire-protocol values
153
+ * advertised in `SessionMode.id`, so the set is intentionally narrower than
154
+ * the canonical `PermissionMode` from `@kodax-ai/repl`.
3
155
  *
4
- * 根入口文件 - 代理到 monorepo packages
156
+ * Why `'auto'` (canonical FEATURE_092 v0.7.33) is **not** here:
157
+ *
158
+ * 1. ACP's auto-mode classifier path requires an interactive `askUser`
159
+ * surface (the readline confirm prompt or Ink confirm dialog).
160
+ * `KodaXAcpServer` runs out-of-process and routes confirmations through
161
+ * `connection.requestPermission` — a different protocol that has no
162
+ * structural place for the classifier-escalate `<reason>` payload.
163
+ * 2. ACP clients that want auto-style behavior continue to use the
164
+ * legacy alias `'auto-in-project'`, which goes through
165
+ * `evaluateToolPermission` → `requestPermissionFromClient` (no LLM
166
+ * classifier, identical pre-v0.7.33 semantics).
167
+ * 3. Once an ACP-native classifier-escalate channel lands, `'auto'` will
168
+ * be added here as a third id without breaking existing clients.
5
169
  */
6
- export * from '@kodax-ai/coding';
7
- export { ACP_LOG_LEVELS, AcpLogger, resolveAcpLogLevel, type AcpLogLevel, } from './acp_logger.js';
8
- export { AcpEventEmitter, type AcpEventSink, type AcpRuntimeEvent, } from './acp_events.js';
9
- export { KodaXAcpServer, runAcpServer, type KodaXAcpServerOptions } from './acp_server.js';
10
- export { runInkInteractiveMode, type InkREPLOptions, runInteractiveMode, processSpecialSyntax, type RepLOptions, InteractiveContext, createInteractiveContext, touchContext, parseCommand, executeCommand, BUILTIN_COMMANDS, type Command, type CommandCallbacks, type CurrentConfig, getVersion, KODAX_VERSION, getProviderModel, getProviderList, isProviderConfigured, hydrateProcessEnvFromShell, loadConfig, prepareRuntimeConfig, registerConfiguredCustomProviders, saveConfig, getGitRoot, rateLimitedCall, KODAX_DIR, KODAX_SESSIONS_DIR, KODAX_CONFIG_FILE, FileSessionStorage, } from '@kodax-ai/repl';
170
+ declare const ACP_PERMISSION_MODE_IDS: readonly ["plan", "accept-edits", "auto-in-project"];
171
+ type AcpPermissionMode = (typeof ACP_PERMISSION_MODE_IDS)[number];
172
+ interface KodaXAcpServerOptions {
173
+ /** Provider name forwarded to the coding runtime. */
174
+ provider?: string;
175
+ /** Optional model override forwarded to the coding runtime. */
176
+ model?: string;
177
+ thinking?: boolean;
178
+ reasoningMode?: KodaXReasoningMode;
179
+ /**
180
+ * Default session working directory. When explicitly set on the server, it
181
+ * becomes the fixed execution cwd for all ACP sessions and overrides any
182
+ * client-provided session cwd.
183
+ */
184
+ cwd?: string;
185
+ permissionMode?: AcpPermissionMode;
186
+ logLevel?: AcpLogLevel;
187
+ /** Additional sinks that receive structured ACP runtime events. */
188
+ eventSinks?: AcpEventSink[];
189
+ agentName?: string;
190
+ agentVersion?: string;
191
+ storage?: FileSessionStorage;
192
+ }
193
+ declare class KodaXAcpServer implements Agent {
194
+ private readonly provider;
195
+ private readonly model?;
196
+ private readonly thinking;
197
+ private readonly reasoningMode;
198
+ private readonly defaultPermissionMode;
199
+ private readonly defaultCwd;
200
+ private readonly hasFixedCwd;
201
+ private readonly agentName;
202
+ private readonly agentVersion;
203
+ private readonly storage;
204
+ private readonly events;
205
+ /**
206
+ * FEATURE_153 (v0.7.38) — LLM-backed bash prefix extractor used by
207
+ * `isToolCallAllowed` to match allowlist patterns against the extracted
208
+ * safe prefix instead of naive `command.startsWith`. Server-scoped (one
209
+ * per `KodaXAcpServer` instance) so the LRU cache is shared across all
210
+ * sessions, mirroring the REPL's session-scoped pattern.
211
+ */
212
+ private readonly bashPrefixExtractor;
213
+ private connection;
214
+ private readonly sessions;
215
+ private promptQueue;
216
+ private extensionRuntime?;
217
+ private extensionRuntimeReady?;
218
+ constructor(options?: KodaXAcpServerOptions);
219
+ attach(input: ReadableStream<Uint8Array>, output: WritableStream<Uint8Array>): AgentSideConnection;
220
+ waitForClose(): Promise<void>;
221
+ initialize(_params: InitializeRequest): Promise<InitializeResponse>;
222
+ newSession(params: NewSessionRequest): Promise<NewSessionResponse>;
223
+ authenticate(): Promise<void>;
224
+ setSessionMode(params: SetSessionModeRequest): Promise<SetSessionModeResponse>;
225
+ prompt(params: PromptRequest): Promise<PromptResponse>;
226
+ cancel(params: {
227
+ sessionId: string;
228
+ }): Promise<void>;
229
+ private requireSession;
230
+ private buildKodaXOptions;
231
+ private evaluateToolPermission;
232
+ private requestPermissionFromClient;
233
+ private sendTextChunk;
234
+ private sendSessionUpdate;
235
+ private dispatchNotification;
236
+ }
237
+ declare function runAcpServer(options?: KodaXAcpServerOptions): Promise<void>;
238
+
239
+ export { ACP_LOG_LEVELS, AcpEventEmitter, AcpLogger, FileSessionStorage, KodaXAcpServer, KodaXReasoningMode, resolveAcpLogLevel, runAcpServer };
240
+ export type { AcpEventSink, AcpLogLevel, AcpRuntimeEvent, KodaXAcpServerOptions };
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{Qb as me,Rb as ge,Sb as w,X as x,_ as E,aa as L,ba as T,ca as O,da as q,ea as F,fa as K,ga as D,ka as ae,la as de,ma as le,nb as ce,ob as pe,yb as ue}from"./chunks/chunk-CLS57NPX.js";import{D as re,b as W,c as G,d as Q,f as H,h as J,i as Y,j as Z,k as ee,u as te,v as se,w as oe,x as A,y as ne,z as ie}from"./chunks/chunk-NDNILSTR.js";import"./chunks/chunk-FAVPT4P7.js";import"./chunks/chunk-EVIDQWMF.js";import{$ as Ls,$a as To,$b as Tn,$c as Ei,$d as xr,A as is,Aa as io,Ab as an,Ac as ii,Ad as or,B as rs,Ba as ro,Bb as dn,Bc as ri,Bd as nr,C as as,Ca as ao,Cb as ln,Cc as ai,Cd as ir,D as ds,Da as lo,Db as cn,Dc as di,Dd as rr,E as ls,Ea as co,Eb as pn,Ec as M,Ed as ar,F as cs,Fa as po,Fb as un,Fc as li,Fd as dr,G as ps,Ga as uo,Gb as mn,Gc as ci,Gd as lr,H as us,Ha as mo,Hb as gn,Hc as pi,Hd as cr,I as ms,Ia as go,Ib as fn,Ic as ui,Id as pr,J as gs,Ja as fo,Jb as hn,Jc as mi,Jd as ur,K as fs,Ka as ho,Kb as vn,Kc as gi,Kd as mr,L as hs,La as vo,Lb as yn,Lc as fi,Ld as gr,M as vs,Ma as yo,Mb as _n,Mc as hi,Md as fr,N as ys,Na as _o,Nb as In,Nc as vi,Nd as hr,O as _s,Oa as Io,Ob as An,Oc as yi,Od as vr,P as Is,Pa as Ao,Pb as wn,Pc as _i,Pd as yr,Q as As,Qa as wo,Qb as Sn,Qc as Ii,Qd as _r,R as ws,Ra as So,Rb as Cn,Rc as Ai,Rd as Ir,S as Ss,Sa as Co,Sb as Pn,Sc as wi,Sd as Ar,T as Cs,Ta as Po,Tb as bn,Tc as Si,Td as wr,U as Ps,Ua as bo,Ub as kn,Uc as Ci,Ud as Sr,V as bs,Va as ko,Vb as Mn,Vc as Pi,Vd as Cr,W as ks,Wa as Mo,Wb as Rn,Wc as bi,Wd as Pr,X as Ms,Xa as Ro,Xb as xn,Xc as ki,Xd as br,Y as Rs,Ya as xo,Yb as En,Yc as Mi,Yd as kr,Z as xs,Za as Eo,Zc as Ri,Zd as Mr,_ as Es,_a as Lo,_b as Ln,_c as xi,_d as Rr,a as gt,aa as Ts,ab as Oo,ac as On,ad as Li,ae as Er,b as ft,ba as Os,bb as qo,bc as qn,bd as Ti,be as Lr,c as ht,ca as qs,cb as Fo,cc as Fn,cd as Oi,ce as Tr,d as vt,da as Fs,db as Ko,dc as Kn,dd as qi,de as Or,e as yt,ea as Ks,eb as Do,ec as Dn,ed as Fi,ee as qr,f as Dt,fa as Ds,fb as Xo,fc as Xn,fd as Ki,fe as Fr,g as Xt,ga as Xs,gb as jo,gc as jn,gd as Di,ge as Kr,h as jt,ha as js,hb as Uo,hc as Un,hd as Xi,he as Dr,i as Ut,ia as Us,ib as Vo,ic as Vn,id as ji,ie as Xr,j as Vt,ja as Vs,jb as $o,jc as $n,jd as Ui,je as jr,k as $t,ka as $s,kb as zo,kc as zn,kd as Vi,ke as Ur,l as zt,la as zs,lb as Bo,lc as Bn,ld as $i,le as Vr,m as Bt,ma as Bs,mb as No,mc as Nn,md as zi,me as $r,n as Nt,na as Ns,nb as Wo,nc as Wn,nd as I,ne as R,o as Wt,oa as Ws,ob as Go,oc as Gn,od as Bi,p as Gt,pa as Gs,pb as Qo,pc as Qn,pd as Ni,q as Qt,qa as Qs,qb as Ho,qc as Hn,qd as Wi,r as Ht,ra as Hs,rb as Jo,rc as Jn,rd as Gi,s as Jt,sa as Js,sb as Yo,sc as Yn,sd as Qi,t as Yt,ta as Ys,tb as Zo,tc as Zn,td as Hi,u as Zt,ua as Zs,ub as en,uc as ei,ud as Ji,v as es,va as eo,vb as tn,vc as ti,vd as Yi,w as ts,wa as to,wb as sn,wc as si,wd as Zi,x as ss,xa as so,xb as on,xc as _,xd as er,y as os,ya as oo,yb as nn,yc as oi,yd as tr,z as ns,za as no,zb as rn,zc as ni,zd as sr}from"./chunks/chunk-QZEDWITG.js";import{Da as Ft,Ea as Kt,Z as Ot,a as _t,aa as qt,b as It,c as At,d as wt,e as St,f as Ct,h as Pt,i as bt,j as kt,k as Mt,l as Rt,m as xt,n as Et,o as Lt,p as Tt}from"./chunks/chunk-Z5EBDA6R.js";import"./chunks/chunk-EQ5DGS2W.js";import{$ as st,C as ze,I as Be,J as Ne,O as We,P as Ge,Q as b,R as Qe,U as He,V as Je,X as Ye,Y as Ze,Z as et,_ as tt,a as Oe,aa as ot,b as qe,ba as nt,c as Fe,ca as it,da as rt,ea as at,fa as dt,ga as lt,ha as ct,ia as pt,j as Ke,ja as k,ka as ut,la as mt,t as De,u as Xe,v as je,w as Ue,x as Ve,y as $e}from"./chunks/chunk-6QO6HWGU.js";import{a as r}from"./chunks/chunk-V4WSBIXB.js";import fe from"node:process";var j=["off","error","info","debug"],X={off:0,error:1,info:2,debug:3};function S(o,e="info"){if(!o)return e;let t=o.trim().toLowerCase();return j.includes(t)?t:e}r(S,"resolveAcpLogLevel");var m=class{static{r(this,"AcpLogger")}level;sink;constructor(e={}){this.level=e.level??"info",this.sink=e.sink??(t=>{fe.stderr.write(`${t}
3
- `)})}handleEvent(e){let t=he(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(X[this.level]<X[e])return;let n=new Date().toISOString(),i=s?ye(s):"",a=i?` ${i}`:"";this.sink(`[ACP][${e.toUpperCase()}][${n}] ${t}${a}`)}};function he(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 ve(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}}r(he,"mapEventToLogEntry");function c(o){let{type:e,...t}=o;return t}r(c,"toLogFields");function ve(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}}}}r(ve,"mapPermissionOutcomeToLogEntry");function ye(o){return Object.entries(o).flatMap(([e,t])=>t===void 0?[]:`${e}=${_e(t)}`).join(" ")}r(ye,"formatFields");function _e(o){return o===null?"null":typeof o=="string"?JSON.stringify(o.length>160?`${o.slice(0,157)}...`:o):String(o)}r(_e,"formatFieldValue");var g=class{static{r(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 U}from"node:crypto";import f from"node:path";import v from"node:process";import{Readable as Ie,Writable as Ae}from"node:stream";import{AgentSideConnection as we,PROTOCOL_VERSION as V,RequestError as h,ndJsonStream as Se}from"@agentclientprotocol/sdk";var N=["plan","accept-edits","auto-in-project"],C=new Set(["write","edit"]),Ce={read:"read",write:"edit",edit:"edit",undo:"edit",bash:"execute",grep:"search",glob:"search",think:"think",fetch:"fetch"},Pe=[{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 be(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}r(be,"convertAcpMcpServers");function ke(o,e="accept-edits"){return o&&N.includes(o)?o:e}r(ke,"normalizeAcpPermissionMode");function Me(o){if(o&&N.includes(o))return o;throw h.invalidParams({modeId:o},"Invalid session mode. Expected one of: plan, accept-edits, auto-in-project.")}r(Me,"parseSessionMode");function Re(o){return{availableModes:Pe,currentModeId:o}}r(Re,"buildModeState");function $(o){return Ce[o]??"other"}r($,"inferToolKind");function z(o,e){if(C.has(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=F(t);if(s.length>0)return s.map(n=>({path:n}))}}r(z,"inferToolLocations");function xe(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 i=s.resource;if(typeof i.text=="string"){e.push(i.text);continue}typeof i.uri=="string"&&e.push(`[Resource] ${i.uri}`)}}return e.join(`
2
+ import{Rb as ge,Sb as fe,X as E,_ as L,aa as T,ac as w,ba as O,ca as q,da as F,ea as K,fa as D,ga as X,ka as de,la as le,ma as ce,nb as pe,ob as ue,zb as me}from"./chunks/chunk-ZZ4KRK2B.js";import{D as ae,b as G,c as Q,d as H,f as J,h as Y,i as Z,j as ee,k as te,u as se,v as oe,w as ne,x as A,y as ie,z as re}from"./chunks/chunk-KUX5LRPP.js";import"./chunks/chunk-IYJ5EPRV.js";import"./chunks/chunk-EVIDQWMF.js";import{$ as Ds,$a as Ko,$b as Kn,$c as Fi,$d as $r,A as ps,Aa as uo,Ab as pn,Ac as ci,Ad as hr,B as us,Ba as mo,Bb as un,Bc as pi,Bd as vr,C as ms,Ca as go,Cb as mn,Cc as ui,Cd as yr,D as gs,Da as fo,Db as gn,Dc as mi,Dd as _r,E as fs,Ea as ho,Eb as fn,Ec as gi,Ed as Ir,F as hs,Fa as vo,Fb as hn,Fc as fi,Fd as Ar,G as vs,Ga as yo,Gb as vn,Gc as hi,Gd as wr,H as ys,Ha as _o,Hb as yn,Hc as R,Hd as Sr,I as _s,Ia as Io,Ib as _n,Ic as vi,Id as br,J as Is,Ja as Ao,Jb as In,Jc as yi,Jd as Pr,K as As,Ka as wo,Kb as An,Kc as _i,Kd as Cr,L as ws,La as So,Lb as wn,Lc as Ii,Ld as kr,M as Ss,Ma as bo,Mb as Sn,Mc as Ai,Md as Mr,N as bs,Na as Po,Nb as bn,Nc as wi,Nd as Rr,O as Ps,Oa as Co,Ob as Pn,Oc as Si,Od as xr,P as Cs,Pb as Cn,Pc as bi,Pd as Er,Q as ks,Qa as ko,Qb as kn,Qc as Pi,Qd as Lr,R as Ms,Ra as _,Rb as Mn,Rc as Ci,Rd as Tr,S as Rs,Sa as Mo,Sb as Rn,Sc as ki,Sd as Or,T as xs,Ta as Ro,Tb as xn,Tc as Mi,Td as qr,U as Es,Ua as xo,Ub as M,Uc as Ri,Ud as Fr,V as Ls,Va as Eo,Vb as En,Vc as xi,Vd as Kr,W as Ts,Wa as Lo,Wb as Ln,Wc as Ei,Wd as Dr,X as Os,Xa as To,Xb as Tn,Xc as Li,Xd as Xr,Y as qs,Ya as Oo,Yb as On,Yc as Ti,Yd as jr,Z as Fs,Za as qo,Zb as qn,Zc as Oi,Zd as Ur,_ as Ks,_a as Fo,_b as Fn,_c as qi,_d as Vr,a as ht,aa as Xs,ab as Do,ac as Dn,ad as Ki,ae as zr,b as vt,ba as js,bb as Xo,bc as Xn,bd as Di,be as Br,c as yt,ca as Us,cb as jo,cc as jn,cd as Xi,ce as Wr,d as _t,da as Vs,db as Uo,dc as Un,dd as ji,de as Nr,e as It,ea as $s,eb as Vo,ec as Vn,ed as Ui,ee as Gr,f as zt,fa as zs,fb as $o,fc as $n,fd as Vi,fe as Qr,g as Bt,ga as Bs,gb as zo,gc as zn,gd as $i,ge as Hr,h as Wt,ha as Ws,hb as Bo,hc as Bn,hd as zi,he as Jr,i as Nt,ia as Ns,ib as Wo,ic as Wn,id as Bi,ie as x,j as Gt,ja as Gs,jb as No,jc as Nn,jd as I,k as Qt,ka as Qs,kb as Go,kc as Gn,kd as er,l as Ht,la as Hs,lb as Qo,lc as Qn,ld as tr,m as Jt,ma as Js,mb as Ho,mc as Hn,md as sr,n as Yt,na as Ys,nb as Jo,nc as Jn,nd as or,o as Zt,oa as Zs,ob as Yo,oc as Yn,od as nr,p as es,pa as eo,pb as Zo,pc as Zn,pd as ir,q as ts,qa as to,qb as en,qc as ei,qd as rr,r as ss,ra as so,rb as tn,rc as ti,rd as ar,s as os,sa as oo,sb as sn,sc as si,sd as dr,t as ns,ta as no,tb as on,tc as oi,td as lr,u as is,ua as io,ub as nn,uc as ni,ud as cr,v as rs,va as ro,vb as rn,vc as ii,vd as pr,w as as,wa as ao,wb as an,wc as ri,wd as ur,x as ds,xa as lo,xb as dn,xc as ai,xd as mr,y as ls,ya as co,yb as ln,yc as di,yd as gr,z as cs,za as po,zb as cn,zc as li,zd as fr}from"./chunks/chunk-7JLYVWAF.js";import{La as Vt,Ma as $t,Z as Ft,a as At,aa as Kt,b as wt,c as St,d as bt,e as Pt,f as Ct,h as kt,ha as Dt,i as Mt,ia as Xt,j as Rt,ja as jt,k as xt,ka as Ut,l as Et,m as Lt,n as Tt,o as Ot,p as qt}from"./chunks/chunk-CD3R5YBH.js";import{$ as ot,C as Be,I as We,J as Ne,O as Ge,P as Qe,Q as C,R as He,U as Je,V as Ye,X as Ze,Y as et,Z as tt,_ as st,a as qe,aa as nt,b as Fe,ba as it,c as Ke,ca as rt,da as at,ea as dt,fa as lt,ga as ct,ha as pt,ia as ut,j as De,ja as mt,ka as k,la as gt,ma as ft,t as Xe,u as je,v as Ue,w as Ve,x as $e,y as ze}from"./chunks/chunk-HMYEQJGT.js";import"./chunks/chunk-OWSKU55I.js";import{d as Wi,e as Ni,f as Gi,g as Qi,h as Hi,i as Ji,j as Yi,k as Zi}from"./chunks/chunk-DKXUY5F2.js";import"./chunks/chunk-3RKBXWZS.js";import{a as i}from"./chunks/chunk-V4WSBIXB.js";import he from"node:process";var U=["off","error","info","debug"],j={off:0,error:1,info:2,debug:3};function S(o,e="info"){if(!o)return e;let t=o.trim().toLowerCase();return U.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=>{he.stderr.write(`${t}
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,s){if(j[this.level]<j[e])return;let n=new Date().toISOString(),r=s?_e(s):"",a=r?` ${r}`:"";this.sink(`[ACP][${e.toUpperCase()}][${n}] ${t}${a}`)}};function ve(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 ye(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(ve,"mapEventToLogEntry");function c(o){let{type:e,...t}=o;return t}i(c,"toLogFields");function ye(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(ye,"mapPermissionOutcomeToLogEntry");function _e(o){return Object.entries(o).flatMap(([e,t])=>t===void 0?[]:`${e}=${Ie(t)}`).join(" ")}i(_e,"formatFields");function Ie(o){return o===null?"null":typeof o=="string"?JSON.stringify(o.length>160?`${o.slice(0,157)}...`:o):String(o)}i(Ie,"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 V}from"node:crypto";import f from"node:path";import v from"node:process";import{Readable as Ae,Writable as we}from"node:stream";import{AgentSideConnection as Se,PROTOCOL_VERSION as $,RequestError as h,ndJsonStream as be}from"@agentclientprotocol/sdk";var N=["plan","accept-edits","auto-in-project"];function b(o){return M(o)}i(b,"acpIsFileModificationTool");var Pe={read:"read",write:"edit",edit:"edit",undo:"edit",bash:"execute",grep:"search",glob:"search",think:"think",fetch:"fetch"},Ce=[{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 ke(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(ke,"convertAcpMcpServers");function Me(o,e="accept-edits"){return o&&N.includes(o)?o:e}i(Me,"normalizeAcpPermissionMode");function Re(o){if(o&&N.includes(o))return o;throw h.invalidParams({modeId:o},"Invalid session mode. Expected one of: plan, accept-edits, auto-in-project.")}i(Re,"parseSessionMode");function xe(o){return{availableModes:Ce,currentModeId:o}}i(xe,"buildModeState");function z(o){return Pe[o]??"other"}i(z,"inferToolKind");function B(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=K(t);if(s.length>0)return s.map(n=>({path:n}))}}i(B,"inferToolLocations");function Ee(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()}r(xe,"extractPromptText");function Ee(o){return/^\[(?:Tool Error|Cancelled|Blocked|Error)\]/.test(o)}r(Ee,"isToolResultFailure");function Le(o){return o instanceof Error?o.name==="AbortError"||o.message.includes("aborted")||o.message.includes("ABORTED"):!1}r(Le,"isAbortLikeError");function B(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}:{}}}r(B,"toAcpUsage");var y=class{static{r(this,"KodaXAcpServer")}provider;model;thinking;reasoningMode;defaultPermissionMode;defaultCwd;hasFixedCwd;agentName;agentVersion;storage;events;bashPrefixExtractor;connection=null;sessions=new Map;promptQueue=Promise.resolve();extensionRuntime;extensionRuntimeReady;constructor(e={}){let t=A();this.provider=e.provider??t.provider??b,this.model=e.model,this.thinking=e.thinking??t.thinking??!1,this.reasoningMode=e.reasoningMode??t.reasoningMode??"auto",this.defaultPermissionMode=ke(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=R({getProvider:r(()=>k(this.provider),"getProvider"),getModel:r(()=>this.model??"","getModel")});let s=t.mcpServers;if(s&&Object.values(s).some(i=>(i.connect??"lazy")!=="disabled")){let i=_({config:t});this.extensionRuntimeReady=I(i,s).then(()=>{i.activate(),this.extensionRuntime=i}).catch(a=>{let d=a instanceof Error?a.message:String(a);console.warn(`[kodax:acp] MCP initialization failed: ${d}`)})}}attach(e,t){let s=Se(t,e),n=new we(()=>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",()=>{this.sessions.forEach(i=>{i.activeController?.abort(),i.extensionRuntime?.dispose()}),this.events.emit({type:"connection_closed",activeSessions:this.sessions.size}),this.sessions.clear(),this.connection=null,this.extensionRuntime?.dispose(),this.extensionRuntime=void 0}),n}async waitForClose(){await this.connection?.closed}async initialize(e){return this.events.emit({type:"initialize_completed",protocolVersion:V}),{protocolVersion:V,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=U(),n=e.mcpServers??[],i={sessionId:s,cwd:f.resolve(t),permissionMode:this.defaultPermissionMode,mcpServers:n,alwaysAllowTools:[],activeController:null};if(n.length>0){let a=be(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(),i.extensionRuntime=d}return this.sessions.set(s,i),this.events.emit({type:"session_created",sessionId:s,cwd:i.cwd,permissionMode:i.permissionMode,mcpServers:i.mcpServers.length}),{sessionId:s,modes:Re(i.permissionMode)}}async authenticate(){}async setSessionMode(e){let t=this.requireSession(e.sessionId),s=t.permissionMode,n=Me(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=xe(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 i=Date.now(),a=r(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-i}),this.events.emit({type:"prompt_preview",sessionId:t.sessionId,prompt:s});try{this.extensionRuntimeReady&&await this.extensionRuntimeReady;let l=await M(this.buildKodaXOptions(t,n.signal),s);t.contextTokenSnapshot=l.contextTokenSnapshot;let u=!!l.interrupted,P=n.signal.aborted||u?"cancelled":"end_turn";return this.events.emit({type:"prompt_finished",sessionId:t.sessionId,stopReason:P,interrupted:u,durationMs:Date.now()-p}),{stopReason:P,userMessageId:e.messageId??void 0,...B(l.contextTokenSnapshot)?{usage:B(l.contextTokenSnapshot)}:{}}}catch(l){if(n.signal.aborted||Le(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(Ee,"extractPromptText");function Le(o){return/^\[(?:Tool Error|Cancelled|Blocked|Error)\]/.test(o)}i(Le,"isToolResultFailure");function Te(o){return o instanceof Error?o.name==="AbortError"||o.message.includes("aborted")||o.message.includes("ABORTED"):!1}i(Te,"isAbortLikeError");function W(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(W,"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;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=x({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 Se(()=>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",()=>{this.sessions.forEach(r=>{r.activeController?.abort(),r.extensionRuntime?.dispose()}),this.events.emit({type:"connection_closed",activeSessions:this.sessions.size}),this.sessions.clear(),this.connection=null,this.extensionRuntime?.dispose(),this.extensionRuntime=void 0}),n}async waitForClose(){await this.connection?.closed}async initialize(e){return this.events.emit({type:"initialize_completed",protocolVersion:$}),{protocolVersion:$,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=V(),n=e.mcpServers??[],r={sessionId:s,cwd:f.resolve(t),permissionMode:this.defaultPermissionMode,mcpServers:n,alwaysAllowTools:[],activeController:null};if(n.length>0){let a=ke(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:xe(r.permissionMode)}}async authenticate(){}async setSessionMode(e){let t=this.requireSession(e.sessionId),s=t.permissionMode,n=Re(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=Ee(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 R(this.buildKodaXOptions(t,n.signal),s);t.contextTokenSnapshot=l.contextTokenSnapshot;let u=!!l.interrupted,P=n.signal.aborted||u?"cancelled":"end_turn";return this.events.emit({type:"prompt_finished",sessionId:t.sessionId,stopReason:P,interrupted:u,durationMs:Date.now()-p}),{stopReason:P,userMessageId:e.messageId??void 0,...W(l.contextTokenSnapshot)?{usage:W(l.contextTokenSnapshot)}:{}}}catch(l){if(n.signal.aborted||Te(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:r(s=>{this.dispatchNotification("assistant text chunk",e.sessionId,this.sendTextChunk(e.sessionId,s))},"onTextDelta"),onThinkingDelta:r(s=>{this.dispatchNotification("thinking chunk",e.sessionId,this.sendSessionUpdate({sessionId:e.sessionId,update:{sessionUpdate:"agent_thought_chunk",content:{type:"text",text:s}}}))},"onThinkingDelta"),onToolUseStart:r(s=>{this.dispatchNotification("tool call start",e.sessionId,this.sendSessionUpdate({sessionId:e.sessionId,update:{sessionUpdate:"tool_call",toolCallId:s.id,title:s.name,kind:$(s.name),rawInput:s.input,locations:z(s.name,s.input??{}),status:"pending"}}))},"onToolUseStart"),onToolResult:r(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:Ee(s.content)?"failed":"completed",rawOutput:s.content}}))},"onToolResult"),onRepoIntelligenceTrace:r(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:r(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:z(s.name),rawInput:s.input,locations:B(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:Le(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:r(async(s,n,i)=>{let a=await this.evaluateToolPermission(e,s,n,i?.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(E(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 L(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=D(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 i=C.has(t)&&typeof s.path=="string"&&O(f.resolve(e.cwd,s.path),e.cwd),a=x(e.permissionMode).has(t),d=e.permissionMode==="auto-in-project"&&(C.has(t)&&typeof s.path=="string"&&!q(s.path,e.cwd)||t==="bash"&&typeof s.command=="string"&&K(s.command,e.cwd).dangerous);return!i&&!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 i=[{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??U(),title:t,kind:$(t),rawInput:s,locations:z(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:i})}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,T(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 i=n instanceof Error?n.message:String(n);this.events.emit({type:"notification_failed",sessionId:t,label:e,error:i})})}};async function Te(o={}){let e=new y(o),t=Ie.toWeb(v.stdin),s=Ae.toWeb(v.stdout);e.attach(t,s),await e.waitForClose()}r(Te,"runAcpServer");export{j as ACP_LOG_LEVELS,Ar as AUTO_MODE_DENIAL_CONSECUTIVE_THRESHOLD,wr as AUTO_MODE_DENIAL_CUMULATIVE_THRESHOLD,g as AcpEventEmitter,m as AcpLogger,Vr as BASH_POLICY_SPEC,kr as BREAKER_ERROR_THRESHOLD,Mr as BREAKER_WINDOW_MS,ae as BUILTIN_COMMANDS,Xt as CANCELLED_TOOL_RESULT_MESSAGE,Dt as CANCELLED_TOOL_RESULT_PREFIX,pr as CODING_AGENTS,rr as CODING_AGENT_MARKER,gi as CODING_INVARIANTS,ii as CODING_SUMMARY_PROMPT,ri as CODING_UPDATE_SUMMARY_PROMPT,Zs as CapabilityDeniedError,hi as Client,eo as ConstructionManifestError,ai as DEFAULT_CODING_AGENT_NAME,Yi as DEFAULT_DANGEROUS_PATTERNS,Js as DEFAULT_HANDLER_TIMEOUT_MS,Fn as DEFAULT_RESILIENCE_CONFIG,Ji as DEFAULT_SAFE_PATTERNS,So as DEFAULT_SELF_MODIFY_BUDGET,Dr as DEFAULT_SPECULATIVE_WINDOW_MS,Ut as DEFAULT_TOOL_OUTPUT_MAX_BYTES,jt as DEFAULT_TOOL_OUTPUT_MAX_LINES,Tt as DefaultSummaryCompaction,bi as EMIT_CONTRACT_TOOL_NAME,ki as EMIT_HANDOFF_TOOL_NAME,Pi as EMIT_SCOUT_VERDICT_TOOL_NAME,Mi as EMIT_VERDICT_TOOL_NAME,no as EVALUATOR_AGENT_NAME,vt as ErrorCategory,w as FileSessionStorage,oo as GENERATOR_AGENT_NAME,bt as KODAX_API_MIN_INTERVAL,Q as KODAX_CONFIG_FILE,b as KODAX_DEFAULT_PROVIDER,It as KODAX_DEFAULT_TIMEOUT,W as KODAX_DIR,At as KODAX_HARD_TIMEOUT,Ct as KODAX_MAX_INCOMPLETE_RETRIES,wt as KODAX_MAX_RETRIES,_t as KODAX_MAX_TOKENS,Ge as KODAX_PROVIDERS,We as KODAX_PROVIDER_SNAPSHOTS,Ke as KODAX_REASONING_MODE_SEQUENCE,St as KODAX_RETRY_BASE_DELAY,G as KODAX_SESSIONS_DIR,Pt as KODAX_STAGGER_DELAY,Vo as KODAX_TOOLS,Z as KODAX_VERSION,y as KodaXAcpServer,Be as KodaXAnthropicCompatProvider,ze as KodaXBaseProvider,hi as KodaXClient,Oe as KodaXError,si as KodaXExtensionRuntime,Ne as KodaXOpenAICompatProvider,qe as KodaXProviderError,Fe as KodaXRateLimitError,ft as KodaXSessionError,ht as KodaXTerminalError,gt as KodaXToolError,un as LINEAGE_ENTRY_TYPES,gn as LineageCompaction,mn as LineageExtension,zi as McpCapabilityProvider,$i as McpServerRuntime,so as PLANNER_AGENT_NAME,kt as PROMISE_PATTERN,on as PROMPT_SECTION_REGISTRY,Ti as PROTOCOL_EMITTER_TOOLS,Un as ProviderRecoveryCoordinator,Vt as READ_DEFAULT_LIMIT,zt as READ_MAX_LINE_CHARS,$t as READ_PREFLIGHT_SIZE_BYTES,Is as REPOINTEL_DEFAULT_ENDPOINT,qt as Runner,to as SCOUT_AGENT_NAME,sn as SYSTEM_PROMPT,Xn as StableBoundaryTracker,co as TASK_ENGINE_ROLE_AGENTS,Oi as TOOL_RESULT_TRUNCATION_GUARDRAIL_NAME,xo as _resetRuntimeForTesting,To as activate,ps as analyzeChangedScope,Ao as appendAuditEntry,wn as appendSessionLineageLabel,Ai as applyFanoutBranchTransition,Sn as applySessionCompaction,Ks as applyToolResultGuardrail,Rn as archiveOldIslands,wi as assignFanoutBranchWorker,br as autoModeDenialShouldFallback,qr as bashSignalCollector,li as boundedRevise,Er as breakerShouldFallback,ci as budgetCeiling,Hn as buildAmaControllerDecision,ln as buildCapabilityContextSections,ur as buildClassifierPrompt,Gn as buildFallbackRoutingDecision,yi as buildFanoutSchedulerPlan,yo as buildLlmReviewPrompt,Tn as buildPromptMessageContent,Jn as buildPromptOverlay,dn as buildPromptSnapshot,Vn as buildProviderCapabilitySnapshot,Qn as buildProviderPolicyHintsForDecision,$n as buildProviderPolicyPromptNotes,je as buildReasoningOverrideKey,cs as buildRepoIntelligenceContext,Ps as buildRepoIntelligenceIndex,as as buildRepoOverview,kn as buildSessionTree,pn as buildSystemPrompt,cn as buildSystemPromptSnapshot,Or as checkAbsoluteDeny,Ln as checkIncompleteToolCalls,Zn as checkPromiseSignal,gr as classify,er as classifyBashCommand,yt as classifyError,Dn as classifyResilienceError,Kt as cleanupIncompleteToolCalls,$e as clearReasoningOverride,pt as clearRuntimeModelProviders,Kr as collectAllSignals,sr as computeInputSignature,fr as computeRulesFingerprint,Ro as configureRuntime,Us as convertCapabilityReadResult,js as convertProviderSearchResults,Ii as countActiveFanoutBranches,Mn as countActiveLineageMessages,Rt as countTokens,xt as createAgent,Sr as createAutoModeDenialTracker,Ur as createAutoModeToolGuardrail,Zi as createBashClassifierConfig,R as createBashPrefixExtractor,Ho as createBuiltinToolDefinition,Rr as createCircuitBreaker,go as createCtxProxy,et as createCustomProvider,di as createDefaultCodingAgent,tr as createDenialTracker,_ as createExtensionRuntime,vi as createFanoutSchedulerInput,Et as createHandoff,Lt as createInMemorySession,ce as createInteractiveContext,Wi as createKodaXTaskRunner,Di as createMcpCapabilityId,Vi as createMcpTransport,nn as createPromptSection,Yn as createReasoningPlan,vn as createSessionLineage,qi as createToolResultTruncationGuardrail,Ki as defaultMcpCacheDir,Ys as defaultPolicy,Mo as disableSelfModify,mo as drainPendingSwaps,xi as emitContract,Ei as emitHandoff,Ri as emitScoutVerdict,Li as emitVerdict,Mt as estimateTokens,zn as evaluateProviderPolicy,lo as evaluatorAgent,cr as evaluatorCodingAgent,ei as exec,le as executeCommand,tn as executeTool,xn as extractArtifactLedger,$r as extractCommandPrefix,qn as extractComparableUserMessageText,Xs as extractHtmlTitle,On as extractPromptComparableText,hn as extractTitleFromMessages,Fr as fileSignalCollector,$s as finalizeRetrievalResult,Xo as findByVersion,Cn as findPreviousUserEntryId,bn as forkSessionLineage,Hs as formatAgentsForPrompt,Qi as formatParallelDispatchResult,Bt as formatSize,fn as generateSessionId,ao as generatorAgent,lr as generatorCodingAgent,ni as getActiveExtensionRuntime,mt as getAvailableProviderNames,Qo as getBuiltinRegisteredToolDefinition,Go as getBuiltinToolDefinition,st as getCustomProvider,it as getCustomProviderList,rt as getCustomProviderModels,nt as getCustomProviderNames,ir as getDenialContext,_i as getFanoutBranch,ie as getGitRoot,xs as getImpactEstimate,Gs as getKodaxGlobalDir,Ui as getMcpCachePaths,ks as getModuleContext,Rs as getProcessContext,Qe as getProvider,Je as getProviderConfiguredCapabilityProfile,He as getProviderConfiguredReasoningCapability,te as getProviderList,ee as getProviderModel,Ye as getProviderModels,No as getRegisteredToolDefinition,bs as getRepoIntelligenceIndex,ds as getRepoOverview,Es as getRepoRoutingSignals,Yo as getRequiredToolParams,dt as getRuntimeModelProvider,ct as getRuntimeModelProviderNames,yn as getSessionLineagePath,_n as getSessionMessagesFromLineage,Ms as getSymbolContext,zo as getTool,Bo as getToolDefinition,Wo as getToolRegistrations,Fs as getToolResultPolicy,Y as getVersion,uo as hasPendingSwap,H as hydrateProcessEnvFromShell,pi as independentReview,Wn as inferTaskType,es as inspectEditFailure,Ss as inspectRepoIntelligenceRuntime,ot as isCustomProviderName,nr as isDeniedRecently,ut as isKnownProvider,Gi as isParallelDispatchDirective,se as isProviderConfigured,Ze as isProviderName,lt as isRuntimeModelProviderName,jo as listAll,Fo as listArtifacts,Jo as listBuiltinToolDefinitions,Do as listConstructed,en as listToolDefinitions,Zo as listTools,Qs as loadAgentsFiles,_r as loadAutoRules,oe as loadConfig,fo as loadHandler,Ue as loadReasoningOverride,Ci as markFanoutBranchCancelled,Si as markFanoutBranchCompleted,En as mergeArtifactLedger,rn as orderPromptSections,yr as parseAutoRules,mr as parseClassifierOutput,de as parseCommand,Zt as parseEditToolError,_o as parseLlmReviewVerdict,Xi as parseMcpCapabilityId,Lr as parseModelSpec,Qt as persistToolOutput,ro as plannerAgent,dr as plannerCodingAgent,A as prepareRuntimeConfig,ge as processSpecialSyntax,re as rateLimitedCall,Ko as readArtifact,wo as readAuditEntries,Co as readBudget,ko as readDisableState,Xr as readSpeculativeWindowFromEnv,hr as readTrustState,De as reasoningCapabilityToOverride,Nn as reasoningModeToDepth,Xe as reasoningOverrideToCapability,jn as reconstructMessagesWithToolGuard,Pr as recordAutoModeAllow,Cr as recordAutoModeBlock,xr as recordBreakerError,or as recordDenial,fi as registerCodingInvariants,J as registerConfiguredCustomProviders,I as registerConfiguredMcpCapabilityProvider,tt as registerCustomProviders,at as registerModelProvider,Bi as registerOfficialSandboxExtension,Ot as registerPresetDispatcher,$o as registerTool,Oo as rehydrateActiveArtifacts,Po as remainingSelfModifyBudget,us as renderChangedScope,_s as renderImpactEstimate,hs as renderModuleContext,ys as renderProcessContext,an as renderPromptSections,ls as renderRepoOverview,Vs as renderRetrievalResult,vs as renderSymbolContext,bo as resetBudget,S as resolveAcpLogLevel,Tr as resolveClassifierModel,po as resolveConstructedAgent,k as resolveProvider,Bn as resolveReasoningMode,ws as resolveRepoIntelligenceMode,As as resolveRepoIntelligenceRuntimeConfig,Kn as resolveResilienceConfig,In as resolveSessionLineageTarget,ui as resolveToolCapability,qo as revoke,Pn as rewindSessionLineage,Uo as rollbackSelfModify,Te as runAcpServer,ho as runAstRules,ue as runInkInteractiveMode,me as runInteractiveMode,M as runKodaX,Io as runLlmReview,Fi as runManagedTask,Ni as runOrchestration,ne as saveConfig,Ve as saveReasoningOverride,io as scoutAgent,ar as scoutCodingAgent,ji as searchMcpCatalog,oi as setActiveExtensionRuntime,An as setSessionLineageActiveEntry,jr as speculativeRace,Eo as stage,Ir as stripAssistantText,Ds as stripHtmlToText,Lo as testArtifact,rs as toolAskUserQuestion,ss as toolBash,fs as toolChangedDiff,gs as toolChangedScope,Ns as toolCodeSearch,Yt as toolEdit,os as toolGlob,ns as toolGrep,qs as toolImpactEstimate,ts as toolInsertAfterAnchor,Ls as toolModuleContext,mi as toolPermission,Os as toolProcessContext,Ht as toolRead,ms as toolRepoOverview,Ws as toolSemanticLookup,Ts as toolSymbolContext,is as toolUndo,Bs as toolWebFetch,zs as toolWebSearch,Jt as toolWrite,pe as touchContext,Nt as truncateHead,Gt as truncateLine,Wt as truncateTail,vr as trustProjectRules,Ft as validateAndFixToolHistory,Hi as validateSubtaskIndependence,vo as validateToolSchemaForProvider,Cs as warmRepoIntelligenceRuntime,ti as webhook};
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(L(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 T(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=X(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"&&q(f.resolve(e.cwd,s.path),e.cwd),a=E(e.permissionMode).has(t),d=e.permissionMode==="auto-in-project"&&(b(t)&&typeof s.path=="string"&&!F(s.path,e.cwd)||t==="bash"&&typeof s.command=="string"&&D(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??V(),title:t,kind:z(t),rawInput:s,locations:B(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,O(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 Oe(o={}){let e=new y(o),t=Ae.toWeb(v.stdin),s=we.toWeb(v.stdout);e.attach(t,s),await e.waitForClose()}i(Oe,"runAcpServer");export{U as ACP_LOG_LEVELS,Rr as AUTO_MODE_DENIAL_CONSECUTIVE_THRESHOLD,xr as AUTO_MODE_DENIAL_CUMULATIVE_THRESHOLD,g as AcpEventEmitter,m as AcpLogger,Hr as BASH_POLICY_SPEC,qr as BREAKER_ERROR_THRESHOLD,Fr as BREAKER_WINDOW_MS,de as BUILTIN_COMMANDS,Bt as CANCELLED_TOOL_RESULT_MESSAGE,zt as CANCELLED_TOOL_RESULT_PREFIX,_r as CODING_AGENTS,fr as CODING_AGENT_MARKER,Si as CODING_INVARIANTS,mi as CODING_SUMMARY_PROMPT,gi as CODING_UPDATE_SUMMARY_PROMPT,Lo as CapabilityDeniedError,Pi as Client,To as ConstructionManifestError,fi as DEFAULT_CODING_AGENT_NAME,ar as DEFAULT_DANGEROUS_PATTERNS,xo as DEFAULT_HANDLER_TIMEOUT_MS,Qn as DEFAULT_RESILIENCE_CONFIG,rr as DEFAULT_SAFE_PATTERNS,Zo as DEFAULT_SELF_MODIFY_BUDGET,Wr as DEFAULT_SPECULATIVE_WINDOW_MS,Nt as DEFAULT_TOOL_OUTPUT_MAX_BYTES,Wt as DEFAULT_TOOL_OUTPUT_MAX_LINES,qt as DefaultSummaryCompaction,Ki as EMIT_CONTRACT_TOOL_NAME,Di as EMIT_HANDOFF_TOOL_NAME,Fi as EMIT_SCOUT_VERDICT_TOOL_NAME,Xi as EMIT_VERDICT_TOOL_NAME,_t as ErrorCategory,w as FileSessionStorage,Fo as GENERATOR_AGENT_NAME,Mt as KODAX_API_MIN_INTERVAL,H as KODAX_CONFIG_FILE,C as KODAX_DEFAULT_PROVIDER,wt as KODAX_DEFAULT_TIMEOUT,G as KODAX_DIR,St as KODAX_HARD_TIMEOUT,Ct as KODAX_MAX_INCOMPLETE_RETRIES,bt as KODAX_MAX_RETRIES,At as KODAX_MAX_TOKENS,Qe as KODAX_PROVIDERS,Ge as KODAX_PROVIDER_SNAPSHOTS,De as KODAX_REASONING_MODE_SEQUENCE,Pt as KODAX_RETRY_BASE_DELAY,Q as KODAX_SESSIONS_DIR,kt as KODAX_STAGGER_DELAY,_n as KODAX_TOOLS,ee as KODAX_VERSION,y as KodaXAcpServer,We as KodaXAnthropicCompatProvider,Be as KodaXBaseProvider,Pi as KodaXClient,qe as KodaXError,ko as KodaXExtensionRuntime,Ne as KodaXOpenAICompatProvider,Fe as KodaXProviderError,Ke as KodaXRateLimitError,vt as KodaXSessionError,yt as KodaXTerminalError,ht as KodaXToolError,ro as LINEAGE_ENTRY_TYPES,lo as LineageCompaction,ao as LineageExtension,Zi as McpCapabilityProvider,Yi as McpServerRuntime,qo as PLANNER_AGENT_NAME,Rt as PROMISE_PATTERN,Kn as PROMPT_SECTION_REGISTRY,zi as PROTOCOL_EMITTER_TOOLS,ei as ProviderRecoveryCoordinator,Gt as READ_DEFAULT_LIMIT,Ht as READ_MAX_LINE_CHARS,Qt as READ_PREFLIGHT_SIZE_BYTES,Cs as REPOINTEL_DEFAULT_ENDPOINT,Kt as Runner,Oo as SCOUT_AGENT_NAME,Fn as SYSTEM_PROMPT,Yn as StableBoundaryTracker,jo as TASK_ENGINE_ROLE_AGENTS,Oi as TOOL_RESULT_TRUNCATION_GUARDRAIL_NAME,an as _resetRuntimeForTesting,cn as activate,vs as analyzeChangedScope,Jo as appendAuditEntry,vo as appendSessionLineageLabel,xi as applyFanoutBranchTransition,yo as applySessionCompaction,zs as applyToolResultGuardrail,bo as archiveOldIslands,Ei as assignFanoutBranchWorker,Or as autoModeDenialShouldFallback,$r as bashSignalCollector,_i as boundedRevise,Xr as breakerShouldFallback,Ii as budgetCeiling,li as buildAmaControllerDecision,Vn as buildCapabilityContextSections,Ir as buildClassifierPrompt,ai as buildFallbackRoutingDecision,ki as buildFanoutSchedulerPlan,Go as buildLlmReviewPrompt,Wn as buildPromptMessageContent,ci as buildPromptOverlay,Un as buildPromptSnapshot,ti as buildProviderCapabilitySnapshot,di as buildProviderPolicyHintsForDecision,si as buildProviderPolicyPromptNotes,Ue as buildReasoningOverrideKey,hs as buildRepoIntelligenceContext,Es as buildRepoIntelligenceIndex,ms as buildRepoOverview,wo as buildSessionTree,zn as buildSystemPrompt,$n as buildSystemPromptSnapshot,Vr as checkAbsoluteDeny,Bn as checkIncompleteToolCalls,ui as checkPromiseSignal,wr as classify,lr as classifyBashCommand,It as classifyError,Jn as classifyResilienceError,$t as cleanupIncompleteToolCalls,ze as clearReasoningOverride,mt as clearRuntimeModelProviders,Br as collectAllSignals,pr as computeInputSignature,Sr as computeRulesFingerprint,rn as configureRuntime,Gs as convertCapabilityReadResult,Ns as convertProviderSearchResults,Ri as countActiveFanoutBranches,So as countActiveLineageMessages,Et as countTokens,Lt as createAgent,Er as createAutoModeDenialTracker,Qr as createAutoModeToolGuardrail,dr as createBashClassifierConfig,x as createBashPrefixExtractor,kn as createBuiltinToolDefinition,Kr as createCircuitBreaker,zo as createCtxProxy,st as createCustomProvider,hi as createDefaultCodingAgent,cr as createDenialTracker,_ as createExtensionRuntime,Ci as createFanoutSchedulerInput,Tt as createHandoff,Ot as createInMemorySession,pe as createInteractiveContext,sr as createKodaXTaskRunner,Ni as createMcpCapabilityId,Ji as createMcpTransport,Dn as createPromptSection,pi as createReasoningPlan,vi as createSessionControl,uo as createSessionLineage,qi as createToolResultTruncationGuardrail,Wi as defaultMcpCacheDir,Eo as defaultPolicy,nn as disableSelfModify,$o as drainPendingSwaps,Ui as emitContract,Vi as emitHandoff,ji as emitScoutVerdict,$i as emitVerdict,xt as estimateTokens,oi as evaluateProviderPolicy,no as exec,ce as executeCommand,qn as executeTool,Po as extractArtifactLedger,Jr as extractCommandPrefix,Gn as extractComparableUserMessageText,Ws as extractHtmlTitle,Nn as extractPromptComparableText,po as extractTitleFromMessages,zr as fileSignalCollector,Hs as finalizeRetrievalResult,hn as findByVersion,_o as findPreviousUserEntryId,Ao as forkSessionLineage,oo as formatAgentsForPrompt,nr as formatParallelDispatchResult,Jt as formatSize,co as generateSessionId,Xo as generatorAgent,yr as generatorCodingAgent,Ro as getActiveExtensionRuntime,Xt as getAgentConfigHome,jt as getAgentConfigPath,Rn as getAllRegisteredTools,Ut as getAppDataDir,ft as getAvailableProviderNames,Cn as getBuiltinRegisteredToolDefinition,Pn as getBuiltinToolDefinition,nt as getCustomProvider,at as getCustomProviderList,dt as getCustomProviderModels,rt as getCustomProviderNames,gr as getDenialContext,Mi as getFanoutBranch,re as getGitRoot,Fs as getImpactEstimate,to as getKodaxGlobalDir,Hi as getMcpCachePaths,Ts as getModuleContext,qs as getProcessContext,He as getProvider,Ye as getProviderConfiguredCapabilityProfile,Je as getProviderConfiguredReasoningCapability,se as getProviderList,te as getProviderModel,Ze as getProviderModels,Sn as getRegisteredToolDefinition,Ls as getRepoIntelligenceIndex,gs as getRepoOverview,Ks as getRepoRoutingSignals,Ln as getRequiredToolParams,ct as getRuntimeModelProvider,ut as getRuntimeModelProviderNames,mo as getSessionLineagePath,go as getSessionMessagesFromLineage,Os as getSymbolContext,An as getTool,wn as getToolDefinition,bn as getToolRegistrations,$s as getToolResultPolicy,Z as getVersion,Vo as hasPendingSwap,J as hydrateProcessEnvFromShell,ri as inferTaskType,rs as inspectEditFailure,Rs as inspectRepoIntelligenceRuntime,it as isCustomProviderName,mr as isDeniedRecently,gt as isKnownProvider,or as isParallelDispatchDirective,oe as isProviderConfigured,et as isProviderName,pt as isRuntimeModelProviderName,M as isToolFileMutation,En as isToolMutation,xn as isToolPlanModeAllowed,vn as listAll,mn as listArtifacts,Mn as listBuiltinToolDefinitions,fn as listConstructed,On as listToolDefinitions,Tn as listTools,so as loadAgentsFiles,kr as loadAutoRules,ne as loadConfig,Bo as loadHandler,Ve as loadReasoningOverride,Ti as markFanoutBranchCancelled,Li as markFanoutBranchCompleted,Co as mergeArtifactLedger,Xn as orderPromptSections,Cr as parseAutoRules,Ar as parseClassifierOutput,le as parseCommand,is as parseEditToolError,Qo as parseLlmReviewVerdict,Gi as parseMcpCapabilityId,jr as parseModelSpec,ts as persistToolOutput,Do as plannerAgent,vr as plannerCodingAgent,A as prepareRuntimeConfig,Ds as prewarmRepoIntelligenceCaches,fe as processSpecialSyntax,ae as rateLimitedCall,gn as readArtifact,Yo as readAuditEntries,en as readBudget,on as readDisableState,Nr as readSpeculativeWindowFromEnv,br as readTrustState,Xe as reasoningCapabilityToOverride,ii as reasoningModeToDepth,je as reasoningOverrideToCapability,Zn as reconstructMessagesWithToolGuard,Tr as recordAutoModeAllow,Lr as recordAutoModeBlock,Dr as recordBreakerError,ur as recordDenial,bi as registerCodingInvariants,Y as registerConfiguredCustomProviders,I as registerConfiguredMcpCapabilityProvider,ot as registerCustomProviders,lt as registerModelProvider,er as registerOfficialSandboxExtension,Ft as registerPresetDispatcher,In as registerTool,pn as rehydrateActiveArtifacts,tn as remainingSelfModifyBudget,ys as renderChangedScope,Ps as renderImpactEstimate,ws as renderModuleContext,bs as renderProcessContext,jn as renderPromptSections,fs as renderRepoOverview,Qs as renderRetrievalResult,Ss as renderSymbolContext,sn as resetBudget,S as resolveAcpLogLevel,Ur as resolveClassifierModel,Uo as resolveConstructedAgent,k as resolveProvider,ni as resolveReasoningMode,Ms as resolveRepoIntelligenceMode,ks as resolveRepoIntelligenceRuntimeConfig,Hn as resolveResilienceConfig,fo as resolveSessionLineageTarget,Ai as resolveToolCapability,un as revoke,Io as rewindSessionLineage,yn as rollbackSelfModify,Oe as runAcpServer,Wo as runAstRules,me as runInkInteractiveMode,ge as runInteractiveMode,R as runKodaX,Ho as runLlmReview,Bi as runManagedTask,tr as runOrchestration,ie as saveConfig,$e as saveReasoningOverride,Ko as scoutAgent,hr as scoutCodingAgent,Qi as searchMcpCatalog,Mo as setActiveExtensionRuntime,Dt as setAgentConfigHome,ho as setSessionLineageActiveEntry,Gr as speculativeRace,dn as stage,yi as startKodaX,Mr as stripAssistantText,Bs as stripHtmlToText,ln as testArtifact,us as toolAskUserQuestion,ds as toolBash,As as toolChangedDiff,Is as toolChangedScope,Zs as toolCodeSearch,ns as toolEdit,ls as toolGlob,cs as toolGrep,Vs as toolImpactEstimate,as as toolInsertAfterAnchor,Xs as toolModuleContext,wi as toolPermission,Us as toolProcessContext,ss as toolRead,_s as toolRepoOverview,eo as toolSemanticLookup,js as toolSymbolContext,ps as toolUndo,Ys as toolWebFetch,Js as toolWebSearch,os as toolWrite,ue as touchContext,Yt as truncateHead,es as truncateLine,Zt as truncateTail,Pr as trustProjectRules,Vt as validateAndFixToolHistory,tt as validateCustomProviderConfig,ir as validateSubtaskIndependence,No as validateToolSchemaForProvider,xs as warmRepoIntelligenceRuntime,io as webhook};