@kodax-ai/kodax 0.7.89 → 0.7.91

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 (86) hide show
  1. package/CHANGELOG.md +103 -0
  2. package/README.md +33 -0
  3. package/README_CN.md +15 -0
  4. package/dist/chunks/{agent-AKCXT573.js → agent-YLYM2UIQ.js} +1 -1
  5. package/dist/chunks/argument-completer-4WND7KNM.js +2 -0
  6. package/dist/chunks/{chunk-SOIIBADK.js → chunk-3SVR6PC4.js} +2 -2
  7. package/dist/chunks/{chunk-72H6JNPN.js → chunk-4R4QTBO6.js} +131 -131
  8. package/dist/chunks/chunk-4S5ZAR6N.js +383 -0
  9. package/dist/chunks/{chunk-W5RPVR3O.js → chunk-7RF2XYFK.js} +1 -1
  10. package/dist/chunks/{chunk-BOMSVUJS.js → chunk-7YQT4RAW.js} +2 -2
  11. package/dist/chunks/chunk-FBL7IVMK.js +123 -0
  12. package/dist/chunks/{chunk-4Y6OSDZE.js → chunk-G5XXC7ON.js} +1 -1
  13. package/dist/chunks/{chunk-IFD6TUQU.js → chunk-HXORFXTH.js} +1 -1
  14. package/dist/chunks/{chunk-CQHLFQSU.js → chunk-MGM5SUKU.js} +2 -2
  15. package/dist/chunks/chunk-P7AW3CQW.js +415 -0
  16. package/dist/chunks/{chunk-5247AKGN.js → chunk-QFV6YCIH.js} +2 -2
  17. package/dist/chunks/{chunk-5UBP47VJ.js → chunk-UNTT2ZKN.js} +88 -88
  18. package/dist/chunks/{chunk-O2ZV775M.js → chunk-X75UGXP3.js} +1 -1
  19. package/dist/chunks/chunk-XC2GKTSX.js +519 -0
  20. package/dist/chunks/chunk-XQWPHL6U.js +408 -0
  21. package/dist/chunks/chunk-YQSQEF6J.js +320 -0
  22. package/dist/chunks/{chunk-PROPMIT4.js → chunk-ZNH2MKN5.js} +1 -1
  23. package/dist/chunks/{client-ZXBSEDS4.js → client-SKLNEU3G.js} +1 -1
  24. package/dist/chunks/compaction-config-UEGW2ZBT.js +2 -0
  25. package/dist/chunks/{construction-bootstrap-WF6KQ7XV.js → construction-bootstrap-OUKXVNUQ.js} +1 -1
  26. package/dist/chunks/dist-7EWVACPM.js +2 -0
  27. package/dist/chunks/{dist-WILA35IA.js → dist-WNMK42WE.js} +1 -1
  28. package/dist/chunks/host-GDDQKQKH.js +2 -0
  29. package/dist/chunks/run-manager-J4WO55J2.js +2 -0
  30. package/dist/chunks/{utils-BEWYGEMB.js → utils-NZXGH43M.js} +1 -1
  31. package/dist/index.d.ts +17 -17
  32. package/dist/index.js +5 -5
  33. package/dist/kodax_bootstrap.js +1 -1
  34. package/dist/kodax_cli.js +1539 -1542
  35. package/dist/runtime-worker.js +1407 -1410
  36. package/dist/sandbox-workspace-session.js +213 -213
  37. package/dist/sdk-a2a.d.ts +12 -12
  38. package/dist/sdk-a2a.js +1 -1
  39. package/dist/sdk-agent.d.ts +15 -13
  40. package/dist/sdk-agent.js +1 -1
  41. package/dist/sdk-coding.d.ts +14 -14
  42. package/dist/sdk-coding.js +1 -1
  43. package/dist/sdk-experimental-memory.d.ts +3 -3
  44. package/dist/sdk-experimental-memory.js +1 -1
  45. package/dist/sdk-llm.d.ts +1 -1
  46. package/dist/sdk-llm.js +1 -1
  47. package/dist/sdk-mcp.js +1 -1
  48. package/dist/sdk-media.js +1 -1
  49. package/dist/sdk-repl.d.ts +9 -9
  50. package/dist/sdk-repl.js +2 -2
  51. package/dist/sdk-runtime.d.ts +108 -8
  52. package/dist/sdk-runtime.js +1 -1
  53. package/dist/sdk-sandbox.js +1 -1
  54. package/dist/sdk-session.d.ts +5 -5
  55. package/dist/sdk-session.js +1 -1
  56. package/dist/sdk-skills.js +1 -1
  57. package/dist/semantic-worker.js +59 -59
  58. package/dist/types-chunks/{bash-prefix-extractor.d-BLlhCRI-.d.ts → bash-prefix-extractor.d-BMi_TJIY.d.ts} +54 -7
  59. package/dist/types-chunks/{capsule.d-Cw4UlPTC.d.ts → capsule.d-nYbM4MNL.d.ts} +2 -2
  60. package/dist/types-chunks/{controller.d-1tydJm7c.d.ts → controller.d-Bm1i9RVj.d.ts} +14 -6
  61. package/dist/types-chunks/{controller.d-BvwWz6yP.d.ts → controller.d-CTvvOy_V.d.ts} +1 -1
  62. package/dist/types-chunks/{guardrail.d-DqWHIgt6.d.ts → guardrail.d-CKkoea7y.d.ts} +2 -2
  63. package/dist/types-chunks/{history-retrieval.d-ia-4iJpw.d.ts → history-retrieval.d-D0LNyBED.d.ts} +1 -1
  64. package/dist/types-chunks/{public-api.d-CMZa4JPa.d.ts → public-api.d-ItHKrP7K.d.ts} +4 -4
  65. package/dist/types-chunks/{repl.d-Byu2osV-.d.ts → repl.d-Beg6tiSz.d.ts} +11 -6
  66. package/dist/types-chunks/{resolver.d-bKttRr1V.d.ts → resolver.d-DparsV6Y.d.ts} +6 -4
  67. package/dist/types-chunks/{review-inbox.d-D3T-RxRs.d.ts → review-inbox.d-dAtGH3g2.d.ts} +1 -1
  68. package/dist/types-chunks/{run-manager.d-D0aKe12e.d.ts → run-manager.d-BeSEc2OL.d.ts} +1 -1
  69. package/dist/types-chunks/{sdk-session-BEM7yvJB.d.ts → sdk-session-C7aoqrIR.d.ts} +2 -2
  70. package/dist/types-chunks/{shell-command-sets.d-_SHjU3KP.d.ts → shell-command-sets.d-C2cc9Hwi.d.ts} +1 -1
  71. package/dist/types-chunks/{types.d-B_IFJlti.d.ts → types.d-Dc3kwcjC.d.ts} +1 -1
  72. package/dist/types-chunks/{types.d-BqK7eZ5u.d.ts → types.d-DrtP1ceI.d.ts} +2 -2
  73. package/dist/types-chunks/{types.d-DeokRBs7.d.ts → types.d-EjZTEEVu.d.ts} +2 -1
  74. package/dist/types-chunks/{utils.d-0h1NTEsX.d.ts → utils.d-Qa_Z1w2Q.d.ts} +5 -5
  75. package/package.json +4 -2
  76. package/dist/chunks/argument-completer-BJGY57H2.js +0 -2
  77. package/dist/chunks/chunk-A63MGLH6.js +0 -415
  78. package/dist/chunks/chunk-GL6GVYF4.js +0 -320
  79. package/dist/chunks/chunk-QQBFQCMF.js +0 -519
  80. package/dist/chunks/chunk-S74F7MFN.js +0 -412
  81. package/dist/chunks/chunk-UNEC2WXJ.js +0 -123
  82. package/dist/chunks/chunk-W2LRTZBJ.js +0 -382
  83. package/dist/chunks/compaction-config-HVHPJ6CS.js +0 -2
  84. package/dist/chunks/dist-BCT3UNMA.js +0 -2
  85. package/dist/chunks/host-V6ENYZAQ.js +0 -2
  86. package/dist/chunks/run-manager-ZOV7EKTZ.js +0 -2
@@ -2,7 +2,7 @@
2
2
  import{a as n}from"./chunk-ONUPGMER.js";var M={user:0,background:1};function xt(e,t){return M[e]<=M[t]}n(xt,"priorityWithinMax");function me(e,t){return!(e.agentId!==t.agentId||!xt(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))}n(me,"matchesFilter");var U=class{static{n(this,"MessageQueue")}messages=[];nextSeq=1;listeners=new Set;snapshotRef=Object.freeze([]);notify(t){this.snapshotRef=Object.freeze([...this.messages]);for(let o of this.listeners)try{o(t)}catch{}}subscribe=n(t=>(this.listeners.add(t),()=>{this.listeners.delete(t)}),"subscribe");getSnapshot=n(()=>this.snapshotRef,"getSnapshot");enqueue(t){let o=`msg-${this.nextSeq++}`,r={id:o,priority:t.priority,mode:t.mode,content:t.content,agentId:t.agentId,inputArtifacts:t.inputArtifacts,taskResult:t.taskResult,enqueuedAt:Date.now()};return this.messages=[...this.messages,r],this.notify({kind:"enqueued",message:r}),o}dequeue(t){let o=[];for(let d=0;d<this.messages.length;d++){let l=this.messages[d];l&&me(l,t)&&o.push({originalIndex:d,message:l})}o.sort((d,l)=>{let y=M[d.message.priority]-M[l.message.priority];return y!==0?y:d.originalIndex-l.originalIndex});let r=t.limit,i=typeof r=="number"&&o.length>r?o.slice(0,r):o;if(i.length===0)return[];let s=new Set(i.map(d=>d.originalIndex));this.messages=this.messages.filter((d,l)=>!s.has(l));let a=i.map(d=>d.message);return this.notify({kind:"dequeued",messages:a}),a}peek(t){let o=[];for(let s=0;s<this.messages.length;s++){let a=this.messages[s];a&&me(a,t)&&o.push({originalIndex:s,message:a})}o.sort((s,a)=>{let d=M[s.message.priority]-M[a.message.priority];return d!==0?d:s.originalIndex-a.originalIndex});let r=t.limit;return(typeof r=="number"&&o.length>r?o.slice(0,r):o).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})}},j;function I(){return j||(j=new U),j}n(I,"getMessageQueue");function wt(){j=void 0}n(wt,"_resetMessageQueueForTests");function J(e,t){return e?`actor:${e}:${t}`:t==="/root"?void 0:t}n(J,"actorQueueId");var k=new Map;function Mt(e){k.set(e,(k.get(e)??0)+1);let t=!1;return()=>{if(t)return;t=!0;let o=k.get(e);o===void 0||o<=1?k.delete(e):k.set(e,o-1)}}n(Mt,"registerActiveRootQueueRoute");function Y(){if(k.size!==0){if(k.size===1)return k.keys().next().value;throw new Error("Cannot infer queued follow-up target: multiple Actor root sessions are active. Pass sessionId or agentId explicitly.")}}n(Y,"resolveActiveRootQueueRoute");function St(){k.clear()}n(St,"_resetActiveRootQueueRoutesForTests");var he=new Set(["wait_agent"]);function ye(e){return e.some(o=>he.has(o))?"background":"user"}n(ye,"midTurnDrainPriority");function _t(e){let t=ye(e.lastTurnToolNames);return I().dequeue({agentId:e.agentId,maxPriority:t,limit:e.limit})}n(_t,"maybeDrainMidTurn");var m=class extends Error{static{n(this,"KodaXMediaError")}code;detail;cause;constructor(t,o,r={}){super(o),this.name="KodaXMediaError",this.code=t,this.detail=r.detail,this.cause=r.cause}},x=class extends m{static{n(this,"ImageResizeError")}constructor(t,o={}){super(o.code??"IMAGE_TOO_LARGE",t,o),this.name="ImageResizeError"}};import be from"node:path";var At={".gif":"image/gif",".jpeg":"image/jpeg",".jpg":"image/jpeg",".png":"image/png",".webp":"image/webp"},Kt={".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 ve(e){return At[be.extname(e).toLowerCase()]}n(ve,"inferImageMediaType");function ke(e){return Kt[be.extname(e).toLowerCase()]}n(ke,"inferVideoMediaType");function Xt(e,t={}){let o=t.mediaType??ve(e);return{kind:"image",path:e,...o?{mediaType:o}:{},...t.source?{source:t.source}:{},...t.description?{description:t.description}:{}}}n(Xt,"createImageArtifactFromPath");function It(e,t={}){if(t.mediaType!==void 0&&t.mimeType!==void 0&&t.mediaType!==t.mimeType)throw new m("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}:{}}}n(It,"createFileArtifactFromPath");function Ot(e,t={}){let o=t.mediaType??ke(e);if(!o)throw new m("UNSUPPORTED_MEDIA_TYPE",`Cannot infer video media type from path: ${e}.`);return{kind:"video",path:e,mediaType:o,...t.name?{name:t.name}:{},...t.source?{source:t.source}:{},...t.description?{description:t.description}:{}}}n(Ot,"createVideoArtifactFromPath");var Ce=2e3,Pe=Math.floor(3.75*1024*1024),Dt=[80,60,40];async function Q(e,t={}){let o=t.maxDimension??Ce,r=t.targetBytes??Pe;if(e.length===0)throw new x("Empty image buffer.",{code:"IMAGE_DECODE_FAILED"});let i;try{let{Jimp:u}=await import("jimp");i=await u.read(e)}catch(u){let v=u instanceof Error?u.message:String(u);throw new x(`Failed to decode image: ${v}`,{code:"IMAGE_DECODE_FAILED",cause:u})}let{width:s,height:a}=i.bitmap,d=Math.max(s,a);if(d>o){let u=o/d;i.resize({w:Math.max(1,Math.round(s*u)),h:Math.max(1,Math.round(a*u))})}let l=i.bitmap.width,y=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:y}}for(let u of Dt){let v=await i.getBuffer("image/jpeg",{quality:u});if(v.length<=r)return{buffer:Buffer.from(v),mediaType:"image/jpeg",width:l,height:y}}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:y}}throw new x(`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"})}n(Q,"normalizePastedImage");import{spawn as Ee}from"node:child_process";import{mkdtemp as Nt,readFile as Bt,rm as Lt}from"node:fs/promises";import{tmpdir as Ft}from"node:os";import Te from"node:path";var xe=5e3;async function we(){switch(process.platform){case"darwin":return jt();case"win32":return Ut();case"linux":return Wt();default:throw new m("UNSUPPORTED_PLATFORM",`Clipboard image fallback is not supported on platform "${process.platform}".`)}}n(we,"readClipboardImage");async function $t(e={}){let t=await we();return t?Q(t,e):null}n($t,"readAndNormalizeClipboardImage");async function Me(e){let t=await Nt(Te.join(Ft(),"kodax-clip-")),o=Te.join(t,"clip.png");try{return await e(o)}finally{await Lt(t,{recursive:!0,force:!0}).catch(r=>{})}}n(Me,"runWithTempPng");async function jt(){return Me(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 _e("osascript",["-e",t])?Se(e):null})}n(jt,"readMacClipboard");async function Ut(){return Me(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 _e("powershell",["-NoProfile","-Command",t])?Se(e):null})}n(Ut,"readWinClipboard");async function Wt(){return await Re("wl-paste",["--type","image/png"])??Re("xclip",["-selection","clipboard","-t","image/png","-o"])}n(Wt,"readLinuxClipboard");async function Se(e){try{let t=await Bt(e);return t.length>0?t:null}catch(t){return null}}n(Se,"readNonEmptyFile");function _e(e,t){return new Promise(o=>{let r=!1,i=Ee(e,[...t],{stdio:"ignore",windowsHide:!0}),s=setTimeout(()=>{r||(r=!0,i.kill(),o(!1))},xe);i.once("error",()=>{r||(r=!0,clearTimeout(s),o(!1))}),i.once("exit",a=>{r||(r=!0,clearTimeout(s),o(a===0))})})}n(_e,"runCommand");function Re(e,t){return new Promise(o=>{let r=!1,i=[],s=Ee(e,[...t],{stdio:["ignore","pipe","ignore"],windowsHide:!0}),a=setTimeout(()=>{r||(r=!0,s.kill(),o(null))},xe);s.stdout?.on("data",d=>i.push(d)),s.once("error",()=>{r||(r=!0,clearTimeout(a),o(null))}),s.once("exit",d=>{if(r)return;if(r=!0,clearTimeout(a),d!==0){o(null);return}let l=Buffer.concat(i);o(l.length>0?l:null)})})}n(Re,"collectStdoutBytes");import{createHash as zt}from"node:crypto";import{mkdir as Vt,readdir as Gt,stat as qt,unlink as Ht,writeFile as Jt}from"node:fs/promises";import{tmpdir as Yt}from"node:os";import Z from"node:path";var Ae="KODAX_PASTE_TMP_DIR",Ke=1440*60*1e3;function Xe(){return process.env[Ae]??Z.join(Yt(),"kodax-paste")}n(Xe,"resolvePasteTmpDir");function Qt(e){let t=e?.trim().replace(/[^A-Za-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"");return t&&t.length>0?t:"paste"}n(Qt,"sanitizeFileNamePrefix");async function Zt(e,t={}){let o=t.directory??Xe();await Vt(o,{recursive:!0});let r=e.mediaType==="image/jpeg"?".jpg":".png",i=zt("sha256").update(e.buffer).digest("hex").slice(0,16),s=`${Qt(t.fileNamePrefix)}-${i}${r}`,a=Z.join(o,s);return await Jt(a,e.buffer),{type:"image",path:a,mediaType:e.mediaType}}n(Zt,"persistImageAsBlock");async function en(e=Date.now()){let t=Xe(),o;try{o=await Gt(t)}catch(s){return 0}let r=e-Ke,i=0;return await Promise.all(o.filter(s=>/-[0-9a-f]{16}\.(?:png|jpg)$/.test(s)).map(async s=>{let a=Z.join(t,s);try{(await qt(a)).mtimeMs<r&&(await Ht(a),i+=1)}catch(d){}})),i}n(en,"prunePasteTmpDir");import{AsyncLocalStorage as tn}from"node:async_hooks";var nn=new tn;function on(e){let t=nn.getStore()?.credential;return t?O(e,t,new WeakMap):e}n(on,"redactScopedProviderCredential");function O(e,t,o){if(typeof e=="string")return e.split(t).join("[REDACTED_CREDENTIAL]");if(e===null||typeof e!="object")return e;let r=o.get(e);if(r!==void 0)return r;if(e instanceof Error){let s=new Error(O(e.message,t,o));return o.set(e,s),s.name=e.name,e.stack!==void 0&&(s.stack=O(e.stack,t,o)),s}if(Array.isArray(e)){let s=[];o.set(e,s);for(let a of e)s.push(O(a,t,o));return s}let i={};o.set(e,i);for(let[s,a]of Object.entries(Object.getOwnPropertyDescriptors(e))){if(!a.enumerable||!("value"in a))continue;let d=s.split(t).join("[REDACTED_CREDENTIAL]");i[d]=O(a.value,t,o)}return i}n(O,"redactCredentialValue");function W(e,t){return`${e}/${t??""}`}n(W,"capabilityCacheKey");function rn(e,t,o){return e[W(t,o)]?.rejected??[]}n(rn,"getRejectedEfforts");function sn(e,t,o,r,i,s){let a=W(t,o),d=e[a],l=d?.rejected.includes(r)?d.rejected:[...d?.rejected??[],r];return{...e,[a]:{rejected:l,source:i,updatedAt:s}}}n(sn,"addRejectedEffort");function an(e,t,o){if(!t)return{};let r={...e};return delete r[W(t,o)],r}n(an,"removeCacheEntry");function dn(e){if(!e||typeof e!="object")return{};let t={};for(let[o,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"):[],a=i.source==="probed"?"probed":"observed",d=typeof i.updatedAt=="string"?i.updatedAt:"";t[o]={rejected:s,source:a,updatedAt:d}}return t}n(dn,"sanitizeCapabilityCache");import{AsyncLocalStorage as ln}from"node:async_hooks";var un=new ln,Ie=8,Oe=32;function cn(e){if(e===void 0)return;let t=Number.parseInt(e,10);return Number.isInteger(t)&&t>0?t:void 0}n(cn,"parsePositiveInt");function fn(){let e=ee()?.workflow?.maxConcurrency,t=typeof e=="number"&&Number.isInteger(e)&&e>0?e:cn(process.env.KODAX_WORKFLOW_MAX_CONCURRENCY)??Ie;return Math.max(1,Math.min(Oe,t))}n(fn,"resolveWorkflowMaxConcurrency");function ee(){return un.getStore()}n(ee,"getRunScopedConfig");var D={transport:"native-api",conversationSemantics:"full-history",mcpSupport:"none",contextFidelity:"full",toolCallingFidelity:"full",sessionSupport:"full",longRunningSupport:"full",multimodalSupport:"none",evidenceSupport:"full"},De={...D,multimodalSupport:"image-input"},z={transport:"cli-bridge",conversationSemantics:"last-user-message",mcpSupport:"none",contextFidelity:"lossy",toolCallingFidelity:"limited",sessionSupport:"stateless",longRunningSupport:"limited",multimodalSupport:"none",evidenceSupport:"limited"},Ne={...z,multimodalSupport:"image-input"};function N(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"}}n(N,"normalizeCapabilityProfile");import{createRequire as Mn}from"node:module";import{parse as li}from"partial-json";var Ki=Mn(import.meta.url);import{createRequire as An}from"node:module";var qi=An(import.meta.url);var Yi=Object.freeze({status:"terminated"}),Qi=Object.freeze({status:"already-exited"}),Zi=Object.freeze({status:"unknown"}),es=String.raw`
5
+ close access fh`;return await _e("osascript",["-e",t])?Se(e):null})}n(jt,"readMacClipboard");async function Ut(){return Me(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 _e("powershell",["-NoProfile","-Command",t])?Se(e):null})}n(Ut,"readWinClipboard");async function Wt(){return await Re("wl-paste",["--type","image/png"])??Re("xclip",["-selection","clipboard","-t","image/png","-o"])}n(Wt,"readLinuxClipboard");async function Se(e){try{let t=await Bt(e);return t.length>0?t:null}catch(t){return null}}n(Se,"readNonEmptyFile");function _e(e,t){return new Promise(o=>{let r=!1,i=Ee(e,[...t],{stdio:"ignore",windowsHide:!0}),s=setTimeout(()=>{r||(r=!0,i.kill(),o(!1))},xe);i.once("error",()=>{r||(r=!0,clearTimeout(s),o(!1))}),i.once("exit",a=>{r||(r=!0,clearTimeout(s),o(a===0))})})}n(_e,"runCommand");function Re(e,t){return new Promise(o=>{let r=!1,i=[],s=Ee(e,[...t],{stdio:["ignore","pipe","ignore"],windowsHide:!0}),a=setTimeout(()=>{r||(r=!0,s.kill(),o(null))},xe);s.stdout?.on("data",d=>i.push(d)),s.once("error",()=>{r||(r=!0,clearTimeout(a),o(null))}),s.once("exit",d=>{if(r)return;if(r=!0,clearTimeout(a),d!==0){o(null);return}let l=Buffer.concat(i);o(l.length>0?l:null)})})}n(Re,"collectStdoutBytes");import{createHash as zt}from"node:crypto";import{mkdir as Vt,readdir as Gt,stat as qt,unlink as Ht,writeFile as Jt}from"node:fs/promises";import{tmpdir as Yt}from"node:os";import Z from"node:path";var Ae="KODAX_PASTE_TMP_DIR",Ke=1440*60*1e3;function Xe(){return process.env[Ae]??Z.join(Yt(),"kodax-paste")}n(Xe,"resolvePasteTmpDir");function Qt(e){let t=e?.trim().replace(/[^A-Za-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"");return t&&t.length>0?t:"paste"}n(Qt,"sanitizeFileNamePrefix");async function Zt(e,t={}){let o=t.directory??Xe();await Vt(o,{recursive:!0});let r=e.mediaType==="image/jpeg"?".jpg":".png",i=zt("sha256").update(e.buffer).digest("hex").slice(0,16),s=`${Qt(t.fileNamePrefix)}-${i}${r}`,a=Z.join(o,s);return await Jt(a,e.buffer),{type:"image",path:a,mediaType:e.mediaType}}n(Zt,"persistImageAsBlock");async function en(e=Date.now()){let t=Xe(),o;try{o=await Gt(t)}catch(s){return 0}let r=e-Ke,i=0;return await Promise.all(o.filter(s=>/-[0-9a-f]{16}\.(?:png|jpg)$/.test(s)).map(async s=>{let a=Z.join(t,s);try{(await qt(a)).mtimeMs<r&&(await Ht(a),i+=1)}catch(d){}})),i}n(en,"prunePasteTmpDir");import{AsyncLocalStorage as tn}from"node:async_hooks";var nn=new tn;function on(e){let t=nn.getStore()?.credential;return t?O(e,t,new WeakMap):e}n(on,"redactScopedProviderCredential");function O(e,t,o){if(typeof e=="string")return e.split(t).join("[REDACTED_CREDENTIAL]");if(e===null||typeof e!="object")return e;let r=o.get(e);if(r!==void 0)return r;if(e instanceof Error){let s=new Error(O(e.message,t,o));return o.set(e,s),s.name=e.name,e.stack!==void 0&&(s.stack=O(e.stack,t,o)),s}if(Array.isArray(e)){let s=[];o.set(e,s);for(let a of e)s.push(O(a,t,o));return s}let i={};o.set(e,i);for(let[s,a]of Object.entries(Object.getOwnPropertyDescriptors(e))){if(!a.enumerable||!("value"in a))continue;let d=s.split(t).join("[REDACTED_CREDENTIAL]");i[d]=O(a.value,t,o)}return i}n(O,"redactCredentialValue");function W(e,t){return`${e}/${t??""}`}n(W,"capabilityCacheKey");function rn(e,t,o){return e[W(t,o)]?.rejected??[]}n(rn,"getRejectedEfforts");function sn(e,t,o,r,i,s){let a=W(t,o),d=e[a],l=d?.rejected.includes(r)?d.rejected:[...d?.rejected??[],r];return{...e,[a]:{rejected:l,source:i,updatedAt:s}}}n(sn,"addRejectedEffort");function an(e,t,o){if(!t)return{};let r={...e};return delete r[W(t,o)],r}n(an,"removeCacheEntry");function dn(e){if(!e||typeof e!="object")return{};let t={};for(let[o,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"):[],a=i.source==="probed"?"probed":"observed",d=typeof i.updatedAt=="string"?i.updatedAt:"";t[o]={rejected:s,source:a,updatedAt:d}}return t}n(dn,"sanitizeCapabilityCache");import{AsyncLocalStorage as ln}from"node:async_hooks";var un=new ln,Ie=8,Oe=32;function cn(e){if(e===void 0)return;let t=Number.parseInt(e,10);return Number.isInteger(t)&&t>0?t:void 0}n(cn,"parsePositiveInt");function fn(){let e=ee()?.workflow?.maxConcurrency,t=typeof e=="number"&&Number.isInteger(e)&&e>0?e:cn(process.env.KODAX_WORKFLOW_MAX_CONCURRENCY)??Ie;return Math.max(1,Math.min(Oe,t))}n(fn,"resolveWorkflowMaxConcurrency");function ee(){return un.getStore()}n(ee,"getRunScopedConfig");var D={transport:"native-api",conversationSemantics:"full-history",mcpSupport:"none",contextFidelity:"full",toolCallingFidelity:"full",sessionSupport:"full",longRunningSupport:"full",multimodalSupport:"none",evidenceSupport:"full"},De={...D,multimodalSupport:"image-input"},z={transport:"cli-bridge",conversationSemantics:"last-user-message",mcpSupport:"none",contextFidelity:"lossy",toolCallingFidelity:"limited",sessionSupport:"stateless",longRunningSupport:"limited",multimodalSupport:"none",evidenceSupport:"limited"},Ne={...z,multimodalSupport:"image-input"};function N(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"}}n(N,"normalizeCapabilityProfile");import{parse as ai}from"partial-json";var zi=Object.freeze({status:"terminated"}),Vi=Object.freeze({status:"already-exited"}),Gi=Object.freeze({status:"unknown"}),qi=String.raw`
6
6
  using System;
7
7
  using System.Runtime.InteropServices;
8
8
  using System.Text;
@@ -89,4 +89,4 @@ public static class KodaXNativeProcessSnapshot {
89
89
  CloseHandle(snapshot);
90
90
  }
91
91
  }
92
- }`;import We from"node:fs";import ze from"node:os";import Ve from"node:path";var Dn="gpt-5.4",Nn="auto-gemini-3",Bn=["gpt-5.4","gpt-5.3-codex","gpt-5.3-codex-spark"],Ln=["auto-gemini-3","gemini-3.1-pro-preview","gemini-3-flash-preview","gemini-2.5-pro","gemini-2.5-flash"];function Ge(e){let t=new Set,o=[];for(let r of e){let i=r.trim();if(!i)continue;let s=i.toLowerCase();t.has(s)||(t.add(s),o.push(i))}return o}n(Ge,"dedupePreserveOrder");function Fn(){let e=Ve.join(ze.homedir(),".codex","config.toml");try{return We.readFileSync(e,"utf8").match(/^\s*model\s*=\s*"([^"]+)"/m)?.[1]?.trim()||null}catch{return null}}n(Fn,"readCodexConfiguredModel");function $n(){let e=Ve.join(ze.homedir(),".gemini","settings.json");try{let t=JSON.parse(We.readFileSync(e,"utf8")),o=typeof t.model=="string"?t.model.trim():"";return o||(typeof t.general?.model=="string"?t.general.model.trim():"")||null}catch{return null}}n($n,"readGeminiConfiguredModel");function S(){return Fn()||Dn}n(S,"getCodexCliDefaultModel");function _(){return $n()||Nn}n(_,"getGeminiCliDefaultModel");function B(){return Ge([S(),...Bn])}n(B,"getCodexCliKnownModels");function L(){return Ge([_(),...Ln])}n(L,"getGeminiCliKnownModels");var Ds=_(),Ns=L();var Hs=S(),Js=B();import{existsSync as Qn,readFileSync as Zn}from"node:fs";import K from"node:path";import{fileURLToPath as eo}from"node:url";var qe=["none","prompt-only","native-effort","native-budget","native-toggle","native-adaptive","unknown"],He=["openai-responses-effort","openai-chat-effort","codex-cli-config","anthropic-output-effort","anthropic-reasoning-effort","provider-budget","provider-toggle","prompt-only","none"],Je=["anthropic-adaptive","anthropic-budget","provider-budget","provider-toggle","none"],Ye=["zai-glm-5.3","zai-glm-5.2","zai-glm-toggle","deepseek-v4-flash-openai","deepseek-v4-pro-openai","deepseek-v4-openai","deepseek-v4-anthropic","deepseek-toggle","kimi-k3","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"],Qe=["max_tokens","max_completion_tokens"],Ze=["native","image-input-native","cli-bridge","image-input-cli-bridge"],et=["count-tokens","models-list","minimal-message","unsupported"];function C(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}n(C,"isPlainObject");function w(e,t){if(typeof e!="string"||e.length===0)throw new Error(`provider-capabilities.json: ${t} must be a non-empty string`);return e}n(w,"requireString");function A(e,t){if(e!==void 0)return w(e,t)}n(A,"optionalString");function ot(e,t){if(e!==void 0){if(typeof e!="string"||!Qe.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Qe.join(", ")}, got ${JSON.stringify(e)}`);return e}}n(ot,"optionalMaxOutputTokensField");function E(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}}n(E,"optionalNumber");function h(e,t){if(e!==void 0){if(typeof e!="boolean")throw new Error(`provider-capabilities.json: ${t} must be a boolean`);return e}}n(h,"optionalBoolean");function tt(e,t){if(e!==void 0){if(!Array.isArray(e))throw new Error(`provider-capabilities.json: ${t} must be an array`);return e.map((o,r)=>w(o,`${t}[${r}]`))}}n(tt,"optionalStringArray");function Un(e,t){if(e===void 0)return;if(!C(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let o={};for(let[r,i]of Object.entries(e))o[r]=w(i,`${t}.${r}`);return o}n(Un,"optionalStringMap");function Wn(e,t){if(e!==void 0){if(typeof e!="string"||!Ye.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Ye.join(", ")}, got ${JSON.stringify(e)}`);return e}}n(Wn,"optionalReasoningPreset");function oe(e,t){if(typeof e!="string"||!qe.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${qe.join(", ")}, got ${JSON.stringify(e)}`);return e}n(oe,"requireReasoningCapability");function zn(e,t){if(typeof e!="string"||!He.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${He.join(", ")}, got ${JSON.stringify(e)}`);return e}n(zn,"requireEffortStrategy");function Vn(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}}n(Vn,"optionalThinkingStrategy");function nt(e,t){if(e===void 0)return;if(!C(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let o=zn(e.effortStrategy,`${t}.effortStrategy`),r=Wn(e.reasoningPreset,`${t}.reasoningPreset`),i=Vn(e.thinkingStrategy,`${t}.thinkingStrategy`),s=A(e.defaultEffort,`${t}.defaultEffort`),a=Un(e.effortAliases,`${t}.effortAliases`),d=tt(e.disabledEfforts,`${t}.disabledEfforts`),l=tt(e.localRejectEfforts,`${t}.localRejectEfforts`),y=h(e.allowCustomEffort,`${t}.allowCustomEffort`),u=h(e.supportsReasoningEffort,`${t}.supportsReasoningEffort`),v=h(e.supportsReasoningSummary,`${t}.supportsReasoningSummary`),P=h(e.supportsEncryptedReasoningReplay,`${t}.supportsEncryptedReasoningReplay`),T=h(e.supportsAdaptiveThinking,`${t}.supportsAdaptiveThinking`),c=h(e.supportsManualThinkingBudget,`${t}.supportsManualThinkingBudget`),R=h(e.supportsDisabledThinking,`${t}.supportsDisabledThinking`),b=h(e.requiresEffortBetaHeader,`${t}.requiresEffortBetaHeader`),f={effortStrategy:o};if(r!==void 0&&(f.reasoningPreset=r),i!==void 0&&(f.thinkingStrategy=i),s!==void 0&&(f.defaultEffort=s),a!==void 0&&(f.effortAliases=a),d!==void 0&&(f.disabledEfforts=d),l!==void 0&&(f.localRejectEfforts=l),e.supportedEfforts!==void 0){if(!Array.isArray(e.supportedEfforts))throw new Error(`provider-capabilities.json: ${t}.supportedEfforts must be an array`);f.supportedEfforts=e.supportedEfforts.map((p,g)=>{if(!C(p))throw new Error(`provider-capabilities.json: ${t}.supportedEfforts[${g}] must be an object`);return{value:w(p.value,`${t}.supportedEfforts[${g}].value`),...A(p.description,`${t}.supportedEfforts[${g}].description`)!==void 0?{description:A(p.description,`${t}.supportedEfforts[${g}].description`)}:{},...h(p.isDefault,`${t}.supportedEfforts[${g}].isDefault`)!==void 0?{isDefault:h(p.isDefault,`${t}.supportedEfforts[${g}].isDefault`)}:{},...h(p.isUserVisible,`${t}.supportedEfforts[${g}].isUserVisible`)!==void 0?{isUserVisible:h(p.isUserVisible,`${t}.supportedEfforts[${g}].isUserVisible`)}:{}}})}if(e.budgetByEffort!==void 0){if(!C(e.budgetByEffort))throw new Error(`provider-capabilities.json: ${t}.budgetByEffort must be an object`);let p={};for(let[g,ge]of Object.entries(e.budgetByEffort))p[g]=E(ge,`${t}.budgetByEffort.${g}`)??0;f.budgetByEffort=p}return y!==void 0&&(f.allowCustomEffort=y),u!==void 0&&(f.supportsReasoningEffort=u),v!==void 0&&(f.supportsReasoningSummary=v),P!==void 0&&(f.supportsEncryptedReasoningReplay=P),T!==void 0&&(f.supportsAdaptiveThinking=T),c!==void 0&&(f.supportsManualThinkingBudget=c),R!==void 0&&(f.supportsDisabledThinking=R),b!==void 0&&(f.requiresEffortBetaHeader=b),f}n(nt,"validateReasoningProfile");function rt(e,t){let o=e.reasoningProfile,r=e.reasoningCapabilityV2;if(o!==void 0&&r!==void 0)throw new Error(`provider-capabilities.json: ${t} must not define both reasoningProfile and deprecated reasoningCapabilityV2`);return o!==void 0?nt(o,`${t}.reasoningProfile`):nt(r,`${t}.reasoningCapabilityV2`)}n(rt,"validateReasoningProfileField");function Gn(e,t){if(typeof e!="string"||!Ze.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Ze.join(", ")}, got ${JSON.stringify(e)}`);return e}n(Gn,"requireProfileName");function qn(e,t){if(typeof e!="string"||!et.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${et.join(", ")}, got ${JSON.stringify(e)}`);return e}n(qn,"requireVerifyStrategy");function Hn(e,t){if(!C(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let o=w(e.id,`${t}.id`),r=A(e.wireModel,`${t}.wireModel`),i=A(e.displayName,`${t}.displayName`),s=E(e.contextWindow,`${t}.contextWindow`),a=E(e.maxOutputTokens,`${t}.maxOutputTokens`),d=ot(e.maxOutputTokensField,`${t}.maxOutputTokensField`),l=E(e.thinkingBudgetCap,`${t}.thinkingBudgetCap`),y=h(e.replayReasoningContent,`${t}.replayReasoningContent`),u=h(e.strictThinkingSignature,`${t}.strictThinkingSignature`),v=E(e.streamMaxDurationMs,`${t}.streamMaxDurationMs`),P=e.reasoningCapability===void 0?void 0:oe(e.reasoningCapability,`${t}.reasoningCapability`),T=rt(e,t),c={id:o};return r!==void 0&&(c.wireModel=r),i!==void 0&&(c.displayName=i),s!==void 0&&(c.contextWindow=s),a!==void 0&&(c.maxOutputTokens=a),d!==void 0&&(c.maxOutputTokensField=d),l!==void 0&&(c.thinkingBudgetCap=l),P!==void 0&&(c.reasoningCapability=P),T!==void 0&&(c.reasoningProfile=T),y!==void 0&&(c.replayReasoningContent=y),u!==void 0&&(c.strictThinkingSignature=u),v!==void 0&&(c.streamMaxDurationMs=v),c}n(Hn,"validateModelDescriptor");function Jn(e,t){if(e===void 0)return;if(!C(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let o={};for(let[r,i]of Object.entries(e))o[r]=oe(i,`${t}.${r}`);return o}n(Jn,"validateModelReasoningCapabilities");function Yn(e,t){if(!C(e))throw new Error(`provider-capabilities.json: providers.${t} must be an object`);let o=h(e.cliBridge,`providers.${t}.cliBridge`),r=w(e.apiKeyEnv,`providers.${t}.apiKeyEnv`),i=oe(e.reasoningCapability,`providers.${t}.reasoningCapability`),s=rt(e,`providers.${t}`),a=Gn(e.capabilityProfile,`providers.${t}.capabilityProfile`),d=qn(e.verifyStrategy,`providers.${t}.verifyStrategy`);if(o&&d!=="unsupported")throw new Error(`provider-capabilities.json: providers.${t} is a cliBridge entry but verifyStrategy="${d}" \u2014 must be "unsupported" (CLI binary owns credentials)`);let l=E(e.contextWindow,`providers.${t}.contextWindow`),y=E(e.maxOutputTokens,`providers.${t}.maxOutputTokens`),u=ot(e.maxOutputTokensField,`providers.${t}.maxOutputTokensField`),v=E(e.thinkingBudgetCap,`providers.${t}.thinkingBudgetCap`),P=h(e.supportsThinking,`providers.${t}.supportsThinking`),T=Jn(e.modelReasoningCapabilities,`providers.${t}.modelReasoningCapabilities`),c=A(e.model,`providers.${t}.model`);if(o&&(c!==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(!o&&c===void 0)throw new Error(`provider-capabilities.json: providers.${t}.model is required (only cliBridge entries may omit)`);let R;if(e.models!==void 0){if(!Array.isArray(e.models))throw new Error(`provider-capabilities.json: providers.${t}.models must be an array`);R=e.models.map((p,g)=>Hn(p,`providers.${t}.models[${g}]`));let f=new Set([...c===void 0?[]:[c],...R.map(p=>p.id)]);for(let[p,g]of R.entries())if(g.wireModel!==void 0&&!f.has(g.wireModel))throw new Error(`provider-capabilities.json: providers.${t}.models[${p}].wireModel must reference a declared model, got ${JSON.stringify(g.wireModel)}`)}let b={apiKeyEnv:r,reasoningCapability:i,capabilityProfile:a,verifyStrategy:d};return s!==void 0&&(b.reasoningProfile=s),c!==void 0&&(b.model=c),R!==void 0&&(b.models=R),l!==void 0&&(b.contextWindow=l),y!==void 0&&(b.maxOutputTokens=y),u!==void 0&&(b.maxOutputTokensField=u),v!==void 0&&(b.thinkingBudgetCap=v),P!==void 0&&(b.supportsThinking=P),T!==void 0&&(b.modelReasoningCapabilities=T),o&&(b.cliBridge=!0),b}n(Yn,"validateProviderEntry");function it(e){if(!C(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=w(e.updatedAt,"updatedAt");if(!C(e.providers))throw new Error("provider-capabilities.json: providers must be an object");let o={};for(let[r,i]of Object.entries(e.providers))o[r]=Yn(i,r);return{version:1,updatedAt:t,providers:o}}n(it,"validateProviderCapabilitiesJson");var to=Object.freeze({native:D,"image-input-native":De,"cli-bridge":z,"image-input-cli-bridge":Ne}),H=null;function no(){if(process.env.KODAX_BUNDLED==="true")return K.join(K.dirname(process.execPath),"provider-capabilities.json");let e=K.dirname(eo(import.meta.url)),t=[K.join(e,"provider-capabilities.json"),K.join(K.dirname(e),"provider-capabilities.json")];for(let o of t)if(Qn(o))return o;return t[0]}n(no,"resolveJsonPath");function oo(e){if(e.models){for(let t of e.models)t.reasoningProfile&&st(t.reasoningProfile);for(let t of e.models)Object.freeze(t);Object.freeze(e.models)}return e.reasoningProfile&&st(e.reasoningProfile),e.modelReasoningCapabilities&&Object.freeze(e.modelReasoningCapabilities),Object.freeze(e)}n(oo,"deepFreezeSnapshot");function st(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)}n(st,"freezeReasoningProfile");function ro(e){if(e==="gemini-cli"){let t=_();return{model:t,models:L().filter(o=>o!==t).map(o=>({id:o}))}}if(e==="codex-cli"){let t=S();return{model:t,models:B().filter(o=>o!==t).map(o=>({id:o}))}}throw new Error(`provider-capabilities loader: unknown cliBridge provider '${e}'`)}n(ro,"resolveCliBridgeModels");function io(e,t){let o=to[t.capabilityProfile];if(!o)throw new Error(`provider-capabilities loader: unknown capabilityProfile '${t.capabilityProfile}' for provider '${e}'`);if(t.cliBridge){let i=ro(e),s={model:i.model,models:i.models,apiKeyEnv:t.apiKeyEnv,reasoningCapability:t.reasoningCapability,capabilityProfile:o,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:o,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.maxOutputTokensField!==void 0&&(r.maxOutputTokensField=t.maxOutputTokensField),t.thinkingBudgetCap!==void 0&&(r.thinkingBudgetCap=t.thinkingBudgetCap),t.supportsThinking!==void 0&&(r.supportsThinking=t.supportsThinking),r}n(io,"buildSnapshot");function at(){if(H)return H;let e=no(),t;try{let i=Zn(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 o=it(t),r={};for(let[i,s]of Object.entries(o.providers))r[i]=oo(io(i,s));return H=Object.freeze(r),H}n(at,"getProviderSnapshots");var X=at();var dt=process.env.KODAX_PROVIDER??"zhipu-coding";var F=["image/png","image/jpeg","image/webp","image/gif"],$=["video/mp4","video/mpeg","video/quicktime","video/x-msvideo","video/x-flv","video/webm","video/x-ms-wmv","video/3gpp"],Xo=[],Io=new Set(["anthropic","openai"]),Oo=new Set(["ark-coding/doubao-seed-2.0-code","ark-coding/doubao-seed-2.0-pro","ark-coding/kimi-k2.6","ark-coding/kimi-k2.7-code","ark-coding/minimax-m3","kimi-code/k3-256k","qwen-token-plan/qwen3.8-max","qwen-token-plan/qwen3.8-max-preview","qwen-token-plan/qwen3.7-plus","qwen-token-plan/qwen3.6-flash"]),Do=new Set(["kimi-code/kimi-for-coding","kimi-code/kimi-for-coding-highspeed","kimi-code/k3","kimi/kimi-k3","kimi/kimi-k2.5","kimi/kimi-k2.6","kimi/kimi-k2.7-code","kimi/kimi-k2.7-code-highspeed","minimax-coding/minimax-m3","minimax/minimax-m3","mimo-coding/mimo-v2.5","mimo/mimo-v2.5"]);function le(e){return{nativeSupported:!1,sdkSupported:!1,status:"unsupported",mediaTypes:[],maxCount:0,reason:e}}n(le,"unsupported");function No(e){return{nativeSupported:!0,sdkSupported:!0,status:"supported",mediaTypes:F,nativeMediaTypes:F,reason:e}}n(No,"supportedImage");function Bo(e){return{nativeSupported:!0,sdkSupported:!1,status:"provider-native-unwired",mediaTypes:[],nativeMediaTypes:$,maxCount:0,reason:e}}n(Bo,"nativeVideoUnwired");function Lo(e){return e.trim().toLowerCase()}n(Lo,"normalizeProvider");function Fo(e){return X[e]?.model}n(Fo,"resolveProviderDefaultModel");function Et(e,t){if(!t)return;let o=t.trim().toLowerCase();if(e==="kimi"){if(o==="k2.5")return"kimi-k2.5";if(o==="k2.6")return"kimi-k2.6";if(o==="k2.7-code")return"kimi-k2.7-code";if(o==="k2.7-code-highspeed")return"kimi-k2.7-code-highspeed"}return(e==="minimax-coding"||e==="minimax")&&o==="minimax-m3"?"minimax-m3":o}n(Et,"normalizeModel");function $o(e){if(!Io.has(e))return!1;let t=X[e];return t?N(t.capabilityProfile).multimodalSupport!=="none":!1}n($o,"hasOfficialImageSupport");function jo(e,t){let o=Et(e,t);if(!o)return!1;let r=`${e}/${o}`;return Do.has(r)}n(jo,"hasSourceBackedNativeMedia");function Uo(e,t){let o=Et(e,t);return o?Oo.has(`${e}/${o}`):!1}n(Uo,"hasSourceBackedImage");function Wo(e,t,o){if(o)return"source-backed";if(t){if(e==="openai")return"openai-official";if(e==="anthropic")return"anthropic-official"}}n(Wo,"resolveImageCapabilityRoute");function zo(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."}}n(zo,"imageCapabilityReason");function ue(e){let t=Lo(e.provider),o=e.model?.trim()||Fo(t),r=$o(t),i=jo(t,o),s=i||Uo(t,o),a=Wo(t,r,s),d=a!==void 0,l=i;return{text:!0,image:d?No(zo(a)):le("No verified KodaX image-input route for this provider/model."),video:l?Bo("Model route is native-video capable, but KodaX SDK video sending is not wired yet. Reject or downgrade before send."):le("No verified native video route for this provider/model."),file:le("File artifact contract is stable, but KodaX SDK file sending/extraction is not wired yet. Reject or downgrade before send.")}}n(ue,"getModelInputCapabilities");function Vo(e){return F.includes(e)}n(Vo,"isKnownImageMediaType");function Go(e){return $.includes(e)}n(Go,"isKnownVideoMediaType");function ce(e){return`${e.provider}${e.model?`/${e.model}`:""}`}n(ce,"routeLabel");function fe(e){return e.reason?`${e.status}: ${e.reason}`:e.status}n(fe,"capabilityDetail");function pe(e,t){if(e.length===0)return;let o=ue(t);for(let r of e){let i=r;if(i.kind==="image"){if(!o.image.nativeSupported||!o.image.sdkSupported)throw new m("MODEL_INPUT_UNSUPPORTED",`Provider/model cannot consume image artifacts: ${ce(t)}.`,{detail:fe(o.image)});if(typeof i.mediaType=="string"&&!Vo(i.mediaType))throw new m("UNSUPPORTED_MEDIA_TYPE",`Unsupported image media type: ${i.mediaType}.`);continue}throw i.kind==="video"?typeof i.mediaType!="string"||!Go(i.mediaType)?new m("UNSUPPORTED_MEDIA_TYPE",`Unsupported video media type: ${String(i.mediaType)}.`,{detail:`Supported video media types: ${$.join(", ")}`}):new m("MODEL_INPUT_UNSUPPORTED",`Provider/model cannot consume video artifacts through this SDK runtime: ${ce(t)}.`,{detail:fe(o.video)}):i.kind==="file"?typeof i.mediaType=="string"&&typeof i.mimeType=="string"&&i.mediaType!==i.mimeType?new m("UNSUPPORTED_MEDIA_TYPE",`File artifact mediaType and mimeType disagree: ${i.mediaType} != ${i.mimeType}.`):new m("MODEL_INPUT_UNSUPPORTED",`Provider/model cannot consume file artifacts through this SDK runtime: ${ce(t)}.`,{detail:fe(o.file)}):new m("MODEL_INPUT_UNSUPPORTED",`Unsupported input artifact kind: ${String(i.kind)}.`)}}n(pe,"validateInputArtifactsForModel");function qo(e){if(pe(e.inputArtifacts??[],e),e.agentId!==void 0&&e.sessionId!==void 0)throw new Error("enqueueWithArtifacts accepts either agentId or sessionId, not both.");if(e.sessionId!==void 0&&e.sessionId.trim().length===0)throw new Error("enqueueWithArtifacts sessionId must not be empty.");let t=e.agentId??(e.sessionId!==void 0?J(e.sessionId,"/root"):Y());return I().enqueue({priority:e.priority??"user",mode:"prompt",content:e.content,agentId:t,inputArtifacts:e.inputArtifacts})}n(qo,"enqueueWithArtifacts");export{on as a,rn as b,sn as c,an as d,dn as e,fn as f,U as g,I as h,wt as i,J as j,Mt as k,Y as l,St as m,he as n,ye as o,_t as p,m as q,x as r,ve as s,ke as t,Xt as u,It as v,Ot as w,Ce as x,Pe as y,Q as z,we as A,$t as B,Ae as C,Ke as D,Zt as E,en as F,F as G,$ as H,Xo as I,ue as J,pe as K,qo as L};
92
+ }`;import We from"node:fs";import ze from"node:os";import Ve from"node:path";var In="gpt-5.4",On="auto-gemini-3",Dn=["gpt-5.4","gpt-5.3-codex","gpt-5.3-codex-spark"],Nn=["auto-gemini-3","gemini-3.1-pro-preview","gemini-3-flash-preview","gemini-2.5-pro","gemini-2.5-flash"];function Ge(e){let t=new Set,o=[];for(let r of e){let i=r.trim();if(!i)continue;let s=i.toLowerCase();t.has(s)||(t.add(s),o.push(i))}return o}n(Ge,"dedupePreserveOrder");function Bn(){let e=Ve.join(ze.homedir(),".codex","config.toml");try{return We.readFileSync(e,"utf8").match(/^\s*model\s*=\s*"([^"]+)"/m)?.[1]?.trim()||null}catch{return null}}n(Bn,"readCodexConfiguredModel");function Ln(){let e=Ve.join(ze.homedir(),".gemini","settings.json");try{let t=JSON.parse(We.readFileSync(e,"utf8")),o=typeof t.model=="string"?t.model.trim():"";return o||(typeof t.general?.model=="string"?t.general.model.trim():"")||null}catch{return null}}n(Ln,"readGeminiConfiguredModel");function S(){return Bn()||In}n(S,"getCodexCliDefaultModel");function _(){return Ln()||On}n(_,"getGeminiCliDefaultModel");function B(){return Ge([S(),...Dn])}n(B,"getCodexCliKnownModels");function L(){return Ge([_(),...Nn])}n(L,"getGeminiCliKnownModels");var _s=_(),As=L();var Us=S(),Ws=B();import{existsSync as Jn,readFileSync as Yn}from"node:fs";import K from"node:path";import{fileURLToPath as Qn}from"node:url";var qe=["none","prompt-only","native-effort","native-budget","native-toggle","native-adaptive","unknown"],He=["openai-responses-effort","openai-chat-effort","codex-cli-config","anthropic-output-effort","anthropic-reasoning-effort","provider-budget","provider-toggle","prompt-only","none"],Je=["anthropic-adaptive","anthropic-budget","provider-budget","provider-toggle","none"],Ye=["zai-glm-5.3","zai-glm-5.2","zai-glm-toggle","deepseek-v4-flash-openai","deepseek-v4-pro-openai","deepseek-v4-openai","deepseek-v4-anthropic","deepseek-toggle","kimi-k3","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"],Qe=["max_tokens","max_completion_tokens"],Ze=["native","image-input-native","cli-bridge","image-input-cli-bridge"],et=["count-tokens","models-list","minimal-message","unsupported"];function C(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}n(C,"isPlainObject");function w(e,t){if(typeof e!="string"||e.length===0)throw new Error(`provider-capabilities.json: ${t} must be a non-empty string`);return e}n(w,"requireString");function A(e,t){if(e!==void 0)return w(e,t)}n(A,"optionalString");function ot(e,t){if(e!==void 0){if(typeof e!="string"||!Qe.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Qe.join(", ")}, got ${JSON.stringify(e)}`);return e}}n(ot,"optionalMaxOutputTokensField");function E(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}}n(E,"optionalNumber");function h(e,t){if(e!==void 0){if(typeof e!="boolean")throw new Error(`provider-capabilities.json: ${t} must be a boolean`);return e}}n(h,"optionalBoolean");function tt(e,t){if(e!==void 0){if(!Array.isArray(e))throw new Error(`provider-capabilities.json: ${t} must be an array`);return e.map((o,r)=>w(o,`${t}[${r}]`))}}n(tt,"optionalStringArray");function $n(e,t){if(e===void 0)return;if(!C(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let o={};for(let[r,i]of Object.entries(e))o[r]=w(i,`${t}.${r}`);return o}n($n,"optionalStringMap");function jn(e,t){if(e!==void 0){if(typeof e!="string"||!Ye.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Ye.join(", ")}, got ${JSON.stringify(e)}`);return e}}n(jn,"optionalReasoningPreset");function oe(e,t){if(typeof e!="string"||!qe.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${qe.join(", ")}, got ${JSON.stringify(e)}`);return e}n(oe,"requireReasoningCapability");function Un(e,t){if(typeof e!="string"||!He.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${He.join(", ")}, got ${JSON.stringify(e)}`);return e}n(Un,"requireEffortStrategy");function Wn(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}}n(Wn,"optionalThinkingStrategy");function nt(e,t){if(e===void 0)return;if(!C(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let o=Un(e.effortStrategy,`${t}.effortStrategy`),r=jn(e.reasoningPreset,`${t}.reasoningPreset`),i=Wn(e.thinkingStrategy,`${t}.thinkingStrategy`),s=A(e.defaultEffort,`${t}.defaultEffort`),a=$n(e.effortAliases,`${t}.effortAliases`),d=tt(e.disabledEfforts,`${t}.disabledEfforts`),l=tt(e.localRejectEfforts,`${t}.localRejectEfforts`),y=h(e.allowCustomEffort,`${t}.allowCustomEffort`),u=h(e.supportsReasoningEffort,`${t}.supportsReasoningEffort`),v=h(e.supportsReasoningSummary,`${t}.supportsReasoningSummary`),P=h(e.supportsEncryptedReasoningReplay,`${t}.supportsEncryptedReasoningReplay`),T=h(e.supportsAdaptiveThinking,`${t}.supportsAdaptiveThinking`),c=h(e.supportsManualThinkingBudget,`${t}.supportsManualThinkingBudget`),R=h(e.supportsDisabledThinking,`${t}.supportsDisabledThinking`),b=h(e.requiresEffortBetaHeader,`${t}.requiresEffortBetaHeader`),f={effortStrategy:o};if(r!==void 0&&(f.reasoningPreset=r),i!==void 0&&(f.thinkingStrategy=i),s!==void 0&&(f.defaultEffort=s),a!==void 0&&(f.effortAliases=a),d!==void 0&&(f.disabledEfforts=d),l!==void 0&&(f.localRejectEfforts=l),e.supportedEfforts!==void 0){if(!Array.isArray(e.supportedEfforts))throw new Error(`provider-capabilities.json: ${t}.supportedEfforts must be an array`);f.supportedEfforts=e.supportedEfforts.map((p,g)=>{if(!C(p))throw new Error(`provider-capabilities.json: ${t}.supportedEfforts[${g}] must be an object`);return{value:w(p.value,`${t}.supportedEfforts[${g}].value`),...A(p.description,`${t}.supportedEfforts[${g}].description`)!==void 0?{description:A(p.description,`${t}.supportedEfforts[${g}].description`)}:{},...h(p.isDefault,`${t}.supportedEfforts[${g}].isDefault`)!==void 0?{isDefault:h(p.isDefault,`${t}.supportedEfforts[${g}].isDefault`)}:{},...h(p.isUserVisible,`${t}.supportedEfforts[${g}].isUserVisible`)!==void 0?{isUserVisible:h(p.isUserVisible,`${t}.supportedEfforts[${g}].isUserVisible`)}:{}}})}if(e.budgetByEffort!==void 0){if(!C(e.budgetByEffort))throw new Error(`provider-capabilities.json: ${t}.budgetByEffort must be an object`);let p={};for(let[g,ge]of Object.entries(e.budgetByEffort))p[g]=E(ge,`${t}.budgetByEffort.${g}`)??0;f.budgetByEffort=p}return y!==void 0&&(f.allowCustomEffort=y),u!==void 0&&(f.supportsReasoningEffort=u),v!==void 0&&(f.supportsReasoningSummary=v),P!==void 0&&(f.supportsEncryptedReasoningReplay=P),T!==void 0&&(f.supportsAdaptiveThinking=T),c!==void 0&&(f.supportsManualThinkingBudget=c),R!==void 0&&(f.supportsDisabledThinking=R),b!==void 0&&(f.requiresEffortBetaHeader=b),f}n(nt,"validateReasoningProfile");function rt(e,t){let o=e.reasoningProfile,r=e.reasoningCapabilityV2;if(o!==void 0&&r!==void 0)throw new Error(`provider-capabilities.json: ${t} must not define both reasoningProfile and deprecated reasoningCapabilityV2`);return o!==void 0?nt(o,`${t}.reasoningProfile`):nt(r,`${t}.reasoningCapabilityV2`)}n(rt,"validateReasoningProfileField");function zn(e,t){if(typeof e!="string"||!Ze.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${Ze.join(", ")}, got ${JSON.stringify(e)}`);return e}n(zn,"requireProfileName");function Vn(e,t){if(typeof e!="string"||!et.includes(e))throw new Error(`provider-capabilities.json: ${t} must be one of ${et.join(", ")}, got ${JSON.stringify(e)}`);return e}n(Vn,"requireVerifyStrategy");function Gn(e,t){if(!C(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let o=w(e.id,`${t}.id`),r=A(e.wireModel,`${t}.wireModel`),i=A(e.displayName,`${t}.displayName`),s=E(e.contextWindow,`${t}.contextWindow`),a=E(e.maxOutputTokens,`${t}.maxOutputTokens`),d=ot(e.maxOutputTokensField,`${t}.maxOutputTokensField`),l=E(e.thinkingBudgetCap,`${t}.thinkingBudgetCap`),y=h(e.replayReasoningContent,`${t}.replayReasoningContent`),u=h(e.strictThinkingSignature,`${t}.strictThinkingSignature`),v=E(e.streamMaxDurationMs,`${t}.streamMaxDurationMs`),P=e.reasoningCapability===void 0?void 0:oe(e.reasoningCapability,`${t}.reasoningCapability`),T=rt(e,t),c={id:o};return r!==void 0&&(c.wireModel=r),i!==void 0&&(c.displayName=i),s!==void 0&&(c.contextWindow=s),a!==void 0&&(c.maxOutputTokens=a),d!==void 0&&(c.maxOutputTokensField=d),l!==void 0&&(c.thinkingBudgetCap=l),P!==void 0&&(c.reasoningCapability=P),T!==void 0&&(c.reasoningProfile=T),y!==void 0&&(c.replayReasoningContent=y),u!==void 0&&(c.strictThinkingSignature=u),v!==void 0&&(c.streamMaxDurationMs=v),c}n(Gn,"validateModelDescriptor");function qn(e,t){if(e===void 0)return;if(!C(e))throw new Error(`provider-capabilities.json: ${t} must be an object`);let o={};for(let[r,i]of Object.entries(e))o[r]=oe(i,`${t}.${r}`);return o}n(qn,"validateModelReasoningCapabilities");function Hn(e,t){if(!C(e))throw new Error(`provider-capabilities.json: providers.${t} must be an object`);let o=h(e.cliBridge,`providers.${t}.cliBridge`),r=w(e.apiKeyEnv,`providers.${t}.apiKeyEnv`),i=oe(e.reasoningCapability,`providers.${t}.reasoningCapability`),s=rt(e,`providers.${t}`),a=zn(e.capabilityProfile,`providers.${t}.capabilityProfile`),d=Vn(e.verifyStrategy,`providers.${t}.verifyStrategy`);if(o&&d!=="unsupported")throw new Error(`provider-capabilities.json: providers.${t} is a cliBridge entry but verifyStrategy="${d}" \u2014 must be "unsupported" (CLI binary owns credentials)`);let l=E(e.contextWindow,`providers.${t}.contextWindow`),y=E(e.maxOutputTokens,`providers.${t}.maxOutputTokens`),u=ot(e.maxOutputTokensField,`providers.${t}.maxOutputTokensField`),v=E(e.thinkingBudgetCap,`providers.${t}.thinkingBudgetCap`),P=h(e.supportsThinking,`providers.${t}.supportsThinking`),T=qn(e.modelReasoningCapabilities,`providers.${t}.modelReasoningCapabilities`),c=A(e.model,`providers.${t}.model`);if(o&&(c!==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(!o&&c===void 0)throw new Error(`provider-capabilities.json: providers.${t}.model is required (only cliBridge entries may omit)`);let R;if(e.models!==void 0){if(!Array.isArray(e.models))throw new Error(`provider-capabilities.json: providers.${t}.models must be an array`);R=e.models.map((p,g)=>Gn(p,`providers.${t}.models[${g}]`));let f=new Set([...c===void 0?[]:[c],...R.map(p=>p.id)]);for(let[p,g]of R.entries())if(g.wireModel!==void 0&&!f.has(g.wireModel))throw new Error(`provider-capabilities.json: providers.${t}.models[${p}].wireModel must reference a declared model, got ${JSON.stringify(g.wireModel)}`)}let b={apiKeyEnv:r,reasoningCapability:i,capabilityProfile:a,verifyStrategy:d};return s!==void 0&&(b.reasoningProfile=s),c!==void 0&&(b.model=c),R!==void 0&&(b.models=R),l!==void 0&&(b.contextWindow=l),y!==void 0&&(b.maxOutputTokens=y),u!==void 0&&(b.maxOutputTokensField=u),v!==void 0&&(b.thinkingBudgetCap=v),P!==void 0&&(b.supportsThinking=P),T!==void 0&&(b.modelReasoningCapabilities=T),o&&(b.cliBridge=!0),b}n(Hn,"validateProviderEntry");function it(e){if(!C(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=w(e.updatedAt,"updatedAt");if(!C(e.providers))throw new Error("provider-capabilities.json: providers must be an object");let o={};for(let[r,i]of Object.entries(e.providers))o[r]=Hn(i,r);return{version:1,updatedAt:t,providers:o}}n(it,"validateProviderCapabilitiesJson");var Zn=Object.freeze({native:D,"image-input-native":De,"cli-bridge":z,"image-input-cli-bridge":Ne}),H=null;function eo(){if(process.env.KODAX_BUNDLED==="true")return K.join(K.dirname(process.execPath),"provider-capabilities.json");let e=K.dirname(Qn(import.meta.url)),t=[K.join(e,"provider-capabilities.json"),K.join(K.dirname(e),"provider-capabilities.json")];for(let o of t)if(Jn(o))return o;return t[0]}n(eo,"resolveJsonPath");function to(e){if(e.models){for(let t of e.models)t.reasoningProfile&&st(t.reasoningProfile);for(let t of e.models)Object.freeze(t);Object.freeze(e.models)}return e.reasoningProfile&&st(e.reasoningProfile),e.modelReasoningCapabilities&&Object.freeze(e.modelReasoningCapabilities),Object.freeze(e)}n(to,"deepFreezeSnapshot");function st(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)}n(st,"freezeReasoningProfile");function no(e){if(e==="gemini-cli"){let t=_();return{model:t,models:L().filter(o=>o!==t).map(o=>({id:o}))}}if(e==="codex-cli"){let t=S();return{model:t,models:B().filter(o=>o!==t).map(o=>({id:o}))}}throw new Error(`provider-capabilities loader: unknown cliBridge provider '${e}'`)}n(no,"resolveCliBridgeModels");function oo(e,t){let o=Zn[t.capabilityProfile];if(!o)throw new Error(`provider-capabilities loader: unknown capabilityProfile '${t.capabilityProfile}' for provider '${e}'`);if(t.cliBridge){let i=no(e),s={model:i.model,models:i.models,apiKeyEnv:t.apiKeyEnv,reasoningCapability:t.reasoningCapability,capabilityProfile:o,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:o,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.maxOutputTokensField!==void 0&&(r.maxOutputTokensField=t.maxOutputTokensField),t.thinkingBudgetCap!==void 0&&(r.thinkingBudgetCap=t.thinkingBudgetCap),t.supportsThinking!==void 0&&(r.supportsThinking=t.supportsThinking),r}n(oo,"buildSnapshot");function at(){if(H)return H;let e=eo(),t;try{let i=Yn(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 o=it(t),r={};for(let[i,s]of Object.entries(o.providers))r[i]=to(oo(i,s));return H=Object.freeze(r),H}n(at,"getProviderSnapshots");var X=at();var dt=process.env.KODAX_PROVIDER??"zhipu-coding";var F=["image/png","image/jpeg","image/webp","image/gif"],$=["video/mp4","video/mpeg","video/quicktime","video/x-msvideo","video/x-flv","video/webm","video/x-ms-wmv","video/3gpp"],Ao=[],Ko=new Set(["anthropic","openai"]),Xo=new Set(["ark-coding/doubao-seed-2.0-code","ark-coding/doubao-seed-2.0-pro","ark-coding/kimi-k2.6","ark-coding/kimi-k2.7-code","ark-coding/minimax-m3","kimi-code/k3-256k","qwen-token-plan/qwen3.8-max","qwen-token-plan/qwen3.8-max-preview","qwen-token-plan/qwen3.7-plus","qwen-token-plan/qwen3.6-flash"]),Io=new Set(["kimi-code/kimi-for-coding","kimi-code/kimi-for-coding-highspeed","kimi-code/k3","kimi/kimi-k3","kimi/kimi-k2.5","kimi/kimi-k2.6","kimi/kimi-k2.7-code","kimi/kimi-k2.7-code-highspeed","minimax-coding/minimax-m3","minimax/minimax-m3","mimo-coding/mimo-v2.5","mimo/mimo-v2.5"]);function le(e){return{nativeSupported:!1,sdkSupported:!1,status:"unsupported",mediaTypes:[],maxCount:0,reason:e}}n(le,"unsupported");function Oo(e){return{nativeSupported:!0,sdkSupported:!0,status:"supported",mediaTypes:F,nativeMediaTypes:F,reason:e}}n(Oo,"supportedImage");function Do(e){return{nativeSupported:!0,sdkSupported:!1,status:"provider-native-unwired",mediaTypes:[],nativeMediaTypes:$,maxCount:0,reason:e}}n(Do,"nativeVideoUnwired");function No(e){return e.trim().toLowerCase()}n(No,"normalizeProvider");function Bo(e){return X[e]?.model}n(Bo,"resolveProviderDefaultModel");function Et(e,t){if(!t)return;let o=t.trim().toLowerCase();if(e==="kimi"){if(o==="k2.5")return"kimi-k2.5";if(o==="k2.6")return"kimi-k2.6";if(o==="k2.7-code")return"kimi-k2.7-code";if(o==="k2.7-code-highspeed")return"kimi-k2.7-code-highspeed"}return(e==="minimax-coding"||e==="minimax")&&o==="minimax-m3"?"minimax-m3":o}n(Et,"normalizeModel");function Lo(e){if(!Ko.has(e))return!1;let t=X[e];return t?N(t.capabilityProfile).multimodalSupport!=="none":!1}n(Lo,"hasOfficialImageSupport");function Fo(e,t){let o=Et(e,t);if(!o)return!1;let r=`${e}/${o}`;return Io.has(r)}n(Fo,"hasSourceBackedNativeMedia");function $o(e,t){let o=Et(e,t);return o?Xo.has(`${e}/${o}`):!1}n($o,"hasSourceBackedImage");function jo(e,t,o){if(o)return"source-backed";if(t){if(e==="openai")return"openai-official";if(e==="anthropic")return"anthropic-official"}}n(jo,"resolveImageCapabilityRoute");function Uo(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."}}n(Uo,"imageCapabilityReason");function ue(e){let t=No(e.provider),o=e.model?.trim()||Bo(t),r=Lo(t),i=Fo(t,o),s=i||$o(t,o),a=jo(t,r,s),d=a!==void 0,l=i;return{text:!0,image:d?Oo(Uo(a)):le("No verified KodaX image-input route for this provider/model."),video:l?Do("Model route is native-video capable, but KodaX SDK video sending is not wired yet. Reject or downgrade before send."):le("No verified native video route for this provider/model."),file:le("File artifact contract is stable, but KodaX SDK file sending/extraction is not wired yet. Reject or downgrade before send.")}}n(ue,"getModelInputCapabilities");function Wo(e){return F.includes(e)}n(Wo,"isKnownImageMediaType");function zo(e){return $.includes(e)}n(zo,"isKnownVideoMediaType");function ce(e){return`${e.provider}${e.model?`/${e.model}`:""}`}n(ce,"routeLabel");function fe(e){return e.reason?`${e.status}: ${e.reason}`:e.status}n(fe,"capabilityDetail");function pe(e,t){if(e.length===0)return;let o=ue(t);for(let r of e){let i=r;if(i.kind==="image"){if(!o.image.nativeSupported||!o.image.sdkSupported)throw new m("MODEL_INPUT_UNSUPPORTED",`Provider/model cannot consume image artifacts: ${ce(t)}.`,{detail:fe(o.image)});if(typeof i.mediaType=="string"&&!Wo(i.mediaType))throw new m("UNSUPPORTED_MEDIA_TYPE",`Unsupported image media type: ${i.mediaType}.`);continue}throw i.kind==="video"?typeof i.mediaType!="string"||!zo(i.mediaType)?new m("UNSUPPORTED_MEDIA_TYPE",`Unsupported video media type: ${String(i.mediaType)}.`,{detail:`Supported video media types: ${$.join(", ")}`}):new m("MODEL_INPUT_UNSUPPORTED",`Provider/model cannot consume video artifacts through this SDK runtime: ${ce(t)}.`,{detail:fe(o.video)}):i.kind==="file"?typeof i.mediaType=="string"&&typeof i.mimeType=="string"&&i.mediaType!==i.mimeType?new m("UNSUPPORTED_MEDIA_TYPE",`File artifact mediaType and mimeType disagree: ${i.mediaType} != ${i.mimeType}.`):new m("MODEL_INPUT_UNSUPPORTED",`Provider/model cannot consume file artifacts through this SDK runtime: ${ce(t)}.`,{detail:fe(o.file)}):new m("MODEL_INPUT_UNSUPPORTED",`Unsupported input artifact kind: ${String(i.kind)}.`)}}n(pe,"validateInputArtifactsForModel");function Vo(e){if(pe(e.inputArtifacts??[],e),e.agentId!==void 0&&e.sessionId!==void 0)throw new Error("enqueueWithArtifacts accepts either agentId or sessionId, not both.");if(e.sessionId!==void 0&&e.sessionId.trim().length===0)throw new Error("enqueueWithArtifacts sessionId must not be empty.");let t=e.agentId??(e.sessionId!==void 0?J(e.sessionId,"/root"):Y());return I().enqueue({priority:e.priority??"user",mode:"prompt",content:e.content,agentId:t,inputArtifacts:e.inputArtifacts})}n(Vo,"enqueueWithArtifacts");export{on as a,rn as b,sn as c,an as d,dn as e,fn as f,U as g,I as h,wt as i,J as j,Mt as k,Y as l,St as m,he as n,ye as o,_t as p,m as q,x as r,ve as s,ke as t,Xt as u,It as v,Ot as w,Ce as x,Pe as y,Q as z,we as A,$t as B,Ae as C,Ke as D,Zt as E,en as F,F as G,$ as H,Ao as I,ue as J,pe as K,Vo as L};