w-dispatch-ai 1.0.24 → 1.0.25
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 +1 -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/budgetFor.mjs.html +1 -1
- package/docs/buildValidator.mjs.html +1 -1
- package/docs/castPintOr.mjs.html +1 -1
- package/docs/dfTimeoutMs.mjs.html +1 -1
- package/docs/dispatchAi.mjs.html +1 -1
- package/docs/dispatchAiFallback.mjs.html +1 -1
- package/docs/dispatchAiWkf.mjs.html +1 -1
- package/docs/dispatchAntigravity.mjs.html +1 -1
- package/docs/dispatchApiOpenaiCompat.mjs.html +1 -1
- package/docs/dispatchApiOpenaiResponses.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/getErrorType.mjs.html +1 -1
- package/docs/global.html +3 -42
- package/docs/index.html +1 -1
- package/docs/quota_dfQuotaTimeoutMs.mjs.html +1 -1
- package/docs/quota_fetchQuotaJson.mjs.html +1 -1
- package/docs/quota_fromCodexUsageHttp.mjs.html +1 -1
- package/docs/quota_getQuotaAntigravity.mjs.html +1 -1
- package/docs/quota_getQuotaClaude.mjs.html +1 -1
- package/docs/quota_getQuotaCodex.mjs.html +1 -1
- package/docs/quota_readJsonOrNull.mjs.html +1 -1
- package/docs/quota_toQuotaLabel.mjs.html +1 -1
- package/docs/quota_toQuotaResult.mjs.html +1 -1
- package/docs/quota_toQuotaScopedLabel.mjs.html +1 -1
- package/docs/quota_toQuotaWindow.mjs.html +1 -1
- package/docs/readEnvFile.mjs.html +61 -61
- package/docs/resolveProviders.mjs.html +182 -182
- package/docs/wkf_callAiWithFallback.mjs.html +1 -1
- package/docs/wkf_createFileStore.mjs.html +1 -1
- package/docs/wkf_createUsageCounter.mjs.html +1 -1
- package/docs/wkf_extractJsonLoose.mjs.html +1 -1
- package/docs/wkf_noSideEffectPrefix.mjs.html +1 -1
- package/docs/wkf_runFanout.mjs.html +1 -1
- package/docs/wkf_runFanoutPipeline.mjs.html +1 -1
- package/docs/wkf_runRolePipeline.mjs.html +1 -1
- package/docs/wkf_salvageTruncatedArray.mjs.html +1 -1
- package/package.json +1 -6
- package/src/providers.mjs +305 -303
- package/src/readEnvFile.mjs +60 -60
- package/src/resolveProviders.mjs +181 -181
package/README.md
CHANGED
|
@@ -522,7 +522,7 @@ let env = wdi.readEnvFile('./.env')
|
|
|
522
522
|
let { providers, table, skipped } = wdi.resolveProviders(wdi.providers, { env })
|
|
523
523
|
|
|
524
524
|
//自選: pick順序即遞補優先序; providers餵dispatchAiFallback, table餵dispatchAiWkf
|
|
525
|
-
let picked = wdi.resolveProviders(wdi.providers, { env, pick: ['agnes:agnes-
|
|
525
|
+
let picked = wdi.resolveProviders(wdi.providers, { env, pick: ['agnes:agnes-3.0-flash', 'claude:sonnet'] })
|
|
526
526
|
let r = await wdi.dispatchAiFallback(prompt, { providers: picked.providers, timeoutMs: 1200000 })
|
|
527
527
|
let wkf = wdi.dispatchAiWkf({ providers: picked.table, defaults: { timeoutMs: 1200000 } })
|
|
528
528
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* w-dispatch-ai v1.0.
|
|
2
|
+
* w-dispatch-ai v1.0.25
|
|
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"),require("os"),require("crypto")):"function"==typeof define&&define.amd?define(["child_process","path","fs","os","crypto"],t):(e="undefined"!=typeof globalThis?globalThis:e||self)["w-dispatch-ai"]=t(e.child_process,e.path,e.fs,e.os,e.crypto)}(this,function(e,t,r,n,o){"use strict";var i="object"==typeof global&&global&&global.Object===Object&&global,l="object"==typeof self&&self&&self.Object===Object&&self,a=i||l||Function("return this")(),u=a.Symbol,s=Object.prototype,c=s.hasOwnProperty,d=s.toString,f=u?u.toStringTag:void 0;var p=Object.prototype.toString;var m=u?u.toStringTag:void 0;function h(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":m&&m in Object(e)?function(e){var t=c.call(e,f),r=e[f];try{e[f]=void 0;var n=!0}catch(e){}var o=d.call(e);return n&&(t?e[f]=r:delete e[f]),o}(e):function(e){return p.call(e)}(e)}function y(e){return null!=e&&"object"==typeof e}function g(e){return y(e)&&"[object Arguments]"==h(e)}var v=Object.prototype,b=v.hasOwnProperty,w=v.propertyIsEnumerable,_=g(function(){return arguments}())?g:function(e){return y(e)&&b.call(e,"callee")&&!w.call(e,"callee")},k=_,O=Array.isArray;var j="object"==typeof exports&&exports&&!exports.nodeType&&exports,S=j&&"object"==typeof module&&module&&!module.nodeType&&module,x=S&&S.exports===j?a.Buffer:void 0,T=(x?x.isBuffer:void 0)||function(){return!1},A=/^(?:0|[1-9]\d*)$/;function E(e,t){var r=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==r||"symbol"!=r&&A.test(e))&&e>-1&&e%1==0&&e<t}function $(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}var M={};function N(e){return function(t){return e(t)}}M["[object Float32Array]"]=M["[object Float64Array]"]=M["[object Int8Array]"]=M["[object Int16Array]"]=M["[object Int32Array]"]=M["[object Uint8Array]"]=M["[object Uint8ClampedArray]"]=M["[object Uint16Array]"]=M["[object Uint32Array]"]=!0,M["[object Arguments]"]=M["[object Array]"]=M["[object ArrayBuffer]"]=M["[object Boolean]"]=M["[object DataView]"]=M["[object Date]"]=M["[object Error]"]=M["[object Function]"]=M["[object Map]"]=M["[object Number]"]=M["[object Object]"]=M["[object RegExp]"]=M["[object Set]"]=M["[object String]"]=M["[object WeakMap]"]=!1;var I="object"==typeof exports&&exports&&!exports.nodeType&&exports,D=I&&"object"==typeof module&&module&&!module.nodeType&&module,C=D&&D.exports===I&&i.process,L=function(){try{var e=D&&D.require&&D.require("util").types;return e||C&&C.binding&&C.binding("util")}catch(e){}}(),P=L&&L.isTypedArray,U=P?N(P):function(e){return y(e)&&$(e.length)&&!!M[h(e)]},R=Object.prototype.hasOwnProperty;function F(e,t){var r=O(e),n=!r&&k(e),o=!r&&!n&&T(e),i=!r&&!n&&!o&&U(e),l=r||n||o||i,a=l?function(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}(e.length,String):[],u=a.length;for(var s in e)!t&&!R.call(e,s)||l&&("length"==s||o&&("offset"==s||"parent"==s)||i&&("buffer"==s||"byteLength"==s||"byteOffset"==s)||E(s,u))||a.push(s);return a}var z=Object.prototype;function B(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||z)}function V(e,t){return function(r){return e(t(r))}}var K=V(Object.keys,Object),J=Object.prototype.hasOwnProperty;function q(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function W(e){if(!q(e))return!1;var t=h(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}function Y(e){return null!=e&&$(e.length)&&!W(e)}function G(e){return Y(e)?F(e):function(e){if(!B(e))return K(e);var t=[];for(var r in Object(e))J.call(e,r)&&"constructor"!=r&&t.push(r);return t}(e)}function H(e){return"symbol"==typeof e||y(e)&&"[object Symbol]"==h(e)}var X=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Q=/^\w*$/;function Z(e,t){if(O(e))return!1;var r=typeof e;return!("number"!=r&&"symbol"!=r&&"boolean"!=r&&null!=e&&!H(e))||(Q.test(e)||!X.test(e)||null!=t&&e in Object(t))}var ee,te=a["__core-js_shared__"],re=(ee=/[^.]+$/.exec(te&&te.keys&&te.keys.IE_PROTO||""))?"Symbol(src)_1."+ee:"";var ne=Function.prototype.toString;function oe(e){if(null!=e){try{return ne.call(e)}catch(e){}try{return e+""}catch(e){}}return""}var ie=/^\[object .+?Constructor\]$/,le=Function.prototype,ae=Object.prototype,ue=le.toString,se=ae.hasOwnProperty,ce=RegExp("^"+ue.call(se).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function de(e){return!(!q(e)||(t=e,re&&re in t))&&(W(e)?ce:ie).test(oe(e));var t}function fe(e,t){var r=function(e,t){return null==e?void 0:e[t]}(e,t);return de(r)?r:void 0}var pe=fe(Object,"create");var me=Object.prototype.hasOwnProperty;var he=Object.prototype.hasOwnProperty;function ye(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 ge(e,t){return e===t||e!=e&&t!=t}function ve(e,t){for(var r=e.length;r--;)if(ge(e[r][0],t))return r;return-1}ye.prototype.clear=function(){this.__data__=pe?pe(null):{},this.size=0},ye.prototype.delete=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t},ye.prototype.get=function(e){var t=this.__data__;if(pe){var r=t[e];return"__lodash_hash_undefined__"===r?void 0:r}return me.call(t,e)?t[e]:void 0},ye.prototype.has=function(e){var t=this.__data__;return pe?void 0!==t[e]:he.call(t,e)},ye.prototype.set=function(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=pe&&void 0===t?"__lodash_hash_undefined__":t,this};var be=Array.prototype.splice;function we(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])}}we.prototype.clear=function(){this.__data__=[],this.size=0},we.prototype.delete=function(e){var t=this.__data__,r=ve(t,e);return!(r<0)&&(r==t.length-1?t.pop():be.call(t,r,1),--this.size,!0)},we.prototype.get=function(e){var t=this.__data__,r=ve(t,e);return r<0?void 0:t[r][1]},we.prototype.has=function(e){return ve(this.__data__,e)>-1},we.prototype.set=function(e,t){var r=this.__data__,n=ve(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this};var _e=fe(a,"Map");function ke(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 Oe(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])}}Oe.prototype.clear=function(){this.size=0,this.__data__={hash:new ye,map:new(_e||we),string:new ye}},Oe.prototype.delete=function(e){var t=ke(this,e).delete(e);return this.size-=t?1:0,t},Oe.prototype.get=function(e){return ke(this,e).get(e)},Oe.prototype.has=function(e){return ke(this,e).has(e)},Oe.prototype.set=function(e,t){var r=ke(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this};function je(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(je.Cache||Oe),r}je.Cache=Oe;var Se,xe,Te,Ae=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Ee=/\\(\\)?/g,$e=(Se=function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(Ae,function(e,r,n,o){t.push(n?o.replace(Ee,"$1"):r||e)}),t},xe=je(Se,function(e){return 500===Te.size&&Te.clear(),e}),Te=xe.cache,xe),Me=$e;function Ne(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 Ie=u?u.prototype:void 0,De=Ie?Ie.toString:void 0;function Ce(e){if("string"==typeof e)return e;if(O(e))return Ne(e,Ce)+"";if(H(e))return De?De.call(e):"";var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function Le(e){return null==e?"":Ce(e)}function Pe(e,t){return O(e)?e:Z(e,t)?[e]:Me(Le(e))}function Ue(e){if("string"==typeof e||H(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function Re(e,t){for(var r=0,n=(t=Pe(t,e)).length;null!=e&&r<n;)e=e[Ue(t[r++])];return r&&r==n?e:void 0}function Fe(e,t,r){var n=null==e?void 0:Re(e,t);return void 0===n?r:n}function ze(e){var t=this.__data__=new we(e);this.size=t.size}ze.prototype.clear=function(){this.__data__=new we,this.size=0},ze.prototype.delete=function(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r},ze.prototype.get=function(e){return this.__data__.get(e)},ze.prototype.has=function(e){return this.__data__.has(e)},ze.prototype.set=function(e,t){var r=this.__data__;if(r instanceof we){var n=r.__data__;if(!_e||n.length<199)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new Oe(n)}return r.set(e,t),this.size=r.size,this};var Be=function(){try{var e=fe(Object,"defineProperty");return e({},"",{}),e}catch(e){}}(),Ve=Be;function Ke(e,t,r){"__proto__"==t&&Ve?Ve(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}var Je=Object.prototype.hasOwnProperty;function qe(e,t,r){var n=e[t];Je.call(e,t)&&ge(n,r)&&(void 0!==r||t in e)||Ke(e,t,r)}function We(e,t,r,n){var o=!r;r||(r={});for(var i=-1,l=t.length;++i<l;){var a=t[i],u=n?n(r[a],e[a],a,r,e):void 0;void 0===u&&(u=e[a]),o?Ke(r,a,u):qe(r,a,u)}return r}var Ye=Object.prototype.hasOwnProperty;function Ge(e){if(!q(e))return function(e){var t=[];if(null!=e)for(var r in Object(e))t.push(r);return t}(e);var t=B(e),r=[];for(var n in e)("constructor"!=n||!t&&Ye.call(e,n))&&r.push(n);return r}function He(e){return Y(e)?F(e,!0):Ge(e)}var Xe="object"==typeof exports&&exports&&!exports.nodeType&&exports,Qe=Xe&&"object"==typeof module&&module&&!module.nodeType&&module,Ze=Qe&&Qe.exports===Xe?a.Buffer:void 0,et=Ze?Ze.allocUnsafe:void 0;function tt(){return[]}var rt=Object.prototype.propertyIsEnumerable,nt=Object.getOwnPropertySymbols,ot=nt?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}(nt(e),function(t){return rt.call(e,t)}))}:tt,it=ot;function lt(e,t){for(var r=-1,n=t.length,o=e.length;++r<n;)e[o+r]=t[r];return e}var at=V(Object.getPrototypeOf,Object),ut=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)lt(t,it(e)),e=at(e);return t}:tt,st=ut;function ct(e,t,r){var n=t(e);return O(e)?n:lt(n,r(e))}function dt(e){return ct(e,G,it)}function ft(e){return ct(e,He,st)}var pt=fe(a,"DataView"),mt=fe(a,"Promise"),ht=fe(a,"Set"),yt=fe(a,"WeakMap"),gt="[object Map]",vt="[object Promise]",bt="[object Set]",wt="[object WeakMap]",_t="[object DataView]",kt=oe(pt),Ot=oe(_e),jt=oe(mt),St=oe(ht),xt=oe(yt),Tt=h;(pt&&Tt(new pt(new ArrayBuffer(1)))!=_t||_e&&Tt(new _e)!=gt||mt&&Tt(mt.resolve())!=vt||ht&&Tt(new ht)!=bt||yt&&Tt(new yt)!=wt)&&(Tt=function(e){var t=h(e),r="[object Object]"==t?e.constructor:void 0,n=r?oe(r):"";if(n)switch(n){case kt:return _t;case Ot:return gt;case jt:return vt;case St:return bt;case xt:return wt}return t});var At=Tt,Et=Object.prototype.hasOwnProperty;var $t=a.Uint8Array;function Mt(e){var t=new e.constructor(e.byteLength);return new $t(t).set(new $t(e)),t}var Nt=/\w*$/;var It=u?u.prototype:void 0,Dt=It?It.valueOf:void 0;function Ct(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,Nt.exec(e));return t.lastIndex=e.lastIndex,t}(e);case"[object Symbol]":return n=e,Dt?Object(Dt.call(n)):{}}}var Lt=Object.create,Pt=function(){function e(){}return function(t){if(!q(t))return{};if(Lt)return Lt(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}(),Ut=Pt;var Rt=L&&L.isMap,Ft=Rt?N(Rt):function(e){return y(e)&&"[object Map]"==At(e)};var zt=L&&L.isSet,Bt=zt?N(zt):function(e){return y(e)&&"[object Set]"==At(e)},Vt="[object Arguments]",Kt="[object Function]",Jt="[object Object]",qt={};function Wt(e,t,r,n,o,i){var l,a=1&t,u=2&t,s=4&t;if(r&&(l=o?r(e,n,o,i):r(e)),void 0!==l)return l;if(!q(e))return e;var c=O(e);if(c){if(l=function(e){var t=e.length,r=new e.constructor(t);return t&&"string"==typeof e[0]&&Et.call(e,"index")&&(r.index=e.index,r.input=e.input),r}(e),!a)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 d=At(e),f=d==Kt||"[object GeneratorFunction]"==d;if(T(e))return function(e,t){if(t)return e.slice();var r=e.length,n=et?et(r):new e.constructor(r);return e.copy(n),n}(e,a);if(d==Jt||d==Vt||f&&!o){if(l=u||f?{}:function(e){return"function"!=typeof e.constructor||B(e)?{}:Ut(at(e))}(e),!a)return u?function(e,t){return We(e,st(e),t)}(e,function(e,t){return e&&We(t,He(t),e)}(l,e)):function(e,t){return We(e,it(e),t)}(e,function(e,t){return e&&We(t,G(t),e)}(l,e))}else{if(!qt[d])return o?e:{};l=Ct(e,d,a)}}i||(i=new ze);var p=i.get(e);if(p)return p;i.set(e,l),Bt(e)?e.forEach(function(n){l.add(Wt(n,t,r,n,e,i))}):Ft(e)&&e.forEach(function(n,o){l.set(o,Wt(n,t,r,o,e,i))});var m=c?void 0:(s?u?ft:dt:u?He:G)(e);return function(e,t){for(var r=-1,n=null==e?0:e.length;++r<n&&!1!==t(e[r],r,e););}(m||e,function(n,o){m&&(n=e[o=n]),qe(l,o,Wt(n,t,r,o,e,i))}),l}function Yt(e,t){return t.length<2?e:Re(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))}qt[Vt]=qt["[object Array]"]=qt["[object ArrayBuffer]"]=qt["[object DataView]"]=qt["[object Boolean]"]=qt["[object Date]"]=qt["[object Float32Array]"]=qt["[object Float64Array]"]=qt["[object Int8Array]"]=qt["[object Int16Array]"]=qt["[object Int32Array]"]=qt["[object Map]"]=qt["[object Number]"]=qt[Jt]=qt["[object RegExp]"]=qt["[object Set]"]=qt["[object String]"]=qt["[object Symbol]"]=qt["[object Uint8Array]"]=qt["[object Uint8ClampedArray]"]=qt["[object Uint16Array]"]=qt["[object Uint32Array]"]=!0,qt["[object Error]"]=qt[Kt]=qt["[object WeakMap]"]=!1;var Gt=Object.prototype.hasOwnProperty;function Ht(e,t){var r=-1,n=(t=Pe(t,e)).length;if(!n)return!0;for(;++r<n;){var o=Ue(t[r]);if("__proto__"===o&&!Gt.call(e,"__proto__"))return!1;if(("constructor"===o||"prototype"===o)&&r<n-1)return!1}var i=Yt(e,t);return null==i||delete i[Ue(function(e){var t=null==e?0:e.length;return t?e[t-1]:void 0}(t))]}var Xt=Function.prototype,Qt=Object.prototype,Zt=Xt.toString,er=Qt.hasOwnProperty,tr=Zt.call(Object);function rr(e){return function(e){if(!y(e)||"[object Object]"!=h(e))return!1;var t=at(e);if(null===t)return!0;var r=er.call(t,"constructor")&&t.constructor;return"function"==typeof r&&r instanceof r&&Zt.call(r)==tr}(e)?void 0:e}var nr=u?u.isConcatSpreadable:void 0;function or(e){return O(e)||k(e)||!!(nr&&e&&e[nr])}function ir(e,t,r,n,o){var i=-1,l=e.length;for(r||(r=or),o||(o=[]);++i<l;){var a=e[i];t>0&&r(a)?t>1?ir(a,t-1,r,n,o):lt(o,a):n||(o[o.length]=a)}return o}function lr(e){return(null==e?0:e.length)?ir(e,1):[]}var ar=Math.max;function ur(e){return e}var sr=Ve?function(e,t){return Ve(e,"toString",{configurable:!0,enumerable:!1,value:(r=t,function(){return r}),writable:!0});var r}:ur,cr=sr,dr=Date.now;var fr=function(e){var t=0,r=0;return function(){var n=dr(),o=16-(n-r);if(r=n,o>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}(cr),pr=fr;var mr=function(e){return pr(function(e,t,r){return t=ar(void 0===t?e.length-1:t,0),function(){for(var n=arguments,o=-1,i=ar(n.length-t,0),l=Array(i);++o<i;)l[o]=n[t+o];o=-1;for(var a=Array(t+1);++o<t;)a[o]=n[o];return a[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,a)}}(e,void 0,lr),e+"")}(function(e,t){var r={};if(null==e)return r;var n=!1;t=Ne(t,function(t){return t=Pe(t,e),n||(n=t.length>1),t}),We(e,ft(e),r),n&&(r=Wt(r,7,rr));for(var o=t.length;o--;)Ht(r,t[o]);return r}),hr=mr;function yr(e){return"[object Object]"===Object.prototype.toString.call(e)}function gr(e){return"[object String]"===Object.prototype.toString.call(e)}function vr(e){return!(!gr(e)||""===e)}let br=2147483647;function wr(){let e,t,r=new Promise(function(){e=arguments[0],t=arguments[1]});return r.resolve=e,r.reject=t,r}function _r(e){return e!=e}function kr(e){let t=!1;if(vr(e))t=!isNaN(Number(e));else if(function(e){return"[object Number]"===Object.prototype.toString.call(e)}(e)){if(_r(e))return!1;t=!0}return t}function Or(e=10){kr(e)||(e=10),e=Math.min(e,br);let t=wr();return setTimeout(function(){t.resolve()},e),t}var jr=/\s/;var Sr=/^\s+/;function xr(e){return e?e.slice(0,function(e){for(var t=e.length;t--&&jr.test(e.charAt(t)););return t}(e)+1).replace(Sr,""):e}var Tr=/^[-+]0x[0-9a-f]+$/i,Ar=/^0b[01]+$/i,Er=/^0o[0-7]+$/i,$r=parseInt;function Mr(e){if("number"==typeof e)return e;if(H(e))return NaN;if(q(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=q(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=xr(e);var r=Ar.test(e);return r||Er.test(e)?$r(e.slice(2),r?2:8):Tr.test(e)?NaN:+e}var Nr=1/0;function Ir(e){return e?(e=Mr(e))===Nr||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}function Dr(e){var t=Ir(e),r=t%1;return t==t?r?t-r:t:0}var Cr=a.isFinite,Lr=Math.min;var Pr=function(e){var t=Math[e];return function(e,r){if(e=Mr(e),(r=null==r?0:Lr(Dr(r),292))&&Cr(e)){var n=(Le(e)+"e").split("e");return+((n=(Le(t(n[0]+"e"+(+n[1]+r)))+"e").split("e"))[0]+"e"+(+n[1]-r))}return t(e)}}("round"),Ur=Pr;function Rr(e){return!0===(t=e)||!1===t||y(t)&&"[object Boolean]"==h(t);var t}function Fr(e){if(!kr(e))return 0;return Ir(e)}function zr(e,t={}){let r=Fe(t,"useClampSafe",null);Rr(r)||(r=!1);let n=Fe(t,"useLimitSafe",null);Rr(n)||(n=!1);let o=Fe(t,"returnWithStateAndMsg",null);Rr(o)||(o=!1);let i=e=>o?{state:"success",msg:e}:e,l=e=>{if(o)return{state:"error",msg:e};throw new Error(e)};if(!kr(e))return i(0);let a=null;try{e=Fr(e),a=Ur(e),r&&(a>Number.MAX_SAFE_INTEGER?a=Number.MAX_SAFE_INTEGER:a<Number.MIN_SAFE_INTEGER&&(a=Number.MIN_SAFE_INTEGER))}catch(e){return l(e.toString())}return n&&!Number.isSafeInteger(Number(a))?l(`v[${e}] is not a safe integer`):("0"===String(a)&&(a=0),i(a))}function Br(e){return"[object Array]"===Object.prototype.toString.call(e)}function Vr(e){let t=Object.prototype.toString.call(e);return"[object Function]"===t||"[object AsyncFunction]"===t}function Kr(e,t={}){let r=Fe(t,"useLimitSafe",null);return Rr(r)||(r=!1),!!kr(e)&&(e=Fr(e),r?Number.isSafeInteger(e):"number"==typeof(n=e)&&n==Dr(n));var n}function Jr(e,t={}){if(!Kr(e,t))return!1;return zr(e)>0}function qr(e,t={}){if(!Kr(e,t))return!1;return zr(e)>=0}function Wr(e,t){return vr(e)&&qr(t)?0===(t=zr(t))?"":e.substring(0,t):""}function Yr(e,t){if(!vr(e))return"";if(!qr(t))return"";if(0===(t=zr(t)))return"";let r=e.length-t;return r<0&&(r=0),e.substring(r,r+t)}function Gr(e,t){return vr(e)&&qr(t)?0===(t=zr(t))?e:Yr(e,e.length-t):""}function Hr(e,t,r={}){if(!vr(e))return"";if(!qr(t))return e;if(t=zr(t),e.length<=t)return e;let n=Fe(r,"funWithMsg"),o="";if(Vr(n)){let r=n(e,t);vr(r)&&(o=r)}return Wr(e,t)+`...${o}`}function Xr(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Qr=e,Zr=Qr.spawn,en=Qr.exec;function tn(e,t,r){var n={};try{Object.keys(e).forEach(function(r){e[r].forEach(function(e){n[e]||(rn(e,t),n[e]=1)}),n[r]||(rn(r,t),n[r]=1)})}catch(e){if(r)return r(e);throw e}if(r)return r()}function rn(e,t){try{process.kill(parseInt(e,10),t)}catch(e){if("ESRCH"!==e.code)throw e}}function nn(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,nn(i,t,r,n,o)}):0==Object.keys(r).length&&o()})}var on=Xr(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":en("taskkill /pid "+e+" /T /F",r);break;case"darwin":nn(e,n,o,function(e){return Zr("pgrep",["-P",e])},function(){tn(n,t,r)});break;default:nn(e,n,o,function(e){return Zr("ps",["-o","pid","--no-headers","--ppid",e])},function(){tn(n,t,r)})}});function ln(e){let t=wr();return on(Number(e),"SIGKILL",r=>{r?t.reject(r):t.resolve(`pid[${e}] killed`)}),t}function an(e,t={}){let r=Fe(t,"fs"),n=!1;try{r.statSync(e),n=!0}catch{n=!1}return n}function un(e){return function(e,t={}){let r=Fe(t,"fs");return!!an(e,{fs:r})&&!r.lstatSync(e).isDirectory()&&!r.lstatSync(e).isSymbolicLink()}(e,{fs:r})}function sn(e,t={}){let r=null,n=Fe(t,"fs"),o="";try{o=n.readFileSync(e,"utf8")}catch(e){r=e}return null!==r?{error:r}:{success:o}}function cn(e){let n=Fe(sn(e,{fs:r}),"success","");if(!vr(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 un(l)?l:null}let dn={buildSpawnArgs:function(r,n=[]){if(Br(n)||(n=[]),"win32"!==process.platform)return{file:r,args:n,opt:{}};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,opt:{}};if(/\.(cmd|bat)$/i.test(o)){let e=cn(o);if(e)return/\.exe$/i.test(e)?{file:e,args:n,opt:{}}:{file:process.execPath,args:[e,...n],opt:{}};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,opt:{}}},buildSpawnEnv:function(e=void 0){let t={...process.env,PYTHONIOENCODING:"utf-8"};if(void 0!==e){if("win32"===process.platform){let r=Object.keys(e).map(e=>e.toLowerCase());for(let e of Object.keys(t))r.includes(e.toLowerCase())&&delete t[e]}t={...t,...e}}return t}},{buildSpawnArgs:fn,buildSpawnEnv:pn}=dn,mn={funWithMsg:e=>`(truncated, total ${e.length} chars)`};function hn(t,r=[],n={}){let{timeoutMs:o=12e4,cwd:i=process.cwd(),input:l,validate:a,maxBuffer:u=10485760,onStdout:s,onStderr:c,env:d}=n,f=function(e){if(Vr(e))return e;if(!vr(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(!vr(e)||""===e.trim())return!1}else if("json"===r)try{JSON.parse(e)}catch{return!1}else if("min:"===Wr(r,4)){let t=Gr(r,4);if(!kr(t))return!1;let n=zr(t);if(!vr(e)||e.length<n)return!1}return!0}}(a),p=Date.now(),m=wr(),h=pn(d),y=fn(t,r),g=e.spawn(y.file,y.args,{cwd:i,stdio:["pipe","pipe","pipe"],windowsHide:!0,env:h,...y.opt}),v="",b="",w=new TextDecoder("utf-8"),_=new TextDecoder("utf-8"),k=!1,O=!1;g.stdout.on("data",e=>{let t=w.decode(e,{stream:!0});t&&(Vr(s)&&s(t),v.length<u&&(v+=t))}),g.stderr.on("data",e=>{let t=_.decode(e,{stream:!0});t&&(Vr(c)&&c(t),b.length<u&&(b+=t))}),g.stdin.on("error",()=>{}),void 0!==l&&g.stdin.write(l,"utf8"),g.stdin.end();let j=setTimeout(()=>{k||(O=!0,ln(g.pid).catch(()=>{}),setTimeout(()=>{k||(k=!0,m.resolve({ok:!1,stdout:Hr(v,500,mn),stderr:Hr(b,500,mn),code:null,error:`TIMEOUT after ${o/1e3}s(子進程未能結束)`,durationMs:Date.now()-p,pid:g.pid}))},3e3).unref())},o);return g.on("error",e=>{k||(k=!0,clearTimeout(j),m.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(k)return;k=!0,clearTimeout(j);let r=w.decode();r&&v.length<u&&(v+=r);let n=_.decode();n&&b.length<u&&(b+=n);let i=Date.now()-p;O?m.resolve({ok:!1,stdout:Hr(v,500,mn),stderr:Hr(b,500,mn),code:e,error:`TIMEOUT after ${o/1e3}s`,durationMs:i,pid:g.pid}):0===e?!f||f(v)?m.resolve({ok:!0,stdout:v,stderr:b,code:0,error:"",durationMs:i,pid:g.pid}):m.resolve({ok:!1,stdout:Hr(v,500,mn),stderr:Hr(b,500,mn),code:0,error:"OUTPUT_VALIDATION_FAILED",durationMs:i,pid:g.pid}):m.resolve({ok:!1,stdout:Hr(v,500,mn),stderr:Hr(b,1e3,mn),code:e,error:t?`Signal: ${t}`:`Exit code ${e}`,durationMs:i,pid:g.pid})}),m}async function yn(e,t=[],r={}){if(!vr(e))return{ok:!1,stdout:"",stderr:"",code:null,error:"command 須為非空字串",durationMs:0,attempts:0};Br(t)||(t=[]),yr(r)||(r={});let{maxRetries:n=0,retryDelayMs:o=5e3,...i}=r,l=Fe(i,"cwd",null);vr(l)?i.cwd=l:i.cwd=process.cwd();let a=Fe(i,"input",null);vr(a)?i.input=a:i.input=void 0;let u=Fe(i,"env",null);yr(u)?i.env=u:i.env=void 0;let s=Fe(i,"validate",null);Vr(s)||vr(s)?i.validate=s:i.validate=void 0;let c=Fe(i,"onStdout",null);Vr(c)?i.onStdout=c:i.onStdout=void 0;let d=Fe(i,"onStderr",null);Vr(d)?i.onStderr=d:i.onStderr=void 0,n=qr(n)?zr(n):0,o=Jr(o)?zr(o):5e3;let f=Fe(i,"timeoutMs",null);Jr(f)?i.timeoutMs=zr(f):i.timeoutMs=12e4,i.timeoutMs=Math.min(i.timeoutMs,br);let p,m=Fe(i,"maxBuffer",null);Jr(m)?i.maxBuffer=zr(m):i.maxBuffer=10485760;let h=0;for(let r=0;r<=n;r++){if(r>0){let e=Math.min(o*r,15e3);await Or(e)}if(p=await hn(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 gn(...e){let t=[];for(let r of e)if(Br(r))for(let e of r)vr(e)&&t.push(e);else vr(r)&&t.push(r);return t}function vn(e,t="params"){return vr(e)||(e="unknown error"),vr(t)||(t="params"),{ok:!1,stdout:"",stderr:"",code:null,error:e,errorType:t,durationMs:0,attempts:0}}function bn(e){let t=Fe(e,"error","");return vr(t)?0===t.indexOf("TIMEOUT")?"timeout":t.includes("ENOENT")||t.includes("ENAMETOOLONG")?"spawn":"OUTPUT_VALIDATION_FAILED"===t?"validation":"exec":"exec"}function wn(e){return!0===Fe(e,"ok",!1)||vr(Fe(e,"errorType",null))?e:{...e,errorType:bn(e)}}function _n(e,t){return Jr(e)?zr(e):t}let kn=3e5,On=["exe","model","key","provider","agent","config","extraArgs","input","env"];async function jn(e,t={}){if(!vr(e))return vn("prompt must be a non-empty string");let r=Fe(t,"exe",null);vr(r)||(r="opencode");let n=Fe(t,"model",null),o=Fe(t,"agent",null);vr(o)||(o="build");let i=Fe(t,"extraArgs",null),l=gn("run",["--agent",o],vr(n)?["-m",n]:[],i),a=Fe(t,"env",null);yr(a)||(a=void 0);let u=Fe(t,"config",null);yr(u)&&(u=JSON.stringify(u)),vr(u)&&(a={...a,OPENCODE_CONFIG_CONTENT:u});let s=Fe(t,"key",null),c=Fe(t,"provider",null);vr(s)&&vr(c)&&(a={...a,OPENCODE_AUTH_CONTENT:JSON.stringify({[c]:{type:"api",key:s}})});let d=_n(Fe(t,"timeoutMs",null),kn),f=hr(t,On);return wn(await yn(r,l,{...f,input:e,env:a,timeoutMs:d}))}let Sn=["exe","model","skipPermissions","extraArgs","input"];async function xn(e,t={}){if(!vr(e))return vn("prompt must be a non-empty string");let r=Fe(t,"exe",null);vr(r)||(r="claude");let n=Fe(t,"model",null),o=Fe(t,"skipPermissions",null);Rr(o)||(o=!0);let i=Fe(t,"extraArgs",null),l=gn("-p",o?"--dangerously-skip-permissions":[],vr(n)?["--model",n]:[],i),a=_n(Fe(t,"timeoutMs",null),kn),u=hr(t,Sn);return wn(await yn(r,l,{...u,input:e,timeoutMs:a}))}let Tn=["exe","model","sandbox","extraArgs","input"];async function An(e,t={}){if(!vr(e))return vn("prompt must be a non-empty string");let r=Fe(t,"exe",null);vr(r)||(r="codex");let n=Fe(t,"model",null),o=Fe(t,"sandbox",null);vr(o)||(o="workspace-write");let i=Fe(t,"extraArgs",null),l=gn("exec",["--sandbox",o],"--skip-git-repo-check",vr(n)?["-m",n]:[],i),a=_n(Fe(t,"timeoutMs",null),kn),u=hr(t,Tn);return wn(await yn(r,l,{...u,input:e,timeoutMs:a}))}let En=kn,$n=["exe","model","effort","skipPermissions","printTimeout","addDirs","extraArgs","input"];async function Mn(e,t={}){if(!vr(e))return vn("prompt must be a non-empty string");if(e.length>3e4)return vn(`prompt too long (${e.length} chars > 30000), agy passes prompt via --print flag and Windows command line is capped at 32767 chars`);let r=Fe(t,"exe",null);vr(r)||(r="agy");let n=Fe(t,"model",null),o=Fe(t,"effort",null),i=Fe(t,"skipPermissions",null);Rr(i)||(i=!0);let l=_n(Fe(t,"timeoutMs",null),En),a=Fe(t,"printTimeout",null);vr(a)||(a=`${Math.max(30,Math.floor(l/1e3)-30)}s`);let u=Fe(t,"addDirs",null);if(!Br(u)){let e=Fe(t,"cwd",null);vr(e)||(e=process.cwd()),u=[e]}let s=[];for(let e of u)vr(e)&&s.push("--add-dir",e);let c=Fe(t,"extraArgs",null),d=gn(i?"--dangerously-skip-permissions":[],["--print-timeout",a],vr(n)?["--model",n]:[],vr(o)?["--effort",o]:[],s,c,["--print",e]),f=hr(t,$n);try{return wn(await yn(r,d,{...f,timeoutMs:l}))}catch(e){return vn(`${e.code||"UNKNOWN"}: ${e.message}`,"spawn")}}function Nn(e){if(Vr(e))return e;if(!vr(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(!vr(e)||""===e.trim())return!1}else if("json"===r)try{JSON.parse(e)}catch{return!1}else if("min:"===Wr(r,4)){let t=Gr(r,4);if(!kr(t))return!1;let n=zr(t);if(!vr(e)||e.length<n)return!1}return!0}}let In=kn,Dn={funWithMsg:e=>`(truncated, total ${e.length} chars)`};async function Cn(e,t,r,n,o){let i=Date.now(),l=e=>({ok:!1,stdout:"",stderr:"",code:null,error:"",durationMs:Date.now()-i,usage:null,...e}),a=new AbortController,u=setTimeout(()=>{a.abort()},n),s=null,c="";try{s=await fetch(e,{method:"POST",headers:t,body:JSON.stringify(r),signal:a.signal}),c=await s.text()}catch(e){if(clearTimeout(u),"AbortError"===e.name)return l({error:`TIMEOUT after ${n/1e3}s`,errorType:"timeout"});return l({error:`FETCH_ERROR: ${Fe(e,"cause.code","")||e.message}`,errorType:"fetch"})}if(clearTimeout(u),!s.ok)return l({stderr:Hr(c,1e3,Dn),code:s.status,error:`HTTP ${s.status}`,errorType:"http"});let d=null,f="",p=null,m=null;try{let e=JSON.parse(c);d=Fe(e,"choices.0.message.content",null),f=Fe(e,"choices.0.finish_reason",""),p=Fe(e,"choices.0.message.tool_calls",null),m=Fe(e,"usage",null),yr(m)||(m=null)}catch{}return"tool_calls"===f||null!=p?l({stderr:Hr(c,1e3,Dn),code:s.status,error:"TOOL_CALLS_UNSUPPORTED: use a cli kind (opencode/claude/codex/antigravity) when tools are needed",errorType:"tool-unsupported",usage:m}):null==d?l({stderr:Hr(c,500,Dn),code:s.status,error:"INVALID_RESPONSE: missing choices[0].message.content",errorType:"invalid-response",usage:m}):("string"!=typeof d&&(d=JSON.stringify(d)),o&&!o(d)?l({stdout:Hr(d,500,Dn),code:s.status,error:"OUTPUT_VALIDATION_FAILED",errorType:"validation",usage:m}):l({ok:!0,stdout:d,code:s.status,usage:m}))}async function Ln(e,t={}){if(!vr(e))return vn("prompt must be a non-empty string");let r=Fe(t,"baseURL",null);if(!vr(r))return vn("baseURL must be a non-empty string");let n=Fe(t,"model",null);if(!vr(n))return vn("model must be a non-empty string");let o=Fe(t,"key",null),i=Fe(t,"system",null),l=Fe(t,"body",null);yr(l)||(l={});let a=Fe(t,"headers",null);yr(a)||(a={});let u=_n(Fe(t,"timeoutMs",null),In),s=Fe(t,"maxRetries",null);s=qr(s)?zr(s):0;let c=_n(Fe(t,"retryDelayMs",null),5e3),d=Nn(Fe(t,"validate",null)),f=r.replace(/\/+$/,"")+"/chat/completions",p=[];vr(i)&&p.push({role:"system",content:i}),p.push({role:"user",content:e});let m={model:n,messages:p,...l},h={"Content-Type":"application/json",...a};vr(o)&&(h.Authorization=`Bearer ${o}`);let y=null,g=0;for(let e=0;e<=s;e++){if(e>0&&await Or(Math.min(c*e,15e3)),y=await Cn(f,h,m,u,d),g=e+1,y.ok)return y.attempts=g,y;let t=y.code;if(kr(t)&&t>=400&&t<500&&429!==t)break}return y.attempts=g,y}let Pn=kn,Un={funWithMsg:e=>`(truncated, total ${e.length} chars)`};function Rn(e){if(!Br(e))return"";let t=[];for(let r of e){if("message"!==Fe(r,"type",""))continue;let e=Fe(r,"content",null);if(Br(e))for(let r of e){let e=Fe(r,"text",null);vr(e)&&t.push(e)}}return t.join("")}async function Fn(e,t,r,n,o){let i=Date.now(),l=e=>({ok:!1,stdout:"",stderr:"",code:null,error:"",durationMs:Date.now()-i,usage:null,...e}),a=new AbortController,u=setTimeout(()=>{a.abort()},n),s=null,c="";try{s=await fetch(e,{method:"POST",headers:t,body:JSON.stringify(r),signal:a.signal}),c=await s.text()}catch(e){if(clearTimeout(u),"AbortError"===e.name)return l({error:`TIMEOUT after ${n/1e3}s`,errorType:"timeout"});return l({error:`FETCH_ERROR: ${Fe(e,"cause.code","")||e.message}`,errorType:"fetch"})}if(clearTimeout(u),!s.ok)return l({stderr:Hr(c,1e3,Un),code:s.status,error:`HTTP ${s.status}`,errorType:"http"});let d=null,f="",p="",m="",h=null,y=!0;try{let e=JSON.parse(c);d=Fe(e,"output",null),f=Fe(e,"status",""),p=Fe(e,"incomplete_details.reason",""),m=Fe(e,"error.message","")||Fe(e,"error.code",""),h=Fe(e,"usage",null),yr(h)||(h=null)}catch{y=!1}if(!y||!Br(d))return l({stderr:Hr(c,500,Un),code:s.status,error:"INVALID_RESPONSE: missing output array",errorType:"invalid-response",usage:h});if(d.some(e=>"function_call"===Fe(e,"type","")))return l({stderr:Hr(c,1e3,Un),code:s.status,error:"TOOL_CALLS_UNSUPPORTED: use a cli kind (opencode/claude/codex/antigravity) when tools are needed",errorType:"tool-unsupported",usage:h});if("completed"!==f){let e=p||m||f||"unknown";return l({stdout:Hr(Rn(d),500,Un),stderr:Hr(c,500,Un),code:s.status,error:`INCOMPLETE_RESPONSE: status=${f||"missing"} (${e})`,errorType:"incomplete",usage:h})}let g=Rn(d);return""===g?l({stderr:Hr(c,500,Un),code:s.status,error:"INVALID_RESPONSE: no output_text in output messages",errorType:"invalid-response",usage:h}):o&&!o(g)?l({stdout:Hr(g,500,Un),code:s.status,error:"OUTPUT_VALIDATION_FAILED",errorType:"validation",usage:h}):l({ok:!0,stdout:g,code:s.status,usage:h})}async function zn(e,t={}){if(!vr(e))return vn("prompt must be a non-empty string");let r=Fe(t,"baseURL",null);if(!vr(r))return vn("baseURL must be a non-empty string");let n=Fe(t,"model",null);if(!vr(n))return vn("model must be a non-empty string");let o=Fe(t,"key",null),i=Fe(t,"system",null),l=Fe(t,"body",null);yr(l)||(l={});let a=Fe(t,"headers",null);yr(a)||(a={});let u=_n(Fe(t,"timeoutMs",null),Pn),s=Fe(t,"maxRetries",null);s=qr(s)?zr(s):0;let c=_n(Fe(t,"retryDelayMs",null),5e3),d=Nn(Fe(t,"validate",null)),f=r.replace(/\/+$/,"")+"/responses",p={model:n,input:e};vr(i)&&(p.instructions=i),p={...p,...l};let m={"Content-Type":"application/json",...a};vr(o)&&(m.Authorization=`Bearer ${o}`);let h=null,y=0;for(let e=0;e<=s;e++){if(e>0&&await Or(Math.min(c*e,15e3)),h=await Fn(f,m,p,u,d),y=e+1,h.ok)return h.attempts=y,h;let t=h.code;if(kr(t)&&t>=400&&t<500&&429!==t)break}return h.attempts=y,h}let Bn={opencode:jn,claude:xn,codex:An,antigravity:Mn,"api-openai-compat":Ln,"api-openai-responses":zn};function Vn(e){return e!=e}function Kn(e){return null==e?[]:function(e,t){return Ne(t,function(t){return e[t]})}(e,G(e))}var Jn=Math.max;function qn(e,t,r,n){e=Y(e)?e:Kn(e),r=r&&!n?Dr(r):0;var o=e.length;return r<0&&(r=Jn(o+r,0)),function(e){return"string"==typeof e||!O(e)&&y(e)&&"[object String]"==h(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,Vn,r)}(e,t,r)>-1}async function Wn(e,t,r={}){let n=G(Bn);return vr(e)&&qn(n,e)?(0,Bn[e])(t,r):vn(`unknown ai kind: "${e}" (available: ${n.join(", ")})`)}let Yn=["providers","budgetMs","minAttemptMs","cooldownMs","shouldStop","coolDetect","store","onEvent","meta"],Gn=["id","keys","meta"],Hn=kn,Xn={cursors:{}};function Qn(e){let t=Fe(e,"error","");vr(t)||(t="");let r=Fe(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 Zn(e,t={}){if(!vr(e))return{...vn("prompt must be a non-empty string"),tried:[]};let r=Fe(t,"providers",null),n=Br(r)?r.filter(yr):[];if(0===n.length)return{...vn("providers must be a non-empty array"),tried:[]};let o=_n(Fe(t,"budgetMs",null),null),i=null===o?null:Date.now()+o,l=_n(Fe(t,"minAttemptMs",null),2e4),{state:a,saveState:u}=function(e){let t=yr(e)&&Vr(e.get)&&Vr(e.set),r=null;if(t)try{r=e.get()}catch{}return yr(r)||(r=t?{cursors:{}}:Xn),yr(r.cursors)||(r.cursors={}),yr(r.cooling)||(r.cooling={}),{state:r,saveState:()=>{if(t)try{e.set(r)}catch{}}}}(Fe(t,"store",null)),s=_n(Fe(t,"cooldownMs",null),0),c=Fe(t,"coolDetect",null);Vr(c)||(c=null);let d=Fe(t,"shouldStop",null);Vr(d)||(d=null);let f=()=>{if(null===d)return!1;try{return!0===d()}catch{return!1}};s>0&&(n=function(e,t,r,n){let o=Date.now(),i=[],l=[],a=!1;for(let n of e){let e=Fe(n,"id",null),u=vr(e)?Fe(t.cooling,e,null):null;Jr(u)&&o-u<r?l.push(n):(vr(e)&&void 0!==t.cooling[e]&&(delete t.cooling[e],a=!0),i.push(n))}return a&&n(),[...i,...l]}(n,a,s,u));let p=Fe(t,"onEvent",null),m=e=>{if(Vr(p))try{p(e)}catch{}},h=hr(t,Yn),y=[],g=null,v=null;for(let t=0;t<n.length;t++){let r=n[t],o=Fe(r,"id",null),d=vr(o);d||(o=String(t));let p=Fe(r,"kind",null),b=Fe(r,"model",null),w=Fe(r,"keys",null),_=Br(w)?w.filter(vr):[],k=_.length,O=hr(r,Gn),j=0;if(k>0){let e=Fe(a.cursors,o,0);j=Jr(e)?zr(e)%k:0}let S=k>0?k:1,x=!1;for(let t=0;t<S&&!x;t++){if(f())return m({type:"aborted",providerId:o,keyIndex:null,keyId:o}),y.push({providerId:o,keyIndex:null,keyId:o,outcome:"aborted"}),{...vn("ABORTED","aborted"),tried:y};let r=k>0?(j+t)%k:null,n=null===r?o:`${o}#${r}`,w={...h,...O};k>0&&(w.key=_[r]);let S=_n(Fe(w,"timeoutMs",null),Hn);if(null!==i){let e=i-Date.now();if(e<l)return m({type:"budget-out",providerId:o,keyIndex:r,keyId:n,remainingMs:e}),y.push({providerId:o,keyIndex:r,keyId:n,outcome:"budget-out"}),{...vn("budget exhausted","budget"),tried:y};S=Math.min(S,e)}w.timeoutMs=S,m({type:"try",providerId:o,keyIndex:r,keyId:n,kind:p,model:b});let T=await Wn(p,e,w);if(T.ok)return s>0&&d&&void 0!==a.cooling[o]&&(delete a.cooling[o],u()),k>0&&(a.cursors[o]=(r+1)%k,u()),m({type:"ok",providerId:o,keyIndex:r,keyId:n,durationMs:T.durationMs}),y.push({providerId:o,keyIndex:r,keyId:n,outcome:"ok",durationMs:T.durationMs,...void 0!==T.usage?{usage:T.usage}:{}}),{...T,providerId:o,keyIndex:r,kind:p,model:b,tried:y};if(g=T,v={providerId:o,keyIndex:r,kind:p,model:b},s>0&&d){let e=429===T.code||vr(T.error)&&0===T.error.indexOf("TIMEOUT");if(!e&&null!==c)try{e=!0===c(T)}catch{}e&&(a.cooling[o]=Date.now(),u(),m({type:"cooled",providerId:o,keyIndex:r,keyId:n,error:T.error,cooldownMs:s}))}Qn(T)?(m({type:"skip-group",providerId:o,keyIndex:r,keyId:n,error:T.error,errorType:T.errorType,stdout:T.stdout,stderr:T.stderr}),y.push({providerId:o,keyIndex:r,keyId:n,outcome:"skip-group",error:T.error,errorType:T.errorType,stdout:T.stdout,stderr:T.stderr,durationMs:T.durationMs,...void 0!==T.usage?{usage:T.usage}:{}}),x=!0):(m({type:"next-key",providerId:o,keyIndex:r,keyId:n,error:T.error,errorType:T.errorType,stdout:T.stdout,stderr:T.stderr}),y.push({providerId:o,keyIndex:r,keyId:n,outcome:"next-key",error:T.error,errorType:T.errorType,stdout:T.stdout,stderr:T.stderr,durationMs:T.durationMs,...void 0!==T.usage?{usage:T.usage}:{}}))}}return{...g||vn("all providers failed","exec"),...v||{},tried:y}}function eo(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(yr(e)){for(let t in e)return!1;return!0}return!1}(e)||(!!function(e){return!(!gr(e)||""!==e)}(e)||(!!function(e){return!!Br(e)&&0===e.length}(e)||!!_r(e)))))}function to(e){return!!Br(e)&&(0!==e.length&&(1!==e.length||!eo(e[0])))}function ro(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 no=["【執行約束】你只需把結果輸出在回覆內容中。","禁止建立、修改或刪除任何檔案,也不要執行任何會改動磁碟或系統狀態的指令——","呼叫端只讀取你的回覆文字,任何寫入磁碟的動作都不會被採用,只會製造無人讀取的垃圾檔。","唯讀查閱(讀取檔案、搜尋內容、列出目錄)不在此限,需要時請照常使用。","",""].join("\n"),oo=["providers","spec","check","parse","rawText","promptPrefix","meta"];async function io(e,t={}){let r=Date.now();if(!vr(e))return{ok:!1,json:null,error:"prompt must be a non-empty string",errorType:"params",ms:0,tried:[]};let n=Fe(t,"providers",null),o=Fe(t,"spec",null);if(!yr(n)||!yr(o))return{ok:!1,json:null,error:`no valid provider for spec: ${JSON.stringify(o)}`,errorType:"params",ms:0,tried:[]};let{chain:i,missing:l}=function(e,t){let r=[Fe(t,"use","")],n=Fe(t,"fallback",null);to(n)&&(r=[...r,...n]);let o=[],i=[];for(let t of r){let r=Fe(e,t,null);yr(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(", ")}`,errorType:"params",ms:0,tried:[]};if(0===i.length)return{ok:!1,json:null,error:`no valid provider for spec: ${JSON.stringify(o)}`,errorType:"params",ms:0,tried:[]};let a=!0===Fe(t,"rawText",!1),u=Fe(t,"parse",null);Vr(u)||(u=ro);let s=Fe(t,"check",null);Vr(s)||(s=null);let c=Fe(t,"promptPrefix",null);vr(c)||(c=""===c?"":no);let d=await Zn(c+e,{...hr(t,oo),providers:i,validate:e=>{if(a){let t=String(e||"").trim();return""!==t&&(!s||!0===s(t))}let t=u(e);return null!==t&&(!s||!0===s(t))},timeoutMs:Fe(t,"timeoutMs",null)||kn}),f=null;d.ok&&(f=a?String(d.stdout||"").trim():u(d.stdout));let p=Fe(d,"providerId",null),m=Fe(d,"keyIndex",null);return{ok:d.ok&&null!==f,json:f,providerId:p,keyIndex:m,keyId:null===m?p:`${p}#${m}`,ms:Date.now()-r,tried:Fe(d,"tried",[]),usage:Fe(d,"usage",null),error:d.ok?"":Fe(d,"error","unknown error"),...d.ok?{}:{errorType:Fe(d,"errorType","exec")}}}async function lo(e={}){let t=Date.now(),r=Fe(e,"providers",null),n=Fe(e,"task",""),o=Fe(e,"agents",null),i=Fe(e,"integrate",null),l=Fe(e,"check",null),a=Fe(e,"callOpt",{});if(!vr(n))return{ok:!1,result:null,integrated:!1,agents:[],candidates:[],totalMs:0,error:"task must be a non-empty string"};if(!to(o))return{ok:!1,result:null,integrated:!1,agents:[],candidates:[],totalMs:0,error:"agents must be a non-empty array"};let u=Fe(e,"minCandidates",null);u=Jr(u)?zr(u):2;let s=await Promise.all(o.map(e=>{let{use:t,fallback:o,check:i,meta:u,...s}=e;return io(n,{...a,...s,providers:r,spec:{use:t,fallback:o},check:Vr(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<u)return{ok:!0,result:c[0],integrated:!1,agents:s,candidates:c,totalMs:Date.now()-t,error:""};if(!i||!vr(Fe(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:d,fallback:f,prompt:p,check:m,meta:h,...y}=i,g=Vr(p)?p(c):function(e,t={}){let r=Fe(t,"schema",""),n=vr(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 io(g,{...a,...y,providers:r,spec:{use:d,fallback:f},check:Vr(m)?m:l});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 ao=["id","use","fallback","prompt","check","meta"];async function uo(e={}){let t=Date.now(),r=Fe(e,"providers",null),n=Fe(e,"input",null),o=Fe(e,"stages",null),i=Fe(e,"callOpt",{});if(!to(o))return{ok:!1,result:null,stages:{},results:{},order:[],failedStage:null,totalMs:0,error:"stages must be a non-empty array"};let l={},a={},u=[],s=null;for(let e=0;e<o.length;e++){let c=o[e],d=vr(Fe(c,"id",""))?c.id:`stage${e+1}`;u.push(d);let f=Fe(c,"prompt",null);if(!Vr(f))return a[d]={ok:!1,error:`stage[${d}].prompt must be a function`},{ok:!1,result:null,stages:a,results:l,order:u,failedStage:d,totalMs:Date.now()-t,error:a[d].error};let p=f({input:n,prev:s,results:l,index:e});if(!vr(p))return a[d]={ok:!1,error:`stage[${d}].prompt returned empty`},{ok:!1,result:null,stages:a,results:l,order:u,failedStage:d,totalMs:Date.now()-t,error:a[d].error};let m=hr(c,ao),h=await io(p,{...i,...m,providers:r,spec:{use:Fe(c,"use",""),fallback:Fe(c,"fallback",null)},check:Fe(c,"check",null)});if(a[d]=h,!h.ok)return{ok:!1,result:null,stages:a,results:l,order:u,failedStage:d,totalMs:Date.now()-t,error:`stage[${d}] failed: ${h.error}`};l[d]=h.json,s=h.json}return{ok:!0,result:s,stages:a,results:l,order:u,failedStage:null,totalMs:Date.now()-t,error:""}}let so=["stages","input"],co=["task","agents","integrate","check","schema","minCandidates"];var fo=Array.prototype.join;function po(e){var t=-1,r=null==e?0:e.length;for(this.__data__=new Oe;++t<r;)this.add(e[t])}function mo(e,t){for(var r=-1,n=null==e?0:e.length;++r<n;)if(t(e[r],r,e))return!0;return!1}function ho(e,t){return e.has(t)}po.prototype.add=po.prototype.push=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this},po.prototype.has=function(e){return this.__data__.has(e)};function yo(e,t,r,n,o,i){var l=1&r,a=e.length,u=t.length;if(a!=u&&!(l&&u>a))return!1;var s=i.get(e),c=i.get(t);if(s&&c)return s==t&&c==e;var d=-1,f=!0,p=2&r?new po:void 0;for(i.set(e,t),i.set(t,e);++d<a;){var m=e[d],h=t[d];if(n)var y=l?n(h,m,d,t,e,i):n(m,h,d,e,t,i);if(void 0!==y){if(y)continue;f=!1;break}if(p){if(!mo(t,function(e,t){if(!ho(p,t)&&(m===e||o(m,e,r,n,i)))return p.push(t)})){f=!1;break}}else if(m!==h&&!o(m,h,r,n,i)){f=!1;break}}return i.delete(e),i.delete(t),f}function go(e){var t=-1,r=Array(e.size);return e.forEach(function(e,n){r[++t]=[n,e]}),r}function vo(e){var t=-1,r=Array(e.size);return e.forEach(function(e){r[++t]=e}),r}var bo=u?u.prototype:void 0,wo=bo?bo.valueOf:void 0;var _o=Object.prototype.hasOwnProperty;var ko="[object Arguments]",Oo="[object Array]",jo="[object Object]",So=Object.prototype.hasOwnProperty;function xo(e,t,r,n,o,i){var l=O(e),a=O(t),u=l?Oo:At(e),s=a?Oo:At(t),c=(u=u==ko?jo:u)==jo,d=(s=s==ko?jo:s)==jo,f=u==s;if(f&&T(e)){if(!T(t))return!1;l=!0,c=!1}if(f&&!c)return i||(i=new ze),l||U(e)?yo(e,t,r,n,o,i):function(e,t,r,n,o,i,l){switch(r){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!i(new $t(e),new $t(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return ge(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var a=go;case"[object Set]":var u=1&n;if(a||(a=vo),e.size!=t.size&&!u)return!1;var s=l.get(e);if(s)return s==t;n|=2,l.set(e,t);var c=yo(a(e),a(t),n,o,i,l);return l.delete(e),c;case"[object Symbol]":if(wo)return wo.call(e)==wo.call(t)}return!1}(e,t,u,r,n,o,i);if(!(1&r)){var p=c&&So.call(e,"__wrapped__"),m=d&&So.call(t,"__wrapped__");if(p||m){var h=p?e.value():e,y=m?t.value():t;return i||(i=new ze),o(h,y,r,n,i)}}return!!f&&(i||(i=new ze),function(e,t,r,n,o,i){var l=1&r,a=dt(e),u=a.length;if(u!=dt(t).length&&!l)return!1;for(var s=u;s--;){var c=a[s];if(!(l?c in t:_o.call(t,c)))return!1}var d=i.get(e),f=i.get(t);if(d&&f)return d==t&&f==e;var p=!0;i.set(e,t),i.set(t,e);for(var m=l;++s<u;){var h=e[c=a[s]],y=t[c];if(n)var g=l?n(y,h,c,t,e,i):n(h,y,c,e,t,i);if(!(void 0===g?h===y||o(h,y,r,n,i):g)){p=!1;break}m||(m="constructor"==c)}if(p&&!m){var v=e.constructor,b=t.constructor;v==b||!("constructor"in e)||!("constructor"in t)||"function"==typeof v&&v instanceof v&&"function"==typeof b&&b instanceof b||(p=!1)}return i.delete(e),i.delete(t),p}(e,t,r,n,o,i))}function To(e,t,r,n,o){return e===t||(null==e||null==t||!y(e)&&!y(t)?e!=e&&t!=t:xo(e,t,r,n,To,o))}function Ao(e){return e==e&&!q(e)}function Eo(e,t){return function(r){return null!=r&&(r[e]===t&&(void 0!==t||e in Object(r)))}}function $o(e){var t=function(e){for(var t=G(e),r=t.length;r--;){var n=t[r],o=e[n];t[r]=[n,o,Ao(o)]}return t}(e);return 1==t.length&&t[0][2]?Eo(t[0][0],t[0][1]):function(r){return r===e||function(e,t,r,n){var o=r.length,i=o,l=!n;if(null==e)return!i;for(e=Object(e);o--;){var a=r[o];if(l&&a[2]?a[1]!==e[a[0]]:!(a[0]in e))return!1}for(;++o<i;){var u=(a=r[o])[0],s=e[u],c=a[1];if(l&&a[2]){if(void 0===s&&!(u in e))return!1}else{var d=new ze;if(n)var f=n(s,c,u,e,t,d);if(!(void 0===f?To(c,s,3,n,d):f))return!1}}return!0}(r,e,t)}}function Mo(e,t){return null!=e&&t in Object(e)}function No(e,t){return null!=e&&function(e,t,r){for(var n=-1,o=(t=Pe(t,e)).length,i=!1;++n<o;){var l=Ue(t[n]);if(!(i=null!=e&&r(e,l)))break;e=e[l]}return i||++n!=o?i:!!(o=null==e?0:e.length)&&$(o)&&E(l,o)&&(O(e)||k(e))}(e,t,Mo)}function Io(e){return Z(e)?(t=Ue(e),function(e){return null==e?void 0:e[t]}):function(e){return function(t){return Re(t,e)}}(e);var t}function Do(e){return"function"==typeof e?e:null==e?ur:"object"==typeof e?O(e)?function(e,t){return Z(e)&&Ao(t)?Eo(Ue(e),t):function(r){var n=Fe(r,e);return void 0===n&&n===t?No(r,e):To(t,n,3)}}(e[0],e[1]):$o(e):Io(e)}var Co,Lo=function(e,t,r){for(var n=-1,o=Object(e),i=r(e),l=i.length;l--;){var a=i[Co?l:++n];if(!1===t(o[a],a,o))break}return e};var Po=function(e,t){return function(r,n){if(null==r)return r;if(!Y(r))return e(r,n);for(var o=r.length,i=t?o:-1,l=Object(r);(t?i--:++i<o)&&!1!==n(l[i],i,l););return r}}(function(e,t){return e&&Lo(e,t,G)}),Uo=Po;function Ro(e,t){var r=-1,n=Y(e)?Array(e.length):[];return Uo(e,function(e,o,i){n[++r]=t(e,o,i)}),n}function Fo(e,t){return vr(e)&&vr(t)?function(e,t){if(e=e.replace(/\s+/g,""),t=t.replace(/\s+/g,""),!e.length&&!t.length)return 1;if(!e.length||!t.length)return 0;if(e===t)return 1;if(1===e.length&&1===t.length)return 0;if(e.length<2||t.length<2)return 0;let r=new Map;for(let t=0;t<e.length-1;t++){const n=e.substring(t,t+2),o=r.has(n)?r.get(n)+1:1;r.set(n,o)}let n=0;for(let e=0;e<t.length-1;e++){const o=t.substring(e,e+2),i=r.has(o)?r.get(o):0;i>0&&(r.set(o,i-1),n++)}return 2*n/(e.length+t.length-2)}(e,t):0}function zo(e){if(!(vr(e)||kr(e)||H(e)||function(e){return"[object BigInt]"===Object.prototype.toString.call(e)}(e)))return"";let t="";try{t=String(e)}catch(e){}try{t=e.toString()}catch(e){}return t}function Bo(e,t){let r="";if(vr(e)||kr(e))r=zo(e);else{if(!to(e))return{};o="",r=null==(n=e)?"":fo.call(n,o)}var n,o,i,l;return kr(t)&&(t=zo(t)),vr(t)&&(t=[t]),to(t)?(l=function(e){return zo(e)},function(e,t){let r=[],n=0;for(let o=0;o<t.length;o++){let i=t[o],l=Fo(e,i);r.push({target:i,rating:l}),l>r[n].rating&&(n=o)}return{ratings:r,bestMatch:r[n],bestMatchIndex:n}}(r,t=(O(i=t)?Ne:Ro)(i,Do(l)))):{}}function Vo(e){let t=null,n=sn(e,{fs:r});if(n.error)return n;let o=n.success,i=null;try{i=JSON.parse(o)}catch(e){t=e}return null!==t?{error:t}:{success:i}}function Ko(e,t){return vr(e)&&qr(t)?0===(t=zr(t))?e:Wr(e,e.length-t):""}function Jo(e){if(!vr(e))return{path:"",isRoot:!1};for(;e.indexOf("\\\\")>=0;)e=e.replace("\\\\","\\");for(;e.indexOf("//")>=0;)e=e.replace("//","/");if(":"===Yr(e,1))return{path:`${e}\\`,isRoot:!0};if("\\"===Yr(e,1)){let t=Ko(e,1);return":"===Yr(t,1)?{path:e,isRoot:!0}:{path:t,isRoot:!1}}if("/"===Yr(e,1)){let t=Ko(e,1);return 0===t.length?{path:e,isRoot:!0}:{path:t,isRoot:!1}}return{path:e,isRoot:!1}}function qo(e){if(!vr(e))return"";let t=Jo(e);if(t.isRoot)return t.path;let r=function(e){if(!vr(e))return"";let t=Jo(e);if(t.isRoot)return t.path;let r=t.path;try{r=r.split("\\").pop().split("/").pop()}catch(e){}return r}(e=t.path);if(!vr(r))return e;let n=Jo(e=Ko(e,r.length));return n.isRoot,n.path}function Wo(e,t={}){let r=Fe(t,"fs");if(!an(e,{fs:r}))return!1;let n=r.lstatSync(e);return!n.isFile()&&!n.isSymbolicLink()}function Yo(e,t,r={}){let n=null,o=Fe(r,"fs"),i=qo(e);Wo(i,{fs:o})||function(e,t={}){let r=Fe(t,"fs");if(Wo(e,{fs:r}))return{success:"input folder is already exists: "+e};if(an(e,{fs:r}))return{error:"input path already exists: "+e};try{r.mkdirSync(e,{recursive:!0})}catch(e){return{error:e}}}(i,{fs:o});try{o.writeFileSync(e,t,"utf8")}catch(e){n=e}return null!==n?{error:n}:{success:e}}function Go(e,t,n={}){let o=null;if(!yr(t)&&!Br(t))return{error:"inp is not an object or array"};let i=Fe(n,"useFormat",null);Rr(i)||(i=!1);let l="";try{l=i?JSON.stringify(t,null,2):JSON.stringify(t)}catch(e){o=e}return null!==o?{error:o}:Yo(e,l,{fs:r})}let Ho=2e4;function Xo(e){return Fe(Vo(e),"success",null)}function Qo(e){if(yr(e)){for(let t in e)return!0;return!1}return!1}function Zo(e,t){let r=String(e);for(let e of t)vr(e)&&e.length>=6&&(r=r.split(e).join("[REDACTED]"));return r}async function ei(e,t={}){let r=Date.now(),n=(e,t,n,o,i)=>({ok:e,status:t,data:n,error:o,errorType:i,durationMs:Date.now()-r});if(!vr(e))return n(!1,0,null,"url must be a non-empty string","params");let o=Fe(t,"headers",null);Qo(o)||(o={});let i=Fe(t,"method",null);vr(i)||(i="GET");let l=Fe(t,"body",null);Qo(l)?(l=JSON.stringify(l),vr(Fe(o,"Content-Type",null))||(o={...o,"Content-Type":"application/json"})):vr(l)||(l=null);let a=_n(Fe(t,"timeoutMs",null),Ho),u=_n(Fe(t,"maxBodyBytes",null),1048576),s=Fe(t,"redact",null);to(s)||(s=[]);let c=e=>Zo(e,s).slice(0,300),d=new AbortController,f=setTimeout(()=>{d.abort()},a),p=null,m="";try{try{p=await fetch(e,{method:i,headers:o,body:l,signal:d.signal})}catch(e){return"AbortError"===Fe(e,"name","")?n(!1,0,null,`request timeout over ${a}ms`,"timeout"):n(!1,0,null,`network error: ${Zo(Fe(e,"message","unknown"),s)}`,"network")}try{let e=await async function(e,t){let r=Number(e.headers.get("content-length")||0);if(r>t)return{ok:!1,text:"",bytes:r};let n=e.body;if(!n||"function"!=typeof n.getReader){let r=await e.text(),n=Buffer.byteLength(r);return n>t?{ok:!1,text:"",bytes:n}:{ok:!0,text:r,bytes:n}}let o=n.getReader(),i=[],l=0;for(;;){let{done:e,value:r}=await o.read();if(e)break;if(l+=r.byteLength,l>t){try{await o.cancel()}catch(e){}return{ok:!1,text:"",bytes:l}}i.push(Buffer.from(r))}return{ok:!0,text:Buffer.concat(i).toString("utf8"),bytes:l}}(p,u);if(!e.ok)return d.abort(),n(!1,p.status,null,`response body too large: ${e.bytes} bytes over limit ${u}`,"toolarge");m=e.text}catch(e){return"AbortError"===Fe(e,"name","")?n(!1,p.status,null,`request timeout over ${a}ms while reading body`,"timeout"):n(!1,p.status,null,`read body error: ${Zo(Fe(e,"message","unknown"),s)}`,"network")}}finally{clearTimeout(f)}if(401===p.status)return n(!1,p.status,null,`unauthorized(401), credential rejected (expired or revoked): ${c(m)}`,"auth");if(403===p.status)return n(!1,p.status,null,`forbidden(403), credential valid but this account has no access to the resource (plan does not include it, or the service no longer serves this account tier): ${c(m)}`,"forbidden");if(429===p.status)return n(!1,p.status,null,`rate limited(429) by usage endpoint: ${c(m)}`,"ratelimit");if(!p.ok)return n(!1,p.status,null,`http error(${p.status}): ${c(m)}`,"http");let h=null;try{h=JSON.parse(m)}catch(e){return n(!1,p.status,null,`invalid json: ${c(m)}`,"parse")}return n(!0,p.status,h,"","")}function ti(e){return!kr(e)||Fr(e)<=0?"":(e=Fr(e))%86400==0?e/86400+"天":e%3600==0?e/3600+"小時":e%60==0?e/60+"分鐘":`${e}秒`}function ri(e,t){if(!vr(t))return"";let r=ti(e);return""===r?t:`${r}(${t})`}function ni(e={}){let t=Fe(e,"key","");vr(t)||(t="");let r=Fe(e,"windowSeconds",null);r=kr(r)?Fr(r):null;let n=Fe(e,"label","");vr(n)||(n=ti(r));let o=Fe(e,"usedPercent",null);o=kr(o)?Math.min(100,Math.max(0,Fr(o))):null;let i=null;null!==o&&(i=Math.round(100*(100-o))/100);let l=Fe(e,"resetAt","");if(kr(l)&&Fr(l)>0)l=new Date(1e3*Fr(l)).toISOString();else if(vr(l)){let e=new Date(l);l=isNaN(e.getTime())?"":e.toISOString()}else l="";let a=Fe(e,"resetAfterSeconds",null);if(kr(a))a=Math.max(0,Math.round(Fr(a)));else if(a=null,""!==l){let e=Math.round((new Date(l).getTime()-Date.now())/1e3);a=Math.max(0,e)}""===l&&null!==a&&(l=new Date(Date.now()+1e3*a).toISOString());let u=Fe(e,"scope","");vr(u)||(u="");let s=Fe(e,"active",null);Rr(s)||(s=!1);let c=Fe(e,"severity","");return vr(c)||(c="",null!==o&&(c=o>=100?"exhausted":"normal")),{key:t,label:n,windowSeconds:r,usedPercent:o,remainingPercent:i,resetAt:l,resetAfterSeconds:a,scope:u,active:s,severity:c}}function oi(e,t={}){vr(e)||(e="");let r=Fe(t,"email","");vr(r)||(r="");let n=Fe(t,"emailWant","");vr(n)||(n="");let o=Fe(t,"error","");vr(o)||(o="");let i=Fe(t,"errorType","");vr(i)||(i="");let l=null;""!==n&&(""===r?(l=!1,""===o&&(o=`cannot determine the local ${e} login account, so it is unknown whether it is the requested account [${n}]`,i="account")):(l=r.trim().toLowerCase()===n.trim().toLowerCase(),l||""!==o||(o=`local ${e} login account is [${r}], which does not match the requested account [${n}]`,i="account")));let a=Fe(t,"windows",null);to(a)||(a=[]);let u=Fe(t,"plan","");vr(u)||(u="");let s=Fe(t,"planTier","");vr(s)||(s="");let c=Fe(t,"source","");return vr(c)||(c=""),{ok:""===o&&!1!==l,provider:e,email:r,matched:l,plan:u,planTier:s,source:c,windows:a,credits:Fe(t,"credits",null),raw:Fe(t,"raw",null),error:o,errorType:i,durationMs:Fe(t,"durationMs",0)}}let ii=604800,li=[["five_hour",18e3,""],["seven_day",ii,""],["seven_day_opus",ii,"Opus"],["seven_day_sonnet",ii,"Sonnet"],["seven_day_cowork",ii,"Cowork"],["seven_day_oauth_apps",ii,"OAuth apps"]],ai=["ANTHROPIC_API_KEY","CLAUDE_CODE_USE_BEDROCK","CLAUDE_CODE_USE_VERTEX"];function ui(e){let t=Fe(e,"group",""),r=null;"session"===t?r=18e3:"weekly"===t&&(r=ii);let n=[],o=Fe(e,"scope.model.display_name","");vr(o)&&n.push(o);let i=Fe(e,"scope.surface","");vr(i)&&n.push(i);let l=n.join("/");return ni({key:Fe(e,"kind",""),label:ri(r,l),windowSeconds:r,usedPercent:Fe(e,"percent",null),resetAt:Fe(e,"resets_at",""),scope:l,active:Fe(e,"is_active",!1),severity:Fe(e,"severity","")})}let{buildSpawnArgs:si,buildSpawnEnv:ci}=dn;async function di(t,r=[],n=[],o={}){let i=Date.now(),l=(e,t,r={})=>({ok:!1,results:{},responses:[],error:t,errorType:e,durationMs:Date.now()-i,exitCode:null,...r});if(!vr(t))return l("params","command 須為非空字串");if(Br(r)||(r=[]),!Br(n))return l("params","requests 須為陣列");for(let e=0;e<n.length;e++){let t=n[e];if(!yr(t)||!vr(t.method)&&!vr(t.notify))return l("params",`requests[${e}] 須為含method或notify之物件`)}yr(o)||(o={});let a=Fe(o,"timeoutMs");Jr(a)||(a=12e4);let u=Fe(o,"jsonrpc");!0===u&&(u="2.0"),vr(u)||(u=null);let s=Fe(o,"continueOnError");Rr(s)||(s=!1);let c=Fe(o,"onNotify"),d=Fe(o,"onServerRequest"),f=new Map,p=null,m=0,h={},y=[],g=(e,t,r)=>{let n={};return null!==u&&(n.jsonrpc=u),void 0!==e&&(n.id=e),n.method=t,void 0!==r&&(n.params=r),n},v=function(t,r=[],n={}){Br(r)||(r=[]),yr(n)||(n={});let o=Fe(n,"cwd");vr(o)||(o=process.cwd());let i=Fe(n,"env");yr(i)||(i=void 0);let l=Fe(n,"timeoutMs");l=Jr(l)?Math.min(l,br):null;let a=Fe(n,"exitGraceMs");qr(a)||(a=2e3),a=Math.min(a,br);let u=Fe(n,"killWaitMs");qr(u)||(u=3e3),u=Math.min(u,br);let s=Fe(n,"stderrKeep");qr(s)||(s=4e3);let c=Fe(n,"onLine"),d=Fe(n,"onStdout"),f=Fe(n,"onStderr"),p=Fe(n,"onExit"),m=Date.now(),h=!1,y=null,g=!1,v=!1,b=!1,w="",_="",k=null,O=null,j=null,S=wr(),x=null,T={pid:null,exited:!1,write:null,writeLine:null,stop:null},A=e=>{h||(h=!0,clearTimeout(k),clearTimeout(O),clearTimeout(j),y={code:null,signal:null,exited:!0,timeout:g,killed:v,error:"",stderr:w,durationMs:Date.now()-m,pid:T.pid,...e},T.exited=!0,Vr(p)&&p(y),S.resolve(y))},E=()=>x||(x=wr(),S.then(e=>{x.resolve(e)}),x);if(!vr(t))return T.write=async()=>!1,T.writeLine=async()=>!1,T.stop=E,setTimeout(()=>{A({error:"command 須為非空字串"})},1),T;let $,M=si(t,r);try{$=e.spawn(M.file,M.args,{cwd:o,stdio:["pipe","pipe","pipe"],windowsHide:!0,env:ci(i),...M.opt})}catch(e){return T.write=async()=>!1,T.writeLine=async()=>!1,T.stop=E,setTimeout(()=>{A({error:`${e.code||"UNKNOWN"}: ${e.message}`})},1),T}T.pid=$.pid||null;let N=new TextDecoder("utf-8"),I=new TextDecoder("utf-8"),D=(e,t)=>{_+=e;let r=_.indexOf("\n");for(;r>=0;){let e=_.slice(0,r);_=_.slice(r+1),e.endsWith("\r")&&(e=e.slice(0,-1)),Vr(c)&&c(e),r=_.indexOf("\n")}if(t&&""!==_){let e=_;_="",e.endsWith("\r")&&(e=e.slice(0,-1)),Vr(c)&&c(e)}},C=e=>{w=0!==s?(w+e).slice(-s):""};$.stdout.on("data",e=>{let t=N.decode(e,{stream:!0});t&&(Vr(d)&&d(t),D(t,!1))}),$.stderr.on("data",e=>{let t=I.decode(e,{stream:!0});t&&(Vr(f)&&f(t),C(t))}),$.stdin.on("error",()=>{});let L=e=>{v=!0,ln($.pid).catch(()=>{}),j=setTimeout(()=>{h||A({code:null,exited:!1,error:e})},u)};return null!==l&&(k=setTimeout(()=>{h||(g=!0,L(`TIMEOUT after ${l/1e3}s(子進程未能結束)`))},l)),$.on("error",e=>{A({error:`${e.code||"UNKNOWN"}: ${e.message}`})}),$.on("close",(e,t)=>{if(h)return;let r=N.decode();r&&(Vr(d)&&d(r),D(r,!1)),D("",!0);let n=I.decode();n&&(Vr(f)&&f(n),C(n));let o="";g?o=`TIMEOUT after ${l/1e3}s`:v||(t?o=`Signal: ${t}`:0!==e&&(o=`Exit code ${e}`)),A({code:e,signal:t,error:o})}),T.write=e=>{let t=wr();if(h||b||$.stdin.destroyed||!$.stdin.writable)return t.resolve(!1),t;try{$.stdin.write(String(e),"utf8",e=>{t.resolve(!e)})}catch{t.resolve(!1)}return t},T.writeLine=e=>T.write(String(e)+"\n"),T.stop=()=>{if(x)return x;if(x=wr(),h)return x.resolve(y),x;b=!0;try{$.stdin.end()}catch{}return O=setTimeout(()=>{h||L("STOP_TIMEOUT(子進程未能結束)")},a),S.then(e=>{x.resolve(e)}),x},T}(t,r,{cwd:Fe(o,"cwd"),env:Fe(o,"env"),timeoutMs:a,exitGraceMs:Fe(o,"exitGraceMs"),onStderr:Fe(o,"onStderr"),onLine:e=>{if(""===(e=e.trim()))return;let t;try{t=JSON.parse(e)}catch{return}if(!yr(t))return;let r=void 0!==t.id&&null!==t.id;if(r&&("result"in t||"error"in t)){let e=f.get(t.id);return void(e&&(f.delete(t.id),e.pm.resolve({msg:t})))}r&&vr(t.method)?Vr(d)&&d(t,v):Vr(c)&&c(t)},onExit:e=>{p=e;for(let[t,r]of f)r.pm.resolve({exit:e});f.clear()}}),b=(e,t)=>{let r="exit";e.timeout?r="timeout":vr(e.error)&&e.error.includes("ENOENT")&&(r="notfound");let n=vr(e.error)?e.error:`子進程於回應前結束(code ${e.code})`;return l(r,`${t}: ${n}`,{results:h,responses:y,exitCode:e.code})},w=null;for(let e of n){if(!vr(e.method)){if(!await v.writeLine(JSON.stringify(g(void 0,e.notify,e.params)))){w=b(p||await v.stop(),e.notify);break}continue}let t=m;m+=1;let r=wr();if(f.set(t,{method:e.method,pm:r}),!await v.writeLine(JSON.stringify(g(t,e.method,e.params)))){f.delete(t),w=b(p||await v.stop(),e.method);break}let n=await r;if(n.exit){w=b(n.exit,e.method);break}let o=n.msg;if("error"in o&&null!==o.error&&void 0!==o.error){if(h[e.method]=null,y.push({id:t,method:e.method,result:null,error:o.error}),!s){let t=Fe(o,"error.message");w=l("rpc",`${e.method}: ${vr(t)?t:JSON.stringify(o.error)}`,{results:h,responses:y});break}}else h[e.method]=o.result,y.push({id:t,method:e.method,result:o.result,error:null})}let _=await v.stop();if(w)return w.durationMs=Date.now()-i,null===w.exitCode&&(w.exitCode=_.code),w;let k=y.filter(e=>null!==e.error);if(k.length>0){let e=k[0],t=Fe(e,"error.message");return{ok:!1,results:h,responses:y,error:`${e.method}: ${vr(t)?t:JSON.stringify(e.error)}`,errorType:"rpc",durationMs:Date.now()-i,exitCode:_.code}}return{ok:!0,results:h,responses:y,error:"",errorType:"",durationMs:Date.now()-i,exitCode:_.code}}function fi(e,t){for(let r of t){let t=Fe(e,r,"");if(vr(t))return t}return""}function pi(e,t,r){if(!Qo(e))return null;let n=Fe(e,"limit_window_seconds",null),o=kr(n)?Fr(n):null;return ni({key:t,label:ri(o,r),windowSeconds:o,usedPercent:Fe(e,"used_percent",null),resetAt:Fe(e,"reset_at",""),resetAfterSeconds:Fe(e,"reset_after_seconds",null),scope:r})}function mi(e,t,r){for(let n of[e,Fe(e,"rate_limit",null),Fe(e,"rateLimit",null)]){if(!Qo(n))continue;let e=Fe(n,t,null);if(Qo(e)||(e=Fe(n,r,null)),Qo(e))return e}return null}function hi(e){if(!Qo(e))return null;if(void 0!==Fe(e,"used_percent",void 0))return e;let t=Fe(e,"window",null);if(Qo(t))return t;let r=Fe(e,"rate_limit",null);return Qo(r)&&void 0!==Fe(r,"used_percent",void 0)?r:null}function yi(e){let t=fi(e,["email"]),r=fi(e,["plan_type"]),n=[];for(let t of["primary","secondary"]){let r=pi(Fe(e,`rate_limit.${t}_window`,null),t,"");null!==r&&n.push(r)}for(let t of["primary","secondary"]){let r=pi(Fe(e,`code_review_rate_limit.${t}_window`,null),`code_review:${t}`,"code review");null!==r&&n.push(r)}let o=function(e){let t=[Fe(e,"additional_rate_limits",null),Fe(e,"rate_limit.additional_rate_limits",null)];for(let e of t){if(to(e))return e;if(Qo(e))return Object.keys(e).map(t=>{let r=e[t];if(!Qo(r))return r;let n=fi(r,["limit_name","name","id"]);return{...r,limit_name:""===n?t:n}})}return[]}(e);for(let e=0;e<o.length;e++){let t=o[e];if(!Qo(t))continue;let r=fi(t,["limit_name","metered_limit_name","name","id"]);""===r&&(r=`additional_${e+1}`);let i=fi(t,["display_name","title","name","limit_name","metered_limit_name"]),l=""===i?r:i,a=`${r} ${i}`.toLowerCase(),u=mi(t,"primary_window","primaryWindow"),s=mi(t,"secondary_window","secondaryWindow");if(null===u&&null===s){let e=hi(t);if(null!==e){let t=Fe(e,"limit_window_seconds",null);/weekly|secondary|reserve/.test(a)||kr(t)&&Fr(t)>=518400?s=e:u=e}}let c=pi(u,`${r}:primary`,l);null!==c&&n.push(c);let d=pi(s,`${r}:secondary`,l);null!==d&&n.push(d)}return{email:t,plan:r,windows:n,credits:{hasCredits:Fe(e,"credits.has_credits",!1),unlimited:Fe(e,"credits.unlimited",!1),balance:Fe(e,"credits.balance",""),resetCreditsAvailable:Fe(e,"rate_limit_reset_credits.available_count",null),spendControlReached:Fe(e,"spend_control.reached",!1),rateLimitReachedType:Fe(e,"rate_limit_reached_type",null),individualLimit:Fe(e,"spend_control.individual_limit",null)}}}let gi=[{method:"initialize",params:{clientInfo:{name:"w-dispatch-ai",title:"w-dispatch-ai",version:"1.0.0"}}},{notify:"initialized",params:{}},{method:"account/read",params:{}},{method:"account/rateLimits/read",params:{}}];function vi(e,t,r){if(!Qo(e))return null;let n=Fe(e,"windowDurationMins",null),o=kr(n)?60*Fr(n):null;return ni({key:t,label:ri(o,r),windowSeconds:o,usedPercent:Fe(e,"usedPercent",null),resetAt:Fe(e,"resetsAt",""),scope:r})}async function bi(e,r,n){let o=Fe(e,"env",null);yr(o)||(o=process.env);let i=t.join(r,"auth.json"),l=Xo(i),a=Fe(l,"tokens.access_token",""),u=Fe(l,"tokens.account_id",""),s="",c="",d=Fe(l,"tokens.id_token","");if(vr(d)){let e=function(e){try{let t=e.split(".");return t.length<2?null:JSON.parse(Buffer.from(t[1],"base64url").toString("utf8"))}catch(e){return null}}(d),t=Fe(e,"email","");vr(t)&&(s=t);let r=Fe(e,["https://api.openai.com/auth","chatgpt_plan_type"],"");vr(r)&&(c=r)}if(!vr(a)){return vr(Fe(l,"OPENAI_API_KEY",""))||vr(Fe(o,"OPENAI_API_KEY",""))?{ok:!1,email:s,plan:c,error:"codex is running in API key mode (auth.json has OPENAI_API_KEY but no tokens); this mode is billed by usage and has no subscription quota windows",errorType:"unsupported"}:{ok:!1,email:s,plan:c,error:`Codex CLI credential not found (${i}); run [codex login] first`,errorType:"notfound"}}let f=Fe(e,"userAgent",null);vr(f)||(f="codex-cli/0.153.0");let p=Fe(e,"originator",null);vr(p)||(p="codex_cli_rs");let m={Authorization:`Bearer ${a}`,"User-Agent":f,originator:p};vr(u)&&(m["ChatGPT-Account-ID"]=u);let h=Fe(e,"usageUrl",null);vr(h)||(h="https://chatgpt.com/backend-api/wham/usage");let y=await ei(h,{headers:m,timeoutMs:n,redact:[a,u]});if(!y.ok){let e=y.error;return"auth"===y.errorType&&(e=`${e} → codex refreshes the token on every run; run any codex command then retry, and only fall back to [codex login] if it still fails`),{ok:!1,email:s,plan:c,error:e,errorType:y.errorType}}let g=yi(y.data);return vr(g.email)&&(s=g.email),vr(g.plan)&&(c=g.plan),{ok:!0,email:s,plan:c,windows:g.windows,credits:g.credits,raw:{usage:y.data}}}function wi(e){if(!vr(e))return null;let t=e.match(/(\d+)\.(\d+)\.(\d+)/);return t?[Number(t[1]),Number(t[2]),Number(t[3])]:null}let _i="1.1.11",ki={"5h":18e3,five_hour:18e3,"five-hour":18e3,weekly:604800,week:604800,daily:86400,day:86400};function Oi(e,t){let r=Fe(t,"id","");if(!vr(r))return null;let n=Fe(t,"remaining_fraction",null),o=null;kr(n)&&(o=Math.round(100*(1-Fr(n))*100)/100);let i=Fe(e,"name","");vr(i)||(i="");let l=function(e){if(!vr(e))return null;let t=e.trim().toLowerCase();if(void 0!==ki[t])return ki[t];let r=t.match(/^(\d+)\s*(h|hr|hour|hours|d|day|days|m|min|minutes)$/);if(!r)return null;let n=Number(r[1]);return/^h/.test(r[2])?3600*n:/^d/.test(r[2])?86400*n:60*n}(Fe(t,"window","")),a=ti(l);""===a&&(a=Fe(t,"name",""),vr(a)||(a=r));let u=""===i?a:`${a}(${i})`,s="normal";return!0===Fe(t,"disabled",!1)?s="disabled":null!==o&&o>=100&&(s="exhausted"),ni({key:r,label:u,windowSeconds:l,usedPercent:o,resetAt:Fe(t,"reset_time",""),scope:i,active:!1,severity:s})}async function ji(e,t,r){let n=[];vr(r.logFile)&&n.push("--log-file",r.logFile),n.push("-p",t,"--output-format","json","--print-timeout",`${Math.max(5,Math.ceil(r.timeoutMs/1e3))}s`);let o=await yn(e,n,{timeoutMs:r.timeoutMs,cwd:r.cwd}),i=String(Fe(o,"stdout","")).trim().split("\n").map(e=>e.trim()).filter(e=>""!==e).pop()||"",l=null;try{l=JSON.parse(i)}catch(e){}if(!o.ok){let e=String(Fe(o,"stderr","")).trim().slice(-300),r=/timeout/i.test(Fe(o,"error",""))?"timeout":"exit";return/not logged in|login|sign in|authenticate/i.test(e)&&(r="auth"),{ok:!1,data:null,response:"",stderr:e,error:`agy ${t} failed: ${Fe(o,"error","")}${e?` | stderr: ${e}`:""}`,errorType:r,code:Fe(o,"code",null)}}if(null===l)return{ok:!1,data:null,response:"",stderr:"",error:`agy ${t} stdout is not JSON: ${i.slice(0,200)}`,errorType:"parse",code:o.code};let a=Fe(l,"num_turns",0);return!vr(Fe(l,"command.name",""))||kr(a)&&Fr(a)>0?{ok:!1,data:null,response:Fe(l,"response",""),stderr:"",error:`agy did not handle ${t} as a slash command (num_turns=${a}); version may be below ${_i} or --disable-slash-commands is set; this call may have consumed quota`,errorType:"unsupported",code:o.code}:"SUCCESS"!==Fe(l,"status","")?{ok:!1,data:Fe(l,"command.data",null),response:Fe(l,"response",""),stderr:"",error:`agy ${t} reported status=${Fe(l,"status","")}: ${String(Fe(l,"response","")).slice(0,200)}`,errorType:"exit",code:o.code}:{ok:!0,data:Fe(l,"command.data",null),response:Fe(l,"response",""),stderr:"",error:"",errorType:"",code:o.code,raw:l}}let Si={KINDS:G(Bn),NO_SIDE_EFFECT:no,dispatchAi:Wn,dispatchAiFallback:Zn,dispatchAiWkf:function(e={}){let t=Fe(e,"providers",null);if(!yr(t))throw new Error("dispatchAiWkf: opt.providers must be an object (name → provider entry)");let r=Fe(e,"defaults",null);return yr(r)||(r={}),{providers:t,callAi:(e,n={})=>io(e,{...r,...n,providers:t}),runFanout:(e={})=>lo({...e,providers:t,callOpt:{...r,...Fe(e,"callOpt",{})}}),runRolePipeline:(e={})=>uo({...e,providers:t,callOpt:{...r,...Fe(e,"callOpt",{})}}),runFanoutPipeline:(e={})=>async function(e={}){let t=Date.now(),r=await lo(hr(e,so));if(!r.ok)return{ok:!1,result:null,A:r,B:null,totalMs:Date.now()-t,error:`A failed: ${r.error}`};let n=await uo({...hr(e,co),input:r.result});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,...Fe(e,"callOpt",{})}})}},dispatchOpencode:jn,dispatchClaude:xn,dispatchCodex:An,dispatchAntigravity:Mn,dispatchApiOpenaiCompat:Ln,dispatchApiOpenaiResponses:zn,providers:[{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:"oc:opencode/muse-spark-1.2-contributor-free",model:"opencode/muse-spark-1.2-contributor-free",kind:"opencode",envVar:"OPENCODE_KEYS",provider:"opencode",config:{permission:{edit:"deny",write:"deny",bash:"deny"}}},{id:"oc:opencode/muse-spark-1.3-contributor-free",model:"opencode/muse-spark-1.3-contributor-free",kind:"opencode",envVar:"OPENCODE_KEYS",provider:"opencode",config:{permission:{edit:"deny",write:"deny",bash:"deny"}}},{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:"agy:gemini-3.8-flash-high",model:"gemini-3.8-flash-high",kind:"antigravity",addDirs:["."],skipPermissions:!1},{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:"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}}},{id:"zen:laguna-s-2.1-free",model:"laguna-s-2.1-free",kind:"api-openai-compat",envVar:"OPENCODE_KEYS",baseURL:"https://opencode.ai/zen/v1",body:{max_tokens:8192}},{id:"zen:muse-spark-1.2-contributor-free",model:"muse-spark-1.2-contributor-free",kind:"api-openai-responses",envVar:"OPENCODE_KEYS",baseURL:"https://opencode.ai/zen/v1",body:{max_output_tokens:8192}},{id:"zen:muse-spark-1.3-contributor-free",model:"muse-spark-1.3-contributor-free",kind:"api-openai-responses",envVar:"OPENCODE_KEYS",baseURL:"https://opencode.ai/zen/v1",body:{max_output_tokens:8192}},{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:"zen:mimo-v2.5-free",model:"mimo-v2.5-free",kind:"api-openai-compat",envVar:"OPENCODE_KEYS",baseURL:"https://opencode.ai/zen/v1",body:{max_tokens:8192}},{id:"zen:ling-3.0-flash-fin-free",model:"ling-3.0-flash-fin-free",kind:"api-openai-compat",envVar:"OPENCODE_KEYS",baseURL:"https://opencode.ai/zen/v1",body:{max_tokens:8192}},{id:"zen:nemotron-3-ultra-free",model:"nemotron-3-ultra-free",kind:"api-openai-compat",envVar:"OPENCODE_KEYS",baseURL:"https://opencode.ai/zen/v1",body:{max_tokens:8192}},{id:"zen:nemotron-3.5-lightning-free",model:"nemotron-3.5-lightning-free",kind:"api-openai-compat",envVar:"OPENCODE_KEYS",baseURL:"https://opencode.ai/zen/v1",body:{max_tokens:8192}}],resolveProviders:function(e,t={}){let r=Fe(t,"env",null);yr(r)||(r="undefined"!=typeof process&&process&&yr(process.env)?process.env:{});let n=Br(e)?e.filter(yr):[],o=Fe(t,"pick",null),i=[],l=n;if(to(o)){l=[];for(let e of o){let t=n.find(t=>Fe(t,"id",null)===e);t?l.push(t):i.push(String(e))}}let a={};if(i.length>0){let e=n.map(e=>Fe(e,"id",null)).filter(vr);for(let t of i)a[t]=e.length>0?Fe(Bo(t,e),"bestMatch.target",null):null}let u=[],s=[];for(let e of l){let t=Fe(e,"envVar",null);if(!vr(t)||to(Fe(e,"keys",null))){u.push(hr(e,["envVar"]));continue}let n=String(Fe(r,t,"")||"").split(",").map(e=>e.trim()).filter(Boolean);0!==n.length?u.push({...hr(e,["envVar"]),keys:n}):s.push({id:Fe(e,"id",""),envVar:t})}let c=Fe(t,"exes",null),d=Fe(t,"patch",null);(yr(c)||yr(d))&&(u=u.map(e=>{let t=e,r=yr(c)?Fe(c,Fe(t,"kind",""),null):null;vr(r)&&!vr(Fe(t,"exe",null))&&(t={...t,exe:r});let n=yr(d)?Fe(d,Fe(t,"id",""),null):null;return yr(n)&&(t={...t,...n}),t}));let f={};for(let e of u)f[e.id]=e;return{providers:u,table:f,skipped:s,missing:i,hints:a}},readEnvFile:function(e){let t={},n="";try{n=r.readFileSync(e,"utf8")}catch(e){return t}for(let e of n.split(/\r?\n/)){let r=e.match(/^\s*([A-Za-z0-9_]+)\s*=\s*(.*)$/);r&&(t[r[1]]=r[2].trim().replace(/^(["'])(.*)\1$/,"$2"))}return t},budgetFor:function(e){if(!Br(e))return 0;let t=0;for(let r of e)t+=_n(Fe(r,"timeoutMs",null),kn);return t},createFileStore:function(e={}){let r=Fe(e,"file",null);if(!vr(r)){let n=Fe(e,"dir",null);if(!vr(n))throw new Error("createFileStore: file or dir is required");let o=Fe(e,"name",null);r=t.join(n,vr(o)?o:"ai-cursor.json")}let n=Fe(e,"ownKeys",null);to(n)||(n=["at"]);let o=Fe(e,"stamp",null);return Vr(o)||(o=()=>(new Date).toISOString()),{file:r,get:()=>{let e=Vo(r),t=void 0!==Fe(e,"error",void 0)?null:Fe(e,"success",null);if(!yr(t))return{};let o={...t};for(let e of n)delete o[e];return o},set:e=>{let t={...yr(e)?e:{},at:o()};Go(r,t,{useFormat:!0})}}},createUsageCounter:function(e={}){let r=Fe(e,"file",null);if(!vr(r)){let n=Fe(e,"dir",null);if(!vr(n))throw new Error("createUsageCounter: file or dir is required");let o=Fe(e,"name",null);r=t.join(n,vr(o)?o:"ai-usage.json")}let n=Fe(e,"getDate",null);Vr(n)||(n=()=>{let e=new Date,t=e=>String(e).padStart(2,"0");return`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())}`});let o=Fe(e,"keepDays",null);Jr(o)||(o=14);let i=Fe(e,"keyOf",null);Vr(i)||(i=e=>Fe(e,"keyId",null)||Fe(e,"providerId",""));let l=()=>{let e=Vo(r),t=void 0!==Fe(e,"error",void 0)?null:Fe(e,"success",null);return yr(t)?t:{}},a=(e,t=1)=>{if(!vr(e))return;let i=l(),a=n(),u=yr(i[a])?i[a]:{};u[e]=(Number(u[e])||0)+t,i[a]=u;let s=Object.keys(i).sort().slice(-o),c={};for(let e of s)c[e]=i[e];Go(r,c,{useFormat:!0})};return{file:r,onEvent:e=>{"try"===Fe(e,"type",null)&&a(i(e))},bump:a,today:()=>{let e=l(),t=n(),r=yr(e[t])?e[t]:{};return{today:t,byKey:r,total:Object.values(r).reduce((e,t)=>e+(Number(t)||0),0)}}}},salvageTruncatedArray:function(e){let t=String(e||""),r=t.indexOf("[");if(r<0)return null;let n=0,o=!1,i=!1,l=-1;for(let e=r;e<t.length;e++){let r=t[e];if(i)i=!1;else if(o)"\\"===r?i=!0:'"'===r&&(o=!1);else if('"'!==r){if("["===r||"{"===r)n++;else if(("]"===r||"}"===r)&&(n--,1===n&&"}"===r&&(l=e),0===n))return null}else o=!0}if(l<0)return null;try{let e=JSON.parse(t.slice(r,l+1)+"]");return Array.isArray(e)&&e.length>0?e:null}catch(e){return null}},getQuotaClaude:async function(e="",r={}){let o=Date.now(),i=vr(e)?e:"",l=Fe(r,"env",null);yr(l)||(l=process.env);let a=Fe(r,"homeDir",null);vr(a)||(a=n.homedir());let u=Fe(r,"configDir",null),s=!0;vr(u)||(u=Fe(l,"CLAUDE_CONFIG_DIR",""),vr(u)||(u=t.join(a,".claude"),s=!1));let c=t.join(u,".credentials.json"),d=s?t.join(u,".claude.json"):t.join(a,".claude.json"),f=_n(Fe(r,"timeoutMs",null),Ho),p=Fe(r,"userAgent",null);vr(p)||(p="claude-code/2.1.259");let m=!1!==Fe(r,"profileFallback",!0),h=Fe(r,"usageUrl",null);vr(h)||(h="https://api.anthropic.com/api/oauth/usage");let y=Fe(r,"profileUrl",null);vr(y)||(y="https://api.anthropic.com/api/oauth/profile");let g=Xo(c),v=Xo(d),b=Fe(g,"claudeAiOauth.accessToken",""),w=Fe(v,"oauthAccount.emailAddress","");vr(w)||(w="");let _=Fe(g,"claudeAiOauth.subscriptionType","");vr(_)||(_=Fe(v,"oauthAccount.organizationType",""),vr(_)||(_=""));let k=Fe(g,"claudeAiOauth.rateLimitTier","");vr(k)||(k=Fe(v,"oauthAccount.organizationRateLimitTier",""),vr(k)||(k=""));let O=e=>oi("claude",{email:w,emailWant:i,plan:_,planTier:k,source:"anthropic-oauth-usage-api",durationMs:Date.now()-o,...e});if(!vr(b)){let e=ai.filter(e=>vr(Fe(l,e,"")));return e.length>0?O({error:`Claude Code is running in non-subscription mode (env ${e.join(", ")} is set); this mode is billed by usage and has no 5-hour/7-day subscription quota windows`,errorType:"unsupported"}):O({error:`Claude Code credential not found (${c}); run [claude auth login] first (with the same CLAUDE_CONFIG_DIR if this config dir is relocated). On macOS the credential lives in Keychain instead of this file, which this function cannot read.${vr(Fe(l,"CLAUDE_CODE_OAUTH_TOKEN",""))?" Env CLAUDE_CODE_OAUTH_TOKEN is set but is ignored here: a setup-token lacks the user:profile scope the usage endpoint requires, so only a stored login can be queried.":""}`,errorType:"notfound"})}let j={Authorization:`Bearer ${b}`,"anthropic-beta":"oauth-2025-04-20","User-Agent":p,"Content-Type":"application/json"},S=await ei(h,{headers:j,timeoutMs:f,redact:[b]});if(!S.ok){let e=S.error;if("auth"===S.errorType){let t=Fe(g,"claudeAiOauth.expiresAt",null),r="run any claude command (just open claude) so Claude Code refreshes the token itself, then retry; re-login is not needed, the stored refresh token is still valid and only has to be used by Claude Code";e=`${e} ${kr(t)?`(local recorded expiry: ${new Date(t).toISOString()})`:""} → ${r}`}return"forbidden"===S.errorType&&/oauth_not_allowed_for_organization/.test(e)&&(e=`this account's organization disallows OAuth usage queries (oauth_not_allowed_for_organization); subscription quota must be viewed by an org admin in the console: ${e}`),O({error:e,errorType:S.errorType})}let x=S.data;if(""===w&&m){let e=await ei(y,{headers:j,timeoutMs:f,redact:[b]});if(e.ok)for(let t of["account.email","account.email_address","email","email_address"]){let r=Fe(e.data,t,"");if(vr(r)){w=r;break}}}let T=[],A=Fe(x,"limits",null);return T=to(A)?A.map(ui):li.map(([e,t,r])=>function(e,t,r,n){let o=Fe(e,t,null);return null==o?null:ni({key:t,label:ri(r,n),windowSeconds:r,usedPercent:Fe(o,"utilization",null),resetAt:Fe(o,"resets_at",""),scope:n})}(x,e,t,r)).filter(e=>null!==e),O({windows:T,credits:{extraUsageEnabled:Fe(x,"extra_usage.is_enabled",!1),monthlyLimit:Fe(x,"extra_usage.monthly_limit",null),usedCredits:Fe(x,"extra_usage.used_credits",null),utilization:Fe(x,"extra_usage.utilization",null),spendUsedMinor:Fe(x,"spend.used.amount_minor",null),spendCurrency:Fe(x,"spend.used.currency",""),spendPercent:Fe(x,"spend.percent",null)},raw:{configDir:u,usage:x}})},getQuotaCodex:async function(e="",r={}){let o=Date.now(),i=vr(e)?e:"",l=Fe(r,"env",null);yr(l)||(l=process.env);let a=Fe(r,"homeDir",null);vr(a)||(a=n.homedir());let u=Fe(r,"codexHome",null);vr(u)||(u=Fe(l,"CODEX_HOME",""),vr(u)||(u=t.join(a,".codex")));let s=_n(Fe(r,"timeoutMs",null),Ho),c=!1!==Fe(r,"useAppServer",!0),d=!1!==Fe(r,"fallbackHttp",!0),f=(e,t)=>oi("codex",{emailWant:i,source:e,durationMs:Date.now()-o,...t}),p=null;if(c){let e=await async function(e){let t=Fe(e,"exe",null);vr(t)||(t="codex");let r=await di(t,["app-server","--stdio"],gi,{timeoutMs:Fe(e,"timeoutMs",null)});if(!r.ok)return{ok:!1,error:r.error,errorType:r.errorType,raw:{appServer:{error:r.error,errorType:r.errorType,exitCode:r.exitCode,responses:r.responses}}};let n=Fe(r.results,["account/read","account"],null),o=Fe(r.results,["account/rateLimits/read"],null);if(!Qo(n))return{ok:!1,notLoggedIn:!0,error:"codex app-server reports not logged in (account is null); run [codex login] first",errorType:"notfound",raw:{appServer:r.results}};let i=Fe(n,"email",""),l=Fe(n,"planType",""),a=Fe(n,"type","");if(vr(a)&&"chatgpt"!==a)return{ok:!1,email:i,plan:l,accountType:a,error:`codex is logged in with [${a}] mode; this mode is billed by usage and has no 5-hour/7-day subscription quota windows`,errorType:"unsupported",raw:{appServer:r.results}};let u=[],s=Fe(o,"rateLimits",null),c=Fe(s,"limitId","codex"),d=vi(Fe(s,"primary",null),"primary","");null!==d&&u.push(d);let f=vi(Fe(s,"secondary",null),"secondary","");null!==f&&u.push(f);let p=Fe(o,"rateLimitsByLimitId",null);if(Qo(p))for(let e of Object.keys(p)){if(e===c)continue;let t=p[e],r=Fe(t,"limitName","");vr(r)||(r=e);for(let n of["primary","secondary"]){let o=vi(Fe(t,n,null),`${e}:${n}`,r);null!==o&&u.push(o)}}let m={hasCredits:Fe(s,"credits.hasCredits",!1),unlimited:Fe(s,"credits.unlimited",!1),balance:Fe(s,"credits.balance",""),resetCreditsAvailable:Fe(o,"rateLimitResetCredits.availableCount",null),resetCredits:Fe(o,"rateLimitResetCredits.credits",null),spendControlReached:Fe(s,"spendControlReached",!1),rateLimitReachedType:Fe(s,"rateLimitReachedType",null),individualLimit:Fe(s,"individualLimit",null)};return vr(l)||(l=Fe(s,"planType","")),{ok:!0,email:i,plan:l,accountType:a,windows:u,credits:m,raw:{appServer:r.results}}}({...r,timeoutMs:s});if(e.ok)return f("codex-app-server",{email:e.email,plan:e.plan,windows:e.windows,credits:e.credits,raw:{accountType:e.accountType,...e.raw}});if("unsupported"===e.errorType||!0===e.notLoggedIn)return f("codex-app-server",{email:e.email,plan:e.plan,error:e.error,errorType:e.errorType,raw:e.raw});if(p=e,!d)return f("codex-app-server",{error:e.error,errorType:e.errorType,raw:e.raw})}let m=await bi(r,u,s),h=null!==p?` (app-server path failed: ${p.error})`:"";return m.ok?f("chatgpt-wham-usage-api",{email:m.email,plan:m.plan,windows:m.windows,credits:m.credits,raw:{codexHome:u,appServerError:null!==p?p.error:"",...m.raw}}):f("chatgpt-wham-usage-api",{email:m.email,plan:m.plan,error:`${m.error}${h}`,errorType:m.errorType,raw:null!==p?p.raw:null})},getQuotaAntigravity:async function(e="",i={}){let l=Date.now(),a=vr(e)?e:"",u=Fe(i,"exe",null);vr(u)||(u="agy");let s=_n(Fe(i,"timeoutMs",null),6e4),c=Fe(i,"cwd",null);vr(c)||(c=n.tmpdir());let d=!1!==Fe(i,"checkVersion",!0),f=Fe(i,"withCredits",null);Rr(f)||(f=!1);let p=e=>oi("antigravity",{emailWant:a,source:"agy-print-usage",durationMs:Date.now()-l,...e}),m="";if(d){let e=await yn(u,["--version"],{timeoutMs:Math.min(s,15e3),cwd:c});if(!e.ok)return p({error:`agy not found or not executable (${u}): ${Fe(e,"error","")}${String(Fe(e,"stderr","")).trim()?` | ${String(e.stderr).trim().slice(-200)}`:""}; see https://antigravity.google/docs/cli/ for install and login`,errorType:"notfound"});m=String(Fe(e,"stdout","")).trim().split("\n")[0];let t=function(e,t){let r=wi(e),n=wi(t);if(null===r||null===n)return null;for(let e=0;e<3;e++){if(r[e]>n[e])return 1;if(r[e]<n[e])return-1}return 0}(m,_i);if(null===t||t<0)return p({error:`agy version [${m||"unknown"}] is below ${_i}; its print mode cannot run /usage non-interactively (it would treat it as a prompt and consume quota); run [agy update]`,errorType:"unsupported",raw:{version:m}})}let h=t.join(n.tmpdir(),`w-dispatch-ai-agy-${process.pid}-${o.randomBytes(4).toString("hex")}.log`),y=null,g=null,v="",b="";try{y=await ji(u,"/usage",{timeoutMs:s,cwd:c,logFile:h});let e="";try{e=r.readFileSync(h,"utf8")}catch(e){}let t=e.match(/applyAuthResult: email=([^,\s]+), authMethod=(\w+)/);if(t)v=t[1],b=t[2];else{let t=e.match(/authenticated successfully as (\S+)/);t&&(v=t[1])}y.ok&&f&&(g=await ji(u,"/credits",{timeoutMs:s,cwd:c,logFile:""}))}finally{try{r.unlinkSync(h)}catch(e){}}if(!y.ok)return p({email:v,error:y.error,errorType:y.errorType,raw:{version:m,authMethod:b,response:y.response,stderr:y.stderr}});let w=[],_=Fe(y.data,"groups",null);if(to(_))for(let e of _){let t=Fe(e,"buckets",null);if(to(t))for(let r of t){let t=Oi(e,r);null!==t&&w.push(t)}}let k=null;return null!==g&&(k=g.ok?{remainingCredits:Fe(g.data,"remaining_credits",null),upgradeUri:Fe(g.data,"upgrade_uri","")}:{error:g.error}),p({email:v,windows:w,credits:k,raw:{version:m,authMethod:b,description:Fe(y.data,"description",""),usage:y.raw,credits:null!==g?Fe(g,"raw",null):null}})}};return Si});
|
|
6
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("child_process"),require("path"),require("fs"),require("os"),require("crypto")):"function"==typeof define&&define.amd?define(["child_process","path","fs","os","crypto"],t):(e="undefined"!=typeof globalThis?globalThis:e||self)["w-dispatch-ai"]=t(e.child_process,e.path,e.fs,e.os,e.crypto)}(this,function(e,t,r,n,o){"use strict";var i="object"==typeof global&&global&&global.Object===Object&&global,l="object"==typeof self&&self&&self.Object===Object&&self,a=i||l||Function("return this")(),u=a.Symbol,s=Object.prototype,c=s.hasOwnProperty,d=s.toString,f=u?u.toStringTag:void 0;var p=Object.prototype.toString;var m=u?u.toStringTag:void 0;function h(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":m&&m in Object(e)?function(e){var t=c.call(e,f),r=e[f];try{e[f]=void 0;var n=!0}catch(e){}var o=d.call(e);return n&&(t?e[f]=r:delete e[f]),o}(e):function(e){return p.call(e)}(e)}function y(e){return null!=e&&"object"==typeof e}function g(e){return y(e)&&"[object Arguments]"==h(e)}var v=Object.prototype,b=v.hasOwnProperty,w=v.propertyIsEnumerable,_=g(function(){return arguments}())?g:function(e){return y(e)&&b.call(e,"callee")&&!w.call(e,"callee")},k=_,O=Array.isArray;var j="object"==typeof exports&&exports&&!exports.nodeType&&exports,S=j&&"object"==typeof module&&module&&!module.nodeType&&module,x=S&&S.exports===j?a.Buffer:void 0,T=(x?x.isBuffer:void 0)||function(){return!1},A=/^(?:0|[1-9]\d*)$/;function E(e,t){var r=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==r||"symbol"!=r&&A.test(e))&&e>-1&&e%1==0&&e<t}function $(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}var M={};function N(e){return function(t){return e(t)}}M["[object Float32Array]"]=M["[object Float64Array]"]=M["[object Int8Array]"]=M["[object Int16Array]"]=M["[object Int32Array]"]=M["[object Uint8Array]"]=M["[object Uint8ClampedArray]"]=M["[object Uint16Array]"]=M["[object Uint32Array]"]=!0,M["[object Arguments]"]=M["[object Array]"]=M["[object ArrayBuffer]"]=M["[object Boolean]"]=M["[object DataView]"]=M["[object Date]"]=M["[object Error]"]=M["[object Function]"]=M["[object Map]"]=M["[object Number]"]=M["[object Object]"]=M["[object RegExp]"]=M["[object Set]"]=M["[object String]"]=M["[object WeakMap]"]=!1;var I="object"==typeof exports&&exports&&!exports.nodeType&&exports,D=I&&"object"==typeof module&&module&&!module.nodeType&&module,C=D&&D.exports===I&&i.process,L=function(){try{var e=D&&D.require&&D.require("util").types;return e||C&&C.binding&&C.binding("util")}catch(e){}}(),P=L&&L.isTypedArray,U=P?N(P):function(e){return y(e)&&$(e.length)&&!!M[h(e)]},R=Object.prototype.hasOwnProperty;function F(e,t){var r=O(e),n=!r&&k(e),o=!r&&!n&&T(e),i=!r&&!n&&!o&&U(e),l=r||n||o||i,a=l?function(e,t){for(var r=-1,n=Array(e);++r<e;)n[r]=t(r);return n}(e.length,String):[],u=a.length;for(var s in e)!t&&!R.call(e,s)||l&&("length"==s||o&&("offset"==s||"parent"==s)||i&&("buffer"==s||"byteLength"==s||"byteOffset"==s)||E(s,u))||a.push(s);return a}var z=Object.prototype;function B(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||z)}function V(e,t){return function(r){return e(t(r))}}var K=V(Object.keys,Object),J=Object.prototype.hasOwnProperty;function q(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function W(e){if(!q(e))return!1;var t=h(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}function Y(e){return null!=e&&$(e.length)&&!W(e)}function G(e){return Y(e)?F(e):function(e){if(!B(e))return K(e);var t=[];for(var r in Object(e))J.call(e,r)&&"constructor"!=r&&t.push(r);return t}(e)}function H(e){return"symbol"==typeof e||y(e)&&"[object Symbol]"==h(e)}var X=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Q=/^\w*$/;function Z(e,t){if(O(e))return!1;var r=typeof e;return!("number"!=r&&"symbol"!=r&&"boolean"!=r&&null!=e&&!H(e))||(Q.test(e)||!X.test(e)||null!=t&&e in Object(t))}var ee,te=a["__core-js_shared__"],re=(ee=/[^.]+$/.exec(te&&te.keys&&te.keys.IE_PROTO||""))?"Symbol(src)_1."+ee:"";var ne=Function.prototype.toString;function oe(e){if(null!=e){try{return ne.call(e)}catch(e){}try{return e+""}catch(e){}}return""}var ie=/^\[object .+?Constructor\]$/,le=Function.prototype,ae=Object.prototype,ue=le.toString,se=ae.hasOwnProperty,ce=RegExp("^"+ue.call(se).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");function de(e){return!(!q(e)||(t=e,re&&re in t))&&(W(e)?ce:ie).test(oe(e));var t}function fe(e,t){var r=function(e,t){return null==e?void 0:e[t]}(e,t);return de(r)?r:void 0}var pe=fe(Object,"create");var me=Object.prototype.hasOwnProperty;var he=Object.prototype.hasOwnProperty;function ye(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 ge(e,t){return e===t||e!=e&&t!=t}function ve(e,t){for(var r=e.length;r--;)if(ge(e[r][0],t))return r;return-1}ye.prototype.clear=function(){this.__data__=pe?pe(null):{},this.size=0},ye.prototype.delete=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t},ye.prototype.get=function(e){var t=this.__data__;if(pe){var r=t[e];return"__lodash_hash_undefined__"===r?void 0:r}return me.call(t,e)?t[e]:void 0},ye.prototype.has=function(e){var t=this.__data__;return pe?void 0!==t[e]:he.call(t,e)},ye.prototype.set=function(e,t){var r=this.__data__;return this.size+=this.has(e)?0:1,r[e]=pe&&void 0===t?"__lodash_hash_undefined__":t,this};var be=Array.prototype.splice;function we(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])}}we.prototype.clear=function(){this.__data__=[],this.size=0},we.prototype.delete=function(e){var t=this.__data__,r=ve(t,e);return!(r<0)&&(r==t.length-1?t.pop():be.call(t,r,1),--this.size,!0)},we.prototype.get=function(e){var t=this.__data__,r=ve(t,e);return r<0?void 0:t[r][1]},we.prototype.has=function(e){return ve(this.__data__,e)>-1},we.prototype.set=function(e,t){var r=this.__data__,n=ve(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this};var _e=fe(a,"Map");function ke(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 Oe(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])}}Oe.prototype.clear=function(){this.size=0,this.__data__={hash:new ye,map:new(_e||we),string:new ye}},Oe.prototype.delete=function(e){var t=ke(this,e).delete(e);return this.size-=t?1:0,t},Oe.prototype.get=function(e){return ke(this,e).get(e)},Oe.prototype.has=function(e){return ke(this,e).has(e)},Oe.prototype.set=function(e,t){var r=ke(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this};function je(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(je.Cache||Oe),r}je.Cache=Oe;var Se,xe,Te,Ae=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,Ee=/\\(\\)?/g,$e=(Se=function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(Ae,function(e,r,n,o){t.push(n?o.replace(Ee,"$1"):r||e)}),t},xe=je(Se,function(e){return 500===Te.size&&Te.clear(),e}),Te=xe.cache,xe),Me=$e;function Ne(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 Ie=u?u.prototype:void 0,De=Ie?Ie.toString:void 0;function Ce(e){if("string"==typeof e)return e;if(O(e))return Ne(e,Ce)+"";if(H(e))return De?De.call(e):"";var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function Le(e){return null==e?"":Ce(e)}function Pe(e,t){return O(e)?e:Z(e,t)?[e]:Me(Le(e))}function Ue(e){if("string"==typeof e||H(e))return e;var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}function Re(e,t){for(var r=0,n=(t=Pe(t,e)).length;null!=e&&r<n;)e=e[Ue(t[r++])];return r&&r==n?e:void 0}function Fe(e,t,r){var n=null==e?void 0:Re(e,t);return void 0===n?r:n}function ze(e){var t=this.__data__=new we(e);this.size=t.size}ze.prototype.clear=function(){this.__data__=new we,this.size=0},ze.prototype.delete=function(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r},ze.prototype.get=function(e){return this.__data__.get(e)},ze.prototype.has=function(e){return this.__data__.has(e)},ze.prototype.set=function(e,t){var r=this.__data__;if(r instanceof we){var n=r.__data__;if(!_e||n.length<199)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new Oe(n)}return r.set(e,t),this.size=r.size,this};var Be=function(){try{var e=fe(Object,"defineProperty");return e({},"",{}),e}catch(e){}}(),Ve=Be;function Ke(e,t,r){"__proto__"==t&&Ve?Ve(e,t,{configurable:!0,enumerable:!0,value:r,writable:!0}):e[t]=r}var Je=Object.prototype.hasOwnProperty;function qe(e,t,r){var n=e[t];Je.call(e,t)&&ge(n,r)&&(void 0!==r||t in e)||Ke(e,t,r)}function We(e,t,r,n){var o=!r;r||(r={});for(var i=-1,l=t.length;++i<l;){var a=t[i],u=n?n(r[a],e[a],a,r,e):void 0;void 0===u&&(u=e[a]),o?Ke(r,a,u):qe(r,a,u)}return r}var Ye=Object.prototype.hasOwnProperty;function Ge(e){if(!q(e))return function(e){var t=[];if(null!=e)for(var r in Object(e))t.push(r);return t}(e);var t=B(e),r=[];for(var n in e)("constructor"!=n||!t&&Ye.call(e,n))&&r.push(n);return r}function He(e){return Y(e)?F(e,!0):Ge(e)}var Xe="object"==typeof exports&&exports&&!exports.nodeType&&exports,Qe=Xe&&"object"==typeof module&&module&&!module.nodeType&&module,Ze=Qe&&Qe.exports===Xe?a.Buffer:void 0,et=Ze?Ze.allocUnsafe:void 0;function tt(){return[]}var rt=Object.prototype.propertyIsEnumerable,nt=Object.getOwnPropertySymbols,ot=nt?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}(nt(e),function(t){return rt.call(e,t)}))}:tt,it=ot;function lt(e,t){for(var r=-1,n=t.length,o=e.length;++r<n;)e[o+r]=t[r];return e}var at=V(Object.getPrototypeOf,Object),ut=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)lt(t,it(e)),e=at(e);return t}:tt,st=ut;function ct(e,t,r){var n=t(e);return O(e)?n:lt(n,r(e))}function dt(e){return ct(e,G,it)}function ft(e){return ct(e,He,st)}var pt=fe(a,"DataView"),mt=fe(a,"Promise"),ht=fe(a,"Set"),yt=fe(a,"WeakMap"),gt="[object Map]",vt="[object Promise]",bt="[object Set]",wt="[object WeakMap]",_t="[object DataView]",kt=oe(pt),Ot=oe(_e),jt=oe(mt),St=oe(ht),xt=oe(yt),Tt=h;(pt&&Tt(new pt(new ArrayBuffer(1)))!=_t||_e&&Tt(new _e)!=gt||mt&&Tt(mt.resolve())!=vt||ht&&Tt(new ht)!=bt||yt&&Tt(new yt)!=wt)&&(Tt=function(e){var t=h(e),r="[object Object]"==t?e.constructor:void 0,n=r?oe(r):"";if(n)switch(n){case kt:return _t;case Ot:return gt;case jt:return vt;case St:return bt;case xt:return wt}return t});var At=Tt,Et=Object.prototype.hasOwnProperty;var $t=a.Uint8Array;function Mt(e){var t=new e.constructor(e.byteLength);return new $t(t).set(new $t(e)),t}var Nt=/\w*$/;var It=u?u.prototype:void 0,Dt=It?It.valueOf:void 0;function Ct(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,Nt.exec(e));return t.lastIndex=e.lastIndex,t}(e);case"[object Symbol]":return n=e,Dt?Object(Dt.call(n)):{}}}var Lt=Object.create,Pt=function(){function e(){}return function(t){if(!q(t))return{};if(Lt)return Lt(t);e.prototype=t;var r=new e;return e.prototype=void 0,r}}(),Ut=Pt;var Rt=L&&L.isMap,Ft=Rt?N(Rt):function(e){return y(e)&&"[object Map]"==At(e)};var zt=L&&L.isSet,Bt=zt?N(zt):function(e){return y(e)&&"[object Set]"==At(e)},Vt="[object Arguments]",Kt="[object Function]",Jt="[object Object]",qt={};function Wt(e,t,r,n,o,i){var l,a=1&t,u=2&t,s=4&t;if(r&&(l=o?r(e,n,o,i):r(e)),void 0!==l)return l;if(!q(e))return e;var c=O(e);if(c){if(l=function(e){var t=e.length,r=new e.constructor(t);return t&&"string"==typeof e[0]&&Et.call(e,"index")&&(r.index=e.index,r.input=e.input),r}(e),!a)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 d=At(e),f=d==Kt||"[object GeneratorFunction]"==d;if(T(e))return function(e,t){if(t)return e.slice();var r=e.length,n=et?et(r):new e.constructor(r);return e.copy(n),n}(e,a);if(d==Jt||d==Vt||f&&!o){if(l=u||f?{}:function(e){return"function"!=typeof e.constructor||B(e)?{}:Ut(at(e))}(e),!a)return u?function(e,t){return We(e,st(e),t)}(e,function(e,t){return e&&We(t,He(t),e)}(l,e)):function(e,t){return We(e,it(e),t)}(e,function(e,t){return e&&We(t,G(t),e)}(l,e))}else{if(!qt[d])return o?e:{};l=Ct(e,d,a)}}i||(i=new ze);var p=i.get(e);if(p)return p;i.set(e,l),Bt(e)?e.forEach(function(n){l.add(Wt(n,t,r,n,e,i))}):Ft(e)&&e.forEach(function(n,o){l.set(o,Wt(n,t,r,o,e,i))});var m=c?void 0:(s?u?ft:dt:u?He:G)(e);return function(e,t){for(var r=-1,n=null==e?0:e.length;++r<n&&!1!==t(e[r],r,e););}(m||e,function(n,o){m&&(n=e[o=n]),qe(l,o,Wt(n,t,r,o,e,i))}),l}function Yt(e,t){return t.length<2?e:Re(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))}qt[Vt]=qt["[object Array]"]=qt["[object ArrayBuffer]"]=qt["[object DataView]"]=qt["[object Boolean]"]=qt["[object Date]"]=qt["[object Float32Array]"]=qt["[object Float64Array]"]=qt["[object Int8Array]"]=qt["[object Int16Array]"]=qt["[object Int32Array]"]=qt["[object Map]"]=qt["[object Number]"]=qt[Jt]=qt["[object RegExp]"]=qt["[object Set]"]=qt["[object String]"]=qt["[object Symbol]"]=qt["[object Uint8Array]"]=qt["[object Uint8ClampedArray]"]=qt["[object Uint16Array]"]=qt["[object Uint32Array]"]=!0,qt["[object Error]"]=qt[Kt]=qt["[object WeakMap]"]=!1;var Gt=Object.prototype.hasOwnProperty;function Ht(e,t){var r=-1,n=(t=Pe(t,e)).length;if(!n)return!0;for(;++r<n;){var o=Ue(t[r]);if("__proto__"===o&&!Gt.call(e,"__proto__"))return!1;if(("constructor"===o||"prototype"===o)&&r<n-1)return!1}var i=Yt(e,t);return null==i||delete i[Ue(function(e){var t=null==e?0:e.length;return t?e[t-1]:void 0}(t))]}var Xt=Function.prototype,Qt=Object.prototype,Zt=Xt.toString,er=Qt.hasOwnProperty,tr=Zt.call(Object);function rr(e){return function(e){if(!y(e)||"[object Object]"!=h(e))return!1;var t=at(e);if(null===t)return!0;var r=er.call(t,"constructor")&&t.constructor;return"function"==typeof r&&r instanceof r&&Zt.call(r)==tr}(e)?void 0:e}var nr=u?u.isConcatSpreadable:void 0;function or(e){return O(e)||k(e)||!!(nr&&e&&e[nr])}function ir(e,t,r,n,o){var i=-1,l=e.length;for(r||(r=or),o||(o=[]);++i<l;){var a=e[i];t>0&&r(a)?t>1?ir(a,t-1,r,n,o):lt(o,a):n||(o[o.length]=a)}return o}function lr(e){return(null==e?0:e.length)?ir(e,1):[]}var ar=Math.max;function ur(e){return e}var sr=Ve?function(e,t){return Ve(e,"toString",{configurable:!0,enumerable:!1,value:(r=t,function(){return r}),writable:!0});var r}:ur,cr=sr,dr=Date.now;var fr=function(e){var t=0,r=0;return function(){var n=dr(),o=16-(n-r);if(r=n,o>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}(cr),pr=fr;var mr=function(e){return pr(function(e,t,r){return t=ar(void 0===t?e.length-1:t,0),function(){for(var n=arguments,o=-1,i=ar(n.length-t,0),l=Array(i);++o<i;)l[o]=n[t+o];o=-1;for(var a=Array(t+1);++o<t;)a[o]=n[o];return a[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,a)}}(e,void 0,lr),e+"")}(function(e,t){var r={};if(null==e)return r;var n=!1;t=Ne(t,function(t){return t=Pe(t,e),n||(n=t.length>1),t}),We(e,ft(e),r),n&&(r=Wt(r,7,rr));for(var o=t.length;o--;)Ht(r,t[o]);return r}),hr=mr;function yr(e){return"[object Object]"===Object.prototype.toString.call(e)}function gr(e){return"[object String]"===Object.prototype.toString.call(e)}function vr(e){return!(!gr(e)||""===e)}let br=2147483647;function wr(){let e,t,r=new Promise(function(){e=arguments[0],t=arguments[1]});return r.resolve=e,r.reject=t,r}function _r(e){return e!=e}function kr(e){let t=!1;if(vr(e))t=!isNaN(Number(e));else if(function(e){return"[object Number]"===Object.prototype.toString.call(e)}(e)){if(_r(e))return!1;t=!0}return t}function Or(e=10){kr(e)||(e=10),e=Math.min(e,br);let t=wr();return setTimeout(function(){t.resolve()},e),t}var jr=/\s/;var Sr=/^\s+/;function xr(e){return e?e.slice(0,function(e){for(var t=e.length;t--&&jr.test(e.charAt(t)););return t}(e)+1).replace(Sr,""):e}var Tr=/^[-+]0x[0-9a-f]+$/i,Ar=/^0b[01]+$/i,Er=/^0o[0-7]+$/i,$r=parseInt;function Mr(e){if("number"==typeof e)return e;if(H(e))return NaN;if(q(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=q(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=xr(e);var r=Ar.test(e);return r||Er.test(e)?$r(e.slice(2),r?2:8):Tr.test(e)?NaN:+e}var Nr=1/0;function Ir(e){return e?(e=Mr(e))===Nr||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}function Dr(e){var t=Ir(e),r=t%1;return t==t?r?t-r:t:0}var Cr=a.isFinite,Lr=Math.min;var Pr=function(e){var t=Math[e];return function(e,r){if(e=Mr(e),(r=null==r?0:Lr(Dr(r),292))&&Cr(e)){var n=(Le(e)+"e").split("e");return+((n=(Le(t(n[0]+"e"+(+n[1]+r)))+"e").split("e"))[0]+"e"+(+n[1]-r))}return t(e)}}("round"),Ur=Pr;function Rr(e){return!0===(t=e)||!1===t||y(t)&&"[object Boolean]"==h(t);var t}function Fr(e){if(!kr(e))return 0;return Ir(e)}function zr(e,t={}){let r=Fe(t,"useClampSafe",null);Rr(r)||(r=!1);let n=Fe(t,"useLimitSafe",null);Rr(n)||(n=!1);let o=Fe(t,"returnWithStateAndMsg",null);Rr(o)||(o=!1);let i=e=>o?{state:"success",msg:e}:e,l=e=>{if(o)return{state:"error",msg:e};throw new Error(e)};if(!kr(e))return i(0);let a=null;try{e=Fr(e),a=Ur(e),r&&(a>Number.MAX_SAFE_INTEGER?a=Number.MAX_SAFE_INTEGER:a<Number.MIN_SAFE_INTEGER&&(a=Number.MIN_SAFE_INTEGER))}catch(e){return l(e.toString())}return n&&!Number.isSafeInteger(Number(a))?l(`v[${e}] is not a safe integer`):("0"===String(a)&&(a=0),i(a))}function Br(e){return"[object Array]"===Object.prototype.toString.call(e)}function Vr(e){let t=Object.prototype.toString.call(e);return"[object Function]"===t||"[object AsyncFunction]"===t}function Kr(e,t={}){let r=Fe(t,"useLimitSafe",null);return Rr(r)||(r=!1),!!kr(e)&&(e=Fr(e),r?Number.isSafeInteger(e):"number"==typeof(n=e)&&n==Dr(n));var n}function Jr(e,t={}){if(!Kr(e,t))return!1;return zr(e)>0}function qr(e,t={}){if(!Kr(e,t))return!1;return zr(e)>=0}function Wr(e,t){return vr(e)&&qr(t)?0===(t=zr(t))?"":e.substring(0,t):""}function Yr(e,t){if(!vr(e))return"";if(!qr(t))return"";if(0===(t=zr(t)))return"";let r=e.length-t;return r<0&&(r=0),e.substring(r,r+t)}function Gr(e,t){return vr(e)&&qr(t)?0===(t=zr(t))?e:Yr(e,e.length-t):""}function Hr(e,t,r={}){if(!vr(e))return"";if(!qr(t))return e;if(t=zr(t),e.length<=t)return e;let n=Fe(r,"funWithMsg"),o="";if(Vr(n)){let r=n(e,t);vr(r)&&(o=r)}return Wr(e,t)+`...${o}`}function Xr(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Qr=e,Zr=Qr.spawn,en=Qr.exec;function tn(e,t,r){var n={};try{Object.keys(e).forEach(function(r){e[r].forEach(function(e){n[e]||(rn(e,t),n[e]=1)}),n[r]||(rn(r,t),n[r]=1)})}catch(e){if(r)return r(e);throw e}if(r)return r()}function rn(e,t){try{process.kill(parseInt(e,10),t)}catch(e){if("ESRCH"!==e.code)throw e}}function nn(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,nn(i,t,r,n,o)}):0==Object.keys(r).length&&o()})}var on=Xr(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":en("taskkill /pid "+e+" /T /F",r);break;case"darwin":nn(e,n,o,function(e){return Zr("pgrep",["-P",e])},function(){tn(n,t,r)});break;default:nn(e,n,o,function(e){return Zr("ps",["-o","pid","--no-headers","--ppid",e])},function(){tn(n,t,r)})}});function ln(e){let t=wr();return on(Number(e),"SIGKILL",r=>{r?t.reject(r):t.resolve(`pid[${e}] killed`)}),t}function an(e,t={}){let r=Fe(t,"fs"),n=!1;try{r.statSync(e),n=!0}catch{n=!1}return n}function un(e){return function(e,t={}){let r=Fe(t,"fs");return!!an(e,{fs:r})&&!r.lstatSync(e).isDirectory()&&!r.lstatSync(e).isSymbolicLink()}(e,{fs:r})}function sn(e,t={}){let r=null,n=Fe(t,"fs"),o="";try{o=n.readFileSync(e,"utf8")}catch(e){r=e}return null!==r?{error:r}:{success:o}}function cn(e){let n=Fe(sn(e,{fs:r}),"success","");if(!vr(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 un(l)?l:null}let dn={buildSpawnArgs:function(r,n=[]){if(Br(n)||(n=[]),"win32"!==process.platform)return{file:r,args:n,opt:{}};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,opt:{}};if(/\.(cmd|bat)$/i.test(o)){let e=cn(o);if(e)return/\.exe$/i.test(e)?{file:e,args:n,opt:{}}:{file:process.execPath,args:[e,...n],opt:{}};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,opt:{}}},buildSpawnEnv:function(e=void 0){let t={...process.env,PYTHONIOENCODING:"utf-8"};if(void 0!==e){if("win32"===process.platform){let r=Object.keys(e).map(e=>e.toLowerCase());for(let e of Object.keys(t))r.includes(e.toLowerCase())&&delete t[e]}t={...t,...e}}return t}},{buildSpawnArgs:fn,buildSpawnEnv:pn}=dn,mn={funWithMsg:e=>`(truncated, total ${e.length} chars)`};function hn(t,r=[],n={}){let{timeoutMs:o=12e4,cwd:i=process.cwd(),input:l,validate:a,maxBuffer:u=10485760,onStdout:s,onStderr:c,env:d}=n,f=function(e){if(Vr(e))return e;if(!vr(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(!vr(e)||""===e.trim())return!1}else if("json"===r)try{JSON.parse(e)}catch{return!1}else if("min:"===Wr(r,4)){let t=Gr(r,4);if(!kr(t))return!1;let n=zr(t);if(!vr(e)||e.length<n)return!1}return!0}}(a),p=Date.now(),m=wr(),h=pn(d),y=fn(t,r),g=e.spawn(y.file,y.args,{cwd:i,stdio:["pipe","pipe","pipe"],windowsHide:!0,env:h,...y.opt}),v="",b="",w=new TextDecoder("utf-8"),_=new TextDecoder("utf-8"),k=!1,O=!1;g.stdout.on("data",e=>{let t=w.decode(e,{stream:!0});t&&(Vr(s)&&s(t),v.length<u&&(v+=t))}),g.stderr.on("data",e=>{let t=_.decode(e,{stream:!0});t&&(Vr(c)&&c(t),b.length<u&&(b+=t))}),g.stdin.on("error",()=>{}),void 0!==l&&g.stdin.write(l,"utf8"),g.stdin.end();let j=setTimeout(()=>{k||(O=!0,ln(g.pid).catch(()=>{}),setTimeout(()=>{k||(k=!0,m.resolve({ok:!1,stdout:Hr(v,500,mn),stderr:Hr(b,500,mn),code:null,error:`TIMEOUT after ${o/1e3}s(子進程未能結束)`,durationMs:Date.now()-p,pid:g.pid}))},3e3).unref())},o);return g.on("error",e=>{k||(k=!0,clearTimeout(j),m.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(k)return;k=!0,clearTimeout(j);let r=w.decode();r&&v.length<u&&(v+=r);let n=_.decode();n&&b.length<u&&(b+=n);let i=Date.now()-p;O?m.resolve({ok:!1,stdout:Hr(v,500,mn),stderr:Hr(b,500,mn),code:e,error:`TIMEOUT after ${o/1e3}s`,durationMs:i,pid:g.pid}):0===e?!f||f(v)?m.resolve({ok:!0,stdout:v,stderr:b,code:0,error:"",durationMs:i,pid:g.pid}):m.resolve({ok:!1,stdout:Hr(v,500,mn),stderr:Hr(b,500,mn),code:0,error:"OUTPUT_VALIDATION_FAILED",durationMs:i,pid:g.pid}):m.resolve({ok:!1,stdout:Hr(v,500,mn),stderr:Hr(b,1e3,mn),code:e,error:t?`Signal: ${t}`:`Exit code ${e}`,durationMs:i,pid:g.pid})}),m}async function yn(e,t=[],r={}){if(!vr(e))return{ok:!1,stdout:"",stderr:"",code:null,error:"command 須為非空字串",durationMs:0,attempts:0};Br(t)||(t=[]),yr(r)||(r={});let{maxRetries:n=0,retryDelayMs:o=5e3,...i}=r,l=Fe(i,"cwd",null);vr(l)?i.cwd=l:i.cwd=process.cwd();let a=Fe(i,"input",null);vr(a)?i.input=a:i.input=void 0;let u=Fe(i,"env",null);yr(u)?i.env=u:i.env=void 0;let s=Fe(i,"validate",null);Vr(s)||vr(s)?i.validate=s:i.validate=void 0;let c=Fe(i,"onStdout",null);Vr(c)?i.onStdout=c:i.onStdout=void 0;let d=Fe(i,"onStderr",null);Vr(d)?i.onStderr=d:i.onStderr=void 0,n=qr(n)?zr(n):0,o=Jr(o)?zr(o):5e3;let f=Fe(i,"timeoutMs",null);Jr(f)?i.timeoutMs=zr(f):i.timeoutMs=12e4,i.timeoutMs=Math.min(i.timeoutMs,br);let p,m=Fe(i,"maxBuffer",null);Jr(m)?i.maxBuffer=zr(m):i.maxBuffer=10485760;let h=0;for(let r=0;r<=n;r++){if(r>0){let e=Math.min(o*r,15e3);await Or(e)}if(p=await hn(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 gn(...e){let t=[];for(let r of e)if(Br(r))for(let e of r)vr(e)&&t.push(e);else vr(r)&&t.push(r);return t}function vn(e,t="params"){return vr(e)||(e="unknown error"),vr(t)||(t="params"),{ok:!1,stdout:"",stderr:"",code:null,error:e,errorType:t,durationMs:0,attempts:0}}function bn(e){let t=Fe(e,"error","");return vr(t)?0===t.indexOf("TIMEOUT")?"timeout":t.includes("ENOENT")||t.includes("ENAMETOOLONG")?"spawn":"OUTPUT_VALIDATION_FAILED"===t?"validation":"exec":"exec"}function wn(e){return!0===Fe(e,"ok",!1)||vr(Fe(e,"errorType",null))?e:{...e,errorType:bn(e)}}function _n(e,t){return Jr(e)?zr(e):t}let kn=3e5,On=["exe","model","key","provider","agent","config","extraArgs","input","env"];async function jn(e,t={}){if(!vr(e))return vn("prompt must be a non-empty string");let r=Fe(t,"exe",null);vr(r)||(r="opencode");let n=Fe(t,"model",null),o=Fe(t,"agent",null);vr(o)||(o="build");let i=Fe(t,"extraArgs",null),l=gn("run",["--agent",o],vr(n)?["-m",n]:[],i),a=Fe(t,"env",null);yr(a)||(a=void 0);let u=Fe(t,"config",null);yr(u)&&(u=JSON.stringify(u)),vr(u)&&(a={...a,OPENCODE_CONFIG_CONTENT:u});let s=Fe(t,"key",null),c=Fe(t,"provider",null);vr(s)&&vr(c)&&(a={...a,OPENCODE_AUTH_CONTENT:JSON.stringify({[c]:{type:"api",key:s}})});let d=_n(Fe(t,"timeoutMs",null),kn),f=hr(t,On);return wn(await yn(r,l,{...f,input:e,env:a,timeoutMs:d}))}let Sn=["exe","model","skipPermissions","extraArgs","input"];async function xn(e,t={}){if(!vr(e))return vn("prompt must be a non-empty string");let r=Fe(t,"exe",null);vr(r)||(r="claude");let n=Fe(t,"model",null),o=Fe(t,"skipPermissions",null);Rr(o)||(o=!0);let i=Fe(t,"extraArgs",null),l=gn("-p",o?"--dangerously-skip-permissions":[],vr(n)?["--model",n]:[],i),a=_n(Fe(t,"timeoutMs",null),kn),u=hr(t,Sn);return wn(await yn(r,l,{...u,input:e,timeoutMs:a}))}let Tn=["exe","model","sandbox","extraArgs","input"];async function An(e,t={}){if(!vr(e))return vn("prompt must be a non-empty string");let r=Fe(t,"exe",null);vr(r)||(r="codex");let n=Fe(t,"model",null),o=Fe(t,"sandbox",null);vr(o)||(o="workspace-write");let i=Fe(t,"extraArgs",null),l=gn("exec",["--sandbox",o],"--skip-git-repo-check",vr(n)?["-m",n]:[],i),a=_n(Fe(t,"timeoutMs",null),kn),u=hr(t,Tn);return wn(await yn(r,l,{...u,input:e,timeoutMs:a}))}let En=kn,$n=["exe","model","effort","skipPermissions","printTimeout","addDirs","extraArgs","input"];async function Mn(e,t={}){if(!vr(e))return vn("prompt must be a non-empty string");if(e.length>3e4)return vn(`prompt too long (${e.length} chars > 30000), agy passes prompt via --print flag and Windows command line is capped at 32767 chars`);let r=Fe(t,"exe",null);vr(r)||(r="agy");let n=Fe(t,"model",null),o=Fe(t,"effort",null),i=Fe(t,"skipPermissions",null);Rr(i)||(i=!0);let l=_n(Fe(t,"timeoutMs",null),En),a=Fe(t,"printTimeout",null);vr(a)||(a=`${Math.max(30,Math.floor(l/1e3)-30)}s`);let u=Fe(t,"addDirs",null);if(!Br(u)){let e=Fe(t,"cwd",null);vr(e)||(e=process.cwd()),u=[e]}let s=[];for(let e of u)vr(e)&&s.push("--add-dir",e);let c=Fe(t,"extraArgs",null),d=gn(i?"--dangerously-skip-permissions":[],["--print-timeout",a],vr(n)?["--model",n]:[],vr(o)?["--effort",o]:[],s,c,["--print",e]),f=hr(t,$n);try{return wn(await yn(r,d,{...f,timeoutMs:l}))}catch(e){return vn(`${e.code||"UNKNOWN"}: ${e.message}`,"spawn")}}function Nn(e){if(Vr(e))return e;if(!vr(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(!vr(e)||""===e.trim())return!1}else if("json"===r)try{JSON.parse(e)}catch{return!1}else if("min:"===Wr(r,4)){let t=Gr(r,4);if(!kr(t))return!1;let n=zr(t);if(!vr(e)||e.length<n)return!1}return!0}}let In=kn,Dn={funWithMsg:e=>`(truncated, total ${e.length} chars)`};async function Cn(e,t,r,n,o){let i=Date.now(),l=e=>({ok:!1,stdout:"",stderr:"",code:null,error:"",durationMs:Date.now()-i,usage:null,...e}),a=new AbortController,u=setTimeout(()=>{a.abort()},n),s=null,c="";try{s=await fetch(e,{method:"POST",headers:t,body:JSON.stringify(r),signal:a.signal}),c=await s.text()}catch(e){if(clearTimeout(u),"AbortError"===e.name)return l({error:`TIMEOUT after ${n/1e3}s`,errorType:"timeout"});return l({error:`FETCH_ERROR: ${Fe(e,"cause.code","")||e.message}`,errorType:"fetch"})}if(clearTimeout(u),!s.ok)return l({stderr:Hr(c,1e3,Dn),code:s.status,error:`HTTP ${s.status}`,errorType:"http"});let d=null,f="",p=null,m=null;try{let e=JSON.parse(c);d=Fe(e,"choices.0.message.content",null),f=Fe(e,"choices.0.finish_reason",""),p=Fe(e,"choices.0.message.tool_calls",null),m=Fe(e,"usage",null),yr(m)||(m=null)}catch{}return"tool_calls"===f||null!=p?l({stderr:Hr(c,1e3,Dn),code:s.status,error:"TOOL_CALLS_UNSUPPORTED: use a cli kind (opencode/claude/codex/antigravity) when tools are needed",errorType:"tool-unsupported",usage:m}):null==d?l({stderr:Hr(c,500,Dn),code:s.status,error:"INVALID_RESPONSE: missing choices[0].message.content",errorType:"invalid-response",usage:m}):("string"!=typeof d&&(d=JSON.stringify(d)),o&&!o(d)?l({stdout:Hr(d,500,Dn),code:s.status,error:"OUTPUT_VALIDATION_FAILED",errorType:"validation",usage:m}):l({ok:!0,stdout:d,code:s.status,usage:m}))}async function Ln(e,t={}){if(!vr(e))return vn("prompt must be a non-empty string");let r=Fe(t,"baseURL",null);if(!vr(r))return vn("baseURL must be a non-empty string");let n=Fe(t,"model",null);if(!vr(n))return vn("model must be a non-empty string");let o=Fe(t,"key",null),i=Fe(t,"system",null),l=Fe(t,"body",null);yr(l)||(l={});let a=Fe(t,"headers",null);yr(a)||(a={});let u=_n(Fe(t,"timeoutMs",null),In),s=Fe(t,"maxRetries",null);s=qr(s)?zr(s):0;let c=_n(Fe(t,"retryDelayMs",null),5e3),d=Nn(Fe(t,"validate",null)),f=r.replace(/\/+$/,"")+"/chat/completions",p=[];vr(i)&&p.push({role:"system",content:i}),p.push({role:"user",content:e});let m={model:n,messages:p,...l},h={"Content-Type":"application/json",...a};vr(o)&&(h.Authorization=`Bearer ${o}`);let y=null,g=0;for(let e=0;e<=s;e++){if(e>0&&await Or(Math.min(c*e,15e3)),y=await Cn(f,h,m,u,d),g=e+1,y.ok)return y.attempts=g,y;let t=y.code;if(kr(t)&&t>=400&&t<500&&429!==t)break}return y.attempts=g,y}let Pn=kn,Un={funWithMsg:e=>`(truncated, total ${e.length} chars)`};function Rn(e){if(!Br(e))return"";let t=[];for(let r of e){if("message"!==Fe(r,"type",""))continue;let e=Fe(r,"content",null);if(Br(e))for(let r of e){let e=Fe(r,"text",null);vr(e)&&t.push(e)}}return t.join("")}async function Fn(e,t,r,n,o){let i=Date.now(),l=e=>({ok:!1,stdout:"",stderr:"",code:null,error:"",durationMs:Date.now()-i,usage:null,...e}),a=new AbortController,u=setTimeout(()=>{a.abort()},n),s=null,c="";try{s=await fetch(e,{method:"POST",headers:t,body:JSON.stringify(r),signal:a.signal}),c=await s.text()}catch(e){if(clearTimeout(u),"AbortError"===e.name)return l({error:`TIMEOUT after ${n/1e3}s`,errorType:"timeout"});return l({error:`FETCH_ERROR: ${Fe(e,"cause.code","")||e.message}`,errorType:"fetch"})}if(clearTimeout(u),!s.ok)return l({stderr:Hr(c,1e3,Un),code:s.status,error:`HTTP ${s.status}`,errorType:"http"});let d=null,f="",p="",m="",h=null,y=!0;try{let e=JSON.parse(c);d=Fe(e,"output",null),f=Fe(e,"status",""),p=Fe(e,"incomplete_details.reason",""),m=Fe(e,"error.message","")||Fe(e,"error.code",""),h=Fe(e,"usage",null),yr(h)||(h=null)}catch{y=!1}if(!y||!Br(d))return l({stderr:Hr(c,500,Un),code:s.status,error:"INVALID_RESPONSE: missing output array",errorType:"invalid-response",usage:h});if(d.some(e=>"function_call"===Fe(e,"type","")))return l({stderr:Hr(c,1e3,Un),code:s.status,error:"TOOL_CALLS_UNSUPPORTED: use a cli kind (opencode/claude/codex/antigravity) when tools are needed",errorType:"tool-unsupported",usage:h});if("completed"!==f){let e=p||m||f||"unknown";return l({stdout:Hr(Rn(d),500,Un),stderr:Hr(c,500,Un),code:s.status,error:`INCOMPLETE_RESPONSE: status=${f||"missing"} (${e})`,errorType:"incomplete",usage:h})}let g=Rn(d);return""===g?l({stderr:Hr(c,500,Un),code:s.status,error:"INVALID_RESPONSE: no output_text in output messages",errorType:"invalid-response",usage:h}):o&&!o(g)?l({stdout:Hr(g,500,Un),code:s.status,error:"OUTPUT_VALIDATION_FAILED",errorType:"validation",usage:h}):l({ok:!0,stdout:g,code:s.status,usage:h})}async function zn(e,t={}){if(!vr(e))return vn("prompt must be a non-empty string");let r=Fe(t,"baseURL",null);if(!vr(r))return vn("baseURL must be a non-empty string");let n=Fe(t,"model",null);if(!vr(n))return vn("model must be a non-empty string");let o=Fe(t,"key",null),i=Fe(t,"system",null),l=Fe(t,"body",null);yr(l)||(l={});let a=Fe(t,"headers",null);yr(a)||(a={});let u=_n(Fe(t,"timeoutMs",null),Pn),s=Fe(t,"maxRetries",null);s=qr(s)?zr(s):0;let c=_n(Fe(t,"retryDelayMs",null),5e3),d=Nn(Fe(t,"validate",null)),f=r.replace(/\/+$/,"")+"/responses",p={model:n,input:e};vr(i)&&(p.instructions=i),p={...p,...l};let m={"Content-Type":"application/json",...a};vr(o)&&(m.Authorization=`Bearer ${o}`);let h=null,y=0;for(let e=0;e<=s;e++){if(e>0&&await Or(Math.min(c*e,15e3)),h=await Fn(f,m,p,u,d),y=e+1,h.ok)return h.attempts=y,h;let t=h.code;if(kr(t)&&t>=400&&t<500&&429!==t)break}return h.attempts=y,h}let Bn={opencode:jn,claude:xn,codex:An,antigravity:Mn,"api-openai-compat":Ln,"api-openai-responses":zn};function Vn(e){return e!=e}function Kn(e){return null==e?[]:function(e,t){return Ne(t,function(t){return e[t]})}(e,G(e))}var Jn=Math.max;function qn(e,t,r,n){e=Y(e)?e:Kn(e),r=r&&!n?Dr(r):0;var o=e.length;return r<0&&(r=Jn(o+r,0)),function(e){return"string"==typeof e||!O(e)&&y(e)&&"[object String]"==h(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,Vn,r)}(e,t,r)>-1}async function Wn(e,t,r={}){let n=G(Bn);return vr(e)&&qn(n,e)?(0,Bn[e])(t,r):vn(`unknown ai kind: "${e}" (available: ${n.join(", ")})`)}let Yn=["providers","budgetMs","minAttemptMs","cooldownMs","shouldStop","coolDetect","store","onEvent","meta"],Gn=["id","keys","meta"],Hn=kn,Xn={cursors:{}};function Qn(e){let t=Fe(e,"error","");vr(t)||(t="");let r=Fe(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 Zn(e,t={}){if(!vr(e))return{...vn("prompt must be a non-empty string"),tried:[]};let r=Fe(t,"providers",null),n=Br(r)?r.filter(yr):[];if(0===n.length)return{...vn("providers must be a non-empty array"),tried:[]};let o=_n(Fe(t,"budgetMs",null),null),i=null===o?null:Date.now()+o,l=_n(Fe(t,"minAttemptMs",null),2e4),{state:a,saveState:u}=function(e){let t=yr(e)&&Vr(e.get)&&Vr(e.set),r=null;if(t)try{r=e.get()}catch{}return yr(r)||(r=t?{cursors:{}}:Xn),yr(r.cursors)||(r.cursors={}),yr(r.cooling)||(r.cooling={}),{state:r,saveState:()=>{if(t)try{e.set(r)}catch{}}}}(Fe(t,"store",null)),s=_n(Fe(t,"cooldownMs",null),0),c=Fe(t,"coolDetect",null);Vr(c)||(c=null);let d=Fe(t,"shouldStop",null);Vr(d)||(d=null);let f=()=>{if(null===d)return!1;try{return!0===d()}catch{return!1}};s>0&&(n=function(e,t,r,n){let o=Date.now(),i=[],l=[],a=!1;for(let n of e){let e=Fe(n,"id",null),u=vr(e)?Fe(t.cooling,e,null):null;Jr(u)&&o-u<r?l.push(n):(vr(e)&&void 0!==t.cooling[e]&&(delete t.cooling[e],a=!0),i.push(n))}return a&&n(),[...i,...l]}(n,a,s,u));let p=Fe(t,"onEvent",null),m=e=>{if(Vr(p))try{p(e)}catch{}},h=hr(t,Yn),y=[],g=null,v=null;for(let t=0;t<n.length;t++){let r=n[t],o=Fe(r,"id",null),d=vr(o);d||(o=String(t));let p=Fe(r,"kind",null),b=Fe(r,"model",null),w=Fe(r,"keys",null),_=Br(w)?w.filter(vr):[],k=_.length,O=hr(r,Gn),j=0;if(k>0){let e=Fe(a.cursors,o,0);j=Jr(e)?zr(e)%k:0}let S=k>0?k:1,x=!1;for(let t=0;t<S&&!x;t++){if(f())return m({type:"aborted",providerId:o,keyIndex:null,keyId:o}),y.push({providerId:o,keyIndex:null,keyId:o,outcome:"aborted"}),{...vn("ABORTED","aborted"),tried:y};let r=k>0?(j+t)%k:null,n=null===r?o:`${o}#${r}`,w={...h,...O};k>0&&(w.key=_[r]);let S=_n(Fe(w,"timeoutMs",null),Hn);if(null!==i){let e=i-Date.now();if(e<l)return m({type:"budget-out",providerId:o,keyIndex:r,keyId:n,remainingMs:e}),y.push({providerId:o,keyIndex:r,keyId:n,outcome:"budget-out"}),{...vn("budget exhausted","budget"),tried:y};S=Math.min(S,e)}w.timeoutMs=S,m({type:"try",providerId:o,keyIndex:r,keyId:n,kind:p,model:b});let T=await Wn(p,e,w);if(T.ok)return s>0&&d&&void 0!==a.cooling[o]&&(delete a.cooling[o],u()),k>0&&(a.cursors[o]=(r+1)%k,u()),m({type:"ok",providerId:o,keyIndex:r,keyId:n,durationMs:T.durationMs}),y.push({providerId:o,keyIndex:r,keyId:n,outcome:"ok",durationMs:T.durationMs,...void 0!==T.usage?{usage:T.usage}:{}}),{...T,providerId:o,keyIndex:r,kind:p,model:b,tried:y};if(g=T,v={providerId:o,keyIndex:r,kind:p,model:b},s>0&&d){let e=429===T.code||vr(T.error)&&0===T.error.indexOf("TIMEOUT");if(!e&&null!==c)try{e=!0===c(T)}catch{}e&&(a.cooling[o]=Date.now(),u(),m({type:"cooled",providerId:o,keyIndex:r,keyId:n,error:T.error,cooldownMs:s}))}Qn(T)?(m({type:"skip-group",providerId:o,keyIndex:r,keyId:n,error:T.error,errorType:T.errorType,stdout:T.stdout,stderr:T.stderr}),y.push({providerId:o,keyIndex:r,keyId:n,outcome:"skip-group",error:T.error,errorType:T.errorType,stdout:T.stdout,stderr:T.stderr,durationMs:T.durationMs,...void 0!==T.usage?{usage:T.usage}:{}}),x=!0):(m({type:"next-key",providerId:o,keyIndex:r,keyId:n,error:T.error,errorType:T.errorType,stdout:T.stdout,stderr:T.stderr}),y.push({providerId:o,keyIndex:r,keyId:n,outcome:"next-key",error:T.error,errorType:T.errorType,stdout:T.stdout,stderr:T.stderr,durationMs:T.durationMs,...void 0!==T.usage?{usage:T.usage}:{}}))}}return{...g||vn("all providers failed","exec"),...v||{},tried:y}}function eo(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(yr(e)){for(let t in e)return!1;return!0}return!1}(e)||(!!function(e){return!(!gr(e)||""!==e)}(e)||(!!function(e){return!!Br(e)&&0===e.length}(e)||!!_r(e)))))}function to(e){return!!Br(e)&&(0!==e.length&&(1!==e.length||!eo(e[0])))}function ro(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 no=["【執行約束】你只需把結果輸出在回覆內容中。","禁止建立、修改或刪除任何檔案,也不要執行任何會改動磁碟或系統狀態的指令——","呼叫端只讀取你的回覆文字,任何寫入磁碟的動作都不會被採用,只會製造無人讀取的垃圾檔。","唯讀查閱(讀取檔案、搜尋內容、列出目錄)不在此限,需要時請照常使用。","",""].join("\n"),oo=["providers","spec","check","parse","rawText","promptPrefix","meta"];async function io(e,t={}){let r=Date.now();if(!vr(e))return{ok:!1,json:null,error:"prompt must be a non-empty string",errorType:"params",ms:0,tried:[]};let n=Fe(t,"providers",null),o=Fe(t,"spec",null);if(!yr(n)||!yr(o))return{ok:!1,json:null,error:`no valid provider for spec: ${JSON.stringify(o)}`,errorType:"params",ms:0,tried:[]};let{chain:i,missing:l}=function(e,t){let r=[Fe(t,"use","")],n=Fe(t,"fallback",null);to(n)&&(r=[...r,...n]);let o=[],i=[];for(let t of r){let r=Fe(e,t,null);yr(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(", ")}`,errorType:"params",ms:0,tried:[]};if(0===i.length)return{ok:!1,json:null,error:`no valid provider for spec: ${JSON.stringify(o)}`,errorType:"params",ms:0,tried:[]};let a=!0===Fe(t,"rawText",!1),u=Fe(t,"parse",null);Vr(u)||(u=ro);let s=Fe(t,"check",null);Vr(s)||(s=null);let c=Fe(t,"promptPrefix",null);vr(c)||(c=""===c?"":no);let d=await Zn(c+e,{...hr(t,oo),providers:i,validate:e=>{if(a){let t=String(e||"").trim();return""!==t&&(!s||!0===s(t))}let t=u(e);return null!==t&&(!s||!0===s(t))},timeoutMs:Fe(t,"timeoutMs",null)||kn}),f=null;d.ok&&(f=a?String(d.stdout||"").trim():u(d.stdout));let p=Fe(d,"providerId",null),m=Fe(d,"keyIndex",null);return{ok:d.ok&&null!==f,json:f,providerId:p,keyIndex:m,keyId:null===m?p:`${p}#${m}`,ms:Date.now()-r,tried:Fe(d,"tried",[]),usage:Fe(d,"usage",null),error:d.ok?"":Fe(d,"error","unknown error"),...d.ok?{}:{errorType:Fe(d,"errorType","exec")}}}async function lo(e={}){let t=Date.now(),r=Fe(e,"providers",null),n=Fe(e,"task",""),o=Fe(e,"agents",null),i=Fe(e,"integrate",null),l=Fe(e,"check",null),a=Fe(e,"callOpt",{});if(!vr(n))return{ok:!1,result:null,integrated:!1,agents:[],candidates:[],totalMs:0,error:"task must be a non-empty string"};if(!to(o))return{ok:!1,result:null,integrated:!1,agents:[],candidates:[],totalMs:0,error:"agents must be a non-empty array"};let u=Fe(e,"minCandidates",null);u=Jr(u)?zr(u):2;let s=await Promise.all(o.map(e=>{let{use:t,fallback:o,check:i,meta:u,...s}=e;return io(n,{...a,...s,providers:r,spec:{use:t,fallback:o},check:Vr(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<u)return{ok:!0,result:c[0],integrated:!1,agents:s,candidates:c,totalMs:Date.now()-t,error:""};if(!i||!vr(Fe(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:d,fallback:f,prompt:p,check:m,meta:h,...y}=i,g=Vr(p)?p(c):function(e,t={}){let r=Fe(t,"schema",""),n=vr(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 io(g,{...a,...y,providers:r,spec:{use:d,fallback:f},check:Vr(m)?m:l});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 ao=["id","use","fallback","prompt","check","meta"];async function uo(e={}){let t=Date.now(),r=Fe(e,"providers",null),n=Fe(e,"input",null),o=Fe(e,"stages",null),i=Fe(e,"callOpt",{});if(!to(o))return{ok:!1,result:null,stages:{},results:{},order:[],failedStage:null,totalMs:0,error:"stages must be a non-empty array"};let l={},a={},u=[],s=null;for(let e=0;e<o.length;e++){let c=o[e],d=vr(Fe(c,"id",""))?c.id:`stage${e+1}`;u.push(d);let f=Fe(c,"prompt",null);if(!Vr(f))return a[d]={ok:!1,error:`stage[${d}].prompt must be a function`},{ok:!1,result:null,stages:a,results:l,order:u,failedStage:d,totalMs:Date.now()-t,error:a[d].error};let p=f({input:n,prev:s,results:l,index:e});if(!vr(p))return a[d]={ok:!1,error:`stage[${d}].prompt returned empty`},{ok:!1,result:null,stages:a,results:l,order:u,failedStage:d,totalMs:Date.now()-t,error:a[d].error};let m=hr(c,ao),h=await io(p,{...i,...m,providers:r,spec:{use:Fe(c,"use",""),fallback:Fe(c,"fallback",null)},check:Fe(c,"check",null)});if(a[d]=h,!h.ok)return{ok:!1,result:null,stages:a,results:l,order:u,failedStage:d,totalMs:Date.now()-t,error:`stage[${d}] failed: ${h.error}`};l[d]=h.json,s=h.json}return{ok:!0,result:s,stages:a,results:l,order:u,failedStage:null,totalMs:Date.now()-t,error:""}}let so=["stages","input"],co=["task","agents","integrate","check","schema","minCandidates"];var fo=Array.prototype.join;function po(e){var t=-1,r=null==e?0:e.length;for(this.__data__=new Oe;++t<r;)this.add(e[t])}function mo(e,t){for(var r=-1,n=null==e?0:e.length;++r<n;)if(t(e[r],r,e))return!0;return!1}function ho(e,t){return e.has(t)}po.prototype.add=po.prototype.push=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this},po.prototype.has=function(e){return this.__data__.has(e)};function yo(e,t,r,n,o,i){var l=1&r,a=e.length,u=t.length;if(a!=u&&!(l&&u>a))return!1;var s=i.get(e),c=i.get(t);if(s&&c)return s==t&&c==e;var d=-1,f=!0,p=2&r?new po:void 0;for(i.set(e,t),i.set(t,e);++d<a;){var m=e[d],h=t[d];if(n)var y=l?n(h,m,d,t,e,i):n(m,h,d,e,t,i);if(void 0!==y){if(y)continue;f=!1;break}if(p){if(!mo(t,function(e,t){if(!ho(p,t)&&(m===e||o(m,e,r,n,i)))return p.push(t)})){f=!1;break}}else if(m!==h&&!o(m,h,r,n,i)){f=!1;break}}return i.delete(e),i.delete(t),f}function go(e){var t=-1,r=Array(e.size);return e.forEach(function(e,n){r[++t]=[n,e]}),r}function vo(e){var t=-1,r=Array(e.size);return e.forEach(function(e){r[++t]=e}),r}var bo=u?u.prototype:void 0,wo=bo?bo.valueOf:void 0;var _o=Object.prototype.hasOwnProperty;var ko="[object Arguments]",Oo="[object Array]",jo="[object Object]",So=Object.prototype.hasOwnProperty;function xo(e,t,r,n,o,i){var l=O(e),a=O(t),u=l?Oo:At(e),s=a?Oo:At(t),c=(u=u==ko?jo:u)==jo,d=(s=s==ko?jo:s)==jo,f=u==s;if(f&&T(e)){if(!T(t))return!1;l=!0,c=!1}if(f&&!c)return i||(i=new ze),l||U(e)?yo(e,t,r,n,o,i):function(e,t,r,n,o,i,l){switch(r){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!i(new $t(e),new $t(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return ge(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var a=go;case"[object Set]":var u=1&n;if(a||(a=vo),e.size!=t.size&&!u)return!1;var s=l.get(e);if(s)return s==t;n|=2,l.set(e,t);var c=yo(a(e),a(t),n,o,i,l);return l.delete(e),c;case"[object Symbol]":if(wo)return wo.call(e)==wo.call(t)}return!1}(e,t,u,r,n,o,i);if(!(1&r)){var p=c&&So.call(e,"__wrapped__"),m=d&&So.call(t,"__wrapped__");if(p||m){var h=p?e.value():e,y=m?t.value():t;return i||(i=new ze),o(h,y,r,n,i)}}return!!f&&(i||(i=new ze),function(e,t,r,n,o,i){var l=1&r,a=dt(e),u=a.length;if(u!=dt(t).length&&!l)return!1;for(var s=u;s--;){var c=a[s];if(!(l?c in t:_o.call(t,c)))return!1}var d=i.get(e),f=i.get(t);if(d&&f)return d==t&&f==e;var p=!0;i.set(e,t),i.set(t,e);for(var m=l;++s<u;){var h=e[c=a[s]],y=t[c];if(n)var g=l?n(y,h,c,t,e,i):n(h,y,c,e,t,i);if(!(void 0===g?h===y||o(h,y,r,n,i):g)){p=!1;break}m||(m="constructor"==c)}if(p&&!m){var v=e.constructor,b=t.constructor;v==b||!("constructor"in e)||!("constructor"in t)||"function"==typeof v&&v instanceof v&&"function"==typeof b&&b instanceof b||(p=!1)}return i.delete(e),i.delete(t),p}(e,t,r,n,o,i))}function To(e,t,r,n,o){return e===t||(null==e||null==t||!y(e)&&!y(t)?e!=e&&t!=t:xo(e,t,r,n,To,o))}function Ao(e){return e==e&&!q(e)}function Eo(e,t){return function(r){return null!=r&&(r[e]===t&&(void 0!==t||e in Object(r)))}}function $o(e){var t=function(e){for(var t=G(e),r=t.length;r--;){var n=t[r],o=e[n];t[r]=[n,o,Ao(o)]}return t}(e);return 1==t.length&&t[0][2]?Eo(t[0][0],t[0][1]):function(r){return r===e||function(e,t,r,n){var o=r.length,i=o,l=!n;if(null==e)return!i;for(e=Object(e);o--;){var a=r[o];if(l&&a[2]?a[1]!==e[a[0]]:!(a[0]in e))return!1}for(;++o<i;){var u=(a=r[o])[0],s=e[u],c=a[1];if(l&&a[2]){if(void 0===s&&!(u in e))return!1}else{var d=new ze;if(n)var f=n(s,c,u,e,t,d);if(!(void 0===f?To(c,s,3,n,d):f))return!1}}return!0}(r,e,t)}}function Mo(e,t){return null!=e&&t in Object(e)}function No(e,t){return null!=e&&function(e,t,r){for(var n=-1,o=(t=Pe(t,e)).length,i=!1;++n<o;){var l=Ue(t[n]);if(!(i=null!=e&&r(e,l)))break;e=e[l]}return i||++n!=o?i:!!(o=null==e?0:e.length)&&$(o)&&E(l,o)&&(O(e)||k(e))}(e,t,Mo)}function Io(e){return Z(e)?(t=Ue(e),function(e){return null==e?void 0:e[t]}):function(e){return function(t){return Re(t,e)}}(e);var t}function Do(e){return"function"==typeof e?e:null==e?ur:"object"==typeof e?O(e)?function(e,t){return Z(e)&&Ao(t)?Eo(Ue(e),t):function(r){var n=Fe(r,e);return void 0===n&&n===t?No(r,e):To(t,n,3)}}(e[0],e[1]):$o(e):Io(e)}var Co,Lo=function(e,t,r){for(var n=-1,o=Object(e),i=r(e),l=i.length;l--;){var a=i[Co?l:++n];if(!1===t(o[a],a,o))break}return e};var Po=function(e,t){return function(r,n){if(null==r)return r;if(!Y(r))return e(r,n);for(var o=r.length,i=t?o:-1,l=Object(r);(t?i--:++i<o)&&!1!==n(l[i],i,l););return r}}(function(e,t){return e&&Lo(e,t,G)}),Uo=Po;function Ro(e,t){var r=-1,n=Y(e)?Array(e.length):[];return Uo(e,function(e,o,i){n[++r]=t(e,o,i)}),n}function Fo(e,t){return vr(e)&&vr(t)?function(e,t){if(e=e.replace(/\s+/g,""),t=t.replace(/\s+/g,""),!e.length&&!t.length)return 1;if(!e.length||!t.length)return 0;if(e===t)return 1;if(1===e.length&&1===t.length)return 0;if(e.length<2||t.length<2)return 0;let r=new Map;for(let t=0;t<e.length-1;t++){const n=e.substring(t,t+2),o=r.has(n)?r.get(n)+1:1;r.set(n,o)}let n=0;for(let e=0;e<t.length-1;e++){const o=t.substring(e,e+2),i=r.has(o)?r.get(o):0;i>0&&(r.set(o,i-1),n++)}return 2*n/(e.length+t.length-2)}(e,t):0}function zo(e){if(!(vr(e)||kr(e)||H(e)||function(e){return"[object BigInt]"===Object.prototype.toString.call(e)}(e)))return"";let t="";try{t=String(e)}catch(e){}try{t=e.toString()}catch(e){}return t}function Bo(e,t){let r="";if(vr(e)||kr(e))r=zo(e);else{if(!to(e))return{};o="",r=null==(n=e)?"":fo.call(n,o)}var n,o,i,l;return kr(t)&&(t=zo(t)),vr(t)&&(t=[t]),to(t)?(l=function(e){return zo(e)},function(e,t){let r=[],n=0;for(let o=0;o<t.length;o++){let i=t[o],l=Fo(e,i);r.push({target:i,rating:l}),l>r[n].rating&&(n=o)}return{ratings:r,bestMatch:r[n],bestMatchIndex:n}}(r,t=(O(i=t)?Ne:Ro)(i,Do(l)))):{}}function Vo(e){let t=null,n=sn(e,{fs:r});if(n.error)return n;let o=n.success,i=null;try{i=JSON.parse(o)}catch(e){t=e}return null!==t?{error:t}:{success:i}}function Ko(e,t){return vr(e)&&qr(t)?0===(t=zr(t))?e:Wr(e,e.length-t):""}function Jo(e){if(!vr(e))return{path:"",isRoot:!1};for(;e.indexOf("\\\\")>=0;)e=e.replace("\\\\","\\");for(;e.indexOf("//")>=0;)e=e.replace("//","/");if(":"===Yr(e,1))return{path:`${e}\\`,isRoot:!0};if("\\"===Yr(e,1)){let t=Ko(e,1);return":"===Yr(t,1)?{path:e,isRoot:!0}:{path:t,isRoot:!1}}if("/"===Yr(e,1)){let t=Ko(e,1);return 0===t.length?{path:e,isRoot:!0}:{path:t,isRoot:!1}}return{path:e,isRoot:!1}}function qo(e){if(!vr(e))return"";let t=Jo(e);if(t.isRoot)return t.path;let r=function(e){if(!vr(e))return"";let t=Jo(e);if(t.isRoot)return t.path;let r=t.path;try{r=r.split("\\").pop().split("/").pop()}catch(e){}return r}(e=t.path);if(!vr(r))return e;let n=Jo(e=Ko(e,r.length));return n.isRoot,n.path}function Wo(e,t={}){let r=Fe(t,"fs");if(!an(e,{fs:r}))return!1;let n=r.lstatSync(e);return!n.isFile()&&!n.isSymbolicLink()}function Yo(e,t,r={}){let n=null,o=Fe(r,"fs"),i=qo(e);Wo(i,{fs:o})||function(e,t={}){let r=Fe(t,"fs");if(Wo(e,{fs:r}))return{success:"input folder is already exists: "+e};if(an(e,{fs:r}))return{error:"input path already exists: "+e};try{r.mkdirSync(e,{recursive:!0})}catch(e){return{error:e}}}(i,{fs:o});try{o.writeFileSync(e,t,"utf8")}catch(e){n=e}return null!==n?{error:n}:{success:e}}function Go(e,t,n={}){let o=null;if(!yr(t)&&!Br(t))return{error:"inp is not an object or array"};let i=Fe(n,"useFormat",null);Rr(i)||(i=!1);let l="";try{l=i?JSON.stringify(t,null,2):JSON.stringify(t)}catch(e){o=e}return null!==o?{error:o}:Yo(e,l,{fs:r})}let Ho=2e4;function Xo(e){return Fe(Vo(e),"success",null)}function Qo(e){if(yr(e)){for(let t in e)return!0;return!1}return!1}function Zo(e,t){let r=String(e);for(let e of t)vr(e)&&e.length>=6&&(r=r.split(e).join("[REDACTED]"));return r}async function ei(e,t={}){let r=Date.now(),n=(e,t,n,o,i)=>({ok:e,status:t,data:n,error:o,errorType:i,durationMs:Date.now()-r});if(!vr(e))return n(!1,0,null,"url must be a non-empty string","params");let o=Fe(t,"headers",null);Qo(o)||(o={});let i=Fe(t,"method",null);vr(i)||(i="GET");let l=Fe(t,"body",null);Qo(l)?(l=JSON.stringify(l),vr(Fe(o,"Content-Type",null))||(o={...o,"Content-Type":"application/json"})):vr(l)||(l=null);let a=_n(Fe(t,"timeoutMs",null),Ho),u=_n(Fe(t,"maxBodyBytes",null),1048576),s=Fe(t,"redact",null);to(s)||(s=[]);let c=e=>Zo(e,s).slice(0,300),d=new AbortController,f=setTimeout(()=>{d.abort()},a),p=null,m="";try{try{p=await fetch(e,{method:i,headers:o,body:l,signal:d.signal})}catch(e){return"AbortError"===Fe(e,"name","")?n(!1,0,null,`request timeout over ${a}ms`,"timeout"):n(!1,0,null,`network error: ${Zo(Fe(e,"message","unknown"),s)}`,"network")}try{let e=await async function(e,t){let r=Number(e.headers.get("content-length")||0);if(r>t)return{ok:!1,text:"",bytes:r};let n=e.body;if(!n||"function"!=typeof n.getReader){let r=await e.text(),n=Buffer.byteLength(r);return n>t?{ok:!1,text:"",bytes:n}:{ok:!0,text:r,bytes:n}}let o=n.getReader(),i=[],l=0;for(;;){let{done:e,value:r}=await o.read();if(e)break;if(l+=r.byteLength,l>t){try{await o.cancel()}catch(e){}return{ok:!1,text:"",bytes:l}}i.push(Buffer.from(r))}return{ok:!0,text:Buffer.concat(i).toString("utf8"),bytes:l}}(p,u);if(!e.ok)return d.abort(),n(!1,p.status,null,`response body too large: ${e.bytes} bytes over limit ${u}`,"toolarge");m=e.text}catch(e){return"AbortError"===Fe(e,"name","")?n(!1,p.status,null,`request timeout over ${a}ms while reading body`,"timeout"):n(!1,p.status,null,`read body error: ${Zo(Fe(e,"message","unknown"),s)}`,"network")}}finally{clearTimeout(f)}if(401===p.status)return n(!1,p.status,null,`unauthorized(401), credential rejected (expired or revoked): ${c(m)}`,"auth");if(403===p.status)return n(!1,p.status,null,`forbidden(403), credential valid but this account has no access to the resource (plan does not include it, or the service no longer serves this account tier): ${c(m)}`,"forbidden");if(429===p.status)return n(!1,p.status,null,`rate limited(429) by usage endpoint: ${c(m)}`,"ratelimit");if(!p.ok)return n(!1,p.status,null,`http error(${p.status}): ${c(m)}`,"http");let h=null;try{h=JSON.parse(m)}catch(e){return n(!1,p.status,null,`invalid json: ${c(m)}`,"parse")}return n(!0,p.status,h,"","")}function ti(e){return!kr(e)||Fr(e)<=0?"":(e=Fr(e))%86400==0?e/86400+"天":e%3600==0?e/3600+"小時":e%60==0?e/60+"分鐘":`${e}秒`}function ri(e,t){if(!vr(t))return"";let r=ti(e);return""===r?t:`${r}(${t})`}function ni(e={}){let t=Fe(e,"key","");vr(t)||(t="");let r=Fe(e,"windowSeconds",null);r=kr(r)?Fr(r):null;let n=Fe(e,"label","");vr(n)||(n=ti(r));let o=Fe(e,"usedPercent",null);o=kr(o)?Math.min(100,Math.max(0,Fr(o))):null;let i=null;null!==o&&(i=Math.round(100*(100-o))/100);let l=Fe(e,"resetAt","");if(kr(l)&&Fr(l)>0)l=new Date(1e3*Fr(l)).toISOString();else if(vr(l)){let e=new Date(l);l=isNaN(e.getTime())?"":e.toISOString()}else l="";let a=Fe(e,"resetAfterSeconds",null);if(kr(a))a=Math.max(0,Math.round(Fr(a)));else if(a=null,""!==l){let e=Math.round((new Date(l).getTime()-Date.now())/1e3);a=Math.max(0,e)}""===l&&null!==a&&(l=new Date(Date.now()+1e3*a).toISOString());let u=Fe(e,"scope","");vr(u)||(u="");let s=Fe(e,"active",null);Rr(s)||(s=!1);let c=Fe(e,"severity","");return vr(c)||(c="",null!==o&&(c=o>=100?"exhausted":"normal")),{key:t,label:n,windowSeconds:r,usedPercent:o,remainingPercent:i,resetAt:l,resetAfterSeconds:a,scope:u,active:s,severity:c}}function oi(e,t={}){vr(e)||(e="");let r=Fe(t,"email","");vr(r)||(r="");let n=Fe(t,"emailWant","");vr(n)||(n="");let o=Fe(t,"error","");vr(o)||(o="");let i=Fe(t,"errorType","");vr(i)||(i="");let l=null;""!==n&&(""===r?(l=!1,""===o&&(o=`cannot determine the local ${e} login account, so it is unknown whether it is the requested account [${n}]`,i="account")):(l=r.trim().toLowerCase()===n.trim().toLowerCase(),l||""!==o||(o=`local ${e} login account is [${r}], which does not match the requested account [${n}]`,i="account")));let a=Fe(t,"windows",null);to(a)||(a=[]);let u=Fe(t,"plan","");vr(u)||(u="");let s=Fe(t,"planTier","");vr(s)||(s="");let c=Fe(t,"source","");return vr(c)||(c=""),{ok:""===o&&!1!==l,provider:e,email:r,matched:l,plan:u,planTier:s,source:c,windows:a,credits:Fe(t,"credits",null),raw:Fe(t,"raw",null),error:o,errorType:i,durationMs:Fe(t,"durationMs",0)}}let ii=604800,li=[["five_hour",18e3,""],["seven_day",ii,""],["seven_day_opus",ii,"Opus"],["seven_day_sonnet",ii,"Sonnet"],["seven_day_cowork",ii,"Cowork"],["seven_day_oauth_apps",ii,"OAuth apps"]],ai=["ANTHROPIC_API_KEY","CLAUDE_CODE_USE_BEDROCK","CLAUDE_CODE_USE_VERTEX"];function ui(e){let t=Fe(e,"group",""),r=null;"session"===t?r=18e3:"weekly"===t&&(r=ii);let n=[],o=Fe(e,"scope.model.display_name","");vr(o)&&n.push(o);let i=Fe(e,"scope.surface","");vr(i)&&n.push(i);let l=n.join("/");return ni({key:Fe(e,"kind",""),label:ri(r,l),windowSeconds:r,usedPercent:Fe(e,"percent",null),resetAt:Fe(e,"resets_at",""),scope:l,active:Fe(e,"is_active",!1),severity:Fe(e,"severity","")})}let{buildSpawnArgs:si,buildSpawnEnv:ci}=dn;async function di(t,r=[],n=[],o={}){let i=Date.now(),l=(e,t,r={})=>({ok:!1,results:{},responses:[],error:t,errorType:e,durationMs:Date.now()-i,exitCode:null,...r});if(!vr(t))return l("params","command 須為非空字串");if(Br(r)||(r=[]),!Br(n))return l("params","requests 須為陣列");for(let e=0;e<n.length;e++){let t=n[e];if(!yr(t)||!vr(t.method)&&!vr(t.notify))return l("params",`requests[${e}] 須為含method或notify之物件`)}yr(o)||(o={});let a=Fe(o,"timeoutMs");Jr(a)||(a=12e4);let u=Fe(o,"jsonrpc");!0===u&&(u="2.0"),vr(u)||(u=null);let s=Fe(o,"continueOnError");Rr(s)||(s=!1);let c=Fe(o,"onNotify"),d=Fe(o,"onServerRequest"),f=new Map,p=null,m=0,h={},y=[],g=(e,t,r)=>{let n={};return null!==u&&(n.jsonrpc=u),void 0!==e&&(n.id=e),n.method=t,void 0!==r&&(n.params=r),n},v=function(t,r=[],n={}){Br(r)||(r=[]),yr(n)||(n={});let o=Fe(n,"cwd");vr(o)||(o=process.cwd());let i=Fe(n,"env");yr(i)||(i=void 0);let l=Fe(n,"timeoutMs");l=Jr(l)?Math.min(l,br):null;let a=Fe(n,"exitGraceMs");qr(a)||(a=2e3),a=Math.min(a,br);let u=Fe(n,"killWaitMs");qr(u)||(u=3e3),u=Math.min(u,br);let s=Fe(n,"stderrKeep");qr(s)||(s=4e3);let c=Fe(n,"onLine"),d=Fe(n,"onStdout"),f=Fe(n,"onStderr"),p=Fe(n,"onExit"),m=Date.now(),h=!1,y=null,g=!1,v=!1,b=!1,w="",_="",k=null,O=null,j=null,S=wr(),x=null,T={pid:null,exited:!1,write:null,writeLine:null,stop:null},A=e=>{h||(h=!0,clearTimeout(k),clearTimeout(O),clearTimeout(j),y={code:null,signal:null,exited:!0,timeout:g,killed:v,error:"",stderr:w,durationMs:Date.now()-m,pid:T.pid,...e},T.exited=!0,Vr(p)&&p(y),S.resolve(y))},E=()=>x||(x=wr(),S.then(e=>{x.resolve(e)}),x);if(!vr(t))return T.write=async()=>!1,T.writeLine=async()=>!1,T.stop=E,setTimeout(()=>{A({error:"command 須為非空字串"})},1),T;let $,M=si(t,r);try{$=e.spawn(M.file,M.args,{cwd:o,stdio:["pipe","pipe","pipe"],windowsHide:!0,env:ci(i),...M.opt})}catch(e){return T.write=async()=>!1,T.writeLine=async()=>!1,T.stop=E,setTimeout(()=>{A({error:`${e.code||"UNKNOWN"}: ${e.message}`})},1),T}T.pid=$.pid||null;let N=new TextDecoder("utf-8"),I=new TextDecoder("utf-8"),D=(e,t)=>{_+=e;let r=_.indexOf("\n");for(;r>=0;){let e=_.slice(0,r);_=_.slice(r+1),e.endsWith("\r")&&(e=e.slice(0,-1)),Vr(c)&&c(e),r=_.indexOf("\n")}if(t&&""!==_){let e=_;_="",e.endsWith("\r")&&(e=e.slice(0,-1)),Vr(c)&&c(e)}},C=e=>{w=0!==s?(w+e).slice(-s):""};$.stdout.on("data",e=>{let t=N.decode(e,{stream:!0});t&&(Vr(d)&&d(t),D(t,!1))}),$.stderr.on("data",e=>{let t=I.decode(e,{stream:!0});t&&(Vr(f)&&f(t),C(t))}),$.stdin.on("error",()=>{});let L=e=>{v=!0,ln($.pid).catch(()=>{}),j=setTimeout(()=>{h||A({code:null,exited:!1,error:e})},u)};return null!==l&&(k=setTimeout(()=>{h||(g=!0,L(`TIMEOUT after ${l/1e3}s(子進程未能結束)`))},l)),$.on("error",e=>{A({error:`${e.code||"UNKNOWN"}: ${e.message}`})}),$.on("close",(e,t)=>{if(h)return;let r=N.decode();r&&(Vr(d)&&d(r),D(r,!1)),D("",!0);let n=I.decode();n&&(Vr(f)&&f(n),C(n));let o="";g?o=`TIMEOUT after ${l/1e3}s`:v||(t?o=`Signal: ${t}`:0!==e&&(o=`Exit code ${e}`)),A({code:e,signal:t,error:o})}),T.write=e=>{let t=wr();if(h||b||$.stdin.destroyed||!$.stdin.writable)return t.resolve(!1),t;try{$.stdin.write(String(e),"utf8",e=>{t.resolve(!e)})}catch{t.resolve(!1)}return t},T.writeLine=e=>T.write(String(e)+"\n"),T.stop=()=>{if(x)return x;if(x=wr(),h)return x.resolve(y),x;b=!0;try{$.stdin.end()}catch{}return O=setTimeout(()=>{h||L("STOP_TIMEOUT(子進程未能結束)")},a),S.then(e=>{x.resolve(e)}),x},T}(t,r,{cwd:Fe(o,"cwd"),env:Fe(o,"env"),timeoutMs:a,exitGraceMs:Fe(o,"exitGraceMs"),onStderr:Fe(o,"onStderr"),onLine:e=>{if(""===(e=e.trim()))return;let t;try{t=JSON.parse(e)}catch{return}if(!yr(t))return;let r=void 0!==t.id&&null!==t.id;if(r&&("result"in t||"error"in t)){let e=f.get(t.id);return void(e&&(f.delete(t.id),e.pm.resolve({msg:t})))}r&&vr(t.method)?Vr(d)&&d(t,v):Vr(c)&&c(t)},onExit:e=>{p=e;for(let[t,r]of f)r.pm.resolve({exit:e});f.clear()}}),b=(e,t)=>{let r="exit";e.timeout?r="timeout":vr(e.error)&&e.error.includes("ENOENT")&&(r="notfound");let n=vr(e.error)?e.error:`子進程於回應前結束(code ${e.code})`;return l(r,`${t}: ${n}`,{results:h,responses:y,exitCode:e.code})},w=null;for(let e of n){if(!vr(e.method)){if(!await v.writeLine(JSON.stringify(g(void 0,e.notify,e.params)))){w=b(p||await v.stop(),e.notify);break}continue}let t=m;m+=1;let r=wr();if(f.set(t,{method:e.method,pm:r}),!await v.writeLine(JSON.stringify(g(t,e.method,e.params)))){f.delete(t),w=b(p||await v.stop(),e.method);break}let n=await r;if(n.exit){w=b(n.exit,e.method);break}let o=n.msg;if("error"in o&&null!==o.error&&void 0!==o.error){if(h[e.method]=null,y.push({id:t,method:e.method,result:null,error:o.error}),!s){let t=Fe(o,"error.message");w=l("rpc",`${e.method}: ${vr(t)?t:JSON.stringify(o.error)}`,{results:h,responses:y});break}}else h[e.method]=o.result,y.push({id:t,method:e.method,result:o.result,error:null})}let _=await v.stop();if(w)return w.durationMs=Date.now()-i,null===w.exitCode&&(w.exitCode=_.code),w;let k=y.filter(e=>null!==e.error);if(k.length>0){let e=k[0],t=Fe(e,"error.message");return{ok:!1,results:h,responses:y,error:`${e.method}: ${vr(t)?t:JSON.stringify(e.error)}`,errorType:"rpc",durationMs:Date.now()-i,exitCode:_.code}}return{ok:!0,results:h,responses:y,error:"",errorType:"",durationMs:Date.now()-i,exitCode:_.code}}function fi(e,t){for(let r of t){let t=Fe(e,r,"");if(vr(t))return t}return""}function pi(e,t,r){if(!Qo(e))return null;let n=Fe(e,"limit_window_seconds",null),o=kr(n)?Fr(n):null;return ni({key:t,label:ri(o,r),windowSeconds:o,usedPercent:Fe(e,"used_percent",null),resetAt:Fe(e,"reset_at",""),resetAfterSeconds:Fe(e,"reset_after_seconds",null),scope:r})}function mi(e,t,r){for(let n of[e,Fe(e,"rate_limit",null),Fe(e,"rateLimit",null)]){if(!Qo(n))continue;let e=Fe(n,t,null);if(Qo(e)||(e=Fe(n,r,null)),Qo(e))return e}return null}function hi(e){if(!Qo(e))return null;if(void 0!==Fe(e,"used_percent",void 0))return e;let t=Fe(e,"window",null);if(Qo(t))return t;let r=Fe(e,"rate_limit",null);return Qo(r)&&void 0!==Fe(r,"used_percent",void 0)?r:null}function yi(e){let t=fi(e,["email"]),r=fi(e,["plan_type"]),n=[];for(let t of["primary","secondary"]){let r=pi(Fe(e,`rate_limit.${t}_window`,null),t,"");null!==r&&n.push(r)}for(let t of["primary","secondary"]){let r=pi(Fe(e,`code_review_rate_limit.${t}_window`,null),`code_review:${t}`,"code review");null!==r&&n.push(r)}let o=function(e){let t=[Fe(e,"additional_rate_limits",null),Fe(e,"rate_limit.additional_rate_limits",null)];for(let e of t){if(to(e))return e;if(Qo(e))return Object.keys(e).map(t=>{let r=e[t];if(!Qo(r))return r;let n=fi(r,["limit_name","name","id"]);return{...r,limit_name:""===n?t:n}})}return[]}(e);for(let e=0;e<o.length;e++){let t=o[e];if(!Qo(t))continue;let r=fi(t,["limit_name","metered_limit_name","name","id"]);""===r&&(r=`additional_${e+1}`);let i=fi(t,["display_name","title","name","limit_name","metered_limit_name"]),l=""===i?r:i,a=`${r} ${i}`.toLowerCase(),u=mi(t,"primary_window","primaryWindow"),s=mi(t,"secondary_window","secondaryWindow");if(null===u&&null===s){let e=hi(t);if(null!==e){let t=Fe(e,"limit_window_seconds",null);/weekly|secondary|reserve/.test(a)||kr(t)&&Fr(t)>=518400?s=e:u=e}}let c=pi(u,`${r}:primary`,l);null!==c&&n.push(c);let d=pi(s,`${r}:secondary`,l);null!==d&&n.push(d)}return{email:t,plan:r,windows:n,credits:{hasCredits:Fe(e,"credits.has_credits",!1),unlimited:Fe(e,"credits.unlimited",!1),balance:Fe(e,"credits.balance",""),resetCreditsAvailable:Fe(e,"rate_limit_reset_credits.available_count",null),spendControlReached:Fe(e,"spend_control.reached",!1),rateLimitReachedType:Fe(e,"rate_limit_reached_type",null),individualLimit:Fe(e,"spend_control.individual_limit",null)}}}let gi=[{method:"initialize",params:{clientInfo:{name:"w-dispatch-ai",title:"w-dispatch-ai",version:"1.0.0"}}},{notify:"initialized",params:{}},{method:"account/read",params:{}},{method:"account/rateLimits/read",params:{}}];function vi(e,t,r){if(!Qo(e))return null;let n=Fe(e,"windowDurationMins",null),o=kr(n)?60*Fr(n):null;return ni({key:t,label:ri(o,r),windowSeconds:o,usedPercent:Fe(e,"usedPercent",null),resetAt:Fe(e,"resetsAt",""),scope:r})}async function bi(e,r,n){let o=Fe(e,"env",null);yr(o)||(o=process.env);let i=t.join(r,"auth.json"),l=Xo(i),a=Fe(l,"tokens.access_token",""),u=Fe(l,"tokens.account_id",""),s="",c="",d=Fe(l,"tokens.id_token","");if(vr(d)){let e=function(e){try{let t=e.split(".");return t.length<2?null:JSON.parse(Buffer.from(t[1],"base64url").toString("utf8"))}catch(e){return null}}(d),t=Fe(e,"email","");vr(t)&&(s=t);let r=Fe(e,["https://api.openai.com/auth","chatgpt_plan_type"],"");vr(r)&&(c=r)}if(!vr(a)){return vr(Fe(l,"OPENAI_API_KEY",""))||vr(Fe(o,"OPENAI_API_KEY",""))?{ok:!1,email:s,plan:c,error:"codex is running in API key mode (auth.json has OPENAI_API_KEY but no tokens); this mode is billed by usage and has no subscription quota windows",errorType:"unsupported"}:{ok:!1,email:s,plan:c,error:`Codex CLI credential not found (${i}); run [codex login] first`,errorType:"notfound"}}let f=Fe(e,"userAgent",null);vr(f)||(f="codex-cli/0.153.0");let p=Fe(e,"originator",null);vr(p)||(p="codex_cli_rs");let m={Authorization:`Bearer ${a}`,"User-Agent":f,originator:p};vr(u)&&(m["ChatGPT-Account-ID"]=u);let h=Fe(e,"usageUrl",null);vr(h)||(h="https://chatgpt.com/backend-api/wham/usage");let y=await ei(h,{headers:m,timeoutMs:n,redact:[a,u]});if(!y.ok){let e=y.error;return"auth"===y.errorType&&(e=`${e} → codex refreshes the token on every run; run any codex command then retry, and only fall back to [codex login] if it still fails`),{ok:!1,email:s,plan:c,error:e,errorType:y.errorType}}let g=yi(y.data);return vr(g.email)&&(s=g.email),vr(g.plan)&&(c=g.plan),{ok:!0,email:s,plan:c,windows:g.windows,credits:g.credits,raw:{usage:y.data}}}function wi(e){if(!vr(e))return null;let t=e.match(/(\d+)\.(\d+)\.(\d+)/);return t?[Number(t[1]),Number(t[2]),Number(t[3])]:null}let _i="1.1.11",ki={"5h":18e3,five_hour:18e3,"five-hour":18e3,weekly:604800,week:604800,daily:86400,day:86400};function Oi(e,t){let r=Fe(t,"id","");if(!vr(r))return null;let n=Fe(t,"remaining_fraction",null),o=null;kr(n)&&(o=Math.round(100*(1-Fr(n))*100)/100);let i=Fe(e,"name","");vr(i)||(i="");let l=function(e){if(!vr(e))return null;let t=e.trim().toLowerCase();if(void 0!==ki[t])return ki[t];let r=t.match(/^(\d+)\s*(h|hr|hour|hours|d|day|days|m|min|minutes)$/);if(!r)return null;let n=Number(r[1]);return/^h/.test(r[2])?3600*n:/^d/.test(r[2])?86400*n:60*n}(Fe(t,"window","")),a=ti(l);""===a&&(a=Fe(t,"name",""),vr(a)||(a=r));let u=""===i?a:`${a}(${i})`,s="normal";return!0===Fe(t,"disabled",!1)?s="disabled":null!==o&&o>=100&&(s="exhausted"),ni({key:r,label:u,windowSeconds:l,usedPercent:o,resetAt:Fe(t,"reset_time",""),scope:i,active:!1,severity:s})}async function ji(e,t,r){let n=[];vr(r.logFile)&&n.push("--log-file",r.logFile),n.push("-p",t,"--output-format","json","--print-timeout",`${Math.max(5,Math.ceil(r.timeoutMs/1e3))}s`);let o=await yn(e,n,{timeoutMs:r.timeoutMs,cwd:r.cwd}),i=String(Fe(o,"stdout","")).trim().split("\n").map(e=>e.trim()).filter(e=>""!==e).pop()||"",l=null;try{l=JSON.parse(i)}catch(e){}if(!o.ok){let e=String(Fe(o,"stderr","")).trim().slice(-300),r=/timeout/i.test(Fe(o,"error",""))?"timeout":"exit";return/not logged in|login|sign in|authenticate/i.test(e)&&(r="auth"),{ok:!1,data:null,response:"",stderr:e,error:`agy ${t} failed: ${Fe(o,"error","")}${e?` | stderr: ${e}`:""}`,errorType:r,code:Fe(o,"code",null)}}if(null===l)return{ok:!1,data:null,response:"",stderr:"",error:`agy ${t} stdout is not JSON: ${i.slice(0,200)}`,errorType:"parse",code:o.code};let a=Fe(l,"num_turns",0);return!vr(Fe(l,"command.name",""))||kr(a)&&Fr(a)>0?{ok:!1,data:null,response:Fe(l,"response",""),stderr:"",error:`agy did not handle ${t} as a slash command (num_turns=${a}); version may be below ${_i} or --disable-slash-commands is set; this call may have consumed quota`,errorType:"unsupported",code:o.code}:"SUCCESS"!==Fe(l,"status","")?{ok:!1,data:Fe(l,"command.data",null),response:Fe(l,"response",""),stderr:"",error:`agy ${t} reported status=${Fe(l,"status","")}: ${String(Fe(l,"response","")).slice(0,200)}`,errorType:"exit",code:o.code}:{ok:!0,data:Fe(l,"command.data",null),response:Fe(l,"response",""),stderr:"",error:"",errorType:"",code:o.code,raw:l}}let Si={KINDS:G(Bn),NO_SIDE_EFFECT:no,dispatchAi:Wn,dispatchAiFallback:Zn,dispatchAiWkf:function(e={}){let t=Fe(e,"providers",null);if(!yr(t))throw new Error("dispatchAiWkf: opt.providers must be an object (name → provider entry)");let r=Fe(e,"defaults",null);return yr(r)||(r={}),{providers:t,callAi:(e,n={})=>io(e,{...r,...n,providers:t}),runFanout:(e={})=>lo({...e,providers:t,callOpt:{...r,...Fe(e,"callOpt",{})}}),runRolePipeline:(e={})=>uo({...e,providers:t,callOpt:{...r,...Fe(e,"callOpt",{})}}),runFanoutPipeline:(e={})=>async function(e={}){let t=Date.now(),r=await lo(hr(e,so));if(!r.ok)return{ok:!1,result:null,A:r,B:null,totalMs:Date.now()-t,error:`A failed: ${r.error}`};let n=await uo({...hr(e,co),input:r.result});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,...Fe(e,"callOpt",{})}})}},dispatchOpencode:jn,dispatchClaude:xn,dispatchCodex:An,dispatchAntigravity:Mn,dispatchApiOpenaiCompat:Ln,dispatchApiOpenaiResponses:zn,providers:[{id:"oc:agnes-ai/agnes-3.0-flash",model:"agnes-ai/agnes-3.0-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-3.0-flash":{name:"Agnes 3.0 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:"oc:opencode/muse-spark-1.2-contributor-free",model:"opencode/muse-spark-1.2-contributor-free",kind:"opencode",envVar:"OPENCODE_KEYS",provider:"opencode",config:{permission:{edit:"deny",write:"deny",bash:"deny"}}},{id:"oc:opencode/muse-spark-1.3-contributor-free",model:"opencode/muse-spark-1.3-contributor-free",kind:"opencode",envVar:"OPENCODE_KEYS",provider:"opencode",config:{permission:{edit:"deny",write:"deny",bash:"deny"}}},{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:"agy:gemini-3.8-flash-high",model:"gemini-3.8-flash-high",kind:"antigravity",addDirs:["."],skipPermissions:!1},{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:"agnes:agnes-3.0-flash",model:"agnes-3.0-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}}},{id:"zen:laguna-s-2.1-free",model:"laguna-s-2.1-free",kind:"api-openai-compat",envVar:"OPENCODE_KEYS",baseURL:"https://opencode.ai/zen/v1",body:{max_tokens:8192}},{id:"zen:muse-spark-1.2-contributor-free",model:"muse-spark-1.2-contributor-free",kind:"api-openai-responses",envVar:"OPENCODE_KEYS",baseURL:"https://opencode.ai/zen/v1",body:{max_output_tokens:8192}},{id:"zen:muse-spark-1.3-contributor-free",model:"muse-spark-1.3-contributor-free",kind:"api-openai-responses",envVar:"OPENCODE_KEYS",baseURL:"https://opencode.ai/zen/v1",body:{max_output_tokens:8192}},{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:"zen:mimo-v2.5-free",model:"mimo-v2.5-free",kind:"api-openai-compat",envVar:"OPENCODE_KEYS",baseURL:"https://opencode.ai/zen/v1",body:{max_tokens:8192}},{id:"zen:ling-3.0-flash-fin-free",model:"ling-3.0-flash-fin-free",kind:"api-openai-compat",envVar:"OPENCODE_KEYS",baseURL:"https://opencode.ai/zen/v1",body:{max_tokens:8192}},{id:"zen:nemotron-3-ultra-free",model:"nemotron-3-ultra-free",kind:"api-openai-compat",envVar:"OPENCODE_KEYS",baseURL:"https://opencode.ai/zen/v1",body:{max_tokens:8192}},{id:"zen:nemotron-3.5-lightning-free",model:"nemotron-3.5-lightning-free",kind:"api-openai-compat",envVar:"OPENCODE_KEYS",baseURL:"https://opencode.ai/zen/v1",body:{max_tokens:8192}}],resolveProviders:function(e,t={}){let r=Fe(t,"env",null);yr(r)||(r="undefined"!=typeof process&&process&&yr(process.env)?process.env:{});let n=Br(e)?e.filter(yr):[],o=Fe(t,"pick",null),i=[],l=n;if(to(o)){l=[];for(let e of o){let t=n.find(t=>Fe(t,"id",null)===e);t?l.push(t):i.push(String(e))}}let a={};if(i.length>0){let e=n.map(e=>Fe(e,"id",null)).filter(vr);for(let t of i)a[t]=e.length>0?Fe(Bo(t,e),"bestMatch.target",null):null}let u=[],s=[];for(let e of l){let t=Fe(e,"envVar",null);if(!vr(t)||to(Fe(e,"keys",null))){u.push(hr(e,["envVar"]));continue}let n=String(Fe(r,t,"")||"").split(",").map(e=>e.trim()).filter(Boolean);0!==n.length?u.push({...hr(e,["envVar"]),keys:n}):s.push({id:Fe(e,"id",""),envVar:t})}let c=Fe(t,"exes",null),d=Fe(t,"patch",null);(yr(c)||yr(d))&&(u=u.map(e=>{let t=e,r=yr(c)?Fe(c,Fe(t,"kind",""),null):null;vr(r)&&!vr(Fe(t,"exe",null))&&(t={...t,exe:r});let n=yr(d)?Fe(d,Fe(t,"id",""),null):null;return yr(n)&&(t={...t,...n}),t}));let f={};for(let e of u)f[e.id]=e;return{providers:u,table:f,skipped:s,missing:i,hints:a}},readEnvFile:function(e){let t={},n="";try{n=r.readFileSync(e,"utf8")}catch(e){return t}for(let e of n.split(/\r?\n/)){let r=e.match(/^\s*([A-Za-z0-9_]+)\s*=\s*(.*)$/);r&&(t[r[1]]=r[2].trim().replace(/^(["'])(.*)\1$/,"$2"))}return t},budgetFor:function(e){if(!Br(e))return 0;let t=0;for(let r of e)t+=_n(Fe(r,"timeoutMs",null),kn);return t},createFileStore:function(e={}){let r=Fe(e,"file",null);if(!vr(r)){let n=Fe(e,"dir",null);if(!vr(n))throw new Error("createFileStore: file or dir is required");let o=Fe(e,"name",null);r=t.join(n,vr(o)?o:"ai-cursor.json")}let n=Fe(e,"ownKeys",null);to(n)||(n=["at"]);let o=Fe(e,"stamp",null);return Vr(o)||(o=()=>(new Date).toISOString()),{file:r,get:()=>{let e=Vo(r),t=void 0!==Fe(e,"error",void 0)?null:Fe(e,"success",null);if(!yr(t))return{};let o={...t};for(let e of n)delete o[e];return o},set:e=>{let t={...yr(e)?e:{},at:o()};Go(r,t,{useFormat:!0})}}},createUsageCounter:function(e={}){let r=Fe(e,"file",null);if(!vr(r)){let n=Fe(e,"dir",null);if(!vr(n))throw new Error("createUsageCounter: file or dir is required");let o=Fe(e,"name",null);r=t.join(n,vr(o)?o:"ai-usage.json")}let n=Fe(e,"getDate",null);Vr(n)||(n=()=>{let e=new Date,t=e=>String(e).padStart(2,"0");return`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())}`});let o=Fe(e,"keepDays",null);Jr(o)||(o=14);let i=Fe(e,"keyOf",null);Vr(i)||(i=e=>Fe(e,"keyId",null)||Fe(e,"providerId",""));let l=()=>{let e=Vo(r),t=void 0!==Fe(e,"error",void 0)?null:Fe(e,"success",null);return yr(t)?t:{}},a=(e,t=1)=>{if(!vr(e))return;let i=l(),a=n(),u=yr(i[a])?i[a]:{};u[e]=(Number(u[e])||0)+t,i[a]=u;let s=Object.keys(i).sort().slice(-o),c={};for(let e of s)c[e]=i[e];Go(r,c,{useFormat:!0})};return{file:r,onEvent:e=>{"try"===Fe(e,"type",null)&&a(i(e))},bump:a,today:()=>{let e=l(),t=n(),r=yr(e[t])?e[t]:{};return{today:t,byKey:r,total:Object.values(r).reduce((e,t)=>e+(Number(t)||0),0)}}}},salvageTruncatedArray:function(e){let t=String(e||""),r=t.indexOf("[");if(r<0)return null;let n=0,o=!1,i=!1,l=-1;for(let e=r;e<t.length;e++){let r=t[e];if(i)i=!1;else if(o)"\\"===r?i=!0:'"'===r&&(o=!1);else if('"'!==r){if("["===r||"{"===r)n++;else if(("]"===r||"}"===r)&&(n--,1===n&&"}"===r&&(l=e),0===n))return null}else o=!0}if(l<0)return null;try{let e=JSON.parse(t.slice(r,l+1)+"]");return Array.isArray(e)&&e.length>0?e:null}catch(e){return null}},getQuotaClaude:async function(e="",r={}){let o=Date.now(),i=vr(e)?e:"",l=Fe(r,"env",null);yr(l)||(l=process.env);let a=Fe(r,"homeDir",null);vr(a)||(a=n.homedir());let u=Fe(r,"configDir",null),s=!0;vr(u)||(u=Fe(l,"CLAUDE_CONFIG_DIR",""),vr(u)||(u=t.join(a,".claude"),s=!1));let c=t.join(u,".credentials.json"),d=s?t.join(u,".claude.json"):t.join(a,".claude.json"),f=_n(Fe(r,"timeoutMs",null),Ho),p=Fe(r,"userAgent",null);vr(p)||(p="claude-code/2.1.259");let m=!1!==Fe(r,"profileFallback",!0),h=Fe(r,"usageUrl",null);vr(h)||(h="https://api.anthropic.com/api/oauth/usage");let y=Fe(r,"profileUrl",null);vr(y)||(y="https://api.anthropic.com/api/oauth/profile");let g=Xo(c),v=Xo(d),b=Fe(g,"claudeAiOauth.accessToken",""),w=Fe(v,"oauthAccount.emailAddress","");vr(w)||(w="");let _=Fe(g,"claudeAiOauth.subscriptionType","");vr(_)||(_=Fe(v,"oauthAccount.organizationType",""),vr(_)||(_=""));let k=Fe(g,"claudeAiOauth.rateLimitTier","");vr(k)||(k=Fe(v,"oauthAccount.organizationRateLimitTier",""),vr(k)||(k=""));let O=e=>oi("claude",{email:w,emailWant:i,plan:_,planTier:k,source:"anthropic-oauth-usage-api",durationMs:Date.now()-o,...e});if(!vr(b)){let e=ai.filter(e=>vr(Fe(l,e,"")));return e.length>0?O({error:`Claude Code is running in non-subscription mode (env ${e.join(", ")} is set); this mode is billed by usage and has no 5-hour/7-day subscription quota windows`,errorType:"unsupported"}):O({error:`Claude Code credential not found (${c}); run [claude auth login] first (with the same CLAUDE_CONFIG_DIR if this config dir is relocated). On macOS the credential lives in Keychain instead of this file, which this function cannot read.${vr(Fe(l,"CLAUDE_CODE_OAUTH_TOKEN",""))?" Env CLAUDE_CODE_OAUTH_TOKEN is set but is ignored here: a setup-token lacks the user:profile scope the usage endpoint requires, so only a stored login can be queried.":""}`,errorType:"notfound"})}let j={Authorization:`Bearer ${b}`,"anthropic-beta":"oauth-2025-04-20","User-Agent":p,"Content-Type":"application/json"},S=await ei(h,{headers:j,timeoutMs:f,redact:[b]});if(!S.ok){let e=S.error;if("auth"===S.errorType){let t=Fe(g,"claudeAiOauth.expiresAt",null),r="run any claude command (just open claude) so Claude Code refreshes the token itself, then retry; re-login is not needed, the stored refresh token is still valid and only has to be used by Claude Code";e=`${e} ${kr(t)?`(local recorded expiry: ${new Date(t).toISOString()})`:""} → ${r}`}return"forbidden"===S.errorType&&/oauth_not_allowed_for_organization/.test(e)&&(e=`this account's organization disallows OAuth usage queries (oauth_not_allowed_for_organization); subscription quota must be viewed by an org admin in the console: ${e}`),O({error:e,errorType:S.errorType})}let x=S.data;if(""===w&&m){let e=await ei(y,{headers:j,timeoutMs:f,redact:[b]});if(e.ok)for(let t of["account.email","account.email_address","email","email_address"]){let r=Fe(e.data,t,"");if(vr(r)){w=r;break}}}let T=[],A=Fe(x,"limits",null);return T=to(A)?A.map(ui):li.map(([e,t,r])=>function(e,t,r,n){let o=Fe(e,t,null);return null==o?null:ni({key:t,label:ri(r,n),windowSeconds:r,usedPercent:Fe(o,"utilization",null),resetAt:Fe(o,"resets_at",""),scope:n})}(x,e,t,r)).filter(e=>null!==e),O({windows:T,credits:{extraUsageEnabled:Fe(x,"extra_usage.is_enabled",!1),monthlyLimit:Fe(x,"extra_usage.monthly_limit",null),usedCredits:Fe(x,"extra_usage.used_credits",null),utilization:Fe(x,"extra_usage.utilization",null),spendUsedMinor:Fe(x,"spend.used.amount_minor",null),spendCurrency:Fe(x,"spend.used.currency",""),spendPercent:Fe(x,"spend.percent",null)},raw:{configDir:u,usage:x}})},getQuotaCodex:async function(e="",r={}){let o=Date.now(),i=vr(e)?e:"",l=Fe(r,"env",null);yr(l)||(l=process.env);let a=Fe(r,"homeDir",null);vr(a)||(a=n.homedir());let u=Fe(r,"codexHome",null);vr(u)||(u=Fe(l,"CODEX_HOME",""),vr(u)||(u=t.join(a,".codex")));let s=_n(Fe(r,"timeoutMs",null),Ho),c=!1!==Fe(r,"useAppServer",!0),d=!1!==Fe(r,"fallbackHttp",!0),f=(e,t)=>oi("codex",{emailWant:i,source:e,durationMs:Date.now()-o,...t}),p=null;if(c){let e=await async function(e){let t=Fe(e,"exe",null);vr(t)||(t="codex");let r=await di(t,["app-server","--stdio"],gi,{timeoutMs:Fe(e,"timeoutMs",null)});if(!r.ok)return{ok:!1,error:r.error,errorType:r.errorType,raw:{appServer:{error:r.error,errorType:r.errorType,exitCode:r.exitCode,responses:r.responses}}};let n=Fe(r.results,["account/read","account"],null),o=Fe(r.results,["account/rateLimits/read"],null);if(!Qo(n))return{ok:!1,notLoggedIn:!0,error:"codex app-server reports not logged in (account is null); run [codex login] first",errorType:"notfound",raw:{appServer:r.results}};let i=Fe(n,"email",""),l=Fe(n,"planType",""),a=Fe(n,"type","");if(vr(a)&&"chatgpt"!==a)return{ok:!1,email:i,plan:l,accountType:a,error:`codex is logged in with [${a}] mode; this mode is billed by usage and has no 5-hour/7-day subscription quota windows`,errorType:"unsupported",raw:{appServer:r.results}};let u=[],s=Fe(o,"rateLimits",null),c=Fe(s,"limitId","codex"),d=vi(Fe(s,"primary",null),"primary","");null!==d&&u.push(d);let f=vi(Fe(s,"secondary",null),"secondary","");null!==f&&u.push(f);let p=Fe(o,"rateLimitsByLimitId",null);if(Qo(p))for(let e of Object.keys(p)){if(e===c)continue;let t=p[e],r=Fe(t,"limitName","");vr(r)||(r=e);for(let n of["primary","secondary"]){let o=vi(Fe(t,n,null),`${e}:${n}`,r);null!==o&&u.push(o)}}let m={hasCredits:Fe(s,"credits.hasCredits",!1),unlimited:Fe(s,"credits.unlimited",!1),balance:Fe(s,"credits.balance",""),resetCreditsAvailable:Fe(o,"rateLimitResetCredits.availableCount",null),resetCredits:Fe(o,"rateLimitResetCredits.credits",null),spendControlReached:Fe(s,"spendControlReached",!1),rateLimitReachedType:Fe(s,"rateLimitReachedType",null),individualLimit:Fe(s,"individualLimit",null)};return vr(l)||(l=Fe(s,"planType","")),{ok:!0,email:i,plan:l,accountType:a,windows:u,credits:m,raw:{appServer:r.results}}}({...r,timeoutMs:s});if(e.ok)return f("codex-app-server",{email:e.email,plan:e.plan,windows:e.windows,credits:e.credits,raw:{accountType:e.accountType,...e.raw}});if("unsupported"===e.errorType||!0===e.notLoggedIn)return f("codex-app-server",{email:e.email,plan:e.plan,error:e.error,errorType:e.errorType,raw:e.raw});if(p=e,!d)return f("codex-app-server",{error:e.error,errorType:e.errorType,raw:e.raw})}let m=await bi(r,u,s),h=null!==p?` (app-server path failed: ${p.error})`:"";return m.ok?f("chatgpt-wham-usage-api",{email:m.email,plan:m.plan,windows:m.windows,credits:m.credits,raw:{codexHome:u,appServerError:null!==p?p.error:"",...m.raw}}):f("chatgpt-wham-usage-api",{email:m.email,plan:m.plan,error:`${m.error}${h}`,errorType:m.errorType,raw:null!==p?p.raw:null})},getQuotaAntigravity:async function(e="",i={}){let l=Date.now(),a=vr(e)?e:"",u=Fe(i,"exe",null);vr(u)||(u="agy");let s=_n(Fe(i,"timeoutMs",null),6e4),c=Fe(i,"cwd",null);vr(c)||(c=n.tmpdir());let d=!1!==Fe(i,"checkVersion",!0),f=Fe(i,"withCredits",null);Rr(f)||(f=!1);let p=e=>oi("antigravity",{emailWant:a,source:"agy-print-usage",durationMs:Date.now()-l,...e}),m="";if(d){let e=await yn(u,["--version"],{timeoutMs:Math.min(s,15e3),cwd:c});if(!e.ok)return p({error:`agy not found or not executable (${u}): ${Fe(e,"error","")}${String(Fe(e,"stderr","")).trim()?` | ${String(e.stderr).trim().slice(-200)}`:""}; see https://antigravity.google/docs/cli/ for install and login`,errorType:"notfound"});m=String(Fe(e,"stdout","")).trim().split("\n")[0];let t=function(e,t){let r=wi(e),n=wi(t);if(null===r||null===n)return null;for(let e=0;e<3;e++){if(r[e]>n[e])return 1;if(r[e]<n[e])return-1}return 0}(m,_i);if(null===t||t<0)return p({error:`agy version [${m||"unknown"}] is below ${_i}; its print mode cannot run /usage non-interactively (it would treat it as a prompt and consume quota); run [agy update]`,errorType:"unsupported",raw:{version:m}})}let h=t.join(n.tmpdir(),`w-dispatch-ai-agy-${process.pid}-${o.randomBytes(4).toString("hex")}.log`),y=null,g=null,v="",b="";try{y=await ji(u,"/usage",{timeoutMs:s,cwd:c,logFile:h});let e="";try{e=r.readFileSync(h,"utf8")}catch(e){}let t=e.match(/applyAuthResult: email=([^,\s]+), authMethod=(\w+)/);if(t)v=t[1],b=t[2];else{let t=e.match(/authenticated successfully as (\S+)/);t&&(v=t[1])}y.ok&&f&&(g=await ji(u,"/credits",{timeoutMs:s,cwd:c,logFile:""}))}finally{try{r.unlinkSync(h)}catch(e){}}if(!y.ok)return p({email:v,error:y.error,errorType:y.errorType,raw:{version:m,authMethod:b,response:y.response,stderr:y.stderr}});let w=[],_=Fe(y.data,"groups",null);if(to(_))for(let e of _){let t=Fe(e,"buckets",null);if(to(t))for(let r of t){let t=Oi(e,r);null!==t&&w.push(t)}}let k=null;return null!==g&&(k=g.ok?{remainingCredits:Fe(g.data,"remaining_credits",null),upgradeUri:Fe(g.data,"upgrade_uri","")}:{error:g.error}),p({email:v,windows:w,credits:k,raw:{version:m,authMethod:b,description:Fe(y.data,"description",""),usage:y.raw,credits:null!==g?Fe(g,"raw",null):null}})}};return Si});
|
|
7
7
|
//# sourceMappingURL=w-dispatch-ai.umd.js.map
|