@kodax-ai/kodax 0.7.69 → 0.7.70
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 +53 -1
- package/LICENSE +158 -191
- package/README.md +38 -5
- package/README_CN.md +31 -7
- package/config-templates/integrations/a2a.example.jsonc +1 -1
- package/dist/chunks/{agent-DQRXT6M7.js → agent-T72XYPW4.js} +1 -1
- package/dist/chunks/argument-completer-QXJC36UP.js +2 -0
- package/dist/chunks/chunk-34L74PEG.js +60 -0
- package/dist/chunks/{chunk-ZG4DMYBS.js → chunk-4P4L3WEK.js} +1 -1
- package/dist/chunks/{chunk-VYKFM3TB.js → chunk-7PV577LP.js} +67 -63
- package/dist/chunks/{chunk-PQ3XUSY2.js → chunk-AQGNRBEJ.js} +189 -180
- package/dist/chunks/{chunk-URC6ZI6P.js → chunk-F4NOOBRZ.js} +1 -1
- package/dist/chunks/{chunk-PA76WUBL.js → chunk-GOQRVDFP.js} +2 -2
- package/dist/chunks/{chunk-VAZ25MDX.js → chunk-K7RYV2SE.js} +2 -2
- package/dist/chunks/{chunk-M7TCFYTO.js → chunk-P2UKNYYS.js} +3 -3
- package/dist/chunks/{chunk-4WIODYOH.js → chunk-RY5OLVQV.js} +1 -1
- package/dist/chunks/{chunk-NGJURAY5.js → chunk-XNQ2O7NI.js} +4 -4
- package/dist/chunks/{compaction-config-ABLL6UH3.js → compaction-config-TC6C2PJ6.js} +1 -1
- package/dist/chunks/{construction-bootstrap-GH6RW6ST.js → construction-bootstrap-BPRXZK4A.js} +1 -1
- package/dist/chunks/{dist-RWL2RBO4.js → dist-UENHF5OS.js} +1 -1
- package/dist/chunks/{host-7SAB4WEC.js → host-XUVAICP7.js} +1 -1
- package/dist/chunks/{run-manager-XMDKTONJ.js → run-manager-T7ALQZNT.js} +1 -1
- package/dist/chunks/{utils-QYE5Y73D.js → utils-TMMH6PKT.js} +1 -1
- package/dist/index.d.ts +8 -8
- package/dist/index.js +6 -6
- package/dist/kodax_cli.js +1207 -1192
- package/dist/runtime-worker.js +1104 -1090
- package/dist/sdk-a2a.d.ts +6 -6
- package/dist/sdk-a2a.js +8 -7
- package/dist/sdk-agent.d.ts +2 -2
- package/dist/sdk-agent.js +1 -1
- package/dist/sdk-coding.d.ts +19 -11
- package/dist/sdk-coding.js +1 -1
- package/dist/sdk-llm.d.ts +1 -1
- package/dist/sdk-mcp.d.ts +2 -2
- package/dist/sdk-mcp.js +1 -1
- package/dist/sdk-repl.d.ts +10 -10
- package/dist/sdk-repl.js +1 -1
- package/dist/sdk-runtime.d.ts +80 -11
- package/dist/sdk-runtime.js +1 -1
- package/dist/sdk-session.d.ts +4 -4
- package/dist/sdk-session.js +1 -1
- package/dist/sdk-skills.js +1 -1
- package/dist/semantic-worker.js +10 -10
- package/dist/types-chunks/{bash-prefix-extractor.d-BkIA8Wto.d.ts → bash-prefix-extractor.d-h9AwGqmO.d.ts} +12 -2
- package/dist/types-chunks/{capability.d-3C62G8Eq.d.ts → capability.d-K664nHOS.d.ts} +21 -6
- package/dist/types-chunks/{commands.d-DkPfcQWG.d.ts → commands.d-DxiVanpI.d.ts} +3 -3
- package/dist/types-chunks/{manager.d-CoEuPRAo.d.ts → manager.d-B67TmPO1.d.ts} +27 -3
- package/dist/types-chunks/{public-api.d-7G4--RZE.d.ts → public-api.d-BqFKI5fK.d.ts} +1 -1
- package/dist/types-chunks/{sdk-session-BQccrODn.d.ts → sdk-session-tcoxrMHQ.d.ts} +2 -2
- package/dist/types-chunks/{types.d-C9YHEAmA.d.ts → types.d-DZaYznxo.d.ts} +2 -2
- package/dist/types-chunks/{utils.d-BbB5jzi1.d.ts → utils.d-B4zc7oot.d.ts} +2 -2
- package/docs/SDK_EMBEDDER_GUIDE.md +112 -19
- package/package.json +2 -2
- package/dist/chunks/argument-completer-RSK6CCGP.js +0 -2
- package/dist/chunks/chunk-Z4PPLJF2.js +0 -60
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
-
import{A as xe,y as we}from"./chunk-
|
|
2
|
+
import{A as xe,y as we}from"./chunk-RY5OLVQV.js";import{C as U,Ca as H,F as z,G as le,H as q,Ma as he,Qa as ve,ma as ue,na as de,oa as fe,pa as pe,q as ce,qa as me,ra as V,ya as ge,za as _}from"./chunk-UJEMSPM5.js";import{Fa as Ee}from"./chunk-7PV577LP.js";import{e as ye}from"./chunk-AWMTNUDS.js";import{a as o}from"./chunk-ONUPGMER.js";import u from"fs";import f from"path";import{exec as Ze,spawnSync as et}from"child_process";import{promisify as tt}from"util";import{fileURLToPath as nt}from"url";var W="en";function Xe(){return(process.env.LC_ALL||process.env.LC_MESSAGES||process.env.LANG||"").toLowerCase().startsWith("zh")?"zh":"en"}o(Xe,"detectSystemLocale");function be(e){if(!e||e==="auto"){W=Xe();return}W=e.toLowerCase().replace(/[-_].*/,"")==="zh"?"zh":"en"}o(be,"setLocale");var Pe={en:{"dialog.confirm":"[Confirm]","dialog.select":"[Select]","dialog.input":"[Input]","confirm.instruction.basic":"Press (y) yes, (n) no","confirm.instruction.always":"Press (y) yes, (a) always yes for this tool, (n) no","confirm.instruction.protected":"Press (y) to confirm, (n) to cancel (protected path)","confirm.result.approved":"Approved","confirm.result.approved_always":"Approved (always)","confirm.result.denied":"Denied","tool.bash.title":"Execute bash command?","tool.shell.title":"Execute shell command?","tool.write.title":"Write to file?","tool.edit.title":"Edit file?","tool.generic.title":"Execute {tool}?","field.reason":"Reason","field.intent":"Intent","field.target":"Target","field.scope":"Scope","field.risk":"Risk","field.summary":"Summary","intent.read":"Read project files","intent.delete":"Delete files","intent.deps":"Modify dependencies or environment","intent.modify":"Modify files","intent.execute":"Execute command","intent.write_file":"Write file","intent.edit_file":"Edit file","intent.use_tool":"Use {tool}","risk.destructive":"Destructive change","risk.deps":"May change dependencies or local tools","risk.modify":"May modify files","risk.unknown":"Command effects depend on its arguments","risk.network":"May access network","scope.outside":"Outside project","scope.protected":"Protected path","waiting.confirm":"Waiting: approval required","waiting.select":"Waiting: choose an option","waiting.input":"Waiting: answer the prompt","placeholder.confirm":"Respond to the approval prompt above...","placeholder.select":"Choose an option above...","placeholder.input":"Answer the prompt above...","placeholder.busy":"Agent is busy...","placeholder.queue":"Queue a follow-up for the next round...","placeholder.idle":"Type a message...","select.choice":"Choice:","select.type_number":"(type a number)","select.more":"{count} more choices...","select.more_above":"\u2191 {count} more above","select.more_below":"\u2193 {count} more below","select.confirm_hint":"Press Enter to confirm, Esc to cancel","select.navigate_hint":"Use \u2191\u2193 to navigate, Enter to confirm, Esc to cancel","select.multiselect_hint":"Use \u2191\u2193 to navigate, Space to toggle, Enter to confirm, Esc to cancel","select.multiselect_empty":"Select at least one option with Space before confirming.","select.multiselect_min":"Select at least {min} option(s) with Space before confirming.","select.multiselect_max":"Select at most {max} option(s) with Space before confirming.","select.back_prev":"\u2190 Back to previous question","input.default":"Default:","input.value":"Value:","input.type_response":"(type your response)","managed.completed":"Task completed","managed.completed.blocked":"Task blocked","managed.completed.continuation":"Task needs continuation",cancelled:"[Cancelled] Operation cancelled by user"},zh:{"dialog.confirm":"[\u786E\u8BA4]","dialog.select":"[\u9009\u62E9]","dialog.input":"[\u8F93\u5165]","confirm.instruction.basic":"\u6309 (y) \u786E\u8BA4, (n) \u62D2\u7EDD","confirm.instruction.always":"\u6309 (y) \u786E\u8BA4, (a) \u59CB\u7EC8\u5141\u8BB8\u6B64\u5DE5\u5177, (n) \u62D2\u7EDD","confirm.instruction.protected":"\u6309 (y) \u786E\u8BA4, (n) \u53D6\u6D88 (\u53D7\u4FDD\u62A4\u8DEF\u5F84)","confirm.result.approved":"\u5DF2\u6279\u51C6","confirm.result.approved_always":"\u5DF2\u6279\u51C6 (\u59CB\u7EC8\u5141\u8BB8)","confirm.result.denied":"\u5DF2\u62D2\u7EDD","tool.bash.title":"\u6267\u884C bash \u547D\u4EE4\uFF1F","tool.shell.title":"\u6267\u884C shell \u547D\u4EE4\uFF1F","tool.write.title":"\u5199\u5165\u6587\u4EF6\uFF1F","tool.edit.title":"\u7F16\u8F91\u6587\u4EF6\uFF1F","tool.generic.title":"\u6267\u884C {tool}\uFF1F","field.reason":"\u539F\u56E0","field.intent":"\u610F\u56FE","field.target":"\u76EE\u6807","field.scope":"\u8303\u56F4","field.risk":"\u98CE\u9669","field.summary":"\u6458\u8981","intent.read":"\u8BFB\u53D6\u9879\u76EE\u6587\u4EF6","intent.delete":"\u5220\u9664\u6587\u4EF6","intent.deps":"\u4FEE\u6539\u4F9D\u8D56\u6216\u73AF\u5883","intent.modify":"\u4FEE\u6539\u6587\u4EF6","intent.execute":"\u6267\u884C\u547D\u4EE4","intent.write_file":"\u5199\u5165\u6587\u4EF6","intent.edit_file":"\u7F16\u8F91\u6587\u4EF6","intent.use_tool":"\u4F7F\u7528 {tool}","risk.destructive":"\u7834\u574F\u6027\u53D8\u66F4","risk.deps":"\u53EF\u80FD\u4FEE\u6539\u4F9D\u8D56\u6216\u672C\u5730\u5DE5\u5177","risk.modify":"\u53EF\u80FD\u4FEE\u6539\u6587\u4EF6","risk.unknown":"\u547D\u4EE4\u6548\u679C\u53D6\u51B3\u4E8E\u53C2\u6570","risk.network":"\u53EF\u80FD\u8BBF\u95EE\u7F51\u7EDC","scope.outside":"\u9879\u76EE\u5916\u90E8","scope.protected":"\u53D7\u4FDD\u62A4\u8DEF\u5F84","waiting.confirm":"\u7B49\u5F85\u4E2D\uFF1A\u9700\u8981\u5BA1\u6279","waiting.select":"\u7B49\u5F85\u4E2D\uFF1A\u8BF7\u9009\u62E9","waiting.input":"\u7B49\u5F85\u4E2D\uFF1A\u8BF7\u56DE\u7B54","placeholder.confirm":"\u8BF7\u56DE\u5E94\u4E0A\u65B9\u7684\u5BA1\u6279\u63D0\u793A...","placeholder.select":"\u8BF7\u5728\u4E0A\u65B9\u9009\u62E9\u4E00\u4E2A\u9009\u9879...","placeholder.input":"\u8BF7\u56DE\u7B54\u4E0A\u65B9\u7684\u63D0\u793A...","placeholder.busy":"\u667A\u80FD\u4F53\u6B63\u5728\u5DE5\u4F5C\u4E2D...","placeholder.queue":"\u6392\u961F\u7B49\u5F85\u4E0B\u4E00\u8F6E\u8DDF\u8FDB...","placeholder.idle":"\u8F93\u5165\u6D88\u606F...","select.choice":"\u9009\u9879\uFF1A","select.type_number":"(\u8F93\u5165\u7F16\u53F7)","select.more":"\u8FD8\u6709 {count} \u4E2A\u9009\u9879...","select.more_above":"\u2191 \u4E0A\u65B9\u8FD8\u6709 {count} \u4E2A","select.more_below":"\u2193 \u4E0B\u65B9\u8FD8\u6709 {count} \u4E2A","select.confirm_hint":"\u6309 Enter \u786E\u8BA4\uFF0CEsc \u53D6\u6D88","select.navigate_hint":"\u4F7F\u7528 \u2191\u2193 \u5BFC\u822A\uFF0CEnter \u786E\u8BA4\uFF0CEsc \u53D6\u6D88","select.multiselect_hint":"\u4F7F\u7528 \u2191\u2193 \u5BFC\u822A\uFF0C\u7A7A\u683C \u5207\u6362\u9009\u4E2D\uFF0CEnter \u786E\u8BA4\uFF0CEsc \u53D6\u6D88","select.multiselect_empty":"\u8BF7\u5148\u4F7F\u7528\u7A7A\u683C\u9009\u62E9\u81F3\u5C11\u4E00\u4E2A\u9009\u9879\u3002","select.multiselect_min":"\u8BF7\u5148\u4F7F\u7528\u7A7A\u683C\u81F3\u5C11\u9009\u62E9 {min} \u4E2A\u9009\u9879\u3002","select.multiselect_max":"\u6700\u591A\u53EA\u80FD\u9009\u62E9 {max} \u4E2A\u9009\u9879\u3002","select.back_prev":"\u2190 \u8FD4\u56DE\u4E0A\u4E00\u9898","input.default":"\u9ED8\u8BA4\u503C\uFF1A","input.value":"\u503C\uFF1A","input.type_response":"(\u8F93\u5165\u4F60\u7684\u56DE\u7B54)","managed.completed":"\u4EFB\u52A1\u5B8C\u6210","managed.completed.blocked":"\u4EFB\u52A1\u53D7\u963B","managed.completed.continuation":"\u4EFB\u52A1\u9700\u8981\u7EE7\u7EED",cancelled:"[\u5DF2\u53D6\u6D88] \u64CD\u4F5C\u5DF2\u88AB\u7528\u6237\u53D6\u6D88"}};function Ot(e,t){let r=Pe[W][e]??Pe.en[e]??e;if(t)for(let[i,s]of Object.entries(t))r=r.replace(`{${i}}`,String(s));return r}o(Ot,"t");var Se={core:`// KodaX core configuration template.
|
|
3
3
|
// Copy only the fields you need to ~/.kodax/config.json (strict JSON).
|
|
4
4
|
// MCP, A2A, and Extensions live in ~/.kodax/integrations/*.json; use
|
|
5
5
|
// \`kodax integrations migrate --dry-run\` for legacy declarations.
|
|
@@ -86,7 +86,7 @@ import{A as xe,y as we}from"./chunk-4WIODYOH.js";import{C as U,Ca as H,F as z,G
|
|
|
86
86
|
// "published": {
|
|
87
87
|
// "name": "KodaX Agent",
|
|
88
88
|
// "description": "Completes approved general tasks.",
|
|
89
|
-
// "version": "0.7.
|
|
89
|
+
// "version": "0.7.70",
|
|
90
90
|
// "skills": [{ "id": "general", "name": "General", "description": "Complete general tasks.", "tags": [] }],
|
|
91
91
|
// "inputModes": ["text/plain"],
|
|
92
92
|
// "outputModes": ["text/plain"]
|
|
@@ -104,4 +104,4 @@ import{A as xe,y as we}from"./chunk-4WIODYOH.js";import{C as U,Ca as H,F as z,G
|
|
|
104
104
|
}
|
|
105
105
|
`};function Ce(e){return Se[e]}o(Ce,"getConfigTemplate");import{closeSync as J,existsSync as p,fsyncSync as Oe,mkdirSync as Z,openSync as ee,readFileSync as Ae,renameSync as Ie,statSync as Fe,unlinkSync as Y,watch as Ge,writeFileSync as Re}from"node:fs";import{createHash as Ue}from"node:crypto";import m from"node:path";var ze={mcp:"mcp.json",a2a:"a2a.json",extensions:"extensions.json"},qe=new Set(["type","command","args","cwd","env","url","headers","connect","startupTimeoutMs","requestTimeoutMs","auth"]);function E(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}o(E,"isRecord");function w(e,t){if(!E(e))throw new Error(`${t} must be an object.`);return e}o(w,"requireRecord");function T(e,t,n){let r=Object.keys(e).find(i=>!t.has(i));if(r!==void 0)throw new Error(`${n} has unknown field "${r}".`)}o(T,"assertNoUnknownKeys");function De(e,t){if(e.version!==1)throw new Error(`${t} version must be 1.`)}o(De,"requireVersionOne");function _e(e,t){let n=w(e,t);for(let[r,i]of Object.entries(n))if(r.trim().length===0||typeof i!="string")throw new Error(`${t} must contain non-empty string keys and string values.`);return structuredClone(n)}o(_e,"requireStringMap");function Q(e,t){if(!Array.isArray(e)||!e.every(n=>typeof n=="string"&&n.trim().length>0))throw new Error(`${t} must be an array of non-empty strings.`);return e.map(n=>n.trim())}o(Q,"requireStringArray");function B(e,t){if(e!==void 0&&(!Number.isFinite(e)||Number(e)<=0))throw new Error(`${t} must be a positive number.`)}o(B,"validatePositiveNumber");function Ve(e,t){if(e.trim().length===0)throw new Error("MCP server names must not be empty.");let n=w(t,`MCP server "${e}"`);T(n,qe,`MCP server "${e}"`);let r=n.type??"stdio";if(!["stdio","sse","streamable-http","http"].includes(String(r)))throw new Error(`MCP server "${e}" has an unsupported transport type.`);if(r==="stdio"){if(typeof n.command!="string"||n.command.trim().length===0)throw new Error(`MCP server "${e}" stdio transport requires command.`)}else if(typeof n.url!="string"||n.url.trim().length===0)throw new Error(`MCP server "${e}" ${String(r)} transport requires url.`);if(n.args!==void 0&&Q(n.args,`MCP server "${e}" args`),n.cwd!==void 0&&typeof n.cwd!="string")throw new Error(`MCP server "${e}" cwd must be a string.`);if(n.env!==void 0&&_e(n.env,`MCP server "${e}" env`),n.headers!==void 0&&_e(n.headers,`MCP server "${e}" headers`),n.connect!==void 0&&!["lazy","prewarm","disabled"].includes(String(n.connect)))throw new Error(`MCP server "${e}" has an unsupported connect mode.`);if(B(n.startupTimeoutMs,`MCP server "${e}" startupTimeoutMs`),B(n.requestTimeoutMs,`MCP server "${e}" requestTimeoutMs`),n.auth!==void 0){let i=w(n.auth,`MCP server "${e}" auth`);if(T(i,new Set(["type","clientId","authorizationUrl","tokenUrl","scopes","redirectPort"]),`MCP server "${e}" auth`),i.type!=="oauth2")throw new Error(`MCP server "${e}" auth type must be oauth2.`);for(let a of["clientId","authorizationUrl","tokenUrl"])if(i[a]!==void 0&&typeof i[a]!="string")throw new Error(`MCP server "${e}" auth.${a} must be a string.`);i.scopes!==void 0&&Q(i.scopes,`MCP server "${e}" auth.scopes`),B(i.redirectPort,`MCP server "${e}" auth.redirectPort`)}return structuredClone(n)}o(Ve,"parseMcpServer");function M(e){let t=w(e,"MCP integration config");T(t,new Set(["version","servers"]),"MCP integration config"),De(t,"MCP integration config");let n=w(t.servers,"MCP integration config servers"),r={};for(let[i,s]of Object.entries(n))r[i]=Ve(i,s);return{version:1,servers:r}}o(M,"parseMcpIntegrationDocument");function k(e){let t=w(e,"Extensions integration config");T(t,new Set(["version","paths"]),"Extensions integration config"),De(t,"Extensions integration config");let n=Q(t.paths,"Extensions integration config paths");if(new Set(n).size!==n.length)throw new Error("Extensions integration config paths must not contain duplicates.");return{version:1,paths:n}}o(k,"parseExtensionsIntegrationDocument");function b(e,t){return m.join(m.resolve(t),"integrations",ze[e])}o(b,"resolveIntegrationConfigPath");function te(e){return m.join(m.resolve(e),"config.json")}o(te,"coreConfigPath");function Le(e){return Ue("sha256").update(e).digest("hex")}o(Le,"hashText");function ne(e){let t=Ae(e,"utf8");try{return{raw:t,value:JSON.parse(t)}}catch(n){let r=n instanceof Error?n.message:String(n);throw new Error(`Invalid JSON: ${r}`)}}o(ne,"readJsonFile");function O(e){return{domain:e.domain,source:e.source,path:e.path,revision:Le(e.raw),document:structuredClone(e.document),loadedAt:new Date().toISOString()}}o(O,"snapshot");function N(e){let t=te(e);return p(t)?w(ne(t).value,"Core config"):{}}o(N,"readCoreConfig");function $(e){let t=b("mcp",e);if(p(t)){let i=ne(t);return O({domain:"mcp",source:"user",path:t,raw:i.raw,document:M(i.value)})}let n=N(e).mcpServers,r=M({version:1,servers:E(n)?n:{}});return O({domain:"mcp",source:n===void 0?"default":"legacy-user",path:t,raw:JSON.stringify(r),document:r})}o($,"readMcpIntegration");function K(e){let t=b("extensions",e);if(p(t)){let i=ne(t);return O({domain:"extensions",source:"user",path:t,raw:i.raw,document:k(i.value)})}let n=N(e).extensions,r=k({version:1,paths:Array.isArray(n)?n:[]});return O({domain:"extensions",source:n===void 0?"default":"legacy-user",path:t,raw:JSON.stringify(r),document:r})}o(K,"readExtensionsIntegration");function He(e){if(!E(e))return[];let t=[],n=/(token|secret|password|api[_-]?key|authorization)/i;for(let[r,i]of Object.entries(e))if(E(i))for(let s of["env","headers"]){let a=i[s];if(E(a))for(let[l,c]of Object.entries(a))n.test(l)&&typeof c=="string"&&!c.startsWith("${env:")&&t.push(`MCP server "${r}" ${s}.${l} may contain a literal secret.`)}return t}o(He,"likelySecretWarnings");function We(e){let t=N(e),n=b("mcp",e),r=b("extensions",e),i=t.mcpServers,s=t.extensions,a=E(i)?Object.keys(i).length:0,l=Array.isArray(s)?s.length:0,c=o((P,R,D)=>p(P)?{action:"none",entries:R,destination:P,reason:"destination-exists"}:D?{action:"create",entries:R,destination:P}:{action:"none",entries:0,destination:P,reason:"legacy-absent"},"domainPlan");return{mcp:c(n,a,i!==void 0),extensions:c(r,l,s!==void 0),warnings:He(i)}}o(We,"planLegacyIntegrationMigration");function Be(e,t){let n=te(e);Z(m.dirname(n),{recursive:!0,mode:448});let r=`${n}.${process.pid}.${Date.now()}.tmp`,i=ee(r,"wx",384);try{Re(i,`${JSON.stringify(t,null,2)}
|
|
106
106
|
`,"utf8"),Oe(i)}finally{J(i)}try{Ie(r,n)}catch(s){throw p(r)&&Y(r),new Error("Failed to atomically clean legacy integration fields.",{cause:s})}}o(Be,"writeCoreConfigAtomically");function $t(e){let t=We(e.configHome),n=N(e.configHome),r=[];t.mcp.action==="create"&&(A({domain:"mcp",configHome:e.configHome,document:{version:1,servers:E(n.mcpServers)?n.mcpServers:{}},validate:M}),r.push("mcp")),t.extensions.action==="create"&&(A({domain:"extensions",configHome:e.configHome,document:{version:1,paths:Array.isArray(n.extensions)?n.extensions:[]},validate:k}),r.push("extensions"));let i=!1;if(e.cleanupLegacy&&p(te(e.configHome))){let s={...n};p(t.mcp.destination)&&delete s.mcpServers,p(t.extensions.destination)&&delete s.extensions,Je(n,s)||(Be(e.configHome,s),i=!0)}return{...t,applied:r,cleanedLegacy:i}}o($t,"migrateLegacyIntegrationConfig");function Je(e,t){return JSON.stringify(e)===JSON.stringify(t)}o(Je,"isDeepStrictEqualForConfig");function Ye(e){return p(e)?Le(Ae(e,"utf8")):void 0}o(Ye,"currentUserRevision");function Qe(e){let t=`${e}.lock`;try{return{fd:ee(t,"wx",384),path:t}}catch(n){throw new Error(`Integration configuration is busy: ${m.basename(e)}`,{cause:n})}}o(Qe,"acquireWriteLock");function A(e){let t=b(e.domain,e.configHome),n=e.validate(e.document);Z(m.dirname(t),{recursive:!0,mode:448});let r=Qe(t);try{let i=Ye(t);if(e.expectedRevision!==void 0&&i!==e.expectedRevision)throw new Error(`Integration configuration revision changed (expected ${e.expectedRevision}, actual ${i??"missing"}).`);let s=`${JSON.stringify(n,null,2)}
|
|
107
|
-
`,a=`${t}.${process.pid}.${Date.now()}.tmp`,l=ee(a,"wx",384);try{Re(l,s,"utf8"),Oe(l)}finally{J(l)}try{Ie(a,t)}catch(c){throw p(a)&&Y(a),new Error(`Failed to atomically replace ${m.basename(t)}.`,{cause:c})}return O({domain:e.domain,source:"user",path:t,raw:s,document:n})}finally{J(r.fd),p(r.path)&&Y(r.path)}}o(A,"writeIntegrationDocument");function Me(e){if(!p(e))return"missing";let t=Fe(e);return`${t.dev}:${t.ino}:${t.size}:${t.mtimeMs}`}o(Me,"metadataSignature");function L(e,t){return{code:e,message:t,time:new Date().toISOString()}}o(L,"safeDiagnostic");var ke=class{static{o(this,"IntegrationConfigController")}#a;#r;#c;#l;#e;#t;#u="";#o;#n;#i;#d=Promise.resolve();#s=new Set;constructor(t){this.#a=t.domain,this.#r=b(t.domain,t.configHome),this.#l=t.validate,this.#c=t.read}async initialize(){let t=await this.reload();if(!t.ok||!this.#e)throw new Error(t.ok?"Integration configuration did not produce a snapshot.":t.error);return structuredClone(this.#e)}snapshot(){return this.#e?structuredClone(this.#e):void 0}status(){return{domain:this.#a,path:this.#r,...this.#e?{revision:this.#e.revision,source:this.#e.source,lastReloadAt:this.#e.loadedAt}:{},...this.#t?{diagnostic:this.#t}:{},watching:this.#o!==void 0}}subscribe(t){return this.#s.add(t),()=>{this.#s.delete(t)}}reload(){let t=this.#d.then(()=>this.#f());return this.#d=t.then(()=>{},()=>{}),t}async#f(){this.#u=Me(this.#r);let t;try{t=this.#c(),this.#l(t.document)}catch{return this.#t=L("invalid-config","Integration configuration is invalid; check the file against its versioned schema."),{ok:!1,error:this.#t.message}}let n=this.#e?structuredClone(this.#e):void 0;try{for(let r of this.#s)await r(structuredClone(t),n)}catch{return this.#t=L("activation-failed","Integration configuration could not be activated; the previous configuration remains active."),{ok:!1,error:this.#t.message}}return this.#e=t,this.#t=void 0,{ok:!0,snapshot:structuredClone(t)}}async ensureCurrent(){return Me(this.#r)===this.#u&&this.#e?{ok:!0,snapshot:structuredClone(this.#e)}:this.reload()}startWatching(t=100,n=2e3){if(!(this.#o||this.#i)){Z(m.dirname(this.#r),{recursive:!0,mode:448});try{this.#o=Ge(m.dirname(this.#r),(r,i)=>{i!==null&&i.toString()!==m.basename(this.#r)||(this.#n&&clearTimeout(this.#n),this.#n=setTimeout(()=>{this.#n=void 0,this.reload()},t),this.#n.unref?.())}),this.#o.unref(),this.#o.on("error",()=>{this.#t=L("watcher-degraded","Integration watcher is degraded; metadata polling remains active.")})}catch{this.#t=L("watcher-degraded","Integration watcher is degraded; metadata polling remains active.")}this.#i=setInterval(()=>{this.ensureCurrent()},n),this.#i.unref?.()}}close(){this.#n&&clearTimeout(this.#n),this.#n=void 0,this.#i&&clearInterval(this.#i),this.#i=void 0,this.#o?.close(),this.#o=void 0,this.#s.clear()}};var rt=tt(Ze),d=ye(),Yt=f.join(d,"sessions"),g=f.join(d,"config.json"),Qt=60,h=null,oe=!1,ot="dumb";function it(e){let t=f.basename(e).toLowerCase(),n="__KODAX_SHELL_ENV_START__",r=`printf '%s\\0' '${n}'; env -0`;return t==="fish"?{args:["-i","-c",r],sentinel:n}:{args:t==="bash"||t==="zsh"?["-ic",r]:["-lc",r],sentinel:n}}o(it,"buildShellEnvCommand");function st(e,t){let n=`${t}\0`,r=e.lastIndexOf(n);if(r===-1)return{};let i=e.slice(r+n.length),s={};for(let a of i.split("\0")){if(!a)continue;let l=a.indexOf("=");l<=0||(s[a.slice(0,l)]=a.slice(l+1))}return s}o(st,"parseNullDelimitedShellEnv");function at(e={}){let t=e.env??process.env;if((e.platform??process.platform)==="win32"||t.KODAX_DISABLE_SHELL_ENV_HYDRATION==="1")return!1;let r=e.shell??t.SHELL;if(!r||!f.isAbsolute(r))return!1;let{args:i,sentinel:s}=it(r),a=e.run??et,l={...t,TERM:ot},c=a(r,i,{encoding:"utf8",env:l,maxBuffer:1024*1024,timeout:5e3,windowsHide:!0,detached:!0,stdio:["ignore","pipe","pipe"]});if(c.status!==0||!c.stdout)return!1;let P=typeof c.stdout=="string"?c.stdout:c.stdout.toString("utf8"),R=st(P,s),D=!1;for(let[G,je]of Object.entries(R))G!=="TERM"&&t[G]===void 0&&(t[G]=je,D=!0);return D}o(at,"hydrateProcessEnvFromShell");function ct(){if(!oe){oe=!0;try{at()}catch{}}}o(ct,"ensureShellEnvironmentHydrated");function Zt(){oe=!1}o(Zt,"resetShellEnvironmentHydrationForTesting");function lt(e){ge(e.customProviders??[])}o(lt,"registerConfiguredCustomProviders");function ie(e){if(!Array.isArray(e))return;let t=e.filter(n=>typeof n=="string").map(n=>n.trim()).filter(n=>n.length>0);return t.length>0?t:[]}o(ie,"normalizeConfiguredExtensions");function ut(e){if(e.permissionMode!=="default")return e;let t={...e,permissionMode:"accept-edits"};try{u.mkdirSync(f.dirname(g),{recursive:!0}),u.writeFileSync(g,JSON.stringify(t,null,2))}catch{}return t}o(ut,"migrateLegacyPermissionModeInConfig");function dt(e){if(e.permissionMode!=="auto-in-project")return e;try{let t=u.readFileSync(g,"utf-8"),n=t.replace(/("permissionMode"\s*:\s*)"auto-in-project"/,'$1"auto"');n!==t&&u.writeFileSync(g,n)}catch{}return{...e,permissionMode:"auto"}}o(dt,"migrateAutoInProjectAliasInConfig");function ft(){if(h)return h;let e="0.7.69";if(e)return h=e,h;let t=f.join(f.dirname(nt(import.meta.url)),"../../package.json");if(u.existsSync(t))try{return h=JSON.parse(u.readFileSync(t,"utf-8")).version??"0.0.0",h??"0.0.0"}catch{}return h="0.0.0",h}o(ft,"getVersion");var en=ft();function pt(e){return de(e)}o(pt,"getProviderModel");function se(e,t){let n=new Set(e.map(i=>i.toLowerCase())),r=[...e];for(let i of t)n.has(i.toLowerCase())||r.push(i);return r}o(se,"mergeModels");function mt(e,t){t||(t=ae().providerModels);let n=t?.[e];if(n&&n.length>0){try{let r=V(e);if(r.length>0)return se(n,r)}catch{}try{let r=_(e);if(r)return se(n,r.getAvailableModels())}catch{}return n}try{let r=V(e);if(r.length>0)return r}catch{}try{let r=_(e);if(r)return r.getAvailableModels()}catch{}return[]}o(mt,"getProviderAvailableModels");function gt(e,t){let n=fe(e,t);if(n!=="unknown")return n;try{let r=_(e);if(r)return r.getReasoningCapability(t)}catch{}return"unknown"}o(gt,"getProviderReasoningCapability");function ht(e){let t=pe(e);if(t)return t;try{return H().find(r=>r.name===e)?.capabilityProfile??null}catch{return null}}o(ht,"getProviderCapabilityProfile");function $e(e,t){let n=ht(e),r=gt(e,t);if(n)return{capabilityProfile:n,reasoningCapability:r};try{let i=he(e);return{capabilityProfile:i.getCapabilityProfile(),reasoningCapability:i.getReasoningCapability(t)}}catch{return null}}o($e,"getProviderCapabilityMetadata");function tn(e,t){let n=$e(e,t);return n?we({providerName:e,model:t,capabilityProfile:n.capabilityProfile,reasoningCapability:n.reasoningCapability==="unknown"?void 0:n.reasoningCapability}):null}o(tn,"getProviderCapabilitySnapshot");function vt(e,t,n,r){let i=$e(e,t);return i?xe({providerName:e,model:t,capabilityProfile:i.capabilityProfile,reasoningCapability:i.reasoningCapability==="unknown"?void 0:i.reasoningCapability,reasoningMode:n,hints:r}):null}o(vt,"getProviderPolicyDecision");function nn(e){let t=e.transport==="cli-bridge"?"CLI bridge":"Native API",n=e.conversationSemantics==="last-user-message"?"forwards only the latest user message":"preserves full conversation history",r=e.mcpSupport==="native"?"MCP available":"MCP unavailable";return`${t}; ${n}; ${r}`}o(nn,"describeProviderCapabilitySummary");function rn(e){switch(e){case"native-budget":return"B";case"native-effort":return"E";case"native-toggle":return"T";case"native-adaptive":return"A";default:return"-"}}o(rn,"formatReasoningCapabilityShort");function C(e){if(e)return e==="none"?"off":e}o(C,"formatReasoningEffortForDisplay");function X(e,t){let n=C(t);n&&!e.includes(n)&&e.push(n)}o(X,"pushUniqueEffortDisplay");function on(e,t){let n=["auto"],i=F(e,t)?.supportedEfforts?.filter(s=>s.isUserVisible!==!1);if(!i||i.length===0){for(let s of["off","low","medium","high"])X(n,s);return n}for(let s of i)X(n,s.value);return n}o(on,"getProviderReasoningEffortOptions");function sn(e,t){let n=F(e,t),r=new Set(n?.disabledEfforts??[]),i=n?.supportedEfforts?.filter(c=>c.isUserVisible!==!1),s=[],a=n?.supportsDisabledThinking===!0;if(!i||i.length===0){for(let c of["low","medium","high"])X(s,c);a=!0}else for(let c of i){if(c.value==="none"){a=!0;continue}if(r.has(c.value)){a=!0;continue}X(s,c.value)}let l=[];return a&&l.push("off"),l.push(...s),l.push("auto"),l}o(sn,"getProviderReasoningEffortCycle");function yt(e,t){if(t===!1)return"off";switch(e){case"off":return"off";case"quick":return"low";case"balanced":return"medium";case"deep":return"high";default:return"auto"}}o(yt,"legacyReasoningModeToEffortDisplay");function F(e,t){let n=t??pt(e);if(!n)return;let r=ve(e,n)?.reasoningProfile;if(r)return ce(r,Ee(e,n))}o(F,"resolveReasoningProfileForDisplay");function an(e){let t=C(e.effort)??yt(e.reasoningMode,e.thinking),n=F(e.provider,e.model);if(!n)return t;try{let r=le({capability:n,explicitEffort:e.effortOverride?e.effort:void 0,sessionEffort:e.effortOverride?void 0:e.effort,legacyReasoningMode:e.reasoningMode,thinking:e.thinking}),i=C(r.configuredEffort)??t,a=r.configuredEffort!==void 0&&n.disabledEfforts?.includes(r.configuredEffort)===!0?"off":C(r.effectiveEffort);return a&&a!==i?`${i}->${a}`:i}catch{if(e.effort)try{let r=q({currentEffort:e.effort,capability:n}),i=C(e.effort)??t,s=C(r.effectiveEffort);return s&&s!==i?`${i}->${s}`:i}catch{return t}return t}}o(an,"formatReasoningEffortStatusLabel");function cn(e){let t=Mt(e);if(!t)return{preserved:!0};let n=F(e.provider,e.model);if(!n)return{configuredEffort:t,runtimeEffort:t,preserved:!0};let r=q({currentEffort:t,capability:n});return{configuredEffort:t,runtimeEffort:r.effectiveEffort,preserved:r.preserved,diagnostic:r.diagnostic}}o(cn,"resolveProviderReasoningRuntimeEffort");function Et(e){switch(e){case"native-budget":return"budget";case"native-effort":return"effort";case"native-toggle":return"toggle";case"native-adaptive":return"adaptive";default:return"none"}}o(Et,"describeReasoningCapabilityControl");function ln(e,t){if(e==="off")return"Reasoning disabled";switch(t){case"native-budget":return"Uses native thinking budget control";case"native-effort":return"Uses native reasoning effort control";case"native-toggle":return"Uses provider-native thinking toggle only";case"native-adaptive":return"Model adaptively decides thinking depth (Opus 4.7+)";case"none":return"Runs without native reasoning parameters";case"prompt-only":return"Uses prompt overlays only; no native reasoning parameter";default:return"Runs without native reasoning parameters"}}o(ln,"describeReasoningExecution");function un(e){let t=[];e||(e=ae().providerModels);for(let n of me())t.push({name:n.name,model:n.model,models:mt(n.name,e),configured:n.capabilityProfile.transport==="cli-bridge"?!0:n.configured,reasoningCapability:n.reasoningCapability,capabilityProfile:n.capabilityProfile});try{let n=H().map(r=>({...r,models:(()=>{let i=e?.[r.name];return i&&i.length>0?se(i,r.models):r.models})()}));t.push(...n)}catch{}return t}o(un,"getProviderList");function dn(e){if(ue(e))return!0;try{return _(e)?.isConfigured()??!1}catch{return!1}}o(dn,"isProviderConfigured");function ae(){try{if(u.existsSync(g)){let n=JSON.parse(u.readFileSync(g,"utf-8")),r=n.reasoningCeiling??n.reasoningMode,i=[],s={};try{i=[...K(d).document.paths]}catch{}try{s=$(d).document.servers}catch{}return dt(ut({...n,reasoningMode:r,extensions:ie(i),mcpServers:s}))}}catch{}let e,t;try{let n=K(d);n.source!=="default"&&(e=ie([...n.document.paths]))}catch{}try{let n=$(d);n.source!=="default"&&(t=n.document.servers)}catch{}return{...e===void 0?{}:{extensions:e},...t===void 0?{}:{mcpServers:t}}}o(ae,"loadConfig");var wt=f.join(d,"config.example.jsonc"),re={mcp:f.join(d,"integrations","mcp.example.jsonc"),a2a:f.join(d,"integrations","a2a.example.jsonc"),extensions:f.join(d,"integrations","extensions.example.jsonc")},xt=[{name:"core",path:wt},{name:"mcp",path:re.mcp},{name:"a2a",path:re.a2a},{name:"extensions",path:re.extensions}];function Pt(){let e=[];for(let t of xt)try{if(u.existsSync(t.path))continue;u.mkdirSync(f.dirname(t.path),{recursive:!0}),u.writeFileSync(t.path,Ce(t.name),"utf8"),e.push(t.path)}catch{}return e}o(Pt,"ensureExampleConfigFiles");function fn(){return Pt()[0]}o(fn,"ensureExampleConfigFile");var j=new Map;function bt(e,t){let n=process.env[e],r=j.get(e),i=r!==void 0&&n===r;if(n!==void 0&&!i){j.delete(e);return}if(t===void 0){i&&delete process.env[e],j.delete(e);return}process.env[e]=t,j.set(e,t)}o(bt,"projectConfigEnvironment");var Ke=[{configPath:"streamIdleTimeoutMs",env:"KODAX_STREAM_IDLE_TIMEOUT_MS",value:o(e=>x(e.streamIdleTimeoutMs),"value")},{configPath:"repoIntelligenceMode",env:"KODAX_REPO_INTELLIGENCE",value:o(e=>e.repoIntelligenceMode,"value")},{configPath:"repoIntelligenceTrace",env:"KODAX_REPO_INTELLIGENCE_TRACE",value:o(e=>S(e.repoIntelligenceTrace),"value")},{configPath:"verifierLog",env:"KODAX_VERIFIER_LOG",value:o(e=>S(e.verifierLog),"value")},{configPath:"stallLog",env:"KODAX_STALL_LOG",value:o(e=>S(e.stallLog),"value")},{configPath:"fallbackProviders",env:"KODAX_FALLBACK_PROVIDERS",value:o(e=>Ct(e.fallbackProviders),"value")},{configPath:"fastProvider",env:"KODAX_FAST_PROVIDER",value:o(e=>v(e.fastProvider),"value")},{configPath:"fastModel",env:"KODAX_FAST_MODEL",value:o(e=>v(e.fastModel),"value")},{configPath:"deepProvider",env:"KODAX_DEEP_PROVIDER",value:o(e=>v(e.deepProvider),"value")},{configPath:"deepModel",env:"KODAX_DEEP_MODEL",value:o(e=>v(e.deepModel),"value")},{configPath:"provider",env:"KODAX_PROVIDER",value:o(e=>v(e.provider),"value")},{configPath:"effort",env:"KODAX_EFFORT",value:o(e=>v(e.effort),"value")},{configPath:"runtimeMode",env:"KODAX_RUNTIME_MODE",value:o(e=>e.runtimeMode,"value")},{configPath:"sessionRetentionDays",env:"KODAX_SESSION_RETENTION_DAYS",value:o(e=>x(e.sessionRetentionDays),"value")},{configPath:"maxOutputTokens",env:"KODAX_MAX_OUTPUT_TOKENS",value:o(e=>x(e.maxOutputTokens),"value")},{configPath:"disablePromptCache",env:"KODAX_DISABLE_PROMPT_CACHE",value:o(e=>S(e.disablePromptCache),"value")},{configPath:"lsp",env:"KODAX_LSP",value:o(e=>S(e.lsp),"value")},{configPath:"lspAutoDownload",env:"KODAX_LSP_DOWNLOAD",value:o(e=>S(e.lspAutoDownload),"value")},{configPath:"acpLogLevel",env:"KODAX_ACP_LOG",value:o(e=>v(e.acpLogLevel),"value")},{configPath:"repoIntelligence.toolWaitMs",env:"KODAX_REPO_INTELLIGENCE_TOOL_WAIT_MS",value:o(e=>x(e.repoIntelligence?.toolWaitMs),"value")},{configPath:"repoIntelligence.workerTimeoutMs",env:"KODAX_REPO_INTELLIGENCE_WORKER_TIMEOUT_MS",value:o(e=>x(e.repoIntelligence?.workerTimeoutMs),"value")},{configPath:"repoIntelligence.workerOldSpaceMb",env:"KODAX_REPO_INTELLIGENCE_WORKER_OLD_SPACE_MB",value:o(e=>x(e.repoIntelligence?.workerOldSpaceMb),"value")},{configPath:"repoIntelligence.storageDir",env:"KODAX_REPO_INTELLIGENCE_STORAGE_DIR",value:o(e=>v(e.repoIntelligence?.storageDir),"value")},{configPath:"workflow.maxConcurrency",env:"KODAX_WORKFLOW_MAX_CONCURRENCY",value:o(e=>x(e.workflow?.maxConcurrency),"value")}];function St(e){for(let t of Ke)bt(t.env,t.value(e))}o(St,"applyConfigSurfaceBridges");function v(e){return e?.trim()||void 0}o(v,"normalizedConfigString");function x(e){return typeof e=="number"&&Number.isFinite(e)?String(e):void 0}o(x,"configNumberString");function S(e){return e===void 0?void 0:e?"1":"0"}o(S,"configBooleanString");function Ct(e){return e?.filter(t=>t.trim().length>0).join(",")}o(Ct,"configStringList");var pn=[...Ke.map(({configPath:e,env:t})=>({configPath:e,env:t}))];function _t(e){St(e)}o(_t,"applyConfigEnvironment");function mn(){ct();let e=ae();return _t(e),lt(e),be(e.locale),e}o(mn,"prepareRuntimeConfig");function gn(e){let t={};if(u.existsSync(g))try{let a=JSON.parse(u.readFileSync(g,"utf8"));a&&typeof a=="object"&&!Array.isArray(a)&&(t=a)}catch{}let{extensions:n,mcpServers:r,...i}=e,s={...t,...i};for(let a of Object.keys(i))i[a]===void 0&&delete s[a];if(u.mkdirSync(f.dirname(g),{recursive:!0}),u.writeFileSync(g,JSON.stringify(s,null,2)),n!==void 0){let a=K(d);A({domain:"extensions",configHome:d,...a.source==="user"?{expectedRevision:a.revision}:{},document:{version:1,paths:ie(n)??[]},validate:k})}if(r!==void 0){let a=$(d);A({domain:"mcp",configHome:d,...a.source==="user"?{expectedRevision:a.revision}:{},document:{version:1,servers:r},validate:M})}}o(gn,"saveConfig");function hn(e,t,n){return e.effort!==void 0||z(n).kind==="value"||t.effort!==void 0}o(hn,"resolveInitialEffortOverride");function y(e){return e?.trim()?e:void 0}o(y,"nonEmptySelection");function vn(e){return y(e.explicitProvider)??y(e.environmentProvider)??y(e.configuredProvider)??e.defaultProvider}o(vn,"resolveRuntimeProviderSelection");function yn(e){let t=y(e.explicitModel);if(t)return t;let n=y(e.configuredModel);if(!n)return;let r=y(e.explicitProvider)??y(e.environmentProvider);return r?y(e.configuredProvider)===r?n:void 0:n}o(yn,"resolveRuntimeModelSelection");function En(e){if(e.explicitEffort!==void 0)return U(e.explicitEffort);let t=z(e.environmentEffort);return t.kind==="value"?t.value:e.configuredEffort===void 0?void 0:U(e.configuredEffort)}o(En,"resolveRuntimeEffortSelection");function Mt(e){return e.permissionMode==="plan"&&e.effortOverride!==!0&&e.planModeEffort!==void 0?e.planModeEffort:e.effort}o(Mt,"resolvePermissionModeEffort");async function wn(e){try{let{stdout:t}=await rt("git rev-parse --show-toplevel",{cwd:e});return t.trim()}catch{return null}}o(wn,"getGitRoot");function kt(e){switch(e){case"builtin":return"Built-in";case"runtime":return"Runtime extension";case"custom":return"Custom config";default:return"Unknown"}}o(kt,"formatProviderSourceKind");function xn(e){let t=e.transport==="cli-bridge"?"CLI bridge":"Native API",n=e.conversationSemantics==="last-user-message"?"latest-user-message only":"full conversation history";return[`Source: ${kt(e.sourceKind)}`,`Transport: ${t}`,`Conversation semantics: ${n}`,`Context fidelity: ${e.contextFidelity}`,`Tool calling: ${e.toolCallingFidelity}`,`Session behavior: ${e.sessionSupport}`,`Long-running support: ${e.longRunningSupport}`,`Evidence-heavy flows: ${e.evidenceSupport}`,`Multimodal support: ${e.multimodalSupport}`,`MCP support: ${e.mcpSupport}`,`Reasoning control: ${Et(e.reasoningCapability)}`]}o(xn,"formatProviderCapabilityDetailLines");function Pn(e,t,n){return[{label:"General coding",hints:{}},{label:"Evidence-heavy review",hints:{evidenceHeavy:!0}},{label:"Long-running task",hints:{longRunning:!0}}].map(i=>({label:i.label,decision:vt(e,t,n,i.hints)})).filter(i=>i.decision!==null)}o(Pn,"getProviderCommonPolicyScenarios");var Te=.5,Ne=0,I={locked:!1,queue:[]};async function bn(e){for(;I.locked;)await new Promise(t=>I.queue.push(t));I.locked=!0;try{let t=(Date.now()-Ne)/1e3;t<Te&&await new Promise(r=>setTimeout(r,(Te-t)*1e3));let n=await e();return Ne=Date.now(),n}finally{I.locked=!1;let t=I.queue.shift();t&&t()}}o(bn,"rateLimitedCall");export{Ot as a,Se as b,Ce as c,M as d,k as e,b as f,$ as g,K as h,We as i,$t as j,A as k,ke as l,d as m,Yt as n,g as o,Qt as p,at as q,Zt as r,lt as s,ft as t,en as u,pt as v,mt as w,gt as x,ht as y,tn as z,vt as A,nn as B,rn as C,C as D,on as E,sn as F,an as G,cn as H,Et as I,ln as J,un as K,dn as L,ae as M,wt as N,re as O,Pt as P,fn as Q,pn as R,_t as S,mn as T,gn as U,hn as V,vn as W,yn as X,En as Y,Mt as Z,wn as _,kt as $,xn as aa,Pn as ba,bn as ca};
|
|
107
|
+
`,a=`${t}.${process.pid}.${Date.now()}.tmp`,l=ee(a,"wx",384);try{Re(l,s,"utf8"),Oe(l)}finally{J(l)}try{Ie(a,t)}catch(c){throw p(a)&&Y(a),new Error(`Failed to atomically replace ${m.basename(t)}.`,{cause:c})}return O({domain:e.domain,source:"user",path:t,raw:s,document:n})}finally{J(r.fd),p(r.path)&&Y(r.path)}}o(A,"writeIntegrationDocument");function Me(e){if(!p(e))return"missing";let t=Fe(e);return`${t.dev}:${t.ino}:${t.size}:${t.mtimeMs}`}o(Me,"metadataSignature");function L(e,t){return{code:e,message:t,time:new Date().toISOString()}}o(L,"safeDiagnostic");var ke=class{static{o(this,"IntegrationConfigController")}#a;#r;#c;#l;#e;#t;#u="";#o;#n;#i;#d=Promise.resolve();#s=new Set;constructor(t){this.#a=t.domain,this.#r=b(t.domain,t.configHome),this.#l=t.validate,this.#c=t.read}async initialize(){let t=await this.reload();if(!t.ok||!this.#e)throw new Error(t.ok?"Integration configuration did not produce a snapshot.":t.error);return structuredClone(this.#e)}snapshot(){return this.#e?structuredClone(this.#e):void 0}status(){return{domain:this.#a,path:this.#r,...this.#e?{revision:this.#e.revision,source:this.#e.source,lastReloadAt:this.#e.loadedAt}:{},...this.#t?{diagnostic:this.#t}:{},watching:this.#o!==void 0}}subscribe(t){return this.#s.add(t),()=>{this.#s.delete(t)}}reload(){let t=this.#d.then(()=>this.#f());return this.#d=t.then(()=>{},()=>{}),t}async#f(){this.#u=Me(this.#r);let t;try{t=this.#c(),this.#l(t.document)}catch{return this.#t=L("invalid-config","Integration configuration is invalid; check the file against its versioned schema."),{ok:!1,error:this.#t.message}}let n=this.#e?structuredClone(this.#e):void 0;try{for(let r of this.#s)await r(structuredClone(t),n)}catch{return this.#t=L("activation-failed","Integration configuration could not be activated; the previous configuration remains active."),{ok:!1,error:this.#t.message}}return this.#e=t,this.#t=void 0,{ok:!0,snapshot:structuredClone(t)}}async ensureCurrent(){return Me(this.#r)===this.#u&&this.#e?{ok:!0,snapshot:structuredClone(this.#e)}:this.reload()}startWatching(t=100,n=2e3){if(!(this.#o||this.#i)){Z(m.dirname(this.#r),{recursive:!0,mode:448});try{this.#o=Ge(m.dirname(this.#r),(r,i)=>{i!==null&&i.toString()!==m.basename(this.#r)||(this.#n&&clearTimeout(this.#n),this.#n=setTimeout(()=>{this.#n=void 0,this.reload()},t),this.#n.unref?.())}),this.#o.unref(),this.#o.on("error",()=>{this.#t=L("watcher-degraded","Integration watcher is degraded; metadata polling remains active.")})}catch{this.#t=L("watcher-degraded","Integration watcher is degraded; metadata polling remains active.")}this.#i=setInterval(()=>{this.ensureCurrent()},n),this.#i.unref?.()}}close(){this.#n&&clearTimeout(this.#n),this.#n=void 0,this.#i&&clearInterval(this.#i),this.#i=void 0,this.#o?.close(),this.#o=void 0,this.#s.clear()}};var rt=tt(Ze),d=ye(),Yt=f.join(d,"sessions"),g=f.join(d,"config.json"),Qt=60,h=null,oe=!1,ot="dumb";function it(e){let t=f.basename(e).toLowerCase(),n="__KODAX_SHELL_ENV_START__",r=`printf '%s\\0' '${n}'; env -0`;return t==="fish"?{args:["-i","-c",r],sentinel:n}:{args:t==="bash"||t==="zsh"?["-ic",r]:["-lc",r],sentinel:n}}o(it,"buildShellEnvCommand");function st(e,t){let n=`${t}\0`,r=e.lastIndexOf(n);if(r===-1)return{};let i=e.slice(r+n.length),s={};for(let a of i.split("\0")){if(!a)continue;let l=a.indexOf("=");l<=0||(s[a.slice(0,l)]=a.slice(l+1))}return s}o(st,"parseNullDelimitedShellEnv");function at(e={}){let t=e.env??process.env;if((e.platform??process.platform)==="win32"||t.KODAX_DISABLE_SHELL_ENV_HYDRATION==="1")return!1;let r=e.shell??t.SHELL;if(!r||!f.isAbsolute(r))return!1;let{args:i,sentinel:s}=it(r),a=e.run??et,l={...t,TERM:ot},c=a(r,i,{encoding:"utf8",env:l,maxBuffer:1024*1024,timeout:5e3,windowsHide:!0,detached:!0,stdio:["ignore","pipe","pipe"]});if(c.status!==0||!c.stdout)return!1;let P=typeof c.stdout=="string"?c.stdout:c.stdout.toString("utf8"),R=st(P,s),D=!1;for(let[G,je]of Object.entries(R))G!=="TERM"&&t[G]===void 0&&(t[G]=je,D=!0);return D}o(at,"hydrateProcessEnvFromShell");function ct(){if(!oe){oe=!0;try{at()}catch{}}}o(ct,"ensureShellEnvironmentHydrated");function Zt(){oe=!1}o(Zt,"resetShellEnvironmentHydrationForTesting");function lt(e){ge(e.customProviders??[])}o(lt,"registerConfiguredCustomProviders");function ie(e){if(!Array.isArray(e))return;let t=e.filter(n=>typeof n=="string").map(n=>n.trim()).filter(n=>n.length>0);return t.length>0?t:[]}o(ie,"normalizeConfiguredExtensions");function ut(e){if(e.permissionMode!=="default")return e;let t={...e,permissionMode:"accept-edits"};try{u.mkdirSync(f.dirname(g),{recursive:!0}),u.writeFileSync(g,JSON.stringify(t,null,2))}catch{}return t}o(ut,"migrateLegacyPermissionModeInConfig");function dt(e){if(e.permissionMode!=="auto-in-project")return e;try{let t=u.readFileSync(g,"utf-8"),n=t.replace(/("permissionMode"\s*:\s*)"auto-in-project"/,'$1"auto"');n!==t&&u.writeFileSync(g,n)}catch{}return{...e,permissionMode:"auto"}}o(dt,"migrateAutoInProjectAliasInConfig");function ft(){if(h)return h;let e="0.7.70";if(e)return h=e,h;let t=f.join(f.dirname(nt(import.meta.url)),"../../package.json");if(u.existsSync(t))try{return h=JSON.parse(u.readFileSync(t,"utf-8")).version??"0.0.0",h??"0.0.0"}catch{}return h="0.0.0",h}o(ft,"getVersion");var en=ft();function pt(e){return de(e)}o(pt,"getProviderModel");function se(e,t){let n=new Set(e.map(i=>i.toLowerCase())),r=[...e];for(let i of t)n.has(i.toLowerCase())||r.push(i);return r}o(se,"mergeModels");function mt(e,t){t||(t=ae().providerModels);let n=t?.[e];if(n&&n.length>0){try{let r=V(e);if(r.length>0)return se(n,r)}catch{}try{let r=_(e);if(r)return se(n,r.getAvailableModels())}catch{}return n}try{let r=V(e);if(r.length>0)return r}catch{}try{let r=_(e);if(r)return r.getAvailableModels()}catch{}return[]}o(mt,"getProviderAvailableModels");function gt(e,t){let n=fe(e,t);if(n!=="unknown")return n;try{let r=_(e);if(r)return r.getReasoningCapability(t)}catch{}return"unknown"}o(gt,"getProviderReasoningCapability");function ht(e){let t=pe(e);if(t)return t;try{return H().find(r=>r.name===e)?.capabilityProfile??null}catch{return null}}o(ht,"getProviderCapabilityProfile");function $e(e,t){let n=ht(e),r=gt(e,t);if(n)return{capabilityProfile:n,reasoningCapability:r};try{let i=he(e);return{capabilityProfile:i.getCapabilityProfile(),reasoningCapability:i.getReasoningCapability(t)}}catch{return null}}o($e,"getProviderCapabilityMetadata");function tn(e,t){let n=$e(e,t);return n?we({providerName:e,model:t,capabilityProfile:n.capabilityProfile,reasoningCapability:n.reasoningCapability==="unknown"?void 0:n.reasoningCapability}):null}o(tn,"getProviderCapabilitySnapshot");function vt(e,t,n,r){let i=$e(e,t);return i?xe({providerName:e,model:t,capabilityProfile:i.capabilityProfile,reasoningCapability:i.reasoningCapability==="unknown"?void 0:i.reasoningCapability,reasoningMode:n,hints:r}):null}o(vt,"getProviderPolicyDecision");function nn(e){let t=e.transport==="cli-bridge"?"CLI bridge":"Native API",n=e.conversationSemantics==="last-user-message"?"forwards only the latest user message":"preserves full conversation history",r=e.mcpSupport==="native"?"MCP available":"MCP unavailable";return`${t}; ${n}; ${r}`}o(nn,"describeProviderCapabilitySummary");function rn(e){switch(e){case"native-budget":return"B";case"native-effort":return"E";case"native-toggle":return"T";case"native-adaptive":return"A";default:return"-"}}o(rn,"formatReasoningCapabilityShort");function C(e){if(e)return e==="none"?"off":e}o(C,"formatReasoningEffortForDisplay");function X(e,t){let n=C(t);n&&!e.includes(n)&&e.push(n)}o(X,"pushUniqueEffortDisplay");function on(e,t){let n=["auto"],i=F(e,t)?.supportedEfforts?.filter(s=>s.isUserVisible!==!1);if(!i||i.length===0){for(let s of["off","low","medium","high"])X(n,s);return n}for(let s of i)X(n,s.value);return n}o(on,"getProviderReasoningEffortOptions");function sn(e,t){let n=F(e,t),r=new Set(n?.disabledEfforts??[]),i=n?.supportedEfforts?.filter(c=>c.isUserVisible!==!1),s=[],a=n?.supportsDisabledThinking===!0;if(!i||i.length===0){for(let c of["low","medium","high"])X(s,c);a=!0}else for(let c of i){if(c.value==="none"){a=!0;continue}if(r.has(c.value)){a=!0;continue}X(s,c.value)}let l=[];return a&&l.push("off"),l.push(...s),l.push("auto"),l}o(sn,"getProviderReasoningEffortCycle");function yt(e,t){if(t===!1)return"off";switch(e){case"off":return"off";case"quick":return"low";case"balanced":return"medium";case"deep":return"high";default:return"auto"}}o(yt,"legacyReasoningModeToEffortDisplay");function F(e,t){let n=t??pt(e);if(!n)return;let r=ve(e,n)?.reasoningProfile;if(r)return ce(r,Ee(e,n))}o(F,"resolveReasoningProfileForDisplay");function an(e){let t=C(e.effort)??yt(e.reasoningMode,e.thinking),n=F(e.provider,e.model);if(!n)return t;try{let r=le({capability:n,explicitEffort:e.effortOverride?e.effort:void 0,sessionEffort:e.effortOverride?void 0:e.effort,legacyReasoningMode:e.reasoningMode,thinking:e.thinking}),i=C(r.configuredEffort)??t,a=r.configuredEffort!==void 0&&n.disabledEfforts?.includes(r.configuredEffort)===!0?"off":C(r.effectiveEffort);return a&&a!==i?`${i}->${a}`:i}catch{if(e.effort)try{let r=q({currentEffort:e.effort,capability:n}),i=C(e.effort)??t,s=C(r.effectiveEffort);return s&&s!==i?`${i}->${s}`:i}catch{return t}return t}}o(an,"formatReasoningEffortStatusLabel");function cn(e){let t=Mt(e);if(!t)return{preserved:!0};let n=F(e.provider,e.model);if(!n)return{configuredEffort:t,runtimeEffort:t,preserved:!0};let r=q({currentEffort:t,capability:n});return{configuredEffort:t,runtimeEffort:r.effectiveEffort,preserved:r.preserved,diagnostic:r.diagnostic}}o(cn,"resolveProviderReasoningRuntimeEffort");function Et(e){switch(e){case"native-budget":return"budget";case"native-effort":return"effort";case"native-toggle":return"toggle";case"native-adaptive":return"adaptive";default:return"none"}}o(Et,"describeReasoningCapabilityControl");function ln(e,t){if(e==="off")return"Reasoning disabled";switch(t){case"native-budget":return"Uses native thinking budget control";case"native-effort":return"Uses native reasoning effort control";case"native-toggle":return"Uses provider-native thinking toggle only";case"native-adaptive":return"Model adaptively decides thinking depth (Opus 4.7+)";case"none":return"Runs without native reasoning parameters";case"prompt-only":return"Uses prompt overlays only; no native reasoning parameter";default:return"Runs without native reasoning parameters"}}o(ln,"describeReasoningExecution");function un(e){let t=[];e||(e=ae().providerModels);for(let n of me())t.push({name:n.name,model:n.model,models:mt(n.name,e),configured:n.capabilityProfile.transport==="cli-bridge"?!0:n.configured,reasoningCapability:n.reasoningCapability,capabilityProfile:n.capabilityProfile});try{let n=H().map(r=>({...r,models:(()=>{let i=e?.[r.name];return i&&i.length>0?se(i,r.models):r.models})()}));t.push(...n)}catch{}return t}o(un,"getProviderList");function dn(e){if(ue(e))return!0;try{return _(e)?.isConfigured()??!1}catch{return!1}}o(dn,"isProviderConfigured");function ae(){try{if(u.existsSync(g)){let n=JSON.parse(u.readFileSync(g,"utf-8")),r=n.reasoningCeiling??n.reasoningMode,i=[],s={};try{i=[...K(d).document.paths]}catch{}try{s=$(d).document.servers}catch{}return dt(ut({...n,reasoningMode:r,extensions:ie(i),mcpServers:s}))}}catch{}let e,t;try{let n=K(d);n.source!=="default"&&(e=ie([...n.document.paths]))}catch{}try{let n=$(d);n.source!=="default"&&(t=n.document.servers)}catch{}return{...e===void 0?{}:{extensions:e},...t===void 0?{}:{mcpServers:t}}}o(ae,"loadConfig");var wt=f.join(d,"config.example.jsonc"),re={mcp:f.join(d,"integrations","mcp.example.jsonc"),a2a:f.join(d,"integrations","a2a.example.jsonc"),extensions:f.join(d,"integrations","extensions.example.jsonc")},xt=[{name:"core",path:wt},{name:"mcp",path:re.mcp},{name:"a2a",path:re.a2a},{name:"extensions",path:re.extensions}];function Pt(){let e=[];for(let t of xt)try{if(u.existsSync(t.path))continue;u.mkdirSync(f.dirname(t.path),{recursive:!0}),u.writeFileSync(t.path,Ce(t.name),"utf8"),e.push(t.path)}catch{}return e}o(Pt,"ensureExampleConfigFiles");function fn(){return Pt()[0]}o(fn,"ensureExampleConfigFile");var j=new Map;function bt(e,t){let n=process.env[e],r=j.get(e),i=r!==void 0&&n===r;if(n!==void 0&&!i){j.delete(e);return}if(t===void 0){i&&delete process.env[e],j.delete(e);return}process.env[e]=t,j.set(e,t)}o(bt,"projectConfigEnvironment");var Ke=[{configPath:"streamIdleTimeoutMs",env:"KODAX_STREAM_IDLE_TIMEOUT_MS",value:o(e=>x(e.streamIdleTimeoutMs),"value")},{configPath:"repoIntelligenceMode",env:"KODAX_REPO_INTELLIGENCE",value:o(e=>e.repoIntelligenceMode,"value")},{configPath:"repoIntelligenceTrace",env:"KODAX_REPO_INTELLIGENCE_TRACE",value:o(e=>S(e.repoIntelligenceTrace),"value")},{configPath:"verifierLog",env:"KODAX_VERIFIER_LOG",value:o(e=>S(e.verifierLog),"value")},{configPath:"stallLog",env:"KODAX_STALL_LOG",value:o(e=>S(e.stallLog),"value")},{configPath:"fallbackProviders",env:"KODAX_FALLBACK_PROVIDERS",value:o(e=>Ct(e.fallbackProviders),"value")},{configPath:"fastProvider",env:"KODAX_FAST_PROVIDER",value:o(e=>v(e.fastProvider),"value")},{configPath:"fastModel",env:"KODAX_FAST_MODEL",value:o(e=>v(e.fastModel),"value")},{configPath:"deepProvider",env:"KODAX_DEEP_PROVIDER",value:o(e=>v(e.deepProvider),"value")},{configPath:"deepModel",env:"KODAX_DEEP_MODEL",value:o(e=>v(e.deepModel),"value")},{configPath:"provider",env:"KODAX_PROVIDER",value:o(e=>v(e.provider),"value")},{configPath:"effort",env:"KODAX_EFFORT",value:o(e=>v(e.effort),"value")},{configPath:"runtimeMode",env:"KODAX_RUNTIME_MODE",value:o(e=>e.runtimeMode,"value")},{configPath:"sessionRetentionDays",env:"KODAX_SESSION_RETENTION_DAYS",value:o(e=>x(e.sessionRetentionDays),"value")},{configPath:"maxOutputTokens",env:"KODAX_MAX_OUTPUT_TOKENS",value:o(e=>x(e.maxOutputTokens),"value")},{configPath:"disablePromptCache",env:"KODAX_DISABLE_PROMPT_CACHE",value:o(e=>S(e.disablePromptCache),"value")},{configPath:"lsp",env:"KODAX_LSP",value:o(e=>S(e.lsp),"value")},{configPath:"lspAutoDownload",env:"KODAX_LSP_DOWNLOAD",value:o(e=>S(e.lspAutoDownload),"value")},{configPath:"acpLogLevel",env:"KODAX_ACP_LOG",value:o(e=>v(e.acpLogLevel),"value")},{configPath:"repoIntelligence.toolWaitMs",env:"KODAX_REPO_INTELLIGENCE_TOOL_WAIT_MS",value:o(e=>x(e.repoIntelligence?.toolWaitMs),"value")},{configPath:"repoIntelligence.workerTimeoutMs",env:"KODAX_REPO_INTELLIGENCE_WORKER_TIMEOUT_MS",value:o(e=>x(e.repoIntelligence?.workerTimeoutMs),"value")},{configPath:"repoIntelligence.workerOldSpaceMb",env:"KODAX_REPO_INTELLIGENCE_WORKER_OLD_SPACE_MB",value:o(e=>x(e.repoIntelligence?.workerOldSpaceMb),"value")},{configPath:"repoIntelligence.storageDir",env:"KODAX_REPO_INTELLIGENCE_STORAGE_DIR",value:o(e=>v(e.repoIntelligence?.storageDir),"value")},{configPath:"workflow.maxConcurrency",env:"KODAX_WORKFLOW_MAX_CONCURRENCY",value:o(e=>x(e.workflow?.maxConcurrency),"value")}];function St(e){for(let t of Ke)bt(t.env,t.value(e))}o(St,"applyConfigSurfaceBridges");function v(e){return e?.trim()||void 0}o(v,"normalizedConfigString");function x(e){return typeof e=="number"&&Number.isFinite(e)?String(e):void 0}o(x,"configNumberString");function S(e){return e===void 0?void 0:e?"1":"0"}o(S,"configBooleanString");function Ct(e){return e?.filter(t=>t.trim().length>0).join(",")}o(Ct,"configStringList");var pn=[...Ke.map(({configPath:e,env:t})=>({configPath:e,env:t}))];function _t(e){St(e)}o(_t,"applyConfigEnvironment");function mn(){ct();let e=ae();return _t(e),lt(e),be(e.locale),e}o(mn,"prepareRuntimeConfig");function gn(e){let t={};if(u.existsSync(g))try{let a=JSON.parse(u.readFileSync(g,"utf8"));a&&typeof a=="object"&&!Array.isArray(a)&&(t=a)}catch{}let{extensions:n,mcpServers:r,...i}=e,s={...t,...i};for(let a of Object.keys(i))i[a]===void 0&&delete s[a];if(u.mkdirSync(f.dirname(g),{recursive:!0}),u.writeFileSync(g,JSON.stringify(s,null,2)),n!==void 0){let a=K(d);A({domain:"extensions",configHome:d,...a.source==="user"?{expectedRevision:a.revision}:{},document:{version:1,paths:ie(n)??[]},validate:k})}if(r!==void 0){let a=$(d);A({domain:"mcp",configHome:d,...a.source==="user"?{expectedRevision:a.revision}:{},document:{version:1,servers:r},validate:M})}}o(gn,"saveConfig");function hn(e,t,n){return e.effort!==void 0||z(n).kind==="value"||t.effort!==void 0}o(hn,"resolveInitialEffortOverride");function y(e){return e?.trim()?e:void 0}o(y,"nonEmptySelection");function vn(e){return y(e.explicitProvider)??y(e.environmentProvider)??y(e.configuredProvider)??e.defaultProvider}o(vn,"resolveRuntimeProviderSelection");function yn(e){let t=y(e.explicitModel);if(t)return t;let n=y(e.configuredModel);if(!n)return;let r=y(e.explicitProvider)??y(e.environmentProvider);return r?y(e.configuredProvider)===r?n:void 0:n}o(yn,"resolveRuntimeModelSelection");function En(e){if(e.explicitEffort!==void 0)return U(e.explicitEffort);let t=z(e.environmentEffort);return t.kind==="value"?t.value:e.configuredEffort===void 0?void 0:U(e.configuredEffort)}o(En,"resolveRuntimeEffortSelection");function Mt(e){return e.permissionMode==="plan"&&e.effortOverride!==!0&&e.planModeEffort!==void 0?e.planModeEffort:e.effort}o(Mt,"resolvePermissionModeEffort");async function wn(e){try{let{stdout:t}=await rt("git rev-parse --show-toplevel",{cwd:e});return t.trim()}catch{return null}}o(wn,"getGitRoot");function kt(e){switch(e){case"builtin":return"Built-in";case"runtime":return"Runtime extension";case"custom":return"Custom config";default:return"Unknown"}}o(kt,"formatProviderSourceKind");function xn(e){let t=e.transport==="cli-bridge"?"CLI bridge":"Native API",n=e.conversationSemantics==="last-user-message"?"latest-user-message only":"full conversation history";return[`Source: ${kt(e.sourceKind)}`,`Transport: ${t}`,`Conversation semantics: ${n}`,`Context fidelity: ${e.contextFidelity}`,`Tool calling: ${e.toolCallingFidelity}`,`Session behavior: ${e.sessionSupport}`,`Long-running support: ${e.longRunningSupport}`,`Evidence-heavy flows: ${e.evidenceSupport}`,`Multimodal support: ${e.multimodalSupport}`,`MCP support: ${e.mcpSupport}`,`Reasoning control: ${Et(e.reasoningCapability)}`]}o(xn,"formatProviderCapabilityDetailLines");function Pn(e,t,n){return[{label:"General coding",hints:{}},{label:"Evidence-heavy review",hints:{evidenceHeavy:!0}},{label:"Long-running task",hints:{longRunning:!0}}].map(i=>({label:i.label,decision:vt(e,t,n,i.hints)})).filter(i=>i.decision!==null)}o(Pn,"getProviderCommonPolicyScenarios");var Te=.5,Ne=0,I={locked:!1,queue:[]};async function bn(e){for(;I.locked;)await new Promise(t=>I.queue.push(t));I.locked=!0;try{let t=(Date.now()-Ne)/1e3;t<Te&&await new Promise(r=>setTimeout(r,(Te-t)*1e3));let n=await e();return Ne=Date.now(),n}finally{I.locked=!1;let t=I.queue.shift();t&&t()}}o(bn,"rateLimitedCall");export{Ot as a,Se as b,Ce as c,M as d,k as e,b as f,$ as g,K as h,We as i,$t as j,A as k,ke as l,d as m,Yt as n,g as o,Qt as p,at as q,Zt as r,lt as s,ft as t,en as u,pt as v,mt as w,gt as x,ht as y,tn as z,vt as A,nn as B,rn as C,C as D,on as E,sn as F,an as G,cn as H,Et as I,ln as J,un as K,dn as L,ae as M,wt as N,re as O,Pt as P,fn as Q,pn as R,_t as S,mn as T,gn as U,hn as V,vn as W,yn as X,En as Y,Mt as Z,wn as _,kt as $,xn as aa,Pn as ba,bn as ca};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
-
import{a as Pr}from"./chunk-I4TPQEJN.js";import{a as Dr}from"./chunk-Y4WOTWUC.js";import{Ac as k,Bc as Re,Cc as At,D as gr,Dc as et,Ec as Br,Gc as $r,H as Et,I as hr,Na as Sr,Oa as Er,R as yr,Wc as Mt,Xc as we,_a as Cr,aa as Tr,bb as _r,bd as Hr,cd as qr,d as ur,e as ee,f as Q,g as dr,ga as br,gb as _t,hb as vo,hd as Wr,id as jr,ja as xr,jb as Ar,kb as Mr,lb as Ir,mb as Or,na as Pe,oa as Ct,ra as vr,sd as Kr,tc as Lr,td as It,u as mr,ua as kr,v as fr,va as Rr,vd as tt,w as xo,wa as wr,wd as Gr,x as pr,xc as ko,yb as Nr,yc as Fr,yd as Xr,zc as Ur,zd as Ro}from"./chunk-PQ3XUSY2.js";import{$a as Bn,Aa as Dn,D as ve,E as An,I as Mn,Ja as Nn,Ma as Ye,R as In,T as Pn,Ua as uo,W as Ie,Ya as Ln,Za as Fn,_a as Un,bb as $n,e as Ge,f as Xe,g as ze,h as _n,sa as On}from"./chunk-UJEMSPM5.js";import{Fa as Xn,Ga as zn,Sc as To,_c as bo,ad as sr,bd as ar,f as fe,g as Rt,id as cr,j as Wn,jd as lr,k as w,l as jn,ld as St,nc as Jn,o as Ve,oc as er,q as Qe,qc as go,rc as ho,s as Kn,sb as Ze,sc as tr,tb as po,uc as or,va as Gn,vc as nr,wa as fo,wc as rr,xc as ir,yc as Je,zc as yo}from"./chunk-VYKFM3TB.js";import{b as I,ea as ke,f as wt,ga as Vn,ia as Qn,ka as Zn,n as Yn}from"./chunk-AWMTNUDS.js";import{a as mo,u as Hn,w as qn}from"./chunk-F7C7J6IM.js";import{a as i}from"./chunk-ONUPGMER.js";import{readFile as $a}from"fs/promises";var zr=100;function Ha(e){return zr}i(Ha,"adaptiveTriggerPercent");var qa={enabled:!0};async function Yr(e,t){let o=wt("config.json"),n;try{let a=await Wa(o);a?.compaction&&(n=a.compaction)}catch{}let r={...qa,...n,triggerPercent:zr};t?.enabled!==void 0&&(r.enabled=t.enabled),t?.contextWindow!==void 0&&(r.contextWindow=t.contextWindow);let s=r.contextWindow??e;return r.triggerPercent=typeof t?.triggerPercent=="number"?t.triggerPercent:typeof n?.triggerPercent=="number"?n.triggerPercent:Ha(s),r}i(Yr,"loadCompactionConfig");async function Wa(e){try{let t=await $a(e,"utf-8");return JSON.parse(t)}catch{return null}}i(Wa,"readConfigFile");var te;(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"})(te||(te={}));var ja=[/\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 Vr(e){return ja.some(t=>t.test(e))}i(Vr,"matchesTransientMessage");function Ka(e){if(e.name==="StreamIncompleteError"||e.message.includes("Stream incomplete"))return{category:te.TRANSIENT,retryable:!0,maxRetries:3,retryDelay:2e3,shouldCleanup:!0};if(e.name==="AbortError")return{category:te.USER_ABORT,retryable:!1,maxRetries:0,retryDelay:0,shouldCleanup:!0};if(e instanceof _n||e.message.includes("tool_call_id")||e.message.includes("tool result"))return{category:te.TOOL_CALL_ID,retryable:!0,maxRetries:1,retryDelay:1e3,shouldCleanup:!0};if(e instanceof Xe)return{category:te.TRANSIENT,retryable:!0,maxRetries:3,retryDelay:e.retryAfter??6e4,shouldCleanup:!0};if(e instanceof ze)return{category:te.TRANSIENT,retryable:!0,maxRetries:3,retryDelay:e.isTimeout?5e3:2e3,shouldCleanup:!0};if(e instanceof Ge){let o=e.message.toLowerCase();return Vr(o)?{category:te.TRANSIENT,retryable:!0,maxRetries:3,retryDelay:2e3,shouldCleanup:!0}:{category:te.PERMANENT,retryable:!1,maxRetries:0,retryDelay:0,shouldCleanup:!0}}let t=e.message.toLowerCase();return Vr(t)?{category:te.TRANSIENT,retryable:!0,maxRetries:2,retryDelay:2e3,shouldCleanup:!0}:{category:te.PERMANENT,retryable:!1,maxRetries:0,retryDelay:0,shouldCleanup:!0}}i(Ka,"classifyError");function wo(e,t){return new Promise((o,n)=>{if(t?.aborted){n(t.reason instanceof Error?t.reason:new DOMException("Request aborted","AbortError"));return}let r,s=t;if(!s){r=setTimeout(()=>{o()},e);return}let a=i(()=>{clearTimeout(r),s.removeEventListener("abort",a),n(s.reason instanceof Error?s.reason:new DOMException("Request aborted","AbortError"))},"onAbort");r=setTimeout(()=>{s.removeEventListener("abort",a),o()},e),s.addEventListener("abort",a,{once:!0})})}i(wo,"waitForRetryDelay");var Zr={requestTimeoutMs:6e5,streamIdleTimeoutMs:Number(process.env.KODAX_STREAM_IDLE_TIMEOUT_MS)||0,chunkTimeoutMs:3e4,maxRetries:4,maxRetryDelayMs:6e4,enableNonStreamingFallback:!0};function So(e,t,o){let n={...Zr};if(t&&Qr(n,t),o&&o.length>0){let r=o.find(s=>s.provider===e);if(r){let{provider:s,...a}=r;Qr(n,a)}}return n}i(So,"resolveResilienceConfig");function Qr(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(Qr,"mergePartialConfig");var Ga=[/\brate.?limit\b/i,/\btoo many requests\b/i,/\b429\b/,/\bquota exceeded\b/i,/\bapi credits?\b/i,/请求过多/,/频率限制/,/限流/,/配额/],Jr=[/\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,/服务繁忙/,/服务不可用/,/服务器错误/,/服务器内部错误/,/过载/,/容量不足/],Eo=[/\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,/网络错误/,/网络异常/,/连接错误/,/连接失败/,/连接被拒绝/,/连接被重置/,/连接被终止/,/连接已终止/,/连接中断/],Co=[/\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,/连接超时/,/请求超时/,/响应超时/],ei=[/\bstream incomplete\b/i,/\bstream interrupted\b/i],Xa=[/\bstream stalled or delayed\b/i,/\b60s idle\b/i,/\bidle timeout\b/i],za=[/\bhard timeout\b/i,/\b10 minutes?\b/i,/\bapi hard timeout\b/i],Ya=[/reasoning_content/i,/thinking.{0,40}signature/i,/signature.{0,40}thinking/i],Va=[/\bcontext too long\b/i,/\bmaximum context\b/i,/\bcontext length\b/i,/\bcontext window\b/i,/\btoo many tokens\b/i],Qa=[/\b(401|403)\b/,/\b(auth|unauthorized|forbidden|api key|not configured|permission denied)\b/i];function Pt(e,t){let o=ti(e);if(e.name==="AbortError")return{errorClass:"user_abort",failureStage:t??"before_first_delta",retryable:!1,maxRetries:0,baseRetryDelay:0};if(e instanceof Xe||Z(o,Ga)){let n=e instanceof Xe?e.retryAfter:void 0;return{errorClass:"rate_limit",failureStage:t??"before_first_delta",retryable:!0,maxRetries:3,baseRetryDelay:n??6e4}}return e instanceof Ge&&Z(o,Jr)?{errorClass:"provider_overloaded",failureStage:t??"before_first_delta",retryable:!0,maxRetries:3,baseRetryDelay:5e3}:e.name==="StreamIncompleteError"||Z(o,ei)?{errorClass:"incomplete_stream",failureStage:Ja(o,t),retryable:!0,maxRetries:3,baseRetryDelay:2e3}:Z(o,Xa)?{errorClass:"stream_idle_timeout",failureStage:t??"mid_stream_text",retryable:!0,maxRetries:3,baseRetryDelay:3e3}:Z(o,za)?{errorClass:"request_timeout",failureStage:t??"before_first_delta",retryable:!0,maxRetries:2,baseRetryDelay:5e3}:e instanceof ze&&e.isTimeout||Z(o,Co)?{errorClass:"request_timeout",failureStage:t??"before_first_delta",retryable:!0,maxRetries:3,baseRetryDelay:5e3}:e instanceof ze||Z(o,Eo)?{errorClass:"connection_failure",failureStage:t??"before_first_delta",retryable:!0,maxRetries:3,baseRetryDelay:2e3}:e instanceof Ge?Z(o,[...Eo,...Co])?{errorClass:"connection_failure",failureStage:t??"before_first_delta",retryable:!0,maxRetries:3,baseRetryDelay:2e3}:Z(o,Ya)?{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}:Z(o,Jr)?{errorClass:"provider_overloaded",failureStage:t??"before_first_delta",retryable:!0,maxRetries:3,baseRetryDelay:5e3}:Z(o,[...Eo,...Co,...ei])?{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(Pt,"classifyResilienceError");function Za(e,t){if(t<=0)return!1;let o=ti(e);if(Z(o,Qa))return!1;let n=Pt(e);return n.errorClass==="provider_overloaded"||n.errorClass==="reasoning_content_required"||Z(o,Va)}i(Za,"isSessionRecoveryCandidateError");function Z(e,t){return t.some(o=>o.test(e))}i(Z,"matchesAny");function ti(e){let t=[],o=new Set,n=e,r=0,s=5;for(;n!=null&&r<s&&!o.has(n);){if(o.add(n),n instanceof Error){n.message&&t.push(n.message);let a=n.code;typeof a=="string"&&a.length>0&&t.push(a),n=n.cause}else if(typeof n=="string")t.push(n),n=void 0;else if(typeof n=="object"){let a=n.message;typeof a=="string"&&t.push(a);let l=n.code;typeof l=="string"&&t.push(l),n=n.cause}else break;r+=1}return t.join(" | ").toLowerCase()}i(ti,"collectErrorText");function Ja(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(Ja,"inferStageForStreamError");var ec=0;function oi(){return`req_${Date.now()}_${++ec}`}i(oi,"nextRequestId");var ot=class{static{i(this,"StableBoundaryTracker")}state;hasReceivedFirstDelta=!1;currentToolInputId;constructor(){this.state=this.createInitialState()}beginRequest(t,o,n,r=1,s=!1){this.state={requestId:oi(),provider:t,model:o,attempt:r,lastStableMessageIndex:n.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),n=t.slice(0,o),r=[...this.state.pendingToolCallIds],s=[...this.state.executedToolCallIds];return{messages:n,droppedToolCallIds:r,executedToolCallIds:s}}reset(){this.state=this.createInitialState(),this.hasReceivedFirstDelta=!1,this.currentToolInputId=void 0}createInitialState(){return{requestId:oi(),provider:"",model:"",attempt:1,lastStableMessageIndex:0,executedToolCallIds:[],pendingToolCallIds:[],visibleLiveTextLength:0,visibleThinkingLength:0,fallbackUsed:!1,startedAt:Date.now()}}};function Ot(e,t,o){if(e.length===0)return[];let n=tc(e,o),r=oc(n),s=t.filter(a=>!r.includes(a));return s.length>0?nc(n,s):n}i(Ot,"reconstructMessagesWithToolGuard");function tc(e,t){if(t.length===0)return[...e];let o=new Set(t);return e.map(n=>{if(typeof n.content=="string")return n;let r=n.content.filter(s=>s.type==="tool_use"?!o.has(s.id):s.type==="tool_result"?!o.has(s.tool_use_id):!0);return r.length===0?{...n,content:[{type:"text",text:""}]}:{...n,content:r}})}i(tc,"filterIncompleteToolCalls");function oc(e){let t=[];for(let o of e)if(typeof o.content!="string")for(let n of o.content)n.type==="tool_result"&&t.push(n.tool_use_id);return t}i(oc,"collectToolResultIds");function nc(e,t){let o=[...e],n=t.map(r=>({type:"tool_result",tool_use_id:r,content:"[Result preserved from previous attempt - tool already executed]"}));return n.length>0&&o.push({role:"user",content:n}),o}i(nc,"appendMissingToolResults");var rc=["before_request_accepted","before_first_delta"],ic=["stream_idle_timeout","chunk_timeout","incomplete_stream","connection_failure"],nt=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,n){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(n>=this.config.maxRetries)return{action:"manual_continue",ladderStep:4,delayMs:0,maxDelayMs:this.config.maxRetryDelayMs,shouldUseNonStreaming:!1,reasonCode:o.errorClass,failureStage:o.failureStage};let r=ac(o.baseRetryDelay,n,this.config.maxRetryDelayMs),s=cc(t),a=s!==void 0?Math.min(s,this.config.maxRetryDelayMs):r,{action:l,ladderStep:d,shouldUseNonStreaming:u}=this.selectRecoveryStrategy(o,n);return{action:l,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 n=t.failureStage,r=t.errorClass;return ic.includes(r)&&this.config.enableNonStreamingFallback&&!this.nonStreamingFallbackUsed&&o>=2?(this.nonStreamingFallbackUsed=!0,{action:"non_streaming_fallback",ladderStep:3,shouldUseNonStreaming:!0}):rc.includes(n)?{action:"fresh_connection_retry",ladderStep:1,shouldUseNonStreaming:!1}:{action:"stable_boundary_retry",ladderStep:2,shouldUseNonStreaming:!1}}executeFreshConnectionRetry(t,o){let n=this.boundaryTracker.snapshot();return{messages:[...t],droppedToolCallIds:[],executedToolCallIds:[...n.executedToolCallIds],fallbackUsed:this.nonStreamingFallbackUsed}}executeStableBoundaryRetry(t,o){let n=this.boundaryTracker.recoverToStableBoundary(t);return{messages:Ot(n.messages,n.executedToolCallIds,n.droppedToolCallIds),droppedToolCallIds:n.droppedToolCallIds,executedToolCallIds:n.executedToolCallIds,fallbackUsed:this.nonStreamingFallbackUsed}}executeNonStreamingFallback(t,o){let n=this.boundaryTracker.recoverToStableBoundary(t);return{messages:Ot(n.messages,n.executedToolCallIds,n.droppedToolCallIds),droppedToolCallIds:n.droppedToolCallIds,executedToolCallIds:n.executedToolCallIds,fallbackUsed:!0}}executeManualContinue(t,o){let n=this.boundaryTracker.snapshot();return{messages:[...t],droppedToolCallIds:[...n.pendingToolCallIds],executedToolCallIds:[...n.executedToolCallIds],fallbackUsed:this.nonStreamingFallbackUsed}}executeSanitizeThinking(t,o){let n=this.boundaryTracker.snapshot();return{messages:sc(t),droppedToolCallIds:[],executedToolCallIds:[...n.executedToolCallIds],fallbackUsed:this.nonStreamingFallbackUsed}}reset(){this.nonStreamingFallbackUsed=!1,this.thinkingSanitizationUsed=!1}};function sc(e){return e.map(t=>{if(t.role!=="assistant"||typeof t.content=="string"||!Array.isArray(t.content))return t;let o=t.content.filter(n=>n.type!=="thinking"&&n.type!=="redacted_thinking");return o.length===0?{...t,content:[{type:"text",text:""}]}:{...t,content:o}})}i(sc,"sanitizeThinkingBlocks");function ac(e,t,o){let n=e*Math.pow(2,t-1),r=Math.random()*1e3;return Math.min(n+r,o)}i(ac,"calculateRetryDelay");function cc(e){if("retryAfter"in e&&typeof e.retryAfter=="number")return e.retryAfter*1e3}i(cc,"extractServerRetryAfter");var Dt=process.env.KODAX_DEBUG_STREAM==="1"||process.env.KODAX_DEBUG_RESILIENCE==="1";function _o(e,t){Dt&&I({source:"coding:resilience",level:"debug",message:"classify",detail:{rawError:e.message,errorClass:t.errorClass,failureStage:t.failureStage,retryable:t.retryable,maxRetries:t.maxRetries}})}i(_o,"telemetryClassify");function Ao(e,t){Dt&&I({source:"coding:resilience",level:"debug",message:"decision",detail:{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(Ao,"telemetryDecision");function Mo(e){Dt&&I({source:"coding:resilience",level:"debug",message:"boundary",detail:{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(Mo,"telemetryBoundary");function Nt(e,t){Dt&&I({source:"coding:resilience",level:"debug",message:"recovery",detail:{action:e,droppedToolCallIds:t.droppedToolCallIds,executedToolCallIds:t.executedToolCallIds,fallbackUsed:t.fallbackUsed}})}i(Nt,"telemetryRecovery");function rt(e,t){if(!t||t.length===0)return e;let o=[{type:"text",text:e}];for(let n of t){if(n.kind!=="image")throw new mo("MODEL_INPUT_UNSUPPORTED",`${n.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:n.path,mediaType:n.mediaType})}return o}i(rt,"buildPromptMessageContent");function Io(e){return e._truncated===!0||e._salvaged===!0&&Kr(e.name)}i(Io,"isUntrustedSalvage");function ri(e){let t=[];for(let o of e){if(Io(o)){t.push(`${o.name}: incomplete input (salvaged from malformed/truncated JSON)`);continue}let n=It(o.name),r=o.input??{};for(let s of n)(r[s]===void 0||r[s]===null||r[s]==="")&&t.push(`${o.name}: missing '${s}'`)}return t}i(ri,"checkIncompleteToolCalls");function pe(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0}i(pe,"isFiniteNonNegative");function ii(e){return!(!e||!pe(e.inputTokens)||!pe(e.outputTokens)||!pe(e.totalTokens)||e.totalTokens<e.inputTokens||e.totalTokens<e.outputTokens||e.cachedReadTokens!==void 0&&!pe(e.cachedReadTokens)||e.cachedWriteTokens!==void 0&&!pe(e.cachedWriteTokens)||e.thoughtTokens!==void 0&&!pe(e.thoughtTokens))}i(ii,"hasValidTokenUsage");function Ft(e){let t=w(e);return{currentTokens:t,baselineEstimatedTokens:t,source:"estimate"}}i(Ft,"createEstimatedContextTokenSnapshot");function lc(e,t){let o=w(e);return{currentTokens:t.inputTokens,baselineEstimatedTokens:o,source:"api",usage:t}}i(lc,"createApiContextTokenSnapshot");function si(e,t){return ii(t)?{currentTokens:t.totalTokens,baselineEstimatedTokens:w(e),source:"api",usage:t}:Ft(e)}i(si,"createCompletedTurnTokenSnapshot");function Po(e,t){return ii(t)?lc(e,t):Ft(e)}i(Po,"createContextTokenSnapshot");function it(e,t){let o=w(e);if(!t||!pe(t.currentTokens)||!pe(t.baselineEstimatedTokens))return o;let n=t.currentTokens+(o-t.baselineEstimatedTokens);return!Number.isFinite(n)||n<0?o:Math.round(n)}i(it,"resolveContextTokenCount");function A(e,t){return{currentTokens:it(e,t),baselineEstimatedTokens:w(e),source:t?.source??"estimate",usage:t?.usage}}i(A,"rebaseContextTokenSnapshot");function ai(e,t){let o=w(e);return{currentTokens:o,baselineEstimatedTokens:o,source:t?.source??"estimate"}}i(ai,"recomputeContextTokenSnapshot");function Zm(e,t=400){return e.length<=t?e:`${e.slice(0,Math.max(0,t-3))}...`}i(Zm,"truncateText");function ci(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(ci,"extractMessageText");function uc(e){return e==="running"||e==="planned"}i(uc,"isUnconvergedVerdict");function dc(e){let t=e.trim();return t===""||t==="..."}i(dc,"isPlaceholderOnlyAssistantText");function mc(e){let t=ci(e);return dc(t)?"":t}i(mc,"extractFinalAssistantText");function af(e,t,o){if(!e.messages)return e;let n=mc(e);if(uc(e.managedTask?.verdict?.status)||e.interrupted&&!n)return e;let r=t.context?.inputArtifacts,s=e.artifactLedger??To(e.messages),a=fc(e.messages,o,n,r),l=e.contextTokenSnapshot?ai(a,e.contextTokenSnapshot):void 0;return{...e,messages:a,artifactLedger:s,contextTokenSnapshot:l}}i(af,"reshapeToUserConversation");function fc(e,t,o,n){let r=e,s=r[0];s?.role==="system"&&typeof s.content=="string"&&!s.content.startsWith(bo)&&(r=r.slice(1)),r=Oo(r);let l=!r.some(u=>u.role==="user"&&Lt(u)===t);l&&r[0]?.role==="system"&&typeof r[0].content=="string"&&r[0].content.startsWith(bo)&&r.some(c=>c.role==="user")&&(l=!1),l&&(r=[...r,{role:"user",content:rt(t,n)}]);let d=r[r.length-1];return d?.role==="assistant"&&typeof d.content=="string"&&d.content===o||(d?.role==="assistant"?r=[...r.slice(0,-1),{role:"assistant",content:o}]:r=[...r,{role:"assistant",content:o}]),[...r]}i(fc,"preserveTranscriptForRoundExit");function Oo(e){let t=e.length;for(;t>=2;){let o=e[t-2],n=e[t-1];if(o.role==="user"&&n.role==="assistant"&&gc(o)){t-=2;continue}break}return e.slice(0,t)}i(Oo,"normalizeLoadedSessionMessages");var pc=/^\s*You are the (Scout|Planner|Generator|Evaluator) role\b/;function gc(e){if(e.role!=="user")return!1;let t=typeof e.content=="string"?e.content:hc(e.content);return pc.test(t)}i(gc,"isRolePromptShapedUser");function hc(e){let t=e[0];return t?.type==="text"&&typeof t.text=="string"?t.text:""}i(hc,"extractLeadingTextBlock");function ni(e){return typeof e=="string"?e:e.filter(t=>t.type==="text").map(t=>t.text).join(`
|
|
2
|
+
import{a as Pr}from"./chunk-I4TPQEJN.js";import{a as Dr}from"./chunk-Y4WOTWUC.js";import{Ac as k,Bc as Re,Cc as At,D as gr,Dc as et,Ec as Br,Gc as $r,H as Et,I as hr,Na as Sr,Oa as Er,R as yr,Wc as Mt,Xc as we,_a as Cr,aa as Tr,bb as _r,bd as Hr,cd as qr,d as ur,e as ee,f as Q,g as dr,ga as br,gb as _t,hb as vo,hd as Wr,id as jr,ja as xr,jb as Ar,kb as Mr,lb as Ir,mb as Or,na as Pe,oa as Ct,ra as vr,sd as Kr,tc as Lr,td as It,u as mr,ua as kr,v as fr,va as Rr,vd as tt,w as xo,wa as wr,wd as Gr,x as pr,xc as ko,yb as Nr,yc as Fr,yd as Xr,zc as Ur,zd as Ro}from"./chunk-AQGNRBEJ.js";import{$a as Bn,Aa as Dn,D as ve,E as An,I as Mn,Ja as Nn,Ma as Ye,R as In,T as Pn,Ua as uo,W as Ie,Ya as Ln,Za as Fn,_a as Un,bb as $n,e as Ge,f as Xe,g as ze,h as _n,sa as On}from"./chunk-UJEMSPM5.js";import{Fa as Xn,Ga as zn,Sc as To,_c as bo,ad as sr,bd as ar,f as fe,g as Rt,id as cr,j as Wn,jd as lr,k as w,l as jn,ld as St,nc as Jn,o as Ve,oc as er,q as Qe,qc as go,rc as ho,s as Kn,sb as Ze,sc as tr,tb as po,uc as or,va as Gn,vc as nr,wa as fo,wc as rr,xc as ir,yc as Je,zc as yo}from"./chunk-7PV577LP.js";import{b as I,ea as ke,f as wt,ga as Vn,ia as Qn,ka as Zn,n as Yn}from"./chunk-AWMTNUDS.js";import{a as mo,u as Hn,w as qn}from"./chunk-F7C7J6IM.js";import{a as i}from"./chunk-ONUPGMER.js";import{readFile as $a}from"fs/promises";var zr=100;function Ha(e){return zr}i(Ha,"adaptiveTriggerPercent");var qa={enabled:!0};async function Yr(e,t){let o=wt("config.json"),n;try{let a=await Wa(o);a?.compaction&&(n=a.compaction)}catch{}let r={...qa,...n,triggerPercent:zr};t?.enabled!==void 0&&(r.enabled=t.enabled),t?.contextWindow!==void 0&&(r.contextWindow=t.contextWindow);let s=r.contextWindow??e;return r.triggerPercent=typeof t?.triggerPercent=="number"?t.triggerPercent:typeof n?.triggerPercent=="number"?n.triggerPercent:Ha(s),r}i(Yr,"loadCompactionConfig");async function Wa(e){try{let t=await $a(e,"utf-8");return JSON.parse(t)}catch{return null}}i(Wa,"readConfigFile");var te;(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"})(te||(te={}));var ja=[/\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 Vr(e){return ja.some(t=>t.test(e))}i(Vr,"matchesTransientMessage");function Ka(e){if(e.name==="StreamIncompleteError"||e.message.includes("Stream incomplete"))return{category:te.TRANSIENT,retryable:!0,maxRetries:3,retryDelay:2e3,shouldCleanup:!0};if(e.name==="AbortError")return{category:te.USER_ABORT,retryable:!1,maxRetries:0,retryDelay:0,shouldCleanup:!0};if(e instanceof _n||e.message.includes("tool_call_id")||e.message.includes("tool result"))return{category:te.TOOL_CALL_ID,retryable:!0,maxRetries:1,retryDelay:1e3,shouldCleanup:!0};if(e instanceof Xe)return{category:te.TRANSIENT,retryable:!0,maxRetries:3,retryDelay:e.retryAfter??6e4,shouldCleanup:!0};if(e instanceof ze)return{category:te.TRANSIENT,retryable:!0,maxRetries:3,retryDelay:e.isTimeout?5e3:2e3,shouldCleanup:!0};if(e instanceof Ge){let o=e.message.toLowerCase();return Vr(o)?{category:te.TRANSIENT,retryable:!0,maxRetries:3,retryDelay:2e3,shouldCleanup:!0}:{category:te.PERMANENT,retryable:!1,maxRetries:0,retryDelay:0,shouldCleanup:!0}}let t=e.message.toLowerCase();return Vr(t)?{category:te.TRANSIENT,retryable:!0,maxRetries:2,retryDelay:2e3,shouldCleanup:!0}:{category:te.PERMANENT,retryable:!1,maxRetries:0,retryDelay:0,shouldCleanup:!0}}i(Ka,"classifyError");function wo(e,t){return new Promise((o,n)=>{if(t?.aborted){n(t.reason instanceof Error?t.reason:new DOMException("Request aborted","AbortError"));return}let r,s=t;if(!s){r=setTimeout(()=>{o()},e);return}let a=i(()=>{clearTimeout(r),s.removeEventListener("abort",a),n(s.reason instanceof Error?s.reason:new DOMException("Request aborted","AbortError"))},"onAbort");r=setTimeout(()=>{s.removeEventListener("abort",a),o()},e),s.addEventListener("abort",a,{once:!0})})}i(wo,"waitForRetryDelay");var Zr={requestTimeoutMs:6e5,streamIdleTimeoutMs:Number(process.env.KODAX_STREAM_IDLE_TIMEOUT_MS)||0,chunkTimeoutMs:3e4,maxRetries:4,maxRetryDelayMs:6e4,enableNonStreamingFallback:!0};function So(e,t,o){let n={...Zr};if(t&&Qr(n,t),o&&o.length>0){let r=o.find(s=>s.provider===e);if(r){let{provider:s,...a}=r;Qr(n,a)}}return n}i(So,"resolveResilienceConfig");function Qr(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(Qr,"mergePartialConfig");var Ga=[/\brate.?limit\b/i,/\btoo many requests\b/i,/\b429\b/,/\bquota exceeded\b/i,/\bapi credits?\b/i,/请求过多/,/频率限制/,/限流/,/配额/],Jr=[/\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,/服务繁忙/,/服务不可用/,/服务器错误/,/服务器内部错误/,/过载/,/容量不足/],Eo=[/\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,/网络错误/,/网络异常/,/连接错误/,/连接失败/,/连接被拒绝/,/连接被重置/,/连接被终止/,/连接已终止/,/连接中断/],Co=[/\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,/连接超时/,/请求超时/,/响应超时/],ei=[/\bstream incomplete\b/i,/\bstream interrupted\b/i],Xa=[/\bstream stalled or delayed\b/i,/\b60s idle\b/i,/\bidle timeout\b/i],za=[/\bhard timeout\b/i,/\b10 minutes?\b/i,/\bapi hard timeout\b/i],Ya=[/reasoning_content/i,/thinking.{0,40}signature/i,/signature.{0,40}thinking/i],Va=[/\bcontext too long\b/i,/\bmaximum context\b/i,/\bcontext length\b/i,/\bcontext window\b/i,/\btoo many tokens\b/i],Qa=[/\b(401|403)\b/,/\b(auth|unauthorized|forbidden|api key|not configured|permission denied)\b/i];function Pt(e,t){let o=ti(e);if(e.name==="AbortError")return{errorClass:"user_abort",failureStage:t??"before_first_delta",retryable:!1,maxRetries:0,baseRetryDelay:0};if(e instanceof Xe||Z(o,Ga)){let n=e instanceof Xe?e.retryAfter:void 0;return{errorClass:"rate_limit",failureStage:t??"before_first_delta",retryable:!0,maxRetries:3,baseRetryDelay:n??6e4}}return e instanceof Ge&&Z(o,Jr)?{errorClass:"provider_overloaded",failureStage:t??"before_first_delta",retryable:!0,maxRetries:3,baseRetryDelay:5e3}:e.name==="StreamIncompleteError"||Z(o,ei)?{errorClass:"incomplete_stream",failureStage:Ja(o,t),retryable:!0,maxRetries:3,baseRetryDelay:2e3}:Z(o,Xa)?{errorClass:"stream_idle_timeout",failureStage:t??"mid_stream_text",retryable:!0,maxRetries:3,baseRetryDelay:3e3}:Z(o,za)?{errorClass:"request_timeout",failureStage:t??"before_first_delta",retryable:!0,maxRetries:2,baseRetryDelay:5e3}:e instanceof ze&&e.isTimeout||Z(o,Co)?{errorClass:"request_timeout",failureStage:t??"before_first_delta",retryable:!0,maxRetries:3,baseRetryDelay:5e3}:e instanceof ze||Z(o,Eo)?{errorClass:"connection_failure",failureStage:t??"before_first_delta",retryable:!0,maxRetries:3,baseRetryDelay:2e3}:e instanceof Ge?Z(o,[...Eo,...Co])?{errorClass:"connection_failure",failureStage:t??"before_first_delta",retryable:!0,maxRetries:3,baseRetryDelay:2e3}:Z(o,Ya)?{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}:Z(o,Jr)?{errorClass:"provider_overloaded",failureStage:t??"before_first_delta",retryable:!0,maxRetries:3,baseRetryDelay:5e3}:Z(o,[...Eo,...Co,...ei])?{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(Pt,"classifyResilienceError");function Za(e,t){if(t<=0)return!1;let o=ti(e);if(Z(o,Qa))return!1;let n=Pt(e);return n.errorClass==="provider_overloaded"||n.errorClass==="reasoning_content_required"||Z(o,Va)}i(Za,"isSessionRecoveryCandidateError");function Z(e,t){return t.some(o=>o.test(e))}i(Z,"matchesAny");function ti(e){let t=[],o=new Set,n=e,r=0,s=5;for(;n!=null&&r<s&&!o.has(n);){if(o.add(n),n instanceof Error){n.message&&t.push(n.message);let a=n.code;typeof a=="string"&&a.length>0&&t.push(a),n=n.cause}else if(typeof n=="string")t.push(n),n=void 0;else if(typeof n=="object"){let a=n.message;typeof a=="string"&&t.push(a);let l=n.code;typeof l=="string"&&t.push(l),n=n.cause}else break;r+=1}return t.join(" | ").toLowerCase()}i(ti,"collectErrorText");function Ja(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(Ja,"inferStageForStreamError");var ec=0;function oi(){return`req_${Date.now()}_${++ec}`}i(oi,"nextRequestId");var ot=class{static{i(this,"StableBoundaryTracker")}state;hasReceivedFirstDelta=!1;currentToolInputId;constructor(){this.state=this.createInitialState()}beginRequest(t,o,n,r=1,s=!1){this.state={requestId:oi(),provider:t,model:o,attempt:r,lastStableMessageIndex:n.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),n=t.slice(0,o),r=[...this.state.pendingToolCallIds],s=[...this.state.executedToolCallIds];return{messages:n,droppedToolCallIds:r,executedToolCallIds:s}}reset(){this.state=this.createInitialState(),this.hasReceivedFirstDelta=!1,this.currentToolInputId=void 0}createInitialState(){return{requestId:oi(),provider:"",model:"",attempt:1,lastStableMessageIndex:0,executedToolCallIds:[],pendingToolCallIds:[],visibleLiveTextLength:0,visibleThinkingLength:0,fallbackUsed:!1,startedAt:Date.now()}}};function Ot(e,t,o){if(e.length===0)return[];let n=tc(e,o),r=oc(n),s=t.filter(a=>!r.includes(a));return s.length>0?nc(n,s):n}i(Ot,"reconstructMessagesWithToolGuard");function tc(e,t){if(t.length===0)return[...e];let o=new Set(t);return e.map(n=>{if(typeof n.content=="string")return n;let r=n.content.filter(s=>s.type==="tool_use"?!o.has(s.id):s.type==="tool_result"?!o.has(s.tool_use_id):!0);return r.length===0?{...n,content:[{type:"text",text:""}]}:{...n,content:r}})}i(tc,"filterIncompleteToolCalls");function oc(e){let t=[];for(let o of e)if(typeof o.content!="string")for(let n of o.content)n.type==="tool_result"&&t.push(n.tool_use_id);return t}i(oc,"collectToolResultIds");function nc(e,t){let o=[...e],n=t.map(r=>({type:"tool_result",tool_use_id:r,content:"[Result preserved from previous attempt - tool already executed]"}));return n.length>0&&o.push({role:"user",content:n}),o}i(nc,"appendMissingToolResults");var rc=["before_request_accepted","before_first_delta"],ic=["stream_idle_timeout","chunk_timeout","incomplete_stream","connection_failure"],nt=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,n){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(n>=this.config.maxRetries)return{action:"manual_continue",ladderStep:4,delayMs:0,maxDelayMs:this.config.maxRetryDelayMs,shouldUseNonStreaming:!1,reasonCode:o.errorClass,failureStage:o.failureStage};let r=ac(o.baseRetryDelay,n,this.config.maxRetryDelayMs),s=cc(t),a=s!==void 0?Math.min(s,this.config.maxRetryDelayMs):r,{action:l,ladderStep:d,shouldUseNonStreaming:u}=this.selectRecoveryStrategy(o,n);return{action:l,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 n=t.failureStage,r=t.errorClass;return ic.includes(r)&&this.config.enableNonStreamingFallback&&!this.nonStreamingFallbackUsed&&o>=2?(this.nonStreamingFallbackUsed=!0,{action:"non_streaming_fallback",ladderStep:3,shouldUseNonStreaming:!0}):rc.includes(n)?{action:"fresh_connection_retry",ladderStep:1,shouldUseNonStreaming:!1}:{action:"stable_boundary_retry",ladderStep:2,shouldUseNonStreaming:!1}}executeFreshConnectionRetry(t,o){let n=this.boundaryTracker.snapshot();return{messages:[...t],droppedToolCallIds:[],executedToolCallIds:[...n.executedToolCallIds],fallbackUsed:this.nonStreamingFallbackUsed}}executeStableBoundaryRetry(t,o){let n=this.boundaryTracker.recoverToStableBoundary(t);return{messages:Ot(n.messages,n.executedToolCallIds,n.droppedToolCallIds),droppedToolCallIds:n.droppedToolCallIds,executedToolCallIds:n.executedToolCallIds,fallbackUsed:this.nonStreamingFallbackUsed}}executeNonStreamingFallback(t,o){let n=this.boundaryTracker.recoverToStableBoundary(t);return{messages:Ot(n.messages,n.executedToolCallIds,n.droppedToolCallIds),droppedToolCallIds:n.droppedToolCallIds,executedToolCallIds:n.executedToolCallIds,fallbackUsed:!0}}executeManualContinue(t,o){let n=this.boundaryTracker.snapshot();return{messages:[...t],droppedToolCallIds:[...n.pendingToolCallIds],executedToolCallIds:[...n.executedToolCallIds],fallbackUsed:this.nonStreamingFallbackUsed}}executeSanitizeThinking(t,o){let n=this.boundaryTracker.snapshot();return{messages:sc(t),droppedToolCallIds:[],executedToolCallIds:[...n.executedToolCallIds],fallbackUsed:this.nonStreamingFallbackUsed}}reset(){this.nonStreamingFallbackUsed=!1,this.thinkingSanitizationUsed=!1}};function sc(e){return e.map(t=>{if(t.role!=="assistant"||typeof t.content=="string"||!Array.isArray(t.content))return t;let o=t.content.filter(n=>n.type!=="thinking"&&n.type!=="redacted_thinking");return o.length===0?{...t,content:[{type:"text",text:""}]}:{...t,content:o}})}i(sc,"sanitizeThinkingBlocks");function ac(e,t,o){let n=e*Math.pow(2,t-1),r=Math.random()*1e3;return Math.min(n+r,o)}i(ac,"calculateRetryDelay");function cc(e){if("retryAfter"in e&&typeof e.retryAfter=="number")return e.retryAfter*1e3}i(cc,"extractServerRetryAfter");var Dt=process.env.KODAX_DEBUG_STREAM==="1"||process.env.KODAX_DEBUG_RESILIENCE==="1";function _o(e,t){Dt&&I({source:"coding:resilience",level:"debug",message:"classify",detail:{rawError:e.message,errorClass:t.errorClass,failureStage:t.failureStage,retryable:t.retryable,maxRetries:t.maxRetries}})}i(_o,"telemetryClassify");function Ao(e,t){Dt&&I({source:"coding:resilience",level:"debug",message:"decision",detail:{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(Ao,"telemetryDecision");function Mo(e){Dt&&I({source:"coding:resilience",level:"debug",message:"boundary",detail:{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(Mo,"telemetryBoundary");function Nt(e,t){Dt&&I({source:"coding:resilience",level:"debug",message:"recovery",detail:{action:e,droppedToolCallIds:t.droppedToolCallIds,executedToolCallIds:t.executedToolCallIds,fallbackUsed:t.fallbackUsed}})}i(Nt,"telemetryRecovery");function rt(e,t){if(!t||t.length===0)return e;let o=[{type:"text",text:e}];for(let n of t){if(n.kind!=="image")throw new mo("MODEL_INPUT_UNSUPPORTED",`${n.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:n.path,mediaType:n.mediaType})}return o}i(rt,"buildPromptMessageContent");function Io(e){return e._truncated===!0||e._salvaged===!0&&Kr(e.name)}i(Io,"isUntrustedSalvage");function ri(e){let t=[];for(let o of e){if(Io(o)){t.push(`${o.name}: incomplete input (salvaged from malformed/truncated JSON)`);continue}let n=It(o.name),r=o.input??{};for(let s of n)(r[s]===void 0||r[s]===null||r[s]==="")&&t.push(`${o.name}: missing '${s}'`)}return t}i(ri,"checkIncompleteToolCalls");function pe(e){return typeof e=="number"&&Number.isFinite(e)&&e>=0}i(pe,"isFiniteNonNegative");function ii(e){return!(!e||!pe(e.inputTokens)||!pe(e.outputTokens)||!pe(e.totalTokens)||e.totalTokens<e.inputTokens||e.totalTokens<e.outputTokens||e.cachedReadTokens!==void 0&&!pe(e.cachedReadTokens)||e.cachedWriteTokens!==void 0&&!pe(e.cachedWriteTokens)||e.thoughtTokens!==void 0&&!pe(e.thoughtTokens))}i(ii,"hasValidTokenUsage");function Ft(e){let t=w(e);return{currentTokens:t,baselineEstimatedTokens:t,source:"estimate"}}i(Ft,"createEstimatedContextTokenSnapshot");function lc(e,t){let o=w(e);return{currentTokens:t.inputTokens,baselineEstimatedTokens:o,source:"api",usage:t}}i(lc,"createApiContextTokenSnapshot");function si(e,t){return ii(t)?{currentTokens:t.totalTokens,baselineEstimatedTokens:w(e),source:"api",usage:t}:Ft(e)}i(si,"createCompletedTurnTokenSnapshot");function Po(e,t){return ii(t)?lc(e,t):Ft(e)}i(Po,"createContextTokenSnapshot");function it(e,t){let o=w(e);if(!t||!pe(t.currentTokens)||!pe(t.baselineEstimatedTokens))return o;let n=t.currentTokens+(o-t.baselineEstimatedTokens);return!Number.isFinite(n)||n<0?o:Math.round(n)}i(it,"resolveContextTokenCount");function A(e,t){return{currentTokens:it(e,t),baselineEstimatedTokens:w(e),source:t?.source??"estimate",usage:t?.usage}}i(A,"rebaseContextTokenSnapshot");function ai(e,t){let o=w(e);return{currentTokens:o,baselineEstimatedTokens:o,source:t?.source??"estimate"}}i(ai,"recomputeContextTokenSnapshot");function Zm(e,t=400){return e.length<=t?e:`${e.slice(0,Math.max(0,t-3))}...`}i(Zm,"truncateText");function ci(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(ci,"extractMessageText");function uc(e){return e==="running"||e==="planned"}i(uc,"isUnconvergedVerdict");function dc(e){let t=e.trim();return t===""||t==="..."}i(dc,"isPlaceholderOnlyAssistantText");function mc(e){let t=ci(e);return dc(t)?"":t}i(mc,"extractFinalAssistantText");function af(e,t,o){if(!e.messages)return e;let n=mc(e);if(uc(e.managedTask?.verdict?.status)||e.interrupted&&!n)return e;let r=t.context?.inputArtifacts,s=e.artifactLedger??To(e.messages),a=fc(e.messages,o,n,r),l=e.contextTokenSnapshot?ai(a,e.contextTokenSnapshot):void 0;return{...e,messages:a,artifactLedger:s,contextTokenSnapshot:l}}i(af,"reshapeToUserConversation");function fc(e,t,o,n){let r=e,s=r[0];s?.role==="system"&&typeof s.content=="string"&&!s.content.startsWith(bo)&&(r=r.slice(1)),r=Oo(r);let l=!r.some(u=>u.role==="user"&&Lt(u)===t);l&&r[0]?.role==="system"&&typeof r[0].content=="string"&&r[0].content.startsWith(bo)&&r.some(c=>c.role==="user")&&(l=!1),l&&(r=[...r,{role:"user",content:rt(t,n)}]);let d=r[r.length-1];return d?.role==="assistant"&&typeof d.content=="string"&&d.content===o||(d?.role==="assistant"?r=[...r.slice(0,-1),{role:"assistant",content:o}]:r=[...r,{role:"assistant",content:o}]),[...r]}i(fc,"preserveTranscriptForRoundExit");function Oo(e){let t=e.length;for(;t>=2;){let o=e[t-2],n=e[t-1];if(o.role==="user"&&n.role==="assistant"&&gc(o)){t-=2;continue}break}return e.slice(0,t)}i(Oo,"normalizeLoadedSessionMessages");var pc=/^\s*You are the (Scout|Planner|Generator|Evaluator) role\b/;function gc(e){if(e.role!=="user")return!1;let t=typeof e.content=="string"?e.content:hc(e.content);return pc.test(t)}i(gc,"isRolePromptShapedUser");function hc(e){let t=e[0];return t?.type==="text"&&typeof t.text=="string"?t.text:""}i(hc,"extractLeadingTextBlock");function ni(e){return typeof e=="string"?e:e.filter(t=>t.type==="text").map(t=>t.text).join(`
|
|
3
3
|
`)}i(ni,"extractPromptComparableText");function Lt(e){if(!(!e||e.role!=="user"))return ni(e.content)}i(Lt,"extractComparableUserMessageText");async function li(e,t){if(e.session?.initialMessages&&e.session.initialMessages.length>0){let o=[...e.session.initialMessages],r=!(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:ho(o),errorMetadata:r?.errorMetadata,loadedExtensionState:e.session.initialExtensionState??r?.extensionState,loadedExtensionRecords:e.session.initialExtensionRecords??r?.extensionRecords}}if(e.session?.storage&&t){let o=await e.session.storage.load(t);if(o)return{messages:Oo(o.messages),title:o.title,errorMetadata:o.errorMetadata,loadedExtensionState:o.extensionState,loadedExtensionRecords:o.extensionRecords}}return{messages:[],title:""}}i(li,"resolveInitialMessages");function ui(e,t,o,n){let r=e[e.length-1];return Lt(r)===t?n!==void 0&&r!==void 0&&r.turnId===void 0?[...e.slice(0,-1),{...r,turnId:n}]:e:[...e,{role:"user",content:rt(t,o),...n!==void 0?{turnId:n}:{},timestamp:new Date().toISOString()}]}i(ui,"appendPromptIfNotDuplicate");async function di(e){let t=e.session?.id;if(t)return t;if(!(e.session?.autoResume||e.session?.resume))return;let n=e.session?.storage;if(!n?.list)return;let r=await n.list(e.context?.gitRoot??void 0);return r.length>0?r[0].id:void 0}i(di,"discoverAutoResumeSessionId");function yc(e){return On(e)?"builtin":Nn(e)?"runtime":Dn(e)?"custom":"unknown"}i(yc,"detectProviderSourceKind");function Tc(e,t){return e?e.getCapabilityProfile():t??{transport:"native-api",conversationSemantics:"full-history",mcpSupport:"none"}}i(Tc,"resolveCapabilityProfile");function bc(e,t,o){return e?e.getReasoningCapability(t):o??"unknown"}i(bc,"resolveReasoningCapability");function xc(e){let t=Pn(Tc(e.provider,e.capabilityProfile));return{provider:e.providerName,model:e.model,sourceKind:yc(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:bc(e.provider,e.model,e.reasoningCapability)}}i(xc,"buildProviderCapabilitySnapshot");function vc(e){return!!e?.inputArtifacts?.some(t=>t.kind==="image")}i(vc,"detectMultimodalContext");function kc(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(kc,"inferPromptPolicyHints");function Oe(...e){return e.find(t=>t!==void 0)}i(Oe,"pickBoolean");function Rc(e){let t=e.context??e.options?.context,o=kc(e.prompt);return{longRunning:Oe(e.hints?.longRunning,t?.providerPolicyHints?.longRunning,o.longRunning),harnessProfile:e.hints?.harnessProfile??t?.providerPolicyHints?.harnessProfile,evidenceHeavy:Oe(e.hints?.evidenceHeavy,t?.providerPolicyHints?.evidenceHeavy,o.evidenceHeavy),multimodal:Oe(e.hints?.multimodal,t?.providerPolicyHints?.multimodal,vc(t),o.multimodal),capabilityRuntime:Oe(e.hints?.capabilityRuntime,t?.providerPolicyHints?.capabilityRuntime,o.capabilityRuntime),mcpRequired:Oe(e.hints?.mcpRequired,t?.providerPolicyHints?.mcpRequired,o.mcpRequired),brainstorm:Oe(e.hints?.brainstorm,t?.providerPolicyHints?.brainstorm,o.brainstorm),workIntent:e.hints?.workIntent??t?.providerPolicyHints?.workIntent??o.workIntent}}i(Rc,"resolveProviderPolicyHints");function ge(e,t){e.some(o=>o.code===t.code)||e.push(t)}i(ge,"pushIssue");function wc(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 n of t)o.add(n.detail);return Array.from(o)}i(wc,"buildRoutingNotes");function Sc(e){return e.length===0?"No provider-policy constraints detected.":e.map(t=>`${t.severity.toUpperCase()}: ${t.summary}`).join(" | ")}i(Sc,"summarizeIssues");function mi(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(mi,"buildProviderPolicyPromptNotes");function Ut(e){let t=xc({providerName:e.providerName,model:e.model,provider:e.provider,capabilityProfile:e.capabilityProfile,reasoningCapability:e.reasoningCapability}),o=Rc(e),n=[];return o.multimodal&&t.multimodalSupport==="none"&&ge(n,{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"?ge(n,{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"&&ge(n,{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"?ge(n,{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")&&ge(n,{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"&&ge(n,{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"&&ge(n,{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")&&ge(n,{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:n.some(a=>a.severity==="block")?"block":n.length>0?"warn":"allow",snapshot:t,issues:n,routingNotes:wc(t,n),summary:Sc(n)}}i(Ut,"evaluateProviderPolicy");var Ec="off",Cc=.4,_c=.42,Ac=.45,fi=.5,Mc=.06,Ic=.04,Pc=.86,Oc=.75,Dc=.49,Nc=.5;var Lc=["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"],Fc=["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"],Uc=["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"],Do={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"]},Bc=2,$c=4,Hc=6,qc=10,No=1200;var Wc=30,Ri=4e3;function wi(e){return e.reasoningMode?e.reasoningMode:e.thinking===!0?"auto":e.thinking===!1?"off":Ec}i(wi,"resolveReasoningMode");function jc(e){return Mn(e)}i(jc,"reasoningModeToDepth");var pi={none:0,minimal:0,auto:1,low:2,medium:3,high:4,xhigh:5,max:6};function gi(e){return pi[e]??pi.medium}i(gi,"effortRank");function Kc(e,t){let o=gi(e),n=gi(t);return o<n?-1:o>n?1:0}i(Kc,"compareEfforts");function hi(e,t){return Kc(e,t)>0?t:e}i(hi,"clampEffort");function kf(e,t){if(e==="none")return"none";if(!t)return e;let o=t.default?ve(t.default):e,n=t.max?hi(o,ve(t.max)):o;return hi(n,e)}i(kf,"resolveRoleEffort");var Gc=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"]),Xc=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 zc(e,t){if(!e)return{category:null,matched:null};let o=e.toLowerCase();if(t)for(let n of Gc){let r=n.toLowerCase();if(o.includes(r)||e.includes(n))return{category:"doubt",matched:n}}for(let n of Xc){let r=n.toLowerCase();if(o.includes(r)||e.includes(n))return{category:"deepen",matched:n}}return{category:null,matched:null}}i(zc,"detectFollowupSignal");function Yc(e){switch(e){case"auto":return"low";case"low":return"medium";case"medium":return"high";default:return e}}i(Yc,"escalateEffort");function Vc(e,t,o){let n=zc(t,o);if(n.category===null)return{effective:e,escalated:!1,signal:n};let r=Yc(e);return r===e?{effective:e,escalated:!1,signal:n}:{effective:r,escalated:!0,signal:n}}i(Vc,"applyFollowupEscalation");function Si(e,t){let o=e.effort??ve(wi(e)),r=(e.session?.initialMessages??[]).some(a=>a?.role==="assistant"),s=Vc(o,t,r);return s.escalated?{options:{...e,effort:s.effective},escalation:s}:{options:e,escalation:s}}i(Si,"applyFollowupEscalationToOptions");var Qc={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 Zc(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}i(Zc,"escapeRegExp");function Jc(e){return/^[a-z0-9][a-z0-9 _-]*$/i.test(e)}i(Jc,"hasAsciiWordBoundaries");function L(e,t){if(!t)return!1;let o=t.trim();return o?Jc(o)?new RegExp(`(^|[^a-z0-9])${Zc(o)}([^a-z0-9]|$)`,"i").test(e):e.includes(t):!1}i(L,"textHasKeyword");function el(e,t){let o=0;for(let n of t)n&&L(e,n)&&(o+=n.length>=6||/[^\u0000-\u007f]/.test(n)?2:1);return o}i(el,"scoreTaskTypeKeywords");var tl=/^(?:\s|[!,.?,。!?])*?(?:hi|hello|hey|yo|你好|嗨|哈喽|早上好|下午好|晚上好)(?:\s|[!,.?,。!?])*$/i,ol=/\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 nl=/\b(review|code review|audit|pr|pull request|merge blocker|look at the changes|changed files)\b/i;var rl=/\b(plan|design|architecture|proposal|strategy|roadmap)\b/i;var il=/\b(debug|investigate|root cause|why is|why does|failing|failure|runtime error|stack trace|traceback)\b/i;var sl=/\b(implement|add|change|modify|update|create|write|fix|refactor|rewrite|replace)\b/i;var al=/\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 cl=/\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,ll=/(?: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,ul=/\b(?:implementation|source code|code comments?|function|class|component|bug|script|tests?|ui)\b/i,dl=/\u4ee3\u7801\u6ce8\u91ca|\u5b9e\u73b0|\u51fd\u6570|\u7c7b|\u7ec4\u4ef6|bug|\u811a\u672c|\u6d4b\u8bd5|\u754c\u9762/u,ml=/\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,fl=/\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,pl=/\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 gl=/\b(code|implementation|function|class|component|module|endpoint|service|repo|repository|file|files|test|bug|feature|script|api|ui|backend|frontend)\b/i;var hl=/\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 yl=/^(?:\s|[!,.?,。!]*)?(?:你好|哈喽|早上好|下午好|晚上好)(?:\s|[!,.?,。!]*)*$/u,Tl=/在哪个文件|哪个文件|在哪定义|定义在|哪个函数|哪个组件|文件位置|在哪里/u,bl=/审查|评审|review一下|看下改动|代码改动|审阅/u,xl=/计划|设计|架构|方案|策略|路线图/u,vl=/排查|定位问题|根因|为什么|报错|错误|异常|失败/u,kl=/实现|新增|修改|创建|写一个|修复|重构|改一下|替换/u,Rl=/文档|说明文档|设计文档|需求文档|PRD|ADR|HLD|DD|CHANGELOG|README|功能清单|已知问题/u,wl=/再检查|再审查|双重检查|第二遍|第二轮|二次审查|交叉检查|独立验证|独立审查|更强审查/u,yi=/代码|实现|函数|类|组件|模块|接口|服务|仓库|文件|测试|bug|功能|脚本|API|界面|后端|前端/u,Sl=/部署|重启|重启服务|迁移数据库|运行迁移|初始化数据库|安装依赖|升级依赖|杀进程|启动服务|停止服务|应用terraform/u,El=/代码|实现|函数|类|组件|模块|接口|bug|功能|前端|后端|脚本/u,Ti=/实现|新增|修改|更新|创建|编写|修复|重构|补丁|重写|替换|编辑|重命名/u;function Cl(e){return tl.test(e)||yl.test(e)}i(Cl,"isGreetingOnlyPrompt");function Lo(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(Cl(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=ol.test(t)||Tl.test(t),n=nl.test(t)||bl.test(t),r=rl.test(t)||xl.test(t),s=il.test(t)||vl.test(t),a=sl.test(t)||kl.test(t);return n?{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."}:r?{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(Lo,"inferIntentGate");function Bt(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(Bt,"inferTaskFamilyFromPrimaryTask");function Ei(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(Ei,"defaultExecutionPatternForFamily");function _l(e,t){let o=Lo(e),n=t.taskFamily??Bt(t.primaryTask),r=t.actionability??(n==="conversation"?"non_actionable":n==="ambiguous"?o.actionability:"actionable"),s=t.executionPattern??Ei(n);return{taskFamily:n,actionability:r,executionPattern:s}}i(_l,"deriveIntentFields");function Ci(e,t){let o=` ${e.toLowerCase()} `,n=/[\u3400-\u9fff]/u.test(e),r=al.test(e)||n&&Rl.test(e),s=cl.test(e)||n&&ll.test(e),a=ul.test(e)||n&&dl.test(e),l=ml.test(e)||n&&fl.test(e),d=hl.test(e)||n&&Sl.test(e),u=gl.test(o)||n&&yi.test(e),m=/\b(code|implementation|function|class|component|module|endpoint|service|bug|script|api|ui|backend|frontend)\b/i.test(o)||n&&yi.test(e),c=/\b(implement|add|modify|update|create|write|fix|refactor|rewrite|replace|edit|patch|rename)\b/i.test(o)||n&&Ti.test(e),p=n&&El.test(e),S=n&&Ti.test(e),R=/\b(monorepo|repo|repository|package|packages|architecture|migration)\b/i.test(o),E=/\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)||p,G=/\b(implement|add|modify|update|create|write|fix|refactor|rewrite|replace|edit|patch|rename)\b/i.test(o)||S,_=f&&!s||a,$=R&&!s,U=r&&!d&&l;if(t.primaryTask==="review"&&!G&&!d)return r&&(U||!_)?"docs-only":"read-only";let X=t.primaryTask==="edit"||t.primaryTask==="refactor"||t.taskFamily==="implementation"||t.primaryTask==="bugfix"&&G||G&&_||E&&$;return U&&t.primaryTask!=="refactor"||r&&!d&&!_&&t.primaryTask!=="refactor"?"docs-only":d?"system":X?"code":"read-only"}i(Ci,"deriveMutationSurface");function Al(e,t){let o=/[\u3400-\u9fff]/u.test(e);return pl.test(e)||o&&wl.test(e)||t.recommendedMode==="strict-audit"?"explicit-check":"default"}i(Al,"deriveAssuranceIntent");function _i(e){let t=` ${e.toLowerCase()} `,n=[...Object.entries(Qc).map(([l,d])=>({task:l,score:el(t,d)}))].sort((l,d)=>d.score-l.score),r=n[0],s=n[1];if(!r||r.score===0)return{task:"unknown",confidence:Cc,reason:"Fallback task inference did not find enough strong signals, so it kept the task as unknown."};if(s&&r.score===s.score){let l=Ml(e,r.task,s.task);return l?{task:l,confidence:fi,reason:`Fallback task inference preferred "${l}" because the request used an explicit directive even though multiple task signals were present.`}:{task:"unknown",confidence:_c,reason:`Fallback task inference saw competing signals for "${r.task}" and "${s.task}", so it kept the task as unknown.`}}if(r.task==="qa"&&r.score<4)return{task:"unknown",confidence:Ac,reason:"Fallback task inference saw a weak explanation-style signal, but not enough evidence to disable reasoning."};let a=Math.min(Pc,fi+r.score*Mc+Math.max(0,(r.score-(s?.score??0))*Ic));return{task:r.task,confidence:a,reason:`Fallback task inference selected "${r.task}" from textual signals in the request.`}}i(_i,"inferTaskSignal");function Ml(e,t,o){let n=` ${e.toLowerCase()} `,r=L(n,"review")||L(n,"code review")||L(n,"merge blocker")||L(n,"\u5BA1\u67E5")||L(n,"\u8BC4\u5BA1"),s=L(n,"fix")||L(n,"bug")||L(n,"\u4FEE\u590D")||L(n,"\u62A5\u9519"),a=L(n,"plan")||L(n,"design")||L(n,"\u65B9\u6848")||L(n,"\u8BA1\u5212");return(t==="review"||o==="review")&&r&&!s?"review":(t==="bugfix"||o==="bugfix")&&s&&!r?"bugfix":(t==="plan"||o==="plan")&&a?"plan":null}i(Ml,"resolveTiedTask");function Rf(e){return _i(e).task}i(Rf,"inferTaskType");function $t(e){switch(e){case"simple":return 0;case"moderate":return 1;case"complex":return 2;case"systemic":return 3;default:return 0}}i($t,"complexityRank");function Il(e,t){return t&&$t(t)>$t(e)?t:e}i(Il,"maxComplexity");function Pl(e,t,o){let n=Lo(e);if(!n.requiresRoutingHeuristics){let a=n.primaryTask;return ki(e,{primaryTask:a,confidence:n.actionability==="non_actionable"?.98:.9,riskLevel:"low",recommendedMode:xi(a),recommendedThinkingDepth:bi(a),complexity:"simple",workIntent:"new",requiresBrainstorm:!1,harnessProfile:"H0_DIRECT",taskFamily:n.taskFamily,actionability:n.actionability,executionPattern:n.executionPattern,routingSource:"fallback",routingAttempts:1,reason:n.reason},t,o)}let r=_i(e),s=r.task;return ki(e,{primaryTask:s,taskFamily:Bt(s),actionability:s==="unknown"?"ambiguous":"actionable",executionPattern:Ei(Bt(s)),confidence:r.confidence,riskLevel:Pi(e,s),recommendedMode:xi(s),recommendedThinkingDepth:bi(s),complexity:"moderate",workIntent:"new",requiresBrainstorm:!1,harnessProfile:"H0_DIRECT",routingSource:"fallback",routingAttempts:1,reason:r.reason},t,o)}i(Pl,"buildFallbackRoutingDecision");function Ai(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(Ai,"buildProviderPolicyHintsForDecision");async function Mi(e,t,o,n){let r=wi(e),s=Lo(t),a=Ut({providerName:o.name,model:e.modelOverride??e.model,provider:o,prompt:t,options:e,reasoningMode:r}),l=Pl(t,a,n),d=e.effort??ve(r),u=r==="off"?"off":r==="auto"?l.recommendedThinkingDepth:jc(r),m={...l,recommendedThinkingDepth:u,routingNotes:[...l.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(Mi,"createReasoningPlan");function Ii(e,t=.5){return Number.isFinite(e)?Math.max(0,Math.min(1,e)):t}i(Ii,"clampUnitInterval");function Ol(e,t){let o=` ${e.toLowerCase()} `;return Uc.some(n=>L(o,n))?"overwrite":Fc.some(n=>L(o,n))?"append":t}i(Ol,"inferWorkIntent");function Dl(e,t){let o=` ${e.toLowerCase()} `,n=0;for(let r of Do.moderate)L(o,r)&&(n+=1);for(let r of Do.complex)L(o,r)&&(n+=2);for(let r of Do.systemic)L(o,r)&&(n+=3);return(t.primaryTask==="refactor"||t.primaryTask==="plan")&&(n+=2),t.riskLevel==="high"&&(n+=2),t.workIntent==="overwrite"&&(n+=1),n>=Hc?"systemic":n>=$c?"complex":n>=Bc?"moderate":"simple"}i(Dl,"inferComplexity");function Nl(e,t,o){let n=` ${e.toLowerCase()} `;return!!(Lc.some(r=>L(n,r))||t.primaryTask==="plan"||t.primaryTask==="unknown"&&t.confidence<.7||o==="systemic"||t.workIntent==="overwrite"&&(t.primaryTask==="refactor"||t.riskLevel==="high"))}i(Nl,"inferRequiresBrainstorm");function Ll(e,t){let o=t.taskFamily??Bt(t.primaryTask),n=Ci(e,{primaryTask:t.primaryTask,taskFamily:o}),r=[];return(t.complexity==="complex"||t.complexity==="systemic")&&r.push(`Complexity hint: ${t.complexity}. Assess whether the recommended harness fits the task scope.`),t.needsIndependentQA&&r.push("Independent QA was inferred from prompt signals. Verify whether explicit verification artifacts are needed before declaring the task done."),t.requiresBrainstorm&&r.push("Brainstorm/planning signal detected. Judge whether to plan-first via todo_update before executing."),n==="system"&&(t.riskLevel==="high"||t.workIntent==="overwrite")&&r.push("High-risk system mutation detected. Proceed with caution; consider checkpointing intermediate state."),{harnessProfile:"H0_DIRECT",upgradeCeiling:"H0_DIRECT",notes:r}}i(Ll,"selectHarnessProfile");function bi(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(bi,"getDefaultDepthForTask");function xi(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(xi,"getExecutionModeForTask");function Pi(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(Pi,"getRiskLevel");function Fl(e,t,o){let n=.9,r=` ${e.toLowerCase()} `;return t.primaryTask==="review"?(n-=.12,t.reviewScale==="large"?n-=.16:t.reviewScale==="massive"&&(n-=.28)):t.primaryTask==="bugfix"?n-=.08:t.primaryTask==="plan"&&(n-=.24),t.riskLevel==="medium"?n-=.12:t.riskLevel==="high"&&(n-=.26),t.complexity==="moderate"?n-=.12:t.complexity==="complex"?n-=.28:t.complexity==="systemic"&&(n-=.42),t.requiresBrainstorm&&(n-=.18),t.workIntent==="overwrite"&&(n-=.08),/\b(strict review|must[- ]fix|independently verify|browser test|playwright|e2e|frontend verify)\b/.test(r)&&(n-=.2),o&&(o.changedFileCount>=3&&(n-=.12),o.changedLineCount>=No&&(n-=.14),o.changedLineCount>=Ri&&(n-=.14),o.touchedModuleCount>=2&&(n-=.16),(o.impactedModuleCount??0)>=2&&(n-=.14),o.crossModule&&(n-=.2),o.lowConfidence&&(n-=.08)),Ii(n,.5)}i(Fl,"computeSoloBoundaryConfidence");function Ul(e,t,o){let n=` ${e.toLowerCase()} `;return!!(/\b(must[- ]fix|strict review|audit|independently verify|browser test|playwright|e2e|console errors?|api check|db check)\b/.test(n)||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>=No))}i(Ul,"computeNeedsIndependentQA");function Bl(e,t,o,n){let r=e.recommendedMode,s=e.recommendedThinkingDepth,a=[];return n?(n.suggestedComplexity&&$t(n.suggestedComplexity)>$t(t)&&a.push(`Repository intelligence elevated task complexity to ${n.suggestedComplexity} (changedFiles=${n.changedFileCount}, touchedModules=${n.touchedModuleCount}, impactedModules=${n.impactedModuleCount??0}).`),n.crossModule&&a.push("Repository intelligence indicates cross-module impact; keep evidence and merge boundaries explicit."),n.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."),n.investigationBias&&(e.primaryTask==="review"||e.primaryTask==="bugfix")&&r!=="investigation"?(r="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.")):n.plannerBias&&e.primaryTask!=="review"&&e.primaryTask!=="bugfix"&&r==="implementation"&&(o==="complex"||o==="systemic")&&(r="planning",(s==="off"||s==="low")&&(s="medium"),a.push("Repository intelligence shifted execution toward planning because the task spans multiple modules or dependencies.")),{recommendedMode:r,recommendedThinkingDepth:s,repoNotes:a}):{recommendedMode:r,recommendedThinkingDepth:s,repoNotes:a}}i(Bl,"applyRepoSignalsToDecision");function vi(e,t){let o=t.exec(e);if(!o?.[1])return;let n=o[1].replace(/,/g,"").toLowerCase(),r=n.endsWith("k")?1e3:1,s=n.endsWith("k")?n.slice(0,-1):n,a=Number.parseFloat(s);if(!(!Number.isFinite(a)||a<=0))return Math.round(a*r)}i(vi,"parsePromptInteger");function $l(e){let t=vi(e,/(?:^|[\s(,])(\d[\d,]*(?:\.\d+)?k?)\s*(?:changed\s+)?files?\b/i),o=vi(e,/(?:^|[\s(,])(\d[\d,]*(?:\.\d+)?k?)\s*(?:changed\s+)?lines?\b/i),n;return(t??0)>=Wc||(o??0)>=Ri?n="massive":((t??0)>=qc||(o??0)>=No)&&(n="large"),{changedFileCount:t,changedLineCount:o,reviewScale:n}}i($l,"inferPromptReviewScale");function Hl(e,t){return e?.reviewScale?e.reviewScale:$l(t??"").reviewScale}i(Hl,"deriveReviewScaleFromSignals");function ki(e,t,o,n){let r=t,s=_l(e,t),a=s.actionability==="actionable"&&s.taskFamily!=="conversation"&&s.taskFamily!=="lookup";t.primaryTask==="unknown"&&s.taskFamily==="ambiguous"&&(r={...t,recommendedMode:"implementation",recommendedThinkingDepth:"medium",reason:`${t.reason} Conservative fallback keeps balanced reasoning for ambiguous tasks.`}),r.primaryTask==="qa"&&r.confidence<Oc&&(r={...r,primaryTask:"unknown",confidence:Math.min(r.confidence,Dc),riskLevel:Pi(e,"unknown"),recommendedMode:"implementation",recommendedThinkingDepth:"medium",reason:`${r.reason} Low-confidence QA routing was downgraded to unknown so reasoning stays available.`}),r.confidence<Nc&&r.recommendedThinkingDepth==="off"&&(r={...r,primaryTask:"unknown",recommendedMode:"implementation",recommendedThinkingDepth:"medium",reason:`${r.reason} Low-confidence off-mode routing was upgraded to balanced reasoning for safety.`});let l=Ol(e,r.workIntent),d=a?n?.repoSignals:void 0,u=Dl(e,{...r,workIntent:l}),m=a?Il(u,d?.suggestedComplexity):u,c=t.reviewScale??Hl(d,e),p=Ci(e,{primaryTask:r.primaryTask,taskFamily:s.taskFamily}),S=Al(e,r),R="H0_DIRECT",E=Nl(e,{...r,workIntent:l,complexity:m,reviewScale:c,mutationSurface:p,assuranceIntent:S,topologyCeiling:R},m)||!!(d?.plannerBias&&(m==="complex"||m==="systemic")),f=Ii(t.soloBoundaryConfidence??Fl(e,{primaryTask:r.primaryTask,complexity:m,riskLevel:r.riskLevel,requiresBrainstorm:E,workIntent:l,reviewScale:c},d),.5),G=t.needsIndependentQA??Ul(e,{primaryTask:r.primaryTask,complexity:m,riskLevel:r.riskLevel,requiresBrainstorm:E,reviewScale:c},d),_=p==="read-only"||p==="docs-only"?S==="explicit-check":G,$=Ll(e,{...r,workIntent:l,complexity:m,requiresBrainstorm:E,reviewScale:c,soloBoundaryConfidence:f,needsIndependentQA:_,mutationSurface:p,assuranceIntent:S,topologyCeiling:R}),{recommendedMode:U,recommendedThinkingDepth:X,repoNotes:oe}=Bl({...r,taskFamily:s.taskFamily,actionability:s.actionability,executionPattern:s.executionPattern},u,m,d),h=U,D=X,q="direct";return s.taskFamily==="conversation"?(h="conversation",D="off"):s.taskFamily==="lookup"&&(h="lookup",D=X==="high"?"medium":X),{...r,taskFamily:s.taskFamily,actionability:s.actionability,executionPattern:q,mutationSurface:p,assuranceIntent:S,recommendedMode:h,recommendedThinkingDepth:D,workIntent:l,complexity:m,requiresBrainstorm:E,topologyCeiling:R,reviewScale:c,soloBoundaryConfidence:f,needsIndependentQA:_,harnessProfile:$.harnessProfile,upgradeCeiling:$.upgradeCeiling,routingSource:r.routingSource??"fallback",routingAttempts:r.routingAttempts??1,routingNotes:[...r.routingNotes??[],...$.notes,...oe,...a?[]:["Intent gate ignored repository scaling signals for this request."]]}}i(ki,"stabilizeRoutingDecision");function Ht(e,t){return Buffer.byteLength(JSON.stringify({systemPrompt:t,messages:e}),"utf8")}i(Ht,"estimateProviderPayloadBytes");function qt(e){return e<16*1024?"small":e<64*1024?"medium":e<192*1024?"large":"xlarge"}i(qt,"bucketProviderPayloadSize");function st(e){let t=Wn.exec(e);return t?[t[1].toUpperCase(),t[2]??""]:["",""]}i(st,"checkPromiseSignal");function ql(){return process.env.KODAX_DEBUG_STREAM==="1"||process.env.KODAX_DEBUG_RESILIENCE==="1"}i(ql,"shouldDebugResilience");function P(e,t){ql()&&I({source:"coding:resilience",level:"debug",message:e,detail:t})}i(P,"emitResilienceDebug");import{randomUUID as Oi}from"node:crypto";var Fi=Symbol("KodaXLiveTurnAttributed"),Di=Symbol("KodaXLiveTurnBaseEvents"),Ni=16,Li=new Map;function Ui(e){let t=e.turnId??`turn_${Oi().replace(/-/g,"").slice(0,Ni)}`,o=e.deliveryId??`delivery_${Oi().replace(/-/g,"").slice(0,Ni)}`;return{sessionId:e.sessionId,turnId:t,deliveryId:o,deliveryKind:e.deliveryKind??"initial",promptId:e.promptId,nextMeta(){let n=(Li.get(e.sessionId)??0)+1;return Li.set(e.sessionId,n),{sessionId:e.sessionId,seq:n,turnId:t,deliveryId:o,timestamp:new Date().toISOString()}}}}i(Ui,"createLiveTurnScope");function Wl(e){return e[Fi]===!0}i(Wl,"isAttributedEvents");function Bi(e){return"current"in e?e.current:e}i(Bi,"resolveLiveTurnScope");function M(e,t){return{...t??{},...Bi(e).nextMeta()}}i(M,"withActivityMeta");function K(e,t){return{...t,...Bi(e).nextMeta()}}i(K,"withLiveMeta");function $i(e,t){let o=Wl(e)?e[Di]:e,n={...o,onSessionStart:i(r=>{o.onSessionStart?.(K(t,r))},"onSessionStart"),onTextDelta:i((r,s)=>{o.onTextDelta?.(r,M(t,s))},"onTextDelta"),onThinkingDelta:i((r,s)=>{o.onThinkingDelta?.(r,M(t,s))},"onThinkingDelta"),onThinkingEnd:i((r,s)=>{o.onThinkingEnd?.(r,M(t,s))},"onThinkingEnd"),onToolUseStart:i((r,s)=>{o.onToolUseStart?.(r,M(t,s))},"onToolUseStart"),onToolInputDelta:i((r,s,a)=>{o.onToolInputDelta?.(r,s,M(t,a))},"onToolInputDelta"),onToolProgress:i((r,s)=>{o.onToolProgress?.(r,M(t,s))},"onToolProgress"),onToolResult:i((r,s)=>{o.onToolResult?.(r,M(t,s))},"onToolResult"),onChildActivityEnd:i(r=>{o.onChildActivityEnd?.(M(t,r))},"onChildActivityEnd"),onStreamEnd:i(r=>{o.onStreamEnd?.(M(t,r))},"onStreamEnd"),onIterationStart:i((r,s,a)=>{o.onIterationStart?.(r,s,M(t,a))},"onIterationStart"),onIterationEnd:i(r=>{o.onIterationEnd?.(K(t,r))},"onIterationEnd"),onCompactStart:i(r=>{o.onCompactStart?.(M(t,r))},"onCompactStart"),onCompact:i((r,s)=>{o.onCompact?.(r,M(t,s))},"onCompact"),onCompactStats:i(r=>{o.onCompactStats?.(K(t,r))},"onCompactStats"),onCompactedMessages:i((r,s,a)=>{o.onCompactedMessages?.(r,s,M(t,a))},"onCompactedMessages"),onCompactEnd:i(r=>{o.onCompactEnd?.(M(t,r))},"onCompactEnd"),onMidTurnUserMessages:i((r,s)=>{o.onMidTurnUserMessages?.(r,M(t,s))},"onMidTurnUserMessages"),onRetry:i((r,s,a,l)=>{o.onRetry?.(r,s,a,M(t,l))},"onRetry"),onProviderRateLimit:i((r,s,a,l)=>{o.onProviderRateLimit?.(r,s,a,M(t,l))},"onProviderRateLimit"),onRetryAfter:i((r,s)=>{o.onRetryAfter?.(r,M(t,s))},"onRetryAfter"),onProviderRecovery:i((r,s)=>{o.onProviderRecovery?.(r,M(t,s))},"onProviderRecovery"),onReasoningEffortRejected:i(r=>{o.onReasoningEffortRejected?.(K(t,r))},"onReasoningEffortRejected"),onRepoIntelligenceTrace:i(r=>{o.onRepoIntelligenceTrace?.(K(t,r))},"onRepoIntelligenceTrace"),onContextBudgetSnapshot:i(r=>{o.onContextBudgetSnapshot?.(K(t,r))},"onContextBudgetSnapshot"),onToolExposurePlanned:i(r=>{o.onToolExposurePlanned?.(K(t,r))},"onToolExposurePlanned"),onContextCompactionSkipped:i(r=>{o.onContextCompactionSkipped?.(K(t,r))},"onContextCompactionSkipped"),onSidecarMessage:i(r=>{o.onSidecarMessage?.(K(t,r))},"onSidecarMessage"),onTodoUpdate:i((r,s)=>{o.onTodoUpdate?.(r,M(t,s))},"onTodoUpdate"),onTodoDriftWarning:i(r=>{o.onTodoDriftWarning?.(K(t,r))},"onTodoDriftWarning"),onManagedTaskStatus:i(r=>{o.onManagedTaskStatus?.(K(t,r))},"onManagedTaskStatus"),onEffectiveConfig:i(r=>{o.onEffectiveConfig?.(K(t,r))},"onEffectiveConfig"),onWorkflowProcessEvent:i(r=>{o.onWorkflowProcessEvent?.(K(t,r))},"onWorkflowProcessEvent"),onWorkflowAgentDigest:i(r=>{o.onWorkflowAgentDigest?.(K(t,r))},"onWorkflowAgentDigest"),onScoutSuspiciousCompletion:i(r=>{o.onScoutSuspiciousCompletion?.(K(t,r))},"onScoutSuspiciousCompletion"),onComplete:i(r=>{o.onComplete?.(M(t,r))},"onComplete"),onError:i((r,s)=>{o.onError?.(r,M(t,s))},"onError")};return Object.defineProperty(n,Fi,{value:!0,enumerable:!1}),Object.defineProperty(n,Di,{value:o,enumerable:!1}),n}i($i,"withLiveTurnAttribution");function Hi(e,t){let o={...t.nextMeta(),deliveryKind:t.deliveryKind,...t.promptId!==void 0?{promptId:t.promptId}:{}};e.onTurnStarted?.(o)}i(Hi,"emitTurnStarted");function qi(e,t,o){e.onTurnCompleted?.({...t.nextMeta(),status:o})}i(qi,"emitTurnCompleted");function Wi(e,t,o){let n={...t.nextMeta(),error:{name:o.name,message:o.message,...o.stack!==void 0?{stack:o.stack}:{}}};e.onTurnFailed?.(n)}i(Wi,"emitTurnFailed");var jl=new Set(["todo_update","todo_list","todo_create","todo_get"]);function le(e){return!_t(e)&&!jl.has(e)}i(le,"isVisibleToolName");function De(e){return e.hasPendingInputs?.()===!0?!0:qn().has({agentId:void 0,maxPriority:"user",mode:"prompt"})}i(De,"hasQueuedFollowUp");function ji(e,t){e.onSessionStart?.(t)}i(ji,"emitSessionStart");function Ne(e){e.onStreamEnd?.()}i(Ne,"emitStreamEnd");function Wt(e){e.onComplete?.()}i(Wt,"emitComplete");function Ki(e,t){e.onError?.(t)}i(Ki,"emitError");function Gi(e,t,o,n,r){if(r!==void 0){e.onProviderRateLimit?.(t,o,n,r);return}e.onProviderRateLimit?.(t,o,n)}i(Gi,"emitProviderRateLimit");function Xi(e,t,o){e.onIterationStart?.(t+1,o)}i(Xi,"emitIterationStart");function zi(e,t){let o=A(t.messages,t.snapshotOverride??t.currentSnapshot);return e.onIterationEnd?.({iter:t.iter,maxIter:t.maxIter,tokenCount:o.currentTokens,tokenSource:o.source,usage:o.usage,contextTokenSnapshot:o}),o}i(zi,"emitIterationEnd");function Yi(e,t,o){let n=e.modelSelection.provider??t.provider,r=e.modelSelection.model??t.modelOverride??t.model,s=e.thinkingLevel,a=Ye(n);if(!a.isConfigured())throw new Error(`Provider "${n}" not configured. Set ${a.getApiKeyEnv()}`);let l=St(o,a,r);return{providerName:n,modelOverride:r,thinkingLevel:s,provider:a,contextWindow:l}}i(Yi,"resolvePerTurnProvider");import{createHash as Kl}from"node:crypto";import Gl from"node:path";var Xl=/\b(forget|do not remember|don't remember|remove (?:this )?from memory|delete .{0,40}memory)\b/i,zl=/(?:\u522b\u8bb0|\u4e0d\u8981\u8bb0\u4f4f|\u5fd8\u8bb0|\u5220\u9664.{0,12}\u8bb0\u5fc6|\u4e0d\u8981\u518d\u8bb0)/u,Yl=/\b(remember this|please remember|save this to memory|add this to memory)\b/i,Vl=/(?:\u8bb0\u4f4f|\u4fdd\u5b58.{0,12}\u8bb0\u5fc6|\u52a0\u5165\u8bb0\u5fc6)/u,Ql=/\b(memory|remembered|remember|stored|previously saved|memo(?:ry)? note)\b/i,Zl=/\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,eu=/(?:\u4e0d\u662f.{0,24}\u800c\u662f|\u7ea0\u6b63|\u66f4\u6b63|\u5176\u5b9e|\u5e94\u8be5\u662f|\u4e0d\u5bf9)/u;async function Yf(e){if($o(e))return;let t=Q(e.context);try{let o=await ke({cwd:t,...e.context?.memoryIdentity!==void 0?{identity:e.context.memoryIdentity}:{},projectDocs:[],discoverSkills:!1}).maybeRunAutoCurator();(o.ran||o.skippedReason!=="not_due")&&P("[memory:maintenance]",{cwd:t,ran:o.ran,skippedReason:o.skippedReason??null,reportPath:o.reportPath??null,nextEligibleAt:o.nextEligibleAt??null})}catch(o){P("[memory:maintenance:error]",{cwd:t,error:o instanceof Error?o.message:String(o)})}}i(Yf,"maybeRunMemoryMaintenanceWindow");async function Vf(e,t){if($o(e))return;let o=e.memoryReviewer;if(o===void 0)return;let n=Fo(t);if(n===void 0)return;let r=Q(e.context),s=e.context?.rawUserInput?.trim();try{let a=await ke({cwd:r,...e.context?.memoryIdentity!==void 0?{identity:e.context.memoryIdentity}:{},projectDocs:[],discoverSkills:!1,memoryReviewer:o}).reviewMemoryFeedback({trigger:n,userFeedback:t,...s!==void 0&&s.length>0?{task:s}:{}});e.events?.onMemoryReview?.(a),P("[memory:review]",{cwd:r,trigger:n,actions:a.actions.length,candidates:a.candidateRefs.map(l=>l.ref.id)})}catch(a){P("[memory:review:error]",{cwd:r,error:a instanceof Error?a.message:String(a)})}}i(Vf,"maybeReviewMemoryFeedbackFromPrompt");function Fo(e){let t=e.trim();if(t.length!==0){if(Xl.test(t)||zl.test(t))return"explicit_forget";if(Yl.test(t)||Vl.test(t))return"explicit_remember";if(iu(t))return"user_correction"}}i(Fo,"detectMemoryReviewTrigger");function Qi(e,t,o){let n=Gl.resolve(t).toLowerCase(),r=Yn(t)?.trim(),s=r===void 0?`local:${n}`:tu(r),a=e.context?.repoRoutingSignals?.workspaceRoot??e.context?.gitRoot??n;return{tenantId:`local:${wt()}`,workspaceId:a,agentId:e.context?.agentProfile?.id??"kodax-coding",projectId:s,sessionId:o}}i(Qi,"deriveCodingMemoryIdentity");function tu(e){let t=e.trim();if(/^[a-z][a-z0-9+.-]*:\/\//i.test(t))try{let n=new URL(t);if(n.hostname.length>0&&n.pathname.length>1)return Vi(`${n.hostname.toLowerCase()}${n.port.length>0?`:${n.port}`:""}`,n.pathname)}catch{}let o=t.match(/^(?:[^@/:]+@)?([^:/]+):(.+)$/);return o!==null?Vi(o[1],o[2]):`remote-hash:${Kl("sha256").update(t,"utf8").digest("hex")}`}i(tu,"canonicalMemoryProjectId");function Vi(e,t){let o=t.replace(/^\/+|\/+$/g,"").replace(/\.git$/i,"");return`remote:${e.toLowerCase()}/${o}`}i(Vi,"canonicalRemoteIdentity");async function Uo(e,t,o,n={}){if(n.emitEvent!==!1&&e.events?.onMemoryOutcomeDigest?.(o),e.session?.persistedByHost===!0||e.session?.storage===void 0)return;let r=await e.session.storage.load(t);if(r===null)return;let s=r.lineage??Je(r.messages);await e.session.storage.save(t,{...r,lineage:Jn(s,o)})}i(Uo,"persistMemoryOutcomeToSession");async function Bo(e,t,o){if(e.events?.onMemoryReviewReceipt?.(o),e.session?.persistedByHost===!0||e.session?.storage===void 0)return;let n=await e.session.storage.load(t);if(n===null)return;let r=n.lineage??Je(n.messages);await e.session.storage.save(t,{...n,lineage:er(r,o)})}i(Bo,"persistMemoryReviewReceiptToSession");async function ou(e,t){if(e===void 0)return"defer";let o=await e.load(t.ownerSessionRef);if(o===null)return"discard";let n=o.lineage??Je(o.messages),r=n.entries.find(a=>a.type==="memory_outcome_digest"&&a.digest.reviewKey===t.reviewKey);if(r!==void 0){let a=new Set(yo(n).map(l=>l.id));return r.parentId===null||a.has(r.parentId)?"eligible":"discard"}return n.entries.some(a=>a.type==="rewind_marker"&&a.timestamp.localeCompare(t.digest.createdAt)>=0)?"discard":"eligible"}i(ou,"revalidatePendingEpisodeReview");async function Zi(e,t,o,n){if($o(e)||e.memoryReviewer===void 0||e.session?.storage===void 0)return;let r=await Zn(t,{maxEntries:2,revalidate:i(async s=>s.ownerSessionRef===n?"defer":ou(e.session?.storage,s),"revalidate"),review:i(async s=>nu(e,o,s),"review")});return(r.reviewed>0||r.discarded>0||r.failed>0)&&P("[memory:review-inbox:drain]",{...r}),r}i(Zi,"drainCodingMemoryReviewInbox");async function nu(e,t,o){await Uo(e,o.ownerSessionRef,o.digest,{emitEvent:!1});let n=await ru(t,o.digest),r=new Date().toISOString();return await Bo(e,o.ownerSessionRef,{reviewKey:o.reviewKey,proposalIds:n.proposalIds,completedAt:r}),n.appliedProposalIds.length>0&&e.events?.onMemoryNotice?.({episodeId:o.digest.id,summaries:n.plan.actions.map(s=>s.summary).slice(0,3),proposalIds:n.appliedProposalIds}),n.proposalIds}i(nu,"reviewPendingEpisode");async function ru(e,t){let o=new AbortController,n;try{return await Promise.race([e.reviewEpisode(t,o.signal),new Promise((r,s)=>{n=setTimeout(()=>{o.abort(),s(new Error("delayed memory review timed out after 30000ms"))},3e4)})])}finally{n!==void 0&&clearTimeout(n)}}i(ru,"reviewEpisodeWithTimeout");function iu(e){return Ql.test(e)&&Zl.test(e)||Jl.test(e)&&eu.test(e)}i(iu,"isMemoryCorrection");function $o(e){return e.context?.currentAgentId!==void 0||e.context?.parentAgentId!==void 0}i($o,"isInternalAgentRun");import{createHash as su}from"node:crypto";var au=6e3;function Ji(e){let t=[`Objective: ${ae(e.objective)}`,`Decision intent: ${ae(e.decisionIntent)}`];e.actionSignature!==void 0&&t.push(`Action: ${ae(e.actionSignature)}`),e.goal!==void 0&&t.push(`Goal (${ae(e.goal.status)}): ${ae(e.goal.objective)}`);for(let n of e.todoStore?.getAll()??[])n.status==="completed"||n.status==="skipped"||t.push(`Todo ${n.id} (${n.status}): ${ae(n.subject)}`);for(let n of(e.artifacts??[]).slice(-12))t.push(`Artifact ${n.kind}: ${ae(n.summary??n.displayTarget??n.target)}`);for(let n of(e.childSummaries??[]).slice(-6))t.push(`Child: ${ae(n)}`);e.verifierOutcome!==void 0&&t.push(`Verifier: ${ae(e.verifierOutcome)}`);for(let n of(e.recentOutcomeDigests??[]).slice(-6))t.push(`Outcome ${n.outcome}: ${ae(n.summary)}`);let o=cu(t);return{revision:su("sha256").update(o).digest("hex"),text:o,decisionIntent:e.decisionIntent,...e.actionSignature!==void 0?{actionSignature:e.actionSignature}:{},throughSequence:e.observationSequence}}i(Ji,"buildCodingMemoryContext");function cu(e){let t="";for(let o of e){let n=t.length===0?o:`${t}
|
|
4
4
|
${o}`;if(n.length>au)break;t=n}return t}i(cu,"boundedLines");function ae(e){return lu(e).replace(/\s+/g," ").trim().slice(0,480)}i(ae,"compact");function lu(e){return e.replace(/-----BEGIN (?:RSA |EC |OPENSSH )?PRIVATE KEY-----[\s\S]*?(?:-----END (?:RSA |EC |OPENSSH )?PRIVATE KEY-----|$)/gi,"[restricted]").replace(/authorization:\s*bearer\s+\S+/gi,"authorization: [restricted]").replace(/\b(?:api[_-]?key|password|secret|token)\s*[:=]\s*\S+/gi,"[restricted]")}i(lu,"redactRestricted");import{AsyncLocalStorage as uu}from"node:async_hooks";var es=new uu;function ts(e,t){return es.run(e,t)}i(ts,"withMemoryDecisionTrace");function os(e){let t=es.getStore();t!==void 0&&t.push(du(e))}i(os,"recordMemoryDecisionReceipt");function du(e){return Object.freeze({...e,candidateRefs:Object.freeze([...e.candidateRefs]),selectedRefs:Object.freeze([...e.selectedRefs]),injectedRefs:Object.freeze([...e.injectedRefs]),selectionModes:Object.freeze([...e.selectionModes])})}i(du,"freezeReceipt");function is(e){let t=new Map(e.toolResults.map(r=>[r.tool_use_id,r])),o=[],n=e.startSequence;for(let r of e.toolBlocks){if(r.name==="memory_recall")continue;let s=t.get(r.id);if(s===void 0)continue;let a=pu(s),l=s.is_error===!0||/^\s*\[Tool Error\]/i.test(a),d=!l&&mu(r);!l&&!d||gu(a)||(n+=1,o.push({id:`tool-outcome:${r.id}`,sequence:n,kind:"outcome",summary:l?`${r.name} failed under the current inputs and environment: ${rs(a)}`:`Verification command succeeded: ${rs(a)}`,evidence:[{ref:`tool-result:${r.id}`,requestedGrade:"observed",source:"tool",observedAt:e.observedAt}],visibility:"prompt_safe",actionSignature:d?`${r.name}:verify`:r.name,occurredAt:e.observedAt,metadata:{toolName:r.name,failed:l}}))}return o}i(is,"buildToolMemoryObservations");var ss=i(e=>e.source==="user"||e.source==="host"?e.requestedGrade:e.source==="environment"?ns(e,"verified"):e.source==="tool"?ns(e,"observed"):"inferred","codingMemorySourcePolicy");function ns(e,t){let o=["inferred","observed","corroborated","verified","authoritative"];return o[Math.min(o.indexOf(e.requestedGrade),o.indexOf(t))]??"inferred"}i(ns,"capGrade");function mu(e){if(e.name!=="bash")return!1;let t=fu(e.input,"command");return t!==void 0&&/(?:^|\s)(?:test|build|lint|check|typecheck|tsc|vitest|pytest|cargo\s+test|go\s+test)(?:\s|$|:)/i.test(t)}i(mu,"isVerificationToolCall");function fu(e,t){if(typeof e!="object"||e===null||Array.isArray(e))return;let o=e[t];return typeof o=="string"?o:void 0}i(fu,"readStringField");function pu(e){return typeof e.content=="string"?e.content:Array.isArray(e.content)?e.content.map(t=>typeof t!="object"||t===null||!("text"in t)?"":typeof t.text=="string"?t.text:"").filter(t=>t.length>0).join(`
|
|
5
5
|
`):""}i(pu,"toolResultText");function rs(e){return(e.replace(/[\u0000-\u0008\u000b\u000c\u000e-\u001f\u007f]/g,"").replace(/[<>]/g,"").replace(/\s+/g," ").trim()||"no textual result").slice(0,480)}i(rs,"boundedSummary");function gu(e){return/(?:-----BEGIN (?:RSA |EC |OPENSSH )?PRIVATE KEY-----|authorization:\s*bearer\s+\S+|(?:api[_-]?key|password|secret|token)\s*[:=]\s*\S+)/i.test(e)}i(gu,"isRestrictedMemoryContent");function Ho(e,t){if(!e.isConfigured())throw new Error(`Provider "${t}" not configured. Set ${e.getApiKeyEnv()}`)}i(Ho,"assertProviderConfigured");var qo=`You are KodaX, a helpful multi-provider coding agent. You can read, write, and edit files, and execute shell commands.
|