@kodax-ai/kodax 0.7.73 → 0.7.74
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 +134 -0
- package/README.md +26 -6
- package/README_CN.md +23 -5
- package/config-templates/config.example.jsonc +7 -0
- package/dist/chunks/{agent-T6PGT6AU.js → agent-2ABIG5NW.js} +1 -1
- package/dist/chunks/argument-completer-C45DEO34.js +2 -0
- package/dist/chunks/chunk-5GH3SVI3.js +74 -0
- package/dist/chunks/{chunk-6JTWXGVU.js → chunk-7W6KYJU2.js} +225 -225
- package/dist/chunks/chunk-C7TZAT3S.js +369 -0
- package/dist/chunks/chunk-KPGVY6PF.js +321 -0
- package/dist/chunks/{chunk-6RI2RBTF.js → chunk-MVCAFD6M.js} +1 -1
- package/dist/chunks/{chunk-BUPJGG3C.js → chunk-PP53SIIL.js} +1 -1
- package/dist/chunks/chunk-QH56WEHK.js +2 -0
- package/dist/chunks/chunk-UJS7JAO6.js +770 -0
- package/dist/chunks/{chunk-M7FXNPWV.js → chunk-VK5QTHS6.js} +6 -6
- package/dist/chunks/chunk-VPURXE2F.js +427 -0
- package/dist/chunks/chunk-XM724XAA.js +329 -0
- package/dist/chunks/{chunk-MLEAQTCD.js → chunk-XMP66YWG.js} +11 -4
- package/dist/chunks/{compaction-config-IHJBP4GO.js → compaction-config-QYCDOW3Q.js} +1 -1
- package/dist/chunks/{construction-bootstrap-EGRUHKLP.js → construction-bootstrap-BKNPJI7O.js} +1 -1
- package/dist/chunks/dist-6EK4H7TP.js +2 -0
- package/dist/chunks/host-KS4TJKWQ.js +2 -0
- package/dist/chunks/{run-manager-AY7RQOWM.js → run-manager-L7MKGQNX.js} +1 -1
- package/dist/chunks/{utils-2GAE4XIM.js → utils-GTJLL4GT.js} +1 -1
- package/dist/index.d.ts +12 -11
- package/dist/index.js +5 -5
- package/dist/kodax_cli.js +1295 -1253
- package/dist/runtime-worker.js +1208 -1166
- package/dist/sdk-a2a.d.ts +9 -8
- package/dist/sdk-a2a.js +1 -1
- package/dist/sdk-agent.d.ts +107 -59
- package/dist/sdk-agent.js +1 -1
- package/dist/sdk-coding.d.ts +32 -16
- package/dist/sdk-coding.js +1 -1
- package/dist/sdk-mcp.js +1 -1
- package/dist/sdk-media.js +1 -1
- package/dist/sdk-repl.d.ts +27 -20
- package/dist/sdk-repl.js +2 -2
- package/dist/sdk-runtime.d.ts +151 -14
- package/dist/sdk-runtime.js +1 -1
- package/dist/sdk-session.d.ts +4 -4
- package/dist/sdk-session.js +1 -1
- package/dist/sdk-skills.js +1 -1
- package/dist/semantic-worker.js +16 -14
- package/dist/types-chunks/{bash-prefix-extractor.d-bApf5nGw.d.ts → bash-prefix-extractor.d-r1beOESM.d.ts} +48 -12
- package/dist/types-chunks/{capsule.d-CGWltwno.d.ts → capsule.d-zeqV4IQX.d.ts} +10 -2
- package/dist/types-chunks/{commands.d-CEHGwRok.d.ts → commands.d-DUxnK2TU.d.ts} +10 -7
- package/dist/types-chunks/{guardrail.d-CC4vAQl7.d.ts → guardrail.d-CWYD1bdL.d.ts} +1 -1
- package/dist/types-chunks/{guardrail.d-CXIPlWP3.d.ts → guardrail.d-qjuKJZ31.d.ts} +72 -11
- package/dist/types-chunks/history-retrieval.d-BKTJIrVd.d.ts +57 -0
- package/dist/types-chunks/{public-api.d-FBmX0kxo.d.ts → public-api.d-CX4B11qY.d.ts} +17 -4
- package/dist/types-chunks/{run-manager.d-DUNnJcpE.d.ts → run-manager.d-B9fEIjZk.d.ts} +1 -1
- package/dist/types-chunks/{sdk-session-XqacVOs8.d.ts → sdk-session-B0fhAOPa.d.ts} +2 -2
- package/dist/types-chunks/{types.d-DKr6TCXL.d.ts → types.d-Bm_y6YuM.d.ts} +2 -2
- package/dist/types-chunks/{types.d-DgciGHoG.d.ts → types.d-DEctY20M.d.ts} +9 -2
- package/dist/types-chunks/{types.d-BnPhGmar.d.ts → types.d-sRLugmjy.d.ts} +61 -14
- package/dist/types-chunks/{utils.d-BPYX7-KN.d.ts → utils.d-D0wPxz8y.d.ts} +5 -5
- package/docs/SDK_EMBEDDER_GUIDE.md +1956 -1684
- package/package.json +8 -1
- package/dist/chunks/argument-completer-QGMWA2C3.js +0 -2
- package/dist/chunks/chunk-AGDDM5AW.js +0 -329
- package/dist/chunks/chunk-EAD4SF3Z.js +0 -413
- package/dist/chunks/chunk-HVCNAZ52.js +0 -365
- package/dist/chunks/chunk-OG6DRNKV.js +0 -755
- package/dist/chunks/chunk-PFH53O4M.js +0 -2
- package/dist/chunks/chunk-V4F6IYNK.js +0 -73
- package/dist/chunks/chunk-WQ6PWGK5.js +0 -320
- package/dist/chunks/dist-5N3I2RTW.js +0 -2
- package/dist/chunks/host-MECITNE3.js +0 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
-
import{D as j,J as N}from"./chunk-
|
|
2
|
+
import{D as j,J as N}from"./chunk-VK5QTHS6.js";import{Bd as _,Cd as q}from"./chunk-C7TZAT3S.js";import{Ma as E,cb as T,m as v,n as R}from"./chunk-XXQLPTAN.js";import{$d as y,Vd as I,Wd as g,Xd as k,_d as $,ae as b}from"./chunk-UJS7JAO6.js";import{W as O,X as W,aa as M}from"./chunk-GAFFYJU3.js";import{a as o}from"./chunk-ONUPGMER.js";import{join as Pe}from"node:path";var te=["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
|
`),C=12e4,ne="KODAX_WORKFLOW_GENERATION_TIMEOUT_SEC",re="KODAX_WORKFLOW_GENERATION_TIMEOUT_MS",se=64,oe=2,ie=2e3,ae=[{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")}],le=["- classify-and-act: first classify a mixed request, then route to the right worker behavior.","- fan-out-and-synthesize: split independent areas, files, hypotheses, reviewers, or perspectives; run them with wf.parallel, then wf.synthesize.","- adversarial-verification: produce or inspect a candidate, then have an independent verifier attack assumptions, evidence, and edge cases.","- generate-and-filter: ask several generators for distinct candidates, then filter/dedupe/rank before synthesis.","- tournament: compare competing approaches or answers and use synthesis as the judge.","- loop-until-done: run bounded follow-up rounds when findings should drive the next prompt.","- review or audit combines fan-out-and-synthesize with adversarial-verification: fan independent reviewers out across the dimensions, then pipe each finding straight into a verifier that tries to refute it before synthesis. A review with no verification stage ships findings a single reviewer's blind spot would have hidden."],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=v(n?.workflow?.generationTimeoutSec,"timeouts.workflow.generationTimeoutSec");if(t!==void 0)return t;let r=R(e[ne]);if(r!==void 0)return r;let s=e[re];if(s===void 0||s.trim().length===0)return C;let i=Number(s);return!Number.isFinite(i)||i<=0?C: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 P(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(P,"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 he(e){return e.split(/(?:->|\u2192|,|\n)/).map(n=>n.trim()).filter(n=>n.length>0)}o(he,"splitPhaseString");function we(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=he(t);s.length>0&&(r=s)}return r?{...n,phases:r}:e}o(we,"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(se,Math.max(e.maxAgents,t,r));return s>e.maxAgents?{...e,maxAgents:s}:e}o(ke,"reserveGeneratedWorkflowAgentCapacity");function h(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]!==`
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
import{g as R,h as _}from"./chunk-F7AIEHSS.js";import{a as r}from"./chunk-ONUPGMER.js";var u=class extends Error{static{r(this,"KodaXMediaError")}code;detail;cause;constructor(e,i,o={}){super(i),this.name="KodaXMediaError",this.code=e,this.detail=o.detail,this.cause=o.cause}},p=class extends u{static{r(this,"ImageResizeError")}constructor(e,i={}){super(i.code??"IMAGE_TOO_LARGE",e,i),this.name="ImageResizeError"}};import O from"node:path";var Z={".gif":"image/gif",".jpeg":"image/jpeg",".jpg":"image/jpeg",".png":"image/png",".webp":"image/webp"},ee={".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 N(t){return Z[O.extname(t).toLowerCase()]}r(N,"inferImageMediaType");function $(t){return ee[O.extname(t).toLowerCase()]}r($,"inferVideoMediaType");function te(t,e={}){let i=e.mediaType??N(t);return{kind:"image",path:t,...i?{mediaType:i}:{},...e.source?{source:e.source}:{},...e.description?{description:e.description}:{}}}r(te,"createImageArtifactFromPath");function ie(t,e={}){if(e.mediaType!==void 0&&e.mimeType!==void 0&&e.mediaType!==e.mimeType)throw new u("UNSUPPORTED_MEDIA_TYPE",`File artifact mediaType and mimeType disagree: ${e.mediaType} != ${e.mimeType}.`);return{kind:"file",path:t,...e.mediaType?{mediaType:e.mediaType}:{},...e.mimeType?{mimeType:e.mimeType}:{},...e.name?{name:e.name}:{},...e.source?{source:e.source}:{},...e.description?{description:e.description}:{}}}r(ie,"createFileArtifactFromPath");function re(t,e={}){let i=e.mediaType??$(t);if(!i)throw new u("UNSUPPORTED_MEDIA_TYPE",`Cannot infer video media type from path: ${t}.`);return{kind:"video",path:t,mediaType:i,...e.name?{name:e.name}:{},...e.source?{source:e.source}:{},...e.description?{description:e.description}:{}}}r(re,"createVideoArtifactFromPath");import{Jimp as ne}from"jimp";var F=2e3,C=Math.floor(3.75*1024*1024),oe=[80,60,40];async function A(t,e={}){let i=e.maxDimension??F,o=e.targetBytes??C;if(t.length===0)throw new p("Empty image buffer.",{code:"IMAGE_DECODE_FAILED"});let n;try{n=await ne.read(t)}catch(c){let I=c instanceof Error?c.message:String(c);throw new p(`Failed to decode image: ${I}`,{code:"IMAGE_DECODE_FAILED",cause:c})}let{width:a,height:d}=n.bitmap,s=Math.max(a,d);if(s>i){let c=i/s;n.resize({w:Math.max(1,Math.round(a*c)),h:Math.max(1,Math.round(d*c))})}let m=n.bitmap.width,l=n.bitmap.height;if(e.preferMediaType!=="image/jpeg"){let c=await n.getBuffer("image/png");if(c.length<=o)return{buffer:Buffer.from(c),mediaType:"image/png",width:m,height:l}}for(let c of oe){let I=await n.getBuffer("image/jpeg",{quality:c});if(I.length<=o)return{buffer:Buffer.from(I),mediaType:"image/jpeg",width:m,height:l}}if(e.preferMediaType==="image/jpeg"){let c=await n.getBuffer("image/png");if(c.length<=o)return{buffer:Buffer.from(c),mediaType:"image/png",width:m,height:l}}throw new p(`Image still exceeds budget (${o} 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"})}r(A,"normalizePastedImage");import{spawn as L}from"node:child_process";import{mkdtemp as ae,readFile as se,rm as de}from"node:fs/promises";import{tmpdir as me}from"node:os";import U from"node:path";var q=5e3;async function X(){switch(process.platform){case"darwin":return ce();case"win32":return fe();case"linux":return pe();default:throw new u("UNSUPPORTED_PLATFORM",`Clipboard image fallback is not supported on platform "${process.platform}".`)}}r(X,"readClipboardImage");async function ue(t={}){let e=await X();return e?A(e,t):null}r(ue,"readAndNormalizeClipboardImage");async function j(t){let e=await ae(U.join(me(),"kodax-clip-")),i=U.join(e,"clip.png");try{return await t(i)}finally{await de(e,{recursive:!0,force:!0}).catch(o=>{})}}r(j,"runWithTempPng");async function ce(){return j(async t=>{let e=`set png_data to (the clipboard as \xABclass PNGf\xBB)
|
|
3
3
|
set fh to open for access POSIX file "${t.replace(/"/g,'\\"')}" with write permission
|
|
4
4
|
write png_data to fh
|
|
5
|
-
close access fh`;return await G("osascript",["-e",e])?B(t):null})}r(ce,"readMacClipboard");async function fe(){return j(async t=>{let e=["Add-Type -AssemblyName System.Drawing | Out-Null","$img = Get-Clipboard -Format Image","if ($null -eq $img) { exit 1 }",`$img.Save('${t.replace(/'/g,"''")}', [System.Drawing.Imaging.ImageFormat]::Png)`].join("; ");return await G("powershell",["-NoProfile","-Command",e])?B(t):null})}r(fe,"readWinClipboard");async function pe(){return await K("wl-paste",["--type","image/png"])??K("xclip",["-selection","clipboard","-t","image/png","-o"])}r(pe,"readLinuxClipboard");async function B(t){try{let e=await se(t);return e.length>0?e:null}catch(e){return null}}r(B,"readNonEmptyFile");function G(t,e){return new Promise(i=>{let o=!1,n=L(t,[...e],{stdio:"ignore"}),a=setTimeout(()=>{o||(o=!0,n.kill(),i(!1))},q);n.once("error",()=>{o||(o=!0,clearTimeout(a),i(!1))}),n.once("exit",d=>{o||(o=!0,clearTimeout(a),i(d===0))})})}r(G,"runCommand");function K(t,e){return new Promise(i=>{let o=!1,n=[],a=L(t,[...e],{stdio:["ignore","pipe","ignore"]}),d=setTimeout(()=>{o||(o=!0,a.kill(),i(null))},q);a.stdout?.on("data",s=>n.push(s)),a.once("error",()=>{o||(o=!0,clearTimeout(d),i(null))}),a.once("exit",s=>{if(o)return;if(o=!0,clearTimeout(d),s!==0){i(null);return}let m=Buffer.concat(n);i(m.length>0?m:null)})})}r(K,"collectStdoutBytes");import{createHash as le}from"node:crypto";import{mkdir as ge,readdir as he,stat as Te,unlink as ye,writeFile as Ie}from"node:fs/promises";import{tmpdir as Ee}from"node:os";import x from"node:path";var Y="KODAX_PASTE_TMP_DIR",z=1440*60*1e3;function Q(){return process.env[Y]??x.join(Ee(),"kodax-paste")}r(Q,"resolvePasteTmpDir");function we(t){let e=t?.trim().replace(/[^A-Za-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"");return e&&e.length>0?e:"paste"}r(we,"sanitizeFileNamePrefix");async function _e(t,e={}){let i=e.directory??Q();await ge(i,{recursive:!0});let o=t.mediaType==="image/jpeg"?".jpg":".png",n=le("sha256").update(t.buffer).digest("hex").slice(0,16),a=`${we(e.fileNamePrefix)}-${n}${o}`,d=x.join(i,a);return await Ie(d,t.buffer),{type:"image",path:d,mediaType:t.mediaType}}r(_e,"persistImageAsBlock");async function Ae(t=Date.now()){let e=Q(),i;try{i=await he(e)}catch(a){return 0}let o=t-z,n=0;return await Promise.all(i.filter(a=>/-[0-9a-f]{16}\.(?:png|jpg)$/.test(a)).map(async a=>{let d=x.join(e,a);try{(await Te(d)).mtimeMs<o&&(await ye(d),n+=1)}catch(s){}})),n}r(Ae,"prunePasteTmpDir");var h=["image/png","image/jpeg","image/webp","image/gif"],T=["video/mp4","video/mpeg","video/quicktime","video/x-msvideo","video/x-flv","video/webm","video/x-ms-wmv","video/3gpp"],xe=[],ke=new Set(["anthropic","openai"]),Me=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","qwen-token-plan/qwen3.8-max-preview","qwen-token-plan/qwen3.7-plus","qwen-token-plan/qwen3.6-flash"]),De=new Set(["kimi-code/kimi-for-coding","kimi-code/kimi-for-coding-highspeed","kimi-code/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 k(t){return{nativeSupported:!1,sdkSupported:!1,status:"unsupported",mediaTypes:[],maxCount:0,reason:t}}r(k,"unsupported");function Pe(t){return{nativeSupported:!0,sdkSupported:!0,status:"supported",mediaTypes:h,nativeMediaTypes:h,reason:t}}r(Pe,"supportedImage");function ve(t){return{nativeSupported:!0,sdkSupported:!1,status:"provider-native-unwired",mediaTypes:[],nativeMediaTypes:T,maxCount:0,reason:t}}r(ve,"nativeVideoUnwired");function Se(t){return t.trim().toLowerCase()}r(Se,"normalizeProvider");function be(t){return _[t]?.model}r(be,"resolveProviderDefaultModel");function V(t,e){if(!e)return;let i=e.trim().toLowerCase();if(t==="kimi"){if(i==="k2.5")return"kimi-k2.5";if(i==="k2.6")return"kimi-k2.6";if(i==="k2.7-code")return"kimi-k2.7-code";if(i==="k2.7-code-highspeed")return"kimi-k2.7-code-highspeed"}return t==="kimi-code"&&i==="k3-256k"?"k3":(t==="minimax-coding"||t==="minimax")&&i==="minimax-m3"?"minimax-m3":i}r(V,"normalizeModel");function Re(t){if(!ke.has(t))return!1;let e=_[t];return e?R(e.capabilityProfile).multimodalSupport!=="none":!1}r(Re,"hasOfficialImageSupport");function Oe(t,e){let i=V(t,e);if(!i)return!1;let o=`${t}/${i}`;return De.has(o)}r(Oe,"hasSourceBackedNativeMedia");function Ne(t,e){let i=V(t,e);return i?Me.has(`${t}/${i}`):!1}r(Ne,"hasSourceBackedImage");function $e(t,e,i){if(i)return"source-backed";if(e){if(t==="openai")return"openai-official";if(t==="anthropic")return"anthropic-official"}}r($e,"resolveImageCapabilityRoute");function Fe(t){switch(t){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."}}r(Fe,"imageCapabilityReason");function M(t){let e=Se(t.provider),i=t.model?.trim()||be(e),o=Re(e),n=Oe(e,i),a=n||Ne(e,i),d=$e(e,o,a),s=d!==void 0,m=n;return{text:!0,image:s?Pe(Fe(d)):k("No verified KodaX image-input route for this provider/model."),video:m?ve("Model route is native-video capable, but KodaX SDK video sending is not wired yet. Reject or downgrade before send."):k("No verified native video route for this provider/model."),file:k("File artifact contract is stable, but KodaX SDK file sending/extraction is not wired yet. Reject or downgrade before send.")}}r(M,"getModelInputCapabilities");function Ce(t){return h.includes(t)}r(Ce,"isKnownImageMediaType");function Ue(t){return T.includes(t)}r(Ue,"isKnownVideoMediaType");function D(t){return`${t.provider}${t.model?`/${t.model}`:""}`}r(D,"routeLabel");function P(t){return t.reason?`${t.status}: ${t.reason}`:t.status}r(P,"capabilityDetail");function v(t,e){if(t.length===0)return;let i=M(e);for(let o of t){let n=o;if(n.kind==="image"){if(!i.image.nativeSupported||!i.image.sdkSupported)throw new u("MODEL_INPUT_UNSUPPORTED",`Provider/model cannot consume image artifacts: ${D(e)}.`,{detail:P(i.image)});if(typeof n.mediaType=="string"&&!Ce(n.mediaType))throw new u("UNSUPPORTED_MEDIA_TYPE",`Unsupported image media type: ${n.mediaType}.`);continue}throw n.kind==="video"?typeof n.mediaType!="string"||!Ue(n.mediaType)?new u("UNSUPPORTED_MEDIA_TYPE",`Unsupported video media type: ${String(n.mediaType)}.`,{detail:`Supported video media types: ${T.join(", ")}`}):new u("MODEL_INPUT_UNSUPPORTED",`Provider/model cannot consume video artifacts through this SDK runtime: ${D(e)}.`,{detail:P(i.video)}):n.kind==="file"?typeof n.mediaType=="string"&&typeof n.mimeType=="string"&&n.mediaType!==n.mimeType?new u("UNSUPPORTED_MEDIA_TYPE",`File artifact mediaType and mimeType disagree: ${n.mediaType} != ${n.mimeType}.`):new u("MODEL_INPUT_UNSUPPORTED",`Provider/model cannot consume file artifacts through this SDK runtime: ${D(e)}.`,{detail:P(i.file)}):new u("MODEL_INPUT_UNSUPPORTED",`Unsupported input artifact kind: ${String(n.kind)}.`)}}r(v,"validateInputArtifactsForModel");var g={user:0,background:1};function Ke(t,e){return g[t]<=g[e]}r(Ke,"priorityWithinMax");function W(t,e){return!(t.agentId!==e.agentId||!Ke(t.priority,e.maxPriority)||e.mode!==void 0&&t.mode!==e.mode||e.id!==void 0&&t.id!==e.id||e.predicate&&!e.predicate(t))}r(W,"matchesFilter");var w=class{static{r(this,"MessageQueue")}messages=[];nextSeq=1;listeners=new Set;snapshotRef=Object.freeze([]);notify(e){this.snapshotRef=Object.freeze([...this.messages]);for(let i of this.listeners)try{i(e)}catch{}}subscribe=r(e=>(this.listeners.add(e),()=>{this.listeners.delete(e)}),"subscribe");getSnapshot=r(()=>this.snapshotRef,"getSnapshot");enqueue(e){let i=`msg-${this.nextSeq++}`,o={id:i,priority:e.priority,mode:e.mode,content:e.content,agentId:e.agentId,inputArtifacts:e.inputArtifacts,taskResult:e.taskResult,enqueuedAt:Date.now()};return this.messages=[...this.messages,o],this.notify({kind:"enqueued",message:o}),i}dequeue(e){let i=[];for(let s=0;s<this.messages.length;s++){let m=this.messages[s];m&&W(m,e)&&i.push({originalIndex:s,message:m})}i.sort((s,m)=>{let l=g[s.message.priority]-g[m.message.priority];return l!==0?l:s.originalIndex-m.originalIndex});let o=e.limit,n=typeof o=="number"&&i.length>o?i.slice(0,o):i;if(n.length===0)return[];let a=new Set(n.map(s=>s.originalIndex));this.messages=this.messages.filter((s,m)=>!a.has(m));let d=n.map(s=>s.message);return this.notify({kind:"dequeued",messages:d}),d}peek(e){let i=[];for(let a=0;a<this.messages.length;a++){let d=this.messages[a];d&&W(d,e)&&i.push({originalIndex:a,message:d})}i.sort((a,d)=>{let s=g[a.message.priority]-g[d.message.priority];return s!==0?s:a.originalIndex-d.originalIndex});let o=e.limit;return(typeof o=="number"&&i.length>o?i.slice(0,o):i).map(a=>a.message)}size(){return this.messages.length}count(e){return this.peek(e).length}has(e){return this.count(e)>0}clear(){if(this.messages.length===0)return;let e=this.messages;this.messages=[],this.notify({kind:"cleared",messages:e})}},E;function y(){return E||(E=new w),E}r(y,"getMessageQueue");function Le(){E=void 0}r(Le,"_resetMessageQueueForTests");function S(t,e){return t?`actor:${t}:${e}`:e==="/root"?void 0:e}r(S,"actorQueueId");var f=new Map;function qe(t){f.set(t,(f.get(t)??0)+1);let e=!1;return()=>{if(e)return;e=!0;let i=f.get(t);i===void 0||i<=1?f.delete(t):f.set(t,i-1)}}r(qe,"registerActiveRootQueueRoute");function b(){if(f.size!==0){if(f.size===1)return f.keys().next().value;throw new Error("Cannot infer queued follow-up target: multiple Actor root sessions are active. Pass sessionId or agentId explicitly.")}}r(b,"resolveActiveRootQueueRoute");function Xe(){f.clear()}r(Xe,"_resetActiveRootQueueRoutesForTests");var H=new Set;function J(t){return t.some(i=>H.has(i))?"background":"user"}r(J,"midTurnDrainPriority");function je(t){let e=J(t.lastTurnToolNames);return y().dequeue({agentId:t.agentId,maxPriority:e,limit:t.limit})}r(je,"maybeDrainMidTurn");function Be(t){if(v(t.inputArtifacts??[],t),t.agentId!==void 0&&t.sessionId!==void 0)throw new Error("enqueueWithArtifacts accepts either agentId or sessionId, not both.");if(t.sessionId!==void 0&&t.sessionId.trim().length===0)throw new Error("enqueueWithArtifacts sessionId must not be empty.");let e=t.agentId??(t.sessionId!==void 0?S(t.sessionId,"/root"):b());return y().enqueue({priority:t.priority??"user",mode:"prompt",content:t.content,agentId:e,inputArtifacts:t.inputArtifacts})}r(Be,"enqueueWithArtifacts");export{u as a,p as b,N as c,$ as d,te as e,ie as f,re as g,F as h,C as i,A as j,X as k,ue as l,Y as m,z as n,_e as o,Ae as p,h as q,T as r,xe as s,M as t,v as u,w as v,y as w,Le as x,S as y,qe as z,b as A,Xe as B,H as C,J as D,je as E,Be as F};
|
|
5
|
+
close access fh`;return await G("osascript",["-e",e])?B(t):null})}r(ce,"readMacClipboard");async function fe(){return j(async t=>{let e=["Add-Type -AssemblyName System.Drawing | Out-Null","$img = Get-Clipboard -Format Image","if ($null -eq $img) { exit 1 }",`$img.Save('${t.replace(/'/g,"''")}', [System.Drawing.Imaging.ImageFormat]::Png)`].join("; ");return await G("powershell",["-NoProfile","-Command",e])?B(t):null})}r(fe,"readWinClipboard");async function pe(){return await K("wl-paste",["--type","image/png"])??K("xclip",["-selection","clipboard","-t","image/png","-o"])}r(pe,"readLinuxClipboard");async function B(t){try{let e=await se(t);return e.length>0?e:null}catch(e){return null}}r(B,"readNonEmptyFile");function G(t,e){return new Promise(i=>{let o=!1,n=L(t,[...e],{stdio:"ignore"}),a=setTimeout(()=>{o||(o=!0,n.kill(),i(!1))},q);n.once("error",()=>{o||(o=!0,clearTimeout(a),i(!1))}),n.once("exit",d=>{o||(o=!0,clearTimeout(a),i(d===0))})})}r(G,"runCommand");function K(t,e){return new Promise(i=>{let o=!1,n=[],a=L(t,[...e],{stdio:["ignore","pipe","ignore"]}),d=setTimeout(()=>{o||(o=!0,a.kill(),i(null))},q);a.stdout?.on("data",s=>n.push(s)),a.once("error",()=>{o||(o=!0,clearTimeout(d),i(null))}),a.once("exit",s=>{if(o)return;if(o=!0,clearTimeout(d),s!==0){i(null);return}let m=Buffer.concat(n);i(m.length>0?m:null)})})}r(K,"collectStdoutBytes");import{createHash as le}from"node:crypto";import{mkdir as ge,readdir as he,stat as Te,unlink as ye,writeFile as Ie}from"node:fs/promises";import{tmpdir as Ee}from"node:os";import x from"node:path";var Y="KODAX_PASTE_TMP_DIR",z=1440*60*1e3;function Q(){return process.env[Y]??x.join(Ee(),"kodax-paste")}r(Q,"resolvePasteTmpDir");function we(t){let e=t?.trim().replace(/[^A-Za-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"");return e&&e.length>0?e:"paste"}r(we,"sanitizeFileNamePrefix");async function _e(t,e={}){let i=e.directory??Q();await ge(i,{recursive:!0});let o=t.mediaType==="image/jpeg"?".jpg":".png",n=le("sha256").update(t.buffer).digest("hex").slice(0,16),a=`${we(e.fileNamePrefix)}-${n}${o}`,d=x.join(i,a);return await Ie(d,t.buffer),{type:"image",path:d,mediaType:t.mediaType}}r(_e,"persistImageAsBlock");async function Ae(t=Date.now()){let e=Q(),i;try{i=await he(e)}catch(a){return 0}let o=t-z,n=0;return await Promise.all(i.filter(a=>/-[0-9a-f]{16}\.(?:png|jpg)$/.test(a)).map(async a=>{let d=x.join(e,a);try{(await Te(d)).mtimeMs<o&&(await ye(d),n+=1)}catch(s){}})),n}r(Ae,"prunePasteTmpDir");var h=["image/png","image/jpeg","image/webp","image/gif"],T=["video/mp4","video/mpeg","video/quicktime","video/x-msvideo","video/x-flv","video/webm","video/x-ms-wmv","video/3gpp"],xe=[],ke=new Set(["anthropic","openai"]),Me=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","qwen-token-plan/qwen3.8-max-preview","qwen-token-plan/qwen3.7-plus","qwen-token-plan/qwen3.6-flash"]),De=new Set(["kimi-code/kimi-for-coding","kimi-code/kimi-for-coding-highspeed","kimi-code/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 k(t){return{nativeSupported:!1,sdkSupported:!1,status:"unsupported",mediaTypes:[],maxCount:0,reason:t}}r(k,"unsupported");function Pe(t){return{nativeSupported:!0,sdkSupported:!0,status:"supported",mediaTypes:h,nativeMediaTypes:h,reason:t}}r(Pe,"supportedImage");function ve(t){return{nativeSupported:!0,sdkSupported:!1,status:"provider-native-unwired",mediaTypes:[],nativeMediaTypes:T,maxCount:0,reason:t}}r(ve,"nativeVideoUnwired");function Se(t){return t.trim().toLowerCase()}r(Se,"normalizeProvider");function be(t){return _[t]?.model}r(be,"resolveProviderDefaultModel");function V(t,e){if(!e)return;let i=e.trim().toLowerCase();if(t==="kimi"){if(i==="k2.5")return"kimi-k2.5";if(i==="k2.6")return"kimi-k2.6";if(i==="k2.7-code")return"kimi-k2.7-code";if(i==="k2.7-code-highspeed")return"kimi-k2.7-code-highspeed"}return t==="kimi-code"&&i==="k3-256k"?"k3":(t==="minimax-coding"||t==="minimax")&&i==="minimax-m3"?"minimax-m3":i}r(V,"normalizeModel");function Re(t){if(!ke.has(t))return!1;let e=_[t];return e?R(e.capabilityProfile).multimodalSupport!=="none":!1}r(Re,"hasOfficialImageSupport");function Oe(t,e){let i=V(t,e);if(!i)return!1;let o=`${t}/${i}`;return De.has(o)}r(Oe,"hasSourceBackedNativeMedia");function Ne(t,e){let i=V(t,e);return i?Me.has(`${t}/${i}`):!1}r(Ne,"hasSourceBackedImage");function $e(t,e,i){if(i)return"source-backed";if(e){if(t==="openai")return"openai-official";if(t==="anthropic")return"anthropic-official"}}r($e,"resolveImageCapabilityRoute");function Fe(t){switch(t){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."}}r(Fe,"imageCapabilityReason");function M(t){let e=Se(t.provider),i=t.model?.trim()||be(e),o=Re(e),n=Oe(e,i),a=n||Ne(e,i),d=$e(e,o,a),s=d!==void 0,m=n;return{text:!0,image:s?Pe(Fe(d)):k("No verified KodaX image-input route for this provider/model."),video:m?ve("Model route is native-video capable, but KodaX SDK video sending is not wired yet. Reject or downgrade before send."):k("No verified native video route for this provider/model."),file:k("File artifact contract is stable, but KodaX SDK file sending/extraction is not wired yet. Reject or downgrade before send.")}}r(M,"getModelInputCapabilities");function Ce(t){return h.includes(t)}r(Ce,"isKnownImageMediaType");function Ue(t){return T.includes(t)}r(Ue,"isKnownVideoMediaType");function D(t){return`${t.provider}${t.model?`/${t.model}`:""}`}r(D,"routeLabel");function P(t){return t.reason?`${t.status}: ${t.reason}`:t.status}r(P,"capabilityDetail");function v(t,e){if(t.length===0)return;let i=M(e);for(let o of t){let n=o;if(n.kind==="image"){if(!i.image.nativeSupported||!i.image.sdkSupported)throw new u("MODEL_INPUT_UNSUPPORTED",`Provider/model cannot consume image artifacts: ${D(e)}.`,{detail:P(i.image)});if(typeof n.mediaType=="string"&&!Ce(n.mediaType))throw new u("UNSUPPORTED_MEDIA_TYPE",`Unsupported image media type: ${n.mediaType}.`);continue}throw n.kind==="video"?typeof n.mediaType!="string"||!Ue(n.mediaType)?new u("UNSUPPORTED_MEDIA_TYPE",`Unsupported video media type: ${String(n.mediaType)}.`,{detail:`Supported video media types: ${T.join(", ")}`}):new u("MODEL_INPUT_UNSUPPORTED",`Provider/model cannot consume video artifacts through this SDK runtime: ${D(e)}.`,{detail:P(i.video)}):n.kind==="file"?typeof n.mediaType=="string"&&typeof n.mimeType=="string"&&n.mediaType!==n.mimeType?new u("UNSUPPORTED_MEDIA_TYPE",`File artifact mediaType and mimeType disagree: ${n.mediaType} != ${n.mimeType}.`):new u("MODEL_INPUT_UNSUPPORTED",`Provider/model cannot consume file artifacts through this SDK runtime: ${D(e)}.`,{detail:P(i.file)}):new u("MODEL_INPUT_UNSUPPORTED",`Unsupported input artifact kind: ${String(n.kind)}.`)}}r(v,"validateInputArtifactsForModel");var g={user:0,background:1};function Ke(t,e){return g[t]<=g[e]}r(Ke,"priorityWithinMax");function W(t,e){return!(t.agentId!==e.agentId||!Ke(t.priority,e.maxPriority)||e.mode!==void 0&&t.mode!==e.mode||e.id!==void 0&&t.id!==e.id||e.predicate&&!e.predicate(t))}r(W,"matchesFilter");var w=class{static{r(this,"MessageQueue")}messages=[];nextSeq=1;listeners=new Set;snapshotRef=Object.freeze([]);notify(e){this.snapshotRef=Object.freeze([...this.messages]);for(let i of this.listeners)try{i(e)}catch{}}subscribe=r(e=>(this.listeners.add(e),()=>{this.listeners.delete(e)}),"subscribe");getSnapshot=r(()=>this.snapshotRef,"getSnapshot");enqueue(e){let i=`msg-${this.nextSeq++}`,o={id:i,priority:e.priority,mode:e.mode,content:e.content,agentId:e.agentId,inputArtifacts:e.inputArtifacts,taskResult:e.taskResult,enqueuedAt:Date.now()};return this.messages=[...this.messages,o],this.notify({kind:"enqueued",message:o}),i}dequeue(e){let i=[];for(let s=0;s<this.messages.length;s++){let m=this.messages[s];m&&W(m,e)&&i.push({originalIndex:s,message:m})}i.sort((s,m)=>{let l=g[s.message.priority]-g[m.message.priority];return l!==0?l:s.originalIndex-m.originalIndex});let o=e.limit,n=typeof o=="number"&&i.length>o?i.slice(0,o):i;if(n.length===0)return[];let a=new Set(n.map(s=>s.originalIndex));this.messages=this.messages.filter((s,m)=>!a.has(m));let d=n.map(s=>s.message);return this.notify({kind:"dequeued",messages:d}),d}peek(e){let i=[];for(let a=0;a<this.messages.length;a++){let d=this.messages[a];d&&W(d,e)&&i.push({originalIndex:a,message:d})}i.sort((a,d)=>{let s=g[a.message.priority]-g[d.message.priority];return s!==0?s:a.originalIndex-d.originalIndex});let o=e.limit;return(typeof o=="number"&&i.length>o?i.slice(0,o):i).map(a=>a.message)}size(){return this.messages.length}count(e){return this.peek(e).length}has(e){return this.count(e)>0}clear(){if(this.messages.length===0)return;let e=this.messages;this.messages=[],this.notify({kind:"cleared",messages:e})}},E;function y(){return E||(E=new w),E}r(y,"getMessageQueue");function Le(){E=void 0}r(Le,"_resetMessageQueueForTests");function S(t,e){return t?`actor:${t}:${e}`:e==="/root"?void 0:e}r(S,"actorQueueId");var f=new Map;function qe(t){f.set(t,(f.get(t)??0)+1);let e=!1;return()=>{if(e)return;e=!0;let i=f.get(t);i===void 0||i<=1?f.delete(t):f.set(t,i-1)}}r(qe,"registerActiveRootQueueRoute");function b(){if(f.size!==0){if(f.size===1)return f.keys().next().value;throw new Error("Cannot infer queued follow-up target: multiple Actor root sessions are active. Pass sessionId or agentId explicitly.")}}r(b,"resolveActiveRootQueueRoute");function Xe(){f.clear()}r(Xe,"_resetActiveRootQueueRoutesForTests");var H=new Set(["wait_agent"]);function J(t){return t.some(i=>H.has(i))?"background":"user"}r(J,"midTurnDrainPriority");function je(t){let e=J(t.lastTurnToolNames);return y().dequeue({agentId:t.agentId,maxPriority:e,limit:t.limit})}r(je,"maybeDrainMidTurn");function Be(t){if(v(t.inputArtifacts??[],t),t.agentId!==void 0&&t.sessionId!==void 0)throw new Error("enqueueWithArtifacts accepts either agentId or sessionId, not both.");if(t.sessionId!==void 0&&t.sessionId.trim().length===0)throw new Error("enqueueWithArtifacts sessionId must not be empty.");let e=t.agentId??(t.sessionId!==void 0?S(t.sessionId,"/root"):b());return y().enqueue({priority:t.priority??"user",mode:"prompt",content:t.content,agentId:e,inputArtifacts:t.inputArtifacts})}r(Be,"enqueueWithArtifacts");export{u as a,p as b,N as c,$ as d,te as e,ie as f,re as g,F as h,C as i,A as j,X as k,ue as l,Y as m,z as n,_e as o,Ae as p,h as q,T as r,xe as s,M as t,v as u,w as v,y as w,Le as x,S as y,qe as z,b as A,Xe as B,H as C,J as D,je as E,Be as F};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
+
import{Uc as o}from"./chunk-UJS7JAO6.js";import{f as c}from"./chunk-GAFFYJU3.js";import{a as n}from"./chunk-ONUPGMER.js";import{readFile as a}from"fs/promises";var i={enabled:!0,triggerPercent:75};async function s(r){let t=c("config.json");try{let e=await f(t);if(e?.compaction)return o({...i,...e.compaction})}catch{}return o(i)}n(s,"loadCompactionConfig");async function f(r){try{let t=await a(r,"utf-8");return JSON.parse(t)}catch{return null}}n(f,"readConfigFile");export{s as a};
|