w-dispatch-ai 1.0.5 → 1.0.7
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/README.md +4 -1
- package/dist/w-dispatch-ai.umd.js +2 -2
- package/dist/w-dispatch-ai.umd.js.map +1 -1
- package/docs/WDispatchAi.mjs.html +1 -1
- package/docs/adapters.mjs.html +1 -1
- package/docs/dfTimeoutMs.mjs.html +1 -1
- package/docs/dispatchAi.mjs.html +1 -1
- package/docs/dispatchAiFallback.mjs.html +71 -6
- package/docs/dispatchAiWkf.mjs.html +1 -1
- package/docs/dispatchAntigravity.mjs.html +1 -1
- package/docs/dispatchApiOpenaiCompat.mjs.html +1 -1
- package/docs/dispatchClaude.mjs.html +1 -1
- package/docs/dispatchCodex.mjs.html +1 -1
- package/docs/dispatchOpencode.mjs.html +1 -1
- package/docs/getCliArgs.mjs.html +1 -1
- package/docs/getErrorResult.mjs.html +1 -1
- package/docs/global.html +91 -11
- package/docs/index.html +1 -1
- package/docs/resolveProviders.mjs.html +1 -1
- package/docs/wkf_callAiWithFallback.mjs.html +13 -7
- package/docs/wkf_extractJsonLoose.mjs.html +1 -1
- package/docs/wkf_runFanout.mjs.html +11 -8
- package/docs/wkf_runFanoutPipeline.mjs.html +2 -2
- package/docs/wkf_runRolePipeline.mjs.html +1 -1
- package/package.json +1 -1
- package/src/dispatchAiFallback.mjs +70 -5
- package/src/wkf/callAiWithFallback.mjs +12 -6
- package/src/wkf/runFanout.mjs +10 -7
- package/src/wkf/runFanoutPipeline.mjs +1 -1
- package/test/unit-callAiWithFallback.test.mjs +15 -0
- package/test/unit-dispatchAiFallback.test.mjs +95 -0
- package/test/unit-dispatchAiWkf.test.mjs +8 -0
- package/test/unit-dispatchApiOpenaiCompat.test.mjs +28 -0
- package/test/unit-runFanout.test.mjs +46 -0
package/README.md
CHANGED
|
@@ -280,7 +280,8 @@ await test()
|
|
|
280
280
|
| `providers[].keys` | Array | `[]` | 同一服務之多把API key,逐次注入輪替(`kind`為`opencode`時須同時給`provider`);省略代表沿用CLI登入狀態 |
|
|
281
281
|
| `budgetMs` | Integer | 不限 | 整輪遞補之時間上限,剩餘預算會壓進每次呼叫之`timeoutMs` |
|
|
282
282
|
| `minAttemptMs` | Integer | `20000` | 單次嘗試之最低剩餘預算,低於此值即停止並回報`budget exhausted` |
|
|
283
|
-
| `store` | Object | 行程內記憶體 | 狀態持久化`{get:()=>state, set:(state)=>{}}`,state
|
|
283
|
+
| `store` | Object | 行程內記憶體 | 狀態持久化`{get:()=>state, set:(state)=>{}}`,state含`cursors`(逐群組游標)與`cooling`(供應商冷卻時間戳,僅啟用cooldownMs時使用);假定單行程序列調用 |
|
|
284
|
+
| `cooldownMs` | Integer | `0`不啟用 | 供應商冷卻視窗:條目(限有明給id者)遭遇**限流(HTTP 429,僅api類可偵測)或逾時(TIMEOUT)**後,於視窗內之後續呼叫中被**移至鏈尾(只降序不移除)**——前面全敗時仍會被嘗試、任一次成功立即解除,故不存在把已恢復服務冰住的問題。多階段工作流可大幅省去逐階段重踩已失效供應商的成本(使用端實測107s→15s)。注意啟用時providers順序會被暫時重排,此即機制目的 |
|
|
284
285
|
| `onEvent` | Function | 無 | 事件回調`(ev)=>{}`,`ev.type`為`'try'`、`'ok'`、`'next-key'`、`'skip-group'`、`'budget-out'`;失敗事件另帶`stdout`(被拒回覆)與`stderr`(錯誤輸出,皆已截斷)供診斷;回調拋出例外不影響主流程 |
|
|
285
286
|
|
|
286
287
|
頂層其餘設定(`timeoutMs`、`validate`、`maxRetries`等)為各attempt之共用預設,條目可覆寫;`maxRetries`建議維持預設`0`,韌性交給換家而非重試同一家。
|
|
@@ -380,6 +381,7 @@ let wkf = wdi.dispatchAiWkf({
|
|
|
380
381
|
let r1 = await wkf.callAi('...prompt...', { spec: { use: 'zen:deepseek-v4-flash-free', fallback: ['claude:sonnet'] }, check: (j) => !!j.essence })
|
|
381
382
|
|
|
382
383
|
//Fanout: 並行多開執行 → 單點整合收斂(候選未達minCandidates時以首位候選為成果不硬整合)
|
|
384
|
+
//check為共用預設; 名額規格與integrate可各自帶check(候選與終稿判準常不同, 如終稿須含固定段落)
|
|
383
385
|
let r2 = await wkf.runFanout({ task, agents: [{ use: 'zen:deepseek-v4-flash-free', fallback: ['claude:sonnet'] }, { use: 'claude:sonnet' }], integrate: { use: 'codex:gpt-5.6-luna' }, check })
|
|
384
386
|
|
|
385
387
|
//RolePipeline: 多角色串行鏈, 各階段可自帶AI/遞補/檢核, prompt收ctx={input,prev,results,index}
|
|
@@ -467,6 +469,7 @@ let wkf = wdi.dispatchAiWkf({ providers: picked.table, defaults: { timeoutMs: 12
|
|
|
467
469
|
```
|
|
468
470
|
|
|
469
471
|
#### Known design notes:
|
|
472
|
+
- `package.json`**刻意不設**`exports`欄位:wsemi與w-*系列皆為自有套件,呼叫端以按需深層引入(`w-dispatch-ai/src/xxx.mjs`)為既定路線;增設exports會封死此路徑,勿加。
|
|
470
473
|
- `dispatchAi(kind, prompt, opt)`會把整個`opt`原樣轉傳對應轉接器,該轉接器用不到的鍵(例如輪替條目物件內的`kind`)會被忽略,故「供應商條目物件直接當`opt`」是預期用法;`dispatchAiFallback`之providers條目沿用同一約定。
|
|
471
474
|
- `dispatchAiFallback`為單向單輪:全數群組試畢即回傳最後一筆失敗結果與`tried`歷程,不回頭重試已敗的組。跨次執行僅記憶游標,不設金鑰停用清單(理由見上方失敗分流說明);需跨次跳過特定金鑰時,由呼叫端依`tried`/`onEvent`內之`error`與`stderr`自行決策。
|
|
472
475
|
- `dispatchOpencode`之`key`與`provider`須同時給予才會注入金鑰;只給其一(或範例中`.env`缺鍵導致`key`為`undefined`)時不會報錯,而是靜默沿用CLI既有登入狀態。
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* w-dispatch-ai v1.0.
|
|
2
|
+
* w-dispatch-ai v1.0.7
|
|
3
3
|
* (c) 2018-2021 yuda-lyu(semisphere)
|
|
4
4
|
* Released under the MIT License.
|
|
5
5
|
*/
|
|
6
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("child_process"),require("path"),require("fs")):"function"==typeof define&&define.amd?define(["child_process","path","fs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self)["w-dispatch-ai"]=t(e.child_process,e.path,e.fs)}(this,function(e,t,r){"use strict";var n="object"==typeof global&&global&&global.Object===Object&&global,o="object"==typeof self&&self&&self.Object===Object&&self,i=n||o||Function("return this")(),u=i.Symbol,l=Object.prototype,a=l.hasOwnProperty,s=l.toString,c=u?u.toStringTag:void 0;var f=Object.prototype.toString;var d=u?u.toStringTag:void 0;function p(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":d&&d in Object(e)?function(e){var t=a.call(e,c),r=e[c];try{e[c]=void 0;var n=!0}catch(e){}var o=s.call(e);return n&&(t?e[c]=r:delete e[c]),o}(e):function(e){return f.call(e)}(e)}function y(e){return null!=e&&"object"==typeof e}function h(e){return y(e)&&"[object Arguments]"==p(e)}var v=Object.prototype,g=v.hasOwnProperty,b=v.propertyIsEnumerable,m=h(function(){return arguments}())?h:function(e){return y(e)&&g.call(e,"callee")&&!b.call(e,"callee")},j=m,k=Array.isArray;var w="object"==typeof exports&&exports&&!exports.nodeType&&exports,_=w&&"object"==typeof module&&module&&!module.nodeType&&module,O=_&&_.exports===w?i.Buffer:void 0,x=(O?O.isBuffer:void 0)||function(){return!1},S=/^(?:0|[1-9]\d*)$/;function A(e,t){var r=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==r||"symbol"!=r&&S.test(e))&&e>-1&&e%1==0&&e<t}function M(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}var I={};function $(e){return function(t){return e(t)}}I["[object Float32Array]"]=I["[object Float64Array]"]=I["[object Int8Array]"]=I["[object Int16Array]"]=I["[object Int32Array]"]=I["[object Uint8Array]"]=I["[object Uint8ClampedArray]"]=I["[object Uint16Array]"]=I["[object Uint32Array]"]=!0,I["[object Arguments]"]=I["[object Array]"]=I["[object ArrayBuffer]"]=I["[object Boolean]"]=I["[object DataView]"]=I["[object Date]"]=I["[object Error]"]=I["[object Function]"]=I["[object Map]"]=I["[object Number]"]=I["[object Object]"]=I["[object RegExp]"]=I["[object Set]"]=I["[object String]"]=I["[object WeakMap]"]=!1;var E="object"==typeof exports&&exports&&!exports.nodeType&&exports,N=E&&"object"==typeof module&&module&&!module.nodeType&&module,T=N&&N.exports===E&&n.process,D=function(){try{var e=N&&N.require&&N.require("util").types;return e||T&&T.binding&&T.binding("util")}catch(e){}}(),P=D&&D.isTypedArray,U=P?$(P):function(e){return y(e)&&M(e.length)&&!!I[p(e)]},C=Object.prototype.hasOwnProperty;function F(e,t){var r=k(e),n=!r&&j(e),o=!r&&!n&&x(e),i=!r&&!n&&!o&&U(e),u=r||n||o||i,l=u?function(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}(e.length,String):[],a=l.length;for(var s in e)!t&&!C.call(e,s)||u&&("length"==s||o&&("offset"==s||"parent"==s)||i&&("buffer"==s||"byteLength"==s||"byteOffset"==s)||A(s,a))||l.push(s);return l}var L=Object.prototype;function z(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||L)}function R(e,t){return function(r){return e(t(r))}}var B=R(Object.keys,Object),V=Object.prototype.hasOwnProperty;function J(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function W(e){if(!J(e))return!1;var t=p(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}function K(e){return null!=e&&M(e.length)&&!W(e)}function G(e){return K(e)?F(e):function(e){if(!z(e))return B(e);var t=[];for(var r in Object(e))V.call(e,r)&&"constructor"!=r&&t.push(r);return t}(e)}function H(e){return"symbol"==typeof e||y(e)&&"[object Symbol]"==p(e)}var Y=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,q=/^\w*$/;var Q,X=i["__core-js_shared__"],Z=(Q=/[^.]+$/.exec(X&&X.keys&&X.keys.IE_PROTO||""))?"Symbol(src)_1."+Q:"";var ee=Function.prototype.toString;function te(e){if(null!=e){try{return ee.call(e)}catch(e){}try{return e+""}catch(e){}}return""}var re=/^\[object .+?Constructor\]$/,ne=Function.prototype,oe=Object.prototype,ie=ne.toString,ue=oe.hasOwnProperty,le=RegExp("^"+ie.call(ue).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function ae(e){return!(!J(e)||(t=e,Z&&Z in t))&&(W(e)?le:re).test(te(e));var t}function se(e,t){var r=function(e,t){return null==e?void 0:e[t]}(e,t);return ae(r)?r:void 0}var ce=se(Object,"create");var fe=Object.prototype.hasOwnProperty;var de=Object.prototype.hasOwnProperty;function pe(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}function ye(e,t){return e===t||e!=e&&t!=t}function he(e,t){for(var r=e.length;r--;)if(ye(e[r][0],t))return r;return-1}pe.prototype.clear=function(){this.__data__=ce?ce(null):{},this.size=0},pe.prototype.delete=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t},pe.prototype.get=function(e){var t=this.__data__;if(ce){var r=t[e];return"__lodash_hash_undefined__"===r?void 0:r}return fe.call(t,e)?t[e]:void 0},pe.prototype.has=function(e){var t=this.__data__;return ce?void 0!==t[e]:de.call(t,e)},pe.prototype.set=function(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=ce&&void 0===t?"__lodash_hash_undefined__":t,this};var ve=Array.prototype.splice;function ge(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}ge.prototype.clear=function(){this.__data__=[],this.size=0},ge.prototype.delete=function(e){var t=this.__data__,r=he(t,e);return!(r<0)&&(r==t.length-1?t.pop():ve.call(t,r,1),--this.size,!0)},ge.prototype.get=function(e){var t=this.__data__,r=he(t,e);return r<0?void 0:t[r][1]},ge.prototype.has=function(e){return he(this.__data__,e)>-1},ge.prototype.set=function(e,t){var r=this.__data__,n=he(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this};var be=se(i,"Map");function me(e,t){var r,n,o=e.__data__;return("string"==(n=typeof(r=t))||"number"==n||"symbol"==n||"boolean"==n?"__proto__"!==r:null===r)?o["string"==typeof t?"string":"hash"]:o.map}function je(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}je.prototype.clear=function(){this.size=0,this.__data__={hash:new pe,map:new(be||ge),string:new pe}},je.prototype.delete=function(e){var t=me(this,e).delete(e);return this.size-=t?1:0,t},je.prototype.get=function(e){return me(this,e).get(e)},je.prototype.has=function(e){return me(this,e).has(e)},je.prototype.set=function(e,t){var r=me(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this};function ke(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var r=function(){var n=arguments,o=t?t.apply(this,n):n[0],i=r.cache;if(i.has(o))return i.get(o);var u=e.apply(this,n);return r.cache=i.set(o,u)||i,u};return r.cache=new(ke.Cache||je),r}ke.Cache=je;var we,_e,Oe,xe=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Se=/\\(\\)?/g,Ae=(we=function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(xe,function(e,r,n,o){t.push(n?o.replace(Se,"$1"):r||e)}),t},_e=ke(we,function(e){return 500===Oe.size&&Oe.clear(),e}),Oe=_e.cache,_e),Me=Ae;function Ie(e,t){for(var r=-1,n=null==e?0:e.length,o=Array(n);++r<n;)o[r]=t(e[r],r,e);return o}var $e=u?u.prototype:void 0,Ee=$e?$e.toString:void 0;function Ne(e){if("string"==typeof e)return e;if(k(e))return Ie(e,Ne)+"";if(H(e))return Ee?Ee.call(e):"";var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function Te(e){return null==e?"":Ne(e)}function De(e,t){return k(e)?e:function(e,t){if(k(e))return!1;var r=typeof e;return!("number"!=r&&"symbol"!=r&&"boolean"!=r&&null!=e&&!H(e))||q.test(e)||!Y.test(e)||null!=t&&e in Object(t)}(e,t)?[e]:Me(Te(e))}function Pe(e){if("string"==typeof e||H(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function Ue(e,t){for(var r=0,n=(t=De(t,e)).length;null!=e&&r<n;)e=e[Pe(t[r++])];return r&&r==n?e:void 0}function Ce(e,t,r){var n=null==e?void 0:Ue(e,t);return void 0===n?r:n}function Fe(e){var t=this.__data__=new ge(e);this.size=t.size}Fe.prototype.clear=function(){this.__data__=new ge,this.size=0},Fe.prototype.delete=function(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r},Fe.prototype.get=function(e){return this.__data__.get(e)},Fe.prototype.has=function(e){return this.__data__.has(e)},Fe.prototype.set=function(e,t){var r=this.__data__;if(r instanceof ge){var n=r.__data__;if(!be||n.length<199)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new je(n)}return r.set(e,t),this.size=r.size,this};var Le=function(){try{var e=se(Object,"defineProperty");return e({},"",{}),e}catch(e){}}(),ze=Le;function Re(e,t,r){"__proto__"==t&&ze?ze(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}var Be=Object.prototype.hasOwnProperty;function Ve(e,t,r){var n=e[t];Be.call(e,t)&&ye(n,r)&&(void 0!==r||t in e)||Re(e,t,r)}function Je(e,t,r,n){var o=!r;r||(r={});for(var i=-1,u=t.length;++i<u;){var l=t[i],a=n?n(r[l],e[l],l,r,e):void 0;void 0===a&&(a=e[l]),o?Re(r,l,a):Ve(r,l,a)}return r}var We=Object.prototype.hasOwnProperty;function Ke(e){if(!J(e))return function(e){var t=[];if(null!=e)for(var r in Object(e))t.push(r);return t}(e);var t=z(e),r=[];for(var n in e)("constructor"!=n||!t&&We.call(e,n))&&r.push(n);return r}function Ge(e){return K(e)?F(e,!0):Ke(e)}var He="object"==typeof exports&&exports&&!exports.nodeType&&exports,Ye=He&&"object"==typeof module&&module&&!module.nodeType&&module,qe=Ye&&Ye.exports===He?i.Buffer:void 0,Qe=qe?qe.allocUnsafe:void 0;function Xe(){return[]}var Ze=Object.prototype.propertyIsEnumerable,et=Object.getOwnPropertySymbols,tt=et?function(e){return null==e?[]:(e=Object(e),function(e,t){for(var r=-1,n=null==e?0:e.length,o=0,i=[];++r<n;){var u=e[r];t(u,r,e)&&(i[o++]=u)}return i}(et(e),function(t){return Ze.call(e,t)}))}:Xe,rt=tt;function nt(e,t){for(var r=-1,n=t.length,o=e.length;++r<n;)e[o+r]=t[r];return e}var ot=R(Object.getPrototypeOf,Object),it=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)nt(t,rt(e)),e=ot(e);return t}:Xe,ut=it;function lt(e,t,r){var n=t(e);return k(e)?n:nt(n,r(e))}function at(e){return lt(e,G,rt)}function st(e){return lt(e,Ge,ut)}var ct=se(i,"DataView"),ft=se(i,"Promise"),dt=se(i,"Set"),pt=se(i,"WeakMap"),yt="[object Map]",ht="[object Promise]",vt="[object Set]",gt="[object WeakMap]",bt="[object DataView]",mt=te(ct),jt=te(be),kt=te(ft),wt=te(dt),_t=te(pt),Ot=p;(ct&&Ot(new ct(new ArrayBuffer(1)))!=bt||be&&Ot(new be)!=yt||ft&&Ot(ft.resolve())!=ht||dt&&Ot(new dt)!=vt||pt&&Ot(new pt)!=gt)&&(Ot=function(e){var t=p(e),r="[object Object]"==t?e.constructor:void 0,n=r?te(r):"";if(n)switch(n){case mt:return bt;case jt:return yt;case kt:return ht;case wt:return vt;case _t:return gt}return t});var xt=Ot,St=Object.prototype.hasOwnProperty;var At=i.Uint8Array;function Mt(e){var t=new e.constructor(e.byteLength);return new At(t).set(new At(e)),t}var It=/\w*$/;var $t=u?u.prototype:void 0,Et=$t?$t.valueOf:void 0;function Nt(e,t,r){var n,o=e.constructor;switch(t){case"[object ArrayBuffer]":return Mt(e);case"[object Boolean]":case"[object Date]":return new o(+e);case"[object DataView]":return function(e,t){var r=t?Mt(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}(e,r);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return function(e,t){var r=t?Mt(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}(e,r);case"[object Map]":case"[object Set]":return new o;case"[object Number]":case"[object String]":return new o(e);case"[object RegExp]":return function(e){var t=new e.constructor(e.source,It.exec(e));return t.lastIndex=e.lastIndex,t}(e);case"[object Symbol]":return n=e,Et?Object(Et.call(n)):{}}}var Tt=Object.create,Dt=function(){function e(){}return function(t){if(!J(t))return{};if(Tt)return Tt(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}(),Pt=Dt;var Ut=D&&D.isMap,Ct=Ut?$(Ut):function(e){return y(e)&&"[object Map]"==xt(e)};var Ft=D&&D.isSet,Lt=Ft?$(Ft):function(e){return y(e)&&"[object Set]"==xt(e)},zt="[object Arguments]",Rt="[object Function]",Bt="[object Object]",Vt={};function Jt(e,t,r,n,o,i){var u,l=1&t,a=2&t,s=4&t;if(r&&(u=o?r(e,n,o,i):r(e)),void 0!==u)return u;if(!J(e))return e;var c=k(e);if(c){if(u=function(e){var t=e.length,r=new e.constructor(t);return t&&"string"==typeof e[0]&&St.call(e,"index")&&(r.index=e.index,r.input=e.input),r}(e),!l)return function(e,t){var r=-1,n=e.length;for(t||(t=Array(n));++r<n;)t[r]=e[r];return t}(e,u)}else{var f=xt(e),d=f==Rt||"[object GeneratorFunction]"==f;if(x(e))return function(e,t){if(t)return e.slice();var r=e.length,n=Qe?Qe(r):new e.constructor(r);return e.copy(n),n}(e,l);if(f==Bt||f==zt||d&&!o){if(u=a||d?{}:function(e){return"function"!=typeof e.constructor||z(e)?{}:Pt(ot(e))}(e),!l)return a?function(e,t){return Je(e,ut(e),t)}(e,function(e,t){return e&&Je(t,Ge(t),e)}(u,e)):function(e,t){return Je(e,rt(e),t)}(e,function(e,t){return e&&Je(t,G(t),e)}(u,e))}else{if(!Vt[f])return o?e:{};u=Nt(e,f,l)}}i||(i=new Fe);var p=i.get(e);if(p)return p;i.set(e,u),Lt(e)?e.forEach(function(n){u.add(Jt(n,t,r,n,e,i))}):Ct(e)&&e.forEach(function(n,o){u.set(o,Jt(n,t,r,o,e,i))});var y=c?void 0:(s?a?st:at:a?Ge:G)(e);return function(e,t){for(var r=-1,n=null==e?0:e.length;++r<n&&!1!==t(e[r],r,e););}(y||e,function(n,o){y&&(n=e[o=n]),Ve(u,o,Jt(n,t,r,o,e,i))}),u}function Wt(e,t){return t.length<2?e:Ue(e,function(e,t,r){var n=-1,o=e.length;t<0&&(t=-t>o?0:o+t),(r=r>o?o:r)<0&&(r+=o),o=t>r?0:r-t>>>0,t>>>=0;for(var i=Array(o);++n<o;)i[n]=e[n+t];return i}(t,0,-1))}Vt[zt]=Vt["[object Array]"]=Vt["[object ArrayBuffer]"]=Vt["[object DataView]"]=Vt["[object Boolean]"]=Vt["[object Date]"]=Vt["[object Float32Array]"]=Vt["[object Float64Array]"]=Vt["[object Int8Array]"]=Vt["[object Int16Array]"]=Vt["[object Int32Array]"]=Vt["[object Map]"]=Vt["[object Number]"]=Vt[Bt]=Vt["[object RegExp]"]=Vt["[object Set]"]=Vt["[object String]"]=Vt["[object Symbol]"]=Vt["[object Uint8Array]"]=Vt["[object Uint8ClampedArray]"]=Vt["[object Uint16Array]"]=Vt["[object Uint32Array]"]=!0,Vt["[object Error]"]=Vt[Rt]=Vt["[object WeakMap]"]=!1;var Kt=Object.prototype.hasOwnProperty;function Gt(e,t){var r=-1,n=(t=De(t,e)).length;if(!n)return!0;for(;++r<n;){var o=Pe(t[r]);if("__proto__"===o&&!Kt.call(e,"__proto__"))return!1;if(("constructor"===o||"prototype"===o)&&r<n-1)return!1}var i=Wt(e,t);return null==i||delete i[Pe(function(e){var t=null==e?0:e.length;return t?e[t-1]:void 0}(t))]}var Ht=Function.prototype,Yt=Object.prototype,qt=Ht.toString,Qt=Yt.hasOwnProperty,Xt=qt.call(Object);function Zt(e){return function(e){if(!y(e)||"[object Object]"!=p(e))return!1;var t=ot(e);if(null===t)return!0;var r=Qt.call(t,"constructor")&&t.constructor;return"function"==typeof r&&r instanceof r&&qt.call(r)==Xt}(e)?void 0:e}var er=u?u.isConcatSpreadable:void 0;function tr(e){return k(e)||j(e)||!!(er&&e&&e[er])}function rr(e,t,r,n,o){var i=-1,u=e.length;for(r||(r=tr),o||(o=[]);++i<u;){var l=e[i];t>0&&r(l)?t>1?rr(l,t-1,r,n,o):nt(o,l):n||(o[o.length]=l)}return o}function nr(e){return(null==e?0:e.length)?rr(e,1):[]}var or=Math.max;var ir=ze?function(e,t){return ze(e,"toString",{configurable:!0,enumerable:!1,value:(r=t,function(){return r}),writable:!0});var r}:function(e){return e},ur=ir,lr=Date.now;var ar=function(e){var t=0,r=0;return function(){var n=lr(),o=16-(n-r);if(r=n,o>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}(ur),sr=ar;var cr=function(e){return sr(function(e,t,r){return t=or(void 0===t?e.length-1:t,0),function(){for(var n=arguments,o=-1,i=or(n.length-t,0),u=Array(i);++o<i;)u[o]=n[t+o];o=-1;for(var l=Array(t+1);++o<t;)l[o]=n[o];return l[t]=r(u),function(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}(e,this,l)}}(e,void 0,nr),e+"")}(function(e,t){var r={};if(null==e)return r;var n=!1;t=Ie(t,function(t){return t=De(t,e),n||(n=t.length>1),t}),Je(e,st(e),r),n&&(r=Jt(r,7,Zt));for(var o=t.length;o--;)Gt(r,t[o]);return r}),fr=cr,dr=/\s/;var pr=/^\s+/;function yr(e){return e?e.slice(0,function(e){for(var t=e.length;t--&&dr.test(e.charAt(t)););return t}(e)+1).replace(pr,""):e}var hr=/^[-+]0x[0-9a-f]+$/i,vr=/^0b[01]+$/i,gr=/^0o[0-7]+$/i,br=parseInt;function mr(e){if("number"==typeof e)return e;if(H(e))return NaN;if(J(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=J(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=yr(e);var r=vr.test(e);return r||gr.test(e)?br(e.slice(2),r?2:8):hr.test(e)?NaN:+e}var jr=1/0;function kr(e){return e?(e=mr(e))===jr||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}function wr(e){var t=kr(e),r=t%1;return t==t?r?t-r:t:0}function _r(e){return"[object String]"===Object.prototype.toString.call(e)}function Or(e){return!(!_r(e)||""===e)}function xr(e){return e!=e}function Sr(e){let t=!1;if(Or(e))t=!isNaN(Number(e));else if(function(e){return"[object Number]"===Object.prototype.toString.call(e)}(e)){if(xr(e))return!1;t=!0}return t}function Ar(e){if(!Sr(e))return 0;return kr(e)}function Mr(e){return!!Sr(e)&&(e=Ar(e),"number"==typeof(t=e)&&t==wr(t));var t}var Ir=i.isFinite,$r=Math.min;var Er=function(e){var t=Math[e];return function(e,r){if(e=mr(e),(r=null==r?0:$r(wr(r),292))&&Ir(e)){var n=(Te(e)+"e").split("e");return+((n=(Te(t(n[0]+"e"+(+n[1]+r)))+"e").split("e"))[0]+"e"+(+n[1]-r))}return t(e)}}("round"),Nr=Er;function Tr(e){if(!Sr(e))return 0;e=Ar(e);let t=Nr(e);return"0"===String(t)?0:t}function Dr(e){if(!Mr(e))return!1;return Tr(e)>0}function Pr(e){return"[object Object]"===Object.prototype.toString.call(e)}function Ur(){let e,t,r=new Promise(function(){e=arguments[0],t=arguments[1]});return r.resolve=e,r.reject=t,r}function Cr(e=10){Sr(e)||(e=10);let t=Ur();return setTimeout(function(){t.resolve()},e),t}function Fr(e){return"[object Array]"===Object.prototype.toString.call(e)}function Lr(e){let t=Object.prototype.toString.call(e);return"[object Function]"===t||"[object AsyncFunction]"===t}function zr(e){if(!Mr(e))return!1;return Tr(e)>=0}function Rr(e,t){return Or(e)&&zr(t)?0===(t=Tr(t))?"":e.substring(0,t):""}function Br(e,t){return Or(e)&&zr(t)?0===(t=Tr(t))?e:function(e,t){if(!Or(e))return"";if(!zr(t))return"";if(0===(t=Tr(t)))return"";let r=e.length-t;return r<0&&(r=0),e.substring(r,r+t)}(e,e.length-t):""}function Vr(e,t,r={}){if(!Or(e))return"";if(!zr(t))return e;if(t=Tr(t),e.length<=t)return e;let n=Ce(r,"funWithMsg"),o="";if(Lr(n)){let r=n(e,t);Or(r)&&(o=r)}return Rr(e,t)+`...${o}`}function Jr(e,t={}){let r=Ce(t,"fs");return!!function(e,t={}){let r=Ce(t,"fs"),n=!1;try{r.statSync(e),n=!0}catch{n=!1}return n}(e,{fs:r})&&(!r.lstatSync(e).isDirectory()&&!r.lstatSync(e).isSymbolicLink())}function Wr(e){return function(e,t={}){let r=null,n=Ce(t,"fs"),o="";try{o=n.readFileSync(e,"utf8")}catch(e){r=e}return null!==r?{error:r}:{success:o}}(e,{fs:r})}function Kr(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Gr=e,Hr=Gr.spawn,Yr=Gr.exec;function qr(e,t,r){var n={};try{Object.keys(e).forEach(function(r){e[r].forEach(function(e){n[e]||(Qr(e,t),n[e]=1)}),n[r]||(Qr(r,t),n[r]=1)})}catch(e){if(r)return r(e);throw e}if(r)return r()}function Qr(e,t){try{process.kill(parseInt(e,10),t)}catch(e){if("ESRCH"!==e.code)throw e}}function Xr(e,t,r,n,o){var i=n(e),u="";i.stdout.on("data",function(e){e=e.toString("ascii");u+=e});i.on("close",function(i){delete r[e],0==i?u.match(/\d+/g).forEach(function(i){i=parseInt(i,10),t[e].push(i),t[i]=[],r[i]=1,Xr(i,t,r,n,o)}):0==Object.keys(r).length&&o()})}var Zr=Kr(function(e,t,r){if("function"==typeof t&&void 0===r&&(r=t,t=void 0),e=parseInt(e),Number.isNaN(e)){if(r)return r(new Error("pid must be a number"));throw new Error("pid must be a number")}var n={},o={};switch(n[e]=[],o[e]=1,process.platform){case"win32":Yr("taskkill /pid "+e+" /T /F",r);break;case"darwin":Xr(e,n,o,function(e){return Hr("pgrep",["-P",e])},function(){qr(n,t,r)});break;default:Xr(e,n,o,function(e){return Hr("ps",["-o","pid","--no-headers","--ppid",e])},function(){qr(n,t,r)})}});function en(e){let n=Ce(Wr(e),"success","");if(!Or(n))return null;let o=n.match(/%dp0%\\(node_modules\\[^"]+)"/i);if(!o)return null;let i=t.dirname(e),u=t.join(i,o[1]);return Jr(u,{fs:r})?u:null}function tn(r,n){if("win32"!==process.platform)return{file:r,args:n};let o=function(r){if("win32"!==process.platform)return r;if(/\.(cmd|exe|bat|ps1)$/i.test(r))return r;if(t.isAbsolute(r))return r;try{let t=e.execFileSync("where",[r],{encoding:"utf8",timeout:5e3,windowsHide:!0,shell:!1,stdio:["ignore","pipe","ignore"]}).trim().split(/\r?\n/),n=t.find(e=>/\.cmd$/i.test(e));return n||(t.find(e=>/\.exe$/i.test(e))||t[0]||r)}catch{return r}}(r);if(/\.exe$/i.test(o))return{file:o,args:n};if(/\.(cmd|bat)$/i.test(o)){let e=en(o);if(e)return/\.exe$/i.test(e)?{file:e,args:n}:{file:process.execPath,args:[e,...n]};let t=n.map(e=>`"${e.replace(/(\\*)"/g,'$1$1\\"').replace(/(\\*)$/,"$1$1")}"`.replace(/[()%!^"<>&|]/g,"^$&")),r=`${i=o,i.replace(/[()%!^"<>&|;, ]/g,"^$&")} ${t.join(" ")}`;return{file:process.env.comspec||process.env.COMSPEC||"cmd.exe",args:["/d","/s","/c",`"${r}"`],opt:{windowsVerbatimArguments:!0}}}var i;return{file:o,args:n}}let rn={funWithMsg:e=>`(truncated, total ${e.length} chars)`};function nn(t,r=[],n={}){let{timeoutMs:o=12e4,cwd:i=process.cwd(),input:u,validate:l,maxBuffer:a=10485760,onStdout:s,onStderr:c,env:f}=n,d=function(e){if(Lr(e))return e;if(!Or(e))return null;let t=e.split(",").map(e=>e.trim()).filter(Boolean);return 0===t.length?null:e=>{for(let r of t)if("nonempty"===r){if(!Or(e)||""===e.trim())return!1}else if("json"===r)try{JSON.parse(e)}catch{return!1}else if("min:"===Rr(r,4)){let t=Br(r,4);if(!Sr(t))return!1;let n=Tr(t);if(!Or(e)||e.length<n)return!1}return!0}}(l),p=Date.now(),y=Ur(),h={...process.env,PYTHONIOENCODING:"utf-8"};if(void 0!==f){if("win32"===process.platform){let e=Object.keys(f).map(e=>e.toLowerCase());for(let t of Object.keys(h))e.includes(t.toLowerCase())&&delete h[t]}h={...h,...f}}let v=tn(t,r),g=e.spawn(v.file,v.args,{cwd:i,stdio:["pipe","pipe","pipe"],windowsHide:!0,env:h,...v.opt}),b="",m="",j=new TextDecoder("utf-8"),k=new TextDecoder("utf-8"),w=!1,_=!1;g.stdout.on("data",e=>{let t=j.decode(e,{stream:!0});t&&(Lr(s)&&s(t),b.length<a&&(b+=t))}),g.stderr.on("data",e=>{let t=k.decode(e,{stream:!0});t&&(Lr(c)&&c(t),m.length<a&&(m+=t))}),g.stdin.on("error",()=>{}),void 0!==u&&g.stdin.write(u,"utf8"),g.stdin.end();let O=setTimeout(()=>{w||(_=!0,function(e){let t=Ur();return Zr(Number(e),"SIGKILL",r=>{r?t.reject(r):t.resolve(`pid[${e}] killed`)}),t}(g.pid).catch(()=>{}),setTimeout(()=>{w||(w=!0,y.resolve({ok:!1,stdout:Vr(b,500,rn),stderr:Vr(m,500,rn),code:null,error:`TIMEOUT after ${o/1e3}s(子進程未能結束)`,durationMs:Date.now()-p,pid:g.pid}))},3e3).unref())},o);return g.on("error",e=>{w||(w=!0,clearTimeout(O),y.resolve({ok:!1,stdout:"",stderr:"",code:null,error:`${e.code||"UNKNOWN"}: ${e.message}`,durationMs:Date.now()-p,pid:g.pid}))}),g.on("close",(e,t)=>{if(w)return;w=!0,clearTimeout(O);let r=j.decode();r&&b.length<a&&(b+=r);let n=k.decode();n&&m.length<a&&(m+=n);let i=Date.now()-p;_?y.resolve({ok:!1,stdout:Vr(b,500,rn),stderr:Vr(m,500,rn),code:e,error:`TIMEOUT after ${o/1e3}s`,durationMs:i,pid:g.pid}):0===e?!d||d(b)?y.resolve({ok:!0,stdout:b,stderr:m,code:0,error:"",durationMs:i,pid:g.pid}):y.resolve({ok:!1,stdout:Vr(b,500,rn),stderr:Vr(m,500,rn),code:0,error:"OUTPUT_VALIDATION_FAILED",durationMs:i,pid:g.pid}):y.resolve({ok:!1,stdout:Vr(b,500,rn),stderr:Vr(m,1e3,rn),code:e,error:t?`Signal: ${t}`:`Exit code ${e}`,durationMs:i,pid:g.pid})}),y}async function on(e,t=[],r={}){if(!Or(e))return{ok:!1,stdout:"",stderr:"",code:null,error:"command 須為非空字串",durationMs:0,attempts:0};Fr(t)||(t=[]),Pr(r)||(r={});let{maxRetries:n=0,retryDelayMs:o=5e3,...i}=r,u=Ce(i,"cwd",null);Or(u)?i.cwd=u:i.cwd=process.cwd();let l=Ce(i,"input",null);Or(l)?i.input=l:i.input=void 0;let a=Ce(i,"env",null);Pr(a)?i.env=a:i.env=void 0;let s=Ce(i,"validate",null);Lr(s)||Or(s)?i.validate=s:i.validate=void 0;let c=Ce(i,"onStdout",null);Lr(c)?i.onStdout=c:i.onStdout=void 0;let f=Ce(i,"onStderr",null);Lr(f)?i.onStderr=f:i.onStderr=void 0,n=zr(n)?Tr(n):0,o=Dr(o)?Tr(o):5e3;let d=Ce(i,"timeoutMs",null);Dr(d)?i.timeoutMs=Tr(d):i.timeoutMs=12e4;let p,y=Ce(i,"maxBuffer",null);Dr(y)?i.maxBuffer=Tr(y):i.maxBuffer=10485760;let h=0;for(let r=0;r<=n;r++){if(r>0){let e=Math.min(o*r,15e3);await Cr(e)}if(p=await nn(e,t,i),h=r+1,p.ok)return p.attempts=h,p;if(p.error.includes("ENOENT"))break;if(2===p.code)break}return p.attempts=h,p}function un(...e){let t=[];for(let r of e)if(Fr(r))for(let e of r)Or(e)&&t.push(e);else Or(r)&&t.push(r);return t}function ln(e){return Or(e)||(e="unknown error"),{ok:!1,stdout:"",stderr:"",code:null,error:e,durationMs:0,attempts:0}}let an=3e5,sn=["exe","model","key","provider","agent","config","extraArgs","input","env"];async function cn(e,t={}){if(!Or(e))return ln("prompt must be a non-empty string");let r=Ce(t,"exe",null);Or(r)||(r="opencode");let n=Ce(t,"model",null),o=Ce(t,"agent",null);Or(o)||(o="build");let i=Ce(t,"extraArgs",null),u=un("run",["--agent",o],Or(n)?["-m",n]:[],i),l=Ce(t,"env",null);Pr(l)||(l=void 0);let a=Ce(t,"config",null);Pr(a)&&(a=JSON.stringify(a)),Or(a)&&(l={...l,OPENCODE_CONFIG_CONTENT:a});let s=Ce(t,"key",null),c=Ce(t,"provider",null);Or(s)&&Or(c)&&(l={...l,OPENCODE_AUTH_CONTENT:JSON.stringify({[c]:{type:"api",key:s}})});let f=Ce(t,"timeoutMs",null);return f=Dr(f)?Tr(f):an,on(r,u,{...fr(t,sn),input:e,env:l,timeoutMs:f})}function fn(e){return!0===(t=e)||!1===t||y(t)&&"[object Boolean]"==p(t);var t}let dn=["exe","model","skipPermissions","extraArgs","input"];async function pn(e,t={}){if(!Or(e))return ln("prompt must be a non-empty string");let r=Ce(t,"exe",null);Or(r)||(r="claude");let n=Ce(t,"model",null),o=Ce(t,"skipPermissions",null);fn(o)||(o=!0);let i=Ce(t,"extraArgs",null),u=un("-p",o?"--dangerously-skip-permissions":[],Or(n)?["--model",n]:[],i),l=Ce(t,"timeoutMs",null);return l=Dr(l)?Tr(l):an,on(r,u,{...fr(t,dn),input:e,timeoutMs:l})}let yn=["exe","model","sandbox","extraArgs","input"];async function hn(e,t={}){if(!Or(e))return ln("prompt must be a non-empty string");let r=Ce(t,"exe",null);Or(r)||(r="codex");let n=Ce(t,"model",null),o=Ce(t,"sandbox",null);Or(o)||(o="workspace-write");let i=Ce(t,"extraArgs",null),u=un("exec",["--sandbox",o],"--skip-git-repo-check",Or(n)?["-m",n]:[],i),l=Ce(t,"timeoutMs",null);return l=Dr(l)?Tr(l):an,on(r,u,{...fr(t,yn),input:e,timeoutMs:l})}let vn=an,gn=["exe","model","effort","skipPermissions","printTimeout","addDirs","extraArgs","input"];async function bn(e,t={}){if(!Or(e))return ln("prompt must be a non-empty string");if(e.length>3e4)return ln(`prompt too long (${e.length} chars > 30000), agy passes prompt via --print flag and Windows command line is capped at 32767 chars`);let r=Ce(t,"exe",null);Or(r)||(r="agy");let n=Ce(t,"model",null),o=Ce(t,"effort",null),i=Ce(t,"skipPermissions",null);fn(i)||(i=!0);let u=Ce(t,"timeoutMs",null);u=Dr(u)?Tr(u):vn;let l=Ce(t,"printTimeout",null);Or(l)||(l=`${Math.max(30,Math.floor(u/1e3)-30)}s`);let a=Ce(t,"addDirs",null);if(!Fr(a)){let e=Ce(t,"cwd",null);Or(e)||(e=process.cwd()),a=[e]}let s=[];for(let e of a)Or(e)&&s.push("--add-dir",e);let c=Ce(t,"extraArgs",null),f=un(i?"--dangerously-skip-permissions":[],["--print-timeout",l],Or(n)?["--model",n]:[],Or(o)?["--effort",o]:[],s,c,["--print",e]),d=fr(t,gn);try{return await on(r,f,{...d,timeoutMs:u})}catch(e){return ln(`${e.code||"UNKNOWN"}: ${e.message}`)}}let mn=an,jn={funWithMsg:e=>`(truncated, total ${e.length} chars)`};async function kn(e,t,r,n,o){let i=Date.now(),u=new AbortController,l=setTimeout(()=>{u.abort()},n),a=null,s="";try{a=await fetch(e,{method:"POST",headers:t,body:JSON.stringify(r),signal:u.signal}),s=await a.text()}catch(e){clearTimeout(l);let t=Date.now()-i;return"AbortError"===e.name?{ok:!1,stdout:"",stderr:"",code:null,error:`TIMEOUT after ${n/1e3}s`,durationMs:t}:{ok:!1,stdout:"",stderr:"",code:null,error:`FETCH_ERROR: ${Ce(e,"cause.code","")||e.message}`,durationMs:t}}clearTimeout(l);let c=Date.now()-i;if(!a.ok)return{ok:!1,stdout:"",stderr:Vr(s,1e3,jn),code:a.status,error:`HTTP ${a.status}`,durationMs:c};let f=null,d="",p=null;try{let e=JSON.parse(s);f=Ce(e,"choices.0.message.content",null),d=Ce(e,"choices.0.finish_reason",""),p=Ce(e,"choices.0.message.tool_calls",null)}catch{}return"tool_calls"===d||null!=p?{ok:!1,stdout:"",stderr:Vr(s,1e3,jn),code:a.status,error:"TOOL_CALLS_UNSUPPORTED: use a cli kind (opencode/claude/codex/antigravity) when tools are needed",durationMs:c}:null==f?{ok:!1,stdout:"",stderr:Vr(s,500,jn),code:a.status,error:"INVALID_RESPONSE: missing choices[0].message.content",durationMs:c}:("string"!=typeof f&&(f=JSON.stringify(f)),o&&!o(f)?{ok:!1,stdout:Vr(f,500,jn),stderr:"",code:a.status,error:"OUTPUT_VALIDATION_FAILED",durationMs:c}:{ok:!0,stdout:f,stderr:"",code:a.status,error:"",durationMs:c})}async function wn(e,t={}){if(!Or(e))return ln("prompt must be a non-empty string");let r=Ce(t,"baseURL",null);if(!Or(r))return ln("baseURL must be a non-empty string");let n=Ce(t,"model",null);if(!Or(n))return ln("model must be a non-empty string");let o=Ce(t,"key",null),i=Ce(t,"system",null),u=Ce(t,"body",null);Pr(u)||(u={});let l=Ce(t,"headers",null);Pr(l)||(l={});let a=Ce(t,"timeoutMs",null);a=Dr(a)?Tr(a):mn;let s=Ce(t,"maxRetries",null);s=zr(s)?Tr(s):0;let c=Ce(t,"retryDelayMs",null);c=Dr(c)?Tr(c):5e3;let f=function(e){if(Lr(e))return e;if(!Or(e))return null;let t=e.split(",").map(e=>e.trim()).filter(Boolean);return 0===t.length?null:e=>{for(let r of t)if("nonempty"===r){if(!Or(e)||""===e.trim())return!1}else if("json"===r)try{JSON.parse(e)}catch{return!1}else if("min:"===Rr(r,4)){let t=Br(r,4);if(!Sr(t))return!1;let n=Tr(t);if(!Or(e)||e.length<n)return!1}return!0}}(Ce(t,"validate",null)),d=r.replace(/\/+$/,"")+"/chat/completions",p=[];Or(i)&&p.push({role:"system",content:i}),p.push({role:"user",content:e});let y={model:n,messages:p,...u},h={"Content-Type":"application/json",...l};Or(o)&&(h.Authorization=`Bearer ${o}`);let v=null,g=0;for(let e=0;e<=s;e++){if(e>0&&await Cr(Math.min(c*e,15e3)),v=await kn(d,h,y,a,f),g=e+1,v.ok)return v.attempts=g,v;let t=v.code;if(Sr(t)&&t>=400&&t<500&&429!==t)break}return v.attempts=g,v}let _n={opencode:cn,claude:pn,codex:hn,antigravity:bn,"api-openai-compat":wn};function On(e){return e!=e}function xn(e){return null==e?[]:function(e,t){return Ie(t,function(t){return e[t]})}(e,G(e))}var Sn=Math.max;function An(e,t,r,n){e=K(e)?e:xn(e),r=r&&!n?wr(r):0;var o=e.length;return r<0&&(r=Sn(o+r,0)),function(e){return"string"==typeof e||!k(e)&&y(e)&&"[object String]"==p(e)}(e)?r<=o&&e.indexOf(t,r)>-1:!!o&&function(e,t,r){return t==t?function(e,t,r){for(var n=r-1,o=e.length;++n<o;)if(e[n]===t)return n;return-1}(e,t,r):function(e,t,r,n){for(var o=e.length,i=r+(n?1:-1);n?i--:++i<o;)if(t(e[i],i,e))return i;return-1}(e,On,r)}(e,t,r)>-1}async function Mn(e,t,r={}){let n=G(_n);return Or(e)&&An(n,e)?(0,_n[e])(t,r):ln(`unknown ai kind: "${e}" (available: ${n.join(", ")})`)}let In=["providers","budgetMs","minAttemptMs","store","onEvent"],$n=["id","keys"],En=an,Nn={cursors:{}};function Tn(e){let t=Ce(e,"error","");Or(t)||(t="");let r=Ce(e,"code",null);return 0===t.indexOf("TIMEOUT")||(!!t.includes("ENOENT")||(2===r||("OUTPUT_VALIDATION_FAILED"===t||0===t.indexOf("unknown ai kind"))))}async function Dn(e,t={}){if(!Or(e))return{...ln("prompt must be a non-empty string"),tried:[]};let r=Ce(t,"providers",null),n=Fr(r)?r.filter(Pr):[];if(0===n.length)return{...ln("providers must be a non-empty array"),tried:[]};let o=Ce(t,"budgetMs",null);o=Dr(o)?Tr(o):null;let i=null===o?null:Date.now()+o,u=Ce(t,"minAttemptMs",null);u=Dr(u)?Tr(u):2e4;let l=Ce(t,"store",null),a=Pr(l)&&Lr(l.get)&&Lr(l.set),s=null;if(a)try{s=l.get()}catch{}Pr(s)||(s=a?{cursors:{}}:Nn),Pr(s.cursors)||(s.cursors={});let c=()=>{if(a)try{l.set(s)}catch{}},f=Ce(t,"onEvent",null),d=e=>{if(Lr(f))try{f(e)}catch{}},p=fr(t,In),y=[],h=null,v=null;for(let t=0;t<n.length;t++){let r=n[t],o=Ce(r,"id",null);Or(o)||(o=String(t));let l=Ce(r,"kind",null),a=Ce(r,"model",null),f=Ce(r,"keys",null),g=Fr(f)?f.filter(Or):[],b=g.length,m=fr(r,$n),j=0;if(b>0){let e=Ce(s.cursors,o,0);j=Dr(e)?Tr(e)%b:0}let k=b>0?b:1,w=!1;for(let t=0;t<k&&!w;t++){let r=b>0?(j+t)%b:null,n=null===r?o:`${o}#${r}`,f={...p,...m};b>0&&(f.key=g[r]);let k=Ce(f,"timeoutMs",null);if(k=Dr(k)?Tr(k):En,null!==i){let e=i-Date.now();if(e<u)return d({type:"budget-out",providerId:o,keyIndex:r,keyId:n,remainingMs:e}),y.push({providerId:o,keyIndex:r,keyId:n,outcome:"budget-out"}),{...ln("budget exhausted"),tried:y};k=Math.min(k,e)}f.timeoutMs=k,d({type:"try",providerId:o,keyIndex:r,keyId:n,kind:l,model:a});let _=await Mn(l,e,f);if(_.ok)return b>0&&(s.cursors[o]=(r+1)%b,c()),d({type:"ok",providerId:o,keyIndex:r,keyId:n,durationMs:_.durationMs}),y.push({providerId:o,keyIndex:r,keyId:n,outcome:"ok",durationMs:_.durationMs}),{..._,providerId:o,keyIndex:r,kind:l,model:a,tried:y};h=_,v={providerId:o,keyIndex:r,kind:l,model:a},Tn(_)?(d({type:"skip-group",providerId:o,keyIndex:r,keyId:n,error:_.error,stdout:_.stdout,stderr:_.stderr}),y.push({providerId:o,keyIndex:r,keyId:n,outcome:"skip-group",error:_.error,stdout:_.stdout,stderr:_.stderr,durationMs:_.durationMs}),w=!0):(d({type:"next-key",providerId:o,keyIndex:r,keyId:n,error:_.error,stdout:_.stdout,stderr:_.stderr}),y.push({providerId:o,keyIndex:r,keyId:n,outcome:"next-key",error:_.error,stdout:_.stdout,stderr:_.stderr,durationMs:_.durationMs}))}}return{...h||ln("all providers failed"),...v||{},tried:y}}function Pn(e){return!!function(e){return"[object Undefined]"===Object.prototype.toString.call(e)}(e)||(!!function(e){return"[object Null]"===Object.prototype.toString.call(e)}(e)||(!!function(e){if(Pr(e)){for(let t in e)return!1;return!0}return!1}(e)||(!!function(e){return!(!_r(e)||""!==e)}(e)||(!!function(e){return!!Fr(e)&&0===e.length}(e)||!!xr(e)))))}function Un(e){return!!Fr(e)&&(0!==e.length&&(1!==e.length||!Pn(e[0])))}function Cn(e){let t=String(e||"");if(t=t.replace(new RegExp(String.fromCharCode(27)+"\\[[0-9;]*m","g"),""),t=t.replace(/```(?:json)?/g,""),t=t.trim(),""===t)return null;try{let e=JSON.parse(t);if(null!==e&&"object"==typeof e)return e}catch(e){}let r=-1;for(let e=0;e<t.length;e++)if("{"===t[e]||"["===t[e]){r=e;break}if(r<0)return null;let n=0,o=!1,i=!1;for(let e=r;e<t.length;e++){let u=t[e];if(o)i?i=!1:"\\"===u?i=!0:'"'===u&&(o=!1);else if('"'===u)o=!0;else if("{"===u||"["===u)n++;else if(("}"===u||"]"===u)&&(n--,0===n)){try{let n=JSON.parse(t.slice(r,e+1));if(null!==n&&"object"==typeof n)return n}catch(e){}return null}}return null}let Fn=["【執行約束】你只需把結果輸出在回覆內容中。","禁止建立、修改或刪除任何檔案,也不要執行任何會改動磁碟或系統狀態的指令——","呼叫端只讀取你的回覆文字,任何寫入磁碟的動作都不會被採用,只會製造無人讀取的垃圾檔。","唯讀查閱(讀取檔案、搜尋內容、列出目錄)不在此限,需要時請照常使用。","",""].join("\n");async function Ln(e,t={}){let r=Date.now();if(!Or(e))return{ok:!1,json:null,error:"prompt must be a non-empty string",ms:0,tried:[]};let n=Ce(t,"providers",null),o=Ce(t,"spec",null);if(!Pr(n)||!Pr(o))return{ok:!1,json:null,error:`no valid provider for spec: ${JSON.stringify(o)}`,ms:0,tried:[]};let{chain:i,missing:u}=function(e,t){let r=[Ce(t,"use","")],n=Ce(t,"fallback",null);Un(n)&&(r=[...r,...n]);let o=[],i=[];for(let t of r){let r=Ce(e,t,null);Pr(r)?o.push({id:t,...r}):i.push(String(t))}return{chain:o,missing:i}}(n,o);if(u.length>0)return{ok:!1,json:null,error:`unknown provider name(s): ${u.join(", ")}`,ms:0,tried:[]};if(0===i.length)return{ok:!1,json:null,error:`no valid provider for spec: ${JSON.stringify(o)}`,ms:0,tried:[]};let l=!0===Ce(t,"rawText",!1),a=Ce(t,"parse",null);Lr(a)||(a=Cn);let s=Ce(t,"check",null);Lr(s)||(s=null);let c=Ce(t,"promptPrefix",null);Or(c)||(c=""===c?"":Fn);let f=await Dn(c+e,{providers:i,validate:e=>{if(l){let t=String(e||"").trim();return""!==t&&(!s||!0===s(t))}let t=a(e);return null!==t&&(!s||!0===s(t))},timeoutMs:Ce(t,"timeoutMs",null)||an,budgetMs:Ce(t,"budgetMs",null)||void 0,maxRetries:Ce(t,"maxRetries",null)||0,cwd:Ce(t,"cwd",null)||process.cwd(),store:Ce(t,"store",null)||void 0,onEvent:Ce(t,"onEvent",null)||void 0}),d=null;f.ok&&(d=l?String(f.stdout||"").trim():a(f.stdout));let p=Ce(f,"providerId",null),y=Ce(f,"keyIndex",null);return{ok:f.ok&&null!==d,json:d,providerId:p,keyIndex:y,keyId:null===y?p:`${p}#${y}`,ms:Date.now()-r,tried:Ce(f,"tried",[]),error:f.ok?"":Ce(f,"error","unknown error")}}async function zn(e={}){let t=Date.now(),r=Ce(e,"providers",null),n=Ce(e,"task",""),o=Ce(e,"agents",null),i=Ce(e,"integrate",null),u=Ce(e,"check",null),l=Ce(e,"callOpt",{});if(!Or(n))return{ok:!1,result:null,integrated:!1,agents:[],candidates:[],totalMs:0,error:"task must be a non-empty string"};if(!Un(o))return{ok:!1,result:null,integrated:!1,agents:[],candidates:[],totalMs:0,error:"agents must be a non-empty array"};let a=Ce(e,"minCandidates",null);a=Dr(a)?Tr(a):2;let s=await Promise.all(o.map(e=>{let{use:t,fallback:o,...i}=e;return Ln(n,{...l,...i,providers:r,spec:{use:t,fallback:o},check:u})})),c=s.filter(e=>e.ok).map(e=>e.json);if(0===c.length)return{ok:!1,result:null,integrated:!1,agents:s,candidates:c,totalMs:Date.now()-t,error:"all agents failed"};if(1===c.length||c.length<a)return{ok:!0,result:c[0],integrated:!1,agents:s,candidates:c,totalMs:Date.now()-t,error:""};if(!i||!Or(Ce(i,"use","")))return{ok:!1,result:null,integrated:!1,agents:s,candidates:c,totalMs:Date.now()-t,error:"integrate spec (with use) is required"};let{use:f,fallback:d,prompt:p,...y}=i,h=Lr(p)?p(c):function(e,t={}){let r=Ce(t,"schema",""),n=Or(r)?`\n只回覆 JSON 物件,不要任何其他說明文字,格式與候選相同:\n${r}\n`:"\n只回覆 JSON 物件,不要任何其他說明文字,格式與候選相同。\n";return`你是整合者。以下是同一任務由 ${e.length} 個獨立執行產生的候選結果(JSON),請整合成單一最佳版本:擇優合併、去重、保留最完整的證據標注與爭議呈現,不可加入候選中沒有的數字或結論。\n${n}\n${e.map((e,t)=>`【候選 ${t+1}】\n${JSON.stringify(e)}`).join("\n\n")}`}(c,e),v=await Ln(h,{...l,...y,providers:r,spec:{use:f,fallback:d},check:u});return{ok:v.ok,result:v.ok?v.json:null,integrated:v.ok,agents:s,candidates:c,integrateDetail:v,totalMs:Date.now()-t,error:v.ok?"":`integrate failed: ${v.error}`}}let Rn=["id","use","fallback","prompt","check"];async function Bn(e={}){let t=Date.now(),r=Ce(e,"providers",null),n=Ce(e,"input",null),o=Ce(e,"stages",null),i=Ce(e,"callOpt",{});if(!Un(o))return{ok:!1,result:null,stages:{},results:{},order:[],failedStage:null,totalMs:0,error:"stages must be a non-empty array"};let u={},l={},a=[],s=null;for(let e=0;e<o.length;e++){let c=o[e],f=Or(Ce(c,"id",""))?c.id:`stage${e+1}`;a.push(f);let d=Ce(c,"prompt",null);if(!Lr(d))return l[f]={ok:!1,error:`stage[${f}].prompt must be a function`},{ok:!1,result:null,stages:l,results:u,order:a,failedStage:f,totalMs:Date.now()-t,error:l[f].error};let p=d({input:n,prev:s,results:u,index:e});if(!Or(p))return l[f]={ok:!1,error:`stage[${f}].prompt returned empty`},{ok:!1,result:null,stages:l,results:u,order:a,failedStage:f,totalMs:Date.now()-t,error:l[f].error};let y=fr(c,Rn),h=await Ln(p,{...i,...y,providers:r,spec:{use:Ce(c,"use",""),fallback:Ce(c,"fallback",null)},check:Ce(c,"check",null)});if(l[f]=h,!h.ok)return{ok:!1,result:null,stages:l,results:u,order:a,failedStage:f,totalMs:Date.now()-t,error:`stage[${f}] failed: ${h.error}`};u[f]=h.json,s=h.json}return{ok:!0,result:s,stages:l,results:u,order:a,failedStage:null,totalMs:Date.now()-t,error:""}}let Vn={KINDS:G(_n),dispatchAi:Mn,dispatchAiFallback:Dn,dispatchAiWkf:function(e={}){let t=Ce(e,"providers",null);if(!Pr(t))throw new Error("dispatchAiWkf: opt.providers must be an object (name → provider entry)");let r=Ce(e,"defaults",null);return Pr(r)||(r={}),{providers:t,callAi:(e,n={})=>Ln(e,{...r,...n,providers:t}),runFanout:(e={})=>zn({...e,providers:t,callOpt:{...r,...Ce(e,"callOpt",{})}}),runRolePipeline:(e={})=>Bn({...e,providers:t,callOpt:{...r,...Ce(e,"callOpt",{})}}),runFanoutPipeline:(e={})=>async function(e={}){let t=Date.now(),r=await zn({providers:Ce(e,"providers",null),task:Ce(e,"task",""),agents:Ce(e,"agents",null),integrate:Ce(e,"integrate",null),check:Ce(e,"check",null),schema:Ce(e,"schema",""),minCandidates:Ce(e,"minCandidates",null),callOpt:Ce(e,"callOpt",{})});if(!r.ok)return{ok:!1,result:null,A:r,B:null,totalMs:Date.now()-t,error:`A failed: ${r.error}`};let n=await Bn({providers:Ce(e,"providers",null),input:r.result,stages:Ce(e,"stages",null),callOpt:Ce(e,"callOpt",{})});return{ok:n.ok,result:n.ok?n.result:null,A:r,B:n,totalMs:Date.now()-t,error:n.ok?"":`B failed: ${n.error}`}}({...e,providers:t,callOpt:{...r,...Ce(e,"callOpt",{})}})}},dispatchOpencode:cn,dispatchClaude:pn,dispatchCodex:hn,dispatchAntigravity:bn,dispatchApiOpenaiCompat:wn,providers:[{id:"oc:opencode/deepseek-v4-flash-free",model:"opencode/deepseek-v4-flash-free",kind:"opencode",envVar:"OPENCODE_KEYS",provider:"opencode",config:{permission:{edit:"deny",write:"deny",bash:"deny"}}},{id:"oc:agnes-ai/agnes-2.5-flash",model:"agnes-ai/agnes-2.5-flash",kind:"opencode",envVar:"AGNES_KEYS",provider:"agnes-ai",config:{provider:{"agnes-ai":{npm:"@ai-sdk/openai-compatible",name:"Agnes",options:{baseURL:"https://apihub.agnes-ai.com/v1"},models:{"agnes-2.5-flash":{name:"Agnes 2.5 Flash"}}}},permission:{edit:"deny",write:"deny",bash:"deny"}}},{id:"oc:poolside/poolside/laguna-s-2.1",model:"poolside/poolside/laguna-s-2.1",kind:"opencode",envVar:"POOLSIDE_KEYS",provider:"poolside",config:{provider:{poolside:{npm:"@ai-sdk/openai-compatible",name:"Poolside",options:{baseURL:"https://inference.poolside.ai/v1"},models:{"poolside/laguna-s-2.1":{name:"Laguna S 2.1"}}}},permission:{edit:"deny",write:"deny",bash:"deny"}}},{id:"agy:gemini-3.7-flash-high",model:"gemini-3.7-flash-high",kind:"antigravity",addDirs:["."]},{id:"claude:sonnet",model:"sonnet",kind:"claude",extraArgs:["--disallowedTools","Write,Edit,NotebookEdit,Bash"]},{id:"codex:gpt-5.6-luna",model:"gpt-5.6-luna",kind:"codex",sandbox:"read-only"},{id:"zen:deepseek-v4-flash-free",model:"deepseek-v4-flash-free",kind:"api-openai-compat",envVar:"OPENCODE_KEYS",baseURL:"https://opencode.ai/zen/v1",body:{max_tokens:8192}},{id:"agnes:agnes-2.5-flash",model:"agnes-2.5-flash",kind:"api-openai-compat",envVar:"AGNES_KEYS",baseURL:"https://apihub.agnes-ai.com/v1",body:{max_tokens:8192}},{id:"poolside:laguna-s-2.1",model:"poolside/laguna-s-2.1",kind:"api-openai-compat",envVar:"POOLSIDE_KEYS",baseURL:"https://inference.poolside.ai/v1",body:{max_tokens:8192,chat_template_kwargs:{enable_thinking:!1}}}],resolveProviders:function(e,t={}){let r=Ce(t,"env",null);Pr(r)||(r="undefined"!=typeof process&&process&&Pr(process.env)?process.env:{});let n=Fr(e)?e.filter(Pr):[],o=Ce(t,"pick",null),i=[],u=n;if(Un(o)){u=[];for(let e of o){let t=n.find(t=>Ce(t,"id",null)===e);t?u.push(t):i.push(String(e))}}let l=[],a=[];for(let e of u){let t=Ce(e,"envVar",null);if(!Or(t)||Un(Ce(e,"keys",null))){l.push(fr(e,["envVar"]));continue}let n=String(Ce(r,t,"")||"").split(",").map(e=>e.trim()).filter(Boolean);0!==n.length?l.push({...fr(e,["envVar"]),keys:n}):a.push({id:Ce(e,"id",""),envVar:t})}let s={};for(let e of l)s[e.id]=e;return{providers:l,table:s,skipped:a,missing:i}}};return Vn});
|
|
6
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("child_process"),require("path"),require("fs")):"function"==typeof define&&define.amd?define(["child_process","path","fs"],t):(e="undefined"!=typeof globalThis?globalThis:e||self)["w-dispatch-ai"]=t(e.child_process,e.path,e.fs)}(this,function(e,t,r){"use strict";var n="object"==typeof global&&global&&global.Object===Object&&global,o="object"==typeof self&&self&&self.Object===Object&&self,i=n||o||Function("return this")(),l=i.Symbol,u=Object.prototype,a=u.hasOwnProperty,s=u.toString,c=l?l.toStringTag:void 0;var f=Object.prototype.toString;var d=l?l.toStringTag:void 0;function p(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":d&&d in Object(e)?function(e){var t=a.call(e,c),r=e[c];try{e[c]=void 0;var n=!0}catch(e){}var o=s.call(e);return n&&(t?e[c]=r:delete e[c]),o}(e):function(e){return f.call(e)}(e)}function y(e){return null!=e&&"object"==typeof e}function h(e){return y(e)&&"[object Arguments]"==p(e)}var v=Object.prototype,g=v.hasOwnProperty,b=v.propertyIsEnumerable,m=h(function(){return arguments}())?h:function(e){return y(e)&&g.call(e,"callee")&&!b.call(e,"callee")},j=m,k=Array.isArray;var w="object"==typeof exports&&exports&&!exports.nodeType&&exports,O=w&&"object"==typeof module&&module&&!module.nodeType&&module,_=O&&O.exports===w?i.Buffer:void 0,x=(_?_.isBuffer:void 0)||function(){return!1},S=/^(?:0|[1-9]\d*)$/;function A(e,t){var r=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==r||"symbol"!=r&&S.test(e))&&e>-1&&e%1==0&&e<t}function M(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}var I={};function $(e){return function(t){return e(t)}}I["[object Float32Array]"]=I["[object Float64Array]"]=I["[object Int8Array]"]=I["[object Int16Array]"]=I["[object Int32Array]"]=I["[object Uint8Array]"]=I["[object Uint8ClampedArray]"]=I["[object Uint16Array]"]=I["[object Uint32Array]"]=!0,I["[object Arguments]"]=I["[object Array]"]=I["[object ArrayBuffer]"]=I["[object Boolean]"]=I["[object DataView]"]=I["[object Date]"]=I["[object Error]"]=I["[object Function]"]=I["[object Map]"]=I["[object Number]"]=I["[object Object]"]=I["[object RegExp]"]=I["[object Set]"]=I["[object String]"]=I["[object WeakMap]"]=!1;var E="object"==typeof exports&&exports&&!exports.nodeType&&exports,N=E&&"object"==typeof module&&module&&!module.nodeType&&module,T=N&&N.exports===E&&n.process,D=function(){try{var e=N&&N.require&&N.require("util").types;return e||T&&T.binding&&T.binding("util")}catch(e){}}(),P=D&&D.isTypedArray,U=P?$(P):function(e){return y(e)&&M(e.length)&&!!I[p(e)]},C=Object.prototype.hasOwnProperty;function F(e,t){var r=k(e),n=!r&&j(e),o=!r&&!n&&x(e),i=!r&&!n&&!o&&U(e),l=r||n||o||i,u=l?function(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}(e.length,String):[],a=u.length;for(var s in e)!t&&!C.call(e,s)||l&&("length"==s||o&&("offset"==s||"parent"==s)||i&&("buffer"==s||"byteLength"==s||"byteOffset"==s)||A(s,a))||u.push(s);return u}var L=Object.prototype;function z(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||L)}function B(e,t){return function(r){return e(t(r))}}var R=B(Object.keys,Object),V=Object.prototype.hasOwnProperty;function J(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function W(e){if(!J(e))return!1;var t=p(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}function K(e){return null!=e&&M(e.length)&&!W(e)}function G(e){return K(e)?F(e):function(e){if(!z(e))return R(e);var t=[];for(var r in Object(e))V.call(e,r)&&"constructor"!=r&&t.push(r);return t}(e)}function H(e){return"symbol"==typeof e||y(e)&&"[object Symbol]"==p(e)}var Y=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,q=/^\w*$/;var Q,X=i["__core-js_shared__"],Z=(Q=/[^.]+$/.exec(X&&X.keys&&X.keys.IE_PROTO||""))?"Symbol(src)_1."+Q:"";var ee=Function.prototype.toString;function te(e){if(null!=e){try{return ee.call(e)}catch(e){}try{return e+""}catch(e){}}return""}var re=/^\[object .+?Constructor\]$/,ne=Function.prototype,oe=Object.prototype,ie=ne.toString,le=oe.hasOwnProperty,ue=RegExp("^"+ie.call(le).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function ae(e){return!(!J(e)||(t=e,Z&&Z in t))&&(W(e)?ue:re).test(te(e));var t}function se(e,t){var r=function(e,t){return null==e?void 0:e[t]}(e,t);return ae(r)?r:void 0}var ce=se(Object,"create");var fe=Object.prototype.hasOwnProperty;var de=Object.prototype.hasOwnProperty;function pe(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}function ye(e,t){return e===t||e!=e&&t!=t}function he(e,t){for(var r=e.length;r--;)if(ye(e[r][0],t))return r;return-1}pe.prototype.clear=function(){this.__data__=ce?ce(null):{},this.size=0},pe.prototype.delete=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t},pe.prototype.get=function(e){var t=this.__data__;if(ce){var r=t[e];return"__lodash_hash_undefined__"===r?void 0:r}return fe.call(t,e)?t[e]:void 0},pe.prototype.has=function(e){var t=this.__data__;return ce?void 0!==t[e]:de.call(t,e)},pe.prototype.set=function(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=ce&&void 0===t?"__lodash_hash_undefined__":t,this};var ve=Array.prototype.splice;function ge(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}ge.prototype.clear=function(){this.__data__=[],this.size=0},ge.prototype.delete=function(e){var t=this.__data__,r=he(t,e);return!(r<0)&&(r==t.length-1?t.pop():ve.call(t,r,1),--this.size,!0)},ge.prototype.get=function(e){var t=this.__data__,r=he(t,e);return r<0?void 0:t[r][1]},ge.prototype.has=function(e){return he(this.__data__,e)>-1},ge.prototype.set=function(e,t){var r=this.__data__,n=he(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this};var be=se(i,"Map");function me(e,t){var r,n,o=e.__data__;return("string"==(n=typeof(r=t))||"number"==n||"symbol"==n||"boolean"==n?"__proto__"!==r:null===r)?o["string"==typeof t?"string":"hash"]:o.map}function je(e){var t=-1,r=null==e?0:e.length;for(this.clear();++t<r;){var n=e[t];this.set(n[0],n[1])}}je.prototype.clear=function(){this.size=0,this.__data__={hash:new pe,map:new(be||ge),string:new pe}},je.prototype.delete=function(e){var t=me(this,e).delete(e);return this.size-=t?1:0,t},je.prototype.get=function(e){return me(this,e).get(e)},je.prototype.has=function(e){return me(this,e).has(e)},je.prototype.set=function(e,t){var r=me(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this};function ke(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var r=function(){var n=arguments,o=t?t.apply(this,n):n[0],i=r.cache;if(i.has(o))return i.get(o);var l=e.apply(this,n);return r.cache=i.set(o,l)||i,l};return r.cache=new(ke.Cache||je),r}ke.Cache=je;var we,Oe,_e,xe=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Se=/\\(\\)?/g,Ae=(we=function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(xe,function(e,r,n,o){t.push(n?o.replace(Se,"$1"):r||e)}),t},Oe=ke(we,function(e){return 500===_e.size&&_e.clear(),e}),_e=Oe.cache,Oe),Me=Ae;function Ie(e,t){for(var r=-1,n=null==e?0:e.length,o=Array(n);++r<n;)o[r]=t(e[r],r,e);return o}var $e=l?l.prototype:void 0,Ee=$e?$e.toString:void 0;function Ne(e){if("string"==typeof e)return e;if(k(e))return Ie(e,Ne)+"";if(H(e))return Ee?Ee.call(e):"";var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function Te(e){return null==e?"":Ne(e)}function De(e,t){return k(e)?e:function(e,t){if(k(e))return!1;var r=typeof e;return!("number"!=r&&"symbol"!=r&&"boolean"!=r&&null!=e&&!H(e))||q.test(e)||!Y.test(e)||null!=t&&e in Object(t)}(e,t)?[e]:Me(Te(e))}function Pe(e){if("string"==typeof e||H(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function Ue(e,t){for(var r=0,n=(t=De(t,e)).length;null!=e&&r<n;)e=e[Pe(t[r++])];return r&&r==n?e:void 0}function Ce(e,t,r){var n=null==e?void 0:Ue(e,t);return void 0===n?r:n}function Fe(e){var t=this.__data__=new ge(e);this.size=t.size}Fe.prototype.clear=function(){this.__data__=new ge,this.size=0},Fe.prototype.delete=function(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r},Fe.prototype.get=function(e){return this.__data__.get(e)},Fe.prototype.has=function(e){return this.__data__.has(e)},Fe.prototype.set=function(e,t){var r=this.__data__;if(r instanceof ge){var n=r.__data__;if(!be||n.length<199)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new je(n)}return r.set(e,t),this.size=r.size,this};var Le=function(){try{var e=se(Object,"defineProperty");return e({},"",{}),e}catch(e){}}(),ze=Le;function Be(e,t,r){"__proto__"==t&&ze?ze(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}var Re=Object.prototype.hasOwnProperty;function Ve(e,t,r){var n=e[t];Re.call(e,t)&&ye(n,r)&&(void 0!==r||t in e)||Be(e,t,r)}function Je(e,t,r,n){var o=!r;r||(r={});for(var i=-1,l=t.length;++i<l;){var u=t[i],a=n?n(r[u],e[u],u,r,e):void 0;void 0===a&&(a=e[u]),o?Be(r,u,a):Ve(r,u,a)}return r}var We=Object.prototype.hasOwnProperty;function Ke(e){if(!J(e))return function(e){var t=[];if(null!=e)for(var r in Object(e))t.push(r);return t}(e);var t=z(e),r=[];for(var n in e)("constructor"!=n||!t&&We.call(e,n))&&r.push(n);return r}function Ge(e){return K(e)?F(e,!0):Ke(e)}var He="object"==typeof exports&&exports&&!exports.nodeType&&exports,Ye=He&&"object"==typeof module&&module&&!module.nodeType&&module,qe=Ye&&Ye.exports===He?i.Buffer:void 0,Qe=qe?qe.allocUnsafe:void 0;function Xe(){return[]}var Ze=Object.prototype.propertyIsEnumerable,et=Object.getOwnPropertySymbols,tt=et?function(e){return null==e?[]:(e=Object(e),function(e,t){for(var r=-1,n=null==e?0:e.length,o=0,i=[];++r<n;){var l=e[r];t(l,r,e)&&(i[o++]=l)}return i}(et(e),function(t){return Ze.call(e,t)}))}:Xe,rt=tt;function nt(e,t){for(var r=-1,n=t.length,o=e.length;++r<n;)e[o+r]=t[r];return e}var ot=B(Object.getPrototypeOf,Object),it=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)nt(t,rt(e)),e=ot(e);return t}:Xe,lt=it;function ut(e,t,r){var n=t(e);return k(e)?n:nt(n,r(e))}function at(e){return ut(e,G,rt)}function st(e){return ut(e,Ge,lt)}var ct=se(i,"DataView"),ft=se(i,"Promise"),dt=se(i,"Set"),pt=se(i,"WeakMap"),yt="[object Map]",ht="[object Promise]",vt="[object Set]",gt="[object WeakMap]",bt="[object DataView]",mt=te(ct),jt=te(be),kt=te(ft),wt=te(dt),Ot=te(pt),_t=p;(ct&&_t(new ct(new ArrayBuffer(1)))!=bt||be&&_t(new be)!=yt||ft&&_t(ft.resolve())!=ht||dt&&_t(new dt)!=vt||pt&&_t(new pt)!=gt)&&(_t=function(e){var t=p(e),r="[object Object]"==t?e.constructor:void 0,n=r?te(r):"";if(n)switch(n){case mt:return bt;case jt:return yt;case kt:return ht;case wt:return vt;case Ot:return gt}return t});var xt=_t,St=Object.prototype.hasOwnProperty;var At=i.Uint8Array;function Mt(e){var t=new e.constructor(e.byteLength);return new At(t).set(new At(e)),t}var It=/\w*$/;var $t=l?l.prototype:void 0,Et=$t?$t.valueOf:void 0;function Nt(e,t,r){var n,o=e.constructor;switch(t){case"[object ArrayBuffer]":return Mt(e);case"[object Boolean]":case"[object Date]":return new o(+e);case"[object DataView]":return function(e,t){var r=t?Mt(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.byteLength)}(e,r);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return function(e,t){var r=t?Mt(e.buffer):e.buffer;return new e.constructor(r,e.byteOffset,e.length)}(e,r);case"[object Map]":case"[object Set]":return new o;case"[object Number]":case"[object String]":return new o(e);case"[object RegExp]":return function(e){var t=new e.constructor(e.source,It.exec(e));return t.lastIndex=e.lastIndex,t}(e);case"[object Symbol]":return n=e,Et?Object(Et.call(n)):{}}}var Tt=Object.create,Dt=function(){function e(){}return function(t){if(!J(t))return{};if(Tt)return Tt(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}(),Pt=Dt;var Ut=D&&D.isMap,Ct=Ut?$(Ut):function(e){return y(e)&&"[object Map]"==xt(e)};var Ft=D&&D.isSet,Lt=Ft?$(Ft):function(e){return y(e)&&"[object Set]"==xt(e)},zt="[object Arguments]",Bt="[object Function]",Rt="[object Object]",Vt={};function Jt(e,t,r,n,o,i){var l,u=1&t,a=2&t,s=4&t;if(r&&(l=o?r(e,n,o,i):r(e)),void 0!==l)return l;if(!J(e))return e;var c=k(e);if(c){if(l=function(e){var t=e.length,r=new e.constructor(t);return t&&"string"==typeof e[0]&&St.call(e,"index")&&(r.index=e.index,r.input=e.input),r}(e),!u)return function(e,t){var r=-1,n=e.length;for(t||(t=Array(n));++r<n;)t[r]=e[r];return t}(e,l)}else{var f=xt(e),d=f==Bt||"[object GeneratorFunction]"==f;if(x(e))return function(e,t){if(t)return e.slice();var r=e.length,n=Qe?Qe(r):new e.constructor(r);return e.copy(n),n}(e,u);if(f==Rt||f==zt||d&&!o){if(l=a||d?{}:function(e){return"function"!=typeof e.constructor||z(e)?{}:Pt(ot(e))}(e),!u)return a?function(e,t){return Je(e,lt(e),t)}(e,function(e,t){return e&&Je(t,Ge(t),e)}(l,e)):function(e,t){return Je(e,rt(e),t)}(e,function(e,t){return e&&Je(t,G(t),e)}(l,e))}else{if(!Vt[f])return o?e:{};l=Nt(e,f,u)}}i||(i=new Fe);var p=i.get(e);if(p)return p;i.set(e,l),Lt(e)?e.forEach(function(n){l.add(Jt(n,t,r,n,e,i))}):Ct(e)&&e.forEach(function(n,o){l.set(o,Jt(n,t,r,o,e,i))});var y=c?void 0:(s?a?st:at:a?Ge:G)(e);return function(e,t){for(var r=-1,n=null==e?0:e.length;++r<n&&!1!==t(e[r],r,e););}(y||e,function(n,o){y&&(n=e[o=n]),Ve(l,o,Jt(n,t,r,o,e,i))}),l}function Wt(e,t){return t.length<2?e:Ue(e,function(e,t,r){var n=-1,o=e.length;t<0&&(t=-t>o?0:o+t),(r=r>o?o:r)<0&&(r+=o),o=t>r?0:r-t>>>0,t>>>=0;for(var i=Array(o);++n<o;)i[n]=e[n+t];return i}(t,0,-1))}Vt[zt]=Vt["[object Array]"]=Vt["[object ArrayBuffer]"]=Vt["[object DataView]"]=Vt["[object Boolean]"]=Vt["[object Date]"]=Vt["[object Float32Array]"]=Vt["[object Float64Array]"]=Vt["[object Int8Array]"]=Vt["[object Int16Array]"]=Vt["[object Int32Array]"]=Vt["[object Map]"]=Vt["[object Number]"]=Vt[Rt]=Vt["[object RegExp]"]=Vt["[object Set]"]=Vt["[object String]"]=Vt["[object Symbol]"]=Vt["[object Uint8Array]"]=Vt["[object Uint8ClampedArray]"]=Vt["[object Uint16Array]"]=Vt["[object Uint32Array]"]=!0,Vt["[object Error]"]=Vt[Bt]=Vt["[object WeakMap]"]=!1;var Kt=Object.prototype.hasOwnProperty;function Gt(e,t){var r=-1,n=(t=De(t,e)).length;if(!n)return!0;for(;++r<n;){var o=Pe(t[r]);if("__proto__"===o&&!Kt.call(e,"__proto__"))return!1;if(("constructor"===o||"prototype"===o)&&r<n-1)return!1}var i=Wt(e,t);return null==i||delete i[Pe(function(e){var t=null==e?0:e.length;return t?e[t-1]:void 0}(t))]}var Ht=Function.prototype,Yt=Object.prototype,qt=Ht.toString,Qt=Yt.hasOwnProperty,Xt=qt.call(Object);function Zt(e){return function(e){if(!y(e)||"[object Object]"!=p(e))return!1;var t=ot(e);if(null===t)return!0;var r=Qt.call(t,"constructor")&&t.constructor;return"function"==typeof r&&r instanceof r&&qt.call(r)==Xt}(e)?void 0:e}var er=l?l.isConcatSpreadable:void 0;function tr(e){return k(e)||j(e)||!!(er&&e&&e[er])}function rr(e,t,r,n,o){var i=-1,l=e.length;for(r||(r=tr),o||(o=[]);++i<l;){var u=e[i];t>0&&r(u)?t>1?rr(u,t-1,r,n,o):nt(o,u):n||(o[o.length]=u)}return o}function nr(e){return(null==e?0:e.length)?rr(e,1):[]}var or=Math.max;var ir=ze?function(e,t){return ze(e,"toString",{configurable:!0,enumerable:!1,value:(r=t,function(){return r}),writable:!0});var r}:function(e){return e},lr=ir,ur=Date.now;var ar=function(e){var t=0,r=0;return function(){var n=ur(),o=16-(n-r);if(r=n,o>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}(lr),sr=ar;var cr=function(e){return sr(function(e,t,r){return t=or(void 0===t?e.length-1:t,0),function(){for(var n=arguments,o=-1,i=or(n.length-t,0),l=Array(i);++o<i;)l[o]=n[t+o];o=-1;for(var u=Array(t+1);++o<t;)u[o]=n[o];return u[t]=r(l),function(e,t,r){switch(r.length){case 0:return e.call(t);case 1:return e.call(t,r[0]);case 2:return e.call(t,r[0],r[1]);case 3:return e.call(t,r[0],r[1],r[2])}return e.apply(t,r)}(e,this,u)}}(e,void 0,nr),e+"")}(function(e,t){var r={};if(null==e)return r;var n=!1;t=Ie(t,function(t){return t=De(t,e),n||(n=t.length>1),t}),Je(e,st(e),r),n&&(r=Jt(r,7,Zt));for(var o=t.length;o--;)Gt(r,t[o]);return r}),fr=cr,dr=/\s/;var pr=/^\s+/;function yr(e){return e?e.slice(0,function(e){for(var t=e.length;t--&&dr.test(e.charAt(t)););return t}(e)+1).replace(pr,""):e}var hr=/^[-+]0x[0-9a-f]+$/i,vr=/^0b[01]+$/i,gr=/^0o[0-7]+$/i,br=parseInt;function mr(e){if("number"==typeof e)return e;if(H(e))return NaN;if(J(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=J(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=yr(e);var r=vr.test(e);return r||gr.test(e)?br(e.slice(2),r?2:8):hr.test(e)?NaN:+e}var jr=1/0;function kr(e){return e?(e=mr(e))===jr||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}function wr(e){var t=kr(e),r=t%1;return t==t?r?t-r:t:0}function Or(e){return"[object String]"===Object.prototype.toString.call(e)}function _r(e){return!(!Or(e)||""===e)}function xr(e){return e!=e}function Sr(e){let t=!1;if(_r(e))t=!isNaN(Number(e));else if(function(e){return"[object Number]"===Object.prototype.toString.call(e)}(e)){if(xr(e))return!1;t=!0}return t}function Ar(e){if(!Sr(e))return 0;return kr(e)}function Mr(e){return!!Sr(e)&&(e=Ar(e),"number"==typeof(t=e)&&t==wr(t));var t}var Ir=i.isFinite,$r=Math.min;var Er=function(e){var t=Math[e];return function(e,r){if(e=mr(e),(r=null==r?0:$r(wr(r),292))&&Ir(e)){var n=(Te(e)+"e").split("e");return+((n=(Te(t(n[0]+"e"+(+n[1]+r)))+"e").split("e"))[0]+"e"+(+n[1]-r))}return t(e)}}("round"),Nr=Er;function Tr(e){if(!Sr(e))return 0;e=Ar(e);let t=Nr(e);return"0"===String(t)?0:t}function Dr(e){if(!Mr(e))return!1;return Tr(e)>0}function Pr(e){return"[object Object]"===Object.prototype.toString.call(e)}function Ur(){let e,t,r=new Promise(function(){e=arguments[0],t=arguments[1]});return r.resolve=e,r.reject=t,r}function Cr(e=10){Sr(e)||(e=10);let t=Ur();return setTimeout(function(){t.resolve()},e),t}function Fr(e){return"[object Array]"===Object.prototype.toString.call(e)}function Lr(e){let t=Object.prototype.toString.call(e);return"[object Function]"===t||"[object AsyncFunction]"===t}function zr(e){if(!Mr(e))return!1;return Tr(e)>=0}function Br(e,t){return _r(e)&&zr(t)?0===(t=Tr(t))?"":e.substring(0,t):""}function Rr(e,t){return _r(e)&&zr(t)?0===(t=Tr(t))?e:function(e,t){if(!_r(e))return"";if(!zr(t))return"";if(0===(t=Tr(t)))return"";let r=e.length-t;return r<0&&(r=0),e.substring(r,r+t)}(e,e.length-t):""}function Vr(e,t,r={}){if(!_r(e))return"";if(!zr(t))return e;if(t=Tr(t),e.length<=t)return e;let n=Ce(r,"funWithMsg"),o="";if(Lr(n)){let r=n(e,t);_r(r)&&(o=r)}return Br(e,t)+`...${o}`}function Jr(e,t={}){let r=Ce(t,"fs");return!!function(e,t={}){let r=Ce(t,"fs"),n=!1;try{r.statSync(e),n=!0}catch{n=!1}return n}(e,{fs:r})&&(!r.lstatSync(e).isDirectory()&&!r.lstatSync(e).isSymbolicLink())}function Wr(e){return function(e,t={}){let r=null,n=Ce(t,"fs"),o="";try{o=n.readFileSync(e,"utf8")}catch(e){r=e}return null!==r?{error:r}:{success:o}}(e,{fs:r})}function Kr(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Gr=e,Hr=Gr.spawn,Yr=Gr.exec;function qr(e,t,r){var n={};try{Object.keys(e).forEach(function(r){e[r].forEach(function(e){n[e]||(Qr(e,t),n[e]=1)}),n[r]||(Qr(r,t),n[r]=1)})}catch(e){if(r)return r(e);throw e}if(r)return r()}function Qr(e,t){try{process.kill(parseInt(e,10),t)}catch(e){if("ESRCH"!==e.code)throw e}}function Xr(e,t,r,n,o){var i=n(e),l="";i.stdout.on("data",function(e){e=e.toString("ascii");l+=e});i.on("close",function(i){delete r[e],0==i?l.match(/\d+/g).forEach(function(i){i=parseInt(i,10),t[e].push(i),t[i]=[],r[i]=1,Xr(i,t,r,n,o)}):0==Object.keys(r).length&&o()})}var Zr=Kr(function(e,t,r){if("function"==typeof t&&void 0===r&&(r=t,t=void 0),e=parseInt(e),Number.isNaN(e)){if(r)return r(new Error("pid must be a number"));throw new Error("pid must be a number")}var n={},o={};switch(n[e]=[],o[e]=1,process.platform){case"win32":Yr("taskkill /pid "+e+" /T /F",r);break;case"darwin":Xr(e,n,o,function(e){return Hr("pgrep",["-P",e])},function(){qr(n,t,r)});break;default:Xr(e,n,o,function(e){return Hr("ps",["-o","pid","--no-headers","--ppid",e])},function(){qr(n,t,r)})}});function en(e){let n=Ce(Wr(e),"success","");if(!_r(n))return null;let o=n.match(/%dp0%\\(node_modules\\[^"]+)"/i);if(!o)return null;let i=t.dirname(e),l=t.join(i,o[1]);return Jr(l,{fs:r})?l:null}function tn(r,n){if("win32"!==process.platform)return{file:r,args:n};let o=function(r){if("win32"!==process.platform)return r;if(/\.(cmd|exe|bat|ps1)$/i.test(r))return r;if(t.isAbsolute(r))return r;try{let t=e.execFileSync("where",[r],{encoding:"utf8",timeout:5e3,windowsHide:!0,shell:!1,stdio:["ignore","pipe","ignore"]}).trim().split(/\r?\n/),n=t.find(e=>/\.cmd$/i.test(e));return n||(t.find(e=>/\.exe$/i.test(e))||t[0]||r)}catch{return r}}(r);if(/\.exe$/i.test(o))return{file:o,args:n};if(/\.(cmd|bat)$/i.test(o)){let e=en(o);if(e)return/\.exe$/i.test(e)?{file:e,args:n}:{file:process.execPath,args:[e,...n]};let t=n.map(e=>`"${e.replace(/(\\*)"/g,'$1$1\\"').replace(/(\\*)$/,"$1$1")}"`.replace(/[()%!^"<>&|]/g,"^$&")),r=`${i=o,i.replace(/[()%!^"<>&|;, ]/g,"^$&")} ${t.join(" ")}`;return{file:process.env.comspec||process.env.COMSPEC||"cmd.exe",args:["/d","/s","/c",`"${r}"`],opt:{windowsVerbatimArguments:!0}}}var i;return{file:o,args:n}}let rn={funWithMsg:e=>`(truncated, total ${e.length} chars)`};function nn(t,r=[],n={}){let{timeoutMs:o=12e4,cwd:i=process.cwd(),input:l,validate:u,maxBuffer:a=10485760,onStdout:s,onStderr:c,env:f}=n,d=function(e){if(Lr(e))return e;if(!_r(e))return null;let t=e.split(",").map(e=>e.trim()).filter(Boolean);return 0===t.length?null:e=>{for(let r of t)if("nonempty"===r){if(!_r(e)||""===e.trim())return!1}else if("json"===r)try{JSON.parse(e)}catch{return!1}else if("min:"===Br(r,4)){let t=Rr(r,4);if(!Sr(t))return!1;let n=Tr(t);if(!_r(e)||e.length<n)return!1}return!0}}(u),p=Date.now(),y=Ur(),h={...process.env,PYTHONIOENCODING:"utf-8"};if(void 0!==f){if("win32"===process.platform){let e=Object.keys(f).map(e=>e.toLowerCase());for(let t of Object.keys(h))e.includes(t.toLowerCase())&&delete h[t]}h={...h,...f}}let v=tn(t,r),g=e.spawn(v.file,v.args,{cwd:i,stdio:["pipe","pipe","pipe"],windowsHide:!0,env:h,...v.opt}),b="",m="",j=new TextDecoder("utf-8"),k=new TextDecoder("utf-8"),w=!1,O=!1;g.stdout.on("data",e=>{let t=j.decode(e,{stream:!0});t&&(Lr(s)&&s(t),b.length<a&&(b+=t))}),g.stderr.on("data",e=>{let t=k.decode(e,{stream:!0});t&&(Lr(c)&&c(t),m.length<a&&(m+=t))}),g.stdin.on("error",()=>{}),void 0!==l&&g.stdin.write(l,"utf8"),g.stdin.end();let _=setTimeout(()=>{w||(O=!0,function(e){let t=Ur();return Zr(Number(e),"SIGKILL",r=>{r?t.reject(r):t.resolve(`pid[${e}] killed`)}),t}(g.pid).catch(()=>{}),setTimeout(()=>{w||(w=!0,y.resolve({ok:!1,stdout:Vr(b,500,rn),stderr:Vr(m,500,rn),code:null,error:`TIMEOUT after ${o/1e3}s(子進程未能結束)`,durationMs:Date.now()-p,pid:g.pid}))},3e3).unref())},o);return g.on("error",e=>{w||(w=!0,clearTimeout(_),y.resolve({ok:!1,stdout:"",stderr:"",code:null,error:`${e.code||"UNKNOWN"}: ${e.message}`,durationMs:Date.now()-p,pid:g.pid}))}),g.on("close",(e,t)=>{if(w)return;w=!0,clearTimeout(_);let r=j.decode();r&&b.length<a&&(b+=r);let n=k.decode();n&&m.length<a&&(m+=n);let i=Date.now()-p;O?y.resolve({ok:!1,stdout:Vr(b,500,rn),stderr:Vr(m,500,rn),code:e,error:`TIMEOUT after ${o/1e3}s`,durationMs:i,pid:g.pid}):0===e?!d||d(b)?y.resolve({ok:!0,stdout:b,stderr:m,code:0,error:"",durationMs:i,pid:g.pid}):y.resolve({ok:!1,stdout:Vr(b,500,rn),stderr:Vr(m,500,rn),code:0,error:"OUTPUT_VALIDATION_FAILED",durationMs:i,pid:g.pid}):y.resolve({ok:!1,stdout:Vr(b,500,rn),stderr:Vr(m,1e3,rn),code:e,error:t?`Signal: ${t}`:`Exit code ${e}`,durationMs:i,pid:g.pid})}),y}async function on(e,t=[],r={}){if(!_r(e))return{ok:!1,stdout:"",stderr:"",code:null,error:"command 須為非空字串",durationMs:0,attempts:0};Fr(t)||(t=[]),Pr(r)||(r={});let{maxRetries:n=0,retryDelayMs:o=5e3,...i}=r,l=Ce(i,"cwd",null);_r(l)?i.cwd=l:i.cwd=process.cwd();let u=Ce(i,"input",null);_r(u)?i.input=u:i.input=void 0;let a=Ce(i,"env",null);Pr(a)?i.env=a:i.env=void 0;let s=Ce(i,"validate",null);Lr(s)||_r(s)?i.validate=s:i.validate=void 0;let c=Ce(i,"onStdout",null);Lr(c)?i.onStdout=c:i.onStdout=void 0;let f=Ce(i,"onStderr",null);Lr(f)?i.onStderr=f:i.onStderr=void 0,n=zr(n)?Tr(n):0,o=Dr(o)?Tr(o):5e3;let d=Ce(i,"timeoutMs",null);Dr(d)?i.timeoutMs=Tr(d):i.timeoutMs=12e4;let p,y=Ce(i,"maxBuffer",null);Dr(y)?i.maxBuffer=Tr(y):i.maxBuffer=10485760;let h=0;for(let r=0;r<=n;r++){if(r>0){let e=Math.min(o*r,15e3);await Cr(e)}if(p=await nn(e,t,i),h=r+1,p.ok)return p.attempts=h,p;if(p.error.includes("ENOENT"))break;if(2===p.code)break}return p.attempts=h,p}function ln(...e){let t=[];for(let r of e)if(Fr(r))for(let e of r)_r(e)&&t.push(e);else _r(r)&&t.push(r);return t}function un(e){return _r(e)||(e="unknown error"),{ok:!1,stdout:"",stderr:"",code:null,error:e,durationMs:0,attempts:0}}let an=3e5,sn=["exe","model","key","provider","agent","config","extraArgs","input","env"];async function cn(e,t={}){if(!_r(e))return un("prompt must be a non-empty string");let r=Ce(t,"exe",null);_r(r)||(r="opencode");let n=Ce(t,"model",null),o=Ce(t,"agent",null);_r(o)||(o="build");let i=Ce(t,"extraArgs",null),l=ln("run",["--agent",o],_r(n)?["-m",n]:[],i),u=Ce(t,"env",null);Pr(u)||(u=void 0);let a=Ce(t,"config",null);Pr(a)&&(a=JSON.stringify(a)),_r(a)&&(u={...u,OPENCODE_CONFIG_CONTENT:a});let s=Ce(t,"key",null),c=Ce(t,"provider",null);_r(s)&&_r(c)&&(u={...u,OPENCODE_AUTH_CONTENT:JSON.stringify({[c]:{type:"api",key:s}})});let f=Ce(t,"timeoutMs",null);return f=Dr(f)?Tr(f):an,on(r,l,{...fr(t,sn),input:e,env:u,timeoutMs:f})}function fn(e){return!0===(t=e)||!1===t||y(t)&&"[object Boolean]"==p(t);var t}let dn=["exe","model","skipPermissions","extraArgs","input"];async function pn(e,t={}){if(!_r(e))return un("prompt must be a non-empty string");let r=Ce(t,"exe",null);_r(r)||(r="claude");let n=Ce(t,"model",null),o=Ce(t,"skipPermissions",null);fn(o)||(o=!0);let i=Ce(t,"extraArgs",null),l=ln("-p",o?"--dangerously-skip-permissions":[],_r(n)?["--model",n]:[],i),u=Ce(t,"timeoutMs",null);return u=Dr(u)?Tr(u):an,on(r,l,{...fr(t,dn),input:e,timeoutMs:u})}let yn=["exe","model","sandbox","extraArgs","input"];async function hn(e,t={}){if(!_r(e))return un("prompt must be a non-empty string");let r=Ce(t,"exe",null);_r(r)||(r="codex");let n=Ce(t,"model",null),o=Ce(t,"sandbox",null);_r(o)||(o="workspace-write");let i=Ce(t,"extraArgs",null),l=ln("exec",["--sandbox",o],"--skip-git-repo-check",_r(n)?["-m",n]:[],i),u=Ce(t,"timeoutMs",null);return u=Dr(u)?Tr(u):an,on(r,l,{...fr(t,yn),input:e,timeoutMs:u})}let vn=an,gn=["exe","model","effort","skipPermissions","printTimeout","addDirs","extraArgs","input"];async function bn(e,t={}){if(!_r(e))return un("prompt must be a non-empty string");if(e.length>3e4)return un(`prompt too long (${e.length} chars > 30000), agy passes prompt via --print flag and Windows command line is capped at 32767 chars`);let r=Ce(t,"exe",null);_r(r)||(r="agy");let n=Ce(t,"model",null),o=Ce(t,"effort",null),i=Ce(t,"skipPermissions",null);fn(i)||(i=!0);let l=Ce(t,"timeoutMs",null);l=Dr(l)?Tr(l):vn;let u=Ce(t,"printTimeout",null);_r(u)||(u=`${Math.max(30,Math.floor(l/1e3)-30)}s`);let a=Ce(t,"addDirs",null);if(!Fr(a)){let e=Ce(t,"cwd",null);_r(e)||(e=process.cwd()),a=[e]}let s=[];for(let e of a)_r(e)&&s.push("--add-dir",e);let c=Ce(t,"extraArgs",null),f=ln(i?"--dangerously-skip-permissions":[],["--print-timeout",u],_r(n)?["--model",n]:[],_r(o)?["--effort",o]:[],s,c,["--print",e]),d=fr(t,gn);try{return await on(r,f,{...d,timeoutMs:l})}catch(e){return un(`${e.code||"UNKNOWN"}: ${e.message}`)}}let mn=an,jn={funWithMsg:e=>`(truncated, total ${e.length} chars)`};async function kn(e,t,r,n,o){let i=Date.now(),l=new AbortController,u=setTimeout(()=>{l.abort()},n),a=null,s="";try{a=await fetch(e,{method:"POST",headers:t,body:JSON.stringify(r),signal:l.signal}),s=await a.text()}catch(e){clearTimeout(u);let t=Date.now()-i;return"AbortError"===e.name?{ok:!1,stdout:"",stderr:"",code:null,error:`TIMEOUT after ${n/1e3}s`,durationMs:t}:{ok:!1,stdout:"",stderr:"",code:null,error:`FETCH_ERROR: ${Ce(e,"cause.code","")||e.message}`,durationMs:t}}clearTimeout(u);let c=Date.now()-i;if(!a.ok)return{ok:!1,stdout:"",stderr:Vr(s,1e3,jn),code:a.status,error:`HTTP ${a.status}`,durationMs:c};let f=null,d="",p=null;try{let e=JSON.parse(s);f=Ce(e,"choices.0.message.content",null),d=Ce(e,"choices.0.finish_reason",""),p=Ce(e,"choices.0.message.tool_calls",null)}catch{}return"tool_calls"===d||null!=p?{ok:!1,stdout:"",stderr:Vr(s,1e3,jn),code:a.status,error:"TOOL_CALLS_UNSUPPORTED: use a cli kind (opencode/claude/codex/antigravity) when tools are needed",durationMs:c}:null==f?{ok:!1,stdout:"",stderr:Vr(s,500,jn),code:a.status,error:"INVALID_RESPONSE: missing choices[0].message.content",durationMs:c}:("string"!=typeof f&&(f=JSON.stringify(f)),o&&!o(f)?{ok:!1,stdout:Vr(f,500,jn),stderr:"",code:a.status,error:"OUTPUT_VALIDATION_FAILED",durationMs:c}:{ok:!0,stdout:f,stderr:"",code:a.status,error:"",durationMs:c})}async function wn(e,t={}){if(!_r(e))return un("prompt must be a non-empty string");let r=Ce(t,"baseURL",null);if(!_r(r))return un("baseURL must be a non-empty string");let n=Ce(t,"model",null);if(!_r(n))return un("model must be a non-empty string");let o=Ce(t,"key",null),i=Ce(t,"system",null),l=Ce(t,"body",null);Pr(l)||(l={});let u=Ce(t,"headers",null);Pr(u)||(u={});let a=Ce(t,"timeoutMs",null);a=Dr(a)?Tr(a):mn;let s=Ce(t,"maxRetries",null);s=zr(s)?Tr(s):0;let c=Ce(t,"retryDelayMs",null);c=Dr(c)?Tr(c):5e3;let f=function(e){if(Lr(e))return e;if(!_r(e))return null;let t=e.split(",").map(e=>e.trim()).filter(Boolean);return 0===t.length?null:e=>{for(let r of t)if("nonempty"===r){if(!_r(e)||""===e.trim())return!1}else if("json"===r)try{JSON.parse(e)}catch{return!1}else if("min:"===Br(r,4)){let t=Rr(r,4);if(!Sr(t))return!1;let n=Tr(t);if(!_r(e)||e.length<n)return!1}return!0}}(Ce(t,"validate",null)),d=r.replace(/\/+$/,"")+"/chat/completions",p=[];_r(i)&&p.push({role:"system",content:i}),p.push({role:"user",content:e});let y={model:n,messages:p,...l},h={"Content-Type":"application/json",...u};_r(o)&&(h.Authorization=`Bearer ${o}`);let v=null,g=0;for(let e=0;e<=s;e++){if(e>0&&await Cr(Math.min(c*e,15e3)),v=await kn(d,h,y,a,f),g=e+1,v.ok)return v.attempts=g,v;let t=v.code;if(Sr(t)&&t>=400&&t<500&&429!==t)break}return v.attempts=g,v}let On={opencode:cn,claude:pn,codex:hn,antigravity:bn,"api-openai-compat":wn};function _n(e){return e!=e}function xn(e){return null==e?[]:function(e,t){return Ie(t,function(t){return e[t]})}(e,G(e))}var Sn=Math.max;function An(e,t,r,n){e=K(e)?e:xn(e),r=r&&!n?wr(r):0;var o=e.length;return r<0&&(r=Sn(o+r,0)),function(e){return"string"==typeof e||!k(e)&&y(e)&&"[object String]"==p(e)}(e)?r<=o&&e.indexOf(t,r)>-1:!!o&&function(e,t,r){return t==t?function(e,t,r){for(var n=r-1,o=e.length;++n<o;)if(e[n]===t)return n;return-1}(e,t,r):function(e,t,r,n){for(var o=e.length,i=r+(n?1:-1);n?i--:++i<o;)if(t(e[i],i,e))return i;return-1}(e,_n,r)}(e,t,r)>-1}async function Mn(e,t,r={}){let n=G(On);return _r(e)&&An(n,e)?(0,On[e])(t,r):un(`unknown ai kind: "${e}" (available: ${n.join(", ")})`)}let In=["providers","budgetMs","minAttemptMs","cooldownMs","store","onEvent"],$n=["id","keys"],En=an,Nn={cursors:{}};function Tn(e){let t=Ce(e,"error","");_r(t)||(t="");let r=Ce(e,"code",null);return 0===t.indexOf("TIMEOUT")||(!!t.includes("ENOENT")||(2===r||("OUTPUT_VALIDATION_FAILED"===t||0===t.indexOf("unknown ai kind"))))}async function Dn(e,t={}){if(!_r(e))return{...un("prompt must be a non-empty string"),tried:[]};let r=Ce(t,"providers",null),n=Fr(r)?r.filter(Pr):[];if(0===n.length)return{...un("providers must be a non-empty array"),tried:[]};let o=Ce(t,"budgetMs",null);o=Dr(o)?Tr(o):null;let i=null===o?null:Date.now()+o,l=Ce(t,"minAttemptMs",null);l=Dr(l)?Tr(l):2e4;let u=Ce(t,"store",null),a=Pr(u)&&Lr(u.get)&&Lr(u.set),s=null;if(a)try{s=u.get()}catch{}Pr(s)||(s=a?{cursors:{}}:Nn),Pr(s.cursors)||(s.cursors={}),Pr(s.cooling)||(s.cooling={});let c=()=>{if(a)try{u.set(s)}catch{}},f=Ce(t,"cooldownMs",null);if(f=Dr(f)?Tr(f):0,f>0){let e=Date.now(),t=[],r=[],o=!1;for(let i of n){let n=Ce(i,"id",null),l=_r(n)?Ce(s.cooling,n,null):null;Dr(l)&&e-l<f?r.push(i):(_r(n)&&void 0!==s.cooling[n]&&(delete s.cooling[n],o=!0),t.push(i))}n=[...t,...r],o&&c()}let d=Ce(t,"onEvent",null),p=e=>{if(Lr(d))try{d(e)}catch{}},y=fr(t,In),h=[],v=null,g=null;for(let t=0;t<n.length;t++){let r=n[t],o=Ce(r,"id",null),u=_r(o);u||(o=String(t));let a=Ce(r,"kind",null),d=Ce(r,"model",null),b=Ce(r,"keys",null),m=Fr(b)?b.filter(_r):[],j=m.length,k=fr(r,$n),w=0;if(j>0){let e=Ce(s.cursors,o,0);w=Dr(e)?Tr(e)%j:0}let O=j>0?j:1,_=!1;for(let t=0;t<O&&!_;t++){let r=j>0?(w+t)%j:null,n=null===r?o:`${o}#${r}`,b={...y,...k};j>0&&(b.key=m[r]);let O=Ce(b,"timeoutMs",null);if(O=Dr(O)?Tr(O):En,null!==i){let e=i-Date.now();if(e<l)return p({type:"budget-out",providerId:o,keyIndex:r,keyId:n,remainingMs:e}),h.push({providerId:o,keyIndex:r,keyId:n,outcome:"budget-out"}),{...un("budget exhausted"),tried:h};O=Math.min(O,e)}b.timeoutMs=O,p({type:"try",providerId:o,keyIndex:r,keyId:n,kind:a,model:d});let x=await Mn(a,e,b);if(x.ok)return f>0&&u&&void 0!==s.cooling[o]&&(delete s.cooling[o],c()),j>0&&(s.cursors[o]=(r+1)%j,c()),p({type:"ok",providerId:o,keyIndex:r,keyId:n,durationMs:x.durationMs}),h.push({providerId:o,keyIndex:r,keyId:n,outcome:"ok",durationMs:x.durationMs}),{...x,providerId:o,keyIndex:r,kind:a,model:d,tried:h};if(v=x,g={providerId:o,keyIndex:r,kind:a,model:d},f>0&&u){(429===x.code||_r(x.error)&&0===x.error.indexOf("TIMEOUT"))&&(s.cooling[o]=Date.now(),c())}Tn(x)?(p({type:"skip-group",providerId:o,keyIndex:r,keyId:n,error:x.error,stdout:x.stdout,stderr:x.stderr}),h.push({providerId:o,keyIndex:r,keyId:n,outcome:"skip-group",error:x.error,stdout:x.stdout,stderr:x.stderr,durationMs:x.durationMs}),_=!0):(p({type:"next-key",providerId:o,keyIndex:r,keyId:n,error:x.error,stdout:x.stdout,stderr:x.stderr}),h.push({providerId:o,keyIndex:r,keyId:n,outcome:"next-key",error:x.error,stdout:x.stdout,stderr:x.stderr,durationMs:x.durationMs}))}}return{...v||un("all providers failed"),...g||{},tried:h}}function Pn(e){return!!function(e){return"[object Undefined]"===Object.prototype.toString.call(e)}(e)||(!!function(e){return"[object Null]"===Object.prototype.toString.call(e)}(e)||(!!function(e){if(Pr(e)){for(let t in e)return!1;return!0}return!1}(e)||(!!function(e){return!(!Or(e)||""!==e)}(e)||(!!function(e){return!!Fr(e)&&0===e.length}(e)||!!xr(e)))))}function Un(e){return!!Fr(e)&&(0!==e.length&&(1!==e.length||!Pn(e[0])))}function Cn(e){let t=String(e||"");if(t=t.replace(new RegExp(String.fromCharCode(27)+"\\[[0-9;]*m","g"),""),t=t.replace(/```(?:json)?/g,""),t=t.trim(),""===t)return null;try{let e=JSON.parse(t);if(null!==e&&"object"==typeof e)return e}catch(e){}let r=-1;for(let e=0;e<t.length;e++)if("{"===t[e]||"["===t[e]){r=e;break}if(r<0)return null;let n=0,o=!1,i=!1;for(let e=r;e<t.length;e++){let l=t[e];if(o)i?i=!1:"\\"===l?i=!0:'"'===l&&(o=!1);else if('"'===l)o=!0;else if("{"===l||"["===l)n++;else if(("}"===l||"]"===l)&&(n--,0===n)){try{let n=JSON.parse(t.slice(r,e+1));if(null!==n&&"object"==typeof n)return n}catch(e){}return null}}return null}let Fn=["providers","spec","check","parse","rawText","promptPrefix"],Ln=["【執行約束】你只需把結果輸出在回覆內容中。","禁止建立、修改或刪除任何檔案,也不要執行任何會改動磁碟或系統狀態的指令——","呼叫端只讀取你的回覆文字,任何寫入磁碟的動作都不會被採用,只會製造無人讀取的垃圾檔。","唯讀查閱(讀取檔案、搜尋內容、列出目錄)不在此限,需要時請照常使用。","",""].join("\n");async function zn(e,t={}){let r=Date.now();if(!_r(e))return{ok:!1,json:null,error:"prompt must be a non-empty string",ms:0,tried:[]};let n=Ce(t,"providers",null),o=Ce(t,"spec",null);if(!Pr(n)||!Pr(o))return{ok:!1,json:null,error:`no valid provider for spec: ${JSON.stringify(o)}`,ms:0,tried:[]};let{chain:i,missing:l}=function(e,t){let r=[Ce(t,"use","")],n=Ce(t,"fallback",null);Un(n)&&(r=[...r,...n]);let o=[],i=[];for(let t of r){let r=Ce(e,t,null);Pr(r)?o.push({id:t,...r}):i.push(String(t))}return{chain:o,missing:i}}(n,o);if(l.length>0)return{ok:!1,json:null,error:`unknown provider name(s): ${l.join(", ")}`,ms:0,tried:[]};if(0===i.length)return{ok:!1,json:null,error:`no valid provider for spec: ${JSON.stringify(o)}`,ms:0,tried:[]};let u=!0===Ce(t,"rawText",!1),a=Ce(t,"parse",null);Lr(a)||(a=Cn);let s=Ce(t,"check",null);Lr(s)||(s=null);let c=Ce(t,"promptPrefix",null);_r(c)||(c=""===c?"":Ln);let f=await Dn(c+e,{...fr(t,Fn),providers:i,validate:e=>{if(u){let t=String(e||"").trim();return""!==t&&(!s||!0===s(t))}let t=a(e);return null!==t&&(!s||!0===s(t))},timeoutMs:Ce(t,"timeoutMs",null)||an}),d=null;f.ok&&(d=u?String(f.stdout||"").trim():a(f.stdout));let p=Ce(f,"providerId",null),y=Ce(f,"keyIndex",null);return{ok:f.ok&&null!==d,json:d,providerId:p,keyIndex:y,keyId:null===y?p:`${p}#${y}`,ms:Date.now()-r,tried:Ce(f,"tried",[]),error:f.ok?"":Ce(f,"error","unknown error")}}async function Bn(e={}){let t=Date.now(),r=Ce(e,"providers",null),n=Ce(e,"task",""),o=Ce(e,"agents",null),i=Ce(e,"integrate",null),l=Ce(e,"check",null),u=Ce(e,"callOpt",{});if(!_r(n))return{ok:!1,result:null,integrated:!1,agents:[],candidates:[],totalMs:0,error:"task must be a non-empty string"};if(!Un(o))return{ok:!1,result:null,integrated:!1,agents:[],candidates:[],totalMs:0,error:"agents must be a non-empty array"};let a=Ce(e,"minCandidates",null);a=Dr(a)?Tr(a):2;let s=await Promise.all(o.map(e=>{let{use:t,fallback:o,check:i,...a}=e;return zn(n,{...u,...a,providers:r,spec:{use:t,fallback:o},check:Lr(i)?i:l})})),c=s.filter(e=>e.ok).map(e=>e.json);if(0===c.length)return{ok:!1,result:null,integrated:!1,agents:s,candidates:c,totalMs:Date.now()-t,error:"all agents failed"};if(1===c.length||c.length<a)return{ok:!0,result:c[0],integrated:!1,agents:s,candidates:c,totalMs:Date.now()-t,error:""};if(!i||!_r(Ce(i,"use","")))return{ok:!1,result:null,integrated:!1,agents:s,candidates:c,totalMs:Date.now()-t,error:"integrate spec (with use) is required"};let{use:f,fallback:d,prompt:p,check:y,...h}=i,v=Lr(p)?p(c):function(e,t={}){let r=Ce(t,"schema",""),n=_r(r)?`\n只回覆 JSON 物件,不要任何其他說明文字,格式與候選相同:\n${r}\n`:"\n只回覆 JSON 物件,不要任何其他說明文字,格式與候選相同。\n";return`你是整合者。以下是同一任務由 ${e.length} 個獨立執行產生的候選結果(JSON),請整合成單一最佳版本:擇優合併、去重、保留最完整的證據標注與爭議呈現,不可加入候選中沒有的數字或結論。\n${n}\n${e.map((e,t)=>`【候選 ${t+1}】\n${JSON.stringify(e)}`).join("\n\n")}`}(c,e),g=await zn(v,{...u,...h,providers:r,spec:{use:f,fallback:d},check:Lr(y)?y:l});return{ok:g.ok,result:g.ok?g.json:null,integrated:g.ok,agents:s,candidates:c,integrateDetail:g,totalMs:Date.now()-t,error:g.ok?"":`integrate failed: ${g.error}`}}let Rn=["id","use","fallback","prompt","check"];async function Vn(e={}){let t=Date.now(),r=Ce(e,"providers",null),n=Ce(e,"input",null),o=Ce(e,"stages",null),i=Ce(e,"callOpt",{});if(!Un(o))return{ok:!1,result:null,stages:{},results:{},order:[],failedStage:null,totalMs:0,error:"stages must be a non-empty array"};let l={},u={},a=[],s=null;for(let e=0;e<o.length;e++){let c=o[e],f=_r(Ce(c,"id",""))?c.id:`stage${e+1}`;a.push(f);let d=Ce(c,"prompt",null);if(!Lr(d))return u[f]={ok:!1,error:`stage[${f}].prompt must be a function`},{ok:!1,result:null,stages:u,results:l,order:a,failedStage:f,totalMs:Date.now()-t,error:u[f].error};let p=d({input:n,prev:s,results:l,index:e});if(!_r(p))return u[f]={ok:!1,error:`stage[${f}].prompt returned empty`},{ok:!1,result:null,stages:u,results:l,order:a,failedStage:f,totalMs:Date.now()-t,error:u[f].error};let y=fr(c,Rn),h=await zn(p,{...i,...y,providers:r,spec:{use:Ce(c,"use",""),fallback:Ce(c,"fallback",null)},check:Ce(c,"check",null)});if(u[f]=h,!h.ok)return{ok:!1,result:null,stages:u,results:l,order:a,failedStage:f,totalMs:Date.now()-t,error:`stage[${f}] failed: ${h.error}`};l[f]=h.json,s=h.json}return{ok:!0,result:s,stages:u,results:l,order:a,failedStage:null,totalMs:Date.now()-t,error:""}}let Jn={KINDS:G(On),dispatchAi:Mn,dispatchAiFallback:Dn,dispatchAiWkf:function(e={}){let t=Ce(e,"providers",null);if(!Pr(t))throw new Error("dispatchAiWkf: opt.providers must be an object (name → provider entry)");let r=Ce(e,"defaults",null);return Pr(r)||(r={}),{providers:t,callAi:(e,n={})=>zn(e,{...r,...n,providers:t}),runFanout:(e={})=>Bn({...e,providers:t,callOpt:{...r,...Ce(e,"callOpt",{})}}),runRolePipeline:(e={})=>Vn({...e,providers:t,callOpt:{...r,...Ce(e,"callOpt",{})}}),runFanoutPipeline:(e={})=>async function(e={}){let t=Date.now(),r=await Bn({providers:Ce(e,"providers",null),task:Ce(e,"task",""),agents:Ce(e,"agents",null),integrate:Ce(e,"integrate",null),check:Ce(e,"check",null),schema:Ce(e,"schema",""),minCandidates:Ce(e,"minCandidates",null),callOpt:Ce(e,"callOpt",{})});if(!r.ok)return{ok:!1,result:null,A:r,B:null,totalMs:Date.now()-t,error:`A failed: ${r.error}`};let n=await Vn({providers:Ce(e,"providers",null),input:r.result,stages:Ce(e,"stages",null),callOpt:Ce(e,"callOpt",{})});return{ok:n.ok,result:n.ok?n.result:null,A:r,B:n,totalMs:Date.now()-t,error:n.ok?"":`B failed: ${n.error}`}}({...e,providers:t,callOpt:{...r,...Ce(e,"callOpt",{})}})}},dispatchOpencode:cn,dispatchClaude:pn,dispatchCodex:hn,dispatchAntigravity:bn,dispatchApiOpenaiCompat:wn,providers:[{id:"oc:opencode/deepseek-v4-flash-free",model:"opencode/deepseek-v4-flash-free",kind:"opencode",envVar:"OPENCODE_KEYS",provider:"opencode",config:{permission:{edit:"deny",write:"deny",bash:"deny"}}},{id:"oc:agnes-ai/agnes-2.5-flash",model:"agnes-ai/agnes-2.5-flash",kind:"opencode",envVar:"AGNES_KEYS",provider:"agnes-ai",config:{provider:{"agnes-ai":{npm:"@ai-sdk/openai-compatible",name:"Agnes",options:{baseURL:"https://apihub.agnes-ai.com/v1"},models:{"agnes-2.5-flash":{name:"Agnes 2.5 Flash"}}}},permission:{edit:"deny",write:"deny",bash:"deny"}}},{id:"oc:poolside/poolside/laguna-s-2.1",model:"poolside/poolside/laguna-s-2.1",kind:"opencode",envVar:"POOLSIDE_KEYS",provider:"poolside",config:{provider:{poolside:{npm:"@ai-sdk/openai-compatible",name:"Poolside",options:{baseURL:"https://inference.poolside.ai/v1"},models:{"poolside/laguna-s-2.1":{name:"Laguna S 2.1"}}}},permission:{edit:"deny",write:"deny",bash:"deny"}}},{id:"agy:gemini-3.7-flash-high",model:"gemini-3.7-flash-high",kind:"antigravity",addDirs:["."]},{id:"claude:sonnet",model:"sonnet",kind:"claude",extraArgs:["--disallowedTools","Write,Edit,NotebookEdit,Bash"]},{id:"codex:gpt-5.6-luna",model:"gpt-5.6-luna",kind:"codex",sandbox:"read-only"},{id:"zen:deepseek-v4-flash-free",model:"deepseek-v4-flash-free",kind:"api-openai-compat",envVar:"OPENCODE_KEYS",baseURL:"https://opencode.ai/zen/v1",body:{max_tokens:8192}},{id:"agnes:agnes-2.5-flash",model:"agnes-2.5-flash",kind:"api-openai-compat",envVar:"AGNES_KEYS",baseURL:"https://apihub.agnes-ai.com/v1",body:{max_tokens:8192}},{id:"poolside:laguna-s-2.1",model:"poolside/laguna-s-2.1",kind:"api-openai-compat",envVar:"POOLSIDE_KEYS",baseURL:"https://inference.poolside.ai/v1",body:{max_tokens:8192,chat_template_kwargs:{enable_thinking:!1}}}],resolveProviders:function(e,t={}){let r=Ce(t,"env",null);Pr(r)||(r="undefined"!=typeof process&&process&&Pr(process.env)?process.env:{});let n=Fr(e)?e.filter(Pr):[],o=Ce(t,"pick",null),i=[],l=n;if(Un(o)){l=[];for(let e of o){let t=n.find(t=>Ce(t,"id",null)===e);t?l.push(t):i.push(String(e))}}let u=[],a=[];for(let e of l){let t=Ce(e,"envVar",null);if(!_r(t)||Un(Ce(e,"keys",null))){u.push(fr(e,["envVar"]));continue}let n=String(Ce(r,t,"")||"").split(",").map(e=>e.trim()).filter(Boolean);0!==n.length?u.push({...fr(e,["envVar"]),keys:n}):a.push({id:Ce(e,"id",""),envVar:t})}let s={};for(let e of u)s[e.id]=e;return{providers:u,table:s,skipped:a,missing:i}}};return Jn});
|
|
7
7
|
//# sourceMappingURL=w-dispatch-ai.umd.js.map
|