@kodax-ai/kodax 0.7.84 → 0.7.86
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +218 -5
- package/README.md +1888 -1850
- package/README_CN.md +1146 -1137
- package/dist/chunks/agent-IO6TXNCV.js +2 -0
- package/dist/chunks/argument-completer-JMICSGL6.js +2 -0
- package/dist/chunks/chunk-2RAXDUC7.js +379 -0
- package/dist/chunks/chunk-A5VQGXH2.js +2 -0
- package/dist/chunks/{chunk-OHZFGQEH.js → chunk-AAFFS6RU.js} +2 -2
- package/dist/chunks/chunk-B36G256E.js +679 -0
- package/dist/chunks/chunk-G5FGIRDJ.js +1278 -0
- package/dist/chunks/chunk-GVGLYVG4.js +5 -0
- package/dist/chunks/chunk-MFCPQZ7E.js +519 -0
- package/dist/chunks/chunk-Q6UAGROD.js +415 -0
- package/dist/chunks/chunk-R4EHASEN.js +319 -0
- package/dist/chunks/chunk-U6HNMLNN.js +410 -0
- package/dist/chunks/chunk-UH5WNJXF.js +92 -0
- package/dist/chunks/{chunk-WTYAZOWO.js → chunk-UKCDCVMD.js} +1 -1
- package/dist/chunks/chunk-XA4ENCAH.js +412 -0
- package/dist/chunks/{chunk-ZVPTDYDI.js → chunk-XUKLF26Q.js} +2 -2
- package/dist/chunks/compaction-config-5RMG22CY.js +2 -0
- package/dist/chunks/{construction-bootstrap-EVQ6VWSX.js → construction-bootstrap-4DGAYOWH.js} +1 -1
- package/dist/chunks/dist-DFW7MXT7.js +2 -0
- package/dist/chunks/host-6MMHYTI5.js +2 -0
- package/dist/chunks/run-manager-ISQSWCAM.js +2 -0
- package/dist/chunks/utils-LV7FHKYN.js +2 -0
- package/dist/index.d.ts +17 -15
- package/dist/index.js +2 -2
- package/dist/kodax_bootstrap.js +1 -1
- package/dist/kodax_cli.js +2074 -1615
- package/dist/kodax_resume.js +271 -90
- package/dist/runtime-worker.js +1812 -1359
- package/dist/sandbox-workspace-session.js +1069 -112
- package/dist/sdk-a2a.d.ts +11 -10
- package/dist/sdk-a2a.js +9 -8
- package/dist/sdk-agent.d.ts +39 -299
- package/dist/sdk-agent.js +1 -1
- package/dist/sdk-coding.d.ts +103 -16
- package/dist/sdk-coding.js +1 -1
- package/dist/sdk-experimental-memory.d.ts +7 -20
- package/dist/sdk-experimental-memory.js +1 -1
- package/dist/sdk-mcp.js +1 -1
- package/dist/sdk-media.js +1 -1
- package/dist/sdk-repl.d.ts +14 -15
- package/dist/sdk-repl.js +2 -2
- package/dist/sdk-runtime.d.ts +73 -24
- package/dist/sdk-runtime.js +1 -1
- package/dist/sdk-sandbox.d.ts +1 -1
- package/dist/sdk-sandbox.js +1 -1
- package/dist/sdk-session.d.ts +7 -6
- package/dist/sdk-session.js +1 -1
- package/dist/sdk-skills.d.ts +2 -2
- package/dist/sdk-skills.js +1 -1
- package/dist/semantic-worker.js +250 -64
- package/dist/types-chunks/{bash-prefix-extractor.d-CkdGL4rM.d.ts → bash-prefix-extractor.d-QqKtuLZm.d.ts} +137 -14
- package/dist/types-chunks/{capsule.d-7wQ_kM1C.d.ts → capsule.d-CN_iMqAS.d.ts} +2 -1
- package/dist/types-chunks/controller.d-A73Kf6tH.d.ts +105 -0
- package/dist/types-chunks/{controller.d-CesRxFL5.d.ts → controller.d-Dzxz22X-.d.ts} +26 -1020
- package/dist/types-chunks/{guardrail.d-KaIeVree.d.ts → guardrail.d-Y_AIh8-I.d.ts} +21 -21
- package/dist/types-chunks/{history-retrieval.d-CbCls7r0.d.ts → history-retrieval.d-Debbzn1z.d.ts} +1 -1
- package/dist/types-chunks/{public-api.d-DpRj8b7d.d.ts → public-api.d-Cg-4GTbK.d.ts} +3 -2
- package/dist/types-chunks/{repl.d-DWeC3PLW.d.ts → repl.d-Bhrbueab.d.ts} +5 -5
- package/dist/types-chunks/review-inbox.d-DuZqFX-z.d.ts +221 -0
- package/dist/types-chunks/{run-manager.d-BXBkLT0A.d.ts → run-manager.d-BS4lJfL3.d.ts} +1 -1
- package/dist/types-chunks/{sdk-session-DEtS6u20.d.ts → sdk-session-fQ_KENev.d.ts} +2 -2
- package/dist/types-chunks/{shell-command-sets.d-P2h4_KKL.d.ts → shell-command-sets.d-DRGjd_7Q.d.ts} +3 -2
- package/dist/types-chunks/{types-Bf3Y3mW-.d.ts → types-PHjfwebT.d.ts} +62 -190
- package/dist/types-chunks/{types.d-0m3PS7Ng.d.ts → types.d-BRrJU4pb.d.ts} +2 -2
- package/dist/types-chunks/{types.d-BbtGlKZu.d.ts → types.d-BSPlmJqf.d.ts} +25 -6
- package/dist/types-chunks/{types.d-CUtMr2IG.d.ts → types.d-Bo4fyMLu.d.ts} +1 -1
- package/dist/types-chunks/types.d-DlLBRqZ9.d.ts +1057 -0
- package/dist/types-chunks/{utils.d-C-eSIZ9n.d.ts → utils.d-BIhh_BqE.d.ts} +7 -4
- package/package.json +4 -2
- package/dist/chunks/agent-VMXNVYRK.js +0 -2
- package/dist/chunks/argument-completer-QCS6GUAE.js +0 -2
- package/dist/chunks/chunk-4ZI2CPUQ.js +0 -885
- package/dist/chunks/chunk-6UENDY33.js +0 -89
- package/dist/chunks/chunk-726WJGGY.js +0 -2
- package/dist/chunks/chunk-A7L7XTUH.js +0 -292
- package/dist/chunks/chunk-BBBS644N.js +0 -319
- package/dist/chunks/chunk-E7C4DRD2.js +0 -5
- package/dist/chunks/chunk-ET2BMEQQ.js +0 -655
- package/dist/chunks/chunk-EVXIJPZ6.js +0 -218
- package/dist/chunks/chunk-F44YYR6Z.js +0 -479
- package/dist/chunks/chunk-GRLC3N46.js +0 -385
- package/dist/chunks/chunk-KHEFUT6O.js +0 -5
- package/dist/chunks/chunk-TDJS5SFS.js +0 -348
- package/dist/chunks/chunk-WXHHZZRJ.js +0 -379
- package/dist/chunks/compaction-config-QTMFP7AF.js +0 -2
- package/dist/chunks/dist-XRH6CRLL.js +0 -2
- package/dist/chunks/host-F4TPD6WY.js +0 -2
- package/dist/chunks/run-manager-PYD46OGY.js +0 -2
- package/dist/chunks/utils-TOTTXU2I.js +0 -2
- package/docs/SDK_EMBEDDER_GUIDE.md +0 -5752
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
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");import{Jimp as Dt}from"jimp";var Ce=2e3,Pe=Math.floor(3.75*1024*1024),Nt=[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{i=await Dt.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 Nt){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 Bt,readFile as Lt,rm as Ft}from"node:fs/promises";import{tmpdir as $t}from"node:os";import Te from"node:path";var xe=5e3;async function we(){switch(process.platform){case"darwin":return Ut();case"win32":return Wt();case"linux":return Vt();default:throw new m("UNSUPPORTED_PLATFORM",`Clipboard image fallback is not supported on platform "${process.platform}".`)}}n(we,"readClipboardImage");async function jt(e={}){let t=await we();return t?Q(t,e):null}n(jt,"readAndNormalizeClipboardImage");async function Me(e){let t=await Bt(Te.join($t(),"kodax-clip-")),o=Te.join(t,"clip.png");try{return await e(o)}finally{await Ft(t,{recursive:!0,force:!0}).catch(r=>{})}}n(Me,"runWithTempPng");async function Ut(){return Me(async e=>{let t=`set png_data to (the clipboard as \xABclass PNGf\xBB)
|
|
3
|
+
set fh to open for access POSIX file "${e.replace(/"/g,'\\"')}" with write permission
|
|
4
|
+
write png_data to fh
|
|
5
|
+
close access fh`;return await _e("osascript",["-e",t])?Se(e):null})}n(Ut,"readMacClipboard");async function Wt(){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(Wt,"readWinClipboard");async function Vt(){return await Re("wl-paste",["--type","image/png"])??Re("xclip",["-selection","clipboard","-t","image/png","-o"])}n(Vt,"readLinuxClipboard");async function Se(e){try{let t=await Lt(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 Gt,readdir as qt,stat as Ht,unlink as Jt,writeFile as Yt}from"node:fs/promises";import{tmpdir as Qt}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(Qt(),"kodax-paste")}n(Xe,"resolvePasteTmpDir");function Zt(e){let t=e?.trim().replace(/[^A-Za-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"");return t&&t.length>0?t:"paste"}n(Zt,"sanitizeFileNamePrefix");async function en(e,t={}){let o=t.directory??Xe();await Gt(o,{recursive:!0});let r=e.mediaType==="image/jpeg"?".jpg":".png",i=zt("sha256").update(e.buffer).digest("hex").slice(0,16),s=`${Zt(t.fileNamePrefix)}-${i}${r}`,a=Z.join(o,s);return await Yt(a,e.buffer),{type:"image",path:a,mediaType:e.mediaType}}n(en,"persistImageAsBlock");async function tn(e=Date.now()){let t=Xe(),o;try{o=await qt(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 Ht(a)).mtimeMs<r&&(await Jt(a),i+=1)}catch(d){}})),i}n(tn,"prunePasteTmpDir");import{AsyncLocalStorage as nn}from"node:async_hooks";var on=new nn;function rn(e){let t=on.getStore()?.credential;return t?O(e,t,new WeakMap):e}n(rn,"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 sn(e,t,o){return e[W(t,o)]?.rejected??[]}n(sn,"getRejectedEfforts");function an(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(an,"addRejectedEffort");function dn(e,t,o){if(!t)return{};let r={...e};return delete r[W(t,o)],r}n(dn,"removeCacheEntry");function ln(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(ln,"sanitizeCapabilityCache");import{AsyncLocalStorage as un}from"node:async_hooks";var cn=new un,Ie=8,Oe=32;function fn(e){if(e===void 0)return;let t=Number.parseInt(e,10);return Number.isInteger(t)&&t>0?t:void 0}n(fn,"parsePositiveInt");function pn(){let e=ee()?.workflow?.maxConcurrency,t=typeof e=="number"&&Number.isInteger(e)&&e>0?e:fn(process.env.KODAX_WORKFLOW_MAX_CONCURRENCY)??Ie;return Math.max(1,Math.min(Oe,t))}n(pn,"resolveWorkflowMaxConcurrency");function ee(){return cn.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"},V={transport:"cli-bridge",conversationSemantics:"last-user-message",mcpSupport:"none",contextFidelity:"lossy",toolCallingFidelity:"limited",sessionSupport:"stateless",longRunningSupport:"limited",multimodalSupport:"none",evidenceSupport:"limited"},Ne={...V,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 Ti from"@anthropic-ai/sdk";import{parse as li}from"partial-json";import Li from"openai";import{ClientSideConnection as rs,PROTOCOL_VERSION as is,ndJsonStream as ss}from"@agentclientprotocol/sdk";var Yi=Object.freeze({status:"terminated"}),Qi=Object.freeze({status:"already-exited"}),Zi=Object.freeze({status:"unknown"}),es=String.raw`
|
|
6
|
+
using System;
|
|
7
|
+
using System.Runtime.InteropServices;
|
|
8
|
+
using System.Text;
|
|
9
|
+
public static class KodaXNativeProcessSnapshot {
|
|
10
|
+
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
|
|
11
|
+
private struct ProcessEntry32 {
|
|
12
|
+
public uint dwSize;
|
|
13
|
+
public uint cntUsage;
|
|
14
|
+
public uint th32ProcessID;
|
|
15
|
+
public IntPtr th32DefaultHeapID;
|
|
16
|
+
public uint th32ModuleID;
|
|
17
|
+
public uint cntThreads;
|
|
18
|
+
public uint th32ParentProcessID;
|
|
19
|
+
public int pcPriClassBase;
|
|
20
|
+
public uint dwFlags;
|
|
21
|
+
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
|
|
22
|
+
public string szExeFile;
|
|
23
|
+
}
|
|
24
|
+
[DllImport("kernel32.dll", SetLastError = true)]
|
|
25
|
+
private static extern IntPtr CreateToolhelp32Snapshot(uint flags, uint processId);
|
|
26
|
+
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
|
|
27
|
+
private static extern bool Process32First(IntPtr snapshot, ref ProcessEntry32 entry);
|
|
28
|
+
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
|
|
29
|
+
private static extern bool Process32Next(IntPtr snapshot, ref ProcessEntry32 entry);
|
|
30
|
+
[StructLayout(LayoutKind.Sequential)]
|
|
31
|
+
private struct FileTime {
|
|
32
|
+
public uint Low;
|
|
33
|
+
public uint High;
|
|
34
|
+
}
|
|
35
|
+
[DllImport("kernel32.dll", SetLastError = true)]
|
|
36
|
+
private static extern IntPtr OpenProcess(uint access, bool inheritHandle, uint processId);
|
|
37
|
+
[DllImport("kernel32.dll", SetLastError = true)]
|
|
38
|
+
private static extern bool GetProcessTimes(IntPtr process, out FileTime creation, out FileTime exit, out FileTime kernel, out FileTime user);
|
|
39
|
+
[DllImport("kernel32.dll", SetLastError = true)]
|
|
40
|
+
private static extern bool TerminateProcess(IntPtr process, uint exitCode);
|
|
41
|
+
[DllImport("kernel32.dll")]
|
|
42
|
+
private static extern void GetSystemTimeAsFileTime(out FileTime systemTime);
|
|
43
|
+
[DllImport("kernel32.dll")]
|
|
44
|
+
private static extern bool CloseHandle(IntPtr handle);
|
|
45
|
+
private static ulong ReadCreationTime(uint processId) {
|
|
46
|
+
var process = OpenProcess(0x1000, false, processId);
|
|
47
|
+
if (process == IntPtr.Zero) return 0;
|
|
48
|
+
try {
|
|
49
|
+
FileTime creation, exit, kernel, user;
|
|
50
|
+
if (!GetProcessTimes(process, out creation, out exit, out kernel, out user)) return 0;
|
|
51
|
+
return ((ulong)creation.High << 32) | creation.Low;
|
|
52
|
+
} finally {
|
|
53
|
+
CloseHandle(process);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
public static int TerminateExact(uint processId, ulong expectedCreationTime) {
|
|
57
|
+
var process = OpenProcess(0x1001, false, processId);
|
|
58
|
+
if (process == IntPtr.Zero) return 0;
|
|
59
|
+
try {
|
|
60
|
+
FileTime creation, exit, kernel, user;
|
|
61
|
+
if (!GetProcessTimes(process, out creation, out exit, out kernel, out user)) return 0;
|
|
62
|
+
var actual = (((ulong)creation.High << 32) | creation.Low) / 10000;
|
|
63
|
+
if (actual != expectedCreationTime) return 2;
|
|
64
|
+
return TerminateProcess(process, 1) ? 1 : 0;
|
|
65
|
+
} finally {
|
|
66
|
+
CloseHandle(process);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
public static string ReadRows() {
|
|
70
|
+
FileTime cutoffTime;
|
|
71
|
+
GetSystemTimeAsFileTime(out cutoffTime);
|
|
72
|
+
var cutoff = (((ulong)cutoffTime.High << 32) | cutoffTime.Low) / 10000;
|
|
73
|
+
var snapshot = CreateToolhelp32Snapshot(2, 0);
|
|
74
|
+
if (snapshot == new IntPtr(-1)) return string.Empty;
|
|
75
|
+
var rows = new StringBuilder();
|
|
76
|
+
var entry = new ProcessEntry32();
|
|
77
|
+
entry.dwSize = (uint)Marshal.SizeOf(entry);
|
|
78
|
+
try {
|
|
79
|
+
if (!Process32First(snapshot, ref entry)) return string.Empty;
|
|
80
|
+
do {
|
|
81
|
+
var creationTime = ReadCreationTime(entry.th32ProcessID) / 10000;
|
|
82
|
+
if (creationTime == 0 || creationTime <= cutoff) {
|
|
83
|
+
rows.Append(entry.th32ProcessID).Append(',').Append(entry.th32ParentProcessID).Append(',').Append(creationTime).Append('\n');
|
|
84
|
+
}
|
|
85
|
+
entry.dwSize = (uint)Marshal.SizeOf(entry);
|
|
86
|
+
} while (Process32Next(snapshot, ref entry));
|
|
87
|
+
return rows.ToString();
|
|
88
|
+
} finally {
|
|
89
|
+
CloseHandle(snapshot);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}`;import We from"node:fs";import Ve from"node:os";import ze from"node:path";var On="gpt-5.4",Dn="auto-gemini-3",Nn=["gpt-5.4","gpt-5.3-codex","gpt-5.3-codex-spark"],Bn=["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 Ln(){let e=ze.join(Ve.homedir(),".codex","config.toml");try{return We.readFileSync(e,"utf8").match(/^\s*model\s*=\s*"([^"]+)"/m)?.[1]?.trim()||null}catch{return null}}n(Ln,"readCodexConfiguredModel");function Fn(){let e=ze.join(Ve.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(Fn,"readGeminiConfiguredModel");function S(){return Ln()||On}n(S,"getCodexCliDefaultModel");function _(){return Fn()||Dn}n(_,"getGeminiCliDefaultModel");function B(){return Ge([S(),...Nn])}n(B,"getCodexCliKnownModels");function L(){return Ge([_(),...Bn])}n(L,"getGeminiCliKnownModels");var Fs=_(),$s=L();var Zs=S(),ea=B();import{existsSync as Yn,readFileSync as Qn}from"node:fs";import K from"node:path";import{fileURLToPath as Zn}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.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 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]=w(i,`${t}.${r}`);return o}n(jn,"optionalStringMap");function Un(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(Un,"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 Wn(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(Wn,"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=Wn(e.effortStrategy,`${t}.effortStrategy`),r=Un(e.reasoningPreset,`${t}.reasoningPreset`),i=Vn(e.thinkingStrategy,`${t}.thinkingStrategy`),s=A(e.defaultEffort,`${t}.defaultEffort`),a=jn(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 Gn(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(Gn,"requireVerifyStrategy");function qn(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(qn,"validateModelDescriptor");function Hn(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(Hn,"validateModelReasoningCapabilities");function Jn(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=Gn(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=Hn(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)=>qn(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(Jn,"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]=Jn(i,r);return{version:1,updatedAt:t,providers:o}}n(it,"validateProviderCapabilitiesJson");var eo=Object.freeze({native:D,"image-input-native":De,"cli-bridge":V,"image-input-cli-bridge":Ne}),H=null;function to(){if(process.env.KODAX_BUNDLED==="true")return K.join(K.dirname(process.execPath),"provider-capabilities.json");let e=K.dirname(Zn(import.meta.url)),t=[K.join(e,"provider-capabilities.json"),K.join(K.dirname(e),"provider-capabilities.json")];for(let o of t)if(Yn(o))return o;return t[0]}n(to,"resolveJsonPath");function no(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(no,"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 oo(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(oo,"resolveCliBridgeModels");function ro(e,t){let o=eo[t.capabilityProfile];if(!o)throw new Error(`provider-capabilities loader: unknown capabilityProfile '${t.capabilityProfile}' for provider '${e}'`);if(t.cliBridge){let i=oo(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(ro,"buildSnapshot");function at(){if(H)return H;let e=to(),t;try{let i=Qn(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]=no(ro(i,s));return H=Object.freeze(r),H}n(at,"getProviderSnapshots");import Ra from"@anthropic-ai/sdk";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"],Ko=[],Xo=new Set(["anthropic","openai"]),Io=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"]),Oo=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 Do(e){return{nativeSupported:!0,sdkSupported:!0,status:"supported",mediaTypes:F,nativeMediaTypes:F,reason:e}}n(Do,"supportedImage");function No(e){return{nativeSupported:!0,sdkSupported:!1,status:"provider-native-unwired",mediaTypes:[],nativeMediaTypes:$,maxCount:0,reason:e}}n(No,"nativeVideoUnwired");function Bo(e){return e.trim().toLowerCase()}n(Bo,"normalizeProvider");function Lo(e){return X[e]?.model}n(Lo,"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 Fo(e){if(!Xo.has(e))return!1;let t=X[e];return t?N(t.capabilityProfile).multimodalSupport!=="none":!1}n(Fo,"hasOfficialImageSupport");function $o(e,t){let o=Et(e,t);if(!o)return!1;let r=`${e}/${o}`;return Oo.has(r)}n($o,"hasSourceBackedNativeMedia");function jo(e,t){let o=Et(e,t);return o?Io.has(`${e}/${o}`):!1}n(jo,"hasSourceBackedImage");function Uo(e,t,o){if(o)return"source-backed";if(t){if(e==="openai")return"openai-official";if(e==="anthropic")return"anthropic-official"}}n(Uo,"resolveImageCapabilityRoute");function Wo(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(Wo,"imageCapabilityReason");function ue(e){let t=Bo(e.provider),o=e.model?.trim()||Lo(t),r=Fo(t),i=$o(t,o),s=i||jo(t,o),a=Uo(t,r,s),d=a!==void 0,l=i;return{text:!0,image:d?Do(Wo(a)):le("No verified KodaX image-input route for this provider/model."),video:l?No("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 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"&&!Vo(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 Go(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(Go,"enqueueWithArtifacts");export{rn as a,sn as b,an as c,dn as d,ln as e,pn 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,jt as B,Ae as C,Ke as D,en as E,tn as F,F as G,$ as H,Ko as I,ue as J,pe as K,Go as L};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
-
import{D as N,J as C}from"./chunk-
|
|
2
|
+
import{D as N,J as C}from"./chunk-XUKLF26Q.js";import{ee as q,fe as j,na as _}from"./chunk-U6HNMLNN.js";import{Pa as E,gb as T,m as x,n as R}from"./chunk-TRNAWSXP.js";import{Fd as O,Gd as W,Ld as M,og as $,pg as g,qg as k,tg as I,ug as y,vg as b}from"./chunk-G5FGIRDJ.js";import{a as o}from"./chunk-ONUPGMER.js";import{join as Pe}from"node:path";var ne=["You generate KodaX Dynamic Workflow scripts.","Return JSON only. Do not wrap the answer in prose.","For simple tasks that do not benefit from multiple agents, return:",'{"action":"decline","reason":"..."}',"For complex tasks, return:",'{"action":"generate","manifest":{...},"source":"async function run(wf, args) { ... }","approvalSummary":"..."}',"Generated source may only coordinate agents through wf and args.","Generated source must return displayable final text for the user.","Never use import, require, process, fs, child_process, network APIs, shell commands, or direct file access."].join(`
|
|
3
3
|
`),P=12e4,re="KODAX_WORKFLOW_GENERATION_TIMEOUT_SEC",se="KODAX_WORKFLOW_GENERATION_TIMEOUT_MS",oe=64,ie=2,ae=2e3,le=[{name:"default"},{name:"variant-results",finalText:o((e,n)=>`Variant smoke child report from ${e} (${n}).`,"finalText"),synthesizeText:"Variant smoke synthesis report."},{name:"unverified-success",status:o(()=>"completed_unverified","status"),finalText:o(e=>`Smoke result for ${e}: completed with verification warnings.`,"finalText"),synthesizeText:"Smoke synthesis: completed with verification warnings."},{name:"empty-args-rerun",args:o(()=>({}),"args")}],ce=[{id:"import",pattern:/\bimport\s*(?:\(|['"*{]|\w+\s+from\b)/},{id:"require",pattern:/\brequire\s*\(/},{id:"process",pattern:/\bprocess\s*(?:\.|\[)/},{id:"fs",pattern:/\b(?:node:)?fs\b/},{id:"child_process",pattern:/\bchild_process\b/},{id:"shell",pattern:/\b(?:exec|spawn|execFile)\s*\(/},{id:"fetch",pattern:/\bfetch\s*\(/},{id:"Deno",pattern:/\bDeno\s*(?:\.|\[)/},{id:"Bun",pattern:/\bBun\s*(?:\.|\[)/},{id:"globalThis-index",pattern:/\bglobalThis\s*\[/}];function ue(e=process.env,n){let t=x(n?.workflow?.generationTimeoutSec,"timeouts.workflow.generationTimeoutSec");if(t!==void 0)return t;let r=R(e[re]);if(r!==void 0)return r;let s=e[se];if(s===void 0||s.trim().length===0)return P;let i=Number(s);return!Number.isFinite(i)||i<=0?P:Math.floor(i)}o(ue,"resolveWorkflowGenerationTimeoutMs");function fe(e,n){if(typeof e!="object"||e===null)throw new Error(`${n} must be an object`);return e}o(fe,"readRecord");function D(e,n){let t=e[n];if(typeof t!="string"||t.trim().length===0)throw new Error(`workflow generation ${n} must be a non-empty string`);return t}o(D,"readNonEmptyString");function de(e){let n=e.trim(),t=/^```(?:json)?\s*([\s\S]*?)\s*```$/i.exec(n);if(t?.[1])return t[1].trim();let r=n.indexOf("{"),s=n.lastIndexOf("}");if(r>=0&&s>r)return n.slice(r,s+1);throw new Error("workflow generation output did not contain a JSON object")}o(de,"extractJsonText");function pe(e){let n=de(e);return fe(JSON.parse(n),"workflow generation output")}o(pe,"parseGenerationJson");function me(e){if(typeof e=="string"){let t=e.trim();return t.length>0?t:void 0}if(typeof e!="object"||e===null)return;let n=e;for(let t of["name","id","title","phase"]){let r=n[t];if(typeof r=="string"&&r.trim().length>0)return r.trim()}}o(me,"normalizePhaseEntry");function we(e){return e.split(/(?:->|\u2192|,|\n)/).map(n=>n.trim()).filter(n=>n.length>0)}o(we,"splitPhaseString");function he(e){if(typeof e!="object"||e===null)return e;let n=e,t=n.phases,r;if(Array.isArray(t)){let s=t.map(me);s.every(i=>i!==void 0)&&(r=s)}else if(typeof t=="string"){let s=we(t);s.length>0&&(r=s)}return r?{...n,phases:r}:e}o(he,"normalizeGeneratedManifestCandidate");function ge(e){return e.match(/\bwf\.(?:runAgent|spawnAgent|synthesize)\s*\(/g)?.length??0}o(ge,"estimateDirectAgentCalls");function ke(e,n){let t=e.maxConcurrency*Math.max(1,e.phases.length)+2,r=ge(n)+2,s=Math.min(oe,Math.max(e.maxAgents,t,r));return s>e.maxAgents?{...e,maxAgents:s}:e}o(ke,"reserveGeneratedWorkflowAgentCapacity");function w(e){let n="",t=0,r=["code"],s=[0];for(;t<e.length;){let i=e[t],a=e[t+1];if(r[r.length-1]==="template"){if(i==="\\"){n+=" ",t+=2;continue}if(i==="`"){n+=" ",t+=1,r.pop(),s.pop();continue}if(i==="$"&&a==="{"){n+=" ",t+=2,r.push("code"),s.push(0);continue}n+=i===`
|
|
4
4
|
`?`
|
|
5
5
|
`:" ",t+=1;continue}if(i==="/"&&a==="/"){for(n+=" ",t+=2;t<e.length&&e[t]!==`
|