@kodax-ai/kodax 0.7.62 → 0.7.63
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +59 -0
- package/README.md +2 -2
- package/README_CN.md +2 -2
- package/dist/chunks/{agent-4ZMCIEGD.js → agent-SL444XLN.js} +1 -1
- package/dist/chunks/argument-completer-EN63ZVJK.js +2 -0
- package/dist/chunks/{chunk-AY3BLB4Q.js → chunk-4MIHVNB7.js} +94 -94
- package/dist/chunks/{chunk-6HTR3GHZ.js → chunk-7MPU7TP6.js} +202 -202
- package/dist/chunks/{chunk-JILSZHCQ.js → chunk-HP4FXMEM.js} +2 -2
- package/dist/chunks/{chunk-OGRJQGKO.js → chunk-KCFVGXVK.js} +1 -1
- package/dist/chunks/{chunk-3KD26NCI.js → chunk-KHICMJIR.js} +166 -166
- package/dist/chunks/{chunk-HO6P6CPU.js → chunk-L3MF5V64.js} +1 -1
- package/dist/chunks/{chunk-WFE6FBQ2.js → chunk-LGR7ACBQ.js} +8 -8
- package/dist/chunks/{chunk-S4ISEA6F.js → chunk-RR7W7UF6.js} +146 -146
- package/dist/chunks/{chunk-E2Q4RIOD.js → chunk-UGTK2JIJ.js} +59 -59
- package/dist/chunks/{chunk-2F4R7WM7.js → chunk-VSWROENP.js} +1 -1
- package/dist/chunks/{compaction-config-SP3REMFR.js → compaction-config-4VIONMFB.js} +1 -1
- package/dist/chunks/{construction-bootstrap-4ZNFZFX2.js → construction-bootstrap-EFZBONTK.js} +1 -1
- package/dist/chunks/dist-EDF2YUF6.js +2 -0
- package/dist/chunks/host-J4HPDLFC.js +2 -0
- package/dist/chunks/{run-manager-UXIPDVVF.js → run-manager-ZVSW2OWM.js} +1 -1
- package/dist/chunks/{utils-XKWEVPE3.js → utils-5HDLYTZJ.js} +1 -1
- package/dist/index.d.ts +8 -8
- package/dist/index.js +2 -2
- package/dist/kodax_cli.js +860 -860
- package/dist/sdk-agent.d.ts +6 -6
- package/dist/sdk-agent.js +1 -1
- package/dist/sdk-coding.d.ts +585 -624
- package/dist/sdk-coding.js +1 -1
- package/dist/sdk-mcp.js +1 -1
- package/dist/sdk-repl.d.ts +9 -9
- package/dist/sdk-repl.js +2 -2
- package/dist/sdk-session.d.ts +4 -4
- package/dist/sdk-session.js +1 -1
- package/dist/sdk-skills.js +1 -1
- package/dist/types-chunks/{bash-prefix-extractor.d-Do_TCAmA.d.ts → bash-prefix-extractor.d-CZW9fRoa.d.ts} +126 -3
- package/dist/types-chunks/{guardrail.d-DRp0Lqvx.d.ts → guardrail.d-MR6LwMB2.d.ts} +2 -2
- package/dist/types-chunks/{process.d-DXkRD7hj.d.ts → process.d-CY2g03Mb.d.ts} +11 -4
- package/dist/types-chunks/{run-manager.d-CYY3pZeJ.d.ts → run-manager.d-CYTnWhZY.d.ts} +6 -17
- package/dist/types-chunks/{sdk-session-BGGOC0cT.d.ts → sdk-session-RBSBBKol.d.ts} +8 -6
- package/dist/types-chunks/{storage.d-C3umBC4g.d.ts → storage.d-C6kkAEch.d.ts} +2 -2
- package/dist/types-chunks/{types.d-DFf4Sfys.d.ts → types.d-1CnTg7Sd.d.ts} +1 -1
- package/dist/types-chunks/{utils.d-ChOEH3NF.d.ts → utils.d-C14jZ9ZM.d.ts} +4 -4
- package/package.json +1 -1
- package/dist/chunks/argument-completer-5PWSKFKI.js +0 -2
- package/dist/chunks/dist-IKWRJW6J.js +0 -2
- package/dist/chunks/host-XL5CH7QP.js +0 -2
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
-
import{wa as e}from"./chunk-
|
|
2
|
+
import{wa as e}from"./chunk-UGTK2JIJ.js";import{a as n}from"./chunk-V4WSBIXB.js";import{readFile as i}from"fs/promises";var c={enabled:!0,triggerPercent:75};async function g(o){let t=e("config.json");try{let r=await a(t);if(r?.compaction)return{...c,...r.compaction}}catch{}return c}n(g,"loadCompactionConfig");async function a(o){try{let t=await i(o,"utf-8");return JSON.parse(t)}catch{return null}}n(a,"readConfigFile");export{g as a};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
-
import{a as Yr}from"./chunk-UA744TZM.js";import{$ as xe,$a as et,$c as rn,Ba as Rr,Bc as Gt,C as Ze,Ca as Sr,Cc as Qr,D as yr,Db as zr,Dc as Zr,Ec as T,Fc as de,Gc as Jr,Hc as en,Ic as tn,Na as Cr,O as br,Qa as _r,U as Tr,Va as Mr,Wa as qt,X as xr,Ya as Pr,Za as Ar,_a as Ir,_c as on,aa as Je,ab as Or,bb as Nr,cb as Dr,d as pr,da as vr,db as C,e as X,eb as Lr,f as $,fb as Fr,fd as nn,g as hr,ga as kr,gb as Ur,ha as wr,hb as Br,ia as Er,ib as Hr,jb as $r,kb as Q,lb as ve,mb as jr,nb as ke,ob as tt,pa as jt,pb as qr,pd as sn,qb as Gr,qd as ot,rb as Wr,sb as Kr,sd as rt,tb as Xr,td as an,vd as cn,wd as ln,xc as Vr,y as gr}from"./chunk-S4ISEA6F.js";import{A as le,B as Bo,F as Ho,Ga as Ot,Ja as Te,O as $o,Q as jo,Ra as Nt,T as be,Va as qo,Wa as Go,Xa as Wo,Ya as Ko,_a as Xo,b as Me,c as Pe,d as Ae,e as Uo,pa as At,xa as It}from"./chunk-S4GVQO3W.js";import{Ba as Jo,Ca as er,Cb as or,Fd as Ht,Nd as $t,Qd as cr,Rd as lr,Sd as ur,Xd as dr,Yd as mr,_d as fr,dd as Ut,ed as Bt,f as ee,fd as rr,g as Ve,hd as nr,id as ir,j as zo,jd as sr,k as ue,kd as ar,m as Vo,mc as Oe,na as Qo,oa as Lt,ob as Ie,pb as Ft,wa as Zo,xb as Qe,yb as tr}from"./chunk-E2Q4RIOD.js";import{a as Dt,z as Yo}from"./chunk-ZL5CEANW.js";import{a as i}from"./chunk-V4WSBIXB.js";import{readFile as bs}from"fs/promises";var un=75;function Ts(e){return typeof e!="number"||e<=0?un:e<=2e5?60:e<=256e3?65:e<=5e5?70:75}i(Ts,"adaptiveTriggerPercent");var xs={enabled:!0};async function dn(e,t){let o=Zo("config.json"),r;try{let a=await vs(o);a?.compaction&&(r=a.compaction)}catch{}let n={...xs,...r,triggerPercent:un};t?.enabled!==void 0&&(n.enabled=t.enabled),t?.contextWindow!==void 0&&(n.contextWindow=t.contextWindow);let s=n.contextWindow??e;return n.triggerPercent=typeof t?.triggerPercent=="number"?t.triggerPercent:typeof r?.triggerPercent=="number"?r.triggerPercent:Ts(s),n}i(dn,"loadCompactionConfig");async function vs(e){try{let t=await bs(e,"utf-8");return JSON.parse(t)}catch{return null}}i(vs,"readConfigFile");var j;(function(e){e[e.TRANSIENT=0]="TRANSIENT",e[e.PERMANENT=1]="PERMANENT",e[e.TOOL_CALL_ID=2]="TOOL_CALL_ID",e[e.USER_ABORT=3]="USER_ABORT"})(j||(j={}));var ks=[/\bstream incomplete\b/i,/\bstream interrupted\b/i,/\bstream stalled\b/i,/\bdelayed response\b/i,/\btimed out\b/i,/\btimeout\b/i,/\bnetwork\b/i,/\bconnection error\b/i,/\bconnection reset\b/i,/\bconnection closed\b/i,/\bsocket hang up\b/i,/\bfetch failed\b/i,/\beconnrefused\b/i,/\beconnreset\b/i,/\betimedout\b/i,/\benotfound\b/i,/\beai_again\b/i,/\bother side closed\b/i,/\baborted\b/i,/网络错误/,/网络异常/,/连接超时/,/连接错误/,/连接失败/,/连接被拒绝/,/请求超时/,/服务繁忙/,/服务不可用/,/服务器错误/,/服务器内部错误/,/请求过多/,/频率限制/,/限流/,/过载/,/容量不足/];function mn(e){return ks.some(t=>t.test(e))}i(mn,"matchesTransientMessage");function ws(e){if(e.name==="StreamIncompleteError"||e.message.includes("Stream incomplete"))return{category:j.TRANSIENT,retryable:!0,maxRetries:3,retryDelay:2e3,shouldCleanup:!0};if(e.name==="AbortError")return{category:j.USER_ABORT,retryable:!1,maxRetries:0,retryDelay:0,shouldCleanup:!0};if(e instanceof Uo||e.message.includes("tool_call_id")||e.message.includes("tool result"))return{category:j.TOOL_CALL_ID,retryable:!0,maxRetries:1,retryDelay:1e3,shouldCleanup:!0};if(e instanceof Pe)return{category:j.TRANSIENT,retryable:!0,maxRetries:3,retryDelay:e.retryAfter??6e4,shouldCleanup:!0};if(e instanceof Ae)return{category:j.TRANSIENT,retryable:!0,maxRetries:3,retryDelay:e.isTimeout?5e3:2e3,shouldCleanup:!0};if(e instanceof Me){let o=e.message.toLowerCase();return mn(o)?{category:j.TRANSIENT,retryable:!0,maxRetries:3,retryDelay:2e3,shouldCleanup:!0}:{category:j.PERMANENT,retryable:!1,maxRetries:0,retryDelay:0,shouldCleanup:!0}}let t=e.message.toLowerCase();return mn(t)?{category:j.TRANSIENT,retryable:!0,maxRetries:2,retryDelay:2e3,shouldCleanup:!0}:{category:j.PERMANENT,retryable:!1,maxRetries:0,retryDelay:0,shouldCleanup:!0}}i(ws,"classifyError");function Wt(e,t){return new Promise((o,r)=>{if(t?.aborted){r(t.reason instanceof Error?t.reason:new DOMException("Request aborted","AbortError"));return}let n,s=t;if(!s){n=setTimeout(()=>{o()},e);return}let a=i(()=>{clearTimeout(n),s.removeEventListener("abort",a),r(s.reason instanceof Error?s.reason:new DOMException("Request aborted","AbortError"))},"onAbort");n=setTimeout(()=>{s.removeEventListener("abort",a),o()},e),s.addEventListener("abort",a,{once:!0})})}i(Wt,"waitForRetryDelay");var pn={requestTimeoutMs:6e5,streamIdleTimeoutMs:Number(process.env.KODAX_STREAM_IDLE_TIMEOUT_MS)||0,chunkTimeoutMs:3e4,maxRetries:4,maxRetryDelayMs:6e4,enableNonStreamingFallback:!0};function Kt(e,t,o){let r={...pn};if(t&&fn(r,t),o&&o.length>0){let n=o.find(s=>s.provider===e);if(n){let{provider:s,...a}=n;fn(r,a)}}return r}i(Kt,"resolveResilienceConfig");function fn(e,t){t.requestTimeoutMs!==void 0&&(e.requestTimeoutMs=t.requestTimeoutMs),t.streamIdleTimeoutMs!==void 0&&(e.streamIdleTimeoutMs=t.streamIdleTimeoutMs),t.chunkTimeoutMs!==void 0&&(e.chunkTimeoutMs=t.chunkTimeoutMs),t.maxRetries!==void 0&&(e.maxRetries=t.maxRetries),t.maxRetryDelayMs!==void 0&&(e.maxRetryDelayMs=t.maxRetryDelayMs),t.enableNonStreamingFallback!==void 0&&(e.enableNonStreamingFallback=t.enableNonStreamingFallback)}i(fn,"mergePartialConfig");var Es=[/\brate.?limit\b/i,/\btoo many requests\b/i,/\b429\b/,/\bquota exceeded\b/i,/\bapi credits?\b/i,/请求过多/,/频率限制/,/限流/,/配额/],hn=[/\boverloaded\b/i,/\bcapacity\b/i,/\bserver (error|busy)\b/i,/\bprovider service error\b/i,/\btry (again )?(a )?moment later\b/i,/\b(api|http|provider|status( code)?)\b[^\n]{0,40}\b5(00|02|03|29)\b/i,/\b5(00|02|03|29)\b[^\n]{0,40}\b(api|http|provider|server|status( code)?)\b/i,/\b503\b/,/\b502\b/,/\binternal server error\b/i,/\bservice unavailable\b/i,/服务繁忙/,/服务不可用/,/服务器错误/,/服务器内部错误/,/过载/,/容量不足/],Xt=[/\bconnection (error|reset|closed|refused|terminated)\b/i,/\bsocket hang up\b/i,/\bsocket closed\b/i,/\bfetch failed\b/i,/\beconnrefused\b/i,/\beconnreset\b/i,/\bepipe\b/i,/\benotfound\b/i,/\beai_again\b/i,/\bother side closed\b/i,/\bnetwork\b/i,/\baborted\b/i,/\bterminated\b/i,/\bpremature close\b/i,/\bund_err_socket\b/i,/\bund_err_closed\b/i,/\bund_err_aborted\b/i,/\bund_err_destroyed\b/i,/网络错误/,/网络异常/,/连接错误/,/连接失败/,/连接被拒绝/,/连接被重置/,/连接被终止/,/连接已终止/,/连接中断/],Yt=[/\btimed? ?out\b/i,/\betimedout\b/i,/\bheaders timeout\b/i,/\bbody timeout\b/i,/\bund_err_headers_timeout\b/i,/\bund_err_body_timeout\b/i,/\bund_err_connect_timeout\b/i,/连接超时/,/请求超时/,/响应超时/],gn=[/\bstream incomplete\b/i,/\bstream interrupted\b/i],Rs=[/\bstream stalled or delayed\b/i,/\b60s idle\b/i,/\bidle timeout\b/i],Ss=[/\bhard timeout\b/i,/\b10 minutes?\b/i,/\bapi hard timeout\b/i],Cs=[/reasoning_content/i,/thinking.{0,40}signature/i,/signature.{0,40}thinking/i],_s=[/\bcontext too long\b/i,/\bmaximum context\b/i,/\bcontext length\b/i,/\bcontext window\b/i,/\btoo many tokens\b/i],Ms=[/\b(401|403)\b/,/\b(auth|unauthorized|forbidden|api key|not configured|permission denied)\b/i];function nt(e,t){let o=yn(e);if(e.name==="AbortError")return{errorClass:"user_abort",failureStage:t??"before_first_delta",retryable:!1,maxRetries:0,baseRetryDelay:0};if(e instanceof Pe||D(o,Es)){let r=e instanceof Pe?e.retryAfter:void 0;return{errorClass:"rate_limit",failureStage:t??"before_first_delta",retryable:!0,maxRetries:3,baseRetryDelay:r??6e4}}return e instanceof Me&&D(o,hn)?{errorClass:"provider_overloaded",failureStage:t??"before_first_delta",retryable:!0,maxRetries:3,baseRetryDelay:5e3}:e.name==="StreamIncompleteError"||D(o,gn)?{errorClass:"incomplete_stream",failureStage:As(o,t),retryable:!0,maxRetries:3,baseRetryDelay:2e3}:D(o,Rs)?{errorClass:"stream_idle_timeout",failureStage:t??"mid_stream_text",retryable:!0,maxRetries:3,baseRetryDelay:3e3}:D(o,Ss)?{errorClass:"request_timeout",failureStage:t??"before_first_delta",retryable:!0,maxRetries:2,baseRetryDelay:5e3}:e instanceof Ae&&e.isTimeout||D(o,Yt)?{errorClass:"request_timeout",failureStage:t??"before_first_delta",retryable:!0,maxRetries:3,baseRetryDelay:5e3}:e instanceof Ae||D(o,Xt)?{errorClass:"connection_failure",failureStage:t??"before_first_delta",retryable:!0,maxRetries:3,baseRetryDelay:2e3}:e instanceof Me?D(o,[...Xt,...Yt])?{errorClass:"connection_failure",failureStage:t??"before_first_delta",retryable:!0,maxRetries:3,baseRetryDelay:2e3}:D(o,Cs)?{errorClass:"reasoning_content_required",failureStage:t??"before_first_delta",retryable:!0,maxRetries:1,baseRetryDelay:0}:{errorClass:"non_retryable_provider_error",failureStage:t??"before_first_delta",retryable:!1,maxRetries:0,baseRetryDelay:0}:D(o,hn)?{errorClass:"provider_overloaded",failureStage:t??"before_first_delta",retryable:!0,maxRetries:3,baseRetryDelay:5e3}:D(o,[...Xt,...Yt,...gn])?{errorClass:"connection_failure",failureStage:t??"before_first_delta",retryable:!0,maxRetries:2,baseRetryDelay:2e3}:{errorClass:"non_retryable_provider_error",failureStage:t??"before_first_delta",retryable:!1,maxRetries:0,baseRetryDelay:0}}i(nt,"classifyResilienceError");function Ps(e,t){if(t<=0)return!1;let o=yn(e);if(D(o,Ms))return!1;let r=nt(e);return r.errorClass==="provider_overloaded"||r.errorClass==="reasoning_content_required"||D(o,_s)}i(Ps,"isSessionRecoveryCandidateError");function D(e,t){return t.some(o=>o.test(e))}i(D,"matchesAny");function yn(e){let t=[],o=new Set,r=e,n=0,s=5;for(;r!=null&&n<s&&!o.has(r);){if(o.add(r),r instanceof Error){r.message&&t.push(r.message);let a=r.code;typeof a=="string"&&a.length>0&&t.push(a),r=r.cause}else if(typeof r=="string")t.push(r),r=void 0;else if(typeof r=="object"){let a=r.message;typeof a=="string"&&t.push(a);let c=r.code;typeof c=="string"&&t.push(c),r=r.cause}else break;n+=1}return t.join(" | ").toLowerCase()}i(yn,"collectErrorText");function As(e,t){return t||(/\btool.?input\b/i.test(e)||/\btool.?call\b/i.test(e)?"mid_stream_tool_input":/\bthinking\b/i.test(e)?"mid_stream_thinking":"mid_stream_text")}i(As,"inferStageForStreamError");var Is=0;function bn(){return`req_${Date.now()}_${++Is}`}i(bn,"nextRequestId");var Ne=class{static{i(this,"StableBoundaryTracker")}state;hasReceivedFirstDelta=!1;currentToolInputId;constructor(){this.state=this.createInitialState()}beginRequest(t,o,r,n=1,s=!1){this.state={requestId:bn(),provider:t,model:o,attempt:n,lastStableMessageIndex:r.length,executedToolCallIds:[...this.state.executedToolCallIds],pendingToolCallIds:[],visibleLiveTextLength:0,visibleThinkingLength:0,fallbackUsed:s,startedAt:Date.now()},this.hasReceivedFirstDelta=!1,this.currentToolInputId=void 0}markFirstDelta(){this.hasReceivedFirstDelta=!0}markTextDelta(t){this.hasReceivedFirstDelta||this.markFirstDelta(),this.state.visibleLiveTextLength+=t.length}markThinkingDelta(t){this.hasReceivedFirstDelta||this.markFirstDelta(),this.state.visibleThinkingLength+=t.length}markToolInputStart(t){this.hasReceivedFirstDelta||this.markFirstDelta(),this.currentToolInputId=t,this.state.pendingToolCallIds.includes(t)||this.state.pendingToolCallIds.push(t)}markToolExecuted(t){this.state.pendingToolCallIds=this.state.pendingToolCallIds.filter(o=>o!==t),this.state.executedToolCallIds.includes(t)||this.state.executedToolCallIds.push(t),this.currentToolInputId===t&&(this.currentToolInputId=void 0)}markAssistantComplete(t){this.state.lastStableMessageIndex=t.length,this.state.visibleLiveTextLength=0,this.state.visibleThinkingLength=0,this.state.pendingToolCallIds=[],this.hasReceivedFirstDelta=!1}inferFailureStage(){return this.hasReceivedFirstDelta?this.currentToolInputId?"mid_stream_tool_input":this.state.visibleThinkingLength>0&&this.state.visibleLiveTextLength===0?"mid_stream_thinking":this.state.executedToolCallIds.length>0?"post_tool_execution_pre_assistant_close":"mid_stream_text":"before_first_delta"}snapshot(){return{...this.state}}get hasReceivedDelta(){return this.hasReceivedFirstDelta}recoverToStableBoundary(t){let o=Math.min(this.state.lastStableMessageIndex,t.length),r=t.slice(0,o),n=[...this.state.pendingToolCallIds],s=[...this.state.executedToolCallIds];return{messages:r,droppedToolCallIds:n,executedToolCallIds:s}}reset(){this.state=this.createInitialState(),this.hasReceivedFirstDelta=!1,this.currentToolInputId=void 0}createInitialState(){return{requestId:bn(),provider:"",model:"",attempt:1,lastStableMessageIndex:0,executedToolCallIds:[],pendingToolCallIds:[],visibleLiveTextLength:0,visibleThinkingLength:0,fallbackUsed:!1,startedAt:Date.now()}}};function it(e,t,o){if(e.length===0)return[];let r=Os(e,o),n=Ns(r),s=t.filter(a=>!n.includes(a));return s.length>0?Ds(r,s):r}i(it,"reconstructMessagesWithToolGuard");function Os(e,t){if(t.length===0)return[...e];let o=new Set(t);return e.map(r=>{if(typeof r.content=="string")return r;let n=r.content.filter(s=>s.type==="tool_use"?!o.has(s.id):s.type==="tool_result"?!o.has(s.tool_use_id):!0);return n.length===0?{...r,content:[{type:"text",text:""}]}:{...r,content:n}})}i(Os,"filterIncompleteToolCalls");function Ns(e){let t=[];for(let o of e)if(typeof o.content!="string")for(let r of o.content)r.type==="tool_result"&&t.push(r.tool_use_id);return t}i(Ns,"collectToolResultIds");function Ds(e,t){let o=[...e],r=t.map(n=>({type:"tool_result",tool_use_id:n,content:"[Result preserved from previous attempt - tool already executed]"}));return r.length>0&&o.push({role:"user",content:r}),o}i(Ds,"appendMissingToolResults");var Ls=["before_request_accepted","before_first_delta"],Fs=["stream_idle_timeout","chunk_timeout","incomplete_stream","connection_failure"],De=class{static{i(this,"ProviderRecoveryCoordinator")}boundaryTracker;config;nonStreamingFallbackUsed=!1;thinkingSanitizationUsed=!1;constructor(t,o){this.boundaryTracker=t,this.config={requestTimeoutMs:o.requestTimeoutMs??6e5,streamIdleTimeoutMs:o.streamIdleTimeoutMs??6e4,chunkTimeoutMs:o.chunkTimeoutMs??3e4,maxRetries:o.maxRetries??4,maxRetryDelayMs:o.maxRetryDelayMs??6e4,enableNonStreamingFallback:o.enableNonStreamingFallback??!0}}decideRecoveryAction(t,o,r){if(!o.retryable)return{action:"manual_continue",ladderStep:4,delayMs:0,maxDelayMs:this.config.maxRetryDelayMs,shouldUseNonStreaming:!1,reasonCode:o.errorClass,failureStage:o.failureStage};if(o.errorClass==="reasoning_content_required"&&!this.thinkingSanitizationUsed)return this.thinkingSanitizationUsed=!0,{action:"sanitize_thinking_and_retry",ladderStep:2,delayMs:0,maxDelayMs:this.config.maxRetryDelayMs,shouldUseNonStreaming:!1,reasonCode:o.errorClass,failureStage:o.failureStage};if(r>=this.config.maxRetries)return{action:"manual_continue",ladderStep:4,delayMs:0,maxDelayMs:this.config.maxRetryDelayMs,shouldUseNonStreaming:!1,reasonCode:o.errorClass,failureStage:o.failureStage};let n=Bs(o.baseRetryDelay,r,this.config.maxRetryDelayMs),s=Hs(t),a=s!==void 0?Math.min(s,this.config.maxRetryDelayMs):n,{action:c,ladderStep:d,shouldUseNonStreaming:u}=this.selectRecoveryStrategy(o,r);return{action:c,ladderStep:d,delayMs:a,maxDelayMs:this.config.maxRetryDelayMs,shouldUseNonStreaming:u,reasonCode:o.errorClass,failureStage:o.failureStage,serverRetryAfterMs:s}}executeRecovery(t,o){switch(o.action){case"fresh_connection_retry":return this.executeFreshConnectionRetry(t,o);case"stable_boundary_retry":return this.executeStableBoundaryRetry(t,o);case"non_streaming_fallback":return this.executeNonStreamingFallback(t,o);case"manual_continue":return this.executeManualContinue(t,o);case"sanitize_thinking_and_retry":return this.executeSanitizeThinking(t,o)}}selectRecoveryStrategy(t,o){let r=t.failureStage,n=t.errorClass;return Fs.includes(n)&&this.config.enableNonStreamingFallback&&!this.nonStreamingFallbackUsed&&o>=2?(this.nonStreamingFallbackUsed=!0,{action:"non_streaming_fallback",ladderStep:3,shouldUseNonStreaming:!0}):Ls.includes(r)?{action:"fresh_connection_retry",ladderStep:1,shouldUseNonStreaming:!1}:{action:"stable_boundary_retry",ladderStep:2,shouldUseNonStreaming:!1}}executeFreshConnectionRetry(t,o){let r=this.boundaryTracker.snapshot();return{messages:[...t],droppedToolCallIds:[],executedToolCallIds:[...r.executedToolCallIds],fallbackUsed:this.nonStreamingFallbackUsed}}executeStableBoundaryRetry(t,o){let r=this.boundaryTracker.recoverToStableBoundary(t);return{messages:it(r.messages,r.executedToolCallIds,r.droppedToolCallIds),droppedToolCallIds:r.droppedToolCallIds,executedToolCallIds:r.executedToolCallIds,fallbackUsed:this.nonStreamingFallbackUsed}}executeNonStreamingFallback(t,o){let r=this.boundaryTracker.recoverToStableBoundary(t);return{messages:it(r.messages,r.executedToolCallIds,r.droppedToolCallIds),droppedToolCallIds:r.droppedToolCallIds,executedToolCallIds:r.executedToolCallIds,fallbackUsed:!0}}executeManualContinue(t,o){let r=this.boundaryTracker.snapshot();return{messages:[...t],droppedToolCallIds:[...r.pendingToolCallIds],executedToolCallIds:[...r.executedToolCallIds],fallbackUsed:this.nonStreamingFallbackUsed}}executeSanitizeThinking(t,o){let r=this.boundaryTracker.snapshot();return{messages:Us(t),droppedToolCallIds:[],executedToolCallIds:[...r.executedToolCallIds],fallbackUsed:this.nonStreamingFallbackUsed}}reset(){this.nonStreamingFallbackUsed=!1,this.thinkingSanitizationUsed=!1}};function Us(e){return e.map(t=>{if(t.role!=="assistant"||typeof t.content=="string"||!Array.isArray(t.content))return t;let o=t.content.filter(r=>r.type!=="thinking"&&r.type!=="redacted_thinking");return o.length===0?{...t,content:[{type:"text",text:""}]}:{...t,content:o}})}i(Us,"sanitizeThinkingBlocks");function Bs(e,t,o){let r=e*Math.pow(2,t-1),n=Math.random()*1e3;return Math.min(r+n,o)}i(Bs,"calculateRetryDelay");function Hs(e){if("retryAfter"in e&&typeof e.retryAfter=="number")return e.retryAfter*1e3}i(Hs,"extractServerRetryAfter");var st=process.env.KODAX_DEBUG_STREAM==="1"||process.env.KODAX_DEBUG_RESILIENCE==="1";function zt(e,t){st&&console.error("[resilience:classify]",{rawError:e.message,errorClass:t.errorClass,failureStage:t.failureStage,retryable:t.retryable,maxRetries:t.maxRetries})}i(zt,"telemetryClassify");function Vt(e,t){st&&console.error("[resilience:decision]",{action:e.action,ladderStep:e.ladderStep,attempt:t,delayMs:e.delayMs,maxDelayMs:e.maxDelayMs,reasonCode:e.reasonCode,failureStage:e.failureStage,shouldUseNonStreaming:e.shouldUseNonStreaming,serverRetryAfterMs:e.serverRetryAfterMs})}i(Vt,"telemetryDecision");function Qt(e){st&&console.error("[resilience:boundary]",{requestId:e.requestId,provider:e.provider,attempt:e.attempt,lastStableMessageIndex:e.lastStableMessageIndex,executedToolCallIds:e.executedToolCallIds,pendingToolCallIds:e.pendingToolCallIds,visibleLiveTextLength:e.visibleLiveTextLength,visibleThinkingLength:e.visibleThinkingLength,fallbackUsed:e.fallbackUsed,failureStage:e.failureStage})}i(Qt,"telemetryBoundary");function at(e,t){st&&console.error("[resilience:recovery]",{action:e,droppedToolCallIds:t.droppedToolCallIds,executedToolCallIds:t.executedToolCallIds,fallbackUsed:t.fallbackUsed})}i(at,"telemetryRecovery");function Le(e,t){if(!t||t.length===0)return e;let o=[{type:"text",text:e}];for(let r of t){if(r.kind!=="image")throw new Dt("MODEL_INPUT_UNSUPPORTED",`${r.kind} artifacts cannot be attached to the provider prompt yet.`,{detail:"Only image artifacts are currently lowered into provider prompt content."});o.push({type:"image",path:r.path,mediaType:r.mediaType})}return o}i(Le,"buildPromptMessageContent");function Zt(e){return e._truncated===!0||e._salvaged===!0&&sn(e.name)}i(Zt,"isUntrustedSalvage");function xn(e){let t=[];for(let o of e){if(Zt(o)){t.push(`${o.name}: incomplete input (salvaged from malformed/truncated JSON)`);continue}let r=ot(o.name),n=o.input??{};for(let s of r)(n[s]===void 0||n[s]===null||n[s]==="")&&t.push(`${o.name}: missing '${s}'`)}return t}i(xn,"checkIncompleteToolCalls");function jd(e,t=400){return e.length<=t?e:`${e.slice(0,Math.max(0,t-3))}...`}i(jd,"truncateText");function vn(e){if(!e)return"";if(typeof e.lastText=="string"&&e.lastText.trim())return e.lastText;let t=e.messages?.[e.messages.length-1];return!t||t.role!=="assistant"?"":typeof t.content=="string"?t.content:t.content.map(o=>("text"in o?o.text:"")||"").join("")}i(vn,"extractMessageText");function $s(e){return e==="running"||e==="planned"}i($s,"isUnconvergedVerdict");function js(e){let t=e.trim();return t===""||t==="..."}i(js,"isPlaceholderOnlyAssistantText");function qs(e){let t=vn(e);return js(t)?"":t}i(qs,"extractFinalAssistantText");function Vd(e,t,o){if(!e.messages)return e;let r=qs(e);if($s(e.managedTask?.verdict?.status)||e.interrupted&&!r)return e;let n=t.context?.inputArtifacts,s=e.artifactLedger??Ht(e.messages),a=Gs(e.messages,o,r,n),c=e.contextTokenSnapshot?Lr(a,e.contextTokenSnapshot):void 0;return{...e,messages:a,artifactLedger:s,contextTokenSnapshot:c}}i(Vd,"reshapeToUserConversation");function Gs(e,t,o,r){let n=e,s=n[0];s?.role==="system"&&typeof s.content=="string"&&!s.content.startsWith($t)&&(n=n.slice(1)),n=Jt(n);let c=!n.some(u=>u.role==="user"&&ct(u)===t);c&&n[0]?.role==="system"&&typeof n[0].content=="string"&&n[0].content.startsWith($t)&&n.some(l=>l.role==="user")&&(c=!1),c&&(n=[...n,{role:"user",content:Le(t,r)}]);let d=n[n.length-1];return d?.role==="assistant"&&typeof d.content=="string"&&d.content===o||(d?.role==="assistant"?n=[...n.slice(0,-1),{role:"assistant",content:o}]:n=[...n,{role:"assistant",content:o}]),[...n]}i(Gs,"preserveTranscriptForRoundExit");function Jt(e){let t=e.length;for(;t>=2;){let o=e[t-2],r=e[t-1];if(o.role==="user"&&r.role==="assistant"&&Ks(o)){t-=2;continue}break}return e.slice(0,t)}i(Jt,"normalizeLoadedSessionMessages");var Ws=/^\s*You are the (Scout|Planner|Generator|Evaluator) role\b/;function Ks(e){if(e.role!=="user")return!1;let t=typeof e.content=="string"?e.content:Xs(e.content);return Ws.test(t)}i(Ks,"isRolePromptShapedUser");function Xs(e){let t=e[0];return t?.type==="text"&&typeof t.text=="string"?t.text:""}i(Xs,"extractLeadingTextBlock");function Tn(e){return typeof e=="string"?e:e.filter(t=>t.type==="text").map(t=>t.text).join(`
|
|
3
|
-
`)}i(Tn,"extractPromptComparableText");function ct(e){if(!(!e||e.role!=="user"))return Tn(e.content)}i(ct,"extractComparableUserMessageText");async function kn(e,t){if(e.session?.initialMessages&&e.session.initialMessages.length>0){let o=[...e.session.initialMessages],n=!(e.session.initialExtensionState!==void 0||e.session.initialExtensionRecords!==void 0)&&e.session.storage&&t?await e.session.storage.load(t).catch(()=>null):null;return{messages:o,title:Bt(o),errorMetadata:n?.errorMetadata,loadedExtensionState:e.session.initialExtensionState??n?.extensionState,loadedExtensionRecords:e.session.initialExtensionRecords??n?.extensionRecords}}if(e.session?.storage&&t){let o=await e.session.storage.load(t);if(o)return{messages:Jt(o.messages),title:o.title,errorMetadata:o.errorMetadata,loadedExtensionState:o.extensionState,loadedExtensionRecords:o.extensionRecords}}return{messages:[],title:""}}i(kn,"resolveInitialMessages");function wn(e,t,o,r){let n=e[e.length-1];return ct(n)===t?r!==void 0&&n!==void 0&&n.turnId===void 0?[...e.slice(0,-1),{...n,turnId:r}]:e:[...e,{role:"user",content:Le(t,o),...r!==void 0?{turnId:r}:{},timestamp:new Date().toISOString()}]}i(wn,"appendPromptIfNotDuplicate");async function En(e){let t=e.session?.id;if(t)return t;if(!(e.session?.autoResume||e.session?.resume))return;let r=e.session?.storage;if(!r?.list)return;let n=await r.list(e.context?.gitRoot??void 0);return n.length>0?n[0].id:void 0}i(En,"discoverAutoResumeSessionId");function Ys(e){return At(e)?"builtin":Ot(e)?"runtime":It(e)?"custom":"unknown"}i(Ys,"detectProviderSourceKind");function zs(e,t){return e?e.getCapabilityProfile():t??{transport:"native-api",conversationSemantics:"full-history",mcpSupport:"none"}}i(zs,"resolveCapabilityProfile");function Vs(e,t,o){return e?e.getReasoningCapability(t):o??"unknown"}i(Vs,"resolveReasoningCapability");function Qs(e){let t=jo(zs(e.provider,e.capabilityProfile));return{provider:e.providerName,model:e.model,sourceKind:Ys(e.providerName),transport:t.transport,conversationSemantics:t.conversationSemantics,mcpSupport:t.mcpSupport,contextFidelity:t.contextFidelity,toolCallingFidelity:t.toolCallingFidelity,sessionSupport:t.sessionSupport,longRunningSupport:t.longRunningSupport,multimodalSupport:t.multimodalSupport,evidenceSupport:t.evidenceSupport,reasoningCapability:Vs(e.provider,e.model,e.reasoningCapability)}}i(Qs,"buildProviderCapabilitySnapshot");function Zs(e){return!!e?.inputArtifacts?.some(t=>t.kind==="image")}i(Zs,"detectMultimodalContext");function Js(e){if(!e)return{};let t=e.toLowerCase();return{evidenceHeavy:/merge blocker|review|strict audit|runtime error|stack trace|stderr|failing test|evidence/.test(t)?!0:void 0}}i(Js,"inferPromptPolicyHints");function we(...e){return e.find(t=>t!==void 0)}i(we,"pickBoolean");function ea(e){let t=e.context??e.options?.context,o=Js(e.prompt);return{longRunning:we(e.hints?.longRunning,t?.providerPolicyHints?.longRunning,o.longRunning),harnessProfile:e.hints?.harnessProfile??t?.providerPolicyHints?.harnessProfile,evidenceHeavy:we(e.hints?.evidenceHeavy,t?.providerPolicyHints?.evidenceHeavy,o.evidenceHeavy),multimodal:we(e.hints?.multimodal,t?.providerPolicyHints?.multimodal,Zs(t),o.multimodal),capabilityRuntime:we(e.hints?.capabilityRuntime,t?.providerPolicyHints?.capabilityRuntime,o.capabilityRuntime),mcpRequired:we(e.hints?.mcpRequired,t?.providerPolicyHints?.mcpRequired,o.mcpRequired),brainstorm:we(e.hints?.brainstorm,t?.providerPolicyHints?.brainstorm,o.brainstorm),workIntent:e.hints?.workIntent??t?.providerPolicyHints?.workIntent??o.workIntent}}i(ea,"resolveProviderPolicyHints");function te(e,t){e.some(o=>o.code===t.code)||e.push(t)}i(te,"pushIssue");function ta(e,t){let o=new Set;e.transport==="cli-bridge"&&o.add("Provider uses a CLI bridge rather than a native API, so semantic parity should not be assumed."),e.conversationSemantics==="last-user-message"&&o.add("Provider forwards only the latest user message instead of preserving full-history semantics.");for(let r of t)o.add(r.detail);return Array.from(o)}i(ta,"buildRoutingNotes");function oa(e){return e.length===0?"No provider-policy constraints detected.":e.map(t=>`${t.severity.toUpperCase()}: ${t.summary}`).join(" | ")}i(oa,"summarizeIssues");function Rn(e){return[...[`[Provider Policy] provider=${e.snapshot.provider}${e.snapshot.model?` model=${e.snapshot.model}`:""}; status=${e.status}.`,`[Provider Semantics] transport=${e.snapshot.transport}; context=${e.snapshot.contextFidelity}; toolCalling=${e.snapshot.toolCallingFidelity}; session=${e.snapshot.sessionSupport}; longRunning=${e.snapshot.longRunningSupport}; multimodal=${e.snapshot.multimodalSupport}; evidence=${e.snapshot.evidenceSupport}; mcp=${e.snapshot.mcpSupport}; reasoning=${e.snapshot.reasoningCapability}.`],...e.issues.map(o=>`[Provider Constraint] ${o.severity.toUpperCase()}: ${o.detail}`)]}i(Rn,"buildProviderPolicyPromptNotes");function lt(e){let t=Qs({providerName:e.providerName,model:e.model,provider:e.provider,capabilityProfile:e.capabilityProfile,reasoningCapability:e.reasoningCapability}),o=ea(e),r=[];return o.multimodal&&t.multimodalSupport==="none"&&te(r,{code:"multimodal-unsupported",severity:"block",summary:"multimodal requests are unsupported on this provider",detail:"This flow requests multimodal or image semantics, but the selected provider only exposes text-only behavior."}),o.mcpRequired&&t.mcpSupport==="none"?te(r,{code:"mcp-required",severity:"block",summary:"native MCP semantics are unavailable on this provider",detail:"This flow explicitly requires MCP-native behavior, but the selected provider reports no native MCP support."}):o.capabilityRuntime&&t.mcpSupport==="none"&&te(r,{code:"capability-runtime-limited",severity:"warn",summary:"capability-oriented flows are constrained by provider semantics",detail:"Capability or MCP-oriented workflows may lose parity because the provider does not expose native MCP semantics."}),o.longRunning&&(t.longRunningSupport==="none"||t.sessionSupport==="stateless"||t.contextFidelity==="lossy"?te(r,{code:"long-running-blocked",severity:"block",summary:"long-running execution is unsafe on this provider",detail:"Long-running flows require durable session semantics and reliable context fidelity, but this provider reports lossy or stateless behavior."}):(t.longRunningSupport==="limited"||t.sessionSupport==="limited")&&te(r,{code:"long-running-limited",severity:"warn",summary:"long-running execution is degraded on this provider",detail:"Long-running flows may behave inconsistently because this provider only offers limited session or long-running support."})),(o.evidenceHeavy===!0||e.taskType==="review"||e.taskType==="bugfix"||e.executionMode==="pr-review"||e.executionMode==="strict-audit"||e.executionMode==="investigation")&&(t.contextFidelity==="lossy"&&te(r,{code:"evidence-context-loss",severity:"warn",summary:"evidence-heavy work is constrained by lossy context semantics",detail:"Evidence-heavy routing remains available, but this provider can lose prior-turn context and should not be treated as equivalent to full-history providers."}),t.evidenceSupport==="limited"&&te(r,{code:"evidence-support-limited",severity:"warn",summary:"evidence-heavy work may lose fidelity on this provider",detail:"This provider only reports limited evidence support, so review and investigation flows may need extra caution."})),e.reasoningMode!=="off"&&(t.reasoningCapability==="prompt-only"||t.reasoningCapability==="none")&&te(r,{code:"reasoning-control-limited",severity:"warn",summary:"native reasoning control is unavailable on this provider",detail:"Reasoning remains usable, but the provider cannot enforce native reasoning controls beyond prompt-level guidance."}),{status:r.some(a=>a.severity==="block")?"block":r.length>0?"warn":"allow",snapshot:t,issues:r,routingNotes:ta(t,r),summary:oa(r)}}i(lt,"evaluateProviderPolicy");var ra="off",na=.4,ia=.42,sa=.45,Sn=.5,aa=.06,ca=.04,la=.86,ua=.75,da=.49,ma=.5;var fa=["brainstorm","explore","explore options","option framing","tradeoff","trade-off","safest way","figure out","design first","\u65B9\u6848","\u601D\u8DEF","\u5148\u60F3","\u5148\u8BBE\u8BA1","\u5148\u5206\u6790","\u5148\u8BA8\u8BBA"],pa=["continue","extend","build on","follow up","append","add to","based on the existing","\u63A5\u7740","\u7EE7\u7EED","\u8865\u5145","\u8FFD\u52A0","\u5EF6\u7EED","\u6269\u5C55\u73B0\u6709"],ha=["rewrite","replace","overwrite","from scratch","start over","regenerate","redo","\u91CD\u5199","\u66FF\u6362","\u8986\u76D6","\u63A8\u5012\u91CD\u6765","\u5168\u90E8\u6539\u6389","\u91CD\u65B0\u505A"],eo={simple:[],moderate:["screen","component","endpoint","service","feature","\u6A21\u5757","\u529F\u80FD","\u9875\u9762"],complex:["migration","architecture","cross-package","multi-step","pipeline","state machine","refactor","monorepo","across packages","integration","\u8FC1\u79FB","\u67B6\u6784","\u8DE8\u5305","\u91CD\u6784","\u6D41\u7A0B"],systemic:["system-wide","orchestrate","multi-agent","control plane","runtime substrate","whole repo","entire repo","across the monorepo","\u5168\u4ED3","\u5168\u5C40","\u6574\u4F53\u67B6\u6784","\u63A7\u5236\u9762","\u591A\u667A\u80FD\u4F53"]},ga=2,ya=4,ba=6,Ta=10,to=1200;var xa=30,Ln=4e3;function Fn(e){return e.reasoningMode?e.reasoningMode:e.thinking===!0?"auto":e.thinking===!1?"off":ra}i(Fn,"resolveReasoningMode");function va(e){return Ho(e)}i(va,"reasoningModeToDepth");var Cn={none:0,minimal:0,auto:1,low:2,medium:3,high:4,xhigh:5,max:6};function _n(e){return Cn[e]??Cn.medium}i(_n,"effortRank");function ka(e,t){let o=_n(e),r=_n(t);return o<r?-1:o>r?1:0}i(ka,"compareEfforts");function Mn(e,t){return ka(e,t)>0?t:e}i(Mn,"clampEffort");function dm(e,t){if(e==="none")return"none";if(!t)return e;let o=t.default?le(t.default):e,r=t.max?Mn(o,le(t.max)):o;return Mn(r,e)}i(dm,"resolveRoleEffort");var wa=Object.freeze(["\u4E0D\u5BF9","\u9519\u4E86","\u6709\u95EE\u9898","\u771F\u7684\u5417","\u4F60\u786E\u5B9A","\u4E0D\u662F\u8FD9\u6837","\u5F04\u9519\u4E86","\u641E\u9519\u4E86","\u641E\u53CD\u4E86","\u8FD9\u4E0D\u5BF9","\u4E0D\u6B63\u786E","\u7B54\u9519","\u56DE\u7B54\u9519","that's wrong","that is wrong","that's not right","that is not right","are you sure","not really","this is wrong","this is incorrect","that's incorrect","that is incorrect","you're wrong","you are wrong"]),Ea=Object.freeze(["\u4ED4\u7EC6","\u6DF1\u5165","\u8BA4\u771F","\u518D\u770B\u770B","\u518D\u60F3\u60F3","\u60F3\u6E05\u695A","\u7528\u5FC3","\u6DF1\u5EA6\u5206\u6790","\u4ED4\u7EC6\u5206\u6790","\u8BA4\u771F\u5206\u6790","\u5F7B\u5E95","think harder","think more carefully","look more carefully","dig deeper","be thorough","more careful","more carefully","reconsider","reexamine","re-examine"]);function Ra(e,t){if(!e)return{category:null,matched:null};let o=e.toLowerCase();if(t)for(let r of wa){let n=r.toLowerCase();if(o.includes(n)||e.includes(r))return{category:"doubt",matched:r}}for(let r of Ea){let n=r.toLowerCase();if(o.includes(n)||e.includes(r))return{category:"deepen",matched:r}}return{category:null,matched:null}}i(Ra,"detectFollowupSignal");function Sa(e){switch(e){case"auto":return"low";case"low":return"medium";case"medium":return"high";default:return e}}i(Sa,"escalateEffort");function Ca(e,t,o){let r=Ra(t,o);if(r.category===null)return{effective:e,escalated:!1,signal:r};let n=Sa(e);return n===e?{effective:e,escalated:!1,signal:r}:{effective:n,escalated:!0,signal:r}}i(Ca,"applyFollowupEscalation");function Un(e,t){let o=e.effort??le(Fn(e)),n=(e.session?.initialMessages??[]).some(a=>a?.role==="assistant"),s=Ca(o,t,n);return s.escalated?{options:{...e,effort:s.effective},escalation:s}:{options:e,escalation:s}}i(Un,"applyFollowupEscalationToOptions");var _a={conversation:["hello","hi","hey","\u4F60\u597D","\u55E8","\u65E9\u4E0A\u597D","\u4E0B\u5348\u597D","\u665A\u4E0A\u597D"],lookup:["where is","which file","what file","where does","where do","located","defined","\u5728\u54EA\u4E2A\u6587\u4EF6","\u5728\u54EA","\u5728\u54EA\u91CC","\u54EA\u4E2A\u6587\u4EF6","\u54EA\u4E2A\u51FD\u6570","\u54EA\u91CC\u5B9A\u4E49","\u6587\u4EF6\u4F4D\u7F6E","\u5728\u54EA\u7BA1\u7406"],review:["review","code review","pull request","merge blocker","diff","changed files","\u5BA1\u67E5","\u4EE3\u7801\u5BA1\u67E5","review \u4E00\u4E0B","\u770B\u4E0B\u6539\u52A8","\u8BC4\u5BA1","pr"],bugfix:["bug","error","exception","failing","fix","failure","traceback","stack trace","runtime error","\u62A5\u9519","\u9519\u8BEF","\u5F02\u5E38","\u4FEE\u590D","\u5931\u8D25","\u6392\u67E5"],edit:["implement","add ","change ","modify ","update ","create ","write ","\u5B9E\u73B0","\u65B0\u589E","\u4FEE\u6539","\u6539\u4E00\u4E0B","\u521B\u5EFA","\u5199\u4E00\u4E2A"],refactor:["refactor","cleanup","restructure","simplify","decouple","rename","\u91CD\u6784","\u6E05\u7406","\u4F18\u5316","\u7B80\u5316","\u89E3\u8026","\u6574\u7406"],plan:["plan","design","architecture","migration","strategy","roadmap","\u8BA1\u5212","\u8BBE\u8BA1","\u67B6\u6784","\u65B9\u6848","\u7B56\u7565","\u8DEF\u7EBF\u56FE"],qa:["explain","what is","how does","help me understand","\u89E3\u91CA","\u4E3A\u4EC0\u4E48","\u662F\u4EC0\u4E48","\u600E\u4E48\u7406\u89E3","\u4EC0\u4E48\u610F\u601D","\u8BF4\u660E"]};function Ma(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}i(Ma,"escapeRegExp");function Pa(e){return/^[a-z0-9][a-z0-9 _-]*$/i.test(e)}i(Pa,"hasAsciiWordBoundaries");function E(e,t){if(!t)return!1;let o=t.trim();return o?Pa(o)?new RegExp(`(^|[^a-z0-9])${Ma(o)}([^a-z0-9]|$)`,"i").test(e):e.includes(t):!1}i(E,"textHasKeyword");function Aa(e,t){let o=0;for(let r of t)r&&E(e,r)&&(o+=r.length>=6||/[^\u0000-\u007f]/.test(r)?2:1);return o}i(Aa,"scoreTaskTypeKeywords");var Ia=/^(?:\s|[!,.?,。!?])*?(?:hi|hello|hey|yo|你好|嗨|哈喽|早上好|下午好|晚上好)(?:\s|[!,.?,。!?])*$/i,Oa=/\b(where is|which file|what file|where does|where do|defined in|located in|file manages|manages this|which component|which function)\b/i;var Na=/\b(review|code review|audit|pr|pull request|merge blocker|look at the changes|changed files)\b/i;var Da=/\b(plan|design|architecture|proposal|strategy|roadmap)\b/i;var La=/\b(debug|investigate|root cause|why is|why does|failing|failure|runtime error|stack trace|traceback)\b/i;var Fa=/\b(implement|add|change|modify|update|create|write|fix|refactor|rewrite|replace)\b/i;var Ua=/\b(docs?|documentation|readme|changelog|release notes?|spec|proposal|design doc|requirements?|prd|adr|hld|dd|guide|runbook|playbook|feature list|known issues?)\b/i;var Ba=/\b(?:api|backend|frontend|service|module|endpoint|component|architecture|package|migration|schema|database|auth|sdk|cli)\s+(?:docs?|documentation|guide|readme|changelog|spec|proposal|design doc|requirements?|prd|adr|hld|dd|runbook|playbook)\b|\b(?:docs?|documentation|guide|readme|changelog|spec|proposal|design doc|requirements?|prd|adr|hld|dd|runbook|playbook)\s+(?:for|about|on)\s+(?:the\s+)?(?:api|backend|frontend|service|module|endpoint|component|architecture|package|migration|schema|database|auth|sdk|cli)\b/i,Ha=/(?:API|\u540e\u7aef|\u524d\u7aef|\u670d\u52a1|\u6a21\u5757|\u63a5\u53e3|\u7ec4\u4ef6|\u67b6\u6784|\u5305|\u8fc1\u79fb|\u6570\u636e\u5e93|\u8ba4\u8bc1)(?:[\u4e00-\u9fffA-Za-z0-9_\-\/\\.\s]{0,8})(?:\u6587\u6863|\u8bf4\u660e\u6587\u6863|README|CHANGELOG|PRD|ADR|HLD|DD|\u6307\u5357)/u,$a=/\b(?:implementation|source code|code comments?|function|class|component|bug|script|tests?|ui)\b/i,ja=/\u4ee3\u7801\u6ce8\u91ca|\u5b9e\u73b0|\u51fd\u6570|\u7c7b|\u7ec4\u4ef6|bug|\u811a\u672c|\u6d4b\u8bd5|\u754c\u9762/u,qa=/\b(?:do not|don't|dont|without|no)\b[\s\S]{0,12}\b(?:change|modify|edit|touch|rewrite|update|mutate)\b[\s\S]{0,8}\bcode\b|\bno code changes?\b/i,Ga=/\u4e0d\u6539\u4ee3\u7801|\u4e0d\u8981\u6539\u4ee3\u7801|\u4e0d\u4fee\u6539\u4ee3\u7801|\u4e0d\u8981\u4fee\u6539\u4ee3\u7801|\u53ea\u6539\u6587\u6863|\u53ea\u66f4\u65b0\u6587\u6863|\u4ec5\u6539\u6587\u6863|\u4ec5\u66f4\u65b0\u6587\u6863/u,Wa=/\b(double[- ]check|re-check|recheck|second pass|second opinion|cross-check|cross check|independently verify|independent review|independent audit|strict audit|extra scrutiny|verify twice)\b/i;var Ka=/\b(code|implementation|function|class|component|module|endpoint|service|repo|repository|file|files|test|bug|feature|script|api|ui|backend|frontend)\b/i;var Xa=/\b(deploy|deployment|restart|reboot|migrate database|run migration|seed database|provision|install dependency|install package|upgrade dependency|kill process|start server|stop server|apply terraform)\b/i;var Ya=/^(?:\s|[!,.?,。!]*)?(?:你好|哈喽|早上好|下午好|晚上好)(?:\s|[!,.?,。!]*)*$/u,za=/在哪个文件|哪个文件|在哪定义|定义在|哪个函数|哪个组件|文件位置|在哪里/u,Va=/审查|评审|review一下|看下改动|代码改动|审阅/u,Qa=/计划|设计|架构|方案|策略|路线图/u,Za=/排查|定位问题|根因|为什么|报错|错误|异常|失败/u,Ja=/实现|新增|修改|创建|写一个|修复|重构|改一下|替换/u,ec=/文档|说明文档|设计文档|需求文档|PRD|ADR|HLD|DD|CHANGELOG|README|功能清单|已知问题/u,tc=/再检查|再审查|双重检查|第二遍|第二轮|二次审查|交叉检查|独立验证|独立审查|更强审查/u,Pn=/代码|实现|函数|类|组件|模块|接口|服务|仓库|文件|测试|bug|功能|脚本|API|界面|后端|前端/u,oc=/部署|重启|重启服务|迁移数据库|运行迁移|初始化数据库|安装依赖|升级依赖|杀进程|启动服务|停止服务|应用terraform/u,rc=/代码|实现|函数|类|组件|模块|接口|bug|功能|前端|后端|脚本/u,An=/实现|新增|修改|更新|创建|编写|修复|重构|补丁|重写|替换|编辑|重命名/u;function nc(e){return Ia.test(e)||Ya.test(e)}i(nc,"isGreetingOnlyPrompt");function oo(e){let t=e.trim();if(!t)return{primaryTask:"conversation",taskFamily:"conversation",actionability:"non_actionable",executionPattern:"direct",shouldUseRepoSignals:!1,requiresRoutingHeuristics:!1,reason:"Empty input is treated as non-actionable conversation."};if(nc(t))return{primaryTask:"conversation",taskFamily:"conversation",actionability:"non_actionable",executionPattern:"direct",shouldUseRepoSignals:!1,requiresRoutingHeuristics:!1,reason:"Pure greeting input should stay conversational and must not be escalated by repository state."};let o=Oa.test(t)||za.test(t),r=Na.test(t)||Va.test(t),n=Da.test(t)||Qa.test(t),s=La.test(t)||Za.test(t),a=Fa.test(t)||Ja.test(t);return r?{primaryTask:"review",taskFamily:"review",actionability:"actionable",executionPattern:"checked-direct",shouldUseRepoSignals:!0,requiresRoutingHeuristics:!0,reason:"Review work is actionable and benefits from harness assessment for accurate scoping."}:n?{primaryTask:"plan",taskFamily:"planning",actionability:"actionable",executionPattern:"coordinated",shouldUseRepoSignals:!0,requiresRoutingHeuristics:!0,reason:"Planning and design requests may benefit from coordinated execution."}:s?{primaryTask:"bugfix",taskFamily:"investigation",actionability:"actionable",executionPattern:"checked-direct",shouldUseRepoSignals:!0,requiresRoutingHeuristics:!0,reason:"Debugging and root-cause work starts as investigation."}:a?{primaryTask:"edit",taskFamily:"implementation",actionability:"actionable",executionPattern:"checked-direct",shouldUseRepoSignals:!0,requiresRoutingHeuristics:!0,reason:"Implementation and editing work is actionable and may later escalate if the evidence warrants it."}:o?{primaryTask:"lookup",taskFamily:"lookup",actionability:"actionable",executionPattern:"direct",shouldUseRepoSignals:!1,requiresRoutingHeuristics:!0,reason:"Lookup queries are actionable but lightweight \u2014 direct execution unless deeper analysis is requested."}:{primaryTask:"unknown",taskFamily:"ambiguous",actionability:"ambiguous",executionPattern:"direct",shouldUseRepoSignals:!1,requiresRoutingHeuristics:!0,reason:"Ambiguous requests need classification before the work approach is locked in."}}i(oo,"inferIntentGate");function ut(e){switch(e){case"conversation":return"conversation";case"lookup":case"qa":return"lookup";case"review":return"review";case"bugfix":return"investigation";case"plan":return"planning";case"edit":case"refactor":return"implementation";default:return"ambiguous"}}i(ut,"inferTaskFamilyFromPrimaryTask");function Bn(e){switch(e){case"conversation":case"lookup":return"direct";case"review":case"investigation":return"checked-direct";case"planning":case"implementation":return"coordinated";default:return"direct"}}i(Bn,"defaultExecutionPatternForFamily");function ic(e,t){let o=oo(e),r=t.taskFamily??ut(t.primaryTask),n=t.actionability??(r==="conversation"?"non_actionable":r==="ambiguous"?o.actionability:"actionable"),s=t.executionPattern??Bn(r);return{taskFamily:r,actionability:n,executionPattern:s}}i(ic,"deriveIntentFields");function Hn(e,t){let o=` ${e.toLowerCase()} `,r=/[\u3400-\u9fff]/u.test(e),n=Ua.test(e)||r&&ec.test(e),s=Ba.test(e)||r&&Ha.test(e),a=$a.test(e)||r&&ja.test(e),c=qa.test(e)||r&&Ga.test(e),d=Xa.test(e)||r&&oc.test(e),u=Ka.test(o)||r&&Pn.test(e),m=/\b(code|implementation|function|class|component|module|endpoint|service|bug|script|api|ui|backend|frontend)\b/i.test(o)||r&&Pn.test(e),l=/\b(implement|add|modify|update|create|write|fix|refactor|rewrite|replace|edit|patch|rename)\b/i.test(o)||r&&An.test(e),g=r&&rc.test(e),R=r&&An.test(e),_=/\b(monorepo|repo|repository|package|packages|architecture|migration)\b/i.test(o),S=/\b(refactor|rewrite|reorganize|migrate|split|merge|consolidate|rename)\b/i.test(o),f=/\b(code|implementation|function|class|component|module|endpoint|service|bug|script|api|ui|backend|frontend)\b/i.test(o)||g,L=/\b(implement|add|modify|update|create|write|fix|refactor|rewrite|replace|edit|patch|rename)\b/i.test(o)||R,w=f&&!s||a,I=_&&!s,p=n&&!d&&c;if(t.primaryTask==="review"&&!L&&!d)return n&&(p||!w)?"docs-only":"read-only";let O=t.primaryTask==="edit"||t.primaryTask==="refactor"||t.taskFamily==="implementation"||t.primaryTask==="bugfix"&&L||L&&w||S&&I;return p&&t.primaryTask!=="refactor"||n&&!d&&!w&&t.primaryTask!=="refactor"?"docs-only":d?"system":O?"code":"read-only"}i(Hn,"deriveMutationSurface");function sc(e,t){let o=/[\u3400-\u9fff]/u.test(e);return Wa.test(e)||o&&tc.test(e)||t.recommendedMode==="strict-audit"?"explicit-check":"default"}i(sc,"deriveAssuranceIntent");function $n(e){let t=` ${e.toLowerCase()} `,r=[...Object.entries(_a).map(([c,d])=>({task:c,score:Aa(t,d)}))].sort((c,d)=>d.score-c.score),n=r[0],s=r[1];if(!n||n.score===0)return{task:"unknown",confidence:na,reason:"Fallback task inference did not find enough strong signals, so it kept the task as unknown."};if(s&&n.score===s.score){let c=ac(e,n.task,s.task);return c?{task:c,confidence:Sn,reason:`Fallback task inference preferred "${c}" because the request used an explicit directive even though multiple task signals were present.`}:{task:"unknown",confidence:ia,reason:`Fallback task inference saw competing signals for "${n.task}" and "${s.task}", so it kept the task as unknown.`}}if(n.task==="qa"&&n.score<4)return{task:"unknown",confidence:sa,reason:"Fallback task inference saw a weak explanation-style signal, but not enough evidence to disable reasoning."};let a=Math.min(la,Sn+n.score*aa+Math.max(0,(n.score-(s?.score??0))*ca));return{task:n.task,confidence:a,reason:`Fallback task inference selected "${n.task}" from textual signals in the request.`}}i($n,"inferTaskSignal");function ac(e,t,o){let r=` ${e.toLowerCase()} `,n=E(r,"review")||E(r,"code review")||E(r,"merge blocker")||E(r,"\u5BA1\u67E5")||E(r,"\u8BC4\u5BA1"),s=E(r,"fix")||E(r,"bug")||E(r,"\u4FEE\u590D")||E(r,"\u62A5\u9519"),a=E(r,"plan")||E(r,"design")||E(r,"\u65B9\u6848")||E(r,"\u8BA1\u5212");return(t==="review"||o==="review")&&n&&!s?"review":(t==="bugfix"||o==="bugfix")&&s&&!n?"bugfix":(t==="plan"||o==="plan")&&a?"plan":null}i(ac,"resolveTiedTask");function mm(e){return $n(e).task}i(mm,"inferTaskType");function dt(e){switch(e){case"simple":return 0;case"moderate":return 1;case"complex":return 2;case"systemic":return 3;default:return 0}}i(dt,"complexityRank");function cc(e,t){return t&&dt(t)>dt(e)?t:e}i(cc,"maxComplexity");function lc(e,t,o){let r=oo(e);if(!r.requiresRoutingHeuristics){let a=r.primaryTask;return Dn(e,{primaryTask:a,confidence:r.actionability==="non_actionable"?.98:.9,riskLevel:"low",recommendedMode:On(a),recommendedThinkingDepth:In(a),complexity:"simple",workIntent:"new",requiresBrainstorm:!1,harnessProfile:"H0_DIRECT",taskFamily:r.taskFamily,actionability:r.actionability,executionPattern:r.executionPattern,routingSource:"fallback",routingAttempts:1,reason:r.reason},t,o)}let n=$n(e),s=n.task;return Dn(e,{primaryTask:s,taskFamily:ut(s),actionability:s==="unknown"?"ambiguous":"actionable",executionPattern:Bn(ut(s)),confidence:n.confidence,riskLevel:Wn(e,s),recommendedMode:On(s),recommendedThinkingDepth:In(s),complexity:"moderate",workIntent:"new",requiresBrainstorm:!1,harnessProfile:"H0_DIRECT",routingSource:"fallback",routingAttempts:1,reason:n.reason},t,o)}i(lc,"buildFallbackRoutingDecision");function jn(e){let t=e.primaryTask==="review"||e.primaryTask==="bugfix"||e.recommendedMode==="pr-review"||e.recommendedMode==="strict-audit"||e.recommendedMode==="investigation";return{harnessProfile:e.harnessProfile,evidenceHeavy:t,brainstorm:e.requiresBrainstorm,workIntent:e.workIntent}}i(jn,"buildProviderPolicyHintsForDecision");async function qn(e,t,o,r){let n=Fn(e),s=oo(t),a=lt({providerName:o.name,model:e.modelOverride??e.model,provider:o,prompt:t,options:e,reasoningMode:n}),c=lc(t,a,r),d=e.effort??le(n),u=n==="off"?"off":n==="auto"?c.recommendedThinkingDepth:va(n),m={...c,recommendedThinkingDepth:u,routingNotes:[...c.routingNotes??[],s.reason,"Heuristic routing only \u2014 LLM router skipped (FEATURE_061 Phase 1; FEATURE_193 retired post-routing calibration)."]};return{effort:d,promptOverlay:"",decision:m,providerPolicy:a}}i(qn,"createReasoningPlan");function Gn(e,t=.5){return Number.isFinite(e)?Math.max(0,Math.min(1,e)):t}i(Gn,"clampUnitInterval");function uc(e,t){let o=` ${e.toLowerCase()} `;return ha.some(r=>E(o,r))?"overwrite":pa.some(r=>E(o,r))?"append":t}i(uc,"inferWorkIntent");function dc(e,t){let o=` ${e.toLowerCase()} `,r=0;for(let n of eo.moderate)E(o,n)&&(r+=1);for(let n of eo.complex)E(o,n)&&(r+=2);for(let n of eo.systemic)E(o,n)&&(r+=3);return(t.primaryTask==="refactor"||t.primaryTask==="plan")&&(r+=2),t.riskLevel==="high"&&(r+=2),t.workIntent==="overwrite"&&(r+=1),r>=ba?"systemic":r>=ya?"complex":r>=ga?"moderate":"simple"}i(dc,"inferComplexity");function mc(e,t,o){let r=` ${e.toLowerCase()} `;return!!(fa.some(n=>E(r,n))||t.primaryTask==="plan"||t.primaryTask==="unknown"&&t.confidence<.7||o==="systemic"||t.workIntent==="overwrite"&&(t.primaryTask==="refactor"||t.riskLevel==="high"))}i(mc,"inferRequiresBrainstorm");function fc(e,t){let o=t.taskFamily??ut(t.primaryTask),r=Hn(e,{primaryTask:t.primaryTask,taskFamily:o}),n=[];return(t.complexity==="complex"||t.complexity==="systemic")&&n.push(`Complexity hint: ${t.complexity}. Assess whether the recommended harness fits the task scope.`),t.needsIndependentQA&&n.push("Independent QA was inferred from prompt signals. Verify whether explicit verification artifacts are needed before declaring the task done."),t.requiresBrainstorm&&n.push("Brainstorm/planning signal detected. Judge whether to plan-first via todo_update before executing."),r==="system"&&(t.riskLevel==="high"||t.workIntent==="overwrite")&&n.push("High-risk system mutation detected. Proceed with caution; consider checkpointing intermediate state."),{harnessProfile:"H0_DIRECT",upgradeCeiling:"H0_DIRECT",notes:n}}i(fc,"selectHarnessProfile");function In(e){switch(e){case"conversation":return"off";case"lookup":return"low";case"review":return"low";case"bugfix":case"edit":return"medium";case"refactor":case"plan":return"high";case"qa":return"off";default:return"medium"}}i(In,"getDefaultDepthForTask");function On(e){switch(e){case"conversation":return"conversation";case"lookup":return"lookup";case"review":return"pr-review";case"bugfix":return"investigation";case"plan":return"planning";default:return"implementation"}}i(On,"getExecutionModeForTask");function Wn(e,t){let o=e.toLowerCase();return t==="conversation"||t==="lookup"?"low":o.includes("security")||o.includes("auth")||o.includes("migration")||o.includes("database")||o.includes("schema")||o.includes("production")||o.includes("\u5B89\u5168")||o.includes("\u9274\u6743")||o.includes("\u6743\u9650")||o.includes("\u8FC1\u79FB")||o.includes("\u6570\u636E\u5E93")||o.includes("\u751F\u4EA7")?"high":t==="review"||t==="bugfix"||t==="plan"?"medium":"low"}i(Wn,"getRiskLevel");function pc(e,t,o){let r=.9,n=` ${e.toLowerCase()} `;return t.primaryTask==="review"?(r-=.12,t.reviewScale==="large"?r-=.16:t.reviewScale==="massive"&&(r-=.28)):t.primaryTask==="bugfix"?r-=.08:t.primaryTask==="plan"&&(r-=.24),t.riskLevel==="medium"?r-=.12:t.riskLevel==="high"&&(r-=.26),t.complexity==="moderate"?r-=.12:t.complexity==="complex"?r-=.28:t.complexity==="systemic"&&(r-=.42),t.requiresBrainstorm&&(r-=.18),t.workIntent==="overwrite"&&(r-=.08),/\b(strict review|must[- ]fix|independently verify|browser test|playwright|e2e|frontend verify)\b/.test(n)&&(r-=.2),o&&(o.changedFileCount>=3&&(r-=.12),o.changedLineCount>=to&&(r-=.14),o.changedLineCount>=Ln&&(r-=.14),o.touchedModuleCount>=2&&(r-=.16),(o.impactedModuleCount??0)>=2&&(r-=.14),o.crossModule&&(r-=.2),o.lowConfidence&&(r-=.08)),Gn(r,.5)}i(pc,"computeSoloBoundaryConfidence");function hc(e,t,o){let r=` ${e.toLowerCase()} `;return!!(/\b(must[- ]fix|strict review|audit|independently verify|browser test|playwright|e2e|console errors?|api check|db check)\b/.test(r)||t.primaryTask==="plan"||t.primaryTask==="qa"||t.riskLevel==="high"||t.complexity==="complex"||t.complexity==="systemic"||t.requiresBrainstorm||o&&(o.crossModule||o.lowConfidence||(o.impactedModuleCount??0)>=2||o.touchedModuleCount>=2||o.changedLineCount>=to))}i(hc,"computeNeedsIndependentQA");function gc(e,t,o,r){let n=e.recommendedMode,s=e.recommendedThinkingDepth,a=[];return r?(r.suggestedComplexity&&dt(r.suggestedComplexity)>dt(t)&&a.push(`Repository intelligence elevated task complexity to ${r.suggestedComplexity} (changedFiles=${r.changedFileCount}, touchedModules=${r.touchedModuleCount}, impactedModules=${r.impactedModuleCount??0}).`),r.crossModule&&a.push("Repository intelligence indicates cross-module impact; keep evidence and merge boundaries explicit."),r.lowConfidence&&a.push("Repository intelligence for the active area is low-confidence; re-query `module_context` / `symbol_context` (or `impact_estimate` for blast-radius questions) for a refined capsule before falling back to raw `read`/`grep`. Use direct file evidence only when a specific load-bearing claim needs byte-level verification."),r.investigationBias&&(e.primaryTask==="review"||e.primaryTask==="bugfix")&&n!=="investigation"?(n="investigation",(s==="off"||s==="low")&&(s="medium"),a.push("Repository intelligence shifted execution toward investigation because the active area is low-confidence or high-blast-radius.")):r.plannerBias&&e.primaryTask!=="review"&&e.primaryTask!=="bugfix"&&n==="implementation"&&(o==="complex"||o==="systemic")&&(n="planning",(s==="off"||s==="low")&&(s="medium"),a.push("Repository intelligence shifted execution toward planning because the task spans multiple modules or dependencies.")),{recommendedMode:n,recommendedThinkingDepth:s,repoNotes:a}):{recommendedMode:n,recommendedThinkingDepth:s,repoNotes:a}}i(gc,"applyRepoSignalsToDecision");function Nn(e,t){let o=t.exec(e);if(!o?.[1])return;let r=o[1].replace(/,/g,"").toLowerCase(),n=r.endsWith("k")?1e3:1,s=r.endsWith("k")?r.slice(0,-1):r,a=Number.parseFloat(s);if(!(!Number.isFinite(a)||a<=0))return Math.round(a*n)}i(Nn,"parsePromptInteger");function yc(e){let t=Nn(e,/(?:^|[\s(,])(\d[\d,]*(?:\.\d+)?k?)\s*(?:changed\s+)?files?\b/i),o=Nn(e,/(?:^|[\s(,])(\d[\d,]*(?:\.\d+)?k?)\s*(?:changed\s+)?lines?\b/i),r;return(t??0)>=xa||(o??0)>=Ln?r="massive":((t??0)>=Ta||(o??0)>=to)&&(r="large"),{changedFileCount:t,changedLineCount:o,reviewScale:r}}i(yc,"inferPromptReviewScale");function bc(e,t){return e?.reviewScale?e.reviewScale:yc(t??"").reviewScale}i(bc,"deriveReviewScaleFromSignals");function Dn(e,t,o,r){let n=t,s=ic(e,t),a=s.actionability==="actionable"&&s.taskFamily!=="conversation"&&s.taskFamily!=="lookup";t.primaryTask==="unknown"&&s.taskFamily==="ambiguous"&&(n={...t,recommendedMode:"implementation",recommendedThinkingDepth:"medium",reason:`${t.reason} Conservative fallback keeps balanced reasoning for ambiguous tasks.`}),n.primaryTask==="qa"&&n.confidence<ua&&(n={...n,primaryTask:"unknown",confidence:Math.min(n.confidence,da),riskLevel:Wn(e,"unknown"),recommendedMode:"implementation",recommendedThinkingDepth:"medium",reason:`${n.reason} Low-confidence QA routing was downgraded to unknown so reasoning stays available.`}),n.confidence<ma&&n.recommendedThinkingDepth==="off"&&(n={...n,primaryTask:"unknown",recommendedMode:"implementation",recommendedThinkingDepth:"medium",reason:`${n.reason} Low-confidence off-mode routing was upgraded to balanced reasoning for safety.`});let c=uc(e,n.workIntent),d=a?r?.repoSignals:void 0,u=dc(e,{...n,workIntent:c}),m=a?cc(u,d?.suggestedComplexity):u,l=t.reviewScale??bc(d,e),g=Hn(e,{primaryTask:n.primaryTask,taskFamily:s.taskFamily}),R=sc(e,n),_="H0_DIRECT",S=mc(e,{...n,workIntent:c,complexity:m,reviewScale:l,mutationSurface:g,assuranceIntent:R,topologyCeiling:_},m)||!!(d?.plannerBias&&(m==="complex"||m==="systemic")),f=Gn(t.soloBoundaryConfidence??pc(e,{primaryTask:n.primaryTask,complexity:m,riskLevel:n.riskLevel,requiresBrainstorm:S,workIntent:c,reviewScale:l},d),.5),L=t.needsIndependentQA??hc(e,{primaryTask:n.primaryTask,complexity:m,riskLevel:n.riskLevel,requiresBrainstorm:S,reviewScale:l},d),w=g==="read-only"||g==="docs-only"?R==="explicit-check":L,I=fc(e,{...n,workIntent:c,complexity:m,requiresBrainstorm:S,reviewScale:l,soloBoundaryConfidence:f,needsIndependentQA:w,mutationSurface:g,assuranceIntent:R,topologyCeiling:_}),{recommendedMode:p,recommendedThinkingDepth:O,repoNotes:ne}=gc({...n,taskFamily:s.taskFamily,actionability:s.actionability,executionPattern:s.executionPattern},u,m,d),F=p,M=O,N="direct";return s.taskFamily==="conversation"?(F="conversation",M="off"):s.taskFamily==="lookup"&&(F="lookup",M=O==="high"?"medium":O),{...n,taskFamily:s.taskFamily,actionability:s.actionability,executionPattern:N,mutationSurface:g,assuranceIntent:R,recommendedMode:F,recommendedThinkingDepth:M,workIntent:c,complexity:m,requiresBrainstorm:S,topologyCeiling:_,reviewScale:l,soloBoundaryConfidence:f,needsIndependentQA:w,harnessProfile:I.harnessProfile,upgradeCeiling:I.upgradeCeiling,routingSource:n.routingSource??"fallback",routingAttempts:n.routingAttempts??1,routingNotes:[...n.routingNotes??[],...I.notes,...ne,...a?[]:["Intent gate ignored repository scaling signals for this request."]]}}i(Dn,"stabilizeRoutingDecision");function mt(e,t){return Buffer.byteLength(JSON.stringify({systemPrompt:t,messages:e}),"utf8")}i(mt,"estimateProviderPayloadBytes");function ft(e){return e<16*1024?"small":e<64*1024?"medium":e<192*1024?"large":"xlarge"}i(ft,"bucketProviderPayloadSize");function Fe(e){let t=zo.exec(e);return t?[t[1].toUpperCase(),t[2]??""]:["",""]}i(Fe,"checkPromiseSignal");function Tc(){return process.env.KODAX_DEBUG_STREAM==="1"||process.env.KODAX_DEBUG_RESILIENCE==="1"}i(Tc,"shouldDebugResilience");function A(e,t){Tc()&&console.error(e,t)}i(A,"emitResilienceDebug");function Kn(e,t,o){let r=e.modelSelection.provider??t.provider,n=e.modelSelection.model??t.modelOverride??t.model,s=e.thinkingLevel,a=Te(r);if(!a.isConfigured())throw new Error(`Provider "${r}" not configured. Set ${a.getApiKeyEnv()}`);let c=fr(o,a,n);return{providerName:r,modelOverride:n,thinkingLevel:s,provider:a,contextWindow:c}}i(Kn,"resolvePerTurnProvider");function ro(e,t){if(!e.isConfigured())throw new Error(`Provider "${t}" not configured. Set ${e.getApiKeyEnv()}`)}i(ro,"assertProviderConfigured");var no=`You are KodaX, a helpful multi-provider coding agent. You can read, write, and edit files, and execute shell commands.
|
|
2
|
+
import{a as Yr}from"./chunk-UA744TZM.js";import{$ as xe,$a as et,$c as on,Ba as Rr,C as Ze,Ca as Sr,Cc as Gt,D as yr,Db as zr,Dc as Qr,Ec as Zr,Fc as T,Gc as de,Hc as Jr,Ic as en,Jc as tn,Na as Cr,O as br,Qa as _r,U as Tr,Va as Mr,Wa as qt,X as xr,Ya as Pr,Za as Ar,_a as Ir,aa as Je,ab as Or,ad as rn,bb as Nr,cb as Dr,d as pr,da as vr,db as C,e as X,eb as Lr,f as $,fb as Fr,g as hr,ga as kr,gb as Ur,gd as nn,ha as wr,hb as Br,ia as Er,ib as Hr,jb as $r,kb as Q,lb as ve,mb as jr,nb as ke,ob as tt,pa as jt,pb as qr,qb as Gr,qd as sn,rb as Wr,rd as ot,sb as Kr,tb as Xr,td as rt,ud as an,wd as cn,xd as ln,y as gr,yc as Vr}from"./chunk-RR7W7UF6.js";import{A as le,B as Bo,F as Ho,Ga as Ot,Ja as Te,O as $o,Q as jo,Ra as Nt,T as be,Va as qo,Wa as Go,Xa as Wo,Ya as Ko,_a as Xo,b as Me,c as Pe,d as Ae,e as Uo,pa as At,xa as It}from"./chunk-S4GVQO3W.js";import{Ba as Jo,Ca as er,Cb as or,Fd as Ht,Nd as $t,Qd as cr,Rd as lr,Sd as ur,Xd as dr,Yd as mr,_d as fr,dd as Ut,ed as Bt,f as ee,fd as rr,g as Ve,hd as nr,id as ir,j as zo,jd as sr,k as ue,kd as ar,m as Vo,mc as Oe,na as Qo,oa as Lt,ob as Ie,pb as Ft,wa as Zo,xb as Qe,yb as tr}from"./chunk-UGTK2JIJ.js";import{a as Dt,z as Yo}from"./chunk-ZL5CEANW.js";import{a as i}from"./chunk-V4WSBIXB.js";import{readFile as bs}from"fs/promises";var un=75;function Ts(e){return typeof e!="number"||e<=0?un:e<=2e5?60:e<=256e3?65:e<=5e5?70:75}i(Ts,"adaptiveTriggerPercent");var xs={enabled:!0};async function dn(e,t){let o=Zo("config.json"),r;try{let a=await vs(o);a?.compaction&&(r=a.compaction)}catch{}let n={...xs,...r,triggerPercent:un};t?.enabled!==void 0&&(n.enabled=t.enabled),t?.contextWindow!==void 0&&(n.contextWindow=t.contextWindow);let s=n.contextWindow??e;return n.triggerPercent=typeof t?.triggerPercent=="number"?t.triggerPercent:typeof r?.triggerPercent=="number"?r.triggerPercent:Ts(s),n}i(dn,"loadCompactionConfig");async function vs(e){try{let t=await bs(e,"utf-8");return JSON.parse(t)}catch{return null}}i(vs,"readConfigFile");var j;(function(e){e[e.TRANSIENT=0]="TRANSIENT",e[e.PERMANENT=1]="PERMANENT",e[e.TOOL_CALL_ID=2]="TOOL_CALL_ID",e[e.USER_ABORT=3]="USER_ABORT"})(j||(j={}));var ks=[/\bstream incomplete\b/i,/\bstream interrupted\b/i,/\bstream stalled\b/i,/\bdelayed response\b/i,/\btimed out\b/i,/\btimeout\b/i,/\bnetwork\b/i,/\bconnection error\b/i,/\bconnection reset\b/i,/\bconnection closed\b/i,/\bsocket hang up\b/i,/\bfetch failed\b/i,/\beconnrefused\b/i,/\beconnreset\b/i,/\betimedout\b/i,/\benotfound\b/i,/\beai_again\b/i,/\bother side closed\b/i,/\baborted\b/i,/网络错误/,/网络异常/,/连接超时/,/连接错误/,/连接失败/,/连接被拒绝/,/请求超时/,/服务繁忙/,/服务不可用/,/服务器错误/,/服务器内部错误/,/请求过多/,/频率限制/,/限流/,/过载/,/容量不足/];function mn(e){return ks.some(t=>t.test(e))}i(mn,"matchesTransientMessage");function ws(e){if(e.name==="StreamIncompleteError"||e.message.includes("Stream incomplete"))return{category:j.TRANSIENT,retryable:!0,maxRetries:3,retryDelay:2e3,shouldCleanup:!0};if(e.name==="AbortError")return{category:j.USER_ABORT,retryable:!1,maxRetries:0,retryDelay:0,shouldCleanup:!0};if(e instanceof Uo||e.message.includes("tool_call_id")||e.message.includes("tool result"))return{category:j.TOOL_CALL_ID,retryable:!0,maxRetries:1,retryDelay:1e3,shouldCleanup:!0};if(e instanceof Pe)return{category:j.TRANSIENT,retryable:!0,maxRetries:3,retryDelay:e.retryAfter??6e4,shouldCleanup:!0};if(e instanceof Ae)return{category:j.TRANSIENT,retryable:!0,maxRetries:3,retryDelay:e.isTimeout?5e3:2e3,shouldCleanup:!0};if(e instanceof Me){let o=e.message.toLowerCase();return mn(o)?{category:j.TRANSIENT,retryable:!0,maxRetries:3,retryDelay:2e3,shouldCleanup:!0}:{category:j.PERMANENT,retryable:!1,maxRetries:0,retryDelay:0,shouldCleanup:!0}}let t=e.message.toLowerCase();return mn(t)?{category:j.TRANSIENT,retryable:!0,maxRetries:2,retryDelay:2e3,shouldCleanup:!0}:{category:j.PERMANENT,retryable:!1,maxRetries:0,retryDelay:0,shouldCleanup:!0}}i(ws,"classifyError");function Wt(e,t){return new Promise((o,r)=>{if(t?.aborted){r(t.reason instanceof Error?t.reason:new DOMException("Request aborted","AbortError"));return}let n,s=t;if(!s){n=setTimeout(()=>{o()},e);return}let a=i(()=>{clearTimeout(n),s.removeEventListener("abort",a),r(s.reason instanceof Error?s.reason:new DOMException("Request aborted","AbortError"))},"onAbort");n=setTimeout(()=>{s.removeEventListener("abort",a),o()},e),s.addEventListener("abort",a,{once:!0})})}i(Wt,"waitForRetryDelay");var pn={requestTimeoutMs:6e5,streamIdleTimeoutMs:Number(process.env.KODAX_STREAM_IDLE_TIMEOUT_MS)||0,chunkTimeoutMs:3e4,maxRetries:4,maxRetryDelayMs:6e4,enableNonStreamingFallback:!0};function Kt(e,t,o){let r={...pn};if(t&&fn(r,t),o&&o.length>0){let n=o.find(s=>s.provider===e);if(n){let{provider:s,...a}=n;fn(r,a)}}return r}i(Kt,"resolveResilienceConfig");function fn(e,t){t.requestTimeoutMs!==void 0&&(e.requestTimeoutMs=t.requestTimeoutMs),t.streamIdleTimeoutMs!==void 0&&(e.streamIdleTimeoutMs=t.streamIdleTimeoutMs),t.chunkTimeoutMs!==void 0&&(e.chunkTimeoutMs=t.chunkTimeoutMs),t.maxRetries!==void 0&&(e.maxRetries=t.maxRetries),t.maxRetryDelayMs!==void 0&&(e.maxRetryDelayMs=t.maxRetryDelayMs),t.enableNonStreamingFallback!==void 0&&(e.enableNonStreamingFallback=t.enableNonStreamingFallback)}i(fn,"mergePartialConfig");var Es=[/\brate.?limit\b/i,/\btoo many requests\b/i,/\b429\b/,/\bquota exceeded\b/i,/\bapi credits?\b/i,/请求过多/,/频率限制/,/限流/,/配额/],hn=[/\boverloaded\b/i,/\bcapacity\b/i,/\bserver (error|busy)\b/i,/\bprovider service error\b/i,/\btry (again )?(a )?moment later\b/i,/\b(api|http|provider|status( code)?)\b[^\n]{0,40}\b5(00|02|03|29)\b/i,/\b5(00|02|03|29)\b[^\n]{0,40}\b(api|http|provider|server|status( code)?)\b/i,/\b503\b/,/\b502\b/,/\binternal server error\b/i,/\bservice unavailable\b/i,/服务繁忙/,/服务不可用/,/服务器错误/,/服务器内部错误/,/过载/,/容量不足/],Xt=[/\bconnection (error|reset|closed|refused|terminated)\b/i,/\bsocket hang up\b/i,/\bsocket closed\b/i,/\bfetch failed\b/i,/\beconnrefused\b/i,/\beconnreset\b/i,/\bepipe\b/i,/\benotfound\b/i,/\beai_again\b/i,/\bother side closed\b/i,/\bnetwork\b/i,/\baborted\b/i,/\bterminated\b/i,/\bpremature close\b/i,/\bund_err_socket\b/i,/\bund_err_closed\b/i,/\bund_err_aborted\b/i,/\bund_err_destroyed\b/i,/网络错误/,/网络异常/,/连接错误/,/连接失败/,/连接被拒绝/,/连接被重置/,/连接被终止/,/连接已终止/,/连接中断/],Yt=[/\btimed? ?out\b/i,/\betimedout\b/i,/\bheaders timeout\b/i,/\bbody timeout\b/i,/\bund_err_headers_timeout\b/i,/\bund_err_body_timeout\b/i,/\bund_err_connect_timeout\b/i,/连接超时/,/请求超时/,/响应超时/],gn=[/\bstream incomplete\b/i,/\bstream interrupted\b/i],Rs=[/\bstream stalled or delayed\b/i,/\b60s idle\b/i,/\bidle timeout\b/i],Ss=[/\bhard timeout\b/i,/\b10 minutes?\b/i,/\bapi hard timeout\b/i],Cs=[/reasoning_content/i,/thinking.{0,40}signature/i,/signature.{0,40}thinking/i],_s=[/\bcontext too long\b/i,/\bmaximum context\b/i,/\bcontext length\b/i,/\bcontext window\b/i,/\btoo many tokens\b/i],Ms=[/\b(401|403)\b/,/\b(auth|unauthorized|forbidden|api key|not configured|permission denied)\b/i];function nt(e,t){let o=yn(e);if(e.name==="AbortError")return{errorClass:"user_abort",failureStage:t??"before_first_delta",retryable:!1,maxRetries:0,baseRetryDelay:0};if(e instanceof Pe||D(o,Es)){let r=e instanceof Pe?e.retryAfter:void 0;return{errorClass:"rate_limit",failureStage:t??"before_first_delta",retryable:!0,maxRetries:3,baseRetryDelay:r??6e4}}return e instanceof Me&&D(o,hn)?{errorClass:"provider_overloaded",failureStage:t??"before_first_delta",retryable:!0,maxRetries:3,baseRetryDelay:5e3}:e.name==="StreamIncompleteError"||D(o,gn)?{errorClass:"incomplete_stream",failureStage:As(o,t),retryable:!0,maxRetries:3,baseRetryDelay:2e3}:D(o,Rs)?{errorClass:"stream_idle_timeout",failureStage:t??"mid_stream_text",retryable:!0,maxRetries:3,baseRetryDelay:3e3}:D(o,Ss)?{errorClass:"request_timeout",failureStage:t??"before_first_delta",retryable:!0,maxRetries:2,baseRetryDelay:5e3}:e instanceof Ae&&e.isTimeout||D(o,Yt)?{errorClass:"request_timeout",failureStage:t??"before_first_delta",retryable:!0,maxRetries:3,baseRetryDelay:5e3}:e instanceof Ae||D(o,Xt)?{errorClass:"connection_failure",failureStage:t??"before_first_delta",retryable:!0,maxRetries:3,baseRetryDelay:2e3}:e instanceof Me?D(o,[...Xt,...Yt])?{errorClass:"connection_failure",failureStage:t??"before_first_delta",retryable:!0,maxRetries:3,baseRetryDelay:2e3}:D(o,Cs)?{errorClass:"reasoning_content_required",failureStage:t??"before_first_delta",retryable:!0,maxRetries:1,baseRetryDelay:0}:{errorClass:"non_retryable_provider_error",failureStage:t??"before_first_delta",retryable:!1,maxRetries:0,baseRetryDelay:0}:D(o,hn)?{errorClass:"provider_overloaded",failureStage:t??"before_first_delta",retryable:!0,maxRetries:3,baseRetryDelay:5e3}:D(o,[...Xt,...Yt,...gn])?{errorClass:"connection_failure",failureStage:t??"before_first_delta",retryable:!0,maxRetries:2,baseRetryDelay:2e3}:{errorClass:"non_retryable_provider_error",failureStage:t??"before_first_delta",retryable:!1,maxRetries:0,baseRetryDelay:0}}i(nt,"classifyResilienceError");function Ps(e,t){if(t<=0)return!1;let o=yn(e);if(D(o,Ms))return!1;let r=nt(e);return r.errorClass==="provider_overloaded"||r.errorClass==="reasoning_content_required"||D(o,_s)}i(Ps,"isSessionRecoveryCandidateError");function D(e,t){return t.some(o=>o.test(e))}i(D,"matchesAny");function yn(e){let t=[],o=new Set,r=e,n=0,s=5;for(;r!=null&&n<s&&!o.has(r);){if(o.add(r),r instanceof Error){r.message&&t.push(r.message);let a=r.code;typeof a=="string"&&a.length>0&&t.push(a),r=r.cause}else if(typeof r=="string")t.push(r),r=void 0;else if(typeof r=="object"){let a=r.message;typeof a=="string"&&t.push(a);let c=r.code;typeof c=="string"&&t.push(c),r=r.cause}else break;n+=1}return t.join(" | ").toLowerCase()}i(yn,"collectErrorText");function As(e,t){return t||(/\btool.?input\b/i.test(e)||/\btool.?call\b/i.test(e)?"mid_stream_tool_input":/\bthinking\b/i.test(e)?"mid_stream_thinking":"mid_stream_text")}i(As,"inferStageForStreamError");var Is=0;function bn(){return`req_${Date.now()}_${++Is}`}i(bn,"nextRequestId");var Ne=class{static{i(this,"StableBoundaryTracker")}state;hasReceivedFirstDelta=!1;currentToolInputId;constructor(){this.state=this.createInitialState()}beginRequest(t,o,r,n=1,s=!1){this.state={requestId:bn(),provider:t,model:o,attempt:n,lastStableMessageIndex:r.length,executedToolCallIds:[...this.state.executedToolCallIds],pendingToolCallIds:[],visibleLiveTextLength:0,visibleThinkingLength:0,fallbackUsed:s,startedAt:Date.now()},this.hasReceivedFirstDelta=!1,this.currentToolInputId=void 0}markFirstDelta(){this.hasReceivedFirstDelta=!0}markTextDelta(t){this.hasReceivedFirstDelta||this.markFirstDelta(),this.state.visibleLiveTextLength+=t.length}markThinkingDelta(t){this.hasReceivedFirstDelta||this.markFirstDelta(),this.state.visibleThinkingLength+=t.length}markToolInputStart(t){this.hasReceivedFirstDelta||this.markFirstDelta(),this.currentToolInputId=t,this.state.pendingToolCallIds.includes(t)||this.state.pendingToolCallIds.push(t)}markToolExecuted(t){this.state.pendingToolCallIds=this.state.pendingToolCallIds.filter(o=>o!==t),this.state.executedToolCallIds.includes(t)||this.state.executedToolCallIds.push(t),this.currentToolInputId===t&&(this.currentToolInputId=void 0)}markAssistantComplete(t){this.state.lastStableMessageIndex=t.length,this.state.visibleLiveTextLength=0,this.state.visibleThinkingLength=0,this.state.pendingToolCallIds=[],this.hasReceivedFirstDelta=!1}inferFailureStage(){return this.hasReceivedFirstDelta?this.currentToolInputId?"mid_stream_tool_input":this.state.visibleThinkingLength>0&&this.state.visibleLiveTextLength===0?"mid_stream_thinking":this.state.executedToolCallIds.length>0?"post_tool_execution_pre_assistant_close":"mid_stream_text":"before_first_delta"}snapshot(){return{...this.state}}get hasReceivedDelta(){return this.hasReceivedFirstDelta}recoverToStableBoundary(t){let o=Math.min(this.state.lastStableMessageIndex,t.length),r=t.slice(0,o),n=[...this.state.pendingToolCallIds],s=[...this.state.executedToolCallIds];return{messages:r,droppedToolCallIds:n,executedToolCallIds:s}}reset(){this.state=this.createInitialState(),this.hasReceivedFirstDelta=!1,this.currentToolInputId=void 0}createInitialState(){return{requestId:bn(),provider:"",model:"",attempt:1,lastStableMessageIndex:0,executedToolCallIds:[],pendingToolCallIds:[],visibleLiveTextLength:0,visibleThinkingLength:0,fallbackUsed:!1,startedAt:Date.now()}}};function it(e,t,o){if(e.length===0)return[];let r=Os(e,o),n=Ns(r),s=t.filter(a=>!n.includes(a));return s.length>0?Ds(r,s):r}i(it,"reconstructMessagesWithToolGuard");function Os(e,t){if(t.length===0)return[...e];let o=new Set(t);return e.map(r=>{if(typeof r.content=="string")return r;let n=r.content.filter(s=>s.type==="tool_use"?!o.has(s.id):s.type==="tool_result"?!o.has(s.tool_use_id):!0);return n.length===0?{...r,content:[{type:"text",text:""}]}:{...r,content:n}})}i(Os,"filterIncompleteToolCalls");function Ns(e){let t=[];for(let o of e)if(typeof o.content!="string")for(let r of o.content)r.type==="tool_result"&&t.push(r.tool_use_id);return t}i(Ns,"collectToolResultIds");function Ds(e,t){let o=[...e],r=t.map(n=>({type:"tool_result",tool_use_id:n,content:"[Result preserved from previous attempt - tool already executed]"}));return r.length>0&&o.push({role:"user",content:r}),o}i(Ds,"appendMissingToolResults");var Ls=["before_request_accepted","before_first_delta"],Fs=["stream_idle_timeout","chunk_timeout","incomplete_stream","connection_failure"],De=class{static{i(this,"ProviderRecoveryCoordinator")}boundaryTracker;config;nonStreamingFallbackUsed=!1;thinkingSanitizationUsed=!1;constructor(t,o){this.boundaryTracker=t,this.config={requestTimeoutMs:o.requestTimeoutMs??6e5,streamIdleTimeoutMs:o.streamIdleTimeoutMs??6e4,chunkTimeoutMs:o.chunkTimeoutMs??3e4,maxRetries:o.maxRetries??4,maxRetryDelayMs:o.maxRetryDelayMs??6e4,enableNonStreamingFallback:o.enableNonStreamingFallback??!0}}decideRecoveryAction(t,o,r){if(!o.retryable)return{action:"manual_continue",ladderStep:4,delayMs:0,maxDelayMs:this.config.maxRetryDelayMs,shouldUseNonStreaming:!1,reasonCode:o.errorClass,failureStage:o.failureStage};if(o.errorClass==="reasoning_content_required"&&!this.thinkingSanitizationUsed)return this.thinkingSanitizationUsed=!0,{action:"sanitize_thinking_and_retry",ladderStep:2,delayMs:0,maxDelayMs:this.config.maxRetryDelayMs,shouldUseNonStreaming:!1,reasonCode:o.errorClass,failureStage:o.failureStage};if(r>=this.config.maxRetries)return{action:"manual_continue",ladderStep:4,delayMs:0,maxDelayMs:this.config.maxRetryDelayMs,shouldUseNonStreaming:!1,reasonCode:o.errorClass,failureStage:o.failureStage};let n=Bs(o.baseRetryDelay,r,this.config.maxRetryDelayMs),s=Hs(t),a=s!==void 0?Math.min(s,this.config.maxRetryDelayMs):n,{action:c,ladderStep:d,shouldUseNonStreaming:u}=this.selectRecoveryStrategy(o,r);return{action:c,ladderStep:d,delayMs:a,maxDelayMs:this.config.maxRetryDelayMs,shouldUseNonStreaming:u,reasonCode:o.errorClass,failureStage:o.failureStage,serverRetryAfterMs:s}}executeRecovery(t,o){switch(o.action){case"fresh_connection_retry":return this.executeFreshConnectionRetry(t,o);case"stable_boundary_retry":return this.executeStableBoundaryRetry(t,o);case"non_streaming_fallback":return this.executeNonStreamingFallback(t,o);case"manual_continue":return this.executeManualContinue(t,o);case"sanitize_thinking_and_retry":return this.executeSanitizeThinking(t,o)}}selectRecoveryStrategy(t,o){let r=t.failureStage,n=t.errorClass;return Fs.includes(n)&&this.config.enableNonStreamingFallback&&!this.nonStreamingFallbackUsed&&o>=2?(this.nonStreamingFallbackUsed=!0,{action:"non_streaming_fallback",ladderStep:3,shouldUseNonStreaming:!0}):Ls.includes(r)?{action:"fresh_connection_retry",ladderStep:1,shouldUseNonStreaming:!1}:{action:"stable_boundary_retry",ladderStep:2,shouldUseNonStreaming:!1}}executeFreshConnectionRetry(t,o){let r=this.boundaryTracker.snapshot();return{messages:[...t],droppedToolCallIds:[],executedToolCallIds:[...r.executedToolCallIds],fallbackUsed:this.nonStreamingFallbackUsed}}executeStableBoundaryRetry(t,o){let r=this.boundaryTracker.recoverToStableBoundary(t);return{messages:it(r.messages,r.executedToolCallIds,r.droppedToolCallIds),droppedToolCallIds:r.droppedToolCallIds,executedToolCallIds:r.executedToolCallIds,fallbackUsed:this.nonStreamingFallbackUsed}}executeNonStreamingFallback(t,o){let r=this.boundaryTracker.recoverToStableBoundary(t);return{messages:it(r.messages,r.executedToolCallIds,r.droppedToolCallIds),droppedToolCallIds:r.droppedToolCallIds,executedToolCallIds:r.executedToolCallIds,fallbackUsed:!0}}executeManualContinue(t,o){let r=this.boundaryTracker.snapshot();return{messages:[...t],droppedToolCallIds:[...r.pendingToolCallIds],executedToolCallIds:[...r.executedToolCallIds],fallbackUsed:this.nonStreamingFallbackUsed}}executeSanitizeThinking(t,o){let r=this.boundaryTracker.snapshot();return{messages:Us(t),droppedToolCallIds:[],executedToolCallIds:[...r.executedToolCallIds],fallbackUsed:this.nonStreamingFallbackUsed}}reset(){this.nonStreamingFallbackUsed=!1,this.thinkingSanitizationUsed=!1}};function Us(e){return e.map(t=>{if(t.role!=="assistant"||typeof t.content=="string"||!Array.isArray(t.content))return t;let o=t.content.filter(r=>r.type!=="thinking"&&r.type!=="redacted_thinking");return o.length===0?{...t,content:[{type:"text",text:""}]}:{...t,content:o}})}i(Us,"sanitizeThinkingBlocks");function Bs(e,t,o){let r=e*Math.pow(2,t-1),n=Math.random()*1e3;return Math.min(r+n,o)}i(Bs,"calculateRetryDelay");function Hs(e){if("retryAfter"in e&&typeof e.retryAfter=="number")return e.retryAfter*1e3}i(Hs,"extractServerRetryAfter");var st=process.env.KODAX_DEBUG_STREAM==="1"||process.env.KODAX_DEBUG_RESILIENCE==="1";function zt(e,t){st&&console.error("[resilience:classify]",{rawError:e.message,errorClass:t.errorClass,failureStage:t.failureStage,retryable:t.retryable,maxRetries:t.maxRetries})}i(zt,"telemetryClassify");function Vt(e,t){st&&console.error("[resilience:decision]",{action:e.action,ladderStep:e.ladderStep,attempt:t,delayMs:e.delayMs,maxDelayMs:e.maxDelayMs,reasonCode:e.reasonCode,failureStage:e.failureStage,shouldUseNonStreaming:e.shouldUseNonStreaming,serverRetryAfterMs:e.serverRetryAfterMs})}i(Vt,"telemetryDecision");function Qt(e){st&&console.error("[resilience:boundary]",{requestId:e.requestId,provider:e.provider,attempt:e.attempt,lastStableMessageIndex:e.lastStableMessageIndex,executedToolCallIds:e.executedToolCallIds,pendingToolCallIds:e.pendingToolCallIds,visibleLiveTextLength:e.visibleLiveTextLength,visibleThinkingLength:e.visibleThinkingLength,fallbackUsed:e.fallbackUsed,failureStage:e.failureStage})}i(Qt,"telemetryBoundary");function at(e,t){st&&console.error("[resilience:recovery]",{action:e,droppedToolCallIds:t.droppedToolCallIds,executedToolCallIds:t.executedToolCallIds,fallbackUsed:t.fallbackUsed})}i(at,"telemetryRecovery");function Le(e,t){if(!t||t.length===0)return e;let o=[{type:"text",text:e}];for(let r of t){if(r.kind!=="image")throw new Dt("MODEL_INPUT_UNSUPPORTED",`${r.kind} artifacts cannot be attached to the provider prompt yet.`,{detail:"Only image artifacts are currently lowered into provider prompt content."});o.push({type:"image",path:r.path,mediaType:r.mediaType})}return o}i(Le,"buildPromptMessageContent");function Zt(e){return e._truncated===!0||e._salvaged===!0&&sn(e.name)}i(Zt,"isUntrustedSalvage");function xn(e){let t=[];for(let o of e){if(Zt(o)){t.push(`${o.name}: incomplete input (salvaged from malformed/truncated JSON)`);continue}let r=ot(o.name),n=o.input??{};for(let s of r)(n[s]===void 0||n[s]===null||n[s]==="")&&t.push(`${o.name}: missing '${s}'`)}return t}i(xn,"checkIncompleteToolCalls");function qd(e,t=400){return e.length<=t?e:`${e.slice(0,Math.max(0,t-3))}...`}i(qd,"truncateText");function vn(e){if(!e)return"";if(typeof e.lastText=="string"&&e.lastText.trim())return e.lastText;let t=e.messages?.[e.messages.length-1];return!t||t.role!=="assistant"?"":typeof t.content=="string"?t.content:t.content.map(o=>("text"in o?o.text:"")||"").join("")}i(vn,"extractMessageText");function $s(e){return e==="running"||e==="planned"}i($s,"isUnconvergedVerdict");function js(e){let t=e.trim();return t===""||t==="..."}i(js,"isPlaceholderOnlyAssistantText");function qs(e){let t=vn(e);return js(t)?"":t}i(qs,"extractFinalAssistantText");function Qd(e,t,o){if(!e.messages)return e;let r=qs(e);if($s(e.managedTask?.verdict?.status)||e.interrupted&&!r)return e;let n=t.context?.inputArtifacts,s=e.artifactLedger??Ht(e.messages),a=Gs(e.messages,o,r,n),c=e.contextTokenSnapshot?Lr(a,e.contextTokenSnapshot):void 0;return{...e,messages:a,artifactLedger:s,contextTokenSnapshot:c}}i(Qd,"reshapeToUserConversation");function Gs(e,t,o,r){let n=e,s=n[0];s?.role==="system"&&typeof s.content=="string"&&!s.content.startsWith($t)&&(n=n.slice(1)),n=Jt(n);let c=!n.some(u=>u.role==="user"&&ct(u)===t);c&&n[0]?.role==="system"&&typeof n[0].content=="string"&&n[0].content.startsWith($t)&&n.some(l=>l.role==="user")&&(c=!1),c&&(n=[...n,{role:"user",content:Le(t,r)}]);let d=n[n.length-1];return d?.role==="assistant"&&typeof d.content=="string"&&d.content===o||(d?.role==="assistant"?n=[...n.slice(0,-1),{role:"assistant",content:o}]:n=[...n,{role:"assistant",content:o}]),[...n]}i(Gs,"preserveTranscriptForRoundExit");function Jt(e){let t=e.length;for(;t>=2;){let o=e[t-2],r=e[t-1];if(o.role==="user"&&r.role==="assistant"&&Ks(o)){t-=2;continue}break}return e.slice(0,t)}i(Jt,"normalizeLoadedSessionMessages");var Ws=/^\s*You are the (Scout|Planner|Generator|Evaluator) role\b/;function Ks(e){if(e.role!=="user")return!1;let t=typeof e.content=="string"?e.content:Xs(e.content);return Ws.test(t)}i(Ks,"isRolePromptShapedUser");function Xs(e){let t=e[0];return t?.type==="text"&&typeof t.text=="string"?t.text:""}i(Xs,"extractLeadingTextBlock");function Tn(e){return typeof e=="string"?e:e.filter(t=>t.type==="text").map(t=>t.text).join(`
|
|
3
|
+
`)}i(Tn,"extractPromptComparableText");function ct(e){if(!(!e||e.role!=="user"))return Tn(e.content)}i(ct,"extractComparableUserMessageText");async function kn(e,t){if(e.session?.initialMessages&&e.session.initialMessages.length>0){let o=[...e.session.initialMessages],n=!(e.session.initialExtensionState!==void 0||e.session.initialExtensionRecords!==void 0)&&e.session.storage&&t?await e.session.storage.load(t).catch(()=>null):null;return{messages:o,title:Bt(o),errorMetadata:n?.errorMetadata,loadedExtensionState:e.session.initialExtensionState??n?.extensionState,loadedExtensionRecords:e.session.initialExtensionRecords??n?.extensionRecords}}if(e.session?.storage&&t){let o=await e.session.storage.load(t);if(o)return{messages:Jt(o.messages),title:o.title,errorMetadata:o.errorMetadata,loadedExtensionState:o.extensionState,loadedExtensionRecords:o.extensionRecords}}return{messages:[],title:""}}i(kn,"resolveInitialMessages");function wn(e,t,o,r){let n=e[e.length-1];return ct(n)===t?r!==void 0&&n!==void 0&&n.turnId===void 0?[...e.slice(0,-1),{...n,turnId:r}]:e:[...e,{role:"user",content:Le(t,o),...r!==void 0?{turnId:r}:{},timestamp:new Date().toISOString()}]}i(wn,"appendPromptIfNotDuplicate");async function En(e){let t=e.session?.id;if(t)return t;if(!(e.session?.autoResume||e.session?.resume))return;let r=e.session?.storage;if(!r?.list)return;let n=await r.list(e.context?.gitRoot??void 0);return n.length>0?n[0].id:void 0}i(En,"discoverAutoResumeSessionId");function Ys(e){return At(e)?"builtin":Ot(e)?"runtime":It(e)?"custom":"unknown"}i(Ys,"detectProviderSourceKind");function zs(e,t){return e?e.getCapabilityProfile():t??{transport:"native-api",conversationSemantics:"full-history",mcpSupport:"none"}}i(zs,"resolveCapabilityProfile");function Vs(e,t,o){return e?e.getReasoningCapability(t):o??"unknown"}i(Vs,"resolveReasoningCapability");function Qs(e){let t=jo(zs(e.provider,e.capabilityProfile));return{provider:e.providerName,model:e.model,sourceKind:Ys(e.providerName),transport:t.transport,conversationSemantics:t.conversationSemantics,mcpSupport:t.mcpSupport,contextFidelity:t.contextFidelity,toolCallingFidelity:t.toolCallingFidelity,sessionSupport:t.sessionSupport,longRunningSupport:t.longRunningSupport,multimodalSupport:t.multimodalSupport,evidenceSupport:t.evidenceSupport,reasoningCapability:Vs(e.provider,e.model,e.reasoningCapability)}}i(Qs,"buildProviderCapabilitySnapshot");function Zs(e){return!!e?.inputArtifacts?.some(t=>t.kind==="image")}i(Zs,"detectMultimodalContext");function Js(e){if(!e)return{};let t=e.toLowerCase();return{evidenceHeavy:/merge blocker|review|strict audit|runtime error|stack trace|stderr|failing test|evidence/.test(t)?!0:void 0}}i(Js,"inferPromptPolicyHints");function we(...e){return e.find(t=>t!==void 0)}i(we,"pickBoolean");function ea(e){let t=e.context??e.options?.context,o=Js(e.prompt);return{longRunning:we(e.hints?.longRunning,t?.providerPolicyHints?.longRunning,o.longRunning),harnessProfile:e.hints?.harnessProfile??t?.providerPolicyHints?.harnessProfile,evidenceHeavy:we(e.hints?.evidenceHeavy,t?.providerPolicyHints?.evidenceHeavy,o.evidenceHeavy),multimodal:we(e.hints?.multimodal,t?.providerPolicyHints?.multimodal,Zs(t),o.multimodal),capabilityRuntime:we(e.hints?.capabilityRuntime,t?.providerPolicyHints?.capabilityRuntime,o.capabilityRuntime),mcpRequired:we(e.hints?.mcpRequired,t?.providerPolicyHints?.mcpRequired,o.mcpRequired),brainstorm:we(e.hints?.brainstorm,t?.providerPolicyHints?.brainstorm,o.brainstorm),workIntent:e.hints?.workIntent??t?.providerPolicyHints?.workIntent??o.workIntent}}i(ea,"resolveProviderPolicyHints");function te(e,t){e.some(o=>o.code===t.code)||e.push(t)}i(te,"pushIssue");function ta(e,t){let o=new Set;e.transport==="cli-bridge"&&o.add("Provider uses a CLI bridge rather than a native API, so semantic parity should not be assumed."),e.conversationSemantics==="last-user-message"&&o.add("Provider forwards only the latest user message instead of preserving full-history semantics.");for(let r of t)o.add(r.detail);return Array.from(o)}i(ta,"buildRoutingNotes");function oa(e){return e.length===0?"No provider-policy constraints detected.":e.map(t=>`${t.severity.toUpperCase()}: ${t.summary}`).join(" | ")}i(oa,"summarizeIssues");function Rn(e){return[...[`[Provider Policy] provider=${e.snapshot.provider}${e.snapshot.model?` model=${e.snapshot.model}`:""}; status=${e.status}.`,`[Provider Semantics] transport=${e.snapshot.transport}; context=${e.snapshot.contextFidelity}; toolCalling=${e.snapshot.toolCallingFidelity}; session=${e.snapshot.sessionSupport}; longRunning=${e.snapshot.longRunningSupport}; multimodal=${e.snapshot.multimodalSupport}; evidence=${e.snapshot.evidenceSupport}; mcp=${e.snapshot.mcpSupport}; reasoning=${e.snapshot.reasoningCapability}.`],...e.issues.map(o=>`[Provider Constraint] ${o.severity.toUpperCase()}: ${o.detail}`)]}i(Rn,"buildProviderPolicyPromptNotes");function lt(e){let t=Qs({providerName:e.providerName,model:e.model,provider:e.provider,capabilityProfile:e.capabilityProfile,reasoningCapability:e.reasoningCapability}),o=ea(e),r=[];return o.multimodal&&t.multimodalSupport==="none"&&te(r,{code:"multimodal-unsupported",severity:"block",summary:"multimodal requests are unsupported on this provider",detail:"This flow requests multimodal or image semantics, but the selected provider only exposes text-only behavior."}),o.mcpRequired&&t.mcpSupport==="none"?te(r,{code:"mcp-required",severity:"block",summary:"native MCP semantics are unavailable on this provider",detail:"This flow explicitly requires MCP-native behavior, but the selected provider reports no native MCP support."}):o.capabilityRuntime&&t.mcpSupport==="none"&&te(r,{code:"capability-runtime-limited",severity:"warn",summary:"capability-oriented flows are constrained by provider semantics",detail:"Capability or MCP-oriented workflows may lose parity because the provider does not expose native MCP semantics."}),o.longRunning&&(t.longRunningSupport==="none"||t.sessionSupport==="stateless"||t.contextFidelity==="lossy"?te(r,{code:"long-running-blocked",severity:"block",summary:"long-running execution is unsafe on this provider",detail:"Long-running flows require durable session semantics and reliable context fidelity, but this provider reports lossy or stateless behavior."}):(t.longRunningSupport==="limited"||t.sessionSupport==="limited")&&te(r,{code:"long-running-limited",severity:"warn",summary:"long-running execution is degraded on this provider",detail:"Long-running flows may behave inconsistently because this provider only offers limited session or long-running support."})),(o.evidenceHeavy===!0||e.taskType==="review"||e.taskType==="bugfix"||e.executionMode==="pr-review"||e.executionMode==="strict-audit"||e.executionMode==="investigation")&&(t.contextFidelity==="lossy"&&te(r,{code:"evidence-context-loss",severity:"warn",summary:"evidence-heavy work is constrained by lossy context semantics",detail:"Evidence-heavy routing remains available, but this provider can lose prior-turn context and should not be treated as equivalent to full-history providers."}),t.evidenceSupport==="limited"&&te(r,{code:"evidence-support-limited",severity:"warn",summary:"evidence-heavy work may lose fidelity on this provider",detail:"This provider only reports limited evidence support, so review and investigation flows may need extra caution."})),e.reasoningMode!=="off"&&(t.reasoningCapability==="prompt-only"||t.reasoningCapability==="none")&&te(r,{code:"reasoning-control-limited",severity:"warn",summary:"native reasoning control is unavailable on this provider",detail:"Reasoning remains usable, but the provider cannot enforce native reasoning controls beyond prompt-level guidance."}),{status:r.some(a=>a.severity==="block")?"block":r.length>0?"warn":"allow",snapshot:t,issues:r,routingNotes:ta(t,r),summary:oa(r)}}i(lt,"evaluateProviderPolicy");var ra="off",na=.4,ia=.42,sa=.45,Sn=.5,aa=.06,ca=.04,la=.86,ua=.75,da=.49,ma=.5;var fa=["brainstorm","explore","explore options","option framing","tradeoff","trade-off","safest way","figure out","design first","\u65B9\u6848","\u601D\u8DEF","\u5148\u60F3","\u5148\u8BBE\u8BA1","\u5148\u5206\u6790","\u5148\u8BA8\u8BBA"],pa=["continue","extend","build on","follow up","append","add to","based on the existing","\u63A5\u7740","\u7EE7\u7EED","\u8865\u5145","\u8FFD\u52A0","\u5EF6\u7EED","\u6269\u5C55\u73B0\u6709"],ha=["rewrite","replace","overwrite","from scratch","start over","regenerate","redo","\u91CD\u5199","\u66FF\u6362","\u8986\u76D6","\u63A8\u5012\u91CD\u6765","\u5168\u90E8\u6539\u6389","\u91CD\u65B0\u505A"],eo={simple:[],moderate:["screen","component","endpoint","service","feature","\u6A21\u5757","\u529F\u80FD","\u9875\u9762"],complex:["migration","architecture","cross-package","multi-step","pipeline","state machine","refactor","monorepo","across packages","integration","\u8FC1\u79FB","\u67B6\u6784","\u8DE8\u5305","\u91CD\u6784","\u6D41\u7A0B"],systemic:["system-wide","orchestrate","multi-agent","control plane","runtime substrate","whole repo","entire repo","across the monorepo","\u5168\u4ED3","\u5168\u5C40","\u6574\u4F53\u67B6\u6784","\u63A7\u5236\u9762","\u591A\u667A\u80FD\u4F53"]},ga=2,ya=4,ba=6,Ta=10,to=1200;var xa=30,Ln=4e3;function Fn(e){return e.reasoningMode?e.reasoningMode:e.thinking===!0?"auto":e.thinking===!1?"off":ra}i(Fn,"resolveReasoningMode");function va(e){return Ho(e)}i(va,"reasoningModeToDepth");var Cn={none:0,minimal:0,auto:1,low:2,medium:3,high:4,xhigh:5,max:6};function _n(e){return Cn[e]??Cn.medium}i(_n,"effortRank");function ka(e,t){let o=_n(e),r=_n(t);return o<r?-1:o>r?1:0}i(ka,"compareEfforts");function Mn(e,t){return ka(e,t)>0?t:e}i(Mn,"clampEffort");function mm(e,t){if(e==="none")return"none";if(!t)return e;let o=t.default?le(t.default):e,r=t.max?Mn(o,le(t.max)):o;return Mn(r,e)}i(mm,"resolveRoleEffort");var wa=Object.freeze(["\u4E0D\u5BF9","\u9519\u4E86","\u6709\u95EE\u9898","\u771F\u7684\u5417","\u4F60\u786E\u5B9A","\u4E0D\u662F\u8FD9\u6837","\u5F04\u9519\u4E86","\u641E\u9519\u4E86","\u641E\u53CD\u4E86","\u8FD9\u4E0D\u5BF9","\u4E0D\u6B63\u786E","\u7B54\u9519","\u56DE\u7B54\u9519","that's wrong","that is wrong","that's not right","that is not right","are you sure","not really","this is wrong","this is incorrect","that's incorrect","that is incorrect","you're wrong","you are wrong"]),Ea=Object.freeze(["\u4ED4\u7EC6","\u6DF1\u5165","\u8BA4\u771F","\u518D\u770B\u770B","\u518D\u60F3\u60F3","\u60F3\u6E05\u695A","\u7528\u5FC3","\u6DF1\u5EA6\u5206\u6790","\u4ED4\u7EC6\u5206\u6790","\u8BA4\u771F\u5206\u6790","\u5F7B\u5E95","think harder","think more carefully","look more carefully","dig deeper","be thorough","more careful","more carefully","reconsider","reexamine","re-examine"]);function Ra(e,t){if(!e)return{category:null,matched:null};let o=e.toLowerCase();if(t)for(let r of wa){let n=r.toLowerCase();if(o.includes(n)||e.includes(r))return{category:"doubt",matched:r}}for(let r of Ea){let n=r.toLowerCase();if(o.includes(n)||e.includes(r))return{category:"deepen",matched:r}}return{category:null,matched:null}}i(Ra,"detectFollowupSignal");function Sa(e){switch(e){case"auto":return"low";case"low":return"medium";case"medium":return"high";default:return e}}i(Sa,"escalateEffort");function Ca(e,t,o){let r=Ra(t,o);if(r.category===null)return{effective:e,escalated:!1,signal:r};let n=Sa(e);return n===e?{effective:e,escalated:!1,signal:r}:{effective:n,escalated:!0,signal:r}}i(Ca,"applyFollowupEscalation");function Un(e,t){let o=e.effort??le(Fn(e)),n=(e.session?.initialMessages??[]).some(a=>a?.role==="assistant"),s=Ca(o,t,n);return s.escalated?{options:{...e,effort:s.effective},escalation:s}:{options:e,escalation:s}}i(Un,"applyFollowupEscalationToOptions");var _a={conversation:["hello","hi","hey","\u4F60\u597D","\u55E8","\u65E9\u4E0A\u597D","\u4E0B\u5348\u597D","\u665A\u4E0A\u597D"],lookup:["where is","which file","what file","where does","where do","located","defined","\u5728\u54EA\u4E2A\u6587\u4EF6","\u5728\u54EA","\u5728\u54EA\u91CC","\u54EA\u4E2A\u6587\u4EF6","\u54EA\u4E2A\u51FD\u6570","\u54EA\u91CC\u5B9A\u4E49","\u6587\u4EF6\u4F4D\u7F6E","\u5728\u54EA\u7BA1\u7406"],review:["review","code review","pull request","merge blocker","diff","changed files","\u5BA1\u67E5","\u4EE3\u7801\u5BA1\u67E5","review \u4E00\u4E0B","\u770B\u4E0B\u6539\u52A8","\u8BC4\u5BA1","pr"],bugfix:["bug","error","exception","failing","fix","failure","traceback","stack trace","runtime error","\u62A5\u9519","\u9519\u8BEF","\u5F02\u5E38","\u4FEE\u590D","\u5931\u8D25","\u6392\u67E5"],edit:["implement","add ","change ","modify ","update ","create ","write ","\u5B9E\u73B0","\u65B0\u589E","\u4FEE\u6539","\u6539\u4E00\u4E0B","\u521B\u5EFA","\u5199\u4E00\u4E2A"],refactor:["refactor","cleanup","restructure","simplify","decouple","rename","\u91CD\u6784","\u6E05\u7406","\u4F18\u5316","\u7B80\u5316","\u89E3\u8026","\u6574\u7406"],plan:["plan","design","architecture","migration","strategy","roadmap","\u8BA1\u5212","\u8BBE\u8BA1","\u67B6\u6784","\u65B9\u6848","\u7B56\u7565","\u8DEF\u7EBF\u56FE"],qa:["explain","what is","how does","help me understand","\u89E3\u91CA","\u4E3A\u4EC0\u4E48","\u662F\u4EC0\u4E48","\u600E\u4E48\u7406\u89E3","\u4EC0\u4E48\u610F\u601D","\u8BF4\u660E"]};function Ma(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}i(Ma,"escapeRegExp");function Pa(e){return/^[a-z0-9][a-z0-9 _-]*$/i.test(e)}i(Pa,"hasAsciiWordBoundaries");function E(e,t){if(!t)return!1;let o=t.trim();return o?Pa(o)?new RegExp(`(^|[^a-z0-9])${Ma(o)}([^a-z0-9]|$)`,"i").test(e):e.includes(t):!1}i(E,"textHasKeyword");function Aa(e,t){let o=0;for(let r of t)r&&E(e,r)&&(o+=r.length>=6||/[^\u0000-\u007f]/.test(r)?2:1);return o}i(Aa,"scoreTaskTypeKeywords");var Ia=/^(?:\s|[!,.?,。!?])*?(?:hi|hello|hey|yo|你好|嗨|哈喽|早上好|下午好|晚上好)(?:\s|[!,.?,。!?])*$/i,Oa=/\b(where is|which file|what file|where does|where do|defined in|located in|file manages|manages this|which component|which function)\b/i;var Na=/\b(review|code review|audit|pr|pull request|merge blocker|look at the changes|changed files)\b/i;var Da=/\b(plan|design|architecture|proposal|strategy|roadmap)\b/i;var La=/\b(debug|investigate|root cause|why is|why does|failing|failure|runtime error|stack trace|traceback)\b/i;var Fa=/\b(implement|add|change|modify|update|create|write|fix|refactor|rewrite|replace)\b/i;var Ua=/\b(docs?|documentation|readme|changelog|release notes?|spec|proposal|design doc|requirements?|prd|adr|hld|dd|guide|runbook|playbook|feature list|known issues?)\b/i;var Ba=/\b(?:api|backend|frontend|service|module|endpoint|component|architecture|package|migration|schema|database|auth|sdk|cli)\s+(?:docs?|documentation|guide|readme|changelog|spec|proposal|design doc|requirements?|prd|adr|hld|dd|runbook|playbook)\b|\b(?:docs?|documentation|guide|readme|changelog|spec|proposal|design doc|requirements?|prd|adr|hld|dd|runbook|playbook)\s+(?:for|about|on)\s+(?:the\s+)?(?:api|backend|frontend|service|module|endpoint|component|architecture|package|migration|schema|database|auth|sdk|cli)\b/i,Ha=/(?:API|\u540e\u7aef|\u524d\u7aef|\u670d\u52a1|\u6a21\u5757|\u63a5\u53e3|\u7ec4\u4ef6|\u67b6\u6784|\u5305|\u8fc1\u79fb|\u6570\u636e\u5e93|\u8ba4\u8bc1)(?:[\u4e00-\u9fffA-Za-z0-9_\-\/\\.\s]{0,8})(?:\u6587\u6863|\u8bf4\u660e\u6587\u6863|README|CHANGELOG|PRD|ADR|HLD|DD|\u6307\u5357)/u,$a=/\b(?:implementation|source code|code comments?|function|class|component|bug|script|tests?|ui)\b/i,ja=/\u4ee3\u7801\u6ce8\u91ca|\u5b9e\u73b0|\u51fd\u6570|\u7c7b|\u7ec4\u4ef6|bug|\u811a\u672c|\u6d4b\u8bd5|\u754c\u9762/u,qa=/\b(?:do not|don't|dont|without|no)\b[\s\S]{0,12}\b(?:change|modify|edit|touch|rewrite|update|mutate)\b[\s\S]{0,8}\bcode\b|\bno code changes?\b/i,Ga=/\u4e0d\u6539\u4ee3\u7801|\u4e0d\u8981\u6539\u4ee3\u7801|\u4e0d\u4fee\u6539\u4ee3\u7801|\u4e0d\u8981\u4fee\u6539\u4ee3\u7801|\u53ea\u6539\u6587\u6863|\u53ea\u66f4\u65b0\u6587\u6863|\u4ec5\u6539\u6587\u6863|\u4ec5\u66f4\u65b0\u6587\u6863/u,Wa=/\b(double[- ]check|re-check|recheck|second pass|second opinion|cross-check|cross check|independently verify|independent review|independent audit|strict audit|extra scrutiny|verify twice)\b/i;var Ka=/\b(code|implementation|function|class|component|module|endpoint|service|repo|repository|file|files|test|bug|feature|script|api|ui|backend|frontend)\b/i;var Xa=/\b(deploy|deployment|restart|reboot|migrate database|run migration|seed database|provision|install dependency|install package|upgrade dependency|kill process|start server|stop server|apply terraform)\b/i;var Ya=/^(?:\s|[!,.?,。!]*)?(?:你好|哈喽|早上好|下午好|晚上好)(?:\s|[!,.?,。!]*)*$/u,za=/在哪个文件|哪个文件|在哪定义|定义在|哪个函数|哪个组件|文件位置|在哪里/u,Va=/审查|评审|review一下|看下改动|代码改动|审阅/u,Qa=/计划|设计|架构|方案|策略|路线图/u,Za=/排查|定位问题|根因|为什么|报错|错误|异常|失败/u,Ja=/实现|新增|修改|创建|写一个|修复|重构|改一下|替换/u,ec=/文档|说明文档|设计文档|需求文档|PRD|ADR|HLD|DD|CHANGELOG|README|功能清单|已知问题/u,tc=/再检查|再审查|双重检查|第二遍|第二轮|二次审查|交叉检查|独立验证|独立审查|更强审查/u,Pn=/代码|实现|函数|类|组件|模块|接口|服务|仓库|文件|测试|bug|功能|脚本|API|界面|后端|前端/u,oc=/部署|重启|重启服务|迁移数据库|运行迁移|初始化数据库|安装依赖|升级依赖|杀进程|启动服务|停止服务|应用terraform/u,rc=/代码|实现|函数|类|组件|模块|接口|bug|功能|前端|后端|脚本/u,An=/实现|新增|修改|更新|创建|编写|修复|重构|补丁|重写|替换|编辑|重命名/u;function nc(e){return Ia.test(e)||Ya.test(e)}i(nc,"isGreetingOnlyPrompt");function oo(e){let t=e.trim();if(!t)return{primaryTask:"conversation",taskFamily:"conversation",actionability:"non_actionable",executionPattern:"direct",shouldUseRepoSignals:!1,requiresRoutingHeuristics:!1,reason:"Empty input is treated as non-actionable conversation."};if(nc(t))return{primaryTask:"conversation",taskFamily:"conversation",actionability:"non_actionable",executionPattern:"direct",shouldUseRepoSignals:!1,requiresRoutingHeuristics:!1,reason:"Pure greeting input should stay conversational and must not be escalated by repository state."};let o=Oa.test(t)||za.test(t),r=Na.test(t)||Va.test(t),n=Da.test(t)||Qa.test(t),s=La.test(t)||Za.test(t),a=Fa.test(t)||Ja.test(t);return r?{primaryTask:"review",taskFamily:"review",actionability:"actionable",executionPattern:"checked-direct",shouldUseRepoSignals:!0,requiresRoutingHeuristics:!0,reason:"Review work is actionable and benefits from harness assessment for accurate scoping."}:n?{primaryTask:"plan",taskFamily:"planning",actionability:"actionable",executionPattern:"coordinated",shouldUseRepoSignals:!0,requiresRoutingHeuristics:!0,reason:"Planning and design requests may benefit from coordinated execution."}:s?{primaryTask:"bugfix",taskFamily:"investigation",actionability:"actionable",executionPattern:"checked-direct",shouldUseRepoSignals:!0,requiresRoutingHeuristics:!0,reason:"Debugging and root-cause work starts as investigation."}:a?{primaryTask:"edit",taskFamily:"implementation",actionability:"actionable",executionPattern:"checked-direct",shouldUseRepoSignals:!0,requiresRoutingHeuristics:!0,reason:"Implementation and editing work is actionable and may later escalate if the evidence warrants it."}:o?{primaryTask:"lookup",taskFamily:"lookup",actionability:"actionable",executionPattern:"direct",shouldUseRepoSignals:!1,requiresRoutingHeuristics:!0,reason:"Lookup queries are actionable but lightweight \u2014 direct execution unless deeper analysis is requested."}:{primaryTask:"unknown",taskFamily:"ambiguous",actionability:"ambiguous",executionPattern:"direct",shouldUseRepoSignals:!1,requiresRoutingHeuristics:!0,reason:"Ambiguous requests need classification before the work approach is locked in."}}i(oo,"inferIntentGate");function ut(e){switch(e){case"conversation":return"conversation";case"lookup":case"qa":return"lookup";case"review":return"review";case"bugfix":return"investigation";case"plan":return"planning";case"edit":case"refactor":return"implementation";default:return"ambiguous"}}i(ut,"inferTaskFamilyFromPrimaryTask");function Bn(e){switch(e){case"conversation":case"lookup":return"direct";case"review":case"investigation":return"checked-direct";case"planning":case"implementation":return"coordinated";default:return"direct"}}i(Bn,"defaultExecutionPatternForFamily");function ic(e,t){let o=oo(e),r=t.taskFamily??ut(t.primaryTask),n=t.actionability??(r==="conversation"?"non_actionable":r==="ambiguous"?o.actionability:"actionable"),s=t.executionPattern??Bn(r);return{taskFamily:r,actionability:n,executionPattern:s}}i(ic,"deriveIntentFields");function Hn(e,t){let o=` ${e.toLowerCase()} `,r=/[\u3400-\u9fff]/u.test(e),n=Ua.test(e)||r&&ec.test(e),s=Ba.test(e)||r&&Ha.test(e),a=$a.test(e)||r&&ja.test(e),c=qa.test(e)||r&&Ga.test(e),d=Xa.test(e)||r&&oc.test(e),u=Ka.test(o)||r&&Pn.test(e),m=/\b(code|implementation|function|class|component|module|endpoint|service|bug|script|api|ui|backend|frontend)\b/i.test(o)||r&&Pn.test(e),l=/\b(implement|add|modify|update|create|write|fix|refactor|rewrite|replace|edit|patch|rename)\b/i.test(o)||r&&An.test(e),g=r&&rc.test(e),R=r&&An.test(e),_=/\b(monorepo|repo|repository|package|packages|architecture|migration)\b/i.test(o),S=/\b(refactor|rewrite|reorganize|migrate|split|merge|consolidate|rename)\b/i.test(o),f=/\b(code|implementation|function|class|component|module|endpoint|service|bug|script|api|ui|backend|frontend)\b/i.test(o)||g,L=/\b(implement|add|modify|update|create|write|fix|refactor|rewrite|replace|edit|patch|rename)\b/i.test(o)||R,w=f&&!s||a,I=_&&!s,p=n&&!d&&c;if(t.primaryTask==="review"&&!L&&!d)return n&&(p||!w)?"docs-only":"read-only";let O=t.primaryTask==="edit"||t.primaryTask==="refactor"||t.taskFamily==="implementation"||t.primaryTask==="bugfix"&&L||L&&w||S&&I;return p&&t.primaryTask!=="refactor"||n&&!d&&!w&&t.primaryTask!=="refactor"?"docs-only":d?"system":O?"code":"read-only"}i(Hn,"deriveMutationSurface");function sc(e,t){let o=/[\u3400-\u9fff]/u.test(e);return Wa.test(e)||o&&tc.test(e)||t.recommendedMode==="strict-audit"?"explicit-check":"default"}i(sc,"deriveAssuranceIntent");function $n(e){let t=` ${e.toLowerCase()} `,r=[...Object.entries(_a).map(([c,d])=>({task:c,score:Aa(t,d)}))].sort((c,d)=>d.score-c.score),n=r[0],s=r[1];if(!n||n.score===0)return{task:"unknown",confidence:na,reason:"Fallback task inference did not find enough strong signals, so it kept the task as unknown."};if(s&&n.score===s.score){let c=ac(e,n.task,s.task);return c?{task:c,confidence:Sn,reason:`Fallback task inference preferred "${c}" because the request used an explicit directive even though multiple task signals were present.`}:{task:"unknown",confidence:ia,reason:`Fallback task inference saw competing signals for "${n.task}" and "${s.task}", so it kept the task as unknown.`}}if(n.task==="qa"&&n.score<4)return{task:"unknown",confidence:sa,reason:"Fallback task inference saw a weak explanation-style signal, but not enough evidence to disable reasoning."};let a=Math.min(la,Sn+n.score*aa+Math.max(0,(n.score-(s?.score??0))*ca));return{task:n.task,confidence:a,reason:`Fallback task inference selected "${n.task}" from textual signals in the request.`}}i($n,"inferTaskSignal");function ac(e,t,o){let r=` ${e.toLowerCase()} `,n=E(r,"review")||E(r,"code review")||E(r,"merge blocker")||E(r,"\u5BA1\u67E5")||E(r,"\u8BC4\u5BA1"),s=E(r,"fix")||E(r,"bug")||E(r,"\u4FEE\u590D")||E(r,"\u62A5\u9519"),a=E(r,"plan")||E(r,"design")||E(r,"\u65B9\u6848")||E(r,"\u8BA1\u5212");return(t==="review"||o==="review")&&n&&!s?"review":(t==="bugfix"||o==="bugfix")&&s&&!n?"bugfix":(t==="plan"||o==="plan")&&a?"plan":null}i(ac,"resolveTiedTask");function fm(e){return $n(e).task}i(fm,"inferTaskType");function dt(e){switch(e){case"simple":return 0;case"moderate":return 1;case"complex":return 2;case"systemic":return 3;default:return 0}}i(dt,"complexityRank");function cc(e,t){return t&&dt(t)>dt(e)?t:e}i(cc,"maxComplexity");function lc(e,t,o){let r=oo(e);if(!r.requiresRoutingHeuristics){let a=r.primaryTask;return Dn(e,{primaryTask:a,confidence:r.actionability==="non_actionable"?.98:.9,riskLevel:"low",recommendedMode:On(a),recommendedThinkingDepth:In(a),complexity:"simple",workIntent:"new",requiresBrainstorm:!1,harnessProfile:"H0_DIRECT",taskFamily:r.taskFamily,actionability:r.actionability,executionPattern:r.executionPattern,routingSource:"fallback",routingAttempts:1,reason:r.reason},t,o)}let n=$n(e),s=n.task;return Dn(e,{primaryTask:s,taskFamily:ut(s),actionability:s==="unknown"?"ambiguous":"actionable",executionPattern:Bn(ut(s)),confidence:n.confidence,riskLevel:Wn(e,s),recommendedMode:On(s),recommendedThinkingDepth:In(s),complexity:"moderate",workIntent:"new",requiresBrainstorm:!1,harnessProfile:"H0_DIRECT",routingSource:"fallback",routingAttempts:1,reason:n.reason},t,o)}i(lc,"buildFallbackRoutingDecision");function jn(e){let t=e.primaryTask==="review"||e.primaryTask==="bugfix"||e.recommendedMode==="pr-review"||e.recommendedMode==="strict-audit"||e.recommendedMode==="investigation";return{harnessProfile:e.harnessProfile,evidenceHeavy:t,brainstorm:e.requiresBrainstorm,workIntent:e.workIntent}}i(jn,"buildProviderPolicyHintsForDecision");async function qn(e,t,o,r){let n=Fn(e),s=oo(t),a=lt({providerName:o.name,model:e.modelOverride??e.model,provider:o,prompt:t,options:e,reasoningMode:n}),c=lc(t,a,r),d=e.effort??le(n),u=n==="off"?"off":n==="auto"?c.recommendedThinkingDepth:va(n),m={...c,recommendedThinkingDepth:u,routingNotes:[...c.routingNotes??[],s.reason,"Heuristic routing only \u2014 LLM router skipped (FEATURE_061 Phase 1; FEATURE_193 retired post-routing calibration)."]};return{effort:d,promptOverlay:"",decision:m,providerPolicy:a}}i(qn,"createReasoningPlan");function Gn(e,t=.5){return Number.isFinite(e)?Math.max(0,Math.min(1,e)):t}i(Gn,"clampUnitInterval");function uc(e,t){let o=` ${e.toLowerCase()} `;return ha.some(r=>E(o,r))?"overwrite":pa.some(r=>E(o,r))?"append":t}i(uc,"inferWorkIntent");function dc(e,t){let o=` ${e.toLowerCase()} `,r=0;for(let n of eo.moderate)E(o,n)&&(r+=1);for(let n of eo.complex)E(o,n)&&(r+=2);for(let n of eo.systemic)E(o,n)&&(r+=3);return(t.primaryTask==="refactor"||t.primaryTask==="plan")&&(r+=2),t.riskLevel==="high"&&(r+=2),t.workIntent==="overwrite"&&(r+=1),r>=ba?"systemic":r>=ya?"complex":r>=ga?"moderate":"simple"}i(dc,"inferComplexity");function mc(e,t,o){let r=` ${e.toLowerCase()} `;return!!(fa.some(n=>E(r,n))||t.primaryTask==="plan"||t.primaryTask==="unknown"&&t.confidence<.7||o==="systemic"||t.workIntent==="overwrite"&&(t.primaryTask==="refactor"||t.riskLevel==="high"))}i(mc,"inferRequiresBrainstorm");function fc(e,t){let o=t.taskFamily??ut(t.primaryTask),r=Hn(e,{primaryTask:t.primaryTask,taskFamily:o}),n=[];return(t.complexity==="complex"||t.complexity==="systemic")&&n.push(`Complexity hint: ${t.complexity}. Assess whether the recommended harness fits the task scope.`),t.needsIndependentQA&&n.push("Independent QA was inferred from prompt signals. Verify whether explicit verification artifacts are needed before declaring the task done."),t.requiresBrainstorm&&n.push("Brainstorm/planning signal detected. Judge whether to plan-first via todo_update before executing."),r==="system"&&(t.riskLevel==="high"||t.workIntent==="overwrite")&&n.push("High-risk system mutation detected. Proceed with caution; consider checkpointing intermediate state."),{harnessProfile:"H0_DIRECT",upgradeCeiling:"H0_DIRECT",notes:n}}i(fc,"selectHarnessProfile");function In(e){switch(e){case"conversation":return"off";case"lookup":return"low";case"review":return"low";case"bugfix":case"edit":return"medium";case"refactor":case"plan":return"high";case"qa":return"off";default:return"medium"}}i(In,"getDefaultDepthForTask");function On(e){switch(e){case"conversation":return"conversation";case"lookup":return"lookup";case"review":return"pr-review";case"bugfix":return"investigation";case"plan":return"planning";default:return"implementation"}}i(On,"getExecutionModeForTask");function Wn(e,t){let o=e.toLowerCase();return t==="conversation"||t==="lookup"?"low":o.includes("security")||o.includes("auth")||o.includes("migration")||o.includes("database")||o.includes("schema")||o.includes("production")||o.includes("\u5B89\u5168")||o.includes("\u9274\u6743")||o.includes("\u6743\u9650")||o.includes("\u8FC1\u79FB")||o.includes("\u6570\u636E\u5E93")||o.includes("\u751F\u4EA7")?"high":t==="review"||t==="bugfix"||t==="plan"?"medium":"low"}i(Wn,"getRiskLevel");function pc(e,t,o){let r=.9,n=` ${e.toLowerCase()} `;return t.primaryTask==="review"?(r-=.12,t.reviewScale==="large"?r-=.16:t.reviewScale==="massive"&&(r-=.28)):t.primaryTask==="bugfix"?r-=.08:t.primaryTask==="plan"&&(r-=.24),t.riskLevel==="medium"?r-=.12:t.riskLevel==="high"&&(r-=.26),t.complexity==="moderate"?r-=.12:t.complexity==="complex"?r-=.28:t.complexity==="systemic"&&(r-=.42),t.requiresBrainstorm&&(r-=.18),t.workIntent==="overwrite"&&(r-=.08),/\b(strict review|must[- ]fix|independently verify|browser test|playwright|e2e|frontend verify)\b/.test(n)&&(r-=.2),o&&(o.changedFileCount>=3&&(r-=.12),o.changedLineCount>=to&&(r-=.14),o.changedLineCount>=Ln&&(r-=.14),o.touchedModuleCount>=2&&(r-=.16),(o.impactedModuleCount??0)>=2&&(r-=.14),o.crossModule&&(r-=.2),o.lowConfidence&&(r-=.08)),Gn(r,.5)}i(pc,"computeSoloBoundaryConfidence");function hc(e,t,o){let r=` ${e.toLowerCase()} `;return!!(/\b(must[- ]fix|strict review|audit|independently verify|browser test|playwright|e2e|console errors?|api check|db check)\b/.test(r)||t.primaryTask==="plan"||t.primaryTask==="qa"||t.riskLevel==="high"||t.complexity==="complex"||t.complexity==="systemic"||t.requiresBrainstorm||o&&(o.crossModule||o.lowConfidence||(o.impactedModuleCount??0)>=2||o.touchedModuleCount>=2||o.changedLineCount>=to))}i(hc,"computeNeedsIndependentQA");function gc(e,t,o,r){let n=e.recommendedMode,s=e.recommendedThinkingDepth,a=[];return r?(r.suggestedComplexity&&dt(r.suggestedComplexity)>dt(t)&&a.push(`Repository intelligence elevated task complexity to ${r.suggestedComplexity} (changedFiles=${r.changedFileCount}, touchedModules=${r.touchedModuleCount}, impactedModules=${r.impactedModuleCount??0}).`),r.crossModule&&a.push("Repository intelligence indicates cross-module impact; keep evidence and merge boundaries explicit."),r.lowConfidence&&a.push("Repository intelligence for the active area is low-confidence; re-query `module_context` / `symbol_context` (or `impact_estimate` for blast-radius questions) for a refined capsule before falling back to raw `read`/`grep`. Use direct file evidence only when a specific load-bearing claim needs byte-level verification."),r.investigationBias&&(e.primaryTask==="review"||e.primaryTask==="bugfix")&&n!=="investigation"?(n="investigation",(s==="off"||s==="low")&&(s="medium"),a.push("Repository intelligence shifted execution toward investigation because the active area is low-confidence or high-blast-radius.")):r.plannerBias&&e.primaryTask!=="review"&&e.primaryTask!=="bugfix"&&n==="implementation"&&(o==="complex"||o==="systemic")&&(n="planning",(s==="off"||s==="low")&&(s="medium"),a.push("Repository intelligence shifted execution toward planning because the task spans multiple modules or dependencies.")),{recommendedMode:n,recommendedThinkingDepth:s,repoNotes:a}):{recommendedMode:n,recommendedThinkingDepth:s,repoNotes:a}}i(gc,"applyRepoSignalsToDecision");function Nn(e,t){let o=t.exec(e);if(!o?.[1])return;let r=o[1].replace(/,/g,"").toLowerCase(),n=r.endsWith("k")?1e3:1,s=r.endsWith("k")?r.slice(0,-1):r,a=Number.parseFloat(s);if(!(!Number.isFinite(a)||a<=0))return Math.round(a*n)}i(Nn,"parsePromptInteger");function yc(e){let t=Nn(e,/(?:^|[\s(,])(\d[\d,]*(?:\.\d+)?k?)\s*(?:changed\s+)?files?\b/i),o=Nn(e,/(?:^|[\s(,])(\d[\d,]*(?:\.\d+)?k?)\s*(?:changed\s+)?lines?\b/i),r;return(t??0)>=xa||(o??0)>=Ln?r="massive":((t??0)>=Ta||(o??0)>=to)&&(r="large"),{changedFileCount:t,changedLineCount:o,reviewScale:r}}i(yc,"inferPromptReviewScale");function bc(e,t){return e?.reviewScale?e.reviewScale:yc(t??"").reviewScale}i(bc,"deriveReviewScaleFromSignals");function Dn(e,t,o,r){let n=t,s=ic(e,t),a=s.actionability==="actionable"&&s.taskFamily!=="conversation"&&s.taskFamily!=="lookup";t.primaryTask==="unknown"&&s.taskFamily==="ambiguous"&&(n={...t,recommendedMode:"implementation",recommendedThinkingDepth:"medium",reason:`${t.reason} Conservative fallback keeps balanced reasoning for ambiguous tasks.`}),n.primaryTask==="qa"&&n.confidence<ua&&(n={...n,primaryTask:"unknown",confidence:Math.min(n.confidence,da),riskLevel:Wn(e,"unknown"),recommendedMode:"implementation",recommendedThinkingDepth:"medium",reason:`${n.reason} Low-confidence QA routing was downgraded to unknown so reasoning stays available.`}),n.confidence<ma&&n.recommendedThinkingDepth==="off"&&(n={...n,primaryTask:"unknown",recommendedMode:"implementation",recommendedThinkingDepth:"medium",reason:`${n.reason} Low-confidence off-mode routing was upgraded to balanced reasoning for safety.`});let c=uc(e,n.workIntent),d=a?r?.repoSignals:void 0,u=dc(e,{...n,workIntent:c}),m=a?cc(u,d?.suggestedComplexity):u,l=t.reviewScale??bc(d,e),g=Hn(e,{primaryTask:n.primaryTask,taskFamily:s.taskFamily}),R=sc(e,n),_="H0_DIRECT",S=mc(e,{...n,workIntent:c,complexity:m,reviewScale:l,mutationSurface:g,assuranceIntent:R,topologyCeiling:_},m)||!!(d?.plannerBias&&(m==="complex"||m==="systemic")),f=Gn(t.soloBoundaryConfidence??pc(e,{primaryTask:n.primaryTask,complexity:m,riskLevel:n.riskLevel,requiresBrainstorm:S,workIntent:c,reviewScale:l},d),.5),L=t.needsIndependentQA??hc(e,{primaryTask:n.primaryTask,complexity:m,riskLevel:n.riskLevel,requiresBrainstorm:S,reviewScale:l},d),w=g==="read-only"||g==="docs-only"?R==="explicit-check":L,I=fc(e,{...n,workIntent:c,complexity:m,requiresBrainstorm:S,reviewScale:l,soloBoundaryConfidence:f,needsIndependentQA:w,mutationSurface:g,assuranceIntent:R,topologyCeiling:_}),{recommendedMode:p,recommendedThinkingDepth:O,repoNotes:ne}=gc({...n,taskFamily:s.taskFamily,actionability:s.actionability,executionPattern:s.executionPattern},u,m,d),F=p,M=O,N="direct";return s.taskFamily==="conversation"?(F="conversation",M="off"):s.taskFamily==="lookup"&&(F="lookup",M=O==="high"?"medium":O),{...n,taskFamily:s.taskFamily,actionability:s.actionability,executionPattern:N,mutationSurface:g,assuranceIntent:R,recommendedMode:F,recommendedThinkingDepth:M,workIntent:c,complexity:m,requiresBrainstorm:S,topologyCeiling:_,reviewScale:l,soloBoundaryConfidence:f,needsIndependentQA:w,harnessProfile:I.harnessProfile,upgradeCeiling:I.upgradeCeiling,routingSource:n.routingSource??"fallback",routingAttempts:n.routingAttempts??1,routingNotes:[...n.routingNotes??[],...I.notes,...ne,...a?[]:["Intent gate ignored repository scaling signals for this request."]]}}i(Dn,"stabilizeRoutingDecision");function mt(e,t){return Buffer.byteLength(JSON.stringify({systemPrompt:t,messages:e}),"utf8")}i(mt,"estimateProviderPayloadBytes");function ft(e){return e<16*1024?"small":e<64*1024?"medium":e<192*1024?"large":"xlarge"}i(ft,"bucketProviderPayloadSize");function Fe(e){let t=zo.exec(e);return t?[t[1].toUpperCase(),t[2]??""]:["",""]}i(Fe,"checkPromiseSignal");function Tc(){return process.env.KODAX_DEBUG_STREAM==="1"||process.env.KODAX_DEBUG_RESILIENCE==="1"}i(Tc,"shouldDebugResilience");function A(e,t){Tc()&&console.error(e,t)}i(A,"emitResilienceDebug");function Kn(e,t,o){let r=e.modelSelection.provider??t.provider,n=e.modelSelection.model??t.modelOverride??t.model,s=e.thinkingLevel,a=Te(r);if(!a.isConfigured())throw new Error(`Provider "${r}" not configured. Set ${a.getApiKeyEnv()}`);let c=fr(o,a,n);return{providerName:r,modelOverride:n,thinkingLevel:s,provider:a,contextWindow:c}}i(Kn,"resolvePerTurnProvider");function ro(e,t){if(!e.isConfigured())throw new Error(`Provider "${t}" not configured. Set ${e.getApiKeyEnv()}`)}i(ro,"assertProviderConfigured");var no=`You are KodaX, a helpful multi-provider coding agent. You can read, write, and edit files, and execute shell commands.
|
|
4
4
|
|
|
5
5
|
## Error Handling
|
|
6
6
|
|
|
@@ -118,10 +118,10 @@ Always explain what you're doing before taking action.
|
|
|
118
118
|
`),a=!0),Buffer.byteLength(s,"utf8")>co&&(s=Ac(s,co),a=!0),a?{content:s,warning:[`> NOTE: MEMORY.md has ${r} lines / ${Zn(n)}.`,`Only a bounded ${ao}-line / ${Zn(co)} index preview is loaded here.`,"Read relevant topic files on demand instead of relying on the prompt to carry every memory."].join(" ")}:{content:s}}i(Pc,"truncatePromptMemoryIndex");function Ac(e,t){let o=0,r=[];for(let a of e){let c=Buffer.byteLength(a,"utf8");if(o+c>t)break;r.push(a),o+=c}let n=r.join(""),s=n.lastIndexOf(`
|
|
119
119
|
`);return(s>0?n.slice(0,s):n).trimEnd()}i(Ac,"sliceUtf8ToByteCap");function Zn(e){return e<1024?`${e}B`:`${(e/1024).toFixed(1)}KB`}i(Zn,"formatBytes");function Ic(e){return["=== Persistent memory (cross-session) ===",`Memory directory: ${e}`,"","Your MEMORY.md is currently empty. When you save new memories, they will appear here."].join(`
|
|
120
120
|
`)}i(Ic,"buildEmptyFallback");function Oc(e){let t=[...Nc(e)].sort((o,r)=>r.mtimeMs-o.mtimeMs).slice(0,8);return t.length===0?[]:["","Governed memory hints (deterministic):",...t.map(o=>`- ${o.title}: ${o.hook} (${o.filename})`)]}i(Oc,"buildMemoryHintLines");function Nc(e){let t;try{t=oe.readdirSync(e,{withFileTypes:!0})}catch{return[]}let o=[];for(let r of t){if(!r.isFile()||r.name==="MEMORY.md"||!r.name.endsWith(".md"))continue;let n=Dc(ht.join(e,r.name),r.name);n!==void 0&&o.push(n)}return o}i(Nc,"readMemoryHintEntries");function Dc(e,t){let o,r;try{o=oe.readFileSync(e,"utf-8"),r=oe.statSync(e).mtimeMs}catch{return}let n=or(o),s=n.frontmatter.name??ht.basename(t,".md"),a=n.frontmatter.description??Lc(n.body)??s;return{filename:t,title:s,hook:a,mtimeMs:r}}i(Dc,"readMemoryHintEntry");function Lc(e){let t=e.split(/\r?\n/).map(o=>o.trim()).find(o=>o.length>0);return t===void 0?void 0:t.slice(0,160)}i(Lc,"firstBodyLine");function lo(e="KodaX"){let t=e==="KodaX"?[`Claude Code and Codex CLI knowledge that does not match ${e} \u2014 ${e} uses`,"~/.kodax/config.json and KODAX_* env vars, not .claude/settings.json or","config.toml. Only bring up Claude Code or Codex when the user explicitly asks"]:[`Claude Code and Codex CLI knowledge that does not match ${e}.`,"Only bring up Claude Code or Codex when the user explicitly asks"];return[`${e} self-knowledge: when the user asks how to use, install, configure,`,`troubleshoot, or extend ${e} itself \u2014 providers, custom providers, config,`,"permissions, slash commands, tools, custom agents, skills, extensions, MCP, repo","intelligence, sessions, the doctor command, or the SDK \u2014 call the","kodax_manual tool first and answer from it.","",`Treat kodax_manual as the version-bound source of truth for ${e} product`,"behavior. Do not answer these from pretraining, because pretraining mixes in",...t,"to compare. Project AGENTS.md still governs work in the current repo; the",`manual governs questions about ${e} as a product.`].join(`
|
|
121
|
-
`)}i(lo,"buildSelfKnowledgeRoutingRule");var
|
|
122
|
-
`);var ti="[Tool Construction Mode]\nYou may build a new tool at runtime when an existing builtin or extension does not solve the user's task and a thin reusable handler would. Walk the five-step staircase in order \u2014 DO NOT skip steps:\n\n 1. scaffold_tool \u2014 emit a fillable artifact JSON skeleton for {name, version, description}.\n 2. (edit the JSON) \u2014 fill in inputSchema, capabilities.tools (whitelist of builtins the handler may call via ctx.tools.<name>), and the handler.code body.\n 3. validate_tool \u2014 dry-run shape + AST + provider-schema checks on the candidate JSON. Fix any errors before staging.\n 4. stage_construction \u2014 persist to .kodax/constructed/tools/<name>/<version>.json (status=staged).\n 5. test_tool \u2014 run the full check pipeline against the staged artifact (shape + AST + schema + handler materialize).\n 6. activate_tool \u2014 register the handler into the live tool registry. The tool is then callable as <name> in subsequent turns.\n\nHard rules the AST stage enforces (failing any of these aborts the staircase):\n - No `eval`, no `new Function(...)`. Constructed handlers are not allowed to evaluate dynamic source.\n - The handler MUST export an `async function handler(input, ctx)` (function decl, arrow, or function expression with at least 2 parameters).\n\nCapability rule: the handler can ONLY invoke tools listed in `capabilities.tools` through `ctx.tools.<name>(...)`. Calls to undeclared tools throw at runtime. Direct `require`, `import()`, `process.env`, network access, and filesystem APIs are not provided \u2014 route all I/O through declared builtin tools (`read` / `write` / `bash` / `grep` / etc.).\n\nVersioning: re-staging an active version is rejected. Bump the semver string when iterating; revoke first if the user wants to replace an in-use handler at the same version. The on-disk artifact is the source of truth \u2014 there is no in-memory cache.";function oi(e){return!!e}i(oi,"shouldIncludeToolConstructionSection");var uo=Uc(Fc),mo="{context}";async function fo(e,t,o){let r=o??$(e.context),n=[],{prefix:s,suffix:a}=qc(no);n.push(k("base-system",s,"Always include the stable base identity and safety baseline.")),a&&n.push(k("base-system-suffix",a,"Preserve any trailing stable base prompt instructions that follow the context placeholder.")),n.push(k("environment-context",Gc(),"Always disclose runtime platform details so shell guidance stays accurate."));let c=Wc(e);c&&n.push(k("runtime-fact",c,"Always disclose the active provider and model so identity questions can be answered truthfully instead of guessed from pretraining.")),n.push(k("working-directory",`Working Directory: ${r}`,"Always disclose the resolved execution directory for deterministic file operations."));let d=Xr(e);if(d&&n.push(k("session-scratch-directory",`Session Scratch Directory: ${d}`,"Disclose the per-session scratch directory so temporary helper files never collide across same-directory sessions.")),t){let S=await Kc(r);S&&n.push(k("git-context",S,"Include repository state when the session starts so the agent can orient itself quickly."));let f=await Xc(r);f&&n.push(k("project-snapshot",f,"Include a lightweight project snapshot at the start of a session."))}e.context?.repoIntelligenceContext?.trim()&&n.push(k("repo-intelligence-context",e.context.repoIntelligenceContext,"Include repository-intelligence capability truth only when it is active for this runtime."));let u=await e.extensionRuntime?.getCapabilityPromptContext("mcp");u?.trim()&&n.push(k("mcp-capability-context",u,"Include runtime-owned MCP capability truth only when active MCP servers are configured."));let m=jc();m&&n.push(k("specialist-agents",m,"List registered specialist agents the Worker can dispatch via dispatch_child_task(subagent_type) so curated prompts and tool whitelists get reused instead of duplicated.")),n.push(k("self-knowledge-routing",lo(e.selfManual?.productName),"Route product usage/config/troubleshooting questions to the kodax_manual tool as the version-bound product source of truth.")),n.push(k("execution-guidance",ei,"Match your approach to the kind of work (review / audit / investigation / planning / ambiguity) by self-judgment, not router assignment.")),e.context?.promptOverlay?.trim()&&n.push(k("prompt-overlay",e.context.promptOverlay,"Task-shaping rule for this request plus any caller-supplied context."));let l=Rr({cwd:r,projectRoot:e.context?.gitRoot??void 0}),g=Sr(l);g&&n.push(k("project-agents",g,"Append project-scoped AI rules after runtime truth so local constraints keep higher precedence than skills.")),n.push(k("memory-rules",Qn(r),"Teach the agent the 4-type memory taxonomy, save procedure, and recall etiquette so writes are consistent across sessions and providers."));let R=Jn(r),_=await Bc(r,e.context?.rawUserInput);return n.push(k("project-memory",Hc(R.content,_),"Inject the per-project MEMORY.md index so the agent has cross-session recall without re-asking the user for previously-given context.")),e.context?.skillsPrompt?.trim()&&n.push(k("skills-addendum",e.context.skillsPrompt,"Append skill-specific guidance after project rules as a bounded dynamic addendum.")),oi(e.context?.toolConstructionMode)&&n.push(k("tool-construction",ti,"Append the tool-construction staircase guidance only when self-construction is authorized for this session.")),n}i(fo,"buildCapabilityContextSections");async function Bc(e,t){let o=t?.trim();if(!(o===void 0||o.length===0))try{return await Oe({cwd:e,projectDocs:[],discoverSkills:!1}).buildMemoryPack({task:o,maxHints:5,includeSnippets:!1})}catch(r){A("[memory:pack:error]",{cwd:e,error:r instanceof Error?r.message:String(r)});return}}i(Bc,"buildTaskMemoryPack");function Hc(e,t){return t===void 0?e:t.traceMetadata.suppressed?[e,"","Task-relevant memory hints: suppressed by user request."].join(`
|
|
121
|
+
`)}i(lo,"buildSelfKnowledgeRoutingRule");var Bm=lo();var ei=["EXECUTION GUIDANCE (match your approach to the kind of work \u2014 judge which fits):","- Respond in the primary natural language of the user's request for your user-visible explanations, progress notes, and final answer \u2014 if the user wrote in Chinese, reply in Chinese. Code, identifiers, file paths, tool output, and quoted evidence stay in their source language.","- After you make a change, check the result against what was actually asked before you finalize. Confirm the change does what the request wanted, backed by evidence (a test run, a re-read of the edited region) rather than confidence alone \u2014 because a change that looks right but was never verified is how silent regressions ship.","- When you are reviewing code or a pull request: report only high-confidence issues that materially affect correctness, reliability, security, or merge-readiness. Do not list naming, formatting, or style preferences as findings \u2014 padding a review with nits buries the issues that matter. Lead with the must-fix items, then optional improvements, and for each issue state the concrete consequence it causes.","- When you are doing a broad audit: cover correctness, security, performance, and maintainability together, and keep issues you have confirmed separate from lower-confidence risks so the reader can tell which is which.","- When you are investigating a bug or an unknown: isolate the root cause and validate your assumptions with concrete evidence \u2014 a reproduction, a targeted check \u2014 before making broad changes, because a fix applied before the cause is understood usually treats a symptom.","- When the task is design or planning work: reason through architecture, constraints, sequencing, and risks before writing code.","- When the request is genuinely ambiguous: frame the options briefly and make the path you chose explicit before any irreversible edit, so the user can redirect before the cost is sunk."].join(`
|
|
122
|
+
`);var ti="[Tool Construction Mode]\nYou may build a new tool at runtime when an existing builtin or extension does not solve the user's task and a thin reusable handler would. Walk the five-step staircase in order \u2014 DO NOT skip steps:\n\n 1. scaffold_tool \u2014 emit a fillable artifact JSON skeleton for {name, version, description}.\n 2. (edit the JSON) \u2014 fill in inputSchema, capabilities.tools (whitelist of builtins the handler may call via ctx.tools.<name>), and the handler.code body.\n 3. validate_tool \u2014 dry-run shape + AST + provider-schema checks on the candidate JSON. Fix any errors before staging.\n 4. stage_construction \u2014 persist to .kodax/constructed/tools/<name>/<version>.json (status=staged).\n 5. test_tool \u2014 run the full check pipeline against the staged artifact (shape + AST + schema + handler materialize).\n 6. activate_tool \u2014 register the handler into the live tool registry. The tool is then callable as <name> in subsequent turns.\n\nHard rules the AST stage enforces (failing any of these aborts the staircase):\n - No `eval`, no `new Function(...)`. Constructed handlers are not allowed to evaluate dynamic source.\n - The handler MUST export an `async function handler(input, ctx)` (function decl, arrow, or function expression with at least 2 parameters).\n\nCapability rule: the handler can ONLY invoke tools listed in `capabilities.tools` through `ctx.tools.<name>(...)`. Calls to undeclared tools throw at runtime. Direct `require`, `import()`, `process.env`, network access, and filesystem APIs are not provided \u2014 route all I/O through declared builtin tools (`read` / `write` / `bash` / `grep` / etc.).\n\nVersioning: re-staging an active version is rejected. Bump the semver string when iterating; revoke first if the user wants to replace an in-use handler at the same version. The on-disk artifact is the source of truth \u2014 there is no in-memory cache.";function oi(e){return!!e}i(oi,"shouldIncludeToolConstructionSection");var uo=Uc(Fc),mo="{context}";async function fo(e,t,o){let r=o??$(e.context),n=[],{prefix:s,suffix:a}=qc(no);n.push(k("base-system",s,"Always include the stable base identity and safety baseline.")),a&&n.push(k("base-system-suffix",a,"Preserve any trailing stable base prompt instructions that follow the context placeholder.")),n.push(k("environment-context",Gc(),"Always disclose runtime platform details so shell guidance stays accurate."));let c=Wc(e);c&&n.push(k("runtime-fact",c,"Always disclose the active provider and model so identity questions can be answered truthfully instead of guessed from pretraining.")),n.push(k("working-directory",`Working Directory: ${r}`,"Always disclose the resolved execution directory for deterministic file operations."));let d=Xr(e);if(d&&n.push(k("session-scratch-directory",`Session Scratch Directory: ${d}`,"Disclose the per-session scratch directory so temporary helper files never collide across same-directory sessions.")),t){let S=await Kc(r);S&&n.push(k("git-context",S,"Include repository state when the session starts so the agent can orient itself quickly."));let f=await Xc(r);f&&n.push(k("project-snapshot",f,"Include a lightweight project snapshot at the start of a session."))}e.context?.repoIntelligenceContext?.trim()&&n.push(k("repo-intelligence-context",e.context.repoIntelligenceContext,"Include repository-intelligence capability truth only when it is active for this runtime."));let u=await e.extensionRuntime?.getCapabilityPromptContext("mcp");u?.trim()&&n.push(k("mcp-capability-context",u,"Include runtime-owned MCP capability truth only when active MCP servers are configured."));let m=jc(e.context?.agentScope);m&&n.push(k("specialist-agents",m,"List registered specialist agents the Worker can dispatch via dispatch_child_task(subagent_type) so curated prompts and tool whitelists get reused instead of duplicated.")),n.push(k("self-knowledge-routing",lo(e.selfManual?.productName),"Route product usage/config/troubleshooting questions to the kodax_manual tool as the version-bound product source of truth.")),n.push(k("execution-guidance",ei,"Match your approach to the kind of work (review / audit / investigation / planning / ambiguity) by self-judgment, not router assignment.")),e.context?.promptOverlay?.trim()&&n.push(k("prompt-overlay",e.context.promptOverlay,"Task-shaping rule for this request plus any caller-supplied context."));let l=Rr({cwd:r,projectRoot:e.context?.gitRoot??void 0}),g=Sr(l);g&&n.push(k("project-agents",g,"Append project-scoped AI rules after runtime truth so local constraints keep higher precedence than skills.")),n.push(k("memory-rules",Qn(r),"Teach the agent the 4-type memory taxonomy, save procedure, and recall etiquette so writes are consistent across sessions and providers."));let R=Jn(r),_=await Bc(r,e.context?.rawUserInput);return n.push(k("project-memory",Hc(R.content,_),"Inject the per-project MEMORY.md index so the agent has cross-session recall without re-asking the user for previously-given context.")),e.context?.skillsPrompt?.trim()&&n.push(k("skills-addendum",e.context.skillsPrompt,"Append skill-specific guidance after project rules as a bounded dynamic addendum.")),oi(e.context?.toolConstructionMode)&&n.push(k("tool-construction",ti,"Append the tool-construction staircase guidance only when self-construction is authorized for this session.")),n}i(fo,"buildCapabilityContextSections");async function Bc(e,t){let o=t?.trim();if(!(o===void 0||o.length===0))try{return await Oe({cwd:e,projectDocs:[],discoverSkills:!1}).buildMemoryPack({task:o,maxHints:5,includeSnippets:!1})}catch(r){A("[memory:pack:error]",{cwd:e,error:r instanceof Error?r.message:String(r)});return}}i(Bc,"buildTaskMemoryPack");function Hc(e,t){return t===void 0?e:t.traceMetadata.suppressed?[e,"","Task-relevant memory hints: suppressed by user request."].join(`
|
|
123
123
|
`):t.hints.length===0?e:[e,"","Task-relevant memory hints (bounded):",...t.hints.map($c),"","Use these as pointers, not authority. If a hint matters, read the referenced memory file before relying on details. Current repository files override memory."].join(`
|
|
124
|
-
`)}i(Hc,"appendTaskMemoryPack");function $c(e){return`- ${ri(e.hook)} [${e.ref.id}]: ${ri(e.reason)}`}i($c,"formatTaskMemoryHint");function ri(e){return e.replace(/\s+/g," ").trim().slice(0,180)}i(ri,"compactPromptLine");function jc(){let
|
|
124
|
+
`)}i(Hc,"appendTaskMemoryPack");function $c(e){return`- ${ri(e.hook)} [${e.ref.id}]: ${ri(e.reason)}`}i($c,"formatTaskMemoryHint");function ri(e){return e.replace(/\s+/g," ").trim().slice(0,180)}i(ri,"compactPromptLine");function jc(e){let t=Cr(e);return t.length===0?null:["=== Available specialist agents ===",t.map(r=>`- ${r.name}: ${r.description?.trim()||"(no description)"}`).join(`
|
|
125
125
|
`),"",'Dispatch via dispatch_child_task(subagent_type="<name>").'].join(`
|
|
126
126
|
`)}i(jc,"buildSpecialistAgentsBlock");function qc(e){if(!e.includes(mo))return{prefix:e.trim(),suffix:""};let[t,...o]=e.split(mo);return{prefix:t.trim(),suffix:o.join(mo).trim()}}i(qc,"splitSystemPromptTemplate");function Gc(){let e=process.platform,t=e==="win32";return`Platform: ${t?"Windows":e==="darwin"?"macOS":"Linux"}
|
|
127
127
|
${t?"Use: dir, move, copy, del":"Use: ls, mv, cp, rm"}
|
|
@@ -317,10 +317,10 @@ Keep every section concise.`;async function Bi(e){let t=e.tokensBefore-e.tokensA
|
|
|
317
317
|
|
|
318
318
|
[output token limit hit, continuing\u2026]
|
|
319
319
|
|
|
320
|
-
`),o.push({role:"user",content:[{type:"text",text:"Output token limit hit. Resume directly \u2014 no apology, no recap of what you were doing. Pick up mid-thought if that is where the cut happened. Break remaining work into smaller pieces."}],_synthetic:!0});let c=C(o,n);return{outcome:"continue",nextMaxTokensRetryCount:a,nextContextTokenSnapshot:c}}return s.onRetry?.(`max_tokens truncation limit reached (${a-1}/${3})`,a-1,3),{outcome:"exhausted",nextMaxTokensRetryCount:a}}i($i,"maybeContinueAfterMaxTokens");function ji(e){let{result:t,lastText:o,messages:r,continueAttempted:n,options:s,emittedManagedProtocolPayload:a,completedTurnTokenSnapshot:c}=e,d=s.context?.managedProtocolEmission;if(n||be(t.stopReason)!=="end"||t.toolBlocks.length!==0||!o||!d?.enabled||d.optional)return{outcome:"no_op",nextContinueAttempted:n};let u=d.role,m=Pr(u);return!m||Ar(a,u)||Ir(o,m)?{outcome:"no_op",nextContinueAttempted:n}:(r.push({role:"user",content:[{type:"text",text:`Your response is complete but the required protocol was not emitted. Do NOT output any text \u2014 ONLY call the "${_r}" tool now, or append a \`\`\`${m}\`\`\` fenced block. No other output.`}],_synthetic:!0}),{outcome:"continue",nextContinueAttempted:!0,nextContextTokenSnapshot:C(r,c)})}i(ji,"maybeAutoContinueManagedProtocol");import{exec as Tl}from"child_process";import{promisify as xl}from"util";function yl(e){let t=new Map;if(!e)return t;for(let[o,r]of Object.entries(e))t.set(o,new Map(Object.entries(r)));return t}i(yl,"createRuntimeExtensionState");function bl(e){let t={};for(let[o,r]of e.entries())r.size!==0&&(t[o]=Object.fromEntries(r.entries()));return Object.keys(t).length>0?t:void 0}i(bl,"snapshotRuntimeExtensionState");function vt(e,t={}){let o=t.includeUnchanged??!0,r=bl(e.extensionState),n=o||e.extensionStateDirty?r??(e.extensionStateDirty?{}:void 0):void 0,a=o&&e.extensionRecords.length>0||e.extensionRecordsDirty?e.extensionRecords.map(c=>({...c})):void 0;if(!(!n&&!a))return{...n?{extensionState:n}:{},...a?{extensionRecords:a}:{}}}i(vt,"snapshotRuntimeSessionState");function qi(e,t){let o=e.get(t);if(o)return o;let r=new Map;return e.set(t,r),r}i(qi,"getExtensionStateBucket");function Gi(e){return{queuedMessages:[],extensionState:yl(e.loadedExtensionState),extensionStateDirty:!1,extensionRecords:e.loadedExtensionRecords?.map(t=>({...t}))??[],extensionRecordsDirty:!1,activeTools:e.activeTools,editRecoveryAttempts:new Map,blockedEditWrites:new Set,modelSelection:e.modelSelection,thinkingLevel:e.thinkingLevel}}i(Gi,"buildRuntimeSessionState");function To(e){return typeof e=="string"?{role:"user",content:e}:e}i(To,"normalizeQueuedRuntimeMessage");function xo(e){let t={};return e.provider?.trim()&&(t.provider=e.provider.trim()),e.model?.trim()&&(t.model=e.model.trim()),t}i(xo,"normalizeRuntimeModelSelection");function Wi(){return`extrec_${Date.now()}_${Math.random().toString(36).slice(2,10)}`}i(Wi,"createSessionRecordId");var vl=xl(Tl);async function kl(e){try{let{stdout:t}=await vl("git rev-parse --show-toplevel",{cwd:e});return t.trim()}catch{return null}}i(kl,"getGitRoot");var Ki=new Set;function Xi(e){return Array.isArray(e.content)?e.content:[]}i(Xi,"contentBlocks");function wl(e){return Xi(e).filter(t=>t.type==="tool_use").map(t=>t.id)}i(wl,"collectToolUseIds");function El(e){return Xi(e).filter(t=>t.type==="tool_result").map(t=>t.tool_use_id)}i(El,"collectToolResultIds");function Rl(e){let t=e.find(r=>r.role!=="system");if(!t)return e.length===0;if(t.role!=="user")return!1;let o=new Set;for(let r of e){if(r.role==="assistant"){for(let n of wl(r))o.add(n);continue}if(r.role==="user"){for(let n of El(r))if(!o.delete(n))return!1}}return o.size===0}i(Rl,"isSafeAuthoritativeTranscript");async function me(e,t,o){if(e.session?.persistedByHost&&!o.errorMetadata)return;if(!e.session?.storage){e.session?.id&&!Ki.has(e.session.id)&&(Ki.add(e.session.id),console.warn(`[KodaX SDK] session.id="${e.session.id}" was provided but session.storage is undefined \u2014 session snapshots will NOT be persisted. To persist, pass a storage instance: import { createSessionManager } from '@kodax-ai/kodax/repl'; const { storage } = createSessionManager(); runKodaX({ session: { id, storage, ... }, ... }, prompt); See docs/SDK_EMBEDDER_GUIDE.md \xA76.`));return}let r=o.messages,n,s,a,c=!0;if(o.errorMetadata&&!Rl(o.messages)){c=!1;try{let m=await e.session.storage.load(t);m?(r=m.messages,n=m.lineage,s=m.extensionState?structuredClone(m.extensionState):void 0,a=m.extensionRecords?.map(l=>({...l}))):(r=[],n=void 0,s=void 0,a=void 0)}catch{r=[],n=void 0,s=void 0,a=void 0}}let d=o.gitRoot??e.context?.gitRoot??await kl(e.context?.executionCwd)??"",u=o.runtimeSessionState?vt(o.runtimeSessionState):void 0;c&&(s=u?.extensionState,a=u?.extensionRecords);try{await e.session.storage.save(t,{messages:r,title:o.title,gitRoot:d,tag:e.session.tag,scope:e.session.scope??"user",errorMetadata:o.errorMetadata,...n!==void 0?{lineage:n}:{},extensionState:s,extensionRecords:a})}catch(m){console.error("[SessionSnapshot] storage.save failed; continuing without snapshot persistence:",m)}}i(me,"saveSessionSnapshot");async function kt(e){await me(e.options,e.sessionId,{messages:e.messages,title:e.title,gitRoot:e.options.context?.gitRoot??void 0,runtimeSessionState:e.runtimeSessionState});let[t,o]=Fe(e.lastText);return{finalSignal:t,finalReason:o}}i(kt,"applyIterationLimitTerminal");async function Yi(e){let t=Ft(e.messages);t=Ie(t);let o={lastError:e.error.message,lastErrorTime:Date.now(),consecutiveErrors:(e.errorMetadata?.consecutiveErrors??0)+1};await me(e.options,e.sessionId,{messages:t,title:e.title,gitRoot:e.options.context?.gitRoot??void 0,errorMetadata:o,runtimeSessionState:e.runtimeSessionState});let r=et(t);return{cleanedMessages:t,updatedErrorMetadata:o,contextTokenSnapshot:r}}i(Yi,"runCatchCleanup");async function zi(e){ke(e.events),await e.emitActiveExtensionEvent("stream:end",void 0)}i(zi,"applyAbortErrorTerminal");async function Vi(e){await e.emitActiveExtensionEvent("error",{error:e.error}),qr(e.events,e.error)}i(Vi,"applyGenericErrorTerminal");async function Qi(e){let t={...e};return await de("provider:before",{provider:t.provider,model:t.model,reasoningMode:t.reasoningMode,systemPrompt:t.systemPrompt,block:i(o=>{t.blockedReason=o},"block"),replaceProvider:i(o=>{t.provider=o},"replaceProvider"),replaceModel:i(o=>{t.model=o},"replaceModel"),replaceSystemPrompt:i(o=>{t.systemPrompt=o},"replaceSystemPrompt"),setThinkingLevel:i(o=>{t.reasoningMode=o},"setThinkingLevel")}),t}i(Qi,"applyProviderPrepareHook");function Zi(e){return e.toLowerCase().replace(/[\s_-]+/g,"")}i(Zi,"normalizeToolNameKey");function Sl(e,t){if(t.includes(e))return null;let o=Zi(e);if(!o)return null;let r=t.filter(n=>Zi(n)===o);return r.length===1?r[0]:null}i(Sl,"resolveToolNameAlias");function Ji(e,t){return e.map(o=>{let r=Sl(o.name,t);return r?(process.env.KODAX_DEBUG_TOOL_STREAM&&console.warn("[Tool Name Repaired]",JSON.stringify(o.name),"\u2192",JSON.stringify(r)),{...o,name:r}):o})}i(Ji,"repairToolBlockNames");function He(e,t){return t.queuedMessages.length===0?!1:(e.push(...t.queuedMessages.splice(0)),!0)}i(He,"appendQueuedRuntimeMessages");async function $e(e,t,o,r){await de("turn:settle",{sessionId:e,lastText:t,hadToolCalls:r.hadToolCalls,success:r.success,signal:r.signal,queueUserMessage:i(n=>{o.queuedMessages.push(To(n))},"queueUserMessage"),setModelSelection:i(n=>{o.modelSelection=xo(n)},"setModelSelection"),setThinkingLevel:i(n=>{o.thinkingLevel=n},"setThinkingLevel")})}i($e,"settleExtensionTurn");function eg(e){return async t=>{let o=e();return o?await de("turn:complete",{sessionId:o,lastAssistantText:t.lastAssistantText,signal:t.signal,reanimateCount:t.reanimateCount,reanimateBudget:t.reanimateBudget})??void 0:void 0}}i(eg,"createExtensionTurnCompleteStopHook");function es(e){return{queueUserMessage:i(t=>{e.queuedMessages.push(To(t))},"queueUserMessage"),getSessionState:i((t,o)=>e.extensionState.get(t)?.get(o),"getSessionState"),setSessionState:i((t,o,r)=>{let n=qi(e.extensionState,t);if(e.extensionStateDirty=!0,r===void 0){n.delete(o),n.size===0&&e.extensionState.delete(t);return}n.set(o,r)},"setSessionState"),getSessionStateSnapshot:i(t=>Object.fromEntries((e.extensionState.get(t)??new Map).entries()),"getSessionStateSnapshot"),appendSessionRecord:i((t,o,r,n)=>{let s=o.trim(),a=n?.dedupeKey?.trim()||void 0,c={id:Wi(),extensionId:t,type:s,ts:Date.now(),...r===void 0?{}:{data:r},...a?{dedupeKey:a}:{}};if(a){let d=e.extensionRecords.findIndex(u=>u.extensionId===t&&u.type===s&&u.dedupeKey===a);if(d>=0)return e.extensionRecords.splice(d,1,c),e.extensionRecordsDirty=!0,c}return e.extensionRecords.push(c),e.extensionRecordsDirty=!0,c},"appendSessionRecord"),listSessionRecords:i((t,o)=>e.extensionRecords.filter(r=>r.extensionId===t&&(o===void 0||r.type===o)).map(r=>({...r})),"listSessionRecords"),clearSessionRecords:i((t,o)=>{let r=e.extensionRecords.length;e.extensionRecords=e.extensionRecords.filter(s=>s.extensionId!==t||o!==void 0&&s.type!==o);let n=r-e.extensionRecords.length;return n>0&&(e.extensionRecordsDirty=!0),n},"clearSessionRecords"),getActiveTools:i(()=>[...e.activeTools],"getActiveTools"),setActiveTools:i(t=>{e.activeTools=Array.from(new Set(t.map(o=>o.trim()).filter(Boolean)))},"setActiveTools"),getModelSelection:i(()=>({...e.modelSelection}),"getModelSelection"),setModelSelection:i(t=>{e.modelSelection=xo(t)},"setModelSelection"),getThinkingLevel:i(()=>e.thinkingLevel,"getThinkingLevel"),setThinkingLevel:i(t=>{e.thinkingLevel=t},"setThinkingLevel")}}i(es,"createExtensionRuntimeSessionController");async function ts(e){e.messages.push({role:"user",content:[...e.toolResults]}),e.editRecoveryMessages.length>0&&e.messages.push({role:"user",content:e.editRecoveryMessages.join(`
|
|
320
|
+
`),o.push({role:"user",content:[{type:"text",text:"Output token limit hit. Resume directly \u2014 no apology, no recap of what you were doing. Pick up mid-thought if that is where the cut happened. Break remaining work into smaller pieces."}],_synthetic:!0});let c=C(o,n);return{outcome:"continue",nextMaxTokensRetryCount:a,nextContextTokenSnapshot:c}}return s.onRetry?.(`max_tokens truncation limit reached (${a-1}/${3})`,a-1,3),{outcome:"exhausted",nextMaxTokensRetryCount:a}}i($i,"maybeContinueAfterMaxTokens");function ji(e){let{result:t,lastText:o,messages:r,continueAttempted:n,options:s,emittedManagedProtocolPayload:a,completedTurnTokenSnapshot:c}=e,d=s.context?.managedProtocolEmission;if(n||be(t.stopReason)!=="end"||t.toolBlocks.length!==0||!o||!d?.enabled||d.optional)return{outcome:"no_op",nextContinueAttempted:n};let u=d.role,m=Pr(u);return!m||Ar(a,u)||Ir(o,m)?{outcome:"no_op",nextContinueAttempted:n}:(r.push({role:"user",content:[{type:"text",text:`Your response is complete but the required protocol was not emitted. Do NOT output any text \u2014 ONLY call the "${_r}" tool now, or append a \`\`\`${m}\`\`\` fenced block. No other output.`}],_synthetic:!0}),{outcome:"continue",nextContinueAttempted:!0,nextContextTokenSnapshot:C(r,c)})}i(ji,"maybeAutoContinueManagedProtocol");import{exec as Tl}from"child_process";import{promisify as xl}from"util";function yl(e){let t=new Map;if(!e)return t;for(let[o,r]of Object.entries(e))t.set(o,new Map(Object.entries(r)));return t}i(yl,"createRuntimeExtensionState");function bl(e){let t={};for(let[o,r]of e.entries())r.size!==0&&(t[o]=Object.fromEntries(r.entries()));return Object.keys(t).length>0?t:void 0}i(bl,"snapshotRuntimeExtensionState");function vt(e,t={}){let o=t.includeUnchanged??!0,r=bl(e.extensionState),n=o||e.extensionStateDirty?r??(e.extensionStateDirty?{}:void 0):void 0,a=o&&e.extensionRecords.length>0||e.extensionRecordsDirty?e.extensionRecords.map(c=>({...c})):void 0;if(!(!n&&!a))return{...n?{extensionState:n}:{},...a?{extensionRecords:a}:{}}}i(vt,"snapshotRuntimeSessionState");function qi(e,t){let o=e.get(t);if(o)return o;let r=new Map;return e.set(t,r),r}i(qi,"getExtensionStateBucket");function Gi(e){return{queuedMessages:[],extensionState:yl(e.loadedExtensionState),extensionStateDirty:!1,extensionRecords:e.loadedExtensionRecords?.map(t=>({...t}))??[],extensionRecordsDirty:!1,activeTools:e.activeTools,editRecoveryAttempts:new Map,blockedEditWrites:new Set,modelSelection:e.modelSelection,thinkingLevel:e.thinkingLevel}}i(Gi,"buildRuntimeSessionState");function To(e){return typeof e=="string"?{role:"user",content:e}:e}i(To,"normalizeQueuedRuntimeMessage");function xo(e){let t={};return e.provider?.trim()&&(t.provider=e.provider.trim()),e.model?.trim()&&(t.model=e.model.trim()),t}i(xo,"normalizeRuntimeModelSelection");function Wi(){return`extrec_${Date.now()}_${Math.random().toString(36).slice(2,10)}`}i(Wi,"createSessionRecordId");var vl=xl(Tl);async function kl(e){try{let{stdout:t}=await vl("git rev-parse --show-toplevel",{cwd:e});return t.trim()}catch{return null}}i(kl,"getGitRoot");var Ki=new Set;function Dh(e){return Object.defineProperty(e,"__startKodaXGeneratedId",{value:!0,enumerable:!1}),e}i(Dh,"markStartKodaXGeneratedSessionId");function wl(e){return e?.__startKodaXGeneratedId===!0}i(wl,"hasStartKodaXGeneratedSessionId");function Xi(e){return Array.isArray(e.content)?e.content:[]}i(Xi,"contentBlocks");function El(e){return Xi(e).filter(t=>t.type==="tool_use").map(t=>t.id)}i(El,"collectToolUseIds");function Rl(e){return Xi(e).filter(t=>t.type==="tool_result").map(t=>t.tool_use_id)}i(Rl,"collectToolResultIds");function Sl(e){let t=e.find(r=>r.role!=="system");if(!t)return e.length===0;if(t.role!=="user")return!1;let o=new Set;for(let r of e){if(r.role==="assistant"){for(let n of El(r))o.add(n);continue}if(r.role==="user"){for(let n of Rl(r))if(!o.delete(n))return!1}}return o.size===0}i(Sl,"isSafeAuthoritativeTranscript");async function me(e,t,o){if(e.session?.persistedByHost&&!o.errorMetadata)return;if(!e.session?.storage){e.session?.id&&!wl(e.session)&&!Ki.has(e.session.id)&&(Ki.add(e.session.id),console.warn(`[KodaX SDK] session.id="${e.session.id}" was provided but session.storage is undefined \u2014 session snapshots will NOT be persisted. To persist, pass a storage instance: import { createSessionManager } from '@kodax-ai/kodax/session'; const { storage } = createSessionManager(); runKodaX({ session: { id, storage, ... }, ... }, prompt); See docs/SDK_EMBEDDER_GUIDE.md \xA76.`));return}let r=o.messages,n,s,a,c=!0;if(o.errorMetadata&&!Sl(o.messages)){c=!1;try{let m=await e.session.storage.load(t);m?(r=m.messages,n=m.lineage,s=m.extensionState?structuredClone(m.extensionState):void 0,a=m.extensionRecords?.map(l=>({...l}))):(r=[],n=void 0,s=void 0,a=void 0)}catch{r=[],n=void 0,s=void 0,a=void 0}}let d=o.gitRoot??e.context?.gitRoot??await kl(e.context?.executionCwd)??"",u=o.runtimeSessionState?vt(o.runtimeSessionState):void 0;c&&(s=u?.extensionState,a=u?.extensionRecords);try{await e.session.storage.save(t,{messages:r,title:o.title,gitRoot:d,tag:e.session.tag,scope:e.session.scope??"user",errorMetadata:o.errorMetadata,...n!==void 0?{lineage:n}:{},extensionState:s,extensionRecords:a})}catch(m){console.error("[SessionSnapshot] storage.save failed; continuing without snapshot persistence:",m)}}i(me,"saveSessionSnapshot");async function kt(e){await me(e.options,e.sessionId,{messages:e.messages,title:e.title,gitRoot:e.options.context?.gitRoot??void 0,runtimeSessionState:e.runtimeSessionState});let[t,o]=Fe(e.lastText);return{finalSignal:t,finalReason:o}}i(kt,"applyIterationLimitTerminal");async function Yi(e){let t=Ft(e.messages);t=Ie(t);let o={lastError:e.error.message,lastErrorTime:Date.now(),consecutiveErrors:(e.errorMetadata?.consecutiveErrors??0)+1};await me(e.options,e.sessionId,{messages:t,title:e.title,gitRoot:e.options.context?.gitRoot??void 0,errorMetadata:o,runtimeSessionState:e.runtimeSessionState});let r=et(t);return{cleanedMessages:t,updatedErrorMetadata:o,contextTokenSnapshot:r}}i(Yi,"runCatchCleanup");async function zi(e){ke(e.events),await e.emitActiveExtensionEvent("stream:end",void 0)}i(zi,"applyAbortErrorTerminal");async function Vi(e){await e.emitActiveExtensionEvent("error",{error:e.error}),qr(e.events,e.error)}i(Vi,"applyGenericErrorTerminal");async function Qi(e){let t={...e};return await de("provider:before",{provider:t.provider,model:t.model,reasoningMode:t.reasoningMode,systemPrompt:t.systemPrompt,block:i(o=>{t.blockedReason=o},"block"),replaceProvider:i(o=>{t.provider=o},"replaceProvider"),replaceModel:i(o=>{t.model=o},"replaceModel"),replaceSystemPrompt:i(o=>{t.systemPrompt=o},"replaceSystemPrompt"),setThinkingLevel:i(o=>{t.reasoningMode=o},"setThinkingLevel")}),t}i(Qi,"applyProviderPrepareHook");function Zi(e){return e.toLowerCase().replace(/[\s_-]+/g,"")}i(Zi,"normalizeToolNameKey");function Cl(e,t){if(t.includes(e))return null;let o=Zi(e);if(!o)return null;let r=t.filter(n=>Zi(n)===o);return r.length===1?r[0]:null}i(Cl,"resolveToolNameAlias");function Ji(e,t){return e.map(o=>{let r=Cl(o.name,t);return r?(process.env.KODAX_DEBUG_TOOL_STREAM&&console.warn("[Tool Name Repaired]",JSON.stringify(o.name),"\u2192",JSON.stringify(r)),{...o,name:r}):o})}i(Ji,"repairToolBlockNames");function He(e,t){return t.queuedMessages.length===0?!1:(e.push(...t.queuedMessages.splice(0)),!0)}i(He,"appendQueuedRuntimeMessages");async function $e(e,t,o,r){await de("turn:settle",{sessionId:e,lastText:t,hadToolCalls:r.hadToolCalls,success:r.success,signal:r.signal,queueUserMessage:i(n=>{o.queuedMessages.push(To(n))},"queueUserMessage"),setModelSelection:i(n=>{o.modelSelection=xo(n)},"setModelSelection"),setThinkingLevel:i(n=>{o.thinkingLevel=n},"setThinkingLevel")})}i($e,"settleExtensionTurn");function og(e){return async t=>{let o=e();return o?await de("turn:complete",{sessionId:o,lastAssistantText:t.lastAssistantText,signal:t.signal,reanimateCount:t.reanimateCount,reanimateBudget:t.reanimateBudget})??void 0:void 0}}i(og,"createExtensionTurnCompleteStopHook");function es(e){return{queueUserMessage:i(t=>{e.queuedMessages.push(To(t))},"queueUserMessage"),getSessionState:i((t,o)=>e.extensionState.get(t)?.get(o),"getSessionState"),setSessionState:i((t,o,r)=>{let n=qi(e.extensionState,t);if(e.extensionStateDirty=!0,r===void 0){n.delete(o),n.size===0&&e.extensionState.delete(t);return}n.set(o,r)},"setSessionState"),getSessionStateSnapshot:i(t=>Object.fromEntries((e.extensionState.get(t)??new Map).entries()),"getSessionStateSnapshot"),appendSessionRecord:i((t,o,r,n)=>{let s=o.trim(),a=n?.dedupeKey?.trim()||void 0,c={id:Wi(),extensionId:t,type:s,ts:Date.now(),...r===void 0?{}:{data:r},...a?{dedupeKey:a}:{}};if(a){let d=e.extensionRecords.findIndex(u=>u.extensionId===t&&u.type===s&&u.dedupeKey===a);if(d>=0)return e.extensionRecords.splice(d,1,c),e.extensionRecordsDirty=!0,c}return e.extensionRecords.push(c),e.extensionRecordsDirty=!0,c},"appendSessionRecord"),listSessionRecords:i((t,o)=>e.extensionRecords.filter(r=>r.extensionId===t&&(o===void 0||r.type===o)).map(r=>({...r})),"listSessionRecords"),clearSessionRecords:i((t,o)=>{let r=e.extensionRecords.length;e.extensionRecords=e.extensionRecords.filter(s=>s.extensionId!==t||o!==void 0&&s.type!==o);let n=r-e.extensionRecords.length;return n>0&&(e.extensionRecordsDirty=!0),n},"clearSessionRecords"),getActiveTools:i(()=>[...e.activeTools],"getActiveTools"),setActiveTools:i(t=>{e.activeTools=Array.from(new Set(t.map(o=>o.trim()).filter(Boolean)))},"setActiveTools"),getModelSelection:i(()=>({...e.modelSelection}),"getModelSelection"),setModelSelection:i(t=>{e.modelSelection=xo(t)},"setModelSelection"),getThinkingLevel:i(()=>e.thinkingLevel,"getThinkingLevel"),setThinkingLevel:i(t=>{e.thinkingLevel=t},"setThinkingLevel")}}i(es,"createExtensionRuntimeSessionController");async function ts(e){e.messages.push({role:"user",content:[...e.toolResults]}),e.editRecoveryMessages.length>0&&e.messages.push({role:"user",content:e.editRecoveryMessages.join(`
|
|
321
321
|
|
|
322
|
-
`),_synthetic:!0});let t=C(e.messages,e.completedTurnTokenSnapshot);await $e(e.sessionId,e.lastText,e.runtimeSessionState,{hadToolCalls:!0,success:!0});let o=He(e.messages,e.runtimeSessionState);return o&&(t=C(e.messages,t),await e.emitActiveExtensionEvent("turn:end",{sessionId:e.sessionId,iteration:e.iter+1,lastText:e.lastText,hadToolCalls:!0,signal:void 0})),{contextTokenSnapshot:t,drainedQueuedMessages:o}}i(ts,"pushToolResultsAndSettle");function Cl(e){return e?le(e)??e:void 0}i(Cl,"legacyReasoningModeToRuntimeEffort");async function os(e,t){let o=Qr(),r=e.extensionRuntime??o,n=e.extensionRuntime instanceof Vr?e.extensionRuntime:void 0,s=!!n&&n!==o;s&&n&&Gt(n);let a=Zr(r),c;try{let d=e.maxIter??200,u=e.events??{},m=r?.getDefaults?.(),l={preAnswerJudgeConsumed:!1,postToolJudgeConsumed:!1,maxTokensRetryCount:0,costTracker:qo(),managedProtocolContinueAttempted:!1,compactConsecutiveFailures:0,lastText:"",currentProviderName:m?.modelSelection.provider??e.provider,currentModelOverride:m?.modelSelection.model??e.modelOverride??e.model,runtimeThinkingLevel:m?.thinkingLevel},g=Te(l.currentProviderName);ro(g,l.currentProviderName);let R=g.getEffectiveContextWindow?.(l.currentModelOverride)??g.getContextWindow(),_=await dn(R,e.compaction),f=await En(e)??await Ut(),L=e.context?.liveTurn,w=Fr({sessionId:f,deliveryKind:L?.deliveryKind??"initial",turnId:L?.turnId,deliveryId:L?.deliveryId,promptId:L?.promptId});u=Ur(u,w),e={...e,events:u};let I=await kn(e,f),p=wn(I.messages,t,e.context?.inputArtifacts,w.turnId),O=I.title||t.slice(0,50)+(t.length>50?"...":""),ne=I.errorMetadata,F=I.loadedExtensionState,M=I.loadedExtensionRecords,N=$(e.context),Y={current:e.context?.managedProtocolEmission?.enabled?qt(void 0,void 0):void 0},Se=zr({options:e,sessionId:f,runtime:r??void 0,managedProtocolPayloadRef:Y}),y=C(p,e.context?.contextTokenSnapshot),b=Gi({loadedExtensionState:F,loadedExtensionRecords:M,activeTools:Di(Ni(m?.activeTools??rt().map(h=>h.name),e.context?.excludeTools),e.context?.toolVisibilityPolicy),modelSelection:{provider:l.currentProviderName,model:l.currentModelOverride},thinkingLevel:l.runtimeThinkingLevel}),q=!1,je=i(h=>{q||(q=!0,Hr(u,w,h))},"emitLiveTurnCompletedOnce"),vo=i(h=>{q||(q=!0,$r(u,w,h))},"emitLiveTurnFailedOnce"),G=i(h=>{h.success?je(h.interrupted?"interrupted":"completed"):vo(new Error(h.errorMetadata?.lastError??"KodaX run failed"));let P=qt(h.managedProtocolPayload,Y.current),K=vt(b,{includeUnchanged:!1});return P||K?{...h,...P?{managedProtocolPayload:P}:{},...K?{runtimeSessionSnapshot:K}:{}}:h},"finalizeManagedProtocolResult");e.sessionControl?._attach({setProvider:i(h=>{b.modelSelection.provider=h},"setProvider"),setModel:i(h=>{b.modelSelection.model=h},"setModel"),setReasoning:i(h=>{b.thinkingLevel=Cl(h)},"setReasoning")});let ko=r?.bindController?.(es(b));c=typeof ko=="function"?ko:void 0;let us=xe(e.context?.repoIntelligenceMode),ds=Je(e.context?.repoIntelligenceMode),ms=e.context?.repoRoutingSignals?Promise.resolve(e.context.repoRoutingSignals):us!=="off"&&(e.context?.executionCwd||e.context?.gitRoot)?wr({executionCwd:N,gitRoot:e.context?.gitRoot??void 0},{mode:ds}).catch(()=>null):Promise.resolve(null),[,qe]=await Promise.all([r?.hydrateSession?.(f),ms]);Ue(u,e,"routing",qe,qe?.activeModuleId?`active_module=${qe.activeModuleId}`:void 0);let Ge=await qn({...e,provider:l.currentProviderName,modelOverride:l.currentModelOverride},t,g,{recentMessages:p.slice(0,-1),sessionErrorMetadata:ne,repoSignals:qe??void 0}),fe=await bt({...e,provider:l.currentProviderName,modelOverride:l.currentModelOverride,effort:l.runtimeThinkingLevel??e.effort},l.runtimeThinkingLevel?{...Ge,effort:l.runtimeThinkingLevel}:Ge,p.length===1),wo=0,Z=i((h,P)=>(y=Kr(u,{iter:h,maxIter:d,messages:p,currentSnapshot:y,snapshotOverride:P}),y),"emitIterationEnd"),W=i(()=>Ge.decision,"currentRoutingDecision");jr(u,{provider:g.name,sessionId:f}),await T("session:start",{provider:g.name,sessionId:f}),Br(u,w),u.getCostReport&&(u.getCostReport.current=()=>Xo(Ko(l.costTracker)));for(let h=0;h<d;h++)try{let P=Kn(b,e,_);l.currentProviderName=P.providerName,l.currentModelOverride=P.modelOverride,l.runtimeThinkingLevel=P.thinkingLevel;let K=P.provider,pe=P.contextWindow,Ce=await ci({options:e,providerName:l.currentProviderName,modelOverride:l.currentModelOverride,thinkingLevel:l.runtimeThinkingLevel,reasoningPlan:Ge,messages:p}),ie=Ce.effectiveReasoningPlan;fe=Ce.currentExecution,await T("turn:start",{sessionId:f,iteration:h+1,maxIter:d}),Wr(u,h,d),p=ur(p,lr);let Ro=Dr(p,y),fs=dr({messages:p,compactionConfig:_,contextWindow:pe,currentTokens:Ro}),We=await Hi({messages:p,needsCompact:fs,compactConsecutiveFailures:l.compactConsecutiveFailures,compactionConfig:_,provider:K,model:l.currentModelOverride,contextWindow:pe,systemPrompt:fe.systemPrompt,currentTokens:Ro,events:u});p=We.messages,l.compactConsecutiveFailures=We.nextCompactConsecutiveFailures,We.contextTokenSnapshot!==void 0&&(y=We.contextTokenSnapshot);let he=await Qi({provider:l.currentProviderName,model:l.currentModelOverride,reasoningMode:ie.effort,systemPrompt:fe.systemPrompt});if(he.blockedReason)throw new Error(he.blockedReason);l.currentProviderName=he.provider,l.currentModelOverride=he.model,b.modelSelection.provider=l.currentProviderName,b.modelSelection.model=l.currentModelOverride,l.runtimeThinkingLevel=he.reasoningMode,b.thinkingLevel=l.runtimeThinkingLevel;let z=Te(l.currentProviderName),se=l.runtimeThinkingLevel??ie.effort,wt=l.currentModelOverride??z.getModel(),Et=Jo(l.currentProviderName,wt);if(se!==void 0&&Et.length>0){let v=Nt({provider:l.currentProviderName,model:wt,desiredEffort:se}).effort;v!==void 0&&Et.includes(v)&&(se=Nt({provider:l.currentProviderName,model:wt,desiredEffort:se,rejectedEfforts:Et}).effort??"none")}let So={...fe.providerReasoning,enabled:se!=="none",effort:se},{effectiveSystemPrompt:Ke}=ui({providerName:l.currentProviderName,model:l.currentModelOverride,provider:z,prompt:t,effectiveOptions:fe.effectiveOptions,reasoningMode:Bo(se)??"auto",taskType:ie.decision.primaryTask,executionMode:ie.decision.recommendedMode,baseSystemPrompt:he.systemPrompt});Yo(fe.effectiveOptions.context?.inputArtifacts??[],{provider:l.currentProviderName,model:l.currentModelOverride}),ro(z,l.currentProviderName),await T("provider:selected",{provider:l.currentProviderName,model:l.currentModelOverride});let Xe=new Tt,Co=Xe.tracker,{resilienceCfg:Ye,recoveryCoordinator:Rt}=fi(l.currentProviderName,z,Co,e.timeouts),_o=Ye.requestTimeoutMs,ps=Ye.streamIdleTimeoutMs,U=p,x,J=0,Mo=Li(b.activeTools,e.context?.repoIntelligenceMode,e.context?.managedProtocolEmission?.enabled===!0,!!r,e.context?.toolConstructionMode,tn(Se),e.selfManual?.productName);for(;;){J+=1,Xe.beginAttempt(l.currentProviderName,l.currentModelOverride??z.getModel(),U,J,!1);let v=li({hardTimeoutMs:_o,idleTimeoutMs:ps,streamMaxDurationMs:z.getStreamMaxDurationMs?.(l.currentModelOverride)??0,callerAbortSignal:e.abortSignal}),H=v.retryTimeoutController,Do=v.retrySignal,Xl=v.resetIdleTimer,Lo=mt(U,Ke);A("[resilience:request]",{provider:l.currentProviderName,attempt:J,fallbackActive:!1,payloadBytes:Lo,payloadBucket:ft(Lo),lastToolErrorCode:b.lastToolErrorCode,lastToolResultBytes:b.lastToolResultBytes});try{let ye=di({events:u,boundaryTracker:Co,streamTimers:v,emitActiveExtensionEvent:T,providerName:l.currentProviderName}),ae=i(ce=>{l.costTracker=Go(l.costTracker,{provider:ce.provider,waitMs:ce.waitMs,reason:ce.reason,source:ce.source}),ye.onRetryAfter?.(ce)},"wrappedRetryAfter");x=await z.stream(U,Mo,Ke,So,{...ye,onRetryAfter:ae,modelOverride:l.currentModelOverride,signal:Do},Do),p=U;break}catch(ye){let ae=ye instanceof Error?ye:new Error(String(ye));ae=await pi(ae,H,e.abortSignal);let ce=Xe.inferFailureStage(),{decision:V}=hi({error:ae,failureStage:ce,attempt:J,events:u,resilienceCfg:Ye,recoveryCoordinator:Rt});if(V.shouldUseNonStreaming){let _e=mt(U,Ke);A("[resilience:fallback]",{provider:l.currentProviderName,attempt:J,payloadBytes:_e,payloadBucket:ft(_e)});let Pt=await gi({events:u,streamProvider:z,providerMessages:U,activeToolDefinitions:Mo,effectiveSystemPrompt:Ke,effectiveProviderReasoning:So,callerAbortSignal:e.abortSignal,modelOverride:l.currentModelOverride,hardTimeoutMs:_o,boundarySession:Xe,emitActiveExtensionEvent:T,providerName:l.currentProviderName,attempt:J,clearStreamTimers:v.clearAll});if(Pt.ok){x=Pt.result,p=U;break}ae=Pt.error}if(V.action==="sanitize_thinking_and_retry"){let _e=Rt.executeRecovery(U,V);at(V.action,_e),U=_e.messages,v.clearAll(),J-=1,await Wt(V.delayMs,e.abortSignal);continue}if(V.action==="manual_continue"||J>=Ye.maxRetries)throw p=U,ae;let Fo=Rt.executeRecovery(U,V);at(V.action,Fo),U=Fo.messages,v.clearAll(),await Wt(V.delayMs,e.abortSignal);continue}finally{v.clearAll()}}ke(u),await T("stream:end",void 0),x.usage&&(l.costTracker=Wo(l.costTracker,{provider:l.currentProviderName,model:l.currentModelOverride??"unknown",inputTokens:x.usage.inputTokens,outputTokens:x.usage.outputTokens,cacheReadTokens:x.usage.cachedReadTokens,cacheWriteTokens:x.usage.cachedWriteTokens})),l.lastText=x.textBlocks.map(v=>v.text).join(" ");let St=Nr(p,x.usage),Po=bo(b.activeTools,e.context?.repoIntelligenceMode,!!r,e.context?.toolConstructionMode);x={...x,toolBlocks:Ji(x.toolBlocks,Po)};let hs=x.toolBlocks.filter(v=>Q(v.name)),[ze,Wl]=Fe(l.lastText);if(ze){if(await $e(f,l.lastText,b,{hadToolCalls:!1,success:!0,signal:ze}),He(p,b)){y=C(p,St),await T("turn:end",{sessionId:f,iteration:h+1,lastText:l.lastText,hadToolCalls:!1,signal:ze});continue}if(ze==="COMPLETE")return Z(h+1,St),await T("turn:end",{sessionId:f,iteration:h+1,lastText:l.lastText,hadToolCalls:!1,signal:"COMPLETE"}),je("completed"),tt(u),await T("complete",{success:!0,signal:"COMPLETE"}),G({success:!0,lastText:l.lastText,signal:"COMPLETE",messages:p,sessionId:f,routingDecision:W(),contextTokenSnapshot:y,limitReached:!1})}let gs=yi([...x.thinkingBlocks,...x.textBlocks,...hs]);p.push({role:"assistant",content:gs,turnId:w.turnId,timestamp:new Date().toISOString()});let B=Or(p,x.usage);y=B;let Ct=$i({result:x,messages:p,maxTokensRetryCount:l.maxTokensRetryCount,completedTurnTokenSnapshot:B,events:u});if(l.maxTokensRetryCount=Ct.nextMaxTokensRetryCount,Ct.outcome==="continue"){y=Ct.nextContextTokenSnapshot;continue}let _t=ji({result:x,lastText:l.lastText,messages:p,continueAttempted:l.managedProtocolContinueAttempted,options:e,emittedManagedProtocolPayload:Y.current,completedTurnTokenSnapshot:B});if(l.managedProtocolContinueAttempted=_t.nextContinueAttempted,_t.outcome==="continue"){y=_t.nextContextTokenSnapshot;continue}let Ao=be(x.stopReason);if(Ao==="refused"?u.onTextDelta?.(`
|
|
322
|
+
`),_synthetic:!0});let t=C(e.messages,e.completedTurnTokenSnapshot);await $e(e.sessionId,e.lastText,e.runtimeSessionState,{hadToolCalls:!0,success:!0});let o=He(e.messages,e.runtimeSessionState);return o&&(t=C(e.messages,t),await e.emitActiveExtensionEvent("turn:end",{sessionId:e.sessionId,iteration:e.iter+1,lastText:e.lastText,hadToolCalls:!0,signal:void 0})),{contextTokenSnapshot:t,drainedQueuedMessages:o}}i(ts,"pushToolResultsAndSettle");function _l(e){return e?le(e)??e:void 0}i(_l,"legacyReasoningModeToRuntimeEffort");async function os(e,t){let o=Qr(),r=e.extensionRuntime??o,n=e.extensionRuntime instanceof Vr?e.extensionRuntime:void 0,s=!!n&&n!==o;s&&n&&Gt(n);let a=Zr(r),c;try{let d=e.maxIter??200,u=e.events??{},m=r?.getDefaults?.(),l={preAnswerJudgeConsumed:!1,postToolJudgeConsumed:!1,maxTokensRetryCount:0,costTracker:qo(),managedProtocolContinueAttempted:!1,compactConsecutiveFailures:0,lastText:"",currentProviderName:m?.modelSelection.provider??e.provider,currentModelOverride:m?.modelSelection.model??e.modelOverride??e.model,runtimeThinkingLevel:m?.thinkingLevel},g=Te(l.currentProviderName);ro(g,l.currentProviderName);let R=g.getEffectiveContextWindow?.(l.currentModelOverride)??g.getContextWindow(),_=await dn(R,e.compaction),f=await En(e)??await Ut(),L=e.context?.liveTurn,w=Fr({sessionId:f,deliveryKind:L?.deliveryKind??"initial",turnId:L?.turnId,deliveryId:L?.deliveryId,promptId:L?.promptId});u=Ur(u,w),e={...e,events:u};let I=await kn(e,f),p=wn(I.messages,t,e.context?.inputArtifacts,w.turnId),O=I.title||t.slice(0,50)+(t.length>50?"...":""),ne=I.errorMetadata,F=I.loadedExtensionState,M=I.loadedExtensionRecords,N=$(e.context),Y={current:e.context?.managedProtocolEmission?.enabled?qt(void 0,void 0):void 0},Se=zr({options:e,sessionId:f,runtime:r??void 0,managedProtocolPayloadRef:Y}),y=C(p,e.context?.contextTokenSnapshot),b=Gi({loadedExtensionState:F,loadedExtensionRecords:M,activeTools:Di(Ni(m?.activeTools??rt().map(h=>h.name),e.context?.excludeTools),e.context?.toolVisibilityPolicy),modelSelection:{provider:l.currentProviderName,model:l.currentModelOverride},thinkingLevel:l.runtimeThinkingLevel}),q=!1,je=i(h=>{q||(q=!0,Hr(u,w,h))},"emitLiveTurnCompletedOnce"),vo=i(h=>{q||(q=!0,$r(u,w,h))},"emitLiveTurnFailedOnce"),G=i(h=>{h.success?je(h.interrupted?"interrupted":"completed"):vo(new Error(h.errorMetadata?.lastError??"KodaX run failed"));let P=qt(h.managedProtocolPayload,Y.current),K=vt(b,{includeUnchanged:!1});return P||K?{...h,...P?{managedProtocolPayload:P}:{},...K?{runtimeSessionSnapshot:K}:{}}:h},"finalizeManagedProtocolResult");e.sessionControl?._attach({setProvider:i(h=>{b.modelSelection.provider=h},"setProvider"),setModel:i(h=>{b.modelSelection.model=h},"setModel"),setReasoning:i(h=>{b.thinkingLevel=_l(h)},"setReasoning")});let ko=r?.bindController?.(es(b));c=typeof ko=="function"?ko:void 0;let us=xe(e.context?.repoIntelligenceMode),ds=Je(e.context?.repoIntelligenceMode),ms=e.context?.repoRoutingSignals?Promise.resolve(e.context.repoRoutingSignals):us!=="off"&&(e.context?.executionCwd||e.context?.gitRoot)?wr({executionCwd:N,gitRoot:e.context?.gitRoot??void 0},{mode:ds}).catch(()=>null):Promise.resolve(null),[,qe]=await Promise.all([r?.hydrateSession?.(f),ms]);Ue(u,e,"routing",qe,qe?.activeModuleId?`active_module=${qe.activeModuleId}`:void 0);let Ge=await qn({...e,provider:l.currentProviderName,modelOverride:l.currentModelOverride},t,g,{recentMessages:p.slice(0,-1),sessionErrorMetadata:ne,repoSignals:qe??void 0}),fe=await bt({...e,provider:l.currentProviderName,modelOverride:l.currentModelOverride,effort:l.runtimeThinkingLevel??e.effort},l.runtimeThinkingLevel?{...Ge,effort:l.runtimeThinkingLevel}:Ge,p.length===1),wo=0,Z=i((h,P)=>(y=Kr(u,{iter:h,maxIter:d,messages:p,currentSnapshot:y,snapshotOverride:P}),y),"emitIterationEnd"),W=i(()=>Ge.decision,"currentRoutingDecision");jr(u,{provider:g.name,sessionId:f}),await T("session:start",{provider:g.name,sessionId:f}),Br(u,w),u.getCostReport&&(u.getCostReport.current=()=>Xo(Ko(l.costTracker)));for(let h=0;h<d;h++)try{let P=Kn(b,e,_);l.currentProviderName=P.providerName,l.currentModelOverride=P.modelOverride,l.runtimeThinkingLevel=P.thinkingLevel;let K=P.provider,pe=P.contextWindow,Ce=await ci({options:e,providerName:l.currentProviderName,modelOverride:l.currentModelOverride,thinkingLevel:l.runtimeThinkingLevel,reasoningPlan:Ge,messages:p}),ie=Ce.effectiveReasoningPlan;fe=Ce.currentExecution,await T("turn:start",{sessionId:f,iteration:h+1,maxIter:d}),Wr(u,h,d),p=ur(p,lr);let Ro=Dr(p,y),fs=dr({messages:p,compactionConfig:_,contextWindow:pe,currentTokens:Ro}),We=await Hi({messages:p,needsCompact:fs,compactConsecutiveFailures:l.compactConsecutiveFailures,compactionConfig:_,provider:K,model:l.currentModelOverride,contextWindow:pe,systemPrompt:fe.systemPrompt,currentTokens:Ro,events:u});p=We.messages,l.compactConsecutiveFailures=We.nextCompactConsecutiveFailures,We.contextTokenSnapshot!==void 0&&(y=We.contextTokenSnapshot);let he=await Qi({provider:l.currentProviderName,model:l.currentModelOverride,reasoningMode:ie.effort,systemPrompt:fe.systemPrompt});if(he.blockedReason)throw new Error(he.blockedReason);l.currentProviderName=he.provider,l.currentModelOverride=he.model,b.modelSelection.provider=l.currentProviderName,b.modelSelection.model=l.currentModelOverride,l.runtimeThinkingLevel=he.reasoningMode,b.thinkingLevel=l.runtimeThinkingLevel;let z=Te(l.currentProviderName),se=l.runtimeThinkingLevel??ie.effort,wt=l.currentModelOverride??z.getModel(),Et=Jo(l.currentProviderName,wt);if(se!==void 0&&Et.length>0){let v=Nt({provider:l.currentProviderName,model:wt,desiredEffort:se}).effort;v!==void 0&&Et.includes(v)&&(se=Nt({provider:l.currentProviderName,model:wt,desiredEffort:se,rejectedEfforts:Et}).effort??"none")}let So={...fe.providerReasoning,enabled:se!=="none",effort:se},{effectiveSystemPrompt:Ke}=ui({providerName:l.currentProviderName,model:l.currentModelOverride,provider:z,prompt:t,effectiveOptions:fe.effectiveOptions,reasoningMode:Bo(se)??"auto",taskType:ie.decision.primaryTask,executionMode:ie.decision.recommendedMode,baseSystemPrompt:he.systemPrompt});Yo(fe.effectiveOptions.context?.inputArtifacts??[],{provider:l.currentProviderName,model:l.currentModelOverride}),ro(z,l.currentProviderName),await T("provider:selected",{provider:l.currentProviderName,model:l.currentModelOverride});let Xe=new Tt,Co=Xe.tracker,{resilienceCfg:Ye,recoveryCoordinator:Rt}=fi(l.currentProviderName,z,Co,e.timeouts),_o=Ye.requestTimeoutMs,ps=Ye.streamIdleTimeoutMs,U=p,x,J=0,Mo=Li(b.activeTools,e.context?.repoIntelligenceMode,e.context?.managedProtocolEmission?.enabled===!0,!!r,e.context?.toolConstructionMode,tn(Se),e.selfManual?.productName);for(;;){J+=1,Xe.beginAttempt(l.currentProviderName,l.currentModelOverride??z.getModel(),U,J,!1);let v=li({hardTimeoutMs:_o,idleTimeoutMs:ps,streamMaxDurationMs:z.getStreamMaxDurationMs?.(l.currentModelOverride)??0,callerAbortSignal:e.abortSignal}),H=v.retryTimeoutController,Do=v.retrySignal,Yl=v.resetIdleTimer,Lo=mt(U,Ke);A("[resilience:request]",{provider:l.currentProviderName,attempt:J,fallbackActive:!1,payloadBytes:Lo,payloadBucket:ft(Lo),lastToolErrorCode:b.lastToolErrorCode,lastToolResultBytes:b.lastToolResultBytes});try{let ye=di({events:u,boundaryTracker:Co,streamTimers:v,emitActiveExtensionEvent:T,providerName:l.currentProviderName}),ae=i(ce=>{l.costTracker=Go(l.costTracker,{provider:ce.provider,waitMs:ce.waitMs,reason:ce.reason,source:ce.source}),ye.onRetryAfter?.(ce)},"wrappedRetryAfter");x=await z.stream(U,Mo,Ke,So,{...ye,onRetryAfter:ae,modelOverride:l.currentModelOverride,signal:Do},Do),p=U;break}catch(ye){let ae=ye instanceof Error?ye:new Error(String(ye));ae=await pi(ae,H,e.abortSignal);let ce=Xe.inferFailureStage(),{decision:V}=hi({error:ae,failureStage:ce,attempt:J,events:u,resilienceCfg:Ye,recoveryCoordinator:Rt});if(V.shouldUseNonStreaming){let _e=mt(U,Ke);A("[resilience:fallback]",{provider:l.currentProviderName,attempt:J,payloadBytes:_e,payloadBucket:ft(_e)});let Pt=await gi({events:u,streamProvider:z,providerMessages:U,activeToolDefinitions:Mo,effectiveSystemPrompt:Ke,effectiveProviderReasoning:So,callerAbortSignal:e.abortSignal,modelOverride:l.currentModelOverride,hardTimeoutMs:_o,boundarySession:Xe,emitActiveExtensionEvent:T,providerName:l.currentProviderName,attempt:J,clearStreamTimers:v.clearAll});if(Pt.ok){x=Pt.result,p=U;break}ae=Pt.error}if(V.action==="sanitize_thinking_and_retry"){let _e=Rt.executeRecovery(U,V);at(V.action,_e),U=_e.messages,v.clearAll(),J-=1,await Wt(V.delayMs,e.abortSignal);continue}if(V.action==="manual_continue"||J>=Ye.maxRetries)throw p=U,ae;let Fo=Rt.executeRecovery(U,V);at(V.action,Fo),U=Fo.messages,v.clearAll(),await Wt(V.delayMs,e.abortSignal);continue}finally{v.clearAll()}}ke(u),await T("stream:end",void 0),x.usage&&(l.costTracker=Wo(l.costTracker,{provider:l.currentProviderName,model:l.currentModelOverride??"unknown",inputTokens:x.usage.inputTokens,outputTokens:x.usage.outputTokens,cacheReadTokens:x.usage.cachedReadTokens,cacheWriteTokens:x.usage.cachedWriteTokens})),l.lastText=x.textBlocks.map(v=>v.text).join(" ");let St=Nr(p,x.usage),Po=bo(b.activeTools,e.context?.repoIntelligenceMode,!!r,e.context?.toolConstructionMode);x={...x,toolBlocks:Ji(x.toolBlocks,Po)};let hs=x.toolBlocks.filter(v=>Q(v.name)),[ze,Kl]=Fe(l.lastText);if(ze){if(await $e(f,l.lastText,b,{hadToolCalls:!1,success:!0,signal:ze}),He(p,b)){y=C(p,St),await T("turn:end",{sessionId:f,iteration:h+1,lastText:l.lastText,hadToolCalls:!1,signal:ze});continue}if(ze==="COMPLETE")return Z(h+1,St),await T("turn:end",{sessionId:f,iteration:h+1,lastText:l.lastText,hadToolCalls:!1,signal:"COMPLETE"}),je("completed"),tt(u),await T("complete",{success:!0,signal:"COMPLETE"}),G({success:!0,lastText:l.lastText,signal:"COMPLETE",messages:p,sessionId:f,routingDecision:W(),contextTokenSnapshot:y,limitReached:!1})}let gs=yi([...x.thinkingBlocks,...x.textBlocks,...hs]);p.push({role:"assistant",content:gs,turnId:w.turnId,timestamp:new Date().toISOString()});let B=Or(p,x.usage);y=B;let Ct=$i({result:x,messages:p,maxTokensRetryCount:l.maxTokensRetryCount,completedTurnTokenSnapshot:B,events:u});if(l.maxTokensRetryCount=Ct.nextMaxTokensRetryCount,Ct.outcome==="continue"){y=Ct.nextContextTokenSnapshot;continue}let _t=ji({result:x,lastText:l.lastText,messages:p,continueAttempted:l.managedProtocolContinueAttempted,options:e,emittedManagedProtocolPayload:Y.current,completedTurnTokenSnapshot:B});if(l.managedProtocolContinueAttempted=_t.nextContinueAttempted,_t.outcome==="continue"){y=_t.nextContextTokenSnapshot;continue}let Ao=be(x.stopReason);if(Ao==="refused"?u.onTextDelta?.(`
|
|
323
323
|
|
|
324
324
|
[model declined to answer]
|
|
325
325
|
|
|
326
|
-
`):Ao==="unknown"&&typeof x.stopReason=="string"&&console.warn("[kodax:stop-reason]",{rawStopReason:x.stopReason,provider:l.currentProviderName,model:l.currentModelOverride??z.getModel(),hasToolBlocks:x.toolBlocks.length>0,hasTextBlocks:x.textBlocks.length>0}),x.toolBlocks.length===0){if(await $e(f,l.lastText,b,{hadToolCalls:!1,success:!0}),He(p,b)){y=C(p,B),await T("turn:end",{sessionId:f,iteration:h+1,lastText:l.lastText,hadToolCalls:!1,signal:void 0});continue}if(ve(u))return Z(h+1,B),await T("turn:end",{sessionId:f,iteration:h+1,lastText:l.lastText,hadToolCalls:!1,signal:void 0}),G({success:!0,lastText:l.lastText,messages:p,sessionId:f,routingDecision:W(),contextTokenSnapshot:y,limitReached:!1});Z(h+1,B),await T("turn:end",{sessionId:f,iteration:h+1,lastText:l.lastText,hadToolCalls:!1,signal:void 0}),je("completed"),tt(u),await T("complete",{success:!0,signal:void 0});{let H=await kt({options:e,sessionId:f,messages:p,title:O,runtimeSessionState:b,lastText:l.lastText});return G({success:!0,lastText:l.lastText,signal:H.finalSignal,signalReason:H.finalReason,messages:p,sessionId:f,routingDecision:W(),contextTokenSnapshot:y,limitReached:!1})}}let Mt=await Pi({toolBlocks:x.toolBlocks,events:u,emitActiveExtensionEvent:T,messages:p,incompleteRetryCount:wo,preAssistantTokenSnapshot:St,completedTurnTokenSnapshot:B});if(wo=Mt.nextIncompleteRetryCount,y=Mt.nextContextTokenSnapshot,Mt.outcome!=="no_incomplete")continue;let ge=[],Io=[],Oo=await Ai({toolBlocks:x.toolBlocks,abortSignal:e.abortSignal,events:u,emitActiveExtensionEvent:T});if(Oo!==null)ge.push(...Oo);else{let v=await _i({toolBlocks:x.toolBlocks,events:u,ctx:Se,runtimeSessionState:b,activeToolNames:Po,abortSignal:e.abortSignal}),H=await Mi({toolBlocks:x.toolBlocks,resultMap:v,events:u,emitActiveExtensionEvent:T,ctx:Se,runtimeSessionState:b});ge=H.toolResults,Io=H.editRecoveryMessages}let ys=Ii(ge);if(ge.length===0){if(await $e(f,l.lastText,b,{hadToolCalls:!1,success:!0}),He(p,b)){y=C(p,B),await T("turn:end",{sessionId:f,iteration:h+1,lastText:l.lastText,hadToolCalls:!1,signal:void 0});continue}if(ve(u))return Z(h+1,B),await T("turn:end",{sessionId:f,iteration:h+1,lastText:l.lastText,hadToolCalls:!1,signal:void 0}),G({success:!0,lastText:l.lastText,messages:p,sessionId:f,routingDecision:W(),contextTokenSnapshot:y,limitReached:!1});Z(h+1,B),await T("turn:end",{sessionId:f,iteration:h+1,lastText:l.lastText,hadToolCalls:!1,signal:void 0}),je("completed"),tt(u),await T("complete",{success:!0,signal:void 0});{let H=await kt({options:e,sessionId:f,messages:p,title:O,runtimeSessionState:b,lastText:l.lastText});return G({success:!0,lastText:l.lastText,signal:H.finalSignal,signalReason:H.finalReason,messages:p,sessionId:f,routingDecision:W(),contextTokenSnapshot:y,limitReached:!1})}}if(ys){let v=await Oi({events:u,emitActiveExtensionEvent:T,messages:p,toolResults:ge,completedTurnTokenSnapshot:B,sessionId:f,iter:h,emitIterationEnd:Z});return y=v.contextTokenSnapshot,G({success:!0,lastText:yo,messages:p,sessionId:f,routingDecision:W(),contextTokenSnapshot:y,interrupted:!v.shouldYieldToQueuedFollowUp})}let No=await ts({messages:p,toolResults:ge,editRecoveryMessages:Io,completedTurnTokenSnapshot:B,runtimeSessionState:b,emitActiveExtensionEvent:T,sessionId:f,lastText:l.lastText,iter:h});if(y=No.contextTokenSnapshot,No.drainedQueuedMessages)continue;if(ve(u))return Z(h+1,y),await T("turn:end",{sessionId:f,iteration:h+1,lastText:l.lastText,hadToolCalls:!0,signal:void 0}),G({success:!0,lastText:l.lastText,messages:p,sessionId:f,routingDecision:W(),contextTokenSnapshot:y,limitReached:!1});await me(e,f,{messages:p,title:O,gitRoot:e.context?.gitRoot??void 0,runtimeSessionState:b}),Z(h+1,y),await T("turn:end",{sessionId:f,iteration:h+1,lastText:l.lastText,hadToolCalls:!0,signal:void 0})}catch(P){let K=P instanceof Error?P:new Error(String(P)),pe=await Yi({error:K,messages:p,errorMetadata:ne,options:e,sessionId:f,title:O,runtimeSessionState:b}),Ce=pe.cleanedMessages,ie=pe.updatedErrorMetadata;return y=pe.contextTokenSnapshot,K.name==="AbortError"?(await zi({events:u,emitActiveExtensionEvent:T}),G({success:!0,lastText:l.lastText,messages:Ce,sessionId:f,routingDecision:W(),contextTokenSnapshot:y,interrupted:!0,errorMetadata:ie})):(vo(K),await Vi({error:K,events:u,emitActiveExtensionEvent:T}),G({success:!1,lastText:l.lastText,messages:Ce,sessionId:f,routingDecision:W(),contextTokenSnapshot:y,errorMetadata:ie}))}let Eo=await kt({options:e,sessionId:f,messages:p,title:O,runtimeSessionState:b,lastText:l.lastText});return G({success:!0,lastText:l.lastText,signal:Eo.finalSignal,signalReason:Eo.finalReason,messages:p,sessionId:f,routingDecision:W(),contextTokenSnapshot:y,limitReached:!0})}finally{c?.(),a(),s&&Gt(o)}}i(os,"runSubstrate");var ns="kodax/coding/default",_l="KodaX default coding agent.\n\nThis agent is a thin declaration that routes through the built-in `runKodaX`\npipeline. Tools, extensions, reasoning, provider selection, session\npersistence, compaction and harness routing are all driven by the\n`KodaXOptions` forwarded via `Runner.run` `opts.presetOptions`.\n";function Ml(e){if(typeof e=="string")return e;for(let t=e.length-1;t>=0;t--){let o=e[t];if(o?.role==="user")return Lt(o)||""}return""}i(Ml,"extractPrompt");function rs(e){let t=e.trim();return t===""||t==="..."}i(rs,"isPlaceholderOnlyAssistantText");function Pl(e){if(e.role!=="user")return!1;let t=e.content;return!Array.isArray(t)||t.length===0?!1:t.every(o=>!!o&&typeof o=="object"&&"type"in o&&o.type==="tool_result")}i(Pl,"isPureToolResultUserMessage");function Al(e){if(e.lastText&&!rs(e.lastText))return e.lastText;for(let t=e.messages.length-1;t>=0;t--){let o=e.messages[t];if(o){if(o.role==="assistant"){let r=Lt(o);return r&&!rs(r)?r:""}if(!Pl(o))return""}}return""}i(Al,"extractFinalAssistantText");var Il=i(async(e,t,o,r)=>{let n=o?.presetOptions??{},s=o?.abortSignal?{...n,abortSignal:o.abortSignal}:n,a=Ml(t),c=r?r.agentSpan.addChild("coding:runSubstrate",{kind:"generation",agentName:ns,provider:s.provider??"unknown",model:s.model??"unknown"}):null,d;try{d=await os(s,a)}catch(l){throw c&&(c.setError(l instanceof Error?l:new Error(String(l))),c.end()),l}return c&&c.end(),{output:Al(d),messages:d.messages,sessionId:d.sessionId,data:d}},"codingSubstrate"),Ol=Object.freeze([Object.freeze({name:"autoReroute",enabled:!0}),Object.freeze({name:"mutationReflection",enabled:!0}),Object.freeze({name:"preAnswerJudge",enabled:!0}),Object.freeze({name:"postToolJudge",enabled:!0})]),Nl=Object.freeze({default:"balanced",max:"deep",escalateOnRevise:!0});function is(e={}){return Vo({name:ns,instructions:_l,substrateExecutor:Il,middleware:Ol,reasoning:Nl,...e})}i(is,"createDefaultCodingAgent");var Dl=/\b(forget|do not remember|don't remember|remove (?:this )?from memory|delete .{0,40}memory)\b/i,Ll=/(?:\u522b\u8bb0|\u4e0d\u8981\u8bb0\u4f4f|\u5fd8\u8bb0|\u5220\u9664.{0,12}\u8bb0\u5fc6|\u4e0d\u8981\u518d\u8bb0)/u,Fl=/\b(remember this|please remember|save this to memory|add this to memory)\b/i,Ul=/(?:\u8bb0\u4f4f|\u4fdd\u5b58.{0,12}\u8bb0\u5fc6|\u52a0\u5165\u8bb0\u5fc6)/u,Bl=/\b(memory|remembered|remember|stored|previously saved|memo(?:ry)? note)\b/i,Hl=/\b(wrong|incorrect|outdated|actually|correction|correcting|not .{1,80} but|instead|should be)\b/i,$l=/(?:\u8bb0\u5fc6|\u8bb0\u4f4f\u7684|\u4e4b\u524d\u8bb0\u7684)/u,jl=/(?:\u4e0d\u662f.{0,24}\u800c\u662f|\u7ea0\u6b63|\u66f4\u6b63|\u5176\u5b9e|\u5e94\u8be5\u662f|\u4e0d\u5bf9)/u;async function ss(e){if(cs(e))return;let t=$(e.context);try{let o=await Oe({cwd:t,projectDocs:[],discoverSkills:!1}).maybeRunAutoCurator();(o.ran||o.skippedReason!=="not_due")&&A("[memory:maintenance]",{cwd:t,ran:o.ran,skippedReason:o.skippedReason??null,reportPath:o.reportPath??null,nextEligibleAt:o.nextEligibleAt??null})}catch(o){A("[memory:maintenance:error]",{cwd:t,error:o instanceof Error?o.message:String(o)})}}i(ss,"maybeRunMemoryMaintenanceWindow");async function as(e,t){if(cs(e))return;let o=e.memoryReviewer;if(o===void 0)return;let r=ql(t);if(r===void 0)return;let n=$(e.context),s=e.context?.rawUserInput?.trim();try{let a=await Oe({cwd:n,projectDocs:[],discoverSkills:!1,memoryReviewer:o}).reviewMemoryFeedback({trigger:r,userFeedback:t,...s!==void 0&&s.length>0?{task:s}:{}});e.events?.onMemoryReview?.(a),A("[memory:review]",{cwd:n,trigger:r,actions:a.actions.length,candidates:a.candidateRefs.map(c=>c.ref.id)})}catch(a){A("[memory:review:error]",{cwd:n,error:a instanceof Error?a.message:String(a)})}}i(as,"maybeReviewMemoryFeedbackFromPrompt");function ql(e){let t=e.trim();if(t.length!==0){if(Dl.test(t)||Ll.test(t))return"explicit_forget";if(Fl.test(t)||Ul.test(t))return"explicit_remember";if(Gl(t))return"user_correction"}}i(ql,"detectMemoryReviewTrigger");function Gl(e){return Bl.test(e)&&Hl.test(e)||$l.test(e)&&jl.test(e)}i(Gl,"isMemoryCorrection");function cs(e){return e.context?.currentAgentId!==void 0||e.context?.parentAgentId!==void 0}i(cs,"isInternalAgentRun");function ls(e){return{...e.modelTiers!==void 0?{modelTiers:e.modelTiers}:{},...e.maxOutputTokens!==void 0?{maxOutputTokens:e.maxOutputTokens}:{},...e.disablePromptCache!==void 0?{disablePromptCache:e.disablePromptCache}:{},...e.lsp!==void 0?{lsp:e.lsp}:{},...e.workflow!==void 0?{workflow:e.workflow}:{}}}i(ls,"deriveRunScopedConfig");async function Ty(e,t){let{options:o}=Un(e,t),r=o.context?.agentProfile?.instructions,n=r!==void 0&&o.context?.systemPromptOverride===void 0?{...o,context:{...o.context,systemPromptOverride:r}}:o;return $o(ls(n),async()=>{await ss(n),await as(n,t);let s=await Qo.run(is(),t,{presetOptions:n,abortSignal:n.abortSignal,guardrails:n.guardrails});if(!s.data)throw new Error("runKodaX: substrate executor did not lift KodaXResult onto RunResult.data \u2014 verify createDefaultCodingAgent().substrateExecutor in coding-preset.ts");return s.data})}i(Ty,"runKodaX");export{j as a,ws as b,dn as c,Wt as d,pn as e,Kt as f,nt as g,Ps as h,Ne as i,it as j,De as k,zt as l,Vt as m,Qt as n,at as o,Le as p,xn as q,jd as r,Vd as s,Tn as t,ct as u,kn as v,Qs as w,Rn as x,lt as y,Fn as z,va as A,dm as B,Un as C,oo as D,mm as E,lc as F,jn as G,qn as H,mt as I,ft as J,Fe as K,A as L,no as M,Yn as N,k as O,io as P,zn as Q,so as R,lo as S,Um as T,ei as U,fo as V,ni as W,po as X,ii as Y,ho as Z,mi as _,bi as $,Ee as aa,Ni as ba,Di as ca,bo as da,Fi as ea,Ui as fa,vt as ga,Gi as ha,me as ia,eg as ja,es as ka,ns as la,is as ma,ss as na,as as oa,ls as pa,Ty as qa};
|
|
326
|
+
`):Ao==="unknown"&&typeof x.stopReason=="string"&&console.warn("[kodax:stop-reason]",{rawStopReason:x.stopReason,provider:l.currentProviderName,model:l.currentModelOverride??z.getModel(),hasToolBlocks:x.toolBlocks.length>0,hasTextBlocks:x.textBlocks.length>0}),x.toolBlocks.length===0){if(await $e(f,l.lastText,b,{hadToolCalls:!1,success:!0}),He(p,b)){y=C(p,B),await T("turn:end",{sessionId:f,iteration:h+1,lastText:l.lastText,hadToolCalls:!1,signal:void 0});continue}if(ve(u))return Z(h+1,B),await T("turn:end",{sessionId:f,iteration:h+1,lastText:l.lastText,hadToolCalls:!1,signal:void 0}),G({success:!0,lastText:l.lastText,messages:p,sessionId:f,routingDecision:W(),contextTokenSnapshot:y,limitReached:!1});Z(h+1,B),await T("turn:end",{sessionId:f,iteration:h+1,lastText:l.lastText,hadToolCalls:!1,signal:void 0}),je("completed"),tt(u),await T("complete",{success:!0,signal:void 0});{let H=await kt({options:e,sessionId:f,messages:p,title:O,runtimeSessionState:b,lastText:l.lastText});return G({success:!0,lastText:l.lastText,signal:H.finalSignal,signalReason:H.finalReason,messages:p,sessionId:f,routingDecision:W(),contextTokenSnapshot:y,limitReached:!1})}}let Mt=await Pi({toolBlocks:x.toolBlocks,events:u,emitActiveExtensionEvent:T,messages:p,incompleteRetryCount:wo,preAssistantTokenSnapshot:St,completedTurnTokenSnapshot:B});if(wo=Mt.nextIncompleteRetryCount,y=Mt.nextContextTokenSnapshot,Mt.outcome!=="no_incomplete")continue;let ge=[],Io=[],Oo=await Ai({toolBlocks:x.toolBlocks,abortSignal:e.abortSignal,events:u,emitActiveExtensionEvent:T});if(Oo!==null)ge.push(...Oo);else{let v=await _i({toolBlocks:x.toolBlocks,events:u,ctx:Se,runtimeSessionState:b,activeToolNames:Po,abortSignal:e.abortSignal}),H=await Mi({toolBlocks:x.toolBlocks,resultMap:v,events:u,emitActiveExtensionEvent:T,ctx:Se,runtimeSessionState:b});ge=H.toolResults,Io=H.editRecoveryMessages}let ys=Ii(ge);if(ge.length===0){if(await $e(f,l.lastText,b,{hadToolCalls:!1,success:!0}),He(p,b)){y=C(p,B),await T("turn:end",{sessionId:f,iteration:h+1,lastText:l.lastText,hadToolCalls:!1,signal:void 0});continue}if(ve(u))return Z(h+1,B),await T("turn:end",{sessionId:f,iteration:h+1,lastText:l.lastText,hadToolCalls:!1,signal:void 0}),G({success:!0,lastText:l.lastText,messages:p,sessionId:f,routingDecision:W(),contextTokenSnapshot:y,limitReached:!1});Z(h+1,B),await T("turn:end",{sessionId:f,iteration:h+1,lastText:l.lastText,hadToolCalls:!1,signal:void 0}),je("completed"),tt(u),await T("complete",{success:!0,signal:void 0});{let H=await kt({options:e,sessionId:f,messages:p,title:O,runtimeSessionState:b,lastText:l.lastText});return G({success:!0,lastText:l.lastText,signal:H.finalSignal,signalReason:H.finalReason,messages:p,sessionId:f,routingDecision:W(),contextTokenSnapshot:y,limitReached:!1})}}if(ys){let v=await Oi({events:u,emitActiveExtensionEvent:T,messages:p,toolResults:ge,completedTurnTokenSnapshot:B,sessionId:f,iter:h,emitIterationEnd:Z});return y=v.contextTokenSnapshot,G({success:!0,lastText:yo,messages:p,sessionId:f,routingDecision:W(),contextTokenSnapshot:y,interrupted:!v.shouldYieldToQueuedFollowUp})}let No=await ts({messages:p,toolResults:ge,editRecoveryMessages:Io,completedTurnTokenSnapshot:B,runtimeSessionState:b,emitActiveExtensionEvent:T,sessionId:f,lastText:l.lastText,iter:h});if(y=No.contextTokenSnapshot,No.drainedQueuedMessages)continue;if(ve(u))return Z(h+1,y),await T("turn:end",{sessionId:f,iteration:h+1,lastText:l.lastText,hadToolCalls:!0,signal:void 0}),G({success:!0,lastText:l.lastText,messages:p,sessionId:f,routingDecision:W(),contextTokenSnapshot:y,limitReached:!1});await me(e,f,{messages:p,title:O,gitRoot:e.context?.gitRoot??void 0,runtimeSessionState:b}),Z(h+1,y),await T("turn:end",{sessionId:f,iteration:h+1,lastText:l.lastText,hadToolCalls:!0,signal:void 0})}catch(P){let K=P instanceof Error?P:new Error(String(P)),pe=await Yi({error:K,messages:p,errorMetadata:ne,options:e,sessionId:f,title:O,runtimeSessionState:b}),Ce=pe.cleanedMessages,ie=pe.updatedErrorMetadata;return y=pe.contextTokenSnapshot,K.name==="AbortError"?(await zi({events:u,emitActiveExtensionEvent:T}),G({success:!0,lastText:l.lastText,messages:Ce,sessionId:f,routingDecision:W(),contextTokenSnapshot:y,interrupted:!0,errorMetadata:ie})):(vo(K),await Vi({error:K,events:u,emitActiveExtensionEvent:T}),G({success:!1,lastText:l.lastText,messages:Ce,sessionId:f,routingDecision:W(),contextTokenSnapshot:y,errorMetadata:ie}))}let Eo=await kt({options:e,sessionId:f,messages:p,title:O,runtimeSessionState:b,lastText:l.lastText});return G({success:!0,lastText:l.lastText,signal:Eo.finalSignal,signalReason:Eo.finalReason,messages:p,sessionId:f,routingDecision:W(),contextTokenSnapshot:y,limitReached:!0})}finally{c?.(),a(),s&&Gt(o)}}i(os,"runSubstrate");var ns="kodax/coding/default",Ml="KodaX default coding agent.\n\nThis agent is a thin declaration that routes through the built-in `runKodaX`\npipeline. Tools, extensions, reasoning, provider selection, session\npersistence, compaction and harness routing are all driven by the\n`KodaXOptions` forwarded via `Runner.run` `opts.presetOptions`.\n";function Pl(e){if(typeof e=="string")return e;for(let t=e.length-1;t>=0;t--){let o=e[t];if(o?.role==="user")return Lt(o)||""}return""}i(Pl,"extractPrompt");function rs(e){let t=e.trim();return t===""||t==="..."}i(rs,"isPlaceholderOnlyAssistantText");function Al(e){if(e.role!=="user")return!1;let t=e.content;return!Array.isArray(t)||t.length===0?!1:t.every(o=>!!o&&typeof o=="object"&&"type"in o&&o.type==="tool_result")}i(Al,"isPureToolResultUserMessage");function Il(e){if(e.lastText&&!rs(e.lastText))return e.lastText;for(let t=e.messages.length-1;t>=0;t--){let o=e.messages[t];if(o){if(o.role==="assistant"){let r=Lt(o);return r&&!rs(r)?r:""}if(!Al(o))return""}}return""}i(Il,"extractFinalAssistantText");var Ol=i(async(e,t,o,r)=>{let n=o?.presetOptions??{},s=o?.abortSignal?{...n,abortSignal:o.abortSignal}:n,a=Pl(t),c=r?r.agentSpan.addChild("coding:runSubstrate",{kind:"generation",agentName:ns,provider:s.provider??"unknown",model:s.model??"unknown"}):null,d;try{d=await os(s,a)}catch(l){throw c&&(c.setError(l instanceof Error?l:new Error(String(l))),c.end()),l}return c&&c.end(),{output:Il(d),messages:d.messages,sessionId:d.sessionId,data:d}},"codingSubstrate"),Nl=Object.freeze([Object.freeze({name:"autoReroute",enabled:!0}),Object.freeze({name:"mutationReflection",enabled:!0}),Object.freeze({name:"preAnswerJudge",enabled:!0}),Object.freeze({name:"postToolJudge",enabled:!0})]),Dl=Object.freeze({default:"balanced",max:"deep",escalateOnRevise:!0});function is(e={}){return Vo({name:ns,instructions:Ml,substrateExecutor:Ol,middleware:Nl,reasoning:Dl,...e})}i(is,"createDefaultCodingAgent");var Ll=/\b(forget|do not remember|don't remember|remove (?:this )?from memory|delete .{0,40}memory)\b/i,Fl=/(?:\u522b\u8bb0|\u4e0d\u8981\u8bb0\u4f4f|\u5fd8\u8bb0|\u5220\u9664.{0,12}\u8bb0\u5fc6|\u4e0d\u8981\u518d\u8bb0)/u,Ul=/\b(remember this|please remember|save this to memory|add this to memory)\b/i,Bl=/(?:\u8bb0\u4f4f|\u4fdd\u5b58.{0,12}\u8bb0\u5fc6|\u52a0\u5165\u8bb0\u5fc6)/u,Hl=/\b(memory|remembered|remember|stored|previously saved|memo(?:ry)? note)\b/i,$l=/\b(wrong|incorrect|outdated|actually|correction|correcting|not .{1,80} but|instead|should be)\b/i,jl=/(?:\u8bb0\u5fc6|\u8bb0\u4f4f\u7684|\u4e4b\u524d\u8bb0\u7684)/u,ql=/(?:\u4e0d\u662f.{0,24}\u800c\u662f|\u7ea0\u6b63|\u66f4\u6b63|\u5176\u5b9e|\u5e94\u8be5\u662f|\u4e0d\u5bf9)/u;async function ss(e){if(cs(e))return;let t=$(e.context);try{let o=await Oe({cwd:t,projectDocs:[],discoverSkills:!1}).maybeRunAutoCurator();(o.ran||o.skippedReason!=="not_due")&&A("[memory:maintenance]",{cwd:t,ran:o.ran,skippedReason:o.skippedReason??null,reportPath:o.reportPath??null,nextEligibleAt:o.nextEligibleAt??null})}catch(o){A("[memory:maintenance:error]",{cwd:t,error:o instanceof Error?o.message:String(o)})}}i(ss,"maybeRunMemoryMaintenanceWindow");async function as(e,t){if(cs(e))return;let o=e.memoryReviewer;if(o===void 0)return;let r=Gl(t);if(r===void 0)return;let n=$(e.context),s=e.context?.rawUserInput?.trim();try{let a=await Oe({cwd:n,projectDocs:[],discoverSkills:!1,memoryReviewer:o}).reviewMemoryFeedback({trigger:r,userFeedback:t,...s!==void 0&&s.length>0?{task:s}:{}});e.events?.onMemoryReview?.(a),A("[memory:review]",{cwd:n,trigger:r,actions:a.actions.length,candidates:a.candidateRefs.map(c=>c.ref.id)})}catch(a){A("[memory:review:error]",{cwd:n,error:a instanceof Error?a.message:String(a)})}}i(as,"maybeReviewMemoryFeedbackFromPrompt");function Gl(e){let t=e.trim();if(t.length!==0){if(Ll.test(t)||Fl.test(t))return"explicit_forget";if(Ul.test(t)||Bl.test(t))return"explicit_remember";if(Wl(t))return"user_correction"}}i(Gl,"detectMemoryReviewTrigger");function Wl(e){return Hl.test(e)&&$l.test(e)||jl.test(e)&&ql.test(e)}i(Wl,"isMemoryCorrection");function cs(e){return e.context?.currentAgentId!==void 0||e.context?.parentAgentId!==void 0}i(cs,"isInternalAgentRun");function ls(e){return{...e.modelTiers!==void 0?{modelTiers:e.modelTiers}:{},...e.maxOutputTokens!==void 0?{maxOutputTokens:e.maxOutputTokens}:{},...e.disablePromptCache!==void 0?{disablePromptCache:e.disablePromptCache}:{},...e.lsp!==void 0?{lsp:e.lsp}:{},...e.workflow!==void 0?{workflow:e.workflow}:{}}}i(ls,"deriveRunScopedConfig");async function vy(e,t){let{options:o}=Un(e,t),r=o.context?.agentProfile?.instructions,n=r!==void 0&&o.context?.systemPromptOverride===void 0?{...o,context:{...o.context,systemPromptOverride:r}}:o;return $o(ls(n),async()=>{await ss(n),await as(n,t);let s=await Qo.run(is(),t,{presetOptions:n,abortSignal:n.abortSignal,guardrails:n.guardrails});if(!s.data)throw new Error("runKodaX: substrate executor did not lift KodaXResult onto RunResult.data \u2014 verify createDefaultCodingAgent().substrateExecutor in coding-preset.ts");return s.data})}i(vy,"runKodaX");export{j as a,ws as b,dn as c,Wt as d,pn as e,Kt as f,nt as g,Ps as h,Ne as i,it as j,De as k,zt as l,Vt as m,Qt as n,at as o,Le as p,xn as q,qd as r,Qd as s,Tn as t,ct as u,kn as v,Qs as w,Rn as x,lt as y,Fn as z,va as A,mm as B,Un as C,oo as D,fm as E,lc as F,jn as G,qn as H,mt as I,ft as J,Fe as K,A as L,no as M,Yn as N,k as O,io as P,zn as Q,so as R,lo as S,Bm as T,ei as U,fo as V,ni as W,po as X,ii as Y,ho as Z,mi as _,bi as $,Ee as aa,Ni as ba,Di as ca,bo as da,Fi as ea,Ui as fa,vt as ga,Gi as ha,Dh as ia,me as ja,og as ka,es as la,ns as ma,is as na,ss as oa,as as pa,ls as qa,vy as ra};
|