@kodax-ai/kodax 0.7.58 → 0.7.59

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/README.md +1228 -1225
  3. package/README_CN.md +647 -645
  4. package/dist/chunks/{agent-YJNC2755.js → agent-QQCRBU4C.js} +1 -1
  5. package/dist/chunks/argument-completer-7Q2T4YWA.js +2 -0
  6. package/dist/chunks/{chunk-6AU6EPO6.js → chunk-2UUOFT3Z.js} +1 -1
  7. package/dist/chunks/{chunk-NKHXRN7G.js → chunk-5GPJ6MB5.js} +110 -108
  8. package/dist/chunks/{chunk-P4VF3JEP.js → chunk-BEXLPFFB.js} +3 -3
  9. package/dist/chunks/{chunk-CQ6EQG7E.js → chunk-D7RENPQQ.js} +31 -31
  10. package/dist/chunks/{chunk-ZZDC75H4.js → chunk-PRIBJN5E.js} +70 -68
  11. package/dist/chunks/{chunk-HS2K74I4.js → chunk-S4GVQO3W.js} +13 -13
  12. package/dist/chunks/chunk-SDSLWDAZ.js +17 -0
  13. package/dist/chunks/{chunk-7QB55SYG.js → chunk-SVEJFERZ.js} +8 -8
  14. package/dist/chunks/{chunk-XXEIFNBE.js → chunk-TBXP7FEG.js} +1 -1
  15. package/dist/chunks/{chunk-526OILYL.js → chunk-UA744TZM.js} +1 -1
  16. package/dist/chunks/{chunk-QHWXPJEG.js → chunk-UXQILGRX.js} +145 -146
  17. package/dist/chunks/{chunk-CV6JHPEO.js → chunk-YADBB5GN.js} +1 -1
  18. package/dist/chunks/{chunk-OBPB5BQ6.js → chunk-Z23LK3IV.js} +6 -6
  19. package/dist/chunks/chunk-Z3ZXV3DZ.js +18 -0
  20. package/dist/chunks/compaction-config-GQIPCVFD.js +2 -0
  21. package/dist/chunks/{construction-bootstrap-CIXFH5SE.js → construction-bootstrap-YON4ZEMO.js} +1 -1
  22. package/dist/chunks/dist-73L4OYPD.js +2 -0
  23. package/dist/chunks/dist-EZXBR6NW.js +2 -0
  24. package/dist/chunks/host-LO6ZNTMV.js +2 -0
  25. package/dist/chunks/{paste-Y4DVUWSM.js → paste-4THGP5XW.js} +1 -1
  26. package/dist/chunks/run-manager-HTLXKU66.js +2 -0
  27. package/dist/chunks/{utils-FLVVQHM7.js → utils-5XVW33SY.js} +1 -1
  28. package/dist/index.d.ts +10 -9
  29. package/dist/index.js +2 -2
  30. package/dist/kodax_cli.js +995 -990
  31. package/dist/provider-capabilities.json +971 -986
  32. package/dist/sdk-agent.d.ts +9 -8
  33. package/dist/sdk-agent.js +1 -1
  34. package/dist/sdk-coding.d.ts +79 -14
  35. package/dist/sdk-coding.js +1 -1
  36. package/dist/sdk-llm.d.ts +1 -1
  37. package/dist/sdk-llm.js +1 -1
  38. package/dist/sdk-mcp.js +1 -1
  39. package/dist/sdk-media.js +1 -1
  40. package/dist/sdk-repl.d.ts +10 -9
  41. package/dist/sdk-repl.js +1 -1
  42. package/dist/sdk-session.d.ts +5 -4
  43. package/dist/sdk-session.js +1 -1
  44. package/dist/sdk-skills.d.ts +4 -231
  45. package/dist/sdk-skills.js +1 -1
  46. package/dist/types-chunks/{bash-prefix-extractor.d-D3cddmyV.d.ts → bash-prefix-extractor.d-BNdpV4Cf.d.ts} +29 -4
  47. package/dist/types-chunks/{guardrail.d-iK7FwMdW.d.ts → guardrail.d-CNdKuSD_.d.ts} +2 -2
  48. package/dist/types-chunks/{process.d-DHow2y2G.d.ts → process.d-BOrAxjvM.d.ts} +21 -3
  49. package/dist/types-chunks/{resolver.d-DDOfVYDr.d.ts → resolver.d-DFAKKUvt.d.ts} +56 -2
  50. package/dist/types-chunks/{run-manager.d-ByDcJc5g.d.ts → run-manager.d-CsJC9zYf.d.ts} +3 -3
  51. package/dist/types-chunks/{sdk-session-21Tt3N_x.d.ts → sdk-session-ByZlwgdM.d.ts} +14 -3
  52. package/dist/types-chunks/{storage.d-BsZrBPYu.d.ts → storage.d-DHL3XpAL.d.ts} +2 -2
  53. package/dist/types-chunks/{types.d-D4ZA8LJV.d.ts → types.d-CE_Ter29.d.ts} +1 -1
  54. package/dist/types-chunks/types.d-vJExiRje.d.ts +232 -0
  55. package/dist/types-chunks/{utils.d-BURxOxFd.d.ts → utils.d-D9FHU4wB.d.ts} +5 -4
  56. package/package.json +1 -1
  57. package/dist/chunks/argument-completer-QGBNXTYJ.js +0 -2
  58. package/dist/chunks/chunk-73Z7BK5H.js +0 -15
  59. package/dist/chunks/chunk-PIQWODWN.js +0 -18
  60. package/dist/chunks/compaction-config-OPMRZSAK.js +0 -2
  61. package/dist/chunks/dist-JSE7NICF.js +0 -2
  62. package/dist/chunks/dist-SDNQOW52.js +0 -2
  63. package/dist/chunks/host-H7FQMMRC.js +0 -2
  64. package/dist/chunks/run-manager-4H5HWMVW.js +0 -2
@@ -1,7 +1,7 @@
1
1
  // @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
2
- import{a as o}from"./chunk-V4WSBIXB.js";var f=class extends Error{static{o(this,"KodaXMediaError")}code;detail;cause;constructor(t,n,r={}){super(n),this.name="KodaXMediaError",this.code=t,this.detail=r.detail,this.cause=r.cause}},R=class extends f{static{o(this,"ImageResizeError")}constructor(t,n={}){super(n.code??"IMAGE_TOO_LARGE",t,n),this.name="ImageResizeError"}};import ue from"node:path";var pt={".gif":"image/gif",".jpeg":"image/jpeg",".jpg":"image/jpeg",".png":"image/png",".webp":"image/webp"},gt={".3gp":"video/3gpp",".3gpp":"video/3gpp",".avi":"video/x-msvideo",".flv":"video/x-flv",".mov":"video/quicktime",".mp4":"video/mp4",".mpeg":"video/mpeg",".mpg":"video/mpeg",".webm":"video/webm",".wmv":"video/x-ms-wmv"};function ce(e){return pt[ue.extname(e).toLowerCase()]}o(ce,"inferImageMediaType");function fe(e){return gt[ue.extname(e).toLowerCase()]}o(fe,"inferVideoMediaType");function mt(e,t={}){let n=t.mediaType??ce(e);return{kind:"image",path:e,...n?{mediaType:n}:{},...t.source?{source:t.source}:{},...t.description?{description:t.description}:{}}}o(mt,"createImageArtifactFromPath");function yt(e,t={}){if(t.mediaType!==void 0&&t.mimeType!==void 0&&t.mediaType!==t.mimeType)throw new f("UNSUPPORTED_MEDIA_TYPE",`File artifact mediaType and mimeType disagree: ${t.mediaType} != ${t.mimeType}.`);return{kind:"file",path:e,...t.mediaType?{mediaType:t.mediaType}:{},...t.mimeType?{mimeType:t.mimeType}:{},...t.name?{name:t.name}:{},...t.source?{source:t.source}:{},...t.description?{description:t.description}:{}}}o(yt,"createFileArtifactFromPath");function ht(e,t={}){let n=t.mediaType??fe(e);if(!n)throw new f("UNSUPPORTED_MEDIA_TYPE",`Cannot infer video media type from path: ${e}.`);return{kind:"video",path:e,mediaType:n,...t.name?{name:t.name}:{},...t.source?{source:t.source}:{},...t.description?{description:t.description}:{}}}o(ht,"createVideoArtifactFromPath");import{Jimp as bt}from"jimp";var pe=2e3,ge=Math.floor(3.75*1024*1024),vt=[80,60,40];async function H(e,t={}){let n=t.maxDimension??pe,r=t.targetBytes??ge;if(e.length===0)throw new R("Empty image buffer.",{code:"IMAGE_DECODE_FAILED"});let i;try{i=await bt.read(e)}catch(u){let y=u instanceof Error?u.message:String(u);throw new R(`Failed to decode image: ${y}`,{code:"IMAGE_DECODE_FAILED",cause:u})}let{width:a,height:d}=i.bitmap,s=Math.max(a,d);if(s>n){let u=n/s;i.resize({w:Math.max(1,Math.round(a*u)),h:Math.max(1,Math.round(d*u))})}let l=i.bitmap.width,m=i.bitmap.height;if(t.preferMediaType!=="image/jpeg"){let u=await i.getBuffer("image/png");if(u.length<=r)return{buffer:Buffer.from(u),mediaType:"image/png",width:l,height:m}}for(let u of vt){let y=await i.getBuffer("image/jpeg",{quality:u});if(y.length<=r)return{buffer:Buffer.from(y),mediaType:"image/jpeg",width:l,height:m}}if(t.preferMediaType==="image/jpeg"){let u=await i.getBuffer("image/png");if(u.length<=r)return{buffer:Buffer.from(u),mediaType:"image/png",width:l,height:m}}throw new R(`Image still exceeds budget (${r} bytes raw) after PNG and JPEG q40 compression. Try a smaller image or take a fresh screenshot of a smaller region.`,{code:"IMAGE_TOO_LARGE"})}o(H,"normalizePastedImage");import{spawn as he}from"node:child_process";import{mkdtemp as kt,readFile as Ct,rm as Pt}from"node:fs/promises";import{tmpdir as Rt}from"node:os";import me from"node:path";var be=5e3;async function ve(){switch(process.platform){case"darwin":return Tt();case"win32":return xt();case"linux":return St();default:throw new f("UNSUPPORTED_PLATFORM",`Clipboard image fallback is not supported on platform "${process.platform}".`)}}o(ve,"readClipboardImage");async function Et(e={}){let t=await ve();return t?H(t,e):null}o(Et,"readAndNormalizeClipboardImage");async function ke(e){let t=await kt(me.join(Rt(),"kodax-clip-")),n=me.join(t,"clip.png");try{return await e(n)}finally{await Pt(t,{recursive:!0,force:!0}).catch(r=>{})}}o(ke,"runWithTempPng");async function Tt(){return ke(async e=>{let t=`set png_data to (the clipboard as \xABclass PNGf\xBB)
2
+ import{a as o}from"./chunk-V4WSBIXB.js";var f=class extends Error{static{o(this,"KodaXMediaError")}code;detail;cause;constructor(t,n,r={}){super(n),this.name="KodaXMediaError",this.code=t,this.detail=r.detail,this.cause=r.cause}},R=class extends f{static{o(this,"ImageResizeError")}constructor(t,n={}){super(n.code??"IMAGE_TOO_LARGE",t,n),this.name="ImageResizeError"}};import ue from"node:path";var yt={".gif":"image/gif",".jpeg":"image/jpeg",".jpg":"image/jpeg",".png":"image/png",".webp":"image/webp"},ht={".3gp":"video/3gpp",".3gpp":"video/3gpp",".avi":"video/x-msvideo",".flv":"video/x-flv",".mov":"video/quicktime",".mp4":"video/mp4",".mpeg":"video/mpeg",".mpg":"video/mpeg",".webm":"video/webm",".wmv":"video/x-ms-wmv"};function ce(e){return yt[ue.extname(e).toLowerCase()]}o(ce,"inferImageMediaType");function fe(e){return ht[ue.extname(e).toLowerCase()]}o(fe,"inferVideoMediaType");function bt(e,t={}){let n=t.mediaType??ce(e);return{kind:"image",path:e,...n?{mediaType:n}:{},...t.source?{source:t.source}:{},...t.description?{description:t.description}:{}}}o(bt,"createImageArtifactFromPath");function vt(e,t={}){if(t.mediaType!==void 0&&t.mimeType!==void 0&&t.mediaType!==t.mimeType)throw new f("UNSUPPORTED_MEDIA_TYPE",`File artifact mediaType and mimeType disagree: ${t.mediaType} != ${t.mimeType}.`);return{kind:"file",path:e,...t.mediaType?{mediaType:t.mediaType}:{},...t.mimeType?{mimeType:t.mimeType}:{},...t.name?{name:t.name}:{},...t.source?{source:t.source}:{},...t.description?{description:t.description}:{}}}o(vt,"createFileArtifactFromPath");function kt(e,t={}){let n=t.mediaType??fe(e);if(!n)throw new f("UNSUPPORTED_MEDIA_TYPE",`Cannot infer video media type from path: ${e}.`);return{kind:"video",path:e,mediaType:n,...t.name?{name:t.name}:{},...t.source?{source:t.source}:{},...t.description?{description:t.description}:{}}}o(kt,"createVideoArtifactFromPath");import{Jimp as Ct}from"jimp";var pe=2e3,ge=Math.floor(3.75*1024*1024),Pt=[80,60,40];async function H(e,t={}){let n=t.maxDimension??pe,r=t.targetBytes??ge;if(e.length===0)throw new R("Empty image buffer.",{code:"IMAGE_DECODE_FAILED"});let i;try{i=await Ct.read(e)}catch(u){let y=u instanceof Error?u.message:String(u);throw new R(`Failed to decode image: ${y}`,{code:"IMAGE_DECODE_FAILED",cause:u})}let{width:s,height:d}=i.bitmap,a=Math.max(s,d);if(a>n){let u=n/a;i.resize({w:Math.max(1,Math.round(s*u)),h:Math.max(1,Math.round(d*u))})}let l=i.bitmap.width,m=i.bitmap.height;if(t.preferMediaType!=="image/jpeg"){let u=await i.getBuffer("image/png");if(u.length<=r)return{buffer:Buffer.from(u),mediaType:"image/png",width:l,height:m}}for(let u of Pt){let y=await i.getBuffer("image/jpeg",{quality:u});if(y.length<=r)return{buffer:Buffer.from(y),mediaType:"image/jpeg",width:l,height:m}}if(t.preferMediaType==="image/jpeg"){let u=await i.getBuffer("image/png");if(u.length<=r)return{buffer:Buffer.from(u),mediaType:"image/png",width:l,height:m}}throw new R(`Image still exceeds budget (${r} bytes raw) after PNG and JPEG q40 compression. Try a smaller image or take a fresh screenshot of a smaller region.`,{code:"IMAGE_TOO_LARGE"})}o(H,"normalizePastedImage");import{spawn as he}from"node:child_process";import{mkdtemp as Rt,readFile as Et,rm as Tt}from"node:fs/promises";import{tmpdir as xt}from"node:os";import me from"node:path";var be=5e3;async function ve(){switch(process.platform){case"darwin":return Mt();case"win32":return _t();case"linux":return Kt();default:throw new f("UNSUPPORTED_PLATFORM",`Clipboard image fallback is not supported on platform "${process.platform}".`)}}o(ve,"readClipboardImage");async function St(e={}){let t=await ve();return t?H(t,e):null}o(St,"readAndNormalizeClipboardImage");async function ke(e){let t=await Rt(me.join(xt(),"kodax-clip-")),n=me.join(t,"clip.png");try{return await e(n)}finally{await Tt(t,{recursive:!0,force:!0}).catch(r=>{})}}o(ke,"runWithTempPng");async function Mt(){return ke(async e=>{let t=`set png_data to (the clipboard as \xABclass PNGf\xBB)
3
3
  set fh to open for access POSIX file "${e.replace(/"/g,'\\"')}" with write permission
4
4
  write png_data to fh
5
- close access fh`;return await Pe("osascript",["-e",t])?Ce(e):null})}o(Tt,"readMacClipboard");async function xt(){return ke(async e=>{let t=["Add-Type -AssemblyName System.Drawing | Out-Null","$img = Get-Clipboard -Format Image","if ($null -eq $img) { exit 1 }",`$img.Save('${e.replace(/'/g,"''")}', [System.Drawing.Imaging.ImageFormat]::Png)`].join("; ");return await Pe("powershell",["-NoProfile","-Command",t])?Ce(e):null})}o(xt,"readWinClipboard");async function St(){return await ye("wl-paste",["--type","image/png"])??ye("xclip",["-selection","clipboard","-t","image/png","-o"])}o(St,"readLinuxClipboard");async function Ce(e){try{let t=await Ct(e);return t.length>0?t:null}catch(t){return null}}o(Ce,"readNonEmptyFile");function Pe(e,t){return new Promise(n=>{let r=!1,i=he(e,[...t],{stdio:"ignore"}),a=setTimeout(()=>{r||(r=!0,i.kill(),n(!1))},be);i.once("error",()=>{r||(r=!0,clearTimeout(a),n(!1))}),i.once("exit",d=>{r||(r=!0,clearTimeout(a),n(d===0))})})}o(Pe,"runCommand");function ye(e,t){return new Promise(n=>{let r=!1,i=[],a=he(e,[...t],{stdio:["ignore","pipe","ignore"]}),d=setTimeout(()=>{r||(r=!0,a.kill(),n(null))},be);a.stdout?.on("data",s=>i.push(s)),a.once("error",()=>{r||(r=!0,clearTimeout(d),n(null))}),a.once("exit",s=>{if(r)return;if(r=!0,clearTimeout(d),s!==0){n(null);return}let l=Buffer.concat(i);n(l.length>0?l:null)})})}o(ye,"collectStdoutBytes");import{createHash as Mt}from"node:crypto";import{mkdir as _t,readdir as Kt,stat as wt,unlink as At,writeFile as Xt}from"node:fs/promises";import{tmpdir as It}from"node:os";import J from"node:path";var Re="KODAX_PASTE_TMP_DIR",Ee=1440*60*1e3;function Te(){return process.env[Re]??J.join(It(),"kodax-paste")}o(Te,"resolvePasteTmpDir");function Ot(e){let t=e?.trim().replace(/[^A-Za-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"");return t&&t.length>0?t:"paste"}o(Ot,"sanitizeFileNamePrefix");async function Dt(e,t={}){let n=t.directory??Te();await _t(n,{recursive:!0});let r=e.mediaType==="image/jpeg"?".jpg":".png",i=Mt("sha256").update(e.buffer).digest("hex").slice(0,16),a=`${Ot(t.fileNamePrefix)}-${i}${r}`,d=J.join(n,a);return await Xt(d,e.buffer),{type:"image",path:d,mediaType:e.mediaType}}o(Dt,"persistImageAsBlock");async function Bt(e=Date.now()){let t=Te(),n;try{n=await Kt(t)}catch(a){return 0}let r=e-Ee,i=0;return await Promise.all(n.filter(a=>/-[0-9a-f]{16}\.(?:png|jpg)$/.test(a)).map(async a=>{let d=J.join(t,a);try{(await wt(d)).mtimeMs<r&&(await At(d),i+=1)}catch(s){}})),i}o(Bt,"prunePasteTmpDir");function j(e,t){return`${e}/${t??""}`}o(j,"capabilityCacheKey");function Nt(e,t,n){return e[j(t,n)]?.rejected??[]}o(Nt,"getRejectedEfforts");function Lt(e,t,n,r,i,a){let d=j(t,n),s=e[d],l=s?.rejected.includes(r)?s.rejected:[...s?.rejected??[],r];return{...e,[d]:{rejected:l,source:i,updatedAt:a}}}o(Lt,"addRejectedEffort");function jt(e,t,n){if(!t)return{};let r={...e};return delete r[j(t,n)],r}o(jt,"removeCacheEntry");function $t(e){if(!e||typeof e!="object")return{};let t={};for(let[n,r]of Object.entries(e)){if(!r||typeof r!="object")continue;let i=r,a=Array.isArray(i.rejected)?i.rejected.filter(l=>typeof l=="string"):[],d=i.source==="probed"?"probed":"observed",s=typeof i.updatedAt=="string"?i.updatedAt:"";t[n]={rejected:a,source:d,updatedAt:s}}return t}o($t,"sanitizeCapabilityCache");import{AsyncLocalStorage as Ft}from"node:async_hooks";var Ut=new Ft,xe=8,Se=32;function Wt(e){if(e===void 0)return;let t=Number.parseInt(e,10);return Number.isInteger(t)&&t>0?t:void 0}o(Wt,"parsePositiveInt");function Vt(){let e=$()?.workflow?.maxConcurrency,t=typeof e=="number"&&Number.isInteger(e)&&e>0?e:Wt(process.env.KODAX_WORKFLOW_MAX_CONCURRENCY)??xe;return Math.max(1,Math.min(Se,t))}o(Vt,"resolveWorkflowMaxConcurrency");function $(){return Ut.getStore()}o($,"getRunScopedConfig");var A={transport:"native-api",conversationSemantics:"full-history",mcpSupport:"none",contextFidelity:"full",toolCallingFidelity:"full",sessionSupport:"full",longRunningSupport:"full",multimodalSupport:"none",evidenceSupport:"full"},Me={...A,multimodalSupport:"image-input"},F={transport:"cli-bridge",conversationSemantics:"last-user-message",mcpSupport:"none",contextFidelity:"lossy",toolCallingFidelity:"limited",sessionSupport:"stateless",longRunningSupport:"limited",multimodalSupport:"none",evidenceSupport:"limited"},_e={...F,multimodalSupport:"image-input"};function X(e){return{transport:e.transport,conversationSemantics:e.conversationSemantics,mcpSupport:e.mcpSupport,contextFidelity:e.contextFidelity??"full",toolCallingFidelity:e.toolCallingFidelity??"full",sessionSupport:e.sessionSupport??"full",longRunningSupport:e.longRunningSupport??"full",multimodalSupport:e.multimodalSupport??"none",evidenceSupport:e.evidenceSupport??"full"}}o(X,"normalizeCapabilityProfile");import Fr from"@anthropic-ai/sdk";import{parse as Mr}from"partial-json";import oi from"openai";import{ClientSideConnection as yi,PROTOCOL_VERSION as hi,ndJsonStream as bi}from"@agentclientprotocol/sdk";import Ie from"node:fs";import Oe from"node:os";import De from"node:path";var fo="gpt-5.4",po="auto-gemini-3",go=["gpt-5.4","gpt-5.3-codex","gpt-5.3-codex-spark"],mo=["auto-gemini-3","gemini-3.1-pro-preview","gemini-3-flash-preview","gemini-2.5-pro","gemini-2.5-flash"];function Be(e){let t=new Set,n=[];for(let r of e){let i=r.trim();if(!i)continue;let a=i.toLowerCase();t.has(a)||(t.add(a),n.push(i))}return n}o(Be,"dedupePreserveOrder");function yo(){let e=De.join(Oe.homedir(),".codex","config.toml");try{return Ie.readFileSync(e,"utf8").match(/^\s*model\s*=\s*"([^"]+)"/m)?.[1]?.trim()||null}catch{return null}}o(yo,"readCodexConfiguredModel");function ho(){let e=De.join(Oe.homedir(),".gemini","settings.json");try{let t=JSON.parse(Ie.readFileSync(e,"utf8")),n=typeof t.model=="string"?t.model.trim():"";return n||(typeof t.general?.model=="string"?t.general.model.trim():"")||null}catch{return null}}o(ho,"readGeminiConfiguredModel");function x(){return yo()||fo}o(x,"getCodexCliDefaultModel");function S(){return ho()||po}o(S,"getGeminiCliDefaultModel");function I(){return Be([x(),...go])}o(I,"getCodexCliKnownModels");function O(){return Be([S(),...mo])}o(O,"getGeminiCliKnownModels");var Qi=S(),Zi=O();var ca=x(),fa=I();import{existsSync as _o,readFileSync as Ko}from"node:fs";import M from"node:path";import{fileURLToPath as wo}from"node:url";var Ne=["none","prompt-only","native-effort","native-budget","native-toggle","native-adaptive","unknown"],Le=["openai-responses-effort","openai-chat-effort","codex-cli-config","anthropic-output-effort","provider-budget","provider-toggle","prompt-only","none"],je=["anthropic-adaptive","anthropic-budget","provider-budget","provider-toggle","none"],$e=["zai-glm-5.2","zai-glm-toggle","deepseek-v4-openai","deepseek-v4-anthropic","deepseek-toggle","kimi-k2.7-code","kimi-hybrid-toggle","minimax-m3","minimax-m2-always","mimo-v2.5-toggle","qwen-hybrid-thinking","openai-chat-reasoning","openai-responses-reasoning","codex-cli-effort","claude-adaptive-xhigh","claude-adaptive-max","anthropic-budget","generic-thinking-toggle","none"],Fe=["native","image-input-native","cli-bridge","image-input-cli-bridge"],Ue=["count-tokens","models-list","minimal-message","unsupported"];function k(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}o(k,"isPlainObject");function E(e,t){if(typeof e!="string"||e.length===0)throw new Error(`provider-capabilities.json: ${t} must be a non-empty string`);return e}o(E,"requireString");function D(e,t){if(e!==void 0)return E(e,t)}o(D,"optionalString");function C(e,t){if(e!==void 0){if(typeof e!="number"||!Number.isFinite(e)||e<0)throw new Error(`provider-capabilities.json: ${t} must be a non-negative finite number`);return e}}o(C,"optionalNumber");function g(e,t){if(e!==void 0){if(typeof e!="boolean")throw new Error(`provider-capabilities.json: ${t} must be a boolean`);return e}}o(g,"optionalBoolean");function We(e,t){if(e!==void 0){if(!Array.isArray(e))throw new Error(`provider-capabilities.json: ${t} must be an array`);return e.map((n,r)=>E(n,`${t}[${r}]`))}}o(We,"optionalStringArray");function ko(e,t){if(e===void 0)return;if(!k(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n={};for(let[r,i]of Object.entries(e))n[r]=E(i,`${t}.${r}`);return n}o(ko,"optionalStringMap");function Co(e,t){if(e!==void 0){if(typeof e!="string"||!$e.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${$e.join(", ")}, got ${JSON.stringify(e)}`);return e}}o(Co,"optionalReasoningPreset");function Q(e,t){if(typeof e!="string"||!Ne.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Ne.join(", ")}, got ${JSON.stringify(e)}`);return e}o(Q,"requireReasoningCapability");function Po(e,t){if(typeof e!="string"||!Le.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Le.join(", ")}, got ${JSON.stringify(e)}`);return e}o(Po,"requireEffortStrategy");function Ro(e,t){if(e!==void 0){if(typeof e!="string"||!je.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${je.join(", ")}, got ${JSON.stringify(e)}`);return e}}o(Ro,"optionalThinkingStrategy");function Ve(e,t){if(e===void 0)return;if(!k(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n=Po(e.effortStrategy,`${t}.effortStrategy`),r=Co(e.reasoningPreset,`${t}.reasoningPreset`),i=Ro(e.thinkingStrategy,`${t}.thinkingStrategy`),a=D(e.defaultEffort,`${t}.defaultEffort`),d=ko(e.effortAliases,`${t}.effortAliases`),s=We(e.disabledEfforts,`${t}.disabledEfforts`),l=We(e.localRejectEfforts,`${t}.localRejectEfforts`),m=g(e.allowCustomEffort,`${t}.allowCustomEffort`),u=g(e.supportsReasoningEffort,`${t}.supportsReasoningEffort`),y=g(e.supportsReasoningSummary,`${t}.supportsReasoningSummary`),p=g(e.supportsEncryptedReasoningReplay,`${t}.supportsEncryptedReasoningReplay`),P=g(e.supportsAdaptiveThinking,`${t}.supportsAdaptiveThinking`),T=g(e.supportsManualThinkingBudget,`${t}.supportsManualThinkingBudget`),h=g(e.supportsDisabledThinking,`${t}.supportsDisabledThinking`),L=g(e.requiresEffortBetaHeader,`${t}.requiresEffortBetaHeader`),c={effortStrategy:n};if(r!==void 0&&(c.reasoningPreset=r),i!==void 0&&(c.thinkingStrategy=i),a!==void 0&&(c.defaultEffort=a),d!==void 0&&(c.effortAliases=d),s!==void 0&&(c.disabledEfforts=s),l!==void 0&&(c.localRejectEfforts=l),e.supportedEfforts!==void 0){if(!Array.isArray(e.supportedEfforts))throw new Error(`provider-capabilities.json: ${t}.supportedEfforts must be an array`);c.supportedEfforts=e.supportedEfforts.map((b,v)=>{if(!k(b))throw new Error(`provider-capabilities.json: ${t}.supportedEfforts[${v}] must be an object`);return{value:E(b.value,`${t}.supportedEfforts[${v}].value`),...D(b.description,`${t}.supportedEfforts[${v}].description`)!==void 0?{description:D(b.description,`${t}.supportedEfforts[${v}].description`)}:{},...g(b.isDefault,`${t}.supportedEfforts[${v}].isDefault`)!==void 0?{isDefault:g(b.isDefault,`${t}.supportedEfforts[${v}].isDefault`)}:{},...g(b.isUserVisible,`${t}.supportedEfforts[${v}].isUserVisible`)!==void 0?{isUserVisible:g(b.isUserVisible,`${t}.supportedEfforts[${v}].isUserVisible`)}:{}}})}if(e.budgetByEffort!==void 0){if(!k(e.budgetByEffort))throw new Error(`provider-capabilities.json: ${t}.budgetByEffort must be an object`);let b={};for(let[v,le]of Object.entries(e.budgetByEffort))b[v]=C(le,`${t}.budgetByEffort.${v}`)??0;c.budgetByEffort=b}return m!==void 0&&(c.allowCustomEffort=m),u!==void 0&&(c.supportsReasoningEffort=u),y!==void 0&&(c.supportsReasoningSummary=y),p!==void 0&&(c.supportsEncryptedReasoningReplay=p),P!==void 0&&(c.supportsAdaptiveThinking=P),T!==void 0&&(c.supportsManualThinkingBudget=T),h!==void 0&&(c.supportsDisabledThinking=h),L!==void 0&&(c.requiresEffortBetaHeader=L),c}o(Ve,"validateReasoningProfile");function ze(e,t){let n=e.reasoningProfile,r=e.reasoningCapabilityV2;if(n!==void 0&&r!==void 0)throw new Error(`provider-capabilities.json: ${t} must not define both reasoningProfile and deprecated reasoningCapabilityV2`);return n!==void 0?Ve(n,`${t}.reasoningProfile`):Ve(r,`${t}.reasoningCapabilityV2`)}o(ze,"validateReasoningProfileField");function Eo(e,t){if(typeof e!="string"||!Fe.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Fe.join(", ")}, got ${JSON.stringify(e)}`);return e}o(Eo,"requireProfileName");function To(e,t){if(typeof e!="string"||!Ue.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Ue.join(", ")}, got ${JSON.stringify(e)}`);return e}o(To,"requireVerifyStrategy");function xo(e,t){if(!k(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n=E(e.id,`${t}.id`),r=D(e.displayName,`${t}.displayName`),i=C(e.contextWindow,`${t}.contextWindow`),a=C(e.maxOutputTokens,`${t}.maxOutputTokens`),d=C(e.thinkingBudgetCap,`${t}.thinkingBudgetCap`),s=g(e.replayReasoningContent,`${t}.replayReasoningContent`),l=g(e.strictThinkingSignature,`${t}.strictThinkingSignature`),m=C(e.streamMaxDurationMs,`${t}.streamMaxDurationMs`),u=e.reasoningCapability===void 0?void 0:Q(e.reasoningCapability,`${t}.reasoningCapability`),y=ze(e,t),p={id:n};return r!==void 0&&(p.displayName=r),i!==void 0&&(p.contextWindow=i),a!==void 0&&(p.maxOutputTokens=a),d!==void 0&&(p.thinkingBudgetCap=d),u!==void 0&&(p.reasoningCapability=u),y!==void 0&&(p.reasoningProfile=y),s!==void 0&&(p.replayReasoningContent=s),l!==void 0&&(p.strictThinkingSignature=l),m!==void 0&&(p.streamMaxDurationMs=m),p}o(xo,"validateModelDescriptor");function So(e,t){if(e===void 0)return;if(!k(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n={};for(let[r,i]of Object.entries(e))n[r]=Q(i,`${t}.${r}`);return n}o(So,"validateModelReasoningCapabilities");function Mo(e,t){if(!k(e))throw new Error(`provider-capabilities.json: providers.${t} must be an object`);let n=g(e.cliBridge,`providers.${t}.cliBridge`),r=E(e.apiKeyEnv,`providers.${t}.apiKeyEnv`),i=Q(e.reasoningCapability,`providers.${t}.reasoningCapability`),a=ze(e,`providers.${t}`),d=Eo(e.capabilityProfile,`providers.${t}.capabilityProfile`),s=To(e.verifyStrategy,`providers.${t}.verifyStrategy`);if(n&&s!=="unsupported")throw new Error(`provider-capabilities.json: providers.${t} is a cliBridge entry but verifyStrategy="${s}" \u2014 must be "unsupported" (CLI binary owns credentials)`);let l=C(e.contextWindow,`providers.${t}.contextWindow`),m=C(e.maxOutputTokens,`providers.${t}.maxOutputTokens`),u=C(e.thinkingBudgetCap,`providers.${t}.thinkingBudgetCap`),y=g(e.supportsThinking,`providers.${t}.supportsThinking`),p=So(e.modelReasoningCapabilities,`providers.${t}.modelReasoningCapabilities`),P=D(e.model,`providers.${t}.model`);if(n&&(P!==void 0||e.models!==void 0))throw new Error(`provider-capabilities.json: providers.${t} is a cliBridge entry but defines model/models \u2014 must be omitted (filled at load time)`);if(!n&&P===void 0)throw new Error(`provider-capabilities.json: providers.${t}.model is required (only cliBridge entries may omit)`);let T;if(e.models!==void 0){if(!Array.isArray(e.models))throw new Error(`provider-capabilities.json: providers.${t}.models must be an array`);T=e.models.map((L,c)=>xo(L,`providers.${t}.models[${c}]`))}let h={apiKeyEnv:r,reasoningCapability:i,capabilityProfile:d,verifyStrategy:s};return a!==void 0&&(h.reasoningProfile=a),P!==void 0&&(h.model=P),T!==void 0&&(h.models=T),l!==void 0&&(h.contextWindow=l),m!==void 0&&(h.maxOutputTokens=m),u!==void 0&&(h.thinkingBudgetCap=u),y!==void 0&&(h.supportsThinking=y),p!==void 0&&(h.modelReasoningCapabilities=p),n&&(h.cliBridge=!0),h}o(Mo,"validateProviderEntry");function qe(e){if(!k(e))throw new Error("provider-capabilities.json: root must be an object");if(e.version!==1)throw new Error(`provider-capabilities.json: version must be 1, got ${JSON.stringify(e.version)}`);let t=E(e.updatedAt,"updatedAt");if(!k(e.providers))throw new Error("provider-capabilities.json: providers must be an object");let n={};for(let[r,i]of Object.entries(e.providers))n[r]=Mo(i,r);return{version:1,updatedAt:t,providers:n}}o(qe,"validateProviderCapabilitiesJson");var Ao=Object.freeze({native:A,"image-input-native":Me,"cli-bridge":F,"image-input-cli-bridge":_e}),z=null;function Xo(){if(process.env.KODAX_BUNDLED==="true")return M.join(M.dirname(process.execPath),"provider-capabilities.json");let e=M.dirname(wo(import.meta.url)),t=[M.join(e,"provider-capabilities.json"),M.join(M.dirname(e),"provider-capabilities.json")];for(let n of t)if(_o(n))return n;return t[0]}o(Xo,"resolveJsonPath");function Io(e){if(e.models){for(let t of e.models)t.reasoningProfile&&Ge(t.reasoningProfile);for(let t of e.models)Object.freeze(t);Object.freeze(e.models)}return e.reasoningProfile&&Ge(e.reasoningProfile),e.modelReasoningCapabilities&&Object.freeze(e.modelReasoningCapabilities),Object.freeze(e)}o(Io,"deepFreezeSnapshot");function Ge(e){if(e.supportedEfforts){for(let t of e.supportedEfforts)Object.freeze(t);Object.freeze(e.supportedEfforts)}e.budgetByEffort&&Object.freeze(e.budgetByEffort),e.effortAliases&&Object.freeze(e.effortAliases),e.disabledEfforts&&Object.freeze(e.disabledEfforts),e.localRejectEfforts&&Object.freeze(e.localRejectEfforts),Object.freeze(e)}o(Ge,"freezeReasoningProfile");function Oo(e){if(e==="gemini-cli"){let t=S();return{model:t,models:O().filter(n=>n!==t).map(n=>({id:n}))}}if(e==="codex-cli"){let t=x();return{model:t,models:I().filter(n=>n!==t).map(n=>({id:n}))}}throw new Error(`provider-capabilities loader: unknown cliBridge provider '${e}'`)}o(Oo,"resolveCliBridgeModels");function Do(e,t){let n=Ao[t.capabilityProfile];if(!n)throw new Error(`provider-capabilities loader: unknown capabilityProfile '${t.capabilityProfile}' for provider '${e}'`);if(t.cliBridge){let i=Oo(e),a={model:i.model,models:i.models,apiKeyEnv:t.apiKeyEnv,reasoningCapability:t.reasoningCapability,capabilityProfile:n,verifyStrategy:t.verifyStrategy};return t.reasoningProfile!==void 0&&(a.reasoningProfile=t.reasoningProfile),t.supportsThinking!==void 0&&(a.supportsThinking=t.supportsThinking),a}let r={model:t.model,apiKeyEnv:t.apiKeyEnv,reasoningCapability:t.reasoningCapability,capabilityProfile:n,verifyStrategy:t.verifyStrategy};return t.reasoningProfile!==void 0&&(r.reasoningProfile=t.reasoningProfile),t.models!==void 0&&(r.models=t.models),t.modelReasoningCapabilities!==void 0&&(r.modelReasoningCapabilities=t.modelReasoningCapabilities),t.contextWindow!==void 0&&(r.contextWindow=t.contextWindow),t.maxOutputTokens!==void 0&&(r.maxOutputTokens=t.maxOutputTokens),t.thinkingBudgetCap!==void 0&&(r.thinkingBudgetCap=t.thinkingBudgetCap),t.supportsThinking!==void 0&&(r.supportsThinking=t.supportsThinking),r}o(Do,"buildSnapshot");function He(){if(z)return z;let e=Xo(),t;try{let i=Ko(e,"utf8");t=JSON.parse(i)}catch(i){let a=i instanceof Error?i.message:String(i);throw new Error(`provider-capabilities loader: failed to read ${e}: ${a}`)}let n=qe(t),r={};for(let[i,a]of Object.entries(n.providers))r[i]=Io(Do(i,a));return z=Object.freeze(r),z}o(He,"getProviderSnapshots");import Oa from"@anthropic-ai/sdk";var _=He();var Je=process.env.KODAX_PROVIDER??"zhipu-coding";var B=["image/png","image/jpeg","image/webp","image/gif"],N=["video/mp4","video/mpeg","video/quicktime","video/x-msvideo","video/x-flv","video/webm","video/x-ms-wmv","video/3gpp"],ln=[],un=new Set(["anthropic","openai"]),cn=new Set(["kimi-code/kimi-for-coding","kimi/kimi-k2.5","kimi/kimi-k2.6","kimi/kimi-k2.7-code","minimax-coding/minimax-m3","minimax/minimax-m3","mimo-coding/mimo-v2.5","mimo/mimo-v2.5"]);function re(e){return{nativeSupported:!1,sdkSupported:!1,status:"unsupported",mediaTypes:[],maxCount:0,reason:e}}o(re,"unsupported");function fn(e){return{nativeSupported:!0,sdkSupported:!0,status:"supported",mediaTypes:B,nativeMediaTypes:B,reason:e}}o(fn,"supportedImage");function pn(e){return{nativeSupported:!0,sdkSupported:!1,status:"provider-native-unwired",mediaTypes:[],nativeMediaTypes:N,maxCount:0,reason:e}}o(pn,"nativeVideoUnwired");function gn(e){return e.trim().toLowerCase()}o(gn,"normalizeProvider");function mn(e){return _[e]?.model}o(mn,"resolveProviderDefaultModel");function yn(e,t){if(!t)return;let n=t.trim().toLowerCase();if(e==="kimi"){if(n==="k2.5")return"kimi-k2.5";if(n==="k2.6")return"kimi-k2.6";if(n==="k2.7-code")return"kimi-k2.7-code"}return(e==="minimax-coding"||e==="minimax")&&n==="minimax-m3"?"minimax-m3":n}o(yn,"normalizeModel");function hn(e){if(!un.has(e))return!1;let t=_[e];return t?X(t.capabilityProfile).multimodalSupport!=="none":!1}o(hn,"hasOfficialImageSupport");function bn(e,t){let n=yn(e,t);if(!n)return!1;let r=`${e}/${n}`;return cn.has(r)}o(bn,"hasSourceBackedNativeMedia");function vn(e,t,n){if(n)return"source-backed";if(t){if(e==="openai")return"openai-official";if(e==="anthropic")return"anthropic-official"}}o(vn,"resolveImageCapabilityRoute");function kn(e){switch(e){case"openai-official":return"Model route supports KodaX image input. Direct-path image/gif is sent as image/gif, but OpenAI requires non-animated GIF semantics.";case"anthropic-official":return"Model route supports KodaX image input. Direct-path image/gif is sent as image/gif, but Anthropic uses only the first frame of animated GIFs.";case"source-backed":return"Model route supports KodaX image input. Direct-path image/gif is sent as image/gif; animated-GIF interpretation is provider-owned."}}o(kn,"imageCapabilityReason");function ie(e){let t=gn(e.provider),n=e.model?.trim()||mn(t),r=hn(t),i=bn(t,n),a=vn(t,r,i),d=a!==void 0,s=i;return{text:!0,image:d?fn(kn(a)):re("No verified KodaX image-input route for this provider/model."),video:s?pn("Model route is native-video capable, but KodaX SDK video sending is not wired yet. Reject or downgrade before send."):re("No verified native video route for this provider/model."),file:re("File artifact contract is stable, but KodaX SDK file sending/extraction is not wired yet. Reject or downgrade before send.")}}o(ie,"getModelInputCapabilities");function Cn(e){return B.includes(e)}o(Cn,"isKnownImageMediaType");function Pn(e){return N.includes(e)}o(Pn,"isKnownVideoMediaType");function ae(e){return`${e.provider}${e.model?`/${e.model}`:""}`}o(ae,"routeLabel");function se(e){return e.reason?`${e.status}: ${e.reason}`:e.status}o(se,"capabilityDetail");function de(e,t){if(e.length===0)return;let n=ie(t);for(let r of e){let i=r;if(i.kind==="image"){if(!n.image.nativeSupported||!n.image.sdkSupported)throw new f("MODEL_INPUT_UNSUPPORTED",`Provider/model cannot consume image artifacts: ${ae(t)}.`,{detail:se(n.image)});if(typeof i.mediaType=="string"&&!Cn(i.mediaType))throw new f("UNSUPPORTED_MEDIA_TYPE",`Unsupported image media type: ${i.mediaType}.`);continue}throw i.kind==="video"?typeof i.mediaType!="string"||!Pn(i.mediaType)?new f("UNSUPPORTED_MEDIA_TYPE",`Unsupported video media type: ${String(i.mediaType)}.`,{detail:`Supported video media types: ${N.join(", ")}`}):new f("MODEL_INPUT_UNSUPPORTED",`Provider/model cannot consume video artifacts through this SDK runtime: ${ae(t)}.`,{detail:se(n.video)}):i.kind==="file"?typeof i.mediaType=="string"&&typeof i.mimeType=="string"&&i.mediaType!==i.mimeType?new f("UNSUPPORTED_MEDIA_TYPE",`File artifact mediaType and mimeType disagree: ${i.mediaType} != ${i.mimeType}.`):new f("MODEL_INPUT_UNSUPPORTED",`Provider/model cannot consume file artifacts through this SDK runtime: ${ae(t)}.`,{detail:se(n.file)}):new f("MODEL_INPUT_UNSUPPORTED",`Unsupported input artifact kind: ${String(i.kind)}.`)}}o(de,"validateInputArtifactsForModel");var K={user:0,background:1};function Rn(e,t){return K[e]<=K[t]}o(Rn,"priorityWithinMax");function ut(e,t){return!(e.agentId!==t.agentId||!Rn(e.priority,t.maxPriority)||t.mode!==void 0&&e.mode!==t.mode||t.id!==void 0&&e.id!==t.id||t.predicate&&!t.predicate(e))}o(ut,"matchesFilter");var G=class{static{o(this,"MessageQueue")}messages=[];nextSeq=1;listeners=new Set;snapshotRef=Object.freeze([]);notify(t){this.snapshotRef=Object.freeze([...this.messages]);for(let n of this.listeners)try{n(t)}catch{}}subscribe=o(t=>(this.listeners.add(t),()=>{this.listeners.delete(t)}),"subscribe");getSnapshot=o(()=>this.snapshotRef,"getSnapshot");enqueue(t){let n=`msg-${this.nextSeq++}`,r={id:n,priority:t.priority,mode:t.mode,content:t.content,agentId:t.agentId,inputArtifacts:t.inputArtifacts,enqueuedAt:Date.now()};return this.messages=[...this.messages,r],this.notify({kind:"enqueued",message:r}),n}dequeue(t){let n=[];for(let s=0;s<this.messages.length;s++){let l=this.messages[s];l&&ut(l,t)&&n.push({originalIndex:s,message:l})}n.sort((s,l)=>{let m=K[s.message.priority]-K[l.message.priority];return m!==0?m:s.originalIndex-l.originalIndex});let r=t.limit,i=typeof r=="number"&&n.length>r?n.slice(0,r):n;if(i.length===0)return[];let a=new Set(i.map(s=>s.originalIndex));this.messages=this.messages.filter((s,l)=>!a.has(l));let d=i.map(s=>s.message);return this.notify({kind:"dequeued",messages:d}),d}peek(t){let n=[];for(let a=0;a<this.messages.length;a++){let d=this.messages[a];d&&ut(d,t)&&n.push({originalIndex:a,message:d})}n.sort((a,d)=>{let s=K[a.message.priority]-K[d.message.priority];return s!==0?s:a.originalIndex-d.originalIndex});let r=t.limit;return(typeof r=="number"&&n.length>r?n.slice(0,r):n).map(a=>a.message)}size(){return this.messages.length}count(t){return this.peek(t).length}has(t){return this.count(t)>0}clear(){if(this.messages.length===0)return;let t=this.messages;this.messages=[],this.notify({kind:"cleared",messages:t})}},q;function w(){return q||(q=new G),q}o(w,"getMessageQueue");function En(){q=void 0}o(En,"_resetMessageQueueForTests");var ct=new Set;function ft(e){return e.some(n=>ct.has(n))?"background":"user"}o(ft,"midTurnDrainPriority");function Tn(e){let t=ft(e.lastTurnToolNames);return w().dequeue({agentId:e.agentId,maxPriority:t,limit:e.limit})}o(Tn,"maybeDrainMidTurn");function xn(e){let t=`<task-completed task_id="${e.taskId}">
5
+ close access fh`;return await Pe("osascript",["-e",t])?Ce(e):null})}o(Mt,"readMacClipboard");async function _t(){return ke(async e=>{let t=["Add-Type -AssemblyName System.Drawing | Out-Null","$img = Get-Clipboard -Format Image","if ($null -eq $img) { exit 1 }",`$img.Save('${e.replace(/'/g,"''")}', [System.Drawing.Imaging.ImageFormat]::Png)`].join("; ");return await Pe("powershell",["-NoProfile","-Command",t])?Ce(e):null})}o(_t,"readWinClipboard");async function Kt(){return await ye("wl-paste",["--type","image/png"])??ye("xclip",["-selection","clipboard","-t","image/png","-o"])}o(Kt,"readLinuxClipboard");async function Ce(e){try{let t=await Et(e);return t.length>0?t:null}catch(t){return null}}o(Ce,"readNonEmptyFile");function Pe(e,t){return new Promise(n=>{let r=!1,i=he(e,[...t],{stdio:"ignore"}),s=setTimeout(()=>{r||(r=!0,i.kill(),n(!1))},be);i.once("error",()=>{r||(r=!0,clearTimeout(s),n(!1))}),i.once("exit",d=>{r||(r=!0,clearTimeout(s),n(d===0))})})}o(Pe,"runCommand");function ye(e,t){return new Promise(n=>{let r=!1,i=[],s=he(e,[...t],{stdio:["ignore","pipe","ignore"]}),d=setTimeout(()=>{r||(r=!0,s.kill(),n(null))},be);s.stdout?.on("data",a=>i.push(a)),s.once("error",()=>{r||(r=!0,clearTimeout(d),n(null))}),s.once("exit",a=>{if(r)return;if(r=!0,clearTimeout(d),a!==0){n(null);return}let l=Buffer.concat(i);n(l.length>0?l:null)})})}o(ye,"collectStdoutBytes");import{createHash as wt}from"node:crypto";import{mkdir as At,readdir as Xt,stat as It,unlink as Ot,writeFile as Dt}from"node:fs/promises";import{tmpdir as Bt}from"node:os";import J from"node:path";var Re="KODAX_PASTE_TMP_DIR",Ee=1440*60*1e3;function Te(){return process.env[Re]??J.join(Bt(),"kodax-paste")}o(Te,"resolvePasteTmpDir");function Nt(e){let t=e?.trim().replace(/[^A-Za-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"");return t&&t.length>0?t:"paste"}o(Nt,"sanitizeFileNamePrefix");async function Lt(e,t={}){let n=t.directory??Te();await At(n,{recursive:!0});let r=e.mediaType==="image/jpeg"?".jpg":".png",i=wt("sha256").update(e.buffer).digest("hex").slice(0,16),s=`${Nt(t.fileNamePrefix)}-${i}${r}`,d=J.join(n,s);return await Dt(d,e.buffer),{type:"image",path:d,mediaType:e.mediaType}}o(Lt,"persistImageAsBlock");async function jt(e=Date.now()){let t=Te(),n;try{n=await Xt(t)}catch(s){return 0}let r=e-Ee,i=0;return await Promise.all(n.filter(s=>/-[0-9a-f]{16}\.(?:png|jpg)$/.test(s)).map(async s=>{let d=J.join(t,s);try{(await It(d)).mtimeMs<r&&(await Ot(d),i+=1)}catch(a){}})),i}o(jt,"prunePasteTmpDir");function j(e,t){return`${e}/${t??""}`}o(j,"capabilityCacheKey");function $t(e,t,n){return e[j(t,n)]?.rejected??[]}o($t,"getRejectedEfforts");function Ft(e,t,n,r,i,s){let d=j(t,n),a=e[d],l=a?.rejected.includes(r)?a.rejected:[...a?.rejected??[],r];return{...e,[d]:{rejected:l,source:i,updatedAt:s}}}o(Ft,"addRejectedEffort");function Ut(e,t,n){if(!t)return{};let r={...e};return delete r[j(t,n)],r}o(Ut,"removeCacheEntry");function Wt(e){if(!e||typeof e!="object")return{};let t={};for(let[n,r]of Object.entries(e)){if(!r||typeof r!="object")continue;let i=r,s=Array.isArray(i.rejected)?i.rejected.filter(l=>typeof l=="string"):[],d=i.source==="probed"?"probed":"observed",a=typeof i.updatedAt=="string"?i.updatedAt:"";t[n]={rejected:s,source:d,updatedAt:a}}return t}o(Wt,"sanitizeCapabilityCache");import{AsyncLocalStorage as Vt}from"node:async_hooks";var zt=new Vt,xe=8,Se=32;function qt(e){if(e===void 0)return;let t=Number.parseInt(e,10);return Number.isInteger(t)&&t>0?t:void 0}o(qt,"parsePositiveInt");function Gt(){let e=$()?.workflow?.maxConcurrency,t=typeof e=="number"&&Number.isInteger(e)&&e>0?e:qt(process.env.KODAX_WORKFLOW_MAX_CONCURRENCY)??xe;return Math.max(1,Math.min(Se,t))}o(Gt,"resolveWorkflowMaxConcurrency");function $(){return zt.getStore()}o($,"getRunScopedConfig");var A={transport:"native-api",conversationSemantics:"full-history",mcpSupport:"none",contextFidelity:"full",toolCallingFidelity:"full",sessionSupport:"full",longRunningSupport:"full",multimodalSupport:"none",evidenceSupport:"full"},Me={...A,multimodalSupport:"image-input"},F={transport:"cli-bridge",conversationSemantics:"last-user-message",mcpSupport:"none",contextFidelity:"lossy",toolCallingFidelity:"limited",sessionSupport:"stateless",longRunningSupport:"limited",multimodalSupport:"none",evidenceSupport:"limited"},_e={...F,multimodalSupport:"image-input"};function X(e){return{transport:e.transport,conversationSemantics:e.conversationSemantics,mcpSupport:e.mcpSupport,contextFidelity:e.contextFidelity??"full",toolCallingFidelity:e.toolCallingFidelity??"full",sessionSupport:e.sessionSupport??"full",longRunningSupport:e.longRunningSupport??"full",multimodalSupport:e.multimodalSupport??"none",evidenceSupport:e.evidenceSupport??"full"}}o(X,"normalizeCapabilityProfile");import Ur from"@anthropic-ai/sdk";import{parse as _r}from"partial-json";import ni from"openai";import{ClientSideConnection as hi,PROTOCOL_VERSION as bi,ndJsonStream as vi}from"@agentclientprotocol/sdk";import Oe from"node:fs";import De from"node:os";import Be from"node:path";var go="gpt-5.4",mo="auto-gemini-3",yo=["gpt-5.4","gpt-5.3-codex","gpt-5.3-codex-spark"],ho=["auto-gemini-3","gemini-3.1-pro-preview","gemini-3-flash-preview","gemini-2.5-pro","gemini-2.5-flash"];function Ne(e){let t=new Set,n=[];for(let r of e){let i=r.trim();if(!i)continue;let s=i.toLowerCase();t.has(s)||(t.add(s),n.push(i))}return n}o(Ne,"dedupePreserveOrder");function bo(){let e=Be.join(De.homedir(),".codex","config.toml");try{return Oe.readFileSync(e,"utf8").match(/^\s*model\s*=\s*"([^"]+)"/m)?.[1]?.trim()||null}catch{return null}}o(bo,"readCodexConfiguredModel");function vo(){let e=Be.join(De.homedir(),".gemini","settings.json");try{let t=JSON.parse(Oe.readFileSync(e,"utf8")),n=typeof t.model=="string"?t.model.trim():"";return n||(typeof t.general?.model=="string"?t.general.model.trim():"")||null}catch{return null}}o(vo,"readGeminiConfiguredModel");function x(){return bo()||go}o(x,"getCodexCliDefaultModel");function S(){return vo()||mo}o(S,"getGeminiCliDefaultModel");function I(){return Ne([x(),...yo])}o(I,"getCodexCliKnownModels");function O(){return Ne([S(),...ho])}o(O,"getGeminiCliKnownModels");var Zi=S(),es=O();var fs=x(),ps=I();import{existsSync as wo,readFileSync as Ao}from"node:fs";import M from"node:path";import{fileURLToPath as Xo}from"node:url";var Le=["none","prompt-only","native-effort","native-budget","native-toggle","native-adaptive","unknown"],je=["openai-responses-effort","openai-chat-effort","codex-cli-config","anthropic-output-effort","provider-budget","provider-toggle","prompt-only","none"],$e=["anthropic-adaptive","anthropic-budget","provider-budget","provider-toggle","none"],Fe=["zai-glm-5.2","zai-glm-toggle","deepseek-v4-openai","deepseek-v4-anthropic","deepseek-toggle","kimi-k2.7-code","kimi-hybrid-toggle","minimax-m3","minimax-m2-always","mimo-v2.5-toggle","qwen-hybrid-thinking","openai-chat-reasoning","openai-responses-reasoning","codex-cli-effort","claude-adaptive-xhigh","claude-adaptive-max","anthropic-budget","generic-thinking-toggle","none"],Ue=["native","image-input-native","cli-bridge","image-input-cli-bridge"],We=["count-tokens","models-list","minimal-message","unsupported"];function k(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}o(k,"isPlainObject");function E(e,t){if(typeof e!="string"||e.length===0)throw new Error(`provider-capabilities.json: ${t} must be a non-empty string`);return e}o(E,"requireString");function D(e,t){if(e!==void 0)return E(e,t)}o(D,"optionalString");function C(e,t){if(e!==void 0){if(typeof e!="number"||!Number.isFinite(e)||e<0)throw new Error(`provider-capabilities.json: ${t} must be a non-negative finite number`);return e}}o(C,"optionalNumber");function g(e,t){if(e!==void 0){if(typeof e!="boolean")throw new Error(`provider-capabilities.json: ${t} must be a boolean`);return e}}o(g,"optionalBoolean");function Ve(e,t){if(e!==void 0){if(!Array.isArray(e))throw new Error(`provider-capabilities.json: ${t} must be an array`);return e.map((n,r)=>E(n,`${t}[${r}]`))}}o(Ve,"optionalStringArray");function Po(e,t){if(e===void 0)return;if(!k(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n={};for(let[r,i]of Object.entries(e))n[r]=E(i,`${t}.${r}`);return n}o(Po,"optionalStringMap");function Ro(e,t){if(e!==void 0){if(typeof e!="string"||!Fe.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Fe.join(", ")}, got ${JSON.stringify(e)}`);return e}}o(Ro,"optionalReasoningPreset");function Q(e,t){if(typeof e!="string"||!Le.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Le.join(", ")}, got ${JSON.stringify(e)}`);return e}o(Q,"requireReasoningCapability");function Eo(e,t){if(typeof e!="string"||!je.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${je.join(", ")}, got ${JSON.stringify(e)}`);return e}o(Eo,"requireEffortStrategy");function To(e,t){if(e!==void 0){if(typeof e!="string"||!$e.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${$e.join(", ")}, got ${JSON.stringify(e)}`);return e}}o(To,"optionalThinkingStrategy");function ze(e,t){if(e===void 0)return;if(!k(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n=Eo(e.effortStrategy,`${t}.effortStrategy`),r=Ro(e.reasoningPreset,`${t}.reasoningPreset`),i=To(e.thinkingStrategy,`${t}.thinkingStrategy`),s=D(e.defaultEffort,`${t}.defaultEffort`),d=Po(e.effortAliases,`${t}.effortAliases`),a=Ve(e.disabledEfforts,`${t}.disabledEfforts`),l=Ve(e.localRejectEfforts,`${t}.localRejectEfforts`),m=g(e.allowCustomEffort,`${t}.allowCustomEffort`),u=g(e.supportsReasoningEffort,`${t}.supportsReasoningEffort`),y=g(e.supportsReasoningSummary,`${t}.supportsReasoningSummary`),p=g(e.supportsEncryptedReasoningReplay,`${t}.supportsEncryptedReasoningReplay`),P=g(e.supportsAdaptiveThinking,`${t}.supportsAdaptiveThinking`),T=g(e.supportsManualThinkingBudget,`${t}.supportsManualThinkingBudget`),h=g(e.supportsDisabledThinking,`${t}.supportsDisabledThinking`),L=g(e.requiresEffortBetaHeader,`${t}.requiresEffortBetaHeader`),c={effortStrategy:n};if(r!==void 0&&(c.reasoningPreset=r),i!==void 0&&(c.thinkingStrategy=i),s!==void 0&&(c.defaultEffort=s),d!==void 0&&(c.effortAliases=d),a!==void 0&&(c.disabledEfforts=a),l!==void 0&&(c.localRejectEfforts=l),e.supportedEfforts!==void 0){if(!Array.isArray(e.supportedEfforts))throw new Error(`provider-capabilities.json: ${t}.supportedEfforts must be an array`);c.supportedEfforts=e.supportedEfforts.map((b,v)=>{if(!k(b))throw new Error(`provider-capabilities.json: ${t}.supportedEfforts[${v}] must be an object`);return{value:E(b.value,`${t}.supportedEfforts[${v}].value`),...D(b.description,`${t}.supportedEfforts[${v}].description`)!==void 0?{description:D(b.description,`${t}.supportedEfforts[${v}].description`)}:{},...g(b.isDefault,`${t}.supportedEfforts[${v}].isDefault`)!==void 0?{isDefault:g(b.isDefault,`${t}.supportedEfforts[${v}].isDefault`)}:{},...g(b.isUserVisible,`${t}.supportedEfforts[${v}].isUserVisible`)!==void 0?{isUserVisible:g(b.isUserVisible,`${t}.supportedEfforts[${v}].isUserVisible`)}:{}}})}if(e.budgetByEffort!==void 0){if(!k(e.budgetByEffort))throw new Error(`provider-capabilities.json: ${t}.budgetByEffort must be an object`);let b={};for(let[v,le]of Object.entries(e.budgetByEffort))b[v]=C(le,`${t}.budgetByEffort.${v}`)??0;c.budgetByEffort=b}return m!==void 0&&(c.allowCustomEffort=m),u!==void 0&&(c.supportsReasoningEffort=u),y!==void 0&&(c.supportsReasoningSummary=y),p!==void 0&&(c.supportsEncryptedReasoningReplay=p),P!==void 0&&(c.supportsAdaptiveThinking=P),T!==void 0&&(c.supportsManualThinkingBudget=T),h!==void 0&&(c.supportsDisabledThinking=h),L!==void 0&&(c.requiresEffortBetaHeader=L),c}o(ze,"validateReasoningProfile");function qe(e,t){let n=e.reasoningProfile,r=e.reasoningCapabilityV2;if(n!==void 0&&r!==void 0)throw new Error(`provider-capabilities.json: ${t} must not define both reasoningProfile and deprecated reasoningCapabilityV2`);return n!==void 0?ze(n,`${t}.reasoningProfile`):ze(r,`${t}.reasoningCapabilityV2`)}o(qe,"validateReasoningProfileField");function xo(e,t){if(typeof e!="string"||!Ue.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Ue.join(", ")}, got ${JSON.stringify(e)}`);return e}o(xo,"requireProfileName");function So(e,t){if(typeof e!="string"||!We.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${We.join(", ")}, got ${JSON.stringify(e)}`);return e}o(So,"requireVerifyStrategy");function Mo(e,t){if(!k(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n=E(e.id,`${t}.id`),r=D(e.displayName,`${t}.displayName`),i=C(e.contextWindow,`${t}.contextWindow`),s=C(e.maxOutputTokens,`${t}.maxOutputTokens`),d=C(e.thinkingBudgetCap,`${t}.thinkingBudgetCap`),a=g(e.replayReasoningContent,`${t}.replayReasoningContent`),l=g(e.strictThinkingSignature,`${t}.strictThinkingSignature`),m=C(e.streamMaxDurationMs,`${t}.streamMaxDurationMs`),u=e.reasoningCapability===void 0?void 0:Q(e.reasoningCapability,`${t}.reasoningCapability`),y=qe(e,t),p={id:n};return r!==void 0&&(p.displayName=r),i!==void 0&&(p.contextWindow=i),s!==void 0&&(p.maxOutputTokens=s),d!==void 0&&(p.thinkingBudgetCap=d),u!==void 0&&(p.reasoningCapability=u),y!==void 0&&(p.reasoningProfile=y),a!==void 0&&(p.replayReasoningContent=a),l!==void 0&&(p.strictThinkingSignature=l),m!==void 0&&(p.streamMaxDurationMs=m),p}o(Mo,"validateModelDescriptor");function _o(e,t){if(e===void 0)return;if(!k(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let n={};for(let[r,i]of Object.entries(e))n[r]=Q(i,`${t}.${r}`);return n}o(_o,"validateModelReasoningCapabilities");function Ko(e,t){if(!k(e))throw new Error(`provider-capabilities.json: providers.${t} must be an object`);let n=g(e.cliBridge,`providers.${t}.cliBridge`),r=E(e.apiKeyEnv,`providers.${t}.apiKeyEnv`),i=Q(e.reasoningCapability,`providers.${t}.reasoningCapability`),s=qe(e,`providers.${t}`),d=xo(e.capabilityProfile,`providers.${t}.capabilityProfile`),a=So(e.verifyStrategy,`providers.${t}.verifyStrategy`);if(n&&a!=="unsupported")throw new Error(`provider-capabilities.json: providers.${t} is a cliBridge entry but verifyStrategy="${a}" \u2014 must be "unsupported" (CLI binary owns credentials)`);let l=C(e.contextWindow,`providers.${t}.contextWindow`),m=C(e.maxOutputTokens,`providers.${t}.maxOutputTokens`),u=C(e.thinkingBudgetCap,`providers.${t}.thinkingBudgetCap`),y=g(e.supportsThinking,`providers.${t}.supportsThinking`),p=_o(e.modelReasoningCapabilities,`providers.${t}.modelReasoningCapabilities`),P=D(e.model,`providers.${t}.model`);if(n&&(P!==void 0||e.models!==void 0))throw new Error(`provider-capabilities.json: providers.${t} is a cliBridge entry but defines model/models \u2014 must be omitted (filled at load time)`);if(!n&&P===void 0)throw new Error(`provider-capabilities.json: providers.${t}.model is required (only cliBridge entries may omit)`);let T;if(e.models!==void 0){if(!Array.isArray(e.models))throw new Error(`provider-capabilities.json: providers.${t}.models must be an array`);T=e.models.map((L,c)=>Mo(L,`providers.${t}.models[${c}]`))}let h={apiKeyEnv:r,reasoningCapability:i,capabilityProfile:d,verifyStrategy:a};return s!==void 0&&(h.reasoningProfile=s),P!==void 0&&(h.model=P),T!==void 0&&(h.models=T),l!==void 0&&(h.contextWindow=l),m!==void 0&&(h.maxOutputTokens=m),u!==void 0&&(h.thinkingBudgetCap=u),y!==void 0&&(h.supportsThinking=y),p!==void 0&&(h.modelReasoningCapabilities=p),n&&(h.cliBridge=!0),h}o(Ko,"validateProviderEntry");function Ge(e){if(!k(e))throw new Error("provider-capabilities.json: root must be an object");if(e.version!==1)throw new Error(`provider-capabilities.json: version must be 1, got ${JSON.stringify(e.version)}`);let t=E(e.updatedAt,"updatedAt");if(!k(e.providers))throw new Error("provider-capabilities.json: providers must be an object");let n={};for(let[r,i]of Object.entries(e.providers))n[r]=Ko(i,r);return{version:1,updatedAt:t,providers:n}}o(Ge,"validateProviderCapabilitiesJson");var Io=Object.freeze({native:A,"image-input-native":Me,"cli-bridge":F,"image-input-cli-bridge":_e}),z=null;function Oo(){if(process.env.KODAX_BUNDLED==="true")return M.join(M.dirname(process.execPath),"provider-capabilities.json");let e=M.dirname(Xo(import.meta.url)),t=[M.join(e,"provider-capabilities.json"),M.join(M.dirname(e),"provider-capabilities.json")];for(let n of t)if(wo(n))return n;return t[0]}o(Oo,"resolveJsonPath");function Do(e){if(e.models){for(let t of e.models)t.reasoningProfile&&He(t.reasoningProfile);for(let t of e.models)Object.freeze(t);Object.freeze(e.models)}return e.reasoningProfile&&He(e.reasoningProfile),e.modelReasoningCapabilities&&Object.freeze(e.modelReasoningCapabilities),Object.freeze(e)}o(Do,"deepFreezeSnapshot");function He(e){if(e.supportedEfforts){for(let t of e.supportedEfforts)Object.freeze(t);Object.freeze(e.supportedEfforts)}e.budgetByEffort&&Object.freeze(e.budgetByEffort),e.effortAliases&&Object.freeze(e.effortAliases),e.disabledEfforts&&Object.freeze(e.disabledEfforts),e.localRejectEfforts&&Object.freeze(e.localRejectEfforts),Object.freeze(e)}o(He,"freezeReasoningProfile");function Bo(e){if(e==="gemini-cli"){let t=S();return{model:t,models:O().filter(n=>n!==t).map(n=>({id:n}))}}if(e==="codex-cli"){let t=x();return{model:t,models:I().filter(n=>n!==t).map(n=>({id:n}))}}throw new Error(`provider-capabilities loader: unknown cliBridge provider '${e}'`)}o(Bo,"resolveCliBridgeModels");function No(e,t){let n=Io[t.capabilityProfile];if(!n)throw new Error(`provider-capabilities loader: unknown capabilityProfile '${t.capabilityProfile}' for provider '${e}'`);if(t.cliBridge){let i=Bo(e),s={model:i.model,models:i.models,apiKeyEnv:t.apiKeyEnv,reasoningCapability:t.reasoningCapability,capabilityProfile:n,verifyStrategy:t.verifyStrategy};return t.reasoningProfile!==void 0&&(s.reasoningProfile=t.reasoningProfile),t.supportsThinking!==void 0&&(s.supportsThinking=t.supportsThinking),s}let r={model:t.model,apiKeyEnv:t.apiKeyEnv,reasoningCapability:t.reasoningCapability,capabilityProfile:n,verifyStrategy:t.verifyStrategy};return t.reasoningProfile!==void 0&&(r.reasoningProfile=t.reasoningProfile),t.models!==void 0&&(r.models=t.models),t.modelReasoningCapabilities!==void 0&&(r.modelReasoningCapabilities=t.modelReasoningCapabilities),t.contextWindow!==void 0&&(r.contextWindow=t.contextWindow),t.maxOutputTokens!==void 0&&(r.maxOutputTokens=t.maxOutputTokens),t.thinkingBudgetCap!==void 0&&(r.thinkingBudgetCap=t.thinkingBudgetCap),t.supportsThinking!==void 0&&(r.supportsThinking=t.supportsThinking),r}o(No,"buildSnapshot");function Je(){if(z)return z;let e=Oo(),t;try{let i=Ao(e,"utf8");t=JSON.parse(i)}catch(i){let s=i instanceof Error?i.message:String(i);throw new Error(`provider-capabilities loader: failed to read ${e}: ${s}`)}let n=Ge(t),r={};for(let[i,s]of Object.entries(n.providers))r[i]=Do(No(i,s));return z=Object.freeze(r),z}o(Je,"getProviderSnapshots");import Ds from"@anthropic-ai/sdk";var _=Je();var Ye=process.env.KODAX_PROVIDER??"zhipu-coding";var B=["image/png","image/jpeg","image/webp","image/gif"],N=["video/mp4","video/mpeg","video/quicktime","video/x-msvideo","video/x-flv","video/webm","video/x-ms-wmv","video/3gpp"],un=[],cn=new Set(["anthropic","openai"]),fn=new Set(["kimi-code/kimi-for-coding","kimi/kimi-k2.5","kimi/kimi-k2.6","kimi/kimi-k2.7-code","minimax-coding/minimax-m3","minimax/minimax-m3","mimo-coding/mimo-v2.5","mimo/mimo-v2.5"]);function re(e){return{nativeSupported:!1,sdkSupported:!1,status:"unsupported",mediaTypes:[],maxCount:0,reason:e}}o(re,"unsupported");function pn(e){return{nativeSupported:!0,sdkSupported:!0,status:"supported",mediaTypes:B,nativeMediaTypes:B,reason:e}}o(pn,"supportedImage");function gn(e){return{nativeSupported:!0,sdkSupported:!1,status:"provider-native-unwired",mediaTypes:[],nativeMediaTypes:N,maxCount:0,reason:e}}o(gn,"nativeVideoUnwired");function mn(e){return e.trim().toLowerCase()}o(mn,"normalizeProvider");function yn(e){return _[e]?.model}o(yn,"resolveProviderDefaultModel");function hn(e,t){if(!t)return;let n=t.trim().toLowerCase();if(e==="kimi"){if(n==="k2.5")return"kimi-k2.5";if(n==="k2.6")return"kimi-k2.6";if(n==="k2.7-code")return"kimi-k2.7-code"}return(e==="minimax-coding"||e==="minimax")&&n==="minimax-m3"?"minimax-m3":n}o(hn,"normalizeModel");function bn(e){if(!cn.has(e))return!1;let t=_[e];return t?X(t.capabilityProfile).multimodalSupport!=="none":!1}o(bn,"hasOfficialImageSupport");function vn(e,t){let n=hn(e,t);if(!n)return!1;let r=`${e}/${n}`;return fn.has(r)}o(vn,"hasSourceBackedNativeMedia");function kn(e,t,n){if(n)return"source-backed";if(t){if(e==="openai")return"openai-official";if(e==="anthropic")return"anthropic-official"}}o(kn,"resolveImageCapabilityRoute");function Cn(e){switch(e){case"openai-official":return"Model route supports KodaX image input. Direct-path image/gif is sent as image/gif, but OpenAI requires non-animated GIF semantics.";case"anthropic-official":return"Model route supports KodaX image input. Direct-path image/gif is sent as image/gif, but Anthropic uses only the first frame of animated GIFs.";case"source-backed":return"Model route supports KodaX image input. Direct-path image/gif is sent as image/gif; animated-GIF interpretation is provider-owned."}}o(Cn,"imageCapabilityReason");function ie(e){let t=mn(e.provider),n=e.model?.trim()||yn(t),r=bn(t),i=vn(t,n),s=kn(t,r,i),d=s!==void 0,a=i;return{text:!0,image:d?pn(Cn(s)):re("No verified KodaX image-input route for this provider/model."),video:a?gn("Model route is native-video capable, but KodaX SDK video sending is not wired yet. Reject or downgrade before send."):re("No verified native video route for this provider/model."),file:re("File artifact contract is stable, but KodaX SDK file sending/extraction is not wired yet. Reject or downgrade before send.")}}o(ie,"getModelInputCapabilities");function Pn(e){return B.includes(e)}o(Pn,"isKnownImageMediaType");function Rn(e){return N.includes(e)}o(Rn,"isKnownVideoMediaType");function se(e){return`${e.provider}${e.model?`/${e.model}`:""}`}o(se,"routeLabel");function ae(e){return e.reason?`${e.status}: ${e.reason}`:e.status}o(ae,"capabilityDetail");function de(e,t){if(e.length===0)return;let n=ie(t);for(let r of e){let i=r;if(i.kind==="image"){if(!n.image.nativeSupported||!n.image.sdkSupported)throw new f("MODEL_INPUT_UNSUPPORTED",`Provider/model cannot consume image artifacts: ${se(t)}.`,{detail:ae(n.image)});if(typeof i.mediaType=="string"&&!Pn(i.mediaType))throw new f("UNSUPPORTED_MEDIA_TYPE",`Unsupported image media type: ${i.mediaType}.`);continue}throw i.kind==="video"?typeof i.mediaType!="string"||!Rn(i.mediaType)?new f("UNSUPPORTED_MEDIA_TYPE",`Unsupported video media type: ${String(i.mediaType)}.`,{detail:`Supported video media types: ${N.join(", ")}`}):new f("MODEL_INPUT_UNSUPPORTED",`Provider/model cannot consume video artifacts through this SDK runtime: ${se(t)}.`,{detail:ae(n.video)}):i.kind==="file"?typeof i.mediaType=="string"&&typeof i.mimeType=="string"&&i.mediaType!==i.mimeType?new f("UNSUPPORTED_MEDIA_TYPE",`File artifact mediaType and mimeType disagree: ${i.mediaType} != ${i.mimeType}.`):new f("MODEL_INPUT_UNSUPPORTED",`Provider/model cannot consume file artifacts through this SDK runtime: ${se(t)}.`,{detail:ae(n.file)}):new f("MODEL_INPUT_UNSUPPORTED",`Unsupported input artifact kind: ${String(i.kind)}.`)}}o(de,"validateInputArtifactsForModel");var K={user:0,background:1};function En(e,t){return K[e]<=K[t]}o(En,"priorityWithinMax");function pt(e,t){return!(e.agentId!==t.agentId||!En(e.priority,t.maxPriority)||t.mode!==void 0&&e.mode!==t.mode||t.id!==void 0&&e.id!==t.id||t.predicate&&!t.predicate(e))}o(pt,"matchesFilter");var G=class{static{o(this,"MessageQueue")}messages=[];nextSeq=1;listeners=new Set;snapshotRef=Object.freeze([]);notify(t){this.snapshotRef=Object.freeze([...this.messages]);for(let n of this.listeners)try{n(t)}catch{}}subscribe=o(t=>(this.listeners.add(t),()=>{this.listeners.delete(t)}),"subscribe");getSnapshot=o(()=>this.snapshotRef,"getSnapshot");enqueue(t){let n=`msg-${this.nextSeq++}`,r={id:n,priority:t.priority,mode:t.mode,content:t.content,agentId:t.agentId,inputArtifacts:t.inputArtifacts,enqueuedAt:Date.now()};return this.messages=[...this.messages,r],this.notify({kind:"enqueued",message:r}),n}dequeue(t){let n=[];for(let a=0;a<this.messages.length;a++){let l=this.messages[a];l&&pt(l,t)&&n.push({originalIndex:a,message:l})}n.sort((a,l)=>{let m=K[a.message.priority]-K[l.message.priority];return m!==0?m:a.originalIndex-l.originalIndex});let r=t.limit,i=typeof r=="number"&&n.length>r?n.slice(0,r):n;if(i.length===0)return[];let s=new Set(i.map(a=>a.originalIndex));this.messages=this.messages.filter((a,l)=>!s.has(l));let d=i.map(a=>a.message);return this.notify({kind:"dequeued",messages:d}),d}peek(t){let n=[];for(let s=0;s<this.messages.length;s++){let d=this.messages[s];d&&pt(d,t)&&n.push({originalIndex:s,message:d})}n.sort((s,d)=>{let a=K[s.message.priority]-K[d.message.priority];return a!==0?a:s.originalIndex-d.originalIndex});let r=t.limit;return(typeof r=="number"&&n.length>r?n.slice(0,r):n).map(s=>s.message)}size(){return this.messages.length}count(t){return this.peek(t).length}has(t){return this.count(t)>0}clear(){if(this.messages.length===0)return;let t=this.messages;this.messages=[],this.notify({kind:"cleared",messages:t})}},q;function w(){return q||(q=new G),q}o(w,"getMessageQueue");function Tn(){q=void 0}o(Tn,"_resetMessageQueueForTests");var gt=new Set;function mt(e){return e.some(n=>gt.has(n))?"background":"user"}o(mt,"midTurnDrainPriority");function xn(e){let t=mt(e.lastTurnToolNames);return w().dequeue({agentId:e.agentId,maxPriority:t,limit:e.limit})}o(xn,"maybeDrainMidTurn");function Sn(e){let t=`<task-completed task_id="${e.taskId}">
6
6
  ${e.summary}
7
- </task-completed>`;return w().enqueue({priority:"background",mode:"task-notification",agentId:e.parentAgentId,content:t})}o(xn,"enqueueChildTaskNotification");function Sn(e){return de(e.inputArtifacts??[],e),w().enqueue({priority:e.priority??"user",mode:"prompt",content:e.content,agentId:e.agentId,inputArtifacts:e.inputArtifacts})}o(Sn,"enqueueWithArtifacts");export{f as a,R as b,ce as c,fe as d,mt as e,yt as f,ht as g,pe as h,ge as i,H as j,ve as k,Et as l,Re as m,Ee as n,Dt as o,Bt as p,Nt as q,Lt as r,jt as s,$t as t,Vt as u,B as v,N as w,ln as x,ie as y,de as z,G as A,w as B,En as C,ct as D,ft as E,Tn as F,xn as G,Sn as H};
7
+ </task-completed>`;return w().enqueue({priority:"background",mode:"task-notification",agentId:e.parentAgentId,content:t})}o(Sn,"enqueueChildTaskNotification");function Mn(e){return de(e.inputArtifacts??[],e),w().enqueue({priority:e.priority??"user",mode:"prompt",content:e.content,agentId:e.agentId,inputArtifacts:e.inputArtifacts})}o(Mn,"enqueueWithArtifacts");export{f as a,R as b,ce as c,fe as d,bt as e,vt as f,kt as g,pe as h,ge as i,H as j,ve as k,St as l,Re as m,Ee as n,Lt as o,jt as p,$t as q,Ft as r,Ut as s,Wt as t,Gt as u,B as v,N as w,un as x,ie as y,de as z,G as A,w as B,Tn as C,gt as D,mt as E,xn as F,Sn as G,Mn as H};